@getpaseo/server 0.1.88 → 0.1.90
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/dist/server/server/agent/agent-manager.js +4 -1
- package/dist/server/server/agent/agent-prompt.js +4 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +1 -0
- package/dist/server/server/agent/agent-storage.d.ts +22 -22
- package/dist/server/server/agent/agent-storage.js +2 -9
- package/dist/server/server/agent/create-agent/create.d.ts +2 -0
- package/dist/server/server/agent/create-agent/create.js +26 -7
- package/dist/server/server/agent/create-agent-lifecycle-dispatch.d.ts +1 -0
- package/dist/server/server/agent/create-agent-lifecycle-dispatch.js +4 -0
- package/dist/server/server/agent/create-agent-mode.d.ts +3 -8
- package/dist/server/server/agent/create-agent-mode.js +16 -2
- package/dist/server/server/agent/import-sessions.js +1 -1
- package/dist/server/server/agent/mcp-server.d.ts +1 -0
- package/dist/server/server/agent/mcp-server.js +113 -70
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +2 -1
- package/dist/server/server/agent/provider-snapshot-manager.js +18 -2
- package/dist/server/server/agent/providers/acp-agent.d.ts +3 -3
- package/dist/server/server/agent/providers/acp-agent.js +18 -13
- package/dist/server/server/agent/providers/codex-app-server-agent.js +16 -22
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +2 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.js +69 -2
- package/dist/server/server/agent/providers/opencode-agent.js +19 -8
- package/dist/server/server/agent/providers/pi/agent.js +13 -0
- package/dist/server/server/agent/providers/pi/rpc-types.d.ts +3 -0
- package/dist/server/server/agent/timeline-projection.js +30 -1
- package/dist/server/server/atomic-file.d.ts +3 -0
- package/dist/server/server/atomic-file.js +19 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.d.ts +1 -0
- package/dist/server/server/auto-archive-on-merge/archive-if-safe.js +10 -2
- package/dist/server/server/bootstrap.d.ts +7 -2
- package/dist/server/server/bootstrap.js +154 -115
- package/dist/server/server/chat/chat-service.js +2 -4
- package/dist/server/server/config.js +41 -0
- package/dist/server/server/daemon-keypair.js +2 -2
- package/dist/server/server/loop-service.d.ts +26 -22
- package/dist/server/server/loop-service.js +27 -9
- package/dist/server/server/package-version.d.ts +2 -2
- package/dist/server/server/paseo-worktree-archive-service.d.ts +2 -0
- package/dist/server/server/paseo-worktree-archive-service.js +28 -9
- package/dist/server/server/persisted-config.d.ts +84 -28
- package/dist/server/server/persisted-config.js +20 -3
- package/dist/server/server/pid-lock.d.ts +2 -2
- package/dist/server/server/private-files.d.ts +0 -1
- package/dist/server/server/private-files.js +0 -5
- package/dist/server/server/schedule/service.d.ts +6 -0
- package/dist/server/server/schedule/service.js +41 -18
- package/dist/server/server/schedule/store.js +3 -2
- package/dist/server/server/script-health-monitor.d.ts +4 -4
- package/dist/server/server/script-health-monitor.js +6 -6
- package/dist/server/server/script-proxy.d.ts +2 -39
- package/dist/server/server/script-proxy.js +1 -244
- package/dist/server/server/script-route-branch-handler.d.ts +2 -2
- package/dist/server/server/script-route-branch-handler.js +3 -37
- package/dist/server/server/script-status-projection.d.ts +6 -4
- package/dist/server/server/script-status-projection.js +85 -37
- package/dist/server/server/server-id.js +3 -3
- package/dist/server/server/service-proxy.d.ts +237 -0
- package/dist/server/server/service-proxy.js +714 -0
- package/dist/server/server/session.d.ts +12 -18
- package/dist/server/server/session.js +206 -117
- package/dist/server/server/speech/providers/local/worker-client.js +1 -11
- package/dist/server/server/websocket-server.d.ts +7 -4
- package/dist/server/server/websocket-server.js +9 -4
- package/dist/server/server/workspace-bootstrap-dedupe.d.ts +34 -0
- package/dist/server/server/workspace-bootstrap-dedupe.js +23 -0
- package/dist/server/server/workspace-directory.d.ts +8 -0
- package/dist/server/server/workspace-directory.js +141 -11
- package/dist/server/server/workspace-git-service.d.ts +3 -0
- package/dist/server/server/workspace-git-service.js +53 -12
- package/dist/server/server/workspace-registry.d.ts +2 -2
- package/dist/server/server/workspace-registry.js +2 -6
- package/dist/server/server/workspace-service-env.d.ts +1 -0
- package/dist/server/server/workspace-service-env.js +23 -18
- package/dist/server/server/worktree/commands.d.ts +2 -0
- package/dist/server/server/worktree/commands.js +4 -1
- package/dist/server/server/worktree-bootstrap.d.ts +4 -3
- package/dist/server/server/worktree-bootstrap.js +14 -13
- package/dist/server/server/worktree-core.d.ts +1 -0
- package/dist/server/server/worktree-core.js +2 -0
- package/dist/server/server/worktree-session.d.ts +6 -2
- package/dist/server/server/worktree-session.js +3 -0
- package/dist/server/services/github-service.d.ts +1 -0
- package/dist/server/services/github-service.js +7 -1
- package/dist/server/utils/checkout-git.d.ts +6 -3
- package/dist/server/utils/checkout-git.js +40 -38
- package/dist/server/utils/worktree.d.ts +17 -12
- package/dist/server/utils/worktree.js +39 -22
- package/dist/src/server/persisted-config.js +20 -3
- package/dist/src/server/private-files.js +0 -5
- package/package.json +9 -7
- package/dist/server/server/editor-targets.d.ts +0 -18
- package/dist/server/server/editor-targets.js +0 -109
- package/dist/server/utils/script-hostname.d.ts +0 -8
- package/dist/server/utils/script-hostname.js +0 -14
|
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { stat } from "node:fs/promises";
|
|
4
4
|
import { AGENT_LIFECYCLE_STATUSES, } from "@getpaseo/protocol/agent-lifecycle";
|
|
5
|
-
import { PARENT_AGENT_ID_LABEL } from "@getpaseo/protocol/agent-labels";
|
|
5
|
+
import { isDelegatedAgent, PARENT_AGENT_ID_LABEL } from "@getpaseo/protocol/agent-labels";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { getAgentStreamEventTurnId, } from "./agent-sdk-types.js";
|
|
8
8
|
import { buildArchivedAgentRecord } from "./agent-archive.js";
|
|
@@ -2402,6 +2402,9 @@ export class AgentManager {
|
|
|
2402
2402
|
}
|
|
2403
2403
|
}
|
|
2404
2404
|
broadcastAgentAttention(agent, reason) {
|
|
2405
|
+
if (isDelegatedAgent(agent)) {
|
|
2406
|
+
return;
|
|
2407
|
+
}
|
|
2405
2408
|
this.onAgentAttention?.({
|
|
2406
2409
|
agentId: agent.id,
|
|
2407
2410
|
provider: agent.provider,
|
|
@@ -120,9 +120,12 @@ export async function sendPromptToAgent(params) {
|
|
|
120
120
|
if (params.sessionMode) {
|
|
121
121
|
await params.agentManager.setAgentMode(params.agentId, params.sessionMode);
|
|
122
122
|
}
|
|
123
|
+
const runOptions = params.messageId
|
|
124
|
+
? { ...params.runOptions, messageId: params.messageId }
|
|
125
|
+
: params.runOptions;
|
|
123
126
|
return startAgentRun(params.agentManager, params.agentId, params.prompt, params.logger, {
|
|
124
127
|
replaceRunning: true,
|
|
125
|
-
runOptions
|
|
128
|
+
runOptions,
|
|
126
129
|
});
|
|
127
130
|
}
|
|
128
131
|
export async function startCreatedAgentInitialPrompt(params) {
|
|
@@ -84,6 +84,7 @@ export interface ResolveAgentCreateConfigInput {
|
|
|
84
84
|
requestedMode: string | undefined;
|
|
85
85
|
featureValues: Record<string, unknown> | undefined;
|
|
86
86
|
parent: AgentCreateConfigParent | null;
|
|
87
|
+
unattended: boolean;
|
|
87
88
|
availableModes: AgentMode[] | undefined;
|
|
88
89
|
}
|
|
89
90
|
export interface ResolveAgentCreateConfigResult {
|
|
@@ -167,22 +167,12 @@ declare const STORED_AGENT_SCHEMA: z.ZodObject<{
|
|
|
167
167
|
archivedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
168
168
|
}, "strip", z.ZodTypeAny, {
|
|
169
169
|
cwd: string;
|
|
170
|
-
createdAt: string;
|
|
171
170
|
id: string;
|
|
172
171
|
provider: string;
|
|
172
|
+
createdAt: string;
|
|
173
173
|
updatedAt: string;
|
|
174
174
|
labels: Record<string, string>;
|
|
175
175
|
lastStatus: "error" | "running" | "initializing" | "idle" | "closed";
|
|
176
|
-
config?: {
|
|
177
|
-
modeId?: string | null | undefined;
|
|
178
|
-
model?: string | null | undefined;
|
|
179
|
-
thinkingOptionId?: string | null | undefined;
|
|
180
|
-
featureValues?: Record<string, unknown> | null | undefined;
|
|
181
|
-
extra?: Record<string, any> | null | undefined;
|
|
182
|
-
systemPrompt?: string | null | undefined;
|
|
183
|
-
mcpServers?: Record<string, any> | null | undefined;
|
|
184
|
-
} | null | undefined;
|
|
185
|
-
internal?: boolean | undefined;
|
|
186
176
|
title?: string | null | undefined;
|
|
187
177
|
persistence?: {
|
|
188
178
|
provider: string;
|
|
@@ -193,6 +183,15 @@ declare const STORED_AGENT_SCHEMA: z.ZodObject<{
|
|
|
193
183
|
lastActivityAt?: string | undefined;
|
|
194
184
|
lastUserMessageAt?: string | null | undefined;
|
|
195
185
|
lastModeId?: string | null | undefined;
|
|
186
|
+
config?: {
|
|
187
|
+
modeId?: string | null | undefined;
|
|
188
|
+
model?: string | null | undefined;
|
|
189
|
+
thinkingOptionId?: string | null | undefined;
|
|
190
|
+
featureValues?: Record<string, unknown> | null | undefined;
|
|
191
|
+
extra?: Record<string, any> | null | undefined;
|
|
192
|
+
systemPrompt?: string | null | undefined;
|
|
193
|
+
mcpServers?: Record<string, any> | null | undefined;
|
|
194
|
+
} | null | undefined;
|
|
196
195
|
runtimeInfo?: {
|
|
197
196
|
provider: string;
|
|
198
197
|
sessionId: string | null;
|
|
@@ -229,23 +228,14 @@ declare const STORED_AGENT_SCHEMA: z.ZodObject<{
|
|
|
229
228
|
requiresAttention?: boolean | undefined;
|
|
230
229
|
attentionReason?: "finished" | "error" | "permission" | null | undefined;
|
|
231
230
|
attentionTimestamp?: string | null | undefined;
|
|
231
|
+
internal?: boolean | undefined;
|
|
232
232
|
archivedAt?: string | null | undefined;
|
|
233
233
|
}, {
|
|
234
234
|
cwd: string;
|
|
235
|
-
createdAt: string;
|
|
236
235
|
id: string;
|
|
237
236
|
provider: string;
|
|
237
|
+
createdAt: string;
|
|
238
238
|
updatedAt: string;
|
|
239
|
-
config?: {
|
|
240
|
-
modeId?: string | null | undefined;
|
|
241
|
-
model?: string | null | undefined;
|
|
242
|
-
thinkingOptionId?: string | null | undefined;
|
|
243
|
-
featureValues?: Record<string, unknown> | null | undefined;
|
|
244
|
-
extra?: Record<string, any> | null | undefined;
|
|
245
|
-
systemPrompt?: string | null | undefined;
|
|
246
|
-
mcpServers?: Record<string, any> | null | undefined;
|
|
247
|
-
} | null | undefined;
|
|
248
|
-
internal?: boolean | undefined;
|
|
249
239
|
title?: string | null | undefined;
|
|
250
240
|
persistence?: {
|
|
251
241
|
provider: string;
|
|
@@ -258,6 +248,15 @@ declare const STORED_AGENT_SCHEMA: z.ZodObject<{
|
|
|
258
248
|
labels?: Record<string, string> | undefined;
|
|
259
249
|
lastStatus?: "error" | "running" | "initializing" | "idle" | "closed" | undefined;
|
|
260
250
|
lastModeId?: string | null | undefined;
|
|
251
|
+
config?: {
|
|
252
|
+
modeId?: string | null | undefined;
|
|
253
|
+
model?: string | null | undefined;
|
|
254
|
+
thinkingOptionId?: string | null | undefined;
|
|
255
|
+
featureValues?: Record<string, unknown> | null | undefined;
|
|
256
|
+
extra?: Record<string, any> | null | undefined;
|
|
257
|
+
systemPrompt?: string | null | undefined;
|
|
258
|
+
mcpServers?: Record<string, any> | null | undefined;
|
|
259
|
+
} | null | undefined;
|
|
261
260
|
runtimeInfo?: {
|
|
262
261
|
provider: string;
|
|
263
262
|
sessionId: string | null;
|
|
@@ -294,6 +293,7 @@ declare const STORED_AGENT_SCHEMA: z.ZodObject<{
|
|
|
294
293
|
requiresAttention?: boolean | undefined;
|
|
295
294
|
attentionReason?: "finished" | "error" | "permission" | null | undefined;
|
|
296
295
|
attentionTimestamp?: string | null | undefined;
|
|
296
|
+
internal?: boolean | undefined;
|
|
297
297
|
archivedAt?: string | null | undefined;
|
|
298
298
|
}>;
|
|
299
299
|
export type SerializableAgentConfig = Pick<AgentSessionConfig, "modeId" | "model" | "thinkingOptionId" | "featureValues" | "extra" | "systemPrompt" | "mcpServers">;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
1
|
import { promises as fs } from "node:fs";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import { z } from "zod";
|
|
4
|
+
import { writeJsonFileAtomic } from "../atomic-file.js";
|
|
5
5
|
import { AgentFeatureSchema, AgentStatusSchema } from "../messages.js";
|
|
6
6
|
import { toStoredAgentRecord } from "./agent-projections.js";
|
|
7
7
|
const SERIALIZABLE_CONFIG_SCHEMA = z
|
|
@@ -109,8 +109,7 @@ export class AgentStorage {
|
|
|
109
109
|
const agentId = record.id;
|
|
110
110
|
const nextPath = this.buildRecordPath(record);
|
|
111
111
|
const previousPath = this.pathById.get(agentId);
|
|
112
|
-
await
|
|
113
|
-
await writeFileAtomically(nextPath, JSON.stringify(record, null, 2));
|
|
112
|
+
await writeJsonFileAtomic(nextPath, record);
|
|
114
113
|
this.addIndexedPath(agentId, nextPath);
|
|
115
114
|
if (previousPath && previousPath !== nextPath) {
|
|
116
115
|
try {
|
|
@@ -317,10 +316,4 @@ function projectDirNameFromCwd(cwd) {
|
|
|
317
316
|
}
|
|
318
317
|
return prefix + withoutRoot.replace(/[\\/]+/g, "-");
|
|
319
318
|
}
|
|
320
|
-
async function writeFileAtomically(targetPath, payload) {
|
|
321
|
-
const directory = path.dirname(targetPath);
|
|
322
|
-
const tempPath = path.join(directory, `.agent.tmp-${process.pid}-${Date.now()}-${randomUUID()}`);
|
|
323
|
-
await fs.writeFile(tempPath, payload, "utf8");
|
|
324
|
-
await fs.rename(tempPath, targetPath);
|
|
325
|
-
}
|
|
326
319
|
//# sourceMappingURL=agent-storage.js.map
|
|
@@ -20,6 +20,7 @@ interface CreateAgentCommandDependencies {
|
|
|
20
20
|
agentStorage: AgentStorage;
|
|
21
21
|
logger: Logger;
|
|
22
22
|
paseoHome?: string;
|
|
23
|
+
worktreesRoot?: string;
|
|
23
24
|
workspaceGitService?: Pick<WorkspaceGitService, "getSnapshot" | "listWorktrees" | "resolveRepoRoot">;
|
|
24
25
|
terminalManager?: TerminalManager | null;
|
|
25
26
|
providerSnapshotManager: ProviderSnapshotManager;
|
|
@@ -63,6 +64,7 @@ export interface CreateAgentFromMcpInput {
|
|
|
63
64
|
mode?: string;
|
|
64
65
|
background: boolean;
|
|
65
66
|
notifyOnFinish: boolean;
|
|
67
|
+
detached?: boolean;
|
|
66
68
|
callerAgentId?: string;
|
|
67
69
|
callerContext?: {
|
|
68
70
|
lockedCwd?: string;
|
|
@@ -3,7 +3,7 @@ import { expandUserPath, resolvePathFromBase } from "../../path-utils.js";
|
|
|
3
3
|
import { toWorktreeRequestError } from "../../worktree-errors.js";
|
|
4
4
|
import { scheduleAgentMetadataGeneration } from "../agent-metadata-generator.js";
|
|
5
5
|
import { setupFinishNotification, startCreatedAgentInitialPrompt } from "../agent-prompt.js";
|
|
6
|
-
import { resolveClientMessageId } from "../../client-message-id.js";
|
|
6
|
+
import { normalizeClientMessageId, resolveClientMessageId } from "../../client-message-id.js";
|
|
7
7
|
import { resolveRequiredProviderModel } from "../mcp-shared.js";
|
|
8
8
|
import { appendTimelineItemIfAgentKnown, emitLiveTimelineItemIfAgentKnown, } from "../timeline-append.js";
|
|
9
9
|
export async function createAgentCommand(dependencies, input) {
|
|
@@ -46,6 +46,13 @@ async function resolveSessionCreateAgent(dependencies, input) {
|
|
|
46
46
|
});
|
|
47
47
|
const prompt = buildAgentPrompt(trimmedPrompt ?? "", input.images, input.attachments);
|
|
48
48
|
const hasPromptContent = Array.isArray(prompt) ? prompt.length > 0 : prompt.length > 0;
|
|
49
|
+
const clientMessageId = normalizeClientMessageId(input.clientMessageId);
|
|
50
|
+
const runOptions = input.outputSchema || clientMessageId
|
|
51
|
+
? {
|
|
52
|
+
...(input.outputSchema ? { outputSchema: input.outputSchema } : {}),
|
|
53
|
+
...(clientMessageId ? { messageId: clientMessageId } : {}),
|
|
54
|
+
}
|
|
55
|
+
: undefined;
|
|
49
56
|
return {
|
|
50
57
|
config: sessionConfig,
|
|
51
58
|
createOptions: {
|
|
@@ -57,7 +64,7 @@ async function resolveSessionCreateAgent(dependencies, input) {
|
|
|
57
64
|
},
|
|
58
65
|
metadataInitialPrompt: trimmedPrompt,
|
|
59
66
|
prompt: hasPromptContent ? prompt : undefined,
|
|
60
|
-
runOptions
|
|
67
|
+
runOptions,
|
|
61
68
|
explicitTitle: input.explicitTitle,
|
|
62
69
|
setupContinuation,
|
|
63
70
|
background: true,
|
|
@@ -93,8 +100,14 @@ async function resolveMcpCreateAgent(dependencies, input) {
|
|
|
93
100
|
requestedMode: input.mode,
|
|
94
101
|
featureValues: input.features,
|
|
95
102
|
parent: parentAgent,
|
|
103
|
+
unattended: false,
|
|
104
|
+
});
|
|
105
|
+
const labels = mergeLabels({
|
|
106
|
+
callerAgentId: input.callerAgentId,
|
|
107
|
+
detached: input.detached ?? false,
|
|
108
|
+
childAgentDefaultLabels: input.callerContext?.childAgentDefaultLabels,
|
|
109
|
+
labels: input.labels,
|
|
96
110
|
});
|
|
97
|
-
const labels = mergeLabels(input.callerAgentId, input.callerContext?.childAgentDefaultLabels, input.labels);
|
|
98
111
|
const trimmedPrompt = input.initialPrompt.trim();
|
|
99
112
|
return {
|
|
100
113
|
config: {
|
|
@@ -220,6 +233,7 @@ async function resolveMcpCwd(params) {
|
|
|
220
233
|
...(params.initialPrompt ? { firstAgentContext: { prompt: params.initialPrompt } } : {}),
|
|
221
234
|
runSetup: false,
|
|
222
235
|
paseoHome: dependencies.paseoHome,
|
|
236
|
+
worktreesRoot: dependencies.worktreesRoot,
|
|
223
237
|
},
|
|
224
238
|
createPaseoWorktree: dependencies.createPaseoWorktree,
|
|
225
239
|
resolveDefaultBranch: baseBranch ? async () => baseBranch : undefined,
|
|
@@ -260,12 +274,17 @@ async function createMcpWorktree(options) {
|
|
|
260
274
|
throw toWorktreeRequestError(error);
|
|
261
275
|
}
|
|
262
276
|
}
|
|
263
|
-
function mergeLabels(
|
|
277
|
+
function mergeLabels(params) {
|
|
264
278
|
const mergedLabels = {
|
|
265
|
-
...(
|
|
266
|
-
|
|
267
|
-
|
|
279
|
+
...(!params.detached && params.callerAgentId
|
|
280
|
+
? { [PARENT_AGENT_ID_LABEL]: params.callerAgentId }
|
|
281
|
+
: {}),
|
|
282
|
+
...params.childAgentDefaultLabels,
|
|
283
|
+
...params.labels,
|
|
268
284
|
};
|
|
285
|
+
if (params.detached) {
|
|
286
|
+
delete mergedLabels[PARENT_AGENT_ID_LABEL];
|
|
287
|
+
}
|
|
269
288
|
return Object.keys(mergedLabels).length > 0 ? mergedLabels : undefined;
|
|
270
289
|
}
|
|
271
290
|
//# sourceMappingURL=create.js.map
|
|
@@ -7,6 +7,7 @@ import type { AgentManager } from "./agent-manager.js";
|
|
|
7
7
|
import type { AgentStorage } from "./agent-storage.js";
|
|
8
8
|
interface CreateAgentLifecycleDispatchDependencies {
|
|
9
9
|
paseoHome: string;
|
|
10
|
+
worktreesRoot?: string;
|
|
10
11
|
agentManager: AgentManager;
|
|
11
12
|
agentStorage: AgentStorage;
|
|
12
13
|
github: GitHubService;
|
|
@@ -46,6 +46,7 @@ export class CreateAgentLifecycleDispatch {
|
|
|
46
46
|
firstAgentContext,
|
|
47
47
|
runSetup: false,
|
|
48
48
|
paseoHome: this.dependencies.paseoHome,
|
|
49
|
+
worktreesRoot: this.dependencies.worktreesRoot,
|
|
49
50
|
};
|
|
50
51
|
switch (target.mode) {
|
|
51
52
|
case "branch-off":
|
|
@@ -108,12 +109,14 @@ export class CreateAgentLifecycleDispatch {
|
|
|
108
109
|
async archiveAutoCreatedWorktree(options) {
|
|
109
110
|
const ownership = await isPaseoOwnedWorktreeCwd(options.worktreePath, {
|
|
110
111
|
paseoHome: this.dependencies.paseoHome,
|
|
112
|
+
worktreesRoot: this.dependencies.worktreesRoot,
|
|
111
113
|
});
|
|
112
114
|
if (!ownership.allowed) {
|
|
113
115
|
throw new Error("Auto-created worktree is not a Paseo-owned worktree");
|
|
114
116
|
}
|
|
115
117
|
await archivePaseoWorktree({
|
|
116
118
|
paseoHome: this.dependencies.paseoHome,
|
|
119
|
+
worktreesRoot: this.dependencies.worktreesRoot,
|
|
117
120
|
github: this.dependencies.github,
|
|
118
121
|
workspaceGitService: this.dependencies.workspaceGitService,
|
|
119
122
|
agentManager: this.dependencies.agentManager,
|
|
@@ -129,6 +132,7 @@ export class CreateAgentLifecycleDispatch {
|
|
|
129
132
|
targetPath: options.worktreePath,
|
|
130
133
|
repoRoot: options.repoRoot ?? ownership.repoRoot ?? null,
|
|
131
134
|
worktreesRoot: ownership.worktreeRoot,
|
|
135
|
+
worktreesBaseRoot: this.dependencies.worktreesRoot,
|
|
132
136
|
requestId: randomUUID(),
|
|
133
137
|
});
|
|
134
138
|
if (options.agentId) {
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import type { AgentCreateConfigUnattendedInput, AgentProvider, ResolveAgentCreateConfigInput, ResolveAgentCreateConfigResult } from "./agent-sdk-types.js";
|
|
2
|
-
interface CreateAgentModeParent {
|
|
3
|
-
provider: AgentProvider;
|
|
4
|
-
modeId: string | null;
|
|
5
|
-
isUnattended: boolean;
|
|
6
|
-
}
|
|
1
|
+
import type { AgentCreateConfigParent, AgentCreateConfigUnattendedInput, AgentProvider, ResolveAgentCreateConfigInput, ResolveAgentCreateConfigResult } from "./agent-sdk-types.js";
|
|
7
2
|
export interface ResolveCreateAgentModeInput {
|
|
8
3
|
requestedMode: string | undefined;
|
|
9
4
|
targetProvider: AgentProvider;
|
|
10
|
-
parent:
|
|
5
|
+
parent: AgentCreateConfigParent | null;
|
|
6
|
+
unattended: boolean;
|
|
11
7
|
availableModes: string[] | undefined;
|
|
12
8
|
targetUnattendedMode: string | undefined;
|
|
13
9
|
}
|
|
14
10
|
export declare function resolveAndValidateCreateAgentMode(input: ResolveCreateAgentModeInput): string | undefined;
|
|
15
11
|
export declare function resolveDefaultAgentCreateConfig(input: ResolveAgentCreateConfigInput): ResolveAgentCreateConfigResult;
|
|
16
12
|
export declare function isDefaultAgentCreateConfigUnattended(input: AgentCreateConfigUnattendedInput): boolean;
|
|
17
|
-
export {};
|
|
18
13
|
//# sourceMappingURL=create-agent-mode.d.ts.map
|
|
@@ -4,6 +4,15 @@ function listModes(modes) {
|
|
|
4
4
|
}
|
|
5
5
|
return modes.length > 0 ? modes.join(", ") : "(none)";
|
|
6
6
|
}
|
|
7
|
+
function isUnattendedCreateConfigParent(parent) {
|
|
8
|
+
return parent.isUnattended;
|
|
9
|
+
}
|
|
10
|
+
function formatCreateConfigParentMode(parent) {
|
|
11
|
+
return parent.modeId ?? "<none>";
|
|
12
|
+
}
|
|
13
|
+
function formatCreateConfigParentSource(parent) {
|
|
14
|
+
return `caller (provider '${parent.provider}')`;
|
|
15
|
+
}
|
|
7
16
|
export function resolveAndValidateCreateAgentMode(input) {
|
|
8
17
|
const { requestedMode, targetProvider, parent, availableModes } = input;
|
|
9
18
|
if (requestedMode !== undefined) {
|
|
@@ -13,15 +22,19 @@ export function resolveAndValidateCreateAgentMode(input) {
|
|
|
13
22
|
return requestedMode;
|
|
14
23
|
}
|
|
15
24
|
if (!parent) {
|
|
25
|
+
if (input.unattended && input.targetUnattendedMode !== undefined) {
|
|
26
|
+
return input.targetUnattendedMode;
|
|
27
|
+
}
|
|
16
28
|
return undefined;
|
|
17
29
|
}
|
|
18
30
|
if (parent.provider === targetProvider) {
|
|
19
31
|
return parent.modeId ?? undefined;
|
|
20
32
|
}
|
|
21
|
-
if (
|
|
33
|
+
if ((input.unattended || isUnattendedCreateConfigParent(parent)) &&
|
|
34
|
+
input.targetUnattendedMode !== undefined) {
|
|
22
35
|
return input.targetUnattendedMode;
|
|
23
36
|
}
|
|
24
|
-
throw new Error(`cannot inherit mode '${parent
|
|
37
|
+
throw new Error(`cannot inherit mode '${formatCreateConfigParentMode(parent)}' from ${formatCreateConfigParentSource(parent)} for new agent (provider '${targetProvider}'). Pass an explicit mode. Available modes for '${targetProvider}': ${listModes(availableModes)}`);
|
|
25
38
|
}
|
|
26
39
|
export function resolveDefaultAgentCreateConfig(input) {
|
|
27
40
|
const availableModeIds = input.availableModes?.map((mode) => mode.id);
|
|
@@ -30,6 +43,7 @@ export function resolveDefaultAgentCreateConfig(input) {
|
|
|
30
43
|
requestedMode: input.requestedMode,
|
|
31
44
|
targetProvider: input.provider,
|
|
32
45
|
parent: input.parent,
|
|
46
|
+
unattended: input.unattended,
|
|
33
47
|
availableModes: availableModeIds,
|
|
34
48
|
targetUnattendedMode: input.availableModes?.find(isUnattendedMode)?.id,
|
|
35
49
|
}),
|
|
@@ -37,7 +37,7 @@ export async function listImportableProviderSessions(input) {
|
|
|
37
37
|
const providerFilter = request.providers ? new Set(request.providers) : undefined;
|
|
38
38
|
const importedHandles = await collectImportedProviderSessionHandles(agentManager, agentStorage);
|
|
39
39
|
const descriptors = await agentManager.listImportablePersistedAgents({
|
|
40
|
-
limit
|
|
40
|
+
limit,
|
|
41
41
|
providerFilter,
|
|
42
42
|
cwd: request.cwd,
|
|
43
43
|
});
|
|
@@ -25,6 +25,7 @@ export interface AgentMcpServerOptions {
|
|
|
25
25
|
clearWorkspaceArchiving?: ArchivePaseoWorktreeDependencies["clearWorkspaceArchiving"];
|
|
26
26
|
createPaseoWorktree?: CreatePaseoWorktreeWorkflowFn;
|
|
27
27
|
paseoHome?: string;
|
|
28
|
+
worktreesRoot?: string;
|
|
28
29
|
/**
|
|
29
30
|
* ID of the agent that is connecting to this MCP server.
|
|
30
31
|
* Used for cwd/mode inheritance when agents spawn child agents.
|