@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.
Files changed (66) hide show
  1. package/README.md +2 -0
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +5 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/coding-run-manager.d.ts +19 -2
  7. package/dist/coding-run-manager.d.ts.map +1 -1
  8. package/dist/coding-run-manager.js +92 -55
  9. package/dist/coding-run-manager.js.map +1 -1
  10. package/dist/daemon.d.ts +1 -0
  11. package/dist/daemon.d.ts.map +1 -1
  12. package/dist/daemon.js +14 -2
  13. package/dist/daemon.js.map +1 -1
  14. package/dist/diagnostics.d.ts +3 -1
  15. package/dist/diagnostics.d.ts.map +1 -1
  16. package/dist/diagnostics.js +3 -0
  17. package/dist/diagnostics.js.map +1 -1
  18. package/dist/git-process.d.ts +23 -0
  19. package/dist/git-process.d.ts.map +1 -0
  20. package/dist/git-process.js +162 -0
  21. package/dist/git-process.js.map +1 -0
  22. package/dist/git-transport.d.ts +6 -0
  23. package/dist/git-transport.d.ts.map +1 -0
  24. package/dist/git-transport.js +51 -0
  25. package/dist/git-transport.js.map +1 -0
  26. package/dist/host-tools.d.ts +10 -0
  27. package/dist/host-tools.d.ts.map +1 -0
  28. package/dist/host-tools.js +109 -0
  29. package/dist/host-tools.js.map +1 -0
  30. package/dist/installer.d.ts.map +1 -1
  31. package/dist/installer.js +6 -1
  32. package/dist/installer.js.map +1 -1
  33. package/dist/live-employee.d.ts.map +1 -1
  34. package/dist/live-employee.js +18 -23
  35. package/dist/live-employee.js.map +1 -1
  36. package/dist/pi-model-service.d.ts.map +1 -1
  37. package/dist/platform-client.d.ts +3 -0
  38. package/dist/platform-client.d.ts.map +1 -1
  39. package/dist/platform-client.js +5 -1
  40. package/dist/platform-client.js.map +1 -1
  41. package/dist/qa-project-checkout.d.ts.map +1 -1
  42. package/dist/qa-project-checkout.js +9 -4
  43. package/dist/qa-project-checkout.js.map +1 -1
  44. package/dist/qa-session-manager.d.ts +2 -2
  45. package/dist/qa-session-manager.d.ts.map +1 -1
  46. package/dist/qa-session-manager.js +12 -9
  47. package/dist/qa-session-manager.js.map +1 -1
  48. package/dist/run-resources.d.ts +18 -0
  49. package/dist/run-resources.d.ts.map +1 -0
  50. package/dist/run-resources.js +115 -0
  51. package/dist/run-resources.js.map +1 -0
  52. package/dist/runtime-environment.d.ts +2 -0
  53. package/dist/runtime-environment.d.ts.map +1 -0
  54. package/dist/runtime-environment.js +7 -0
  55. package/dist/runtime-environment.js.map +1 -0
  56. package/dist/secure-json.d.ts +8 -0
  57. package/dist/secure-json.d.ts.map +1 -1
  58. package/dist/secure-json.js +30 -2
  59. package/dist/secure-json.js.map +1 -1
  60. package/dist/state.d.ts +2 -2
  61. package/dist/state.js +2 -2
  62. package/dist/windows-service.d.ts +1 -0
  63. package/dist/windows-service.d.ts.map +1 -1
  64. package/dist/windows-service.js +11 -5
  65. package/dist/windows-service.js.map +1 -1
  66. 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
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
+ import "./runtime-environment.js";
2
3
  export declare function main(args?: string[]): Promise<number | void>;
3
4
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAyBA,wBAAsB,IAAI,CAAC,IAAI,WAAwB,0BAqBtD"}
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":"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"}
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
- const execFileAsync = promisify(execFile);
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 = newDeploymentRequest ? undefined : phaseSessions[sessionPhase];
380
- let lastEventSequence = storedState?.lastEventSequence ?? 0;
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 new Error("DEPLOYMENT_REPOSITORY_PREPARE_FAILED");
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 canonicalRepository(origin.trim())) !==
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", ["clone", "--bare", project.repositoryUrl, mirror]).catch(() => {
1166
- throw new Error("CODING_REPOSITORY_ACCESS_FAILED");
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 canonicalRepository(origin.trim())) !==
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 new Error("CODING_REPOSITORY_ACCESS_FAILED");
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, () => false);
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, () => false);
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 new Error("CODING_REPOSITORY_ACCESS_FAILED");
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 new Error("CODING_BASELINE_BRANCH_UNAVAILABLE");
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 new Error("CODING_WORKTREE_CREATE_FAILED");
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 new Error("CODING_WORKTREE_OWNERSHIP_INVALID");
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", ["remote", "get-url", "origin"], {
1335
+ const { stdout: origin } = await execFileAsync("git", ["config", "--get", "remote.origin.url"], {
1291
1336
  cwd: target,
1292
1337
  });
1293
- if ((await canonicalRepository(origin.trim())) !== (await canonicalRepository(repositoryUrl)))
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 canonicalRepository(origin)) !==
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()