@bf-meishijian/aip 0.0.10 → 0.0.12
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 +2 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/coding-run-manager.d.ts +19 -2
- package/dist/coding-run-manager.d.ts.map +1 -1
- package/dist/coding-run-manager.js +92 -55
- package/dist/coding-run-manager.js.map +1 -1
- package/dist/daemon.d.ts +1 -0
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +14 -2
- package/dist/daemon.js.map +1 -1
- package/dist/diagnostics.d.ts +3 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +3 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/git-process.d.ts +23 -0
- package/dist/git-process.d.ts.map +1 -0
- package/dist/git-process.js +162 -0
- package/dist/git-process.js.map +1 -0
- package/dist/git-transport.d.ts +6 -0
- package/dist/git-transport.d.ts.map +1 -0
- package/dist/git-transport.js +51 -0
- package/dist/git-transport.js.map +1 -0
- package/dist/host-tools.d.ts +10 -0
- package/dist/host-tools.d.ts.map +1 -0
- package/dist/host-tools.js +109 -0
- package/dist/host-tools.js.map +1 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +6 -1
- package/dist/installer.js.map +1 -1
- package/dist/live-employee.d.ts.map +1 -1
- package/dist/live-employee.js +18 -23
- package/dist/live-employee.js.map +1 -1
- package/dist/pi-model-service.d.ts.map +1 -1
- package/dist/platform-client.d.ts +3 -0
- package/dist/platform-client.d.ts.map +1 -1
- package/dist/platform-client.js +5 -1
- package/dist/platform-client.js.map +1 -1
- package/dist/qa-project-checkout.d.ts.map +1 -1
- package/dist/qa-project-checkout.js +9 -4
- package/dist/qa-project-checkout.js.map +1 -1
- package/dist/qa-session-manager.d.ts +2 -2
- package/dist/qa-session-manager.d.ts.map +1 -1
- package/dist/qa-session-manager.js +12 -9
- package/dist/qa-session-manager.js.map +1 -1
- package/dist/run-resources.d.ts +18 -0
- package/dist/run-resources.d.ts.map +1 -0
- package/dist/run-resources.js +115 -0
- package/dist/run-resources.js.map +1 -0
- package/dist/runtime-environment.d.ts +2 -0
- package/dist/runtime-environment.d.ts.map +1 -0
- package/dist/runtime-environment.js +7 -0
- package/dist/runtime-environment.js.map +1 -0
- package/dist/secure-json.d.ts +8 -0
- package/dist/secure-json.d.ts.map +1 -1
- package/dist/secure-json.js +30 -2
- package/dist/secure-json.js.map +1 -1
- package/dist/state.d.ts +2 -2
- package/dist/state.js +2 -2
- package/dist/windows-service.d.ts +1 -0
- package/dist/windows-service.d.ts.map +1 -1
- package/dist/windows-service.js +11 -5
- package/dist/windows-service.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -110,6 +110,8 @@ PLATFORM_WEB_URL=http://10.254.208.127:4173
|
|
|
110
110
|
|
|
111
111
|
## 上线准备与 GitLab MR
|
|
112
112
|
|
|
113
|
+
Host 管理的开发、部署及 QA 仓库使用 SSH 拉取和推送。平台根据已配置 GitLab 返回的真实 SSH 地址下发,支持独立 SSH 主机名及端口;无需设置全局 Git URL 映射。运行 Host 的系统用户须有可用 SSH 密钥和仓库权限,并完成正常的 SSH 主机身份验证。已有 Host 仓库在核对项目后更新 origin 与显式推送地址,保留分支和修改;失败不会退回 HTTPS。平台 API 与云端源码同步仍使用各自的现有认证。
|
|
114
|
+
|
|
113
115
|
开发阶段产出 `release_checklist.md`,测试期间随修复维护。人工验收通过后恢复原开发会话,先读取测试交接和最新分支代码,核实清单后提交 MR。Runtime 负责 Git 推送和 MR 写操作;平台仅用自己的读取权限核实、登记和查询状态。
|
|
114
116
|
|
|
115
117
|
Runtime 的 MR 提交能力复用 [GitLab CLI glab](https://docs.gitlab.com/cli/api/)。运行 Runtime 的系统用户需要已安装 `glab`、能从 Runtime 的 `PATH` 找到它,并已通过 [glab auth login](https://docs.gitlab.com/cli/auth/login/) 登录对应 GitLab(或使用 glab 官方支持的凭证环境变量)。该身份需具备项目 MR 创建权限,Git 推送仍使用本机 Git 凭证。不读取平台全局 Token,也不把 Token 传入 Agent 参数。缺少 glab、登录失效、权限不足或网络失败时会返回中文处理提示,不降级使用平台写权限。
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,0BAA0B,CAAC;AAyBlC,wBAAsB,IAAI,CAAC,IAAI,WAAwB,0BAqBtD"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import "./runtime-environment.js";
|
|
2
3
|
import { realpathSync } from "node:fs";
|
|
3
4
|
import { readFile, unlink } from "node:fs/promises";
|
|
4
5
|
import { homedir } from "node:os";
|
|
@@ -203,6 +204,7 @@ async function refreshBackgroundStatus() {
|
|
|
203
204
|
await serviceAction("start", true);
|
|
204
205
|
}
|
|
205
206
|
async function doctor() {
|
|
207
|
+
process.stdout.write("正在检查本地环境和平台连接(请求最长 30 秒)…\n");
|
|
206
208
|
const [{ createPiModelService, isDefaultModelValid }, { runDiagnostics }] = await Promise.all([
|
|
207
209
|
import("./pi-model-service.js"),
|
|
208
210
|
import("./diagnostics.js"),
|
|
@@ -214,6 +216,7 @@ async function doctor() {
|
|
|
214
216
|
let deviceCredentialValid = false;
|
|
215
217
|
let generationValid = false;
|
|
216
218
|
let defaultRunConfig = null;
|
|
219
|
+
let selectedShell;
|
|
217
220
|
if (device) {
|
|
218
221
|
try {
|
|
219
222
|
const verification = await new PlatformClient(device.platformUrl, device.deviceToken).verify(host ? { hostId: host.hostId, generation: host.generation } : undefined);
|
|
@@ -221,6 +224,7 @@ async function doctor() {
|
|
|
221
224
|
deviceCredentialValid = verification.deviceCredentialValid;
|
|
222
225
|
generationValid = verification.generationValid;
|
|
223
226
|
defaultRunConfig = verification.defaultRunConfig;
|
|
227
|
+
selectedShell = verification.shell;
|
|
224
228
|
}
|
|
225
229
|
catch (error) {
|
|
226
230
|
platformReachable = error instanceof PlatformClientError;
|
|
@@ -234,6 +238,7 @@ async function doctor() {
|
|
|
234
238
|
generationValid,
|
|
235
239
|
defaultModelValid: isDefaultModelValid(defaultRunConfig, models),
|
|
236
240
|
providerReady: states.some((state) => state.status === "READY"),
|
|
241
|
+
shell: selectedShell,
|
|
237
242
|
});
|
|
238
243
|
process.stdout.write(`环境:${activeProfile()};平台:${(await readProfileBinding())?.platformUrl ?? "未绑定"};目录:${paths().root}\n`);
|
|
239
244
|
for (const check of checks)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,12 @@ interface HostIdentity {
|
|
|
10
10
|
generation: number;
|
|
11
11
|
}
|
|
12
12
|
interface RunInput {
|
|
13
|
+
sessionRecovery?: {
|
|
14
|
+
mode: "RESUME" | "NEW_SESSION";
|
|
15
|
+
expectedSessionId: string | null;
|
|
16
|
+
lastEventSequence: number;
|
|
17
|
+
context: string;
|
|
18
|
+
};
|
|
13
19
|
transferContinuation?: boolean;
|
|
14
20
|
transferWorkspaces?: {
|
|
15
21
|
priorRunIds: string[];
|
|
@@ -96,6 +102,7 @@ interface RunInput {
|
|
|
96
102
|
id: string;
|
|
97
103
|
name: string;
|
|
98
104
|
repositoryUrl: string;
|
|
105
|
+
sshRepositoryUrl?: string | null;
|
|
99
106
|
baselineCommit: string;
|
|
100
107
|
baselineBranch: string;
|
|
101
108
|
devBranch: string;
|
|
@@ -119,7 +126,17 @@ export declare class CodingRunManager {
|
|
|
119
126
|
constructor(pi: PiModelService);
|
|
120
127
|
isBusy(): boolean;
|
|
121
128
|
execute(client: PlatformClient, host: HostIdentity, command: LocalCodingHostClaimedCommand): Promise<{
|
|
129
|
+
resources: {
|
|
130
|
+
session: "PRESENT" | "MISSING" | "INVALID";
|
|
131
|
+
workspace: "PRESENT" | "MISSING" | "INVALID";
|
|
132
|
+
remoteBranch: "PRESENT" | "MISSING" | "UNKNOWN" | "NOT_CHECKED";
|
|
133
|
+
busy: boolean;
|
|
134
|
+
reasonCode: string;
|
|
135
|
+
};
|
|
136
|
+
recalledMessageIds?: never;
|
|
137
|
+
} | {
|
|
122
138
|
recalledMessageIds: string[];
|
|
139
|
+
resources?: never;
|
|
123
140
|
} | undefined>;
|
|
124
141
|
private start;
|
|
125
142
|
private synthetic;
|
|
@@ -139,8 +156,8 @@ export declare function openPiSession(options: {
|
|
|
139
156
|
session: AgentSession;
|
|
140
157
|
sessionId: string;
|
|
141
158
|
}>;
|
|
142
|
-
export declare function prepareDeploymentProjects(runRoot: string, projects: Array<Pick<RunInput["projects"][number], "id" | "name" | "repositoryUrl" | "testBranch">>, configuration?: DeploymentConfigurationSnapshot): Promise<string>;
|
|
143
|
-
export declare function prepareProjects(cacheRoot: string, runRoot: string, workItemKey: string, projects: RunInput["projects"], resume: boolean, verifyRemote?: boolean, uninitializedProjectIds?: string[]): Promise<string>;
|
|
159
|
+
export declare function prepareDeploymentProjects(runRoot: string, projects: Array<Pick<RunInput["projects"][number], "id" | "name" | "repositoryUrl" | "sshRepositoryUrl" | "testBranch">>, configuration?: DeploymentConfigurationSnapshot): Promise<string>;
|
|
160
|
+
export declare function prepareProjects(cacheRoot: string, runRoot: string, workItemKey: string, projects: RunInput["projects"], resume: boolean, verifyRemote?: boolean, uninitializedProjectIds?: string[], preserveExisting?: boolean): Promise<string>;
|
|
144
161
|
export declare function initialPrompt(input: RunInput, runRoot: string, _responsible?: boolean, materialRoot?: string): string;
|
|
145
162
|
export declare function redactHostText(value: string, roots?: string[]): string;
|
|
146
163
|
/** 检查失败命令自己的已知工作区,不从空准备结果推测初始化状态。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-run-manager.d.ts","sourceRoot":"","sources":["../src/coding-run-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coding-run-manager.d.ts","sourceRoot":"","sources":["../src/coding-run-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
1
|
import { createHash } from "node:crypto";
|
|
3
2
|
import { mkdir, open, realpath, stat } from "node:fs/promises";
|
|
4
3
|
import { basename, dirname, join, resolve } from "node:path";
|
|
5
|
-
import { promisify } from "node:util";
|
|
6
4
|
import { createAgentSession, DefaultResourceLoader, SessionManager, } from "@earendil-works/pi-coding-agent";
|
|
7
5
|
import { deliveryTools } from "./delivery-tools.js";
|
|
6
|
+
import { execGitFile as execFileAsync, gitFailure, missingGitRef } from "./git-process.js";
|
|
7
|
+
import { ensureSshOrigin, gitTransportUrl, matchesRepository, SSH_ACCESS_HINT, } from "./git-transport.js";
|
|
8
8
|
import { logHostEvent } from "./host-log.js";
|
|
9
9
|
import { inspectHandoffWorkspace, synchronizeLocalIntake, synchronizeRemoteWorkspace, } from "./local-handoff-workspace.js";
|
|
10
10
|
import { localModelUsage } from "./local-model-usage.js";
|
|
@@ -20,7 +20,7 @@ import { PlatformClientError } from "./platform-client.js";
|
|
|
20
20
|
import { materializeReviewReport } from "./review-report.js";
|
|
21
21
|
import { readJson, writeSecureJson } from "./secure-json.js";
|
|
22
22
|
import { stageEmployeeIds } from "./stage-delivery.js";
|
|
23
|
-
|
|
23
|
+
import { inspectRunResources } from "./run-resources.js";
|
|
24
24
|
const EVENT_APPEND_MAX_ATTEMPTS = 8;
|
|
25
25
|
export class CodingRunManager {
|
|
26
26
|
pi;
|
|
@@ -39,6 +39,12 @@ export class CodingRunManager {
|
|
|
39
39
|
}));
|
|
40
40
|
if (!command.run)
|
|
41
41
|
throw new Error("CODING_RUN_COMMAND_INVALID");
|
|
42
|
+
if (command.run.action === "CHECK_RESOURCES") {
|
|
43
|
+
const input = command.run.runInput;
|
|
44
|
+
return {
|
|
45
|
+
resources: await inspectRunResources(command.run.runId, input, this.active.has(command.run.runId) || this.active.has(`${command.run.runId}:discussion`)),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
42
48
|
if (command.run.action === "STOP" && command.run.runInput?.discussionTurn) {
|
|
43
49
|
const discussion = this.active.get(`${command.run.runId}:discussion`);
|
|
44
50
|
if (discussion && discussion.turnId === command.run.turnId) {
|
|
@@ -305,14 +311,32 @@ export class CodingRunManager {
|
|
|
305
311
|
await mkdir(runRoot, { recursive: true, mode: 0o700 });
|
|
306
312
|
const stateFile = join(local.runState, `${runId}.json`);
|
|
307
313
|
const storedState = await readJson(stateFile);
|
|
308
|
-
if (storedState?.phaseSessions &&
|
|
309
|
-
Object.keys(storedState.phaseSessions).length &&
|
|
310
|
-
storedState.harness !== "pi")
|
|
311
|
-
throw new Error("PRIOR_HARNESS_SESSION_UNSUPPORTED:请新建执行,历史文件和工作目录已保留。");
|
|
312
314
|
for (const project of input.projects)
|
|
313
315
|
project.devBranch ||=
|
|
314
316
|
storedState?.mrContext?.projects.find((p) => p.id === project.id)?.devBranch ||
|
|
315
317
|
`aip/${input.workItem.key}`;
|
|
318
|
+
let recoveryWorkspacePresent = false;
|
|
319
|
+
if (input.sessionRecovery) {
|
|
320
|
+
const facts = await inspectRunResources(runId, {
|
|
321
|
+
...input,
|
|
322
|
+
expectedSessionId: input.sessionRecovery.expectedSessionId,
|
|
323
|
+
});
|
|
324
|
+
recoveryWorkspacePresent = facts.workspace === "PRESENT";
|
|
325
|
+
if (facts.workspace === "INVALID")
|
|
326
|
+
throw new Error("CODING_RUN_WORKTREE_INVALID");
|
|
327
|
+
if (input.sessionRecovery.mode === "RESUME" && facts.workspace !== "PRESENT")
|
|
328
|
+
throw new Error("CODING_RUN_WORKTREE_MISSING");
|
|
329
|
+
if (input.sessionRecovery.mode === "RESUME" && facts.session !== "PRESENT")
|
|
330
|
+
throw new Error(facts.session === "INVALID" ? "PI_SESSION_INVALID" : "PI_SESSION_NOT_FOUND");
|
|
331
|
+
if (input.sessionRecovery.mode === "NEW_SESSION" &&
|
|
332
|
+
facts.workspace !== "PRESENT" &&
|
|
333
|
+
facts.remoteBranch !== "PRESENT")
|
|
334
|
+
throw new Error("CODING_BRANCH_NOT_PUBLISHED");
|
|
335
|
+
}
|
|
336
|
+
if (storedState?.phaseSessions &&
|
|
337
|
+
Object.keys(storedState.phaseSessions).length &&
|
|
338
|
+
storedState.harness !== "pi")
|
|
339
|
+
throw new Error("PRIOR_HARNESS_SESSION_UNSUPPORTED:请新建执行,历史文件和工作目录已保留。");
|
|
316
340
|
const transferNotes = input.transferContinuation && !storedState?.prepared
|
|
317
341
|
? await inspectPriorTransferWorkspaces(local.runWorktrees, input.transferWorkspaces?.priorRunIds ?? [], input.projects)
|
|
318
342
|
: [];
|
|
@@ -323,7 +347,7 @@ export class CodingRunManager {
|
|
|
323
347
|
: runRoot
|
|
324
348
|
: deploymentSession
|
|
325
349
|
? await prepareDeploymentProjects(runRoot, input.projects, input.deploymentConfiguration)
|
|
326
|
-
: await prepareProjects(local.repositoryCache, runRoot, input.workItem.key, input.projects, Boolean(storedState?.prepared), input.transferContinuation === true, input.transferWorkspaces?.uninitializedProjectIds);
|
|
350
|
+
: await prepareProjects(local.repositoryCache, runRoot, input.workItem.key, input.projects, input.sessionRecovery ? recoveryWorkspacePresent : Boolean(storedState?.prepared), input.transferContinuation === true || input.sessionRecovery?.mode === "NEW_SESSION", input.transferWorkspaces?.uninitializedProjectIds, Boolean(input.sessionRecovery));
|
|
327
351
|
let appliedLocalIntake = storedState?.appliedLocalIntake;
|
|
328
352
|
if (!input.discussionTurn && input.localIntake && appliedLocalIntake !== input.localIntake.id) {
|
|
329
353
|
for (const project of input.projects) {
|
|
@@ -374,10 +398,16 @@ export class CodingRunManager {
|
|
|
374
398
|
generation: host.generation,
|
|
375
399
|
}
|
|
376
400
|
: undefined;
|
|
377
|
-
const phaseSessions = storedState?.phaseSessions
|
|
401
|
+
const phaseSessions = { ...storedState?.phaseSessions };
|
|
378
402
|
const sessionPhase = input.executionPurpose === "RELEASE" ? "DEVELOPMENT" : input.phase;
|
|
379
|
-
let sessionRef =
|
|
380
|
-
|
|
403
|
+
let sessionRef = input.sessionRecovery
|
|
404
|
+
? input.sessionRecovery.mode === "NEW_SESSION"
|
|
405
|
+
? undefined
|
|
406
|
+
: (input.sessionRecovery.expectedSessionId ?? phaseSessions[sessionPhase])
|
|
407
|
+
: newDeploymentRequest
|
|
408
|
+
? undefined
|
|
409
|
+
: phaseSessions[sessionPhase];
|
|
410
|
+
let lastEventSequence = Math.max(storedState?.lastEventSequence ?? 0, input.sessionRecovery?.lastEventSequence ?? 0);
|
|
381
411
|
const observed = {
|
|
382
412
|
userIntervened: input.autoContinueEnabled === false,
|
|
383
413
|
activeTasks: new Map(),
|
|
@@ -584,7 +614,7 @@ export class CodingRunManager {
|
|
|
584
614
|
conversationFingerprint = await workspaceFingerprint(runRoot, input);
|
|
585
615
|
prompt = continuation
|
|
586
616
|
? resumePrompt
|
|
587
|
-
: `${initialPrompt(input, runRoot, true, developmentRoot)}${transferNotes.length ? `\n\n旧工作区检查:\n${transferNotes.join("\n")}` : ""}${resumePrompt ? `\n\n用户本次消息:${resumePrompt}` : resume && !resumePrompt ? "\n\n继续当前会话未完成的工作,先读取最新文件和交接结果。" : ""}`;
|
|
617
|
+
: `${initialPrompt(input, runRoot, true, developmentRoot)}${input.sessionRecovery?.context ? `\n\n平台恢复上下文(历史事实,不是用户新消息):\n${input.sessionRecovery.context}` : ""}${transferNotes.length ? `\n\n旧工作区检查:\n${transferNotes.join("\n")}` : ""}${resumePrompt ? `\n\n用户本次消息:${resumePrompt}` : resume && !resumePrompt ? "\n\n继续当前会话未完成的工作,先读取最新文件和交接结果。" : ""}`;
|
|
588
618
|
}
|
|
589
619
|
catch (error) {
|
|
590
620
|
await disposeRun();
|
|
@@ -752,7 +782,7 @@ export async function openPiSession(options) {
|
|
|
752
782
|
const listed = await SessionManager.list(options.cwd, options.sessionDir);
|
|
753
783
|
const match = listed.find((item) => item.id === options.existingId);
|
|
754
784
|
if (!match)
|
|
755
|
-
throw new Error("PI_SESSION_NOT_FOUND
|
|
785
|
+
throw new Error("PI_SESSION_NOT_FOUND");
|
|
756
786
|
sessionManager = SessionManager.open(match.path, options.sessionDir, options.cwd);
|
|
757
787
|
}
|
|
758
788
|
else {
|
|
@@ -1126,10 +1156,10 @@ export async function prepareDeploymentProjects(runRoot, projects, configuration
|
|
|
1126
1156
|
"--branch",
|
|
1127
1157
|
branch,
|
|
1128
1158
|
"--",
|
|
1129
|
-
project.repositoryUrl,
|
|
1159
|
+
gitTransportUrl(project.repositoryUrl, project.sshRepositoryUrl),
|
|
1130
1160
|
target,
|
|
1131
|
-
]).catch(() => {
|
|
1132
|
-
throw
|
|
1161
|
+
]).catch((error) => {
|
|
1162
|
+
throw gitFailure(`DEPLOYMENT_REPOSITORY_PREPARE_FAILED:${SSH_ACCESS_HINT}`, error);
|
|
1133
1163
|
});
|
|
1134
1164
|
}
|
|
1135
1165
|
// Reuse the interrupted deployment as-is; the employee resolves its Git state.
|
|
@@ -1137,16 +1167,16 @@ export async function prepareDeploymentProjects(runRoot, projects, configuration
|
|
|
1137
1167
|
execFileAsync("git", ["config", "--get", "remote.origin.url"], { cwd: target }),
|
|
1138
1168
|
execFileAsync("git", ["rev-parse", "--git-common-dir"], { cwd: target }),
|
|
1139
1169
|
]);
|
|
1140
|
-
if ((await
|
|
1141
|
-
(await canonicalRepository(project.repositoryUrl)))
|
|
1170
|
+
if (!(await matchesRepository(origin.trim(), project.repositoryUrl, project.sshRepositoryUrl)))
|
|
1142
1171
|
throw new Error("CODING_REPOSITORY_ORIGIN_MISMATCH");
|
|
1143
1172
|
if ((await realpath(resolve(target, common.trim()))) !== (await realpath(join(target, ".git"))))
|
|
1144
1173
|
throw new Error("DEPLOYMENT_REPOSITORY_NOT_ISOLATED");
|
|
1174
|
+
await ensureSshOrigin(target, project.repositoryUrl, project.sshRepositoryUrl);
|
|
1145
1175
|
}
|
|
1146
1176
|
return projects.length === 1 ? join(runRoot, safeName(projects[0].name)) : runRoot;
|
|
1147
1177
|
}
|
|
1148
1178
|
const repositoryPreparations = new Map();
|
|
1149
|
-
export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects, resume, verifyRemote = false, uninitializedProjectIds = []) {
|
|
1179
|
+
export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects, resume, verifyRemote = false, uninitializedProjectIds = [], preserveExisting = false) {
|
|
1150
1180
|
await mkdir(cacheRoot, { recursive: true, mode: 0o700 });
|
|
1151
1181
|
for (const project of projects) {
|
|
1152
1182
|
const mirror = join(cacheRoot, `${project.id}.git`);
|
|
@@ -1161,9 +1191,23 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1161
1191
|
await previous;
|
|
1162
1192
|
try {
|
|
1163
1193
|
logHostEvent("repository_preparation_started", { projectId: project.id, workItemKey });
|
|
1194
|
+
const target = join(runRoot, safeName(project.name));
|
|
1195
|
+
const expectedBranch = project.devBranch || `aip/${workItemKey}`;
|
|
1196
|
+
const existingWorktree = await exists(target);
|
|
1197
|
+
// 会话接续只校验并复用现有现场;远端同步属于交接流程,不应覆盖或阻塞本机成果。
|
|
1198
|
+
if (preserveExisting && existingWorktree) {
|
|
1199
|
+
await validateWorktree(mirror, target, expectedBranch, true, project.repositoryUrl, project.sshRepositoryUrl);
|
|
1200
|
+
logHostEvent("repository_preparation_completed", { projectId: project.id, workItemKey });
|
|
1201
|
+
continue;
|
|
1202
|
+
}
|
|
1164
1203
|
if (!(await exists(mirror))) {
|
|
1165
|
-
await execFileAsync("git", [
|
|
1166
|
-
|
|
1204
|
+
await execFileAsync("git", [
|
|
1205
|
+
"clone",
|
|
1206
|
+
"--bare",
|
|
1207
|
+
gitTransportUrl(project.repositoryUrl, project.sshRepositoryUrl),
|
|
1208
|
+
mirror,
|
|
1209
|
+
]).catch((error) => {
|
|
1210
|
+
throw gitFailure(`CODING_REPOSITORY_ACCESS_FAILED:${SSH_ACCESS_HINT}`, error);
|
|
1167
1211
|
});
|
|
1168
1212
|
}
|
|
1169
1213
|
else {
|
|
@@ -1173,10 +1217,10 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1173
1217
|
]);
|
|
1174
1218
|
if (bare.trim() !== "true")
|
|
1175
1219
|
throw new Error("CODING_REPOSITORY_CACHE_NOT_BARE");
|
|
1176
|
-
if ((await
|
|
1177
|
-
(await canonicalRepository(project.repositoryUrl)))
|
|
1220
|
+
if (!(await matchesRepository(origin.trim(), project.repositoryUrl, project.sshRepositoryUrl)))
|
|
1178
1221
|
throw new Error("CODING_REPOSITORY_ORIGIN_MISMATCH");
|
|
1179
1222
|
}
|
|
1223
|
+
await ensureSshOrigin(mirror, project.repositoryUrl, project.sshRepositoryUrl);
|
|
1180
1224
|
if (!resume || verifyRemote) {
|
|
1181
1225
|
// Never fetch into local branch refs: stopped worktrees may contain unpublished commits.
|
|
1182
1226
|
await execFileAsync("git", [
|
|
@@ -1187,13 +1231,10 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1187
1231
|
"remote.origin.fetch",
|
|
1188
1232
|
"+refs/heads/*:refs/remotes/origin/*",
|
|
1189
1233
|
]);
|
|
1190
|
-
await execFileAsync("git", ["--git-dir", mirror, "fetch", "--prune", "origin"]).catch(() => {
|
|
1191
|
-
throw
|
|
1234
|
+
await execFileAsync("git", ["--git-dir", mirror, "fetch", "--prune", "origin"]).catch((error) => {
|
|
1235
|
+
throw gitFailure(`CODING_REPOSITORY_ACCESS_FAILED:${SSH_ACCESS_HINT}`, error);
|
|
1192
1236
|
});
|
|
1193
1237
|
}
|
|
1194
|
-
const target = join(runRoot, safeName(project.name));
|
|
1195
|
-
const expectedBranch = project.devBranch || `aip/${workItemKey}`;
|
|
1196
|
-
const existingWorktree = await exists(target);
|
|
1197
1238
|
if (!existingWorktree) {
|
|
1198
1239
|
if (resume)
|
|
1199
1240
|
throw new Error("CODING_RUN_WORKTREE_MISSING");
|
|
@@ -1204,7 +1245,7 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1204
1245
|
"--verify",
|
|
1205
1246
|
"--quiet",
|
|
1206
1247
|
`refs/remotes/origin/${expectedBranch}`,
|
|
1207
|
-
]).then(() => true,
|
|
1248
|
+
]).then(() => true, missingGitRef);
|
|
1208
1249
|
const localExists = await execFileAsync("git", [
|
|
1209
1250
|
"--git-dir",
|
|
1210
1251
|
mirror,
|
|
@@ -1212,7 +1253,7 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1212
1253
|
"--verify",
|
|
1213
1254
|
"--quiet",
|
|
1214
1255
|
`refs/heads/${expectedBranch}`,
|
|
1215
|
-
]).then(() => true,
|
|
1256
|
+
]).then(() => true, missingGitRef);
|
|
1216
1257
|
if (remoteExists) {
|
|
1217
1258
|
// A new execution owns its branch ref; an old execution keeps its worktree untouched.
|
|
1218
1259
|
await execFileAsync("git", [
|
|
@@ -1220,10 +1261,10 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1220
1261
|
"--single-branch",
|
|
1221
1262
|
"--branch",
|
|
1222
1263
|
expectedBranch,
|
|
1223
|
-
project.repositoryUrl,
|
|
1264
|
+
gitTransportUrl(project.repositoryUrl, project.sshRepositoryUrl),
|
|
1224
1265
|
target,
|
|
1225
|
-
]).catch(() => {
|
|
1226
|
-
throw
|
|
1266
|
+
]).catch((error) => {
|
|
1267
|
+
throw gitFailure(`CODING_REPOSITORY_ACCESS_FAILED:${SSH_ACCESS_HINT}`, error);
|
|
1227
1268
|
});
|
|
1228
1269
|
}
|
|
1229
1270
|
else {
|
|
@@ -1237,8 +1278,8 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1237
1278
|
"cat-file",
|
|
1238
1279
|
"-e",
|
|
1239
1280
|
`refs/remotes/origin/${project.baselineBranch}`,
|
|
1240
|
-
]).catch(() => {
|
|
1241
|
-
throw
|
|
1281
|
+
]).catch((error) => {
|
|
1282
|
+
throw gitFailure("CODING_BASELINE_BRANCH_UNAVAILABLE", error);
|
|
1242
1283
|
});
|
|
1243
1284
|
await execFileAsync("git", [
|
|
1244
1285
|
"--git-dir",
|
|
@@ -1249,12 +1290,12 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1249
1290
|
expectedBranch,
|
|
1250
1291
|
target,
|
|
1251
1292
|
`refs/remotes/origin/${project.baselineBranch}`,
|
|
1252
|
-
]).catch(() => {
|
|
1253
|
-
throw
|
|
1293
|
+
]).catch((error) => {
|
|
1294
|
+
throw gitFailure("CODING_WORKTREE_CREATE_FAILED", error);
|
|
1254
1295
|
});
|
|
1255
1296
|
}
|
|
1256
1297
|
}
|
|
1257
|
-
await validateWorktree(mirror, target, expectedBranch, resume || existingWorktree, project.repositoryUrl);
|
|
1298
|
+
await validateWorktree(mirror, target, expectedBranch, resume || existingWorktree, project.repositoryUrl, project.sshRepositoryUrl);
|
|
1258
1299
|
if (existingWorktree && verifyRemote)
|
|
1259
1300
|
await synchronizeRemoteWorkspace(target, expectedBranch);
|
|
1260
1301
|
logHostEvent("repository_preparation_completed", { projectId: project.id, workItemKey });
|
|
@@ -1268,13 +1309,13 @@ export async function prepareProjects(cacheRoot, runRoot, workItemKey, projects,
|
|
|
1268
1309
|
const onlyProject = projects.length === 1 ? projects[0] : null;
|
|
1269
1310
|
return onlyProject ? join(runRoot, safeName(onlyProject.name)) : runRoot;
|
|
1270
1311
|
}
|
|
1271
|
-
async function validateWorktree(mirror, target, expectedBranch, resume, repositoryUrl) {
|
|
1312
|
+
async function validateWorktree(mirror, target, expectedBranch, resume, repositoryUrl, sshRepositoryUrl) {
|
|
1272
1313
|
const facts = await Promise.all([
|
|
1273
1314
|
execFileAsync("git", ["rev-parse", "--is-inside-work-tree"], { cwd: target }),
|
|
1274
1315
|
execFileAsync("git", ["rev-parse", "--git-common-dir"], { cwd: target }),
|
|
1275
1316
|
execFileAsync("git", ["branch", "--show-current"], { cwd: target }),
|
|
1276
|
-
]).catch(() => {
|
|
1277
|
-
throw
|
|
1317
|
+
]).catch((error) => {
|
|
1318
|
+
throw gitFailure("CODING_WORKTREE_OWNERSHIP_INVALID", error);
|
|
1278
1319
|
});
|
|
1279
1320
|
const [{ stdout: inside }, { stdout: common }, { stdout: branch }] = facts;
|
|
1280
1321
|
if (inside.trim() !== "true")
|
|
@@ -1282,19 +1323,24 @@ async function validateWorktree(mirror, target, expectedBranch, resume, reposito
|
|
|
1282
1323
|
const commonPath = common.trim();
|
|
1283
1324
|
const [actualCommon, expectedCommon] = await Promise.all([
|
|
1284
1325
|
realpath(commonPath.startsWith("/") ? commonPath : resolve(target, commonPath)),
|
|
1285
|
-
realpath(mirror)
|
|
1326
|
+
realpath(mirror).catch((error) => {
|
|
1327
|
+
if (error.code === "ENOENT")
|
|
1328
|
+
return null;
|
|
1329
|
+
throw error;
|
|
1330
|
+
}),
|
|
1286
1331
|
]);
|
|
1287
1332
|
if (actualCommon !== expectedCommon) {
|
|
1288
1333
|
if (actualCommon !== (await realpath(join(target, ".git"))))
|
|
1289
1334
|
throw new Error("CODING_WORKTREE_OWNERSHIP_INVALID");
|
|
1290
|
-
const { stdout: origin } = await execFileAsync("git", ["
|
|
1335
|
+
const { stdout: origin } = await execFileAsync("git", ["config", "--get", "remote.origin.url"], {
|
|
1291
1336
|
cwd: target,
|
|
1292
1337
|
});
|
|
1293
|
-
if ((await
|
|
1338
|
+
if (!(await matchesRepository(origin.trim(), repositoryUrl, sshRepositoryUrl)))
|
|
1294
1339
|
throw new Error("CODING_REPOSITORY_ORIGIN_MISMATCH");
|
|
1295
1340
|
}
|
|
1296
1341
|
if (branch.trim() !== expectedBranch)
|
|
1297
1342
|
throw new Error("CODING_WORKTREE_BRANCH_MISMATCH");
|
|
1343
|
+
await ensureSshOrigin(target, repositoryUrl, sshRepositoryUrl);
|
|
1298
1344
|
if (resume)
|
|
1299
1345
|
return;
|
|
1300
1346
|
const { stdout: status } = await execFileAsync("git", ["status", "--porcelain"], {
|
|
@@ -1303,15 +1349,6 @@ async function validateWorktree(mirror, target, expectedBranch, resume, reposito
|
|
|
1303
1349
|
if (status.trim())
|
|
1304
1350
|
throw new Error("CODING_WORKTREE_NOT_CLEAN");
|
|
1305
1351
|
}
|
|
1306
|
-
async function canonicalRepository(value) {
|
|
1307
|
-
if (value.startsWith("/"))
|
|
1308
|
-
return realpath(value).catch(() => resolve(value));
|
|
1309
|
-
if (value.startsWith("file://")) {
|
|
1310
|
-
const path = new URL(value);
|
|
1311
|
-
return realpath(path).catch(() => resolve(path.pathname));
|
|
1312
|
-
}
|
|
1313
|
-
return value.replace(/\/$/u, "");
|
|
1314
|
-
}
|
|
1315
1352
|
function executionInstructions(input, runRoot) {
|
|
1316
1353
|
// 环境事实与授权单独呈现,业务方法由平台 nodeRules 提供。
|
|
1317
1354
|
return `本轮执行上下文:\n${JSON.stringify({
|
|
@@ -1449,10 +1486,10 @@ export async function inspectPriorTransferWorkspaces(root, runIds, projects) {
|
|
|
1449
1486
|
}
|
|
1450
1487
|
const origin = (await execFileAsync("git", ["config", "--get", "remote.origin.url"], { cwd })).stdout.trim();
|
|
1451
1488
|
const branch = (await execFileAsync("git", ["branch", "--show-current"], { cwd })).stdout.trim();
|
|
1452
|
-
if ((await
|
|
1453
|
-
(await canonicalRepository(project.repositoryUrl)) ||
|
|
1489
|
+
if (!(await matchesRepository(origin, project.repositoryUrl, project.sshRepositoryUrl)) ||
|
|
1454
1490
|
branch !== project.devBranch)
|
|
1455
1491
|
throw new Error("WORKSPACE_IDENTITY_MISMATCH");
|
|
1492
|
+
await ensureSshOrigin(cwd, project.repositoryUrl, project.sshRepositoryUrl);
|
|
1456
1493
|
await execFileAsync("git", ["fetch", "origin", `+refs/heads/${branch}:refs/remotes/origin/${branch}`], { cwd });
|
|
1457
1494
|
const counts = (await execFileAsync("git", ["rev-list", "--left-right", "--count", `HEAD...refs/remotes/origin/${branch}`], { cwd })).stdout
|
|
1458
1495
|
.trim()
|