@getpaseo/server 0.1.71 → 0.1.72
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-response-loop.d.ts.map +1 -1
- package/dist/server/server/agent/agent-response-loop.js +2 -1
- package/dist/server/server/agent/agent-response-loop.js.map +1 -1
- package/dist/server/server/agent/create-agent-title.d.ts +8 -0
- package/dist/server/server/agent/create-agent-title.d.ts.map +1 -0
- package/dist/server/server/agent/create-agent-title.js +29 -0
- package/dist/server/server/agent/create-agent-title.js.map +1 -0
- package/dist/server/server/agent/import-sessions.d.ts +20 -1
- package/dist/server/server/agent/import-sessions.d.ts.map +1 -1
- package/dist/server/server/agent/import-sessions.js +101 -0
- package/dist/server/server/agent/import-sessions.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +2 -1
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +25 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js +183 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +1 -21
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +1 -170
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode/runtime.d.ts +27 -0
- package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/runtime.js +5 -0
- package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts +55 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js +255 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js +28 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +75 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +169 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +5 -35
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +28 -258
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +8 -3
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.js +44 -34
- package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
- package/dist/server/server/checkout/status-projection.d.ts +19 -0
- package/dist/server/server/checkout/status-projection.d.ts.map +1 -0
- package/dist/server/server/checkout/status-projection.js +98 -0
- package/dist/server/server/checkout/status-projection.js.map +1 -0
- package/dist/server/server/paseo-worktree-service.d.ts +2 -1
- package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
- package/dist/server/server/paseo-worktree-service.js +30 -3
- package/dist/server/server/paseo-worktree-service.js.map +1 -1
- package/dist/server/server/session.d.ts +1 -17
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +24 -233
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/workspace-directory.d.ts +0 -2
- package/dist/server/server/workspace-directory.d.ts.map +1 -1
- package/dist/server/server/workspace-directory.js +9 -26
- package/dist/server/server/workspace-directory.js.map +1 -1
- package/dist/server/shared/agent-state-bucket.d.ts +13 -0
- package/dist/server/shared/agent-state-bucket.d.ts.map +1 -0
- package/dist/server/shared/agent-state-bucket.js +41 -0
- package/dist/server/shared/agent-state-bucket.js.map +1 -0
- package/dist/server/shared/git-remote.d.ts +16 -0
- package/dist/server/shared/git-remote.d.ts.map +1 -0
- package/dist/server/shared/git-remote.js +72 -0
- package/dist/server/shared/git-remote.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +1 -0
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +3 -0
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/github-remote.d.ts +3 -7
- package/dist/server/utils/github-remote.d.ts.map +1 -1
- package/dist/server/utils/github-remote.js +4 -70
- package/dist/server/utils/github-remote.js.map +1 -1
- package/package.json +4 -4
|
@@ -29,15 +29,16 @@ import { deriveProjectSlug } from "./workspace-git-metadata.js";
|
|
|
29
29
|
import { spawnWorkspaceScript } from "./worktree-bootstrap.js";
|
|
30
30
|
import { applyMutableProviderConfigToOverrides } from "./daemon-config-store.js";
|
|
31
31
|
import { getErrorMessage, getErrorMessageOr } from "../shared/error-utils.js";
|
|
32
|
+
import { getAgentStatusPriority } from "../shared/agent-state-bucket.js";
|
|
32
33
|
import { buildProviderRegistry } from "./agent/provider-registry.js";
|
|
33
34
|
import { resolveSnapshotCwd } from "./agent/provider-snapshot-manager.js";
|
|
34
35
|
import { scheduleAgentMetadataGeneration } from "./agent/agent-metadata-generator.js";
|
|
36
|
+
import { resolveCreateAgentTitles } from "./agent/create-agent-title.js";
|
|
35
37
|
import { buildStoredAgentPayload, resolveEffectiveThinkingOptionId, resolveStoredAgentPayloadUpdatedAt, toAgentPayload, } from "./agent/agent-projections.js";
|
|
36
|
-
import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "./agent/agent-title-limits.js";
|
|
37
38
|
import { appendTimelineItemIfAgentKnown, emitLiveTimelineItemIfAgentKnown, } from "./agent/timeline-append.js";
|
|
38
39
|
import { projectTimelineRows, selectTimelineWindowByProjectedLimit, } from "./agent/timeline-projection.js";
|
|
39
40
|
import { DEFAULT_STRUCTURED_GENERATION_PROVIDERS, StructuredAgentFallbackError, StructuredAgentResponseError, generateStructuredAgentResponseWithFallback, } from "./agent/agent-response-loop.js";
|
|
40
|
-
import { ImportSessionsRequestError, listImportableProviderSessions, normalizeImportAgentRequest, } from "./agent/import-sessions.js";
|
|
41
|
+
import { ImportSessionsRequestError, importProviderSession, listImportableProviderSessions, normalizeImportAgentRequest, } from "./agent/import-sessions.js";
|
|
41
42
|
import { checkoutLiteFromGitSnapshot, normalizeWorkspaceId as normalizePersistedWorkspaceId, deriveProjectGroupingName, classifyDirectoryForProjectMembership, deriveWorkspaceDisplayName, } from "./workspace-registry-model.js";
|
|
42
43
|
import { createPersistedProjectRecord, createPersistedWorkspaceRecord, } from "./workspace-registry.js";
|
|
43
44
|
import { buildVoiceModeSystemPrompt, stripVoiceModeSystemPrompt, wrapSpokenInput, } from "./voice-config.js";
|
|
@@ -52,6 +53,7 @@ import { getProjectIcon } from "../utils/project-icon.js";
|
|
|
52
53
|
import { expandTilde } from "../utils/path.js";
|
|
53
54
|
import { searchHomeDirectories, searchWorkspaceEntries } from "../utils/directory-suggestions.js";
|
|
54
55
|
import { toCheckoutError } from "./checkout-git-utils.js";
|
|
56
|
+
import { buildCheckoutPrStatusPayloadFromSnapshot, buildCheckoutStatusPayloadFromSnapshot, } from "./checkout/status-projection.js";
|
|
55
57
|
import { toResolver } from "./speech/provider-resolver.js";
|
|
56
58
|
import { resolveClientMessageId } from "./client-message-id.js";
|
|
57
59
|
import { ChatServiceError, parseMentionAgentIds, } from "./chat/chat-service.js";
|
|
@@ -63,7 +65,6 @@ import { attemptFirstAgentBranchAutoName, createPaseoWorktree, } from "./paseo-w
|
|
|
63
65
|
import { generateBranchNameFromFirstAgentContext } from "./worktree-branch-name-generator.js";
|
|
64
66
|
import { assertSafeGitRef as assertWorktreeSafeGitRef, buildAgentSessionConfig as buildWorktreeAgentSessionConfig, createPaseoWorktreeWorkflow as createWorktreeWorkflow, handleCreatePaseoWorktreeRequest as handleCreateWorktreeRequest, handlePaseoWorktreeArchiveRequest as handleWorktreeArchiveRequest, handlePaseoWorktreeListRequest as handleWorktreeListRequest, handleWorkspaceSetupStatusRequest as handleWorkspaceSetupStatusRequestMessage, } from "./worktree-session.js";
|
|
65
67
|
import { toWorktreeWireError } from "./worktree-errors.js";
|
|
66
|
-
const MAX_INITIAL_AGENT_TITLE_CHARS = Math.min(60, MAX_EXPLICIT_AGENT_TITLE_CHARS);
|
|
67
68
|
const WORKSPACE_GIT_WATCH_REMOVED_STATE_KEY = "__removed__";
|
|
68
69
|
async function resolveKnownProjectRootForConfig(input) {
|
|
69
70
|
const requestedRoot = canonicalizeConfigRoot(input.repoRoot);
|
|
@@ -184,44 +185,6 @@ function beginAgentDeleteIfSupported(agentStorage, agentId) {
|
|
|
184
185
|
agentStorage.beginDelete(agentId);
|
|
185
186
|
}
|
|
186
187
|
}
|
|
187
|
-
function deriveInitialAgentTitle(prompt) {
|
|
188
|
-
const firstContentLine = prompt
|
|
189
|
-
.split(/\r?\n/)
|
|
190
|
-
.map((line) => line.trim())
|
|
191
|
-
.find((line) => line.length > 0);
|
|
192
|
-
if (!firstContentLine) {
|
|
193
|
-
return null;
|
|
194
|
-
}
|
|
195
|
-
const normalized = firstContentLine.replace(/\s+/g, " ").trim();
|
|
196
|
-
if (!normalized) {
|
|
197
|
-
return null;
|
|
198
|
-
}
|
|
199
|
-
const clamped = normalized.slice(0, MAX_INITIAL_AGENT_TITLE_CHARS).trim();
|
|
200
|
-
return clamped.length > 0 ? clamped : null;
|
|
201
|
-
}
|
|
202
|
-
export function resolveCreateAgentTitles(options) {
|
|
203
|
-
const explicitTitle = typeof options.configTitle === "string" && options.configTitle.trim().length > 0
|
|
204
|
-
? options.configTitle.trim()
|
|
205
|
-
: null;
|
|
206
|
-
const trimmedPrompt = options.initialPrompt?.trim();
|
|
207
|
-
const provisionalTitle = explicitTitle ?? (trimmedPrompt ? deriveInitialAgentTitle(trimmedPrompt) : null);
|
|
208
|
-
return {
|
|
209
|
-
explicitTitle,
|
|
210
|
-
provisionalTitle,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
function getFirstUserMessageText(timeline) {
|
|
214
|
-
for (const item of timeline) {
|
|
215
|
-
if (item.type !== "user_message") {
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
const text = item.text.trim();
|
|
219
|
-
if (text) {
|
|
220
|
-
return text;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return null;
|
|
224
|
-
}
|
|
225
188
|
const FETCH_AGENTS_SORT_KEYS = ["status_priority", "created_at", "updated_at", "title"];
|
|
226
189
|
export function resolveWaitForFinishError(options) {
|
|
227
190
|
if (options.status !== "error") {
|
|
@@ -255,31 +218,6 @@ class VoiceFeatureUnavailableError extends Error {
|
|
|
255
218
|
this.missingModelIds = [...context.missingModelIds];
|
|
256
219
|
}
|
|
257
220
|
}
|
|
258
|
-
function buildImportPersistenceHandle(input) {
|
|
259
|
-
const cwd = input.cwd ?? process.cwd();
|
|
260
|
-
return {
|
|
261
|
-
provider: input.provider,
|
|
262
|
-
sessionId: input.providerHandleId,
|
|
263
|
-
nativeHandle: input.providerHandleId,
|
|
264
|
-
metadata: {
|
|
265
|
-
provider: input.provider,
|
|
266
|
-
cwd,
|
|
267
|
-
},
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
function applyImportCwdOverride(handle, cwd) {
|
|
271
|
-
if (!cwd) {
|
|
272
|
-
return handle;
|
|
273
|
-
}
|
|
274
|
-
return {
|
|
275
|
-
...handle,
|
|
276
|
-
metadata: {
|
|
277
|
-
...handle.metadata,
|
|
278
|
-
provider: handle.provider,
|
|
279
|
-
cwd,
|
|
280
|
-
},
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
221
|
function convertPCMToWavBuffer(pcmBuffer, sampleRate, channels, bitsPerSample) {
|
|
284
222
|
const headerSize = 44;
|
|
285
223
|
const wavBuffer = Buffer.alloc(headerSize + pcmBuffer.length);
|
|
@@ -369,7 +307,12 @@ export class Session {
|
|
|
369
307
|
getSortValue: (agent, key) => {
|
|
370
308
|
switch (key) {
|
|
371
309
|
case "status_priority":
|
|
372
|
-
return
|
|
310
|
+
return getAgentStatusPriority({
|
|
311
|
+
status: agent.status,
|
|
312
|
+
pendingPermissionCount: agent.pendingPermissions?.length ?? 0,
|
|
313
|
+
requiresAttention: agent.requiresAttention,
|
|
314
|
+
attentionReason: agent.attentionReason ?? null,
|
|
315
|
+
});
|
|
373
316
|
case "created_at":
|
|
374
317
|
return Date.parse(agent.createdAt);
|
|
375
318
|
case "updated_at":
|
|
@@ -2195,26 +2138,18 @@ export class Session {
|
|
|
2195
2138
|
});
|
|
2196
2139
|
return;
|
|
2197
2140
|
}
|
|
2198
|
-
const { provider, providerHandleId,
|
|
2141
|
+
const { provider, providerHandleId, requestId } = normalized;
|
|
2199
2142
|
this.sessionLogger.info({ providerHandleId, provider }, `Importing agent ${providerHandleId} (${provider})`);
|
|
2200
2143
|
try {
|
|
2201
|
-
const
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
:
|
|
2208
|
-
const overrides = cwd ? { cwd } : undefined;
|
|
2209
|
-
await this.unarchiveAgentByHandle(handle);
|
|
2210
|
-
const snapshot = await this.agentManager.resumeAgentFromPersistence(handle, overrides, undefined, {
|
|
2211
|
-
labels,
|
|
2144
|
+
const { snapshot, timelineSize } = await importProviderSession({
|
|
2145
|
+
request: normalized,
|
|
2146
|
+
agentManager: this.agentManager,
|
|
2147
|
+
agentStorage: this.agentStorage,
|
|
2148
|
+
workspaceGitService: this.workspaceGitService,
|
|
2149
|
+
paseoHome: this.paseoHome,
|
|
2150
|
+
logger: this.sessionLogger,
|
|
2212
2151
|
});
|
|
2213
|
-
await unarchiveAgentState(this.agentStorage, this.agentManager, snapshot.id);
|
|
2214
|
-
await this.agentManager.hydrateTimelineFromProvider(snapshot.id);
|
|
2215
|
-
await this.applyImportedAgentTitle(snapshot);
|
|
2216
2152
|
await this.forwardAgentUpdate(snapshot);
|
|
2217
|
-
const timelineSize = this.agentManager.getTimeline(snapshot.id).length;
|
|
2218
2153
|
const agentPayload = await this.buildAgentPayload(snapshot);
|
|
2219
2154
|
this.emit({
|
|
2220
2155
|
type: "status",
|
|
@@ -2249,29 +2184,6 @@ export class Session {
|
|
|
2249
2184
|
});
|
|
2250
2185
|
}
|
|
2251
2186
|
}
|
|
2252
|
-
async applyImportedAgentTitle(snapshot) {
|
|
2253
|
-
const initialPrompt = getFirstUserMessageText(this.agentManager.getTimeline(snapshot.id));
|
|
2254
|
-
if (!initialPrompt) {
|
|
2255
|
-
return;
|
|
2256
|
-
}
|
|
2257
|
-
const { explicitTitle, provisionalTitle } = resolveCreateAgentTitles({
|
|
2258
|
-
configTitle: snapshot.config.title,
|
|
2259
|
-
initialPrompt,
|
|
2260
|
-
});
|
|
2261
|
-
if (!explicitTitle && provisionalTitle) {
|
|
2262
|
-
await this.agentManager.setTitle(snapshot.id, provisionalTitle);
|
|
2263
|
-
}
|
|
2264
|
-
scheduleAgentMetadataGeneration({
|
|
2265
|
-
agentManager: this.agentManager,
|
|
2266
|
-
agentId: snapshot.id,
|
|
2267
|
-
cwd: snapshot.cwd,
|
|
2268
|
-
workspaceGitService: this.workspaceGitService,
|
|
2269
|
-
initialPrompt,
|
|
2270
|
-
explicitTitle,
|
|
2271
|
-
paseoHome: this.paseoHome,
|
|
2272
|
-
logger: this.sessionLogger,
|
|
2273
|
-
});
|
|
2274
|
-
}
|
|
2275
2187
|
async handleRefreshAgentRequest(msg) {
|
|
2276
2188
|
const { agentId, requestId } = msg;
|
|
2277
2189
|
this.sessionLogger.info({ agentId }, `Refreshing agent ${agentId} from persistence`);
|
|
@@ -3227,7 +3139,7 @@ export class Session {
|
|
|
3227
3139
|
const snapshot = await this.workspaceGitService.getSnapshot(resolvedCwd);
|
|
3228
3140
|
this.emit({
|
|
3229
3141
|
type: "checkout_status_response",
|
|
3230
|
-
payload:
|
|
3142
|
+
payload: buildCheckoutStatusPayloadFromSnapshot({
|
|
3231
3143
|
cwd,
|
|
3232
3144
|
requestId,
|
|
3233
3145
|
snapshot,
|
|
@@ -3537,94 +3449,18 @@ export class Session {
|
|
|
3537
3449
|
this.checkoutDiffSubscriptions.get(msg.subscriptionId)?.();
|
|
3538
3450
|
this.checkoutDiffSubscriptions.delete(msg.subscriptionId);
|
|
3539
3451
|
}
|
|
3540
|
-
buildCheckoutStatusPayloadFromSnapshot({ cwd, requestId, snapshot, }) {
|
|
3541
|
-
if (!snapshot.git.isGit) {
|
|
3542
|
-
return {
|
|
3543
|
-
cwd,
|
|
3544
|
-
isGit: false,
|
|
3545
|
-
repoRoot: null,
|
|
3546
|
-
currentBranch: null,
|
|
3547
|
-
isDirty: null,
|
|
3548
|
-
baseRef: null,
|
|
3549
|
-
aheadBehind: null,
|
|
3550
|
-
aheadOfOrigin: null,
|
|
3551
|
-
behindOfOrigin: null,
|
|
3552
|
-
hasRemote: false,
|
|
3553
|
-
remoteUrl: null,
|
|
3554
|
-
isPaseoOwnedWorktree: false,
|
|
3555
|
-
error: null,
|
|
3556
|
-
requestId,
|
|
3557
|
-
};
|
|
3558
|
-
}
|
|
3559
|
-
if (snapshot.git.repoRoot === null || snapshot.git.isDirty === null) {
|
|
3560
|
-
throw new Error("Workspace git snapshot is missing required checkout status fields");
|
|
3561
|
-
}
|
|
3562
|
-
if (snapshot.git.isPaseoOwnedWorktree) {
|
|
3563
|
-
if (snapshot.git.mainRepoRoot === null || snapshot.git.baseRef === null) {
|
|
3564
|
-
throw new Error("Workspace git snapshot is missing required worktree status fields");
|
|
3565
|
-
}
|
|
3566
|
-
return {
|
|
3567
|
-
cwd,
|
|
3568
|
-
isGit: true,
|
|
3569
|
-
repoRoot: snapshot.git.repoRoot,
|
|
3570
|
-
mainRepoRoot: snapshot.git.mainRepoRoot,
|
|
3571
|
-
currentBranch: snapshot.git.currentBranch ?? null,
|
|
3572
|
-
isDirty: snapshot.git.isDirty,
|
|
3573
|
-
baseRef: snapshot.git.baseRef,
|
|
3574
|
-
aheadBehind: snapshot.git.aheadBehind ?? null,
|
|
3575
|
-
aheadOfOrigin: snapshot.git.aheadOfOrigin ?? null,
|
|
3576
|
-
behindOfOrigin: snapshot.git.behindOfOrigin ?? null,
|
|
3577
|
-
hasRemote: snapshot.git.hasRemote,
|
|
3578
|
-
remoteUrl: snapshot.git.remoteUrl,
|
|
3579
|
-
isPaseoOwnedWorktree: true,
|
|
3580
|
-
error: null,
|
|
3581
|
-
requestId,
|
|
3582
|
-
};
|
|
3583
|
-
}
|
|
3584
|
-
return {
|
|
3585
|
-
cwd,
|
|
3586
|
-
isGit: true,
|
|
3587
|
-
repoRoot: snapshot.git.repoRoot,
|
|
3588
|
-
mainRepoRoot: snapshot.git.mainRepoRoot,
|
|
3589
|
-
currentBranch: snapshot.git.currentBranch ?? null,
|
|
3590
|
-
isDirty: snapshot.git.isDirty,
|
|
3591
|
-
baseRef: snapshot.git.baseRef ?? null,
|
|
3592
|
-
aheadBehind: snapshot.git.aheadBehind ?? null,
|
|
3593
|
-
aheadOfOrigin: snapshot.git.aheadOfOrigin ?? null,
|
|
3594
|
-
behindOfOrigin: snapshot.git.behindOfOrigin ?? null,
|
|
3595
|
-
hasRemote: snapshot.git.hasRemote,
|
|
3596
|
-
remoteUrl: snapshot.git.remoteUrl,
|
|
3597
|
-
isPaseoOwnedWorktree: false,
|
|
3598
|
-
error: null,
|
|
3599
|
-
requestId,
|
|
3600
|
-
};
|
|
3601
|
-
}
|
|
3602
|
-
buildCheckoutPrStatusPayloadFromSnapshot({ cwd, requestId, snapshot, }) {
|
|
3603
|
-
return {
|
|
3604
|
-
cwd,
|
|
3605
|
-
status: normalizeCheckoutPrStatusPayload(snapshot.github.pullRequest),
|
|
3606
|
-
githubFeaturesEnabled: snapshot.github.featuresEnabled,
|
|
3607
|
-
error: snapshot.github.error
|
|
3608
|
-
? {
|
|
3609
|
-
code: "UNKNOWN",
|
|
3610
|
-
message: snapshot.github.error.message,
|
|
3611
|
-
}
|
|
3612
|
-
: null,
|
|
3613
|
-
requestId,
|
|
3614
|
-
};
|
|
3615
|
-
}
|
|
3616
3452
|
emitCheckoutStatusUpdate(cwd, snapshot) {
|
|
3617
3453
|
try {
|
|
3618
3454
|
const requestId = `subscription:${cwd}`;
|
|
3619
3455
|
this.emit({
|
|
3620
3456
|
type: "checkout_status_update",
|
|
3621
3457
|
payload: {
|
|
3622
|
-
...
|
|
3458
|
+
...buildCheckoutStatusPayloadFromSnapshot({
|
|
3623
3459
|
cwd,
|
|
3624
3460
|
requestId,
|
|
3625
3461
|
snapshot,
|
|
3626
3462
|
}),
|
|
3627
|
-
prStatus:
|
|
3463
|
+
prStatus: buildCheckoutPrStatusPayloadFromSnapshot({
|
|
3628
3464
|
cwd,
|
|
3629
3465
|
requestId,
|
|
3630
3466
|
snapshot,
|
|
@@ -3994,18 +3830,11 @@ export class Session {
|
|
|
3994
3830
|
const snapshot = await this.workspaceGitService.getSnapshot(cwd);
|
|
3995
3831
|
this.emit({
|
|
3996
3832
|
type: "checkout_pr_status_response",
|
|
3997
|
-
payload: {
|
|
3833
|
+
payload: buildCheckoutPrStatusPayloadFromSnapshot({
|
|
3998
3834
|
cwd,
|
|
3999
|
-
status: normalizeCheckoutPrStatusPayload(snapshot.github.pullRequest),
|
|
4000
|
-
githubFeaturesEnabled: snapshot.github.featuresEnabled,
|
|
4001
|
-
error: snapshot.github.error
|
|
4002
|
-
? {
|
|
4003
|
-
code: "UNKNOWN",
|
|
4004
|
-
message: snapshot.github.error.message,
|
|
4005
|
-
}
|
|
4006
|
-
: null,
|
|
4007
3835
|
requestId,
|
|
4008
|
-
|
|
3836
|
+
snapshot,
|
|
3837
|
+
}),
|
|
4009
3838
|
});
|
|
4010
3839
|
}
|
|
4011
3840
|
catch (error) {
|
|
@@ -4403,23 +4232,6 @@ export class Session {
|
|
|
4403
4232
|
const payload = this.buildStoredAgentPayload(record);
|
|
4404
4233
|
return this.isProviderVisibleToClient(payload.provider) ? payload : null;
|
|
4405
4234
|
}
|
|
4406
|
-
getStatusPriority(agent) {
|
|
4407
|
-
const attentionReason = agent.attentionReason ?? null;
|
|
4408
|
-
const hasPendingPermission = (agent.pendingPermissions?.length ?? 0) > 0;
|
|
4409
|
-
if (hasPendingPermission || attentionReason === "permission") {
|
|
4410
|
-
return 0;
|
|
4411
|
-
}
|
|
4412
|
-
if (agent.status === "error" || attentionReason === "error") {
|
|
4413
|
-
return 1;
|
|
4414
|
-
}
|
|
4415
|
-
if (agent.status === "running") {
|
|
4416
|
-
return 2;
|
|
4417
|
-
}
|
|
4418
|
-
if (agent.status === "initializing") {
|
|
4419
|
-
return 3;
|
|
4420
|
-
}
|
|
4421
|
-
return 4;
|
|
4422
|
-
}
|
|
4423
4235
|
async buildActiveProjectPlacementsByWorkspaceCwd() {
|
|
4424
4236
|
const [persistedWorkspaces, persistedProjects] = await Promise.all([
|
|
4425
4237
|
this.workspaceRegistry.list(),
|
|
@@ -6851,27 +6663,6 @@ export class Session {
|
|
|
6851
6663
|
// Stash handlers
|
|
6852
6664
|
// ---------------------------------------------------------------------------
|
|
6853
6665
|
Session.PASEO_STASH_PREFIX = "paseo-auto-stash:";
|
|
6854
|
-
export function normalizeCheckoutPrStatusPayload(status) {
|
|
6855
|
-
if (!status) {
|
|
6856
|
-
return null;
|
|
6857
|
-
}
|
|
6858
|
-
return {
|
|
6859
|
-
number: status.number,
|
|
6860
|
-
url: status.url,
|
|
6861
|
-
title: status.title,
|
|
6862
|
-
state: status.state,
|
|
6863
|
-
repoOwner: status.repoOwner,
|
|
6864
|
-
repoName: status.repoName,
|
|
6865
|
-
baseRefName: status.baseRefName,
|
|
6866
|
-
headRefName: status.headRefName,
|
|
6867
|
-
isMerged: status.isMerged,
|
|
6868
|
-
isDraft: status.isDraft ?? false,
|
|
6869
|
-
mergeable: status.mergeable ?? "UNKNOWN",
|
|
6870
|
-
checks: status.checks ?? [],
|
|
6871
|
-
checksStatus: status.checksStatus,
|
|
6872
|
-
reviewDecision: status.reviewDecision,
|
|
6873
|
-
};
|
|
6874
|
-
}
|
|
6875
6666
|
function isValidPullRequestTimelineIdentity(options) {
|
|
6876
6667
|
if (!Number.isInteger(options.prNumber) || options.prNumber <= 0) {
|
|
6877
6668
|
return false;
|