@chainingintention/pi-web-cn 1.202609.6 → 1.202609.8

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 (40) hide show
  1. package/dist/client/assets/{CodeViewer-ujpWthUP.js → CodeViewer-vh-rj4PA.js} +1 -1
  2. package/dist/client/assets/{TerminalPanel-Br4uzklw.js → TerminalPanel-Bb2lTnwP.js} +1 -1
  3. package/dist/client/assets/{index-kNZIQ5Kv.js → index-D4FYxEQo.js} +317 -317
  4. package/dist/client/index.html +1 -1
  5. package/dist/pi-web-plugins/git/browser/git-contract.js +10 -0
  6. package/dist/pi-web-plugins/git/browser/git-panel.js +101 -11
  7. package/dist/pi-web-plugins/git/git-backend.js +35 -8
  8. package/dist/pi-web-plugins/git/server-plugin.js +3 -2
  9. package/dist/server/app.js +20 -10
  10. package/dist/server/app.js.map +1 -1
  11. package/dist/server/git/gitService.js +32 -6
  12. package/dist/server/git/gitService.js.map +1 -1
  13. package/dist/server/gitRoutes.js +3 -3
  14. package/dist/server/gitRoutes.js.map +1 -1
  15. package/dist/server/sessiond/sessionProxyRoutes.js +122 -30
  16. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  17. package/dist/server/sessions/piSessionService.js +2 -0
  18. package/dist/server/sessions/piSessionService.js.map +1 -1
  19. package/dist/server/workbench/knowledgeSearch.js +16 -7
  20. package/dist/server/workbench/knowledgeSearch.js.map +1 -1
  21. package/dist/server/workbench/workbenchClient.js +46 -0
  22. package/dist/server/workbench/workbenchClient.js.map +1 -1
  23. package/dist/server/workbench/workbenchTools.js +87 -74
  24. package/dist/server/workbench/workbenchTools.js.map +1 -1
  25. package/dist/server/workspaceExplorerRoutes.js +37 -9
  26. package/dist/server/workspaceExplorerRoutes.js.map +1 -1
  27. package/dist/server/workspaces/fileSuggestions.js +75 -9
  28. package/dist/server/workspaces/fileSuggestions.js.map +1 -1
  29. package/dist/server/workspaces/fileTreeService.js +103 -15
  30. package/dist/server/workspaces/fileTreeService.js.map +1 -1
  31. package/dist/server/workspaces/normalProjectCwdResolver.js +35 -0
  32. package/dist/server/workspaces/normalProjectCwdResolver.js.map +1 -0
  33. package/dist/server/workspaces/workspaceRouteContext.js +1 -1
  34. package/dist/server/workspaces/workspaceRouteContext.js.map +1 -1
  35. package/dist/shared/apiTypes.js +1 -0
  36. package/dist/shared/apiTypes.js.map +1 -1
  37. package/dist/shared/federatedRoutes.js +1 -0
  38. package/dist/shared/federatedRoutes.js.map +1 -1
  39. package/docs/config.md +5 -1
  40. package/package.json +1 -1
@@ -53,7 +53,7 @@
53
53
  html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
54
54
  body { min-height: 100dvh; }
55
55
  </style>
56
- <script type="module" crossorigin src="./assets/index-kNZIQ5Kv.js"></script>
56
+ <script type="module" crossorigin src="./assets/index-D4FYxEQo.js"></script>
57
57
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-core-vUi74DnD.js">
58
58
  <link rel="modulepreload" crossorigin href="./assets/vendor-editor-languages-DoaXUodB.js">
59
59
  </head>
@@ -7,6 +7,7 @@ export function parseGitStatusResponse(value) {
7
7
  const upstream = optionalString(record, "upstream");
8
8
  const ahead = optionalNumber(record, "ahead");
9
9
  const behind = optionalNumber(record, "behind");
10
+ const truncated = optionalBoolean(record, "truncated");
10
11
  return {
11
12
  isGitRepo: requireBoolean(record, "isGitRepo"),
12
13
  hash: requireString(record, "hash"),
@@ -16,6 +17,7 @@ export function parseGitStatusResponse(value) {
16
17
  ...(behind === undefined ? {} : { behind }),
17
18
  files: requireArray(record, "files").map(parseGitStatusFile),
18
19
  submodules: record["submodules"] === undefined ? [] : requireStringArray(record["submodules"], "submodules"),
20
+ ...(truncated === undefined ? {} : { truncated }),
19
21
  };
20
22
  }
21
23
  export function parseGitDiffResponse(value) {
@@ -98,6 +100,14 @@ function optionalNumber(record, key) {
98
100
  throw new Error(`字段必须是有限数字:${key}`);
99
101
  return value;
100
102
  }
103
+ function optionalBoolean(record, key) {
104
+ const value = record[key];
105
+ if (value === undefined)
106
+ return undefined;
107
+ if (typeof value !== "boolean")
108
+ throw new Error(`字段必须是布尔值:${key}`);
109
+ return value;
110
+ }
101
111
  function requireStringArray(value, key) {
102
112
  if (!Array.isArray(value) || !value.every((entry) => typeof entry === "string"))
103
113
  throw new Error(`字段必须是字符串数组:${key}`);
@@ -7,6 +7,9 @@ import { createGitDiffRoute } from "./gitRoute.js";
7
7
  import { parseUnifiedDiff } from "./unifiedDiff.js";
8
8
  const GIT_PANEL_LOCAL_ID = "workspace.git";
9
9
  const GIT_POLL_INTERVAL_MS = 8_000;
10
+ const LARGE_GIT_POLL_INTERVAL_MS = 30_000;
11
+ const LARGE_GIT_FILE_COUNT = 1_000;
12
+ const GIT_FILE_RENDER_BATCH = 500;
10
13
  // Keep navigation state for a few recent workspaces; heavy diff views are
11
14
  // released as soon as another machine/workspace becomes active.
12
15
  const GIT_WORKSPACE_STATE_LIMIT = 8;
@@ -70,7 +73,13 @@ class GitUiController {
70
73
  this.requestRender(this.stateFor(context));
71
74
  }
72
75
  poll(context) {
73
- void this.refresh(context);
76
+ if (typeof document !== "undefined" && document.visibilityState !== "visible")
77
+ return;
78
+ const state = this.stateFor(context);
79
+ const interval = (state.status?.files.length ?? 0) > LARGE_GIT_FILE_COUNT ? LARGE_GIT_POLL_INTERVAL_MS : GIT_POLL_INTERVAL_MS;
80
+ if (Date.now() - state.lastStatusRefreshAt < interval)
81
+ return;
82
+ void this.refresh(context, false);
74
83
  }
75
84
  invalidate(context) {
76
85
  if (!this.isOwnedWorkspace(context.workspace))
@@ -80,18 +89,25 @@ class GitUiController {
80
89
  this.requestRender(state);
81
90
  return this.refresh(context);
82
91
  }
83
- refresh(context) {
92
+ refresh(context, force = true) {
84
93
  const state = this.stateFor(context);
85
- if (state.statusRequest !== undefined)
94
+ if (state.statusRequest !== undefined) {
95
+ state.statusRefreshPending ||= force;
86
96
  return state.statusRequest;
97
+ }
87
98
  state.statusLoading = true;
99
+ state.lastStatusRefreshAt = Date.now();
88
100
  this.requestRender(state);
89
- const request = requestGitBackend(context, GIT_STATUS_OPERATION, null)
101
+ const request = requestGitBackend(context, GIT_STATUS_OPERATION, force ? { refresh: true } : null)
90
102
  .then(parseGitStatusResponse)
91
103
  .then(async (status) => {
92
104
  if (!state.retained)
93
105
  return;
94
- state.status = state.status?.hash === status.hash ? state.status : status;
106
+ if (state.status?.hash !== status.hash) {
107
+ state.status = status;
108
+ state.visibleFileLimit = Math.min(GIT_FILE_RENDER_BATCH, status.files.length);
109
+ revealSelectedFile(state, this.view);
110
+ }
95
111
  state.stale = false;
96
112
  state.error = undefined;
97
113
  const path = state.selectedDiffPath;
@@ -112,6 +128,11 @@ class GitUiController {
112
128
  state.statusRequest = undefined;
113
129
  state.statusLoading = false;
114
130
  this.requestRender(state);
131
+ if (state.statusRefreshPending && state.retained && this.connectedWorkspaceKey === workspaceContextKey(context)) {
132
+ state.statusRefreshPending = false;
133
+ return this.refresh(context);
134
+ }
135
+ return undefined;
115
136
  });
116
137
  state.statusRequest = request;
117
138
  return request;
@@ -119,6 +140,7 @@ class GitUiController {
119
140
  selectDiff(context, path) {
120
141
  const state = this.stateFor(context);
121
142
  state.selectedDiffPath = path;
143
+ revealSelectedFile(state, this.view);
122
144
  state.selectedDiff = undefined;
123
145
  state.selectedStagedDiff = undefined;
124
146
  state.diffLoading = true;
@@ -144,12 +166,18 @@ class GitUiController {
144
166
  }
145
167
  viewState(state) {
146
168
  const cached = state.viewStateCache;
147
- if (cached !== undefined && cached.status === state.status && cached.view === this.view)
169
+ if (cached !== undefined && cached.status === state.status && cached.view === this.view && cached.visibleFileLimit === state.visibleFileLimit)
148
170
  return cached.viewState;
149
171
  const viewState = buildViewState(state.status, this.view);
150
- state.viewStateCache = { status: state.status, view: this.view, viewState };
172
+ state.viewStateCache = { status: state.status, view: this.view, viewState, visibleFileLimit: state.visibleFileLimit };
151
173
  return viewState;
152
174
  }
175
+ showMore(context) {
176
+ const state = this.stateFor(context);
177
+ state.visibleFileLimit += GIT_FILE_RENDER_BATCH;
178
+ state.viewStateCache = undefined;
179
+ this.requestRender(state);
180
+ }
153
181
  toggleDirectory(context, path) {
154
182
  const state = this.stateFor(context);
155
183
  const next = new Set(state.expandedDirectories);
@@ -189,8 +217,13 @@ class GitUiController {
189
217
  error: undefined,
190
218
  expandedDirectories: new Set(),
191
219
  statusRequest: undefined,
220
+ statusRefreshPending: false,
192
221
  diffRequestSequence: 0,
193
222
  viewStateCache: undefined,
223
+ visibleFileLimit: GIT_FILE_RENDER_BATCH,
224
+ remainingRows: GIT_FILE_RENDER_BATCH,
225
+ hasMoreRows: false,
226
+ lastStatusRefreshAt: 0,
194
227
  };
195
228
  this.states.set(key, created);
196
229
  return created;
@@ -348,6 +381,7 @@ function renderGitPanel(html, controller, context) {
348
381
  </div>
349
382
  </section>
350
383
  ${state.error === undefined ? null : html `<div class="git-error" role="alert">${state.error}</div>`}
384
+ ${state.status?.truncated === true ? html `<div class="git-warning" role="status">Git 状态输出过大,文件列表已截断。</div>` : null}
351
385
  <section class="git-split">
352
386
  <div class="git-file-list">${renderFileList(html, controller, context, state, viewState)}</div>
353
387
  <div class="git-viewer">${renderDiffViewer(html, state)}</div>
@@ -380,10 +414,16 @@ function renderFileList(html, controller, context, state, viewState) {
380
414
  const summary = html `<p class="git-summary">${gitSummary(status)}</p>`;
381
415
  if (status.files.length === 0)
382
416
  return html `${summary}<p class="git-muted">没有更改。</p>`;
417
+ state.remainingRows = state.visibleFileLimit;
418
+ state.hasMoreRows = status.files.length > state.visibleFileLimit;
383
419
  const body = controller.currentView() === "tree"
384
420
  ? viewState.nodes.map((node) => renderTreeNode(html, controller, context, state, node, 0))
385
421
  : renderListBody(html, controller, context, state, viewState.listModel);
386
- return html `${summary}${body}`;
422
+ const rendered = Math.min(state.visibleFileLimit, status.files.length);
423
+ const more = state.hasMoreRows || rendered < status.files.length
424
+ ? html `<button type="button" class="git-load-more" @click=${() => { controller.showMore(context); }}>显示更多(${String(rendered)}/${String(status.files.length)})</button>`
425
+ : null;
426
+ return html `${summary}${body}${more}`;
387
427
  }
388
428
  function renderListBody(html, controller, context, state, model) {
389
429
  return html `
@@ -392,6 +432,8 @@ function renderListBody(html, controller, context, state, model) {
392
432
  `;
393
433
  }
394
434
  function renderSubmoduleGroup(html, controller, context, state, group) {
435
+ if (!consumeGitRow(state))
436
+ return html ``;
395
437
  const expanded = state.expandedDirectories.has(group.path);
396
438
  return html `
397
439
  <button type="button" class="git-row" style="--depth:0" aria-expanded=${String(expanded)} @click=${() => { controller.toggleDirectory(context, group.path); }}>
@@ -409,6 +451,8 @@ function renderSubmoduleFileRow(html, controller, context, state, entry) {
409
451
  }
410
452
  function renderTreeNode(html, controller, context, state, node, depth) {
411
453
  if (node.kind === "directory") {
454
+ if (!consumeGitRow(state))
455
+ return html ``;
412
456
  const expanded = state.expandedDirectories.has(node.path);
413
457
  return html `
414
458
  <button type="button" class="git-row" style=${`--depth:${String(depth)}`} aria-expanded=${String(expanded)} @click=${() => { controller.toggleDirectory(context, node.path); }}>
@@ -424,6 +468,8 @@ function renderFileRow(html, controller, context, state, file) {
424
468
  return renderSelectableRow(html, controller, context, state, file.path, file.path, file, 0);
425
469
  }
426
470
  function renderSelectableRow(html, controller, context, state, path, label, file, depth) {
471
+ if (!consumeGitRow(state))
472
+ return html ``;
427
473
  const selected = state.selectedDiffPath === path;
428
474
  return html `
429
475
  <button type="button" class=${selected ? "git-row is-selected" : "git-row"} style=${`--depth:${String(depth)}`} @click=${() => { controller.selectDiff(context, path); }}>
@@ -444,6 +490,14 @@ function renderDiffViewer(html, state) {
444
490
  return html `<p class="git-muted">没有已暂存或未暂存的差异。</p>`;
445
491
  return html `<div class=${diffs.length === 1 ? "git-diffs is-single" : "git-diffs"}>${diffs.map((diff) => renderDiffSection(html, diff))}</div>`;
446
492
  }
493
+ function consumeGitRow(state) {
494
+ if (state.remainingRows > 0) {
495
+ state.remainingRows -= 1;
496
+ return true;
497
+ }
498
+ state.hasMoreRows = true;
499
+ return false;
500
+ }
447
501
  function renderDiffSection(html, view) {
448
502
  const diff = view.response;
449
503
  const lines = view.lines ??= parseUnifiedDiff(diff.diff);
@@ -476,13 +530,38 @@ function renderDiffSpans(html, spans) {
476
530
  function buildViewState(status, view) {
477
531
  if (status === undefined || !status.isGitRepo || status.files.length === 0)
478
532
  return EMPTY_VIEW_STATE;
533
+ const visibleStatus = status;
479
534
  if (view === "tree") {
480
- const nodes = buildGitFileTree(status.files, status.submodules);
535
+ const nodes = buildGitFileTree(visibleStatus.files, visibleStatus.submodules);
481
536
  return { nodes, listModel: EMPTY_LIST_MODEL, expandablePaths: collectGitFileTreeDirectoryPaths(nodes) };
482
537
  }
483
- const listModel = buildGitFileList(status.files, status.submodules);
538
+ const listModel = buildGitFileList(visibleStatus.files, visibleStatus.submodules);
484
539
  return { nodes: [], listModel, expandablePaths: listModel.submodules.map((group) => group.path) };
485
540
  }
541
+ function revealSelectedFile(state, view) {
542
+ const path = state.selectedDiffPath;
543
+ if (path === undefined || state.status === undefined)
544
+ return;
545
+ let selectedRow = state.status.files.findIndex((file) => file.path === path) + state.status.submodules.length + 1;
546
+ if (view === "tree") {
547
+ const nodes = buildGitFileTree(state.status.files, state.status.submodules);
548
+ for (const directory of collectGitFileTreeDirectoryPaths(nodes))
549
+ if (path.startsWith(`${directory}/`))
550
+ state.expandedDirectories.add(directory);
551
+ let row = 0;
552
+ const visit = (children) => {
553
+ for (const node of children) {
554
+ row += 1;
555
+ if (node.path === path)
556
+ selectedRow = row;
557
+ if (node.kind === "directory" && state.expandedDirectories.has(node.path))
558
+ visit(node.children);
559
+ }
560
+ };
561
+ visit(nodes);
562
+ }
563
+ state.visibleFileLimit = Math.max(state.visibleFileLimit, Math.ceil(selectedRow / GIT_FILE_RENDER_BATCH) * GIT_FILE_RENDER_BATCH);
564
+ }
486
565
  function defineGitPanelActivityElement() {
487
566
  if (typeof customElements === "undefined" || typeof HTMLElement === "undefined" || customElements.get(activityElementTag) !== undefined)
488
567
  return;
@@ -504,17 +583,19 @@ function defineGitPanelActivityElement() {
504
583
  }
505
584
  connectedCallback() {
506
585
  window.addEventListener("popstate", this.onPopState);
586
+ document.addEventListener("visibilitychange", this.onVisibilityChange);
507
587
  this.restart();
508
588
  }
509
589
  disconnectedCallback() {
510
590
  window.removeEventListener("popstate", this.onPopState);
591
+ document.removeEventListener("visibilitychange", this.onVisibilityChange);
511
592
  if (this.controllerValue !== undefined && this.contextValue !== undefined)
512
593
  this.controllerValue.disconnect(this.contextValue);
513
594
  this.stopTimer();
514
595
  }
515
596
  restart() {
516
597
  this.stopTimer();
517
- if (!this.isConnected || this.controllerValue === undefined || this.contextValue === undefined)
598
+ if (!this.isConnected || document.visibilityState !== "visible" || this.controllerValue === undefined || this.contextValue === undefined)
518
599
  return;
519
600
  this.controllerValue.connect(this.contextValue);
520
601
  this.pollTimer = window.setInterval(() => {
@@ -531,6 +612,13 @@ function defineGitPanelActivityElement() {
531
612
  if (this.controllerValue !== undefined && this.contextValue !== undefined)
532
613
  this.controllerValue.handlePopState(this.contextValue);
533
614
  };
615
+ onVisibilityChange = () => {
616
+ this.stopTimer();
617
+ if (document.visibilityState === "visible" && this.controllerValue !== undefined && this.contextValue !== undefined) {
618
+ this.restart();
619
+ void this.controllerValue.refresh(this.contextValue);
620
+ }
621
+ };
534
622
  }
535
623
  customElements.define(activityElementTag, GitPanelActivityElement);
536
624
  }
@@ -578,6 +666,8 @@ const gitPanelStyles = `
578
666
  .git-panel .git-view-toggle button.is-selected { position: relative; z-index: 1; border-color: var(--pi-accent); background: var(--pi-selection-bg); }
579
667
  .git-panel .git-stale { border: 1px solid var(--pi-warning-border); border-radius: 999px; color: var(--pi-warning); padding: 1px 6px; font-size: 12px; }
580
668
  .git-panel .git-error { flex: 0 0 auto; margin: 8px; border: 1px solid var(--pi-danger); border-radius: 7px; color: var(--pi-danger); padding: 8px; }
669
+ .git-panel .git-warning { flex: 0 0 auto; margin: 8px; border: 1px solid var(--pi-warning-border); border-radius: 7px; color: var(--pi-warning); padding: 8px; }
670
+ .git-panel .git-load-more { margin: 8px auto; }
581
671
  .git-panel .git-split { flex: 1 1 auto; min-height: 0; display: grid; grid-template-rows: minmax(160px, 34%) minmax(0, 1fr); }
582
672
  .git-panel .git-file-list { min-height: 0; overflow: auto; border-bottom: 1px solid var(--pi-border); padding: 6px; }
583
673
  .git-panel .git-row { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 4px; width: 100%; border: 0; border-radius: 5px; background: transparent; text-align: left; padding: 4px 6px 4px calc(6px + var(--depth, 0) * 14px); }
@@ -16,6 +16,27 @@ const GIT_LOCAL_ENV_VARS = Object.freeze([
16
16
  "GIT_WORK_TREE",
17
17
  ]);
18
18
  /** Dispatch the Git-owned status/diff schema through the provider's public request seam. */
19
+ export function createGitBackend(activationContext) {
20
+ const statuses = new Map();
21
+ return (request) => {
22
+ if (request.operation !== GIT_STATUS_OPERATION)
23
+ return requestGitBackend(activationContext, request);
24
+ requireStatusInput(request.input);
25
+ const key = JSON.stringify([request.project.id, request.project.path, request.workspace.key, request.workspace.path]);
26
+ const cached = statuses.get(key);
27
+ if (cached !== undefined && (cached.expires === Infinity || (request.input === null && cached.expires > Date.now())))
28
+ return cached.promise;
29
+ const entry = { expires: Infinity, promise: requestGitBackend(activationContext, { ...request, signal: new AbortController().signal }).then((result) => {
30
+ entry.expires = Date.now() + 2000;
31
+ for (const [oldKey, old] of statuses)
32
+ if (old.expires <= Date.now())
33
+ statuses.delete(oldKey);
34
+ return result;
35
+ }, (error) => { statuses.delete(key); throw error; }) };
36
+ statuses.set(key, entry);
37
+ return entry.promise;
38
+ };
39
+ }
19
40
  export async function requestGitBackend(activationContext, request) {
20
41
  const runGit = createGitRunner(activationContext, request.signal);
21
42
  if (request.operation === GIT_STATUS_OPERATION) {
@@ -30,9 +51,9 @@ export async function requestGitBackend(activationContext, request) {
30
51
  async function gitStatusWithRunner(runGit, cwd) {
31
52
  const result = await runGit(cwd, ["status", "--porcelain=v2", "--branch", "--untracked-files=all", "-z"]);
32
53
  if (result.code !== 0)
33
- return { isGitRepo: false, hash: hash(result.stdout + result.stderr), files: [], submodules: [] };
34
- const parsed = parseStatus(result.stdout, { deferSubmodules: true });
35
- return expandSubmodules(runGit, cwd, parsed, result.stdout);
54
+ return { isGitRepo: false, hash: hash(result.stdout + result.stderr), files: [], submodules: [], ...(result.truncated ? { truncated: true } : {}) };
55
+ const parsed = parseStatus(result.truncated ? result.stdout.slice(0, result.stdout.lastIndexOf("\0") + 1) : result.stdout, { deferSubmodules: true });
56
+ return expandSubmodules(runGit, cwd, parsed, result.stdout, result.truncated);
36
57
  }
37
58
  /**
38
59
  * Merge each dirty submodule's own changes into the flat file list. A moved
@@ -41,7 +62,7 @@ async function gitStatusWithRunner(runGit, cwd) {
41
62
  * entries under `<submodule>/<inner path>`. A plain `-dirty` pointer (commit
42
63
  * unchanged) is intentionally not surfaced as a pointer entry.
43
64
  */
44
- async function expandSubmodules(runGit, cwd, parsed, topRaw) {
65
+ async function expandSubmodules(runGit, cwd, parsed, topRaw, topTruncated) {
45
66
  // Fan out concurrently — one `git status` per dirty submodule plus one
46
67
  // `git rev-parse` per unstaged pointer move — then concatenate in input
47
68
  // order so the file list and hash are identical to a serial pass.
@@ -55,10 +76,12 @@ async function expandSubmodules(runGit, cwd, parsed, topRaw) {
55
76
  const files = [...parsed.files];
56
77
  const dirtySubmodulePaths = [];
57
78
  let extraForHash = "";
79
+ let truncated = topTruncated;
58
80
  for (const part of expanded) {
59
81
  dirtySubmodulePaths.push(part.path);
60
82
  files.push(...part.files);
61
83
  extraForHash += part.extraForHash;
84
+ truncated ||= part.truncated;
62
85
  }
63
86
  return {
64
87
  isGitRepo: true,
@@ -69,12 +92,14 @@ async function expandSubmodules(runGit, cwd, parsed, topRaw) {
69
92
  ...(parsed.behind === undefined ? {} : { behind: parsed.behind }),
70
93
  files,
71
94
  submodules: dirtySubmodulePaths,
95
+ ...(truncated ? { truncated: true } : {}),
72
96
  };
73
97
  }
74
98
  /** Expand one dirty submodule: the pointer entry first, then its inner files. */
75
99
  async function expandSubmodule(runGit, sub, location) {
76
100
  const files = [];
77
101
  let extraForHash = "";
102
+ let truncated = false;
78
103
  if (sub.commitChanged) {
79
104
  files.push({
80
105
  path: sub.path,
@@ -86,9 +111,10 @@ async function expandSubmodule(runGit, sub, location) {
86
111
  }
87
112
  if ((sub.hasModifiedContent || sub.hasUntrackedContent) && location !== undefined) {
88
113
  const inner = await runGit(location.cwd, ["status", "--porcelain=v2", "--untracked-files=all", "-z"]);
114
+ truncated = inner.truncated;
89
115
  if (inner.code === 0) {
90
116
  extraForHash = `\0${sub.path}\0${inner.stdout}`;
91
- const innerFiles = parseStatus(inner.stdout, { deferSubmodules: false }).files;
117
+ const innerFiles = parseStatus(inner.truncated ? inner.stdout.slice(0, inner.stdout.lastIndexOf("\0") + 1) : inner.stdout, { deferSubmodules: false }).files;
92
118
  for (const file of innerFiles) {
93
119
  files.push({
94
120
  ...file,
@@ -99,7 +125,7 @@ async function expandSubmodule(runGit, sub, location) {
99
125
  }
100
126
  // non-zero exit: uninitialized / unreadable submodule — skip silently
101
127
  }
102
- return { files, extraForHash };
128
+ return { files, extraForHash, truncated };
103
129
  }
104
130
  async function resolveSubmoduleToCommit(runGit, cwd, sub) {
105
131
  // Staged pointer moves already expose the new commit as the index OID; an
@@ -362,6 +388,7 @@ function statusProviderResponse(status) {
362
388
  ...(file.submoduleToCommit === undefined ? {} : { submoduleToCommit: file.submoduleToCommit }),
363
389
  })),
364
390
  submodules: status.submodules,
391
+ ...(status.truncated === true ? { truncated: true } : {}),
365
392
  };
366
393
  }
367
394
  function diffProviderResponse(diff) {
@@ -397,8 +424,8 @@ function commandResult(result, args) {
397
424
  };
398
425
  }
399
426
  function requireStatusInput(input) {
400
- if (input !== null)
401
- throw new Error("Git 状态输入必须为 null");
427
+ if (input !== null && !(isRecord(input) && input["refresh"] === true && Object.keys(input).length === 1))
428
+ throw new Error("Git 状态输入必须为 null 或 refresh 对象");
402
429
  }
403
430
  function parseDiffInput(input) {
404
431
  if (!isRecord(input))
@@ -1,6 +1,6 @@
1
1
  // Generated from pi-web-plugins/git/server-plugin.ts. Do not edit directly.
2
2
  import { basename, resolve } from "node:path";
3
- import { requestGitBackend } from "./git-backend.js";
3
+ import { createGitBackend } from "./git-backend.js";
4
4
  const GIT_LOCAL_ENV_VARS = Object.freeze([
5
5
  "GIT_ALTERNATE_OBJECT_DIRECTORIES",
6
6
  "GIT_COMMON_DIR",
@@ -20,6 +20,7 @@ const plugin = {
20
20
  };
21
21
  export default plugin;
22
22
  export function createGitWorkspaceProvider(context) {
23
+ const requestBackend = createGitBackend(context);
23
24
  return Object.freeze({
24
25
  fallback: true,
25
26
  async probe(project, signal) {
@@ -80,7 +81,7 @@ export function createGitWorkspaceProvider(context) {
80
81
  };
81
82
  });
82
83
  },
83
- request: (request) => requestGitBackend(context, request),
84
+ request: (request) => requestBackend(request),
84
85
  async prepareRemove({ project, workspace, signal }) {
85
86
  const privatePath = gitPrivateWorktreePath(workspace);
86
87
  if (resolve(privatePath) !== workspace.path) {
@@ -11,7 +11,8 @@ import { ProjectService } from "./projects/projectService.js";
11
11
  import { WorkspaceService } from "./workspaces/workspaceService.js";
12
12
  import { asWorkspaceCatalog } from "./workspaces/workspaceCatalog.js";
13
13
  import { SessionDaemonWorkspaceCatalog } from "./workspaces/sessionDaemonWorkspaceCatalog.js";
14
- import { isAbsoluteishFileSuggestionQuery, listFileSuggestions, listPathSuggestions } from "./workspaces/fileSuggestions.js";
14
+ import { createNormalProjectCwdResolver } from "./workspaces/normalProjectCwdResolver.js";
15
+ import { FileSuggestionCatalog, isAbsoluteishFileSuggestionQuery, listFileSuggestions, listPathSuggestions } from "./workspaces/fileSuggestions.js";
15
16
  import { pathAccessForCwd } from "./workspaces/effectivePathAccess.js";
16
17
  import { loadEffectiveProjectAttachmentsConfig, loadEffectiveProjectUploadsConfig } from "./workspaces/projectPiWebConfig.js";
17
18
  import { normalizeRequestCwd } from "./workingDirectory.js";
@@ -21,6 +22,7 @@ import { loadServerPluginRecoveryConfig } from "../serverPluginRecovery.js";
21
22
  import { registerSessionProxyRoutes } from "./sessiond/sessionProxyRoutes.js";
22
23
  import { registerWorkspaceExplorerRoutes } from "./workspaceExplorerRoutes.js";
23
24
  import { registerGitRoutes } from "./gitRoutes.js";
25
+ import { GitStatusCache } from "./git/gitService.js";
24
26
  import { registerTerminalProxyRoutes } from "./terminalProxyRoutes.js";
25
27
  import { registerPluginBackendProxyRoutes } from "./plugins/pluginBackendProxyRoutes.js";
26
28
  import { registerWorkspaceDeletionRoutes } from "./workspaces/workspaceDeletionRoutes.js";
@@ -137,7 +139,7 @@ function registerLocalFileSuggestionRoutes(app, projects, workspaces, prefix, op
137
139
  const pathAccess = isAbsoluteishFileSuggestionQuery(query) ? await pathAccessForCwd(cwd, projects, catalog, options.config) : undefined;
138
140
  if (request.query.mode === "path")
139
141
  return await listPathSuggestions(cwd, query, pathAccess);
140
- return await listFileSuggestions(cwd, query, { kind: request.query.kind, scope: request.query.scope, pathAccess });
142
+ return await listFileSuggestions(cwd, query, { kind: request.query.kind, scope: request.query.scope, pathAccess }, { ...(options.fileSuggestions === undefined ? {} : { catalog: options.fileSuggestions }), catalogKey: JSON.stringify([context?.user, cwd]) });
141
143
  }
142
144
  catch (error) {
143
145
  return reply.code(400).send({ error: error instanceof Error ? error.message : String(error) });
@@ -213,6 +215,12 @@ export async function buildApp(deps = {}) {
213
215
  const listed = isLegacyWorkspaceService(workspaceInput) ? await workspaceInput.list(project) : await workspaces.list(project.id, { managementContext: context });
214
216
  return listed.map((workspace) => workspace.path);
215
217
  };
218
+ const resolveNormalProjectCwds = createNormalProjectCwdResolver({
219
+ listProjects: () => projects.list(),
220
+ listWorkspaces: async (project) => isLegacyWorkspaceService(workspaceInput)
221
+ ? await workspaceInput.list(project)
222
+ : await workspaces.list(project.id),
223
+ });
216
224
  const normalAuth = new NormalModeAuthService(configService);
217
225
  const normalAuthLoginAttempts = registerNormalAuthRoutes(app, normalAuth);
218
226
  registerNormalModeAuthGate(app, normalAuth, managementEmbed, normalAuthLoginAttempts);
@@ -246,20 +254,22 @@ export async function buildApp(deps = {}) {
246
254
  registerMachinePluginProxyRoutes(app, machines);
247
255
  registerLocalProjectRoutes(app, projects, workspaceInput, "/api", { config: configService, managementEmbed });
248
256
  registerLocalProjectRoutes(app, projects, workspaceInput, "/api/machines/local", { config: configService, managementEmbed });
249
- registerSessionProxyRoutes(app, sessionDaemon, "/api", managementEmbed, resolveManagementProjectCwds);
250
- registerSessionProxyRoutes(app, sessionDaemon, "/api/machines/local", managementEmbed, resolveManagementProjectCwds);
257
+ registerSessionProxyRoutes(app, sessionDaemon, "/api", managementEmbed, resolveManagementProjectCwds, resolveNormalProjectCwds);
258
+ registerSessionProxyRoutes(app, sessionDaemon, "/api/machines/local", managementEmbed, resolveManagementProjectCwds, resolveNormalProjectCwds);
251
259
  registerPluginBackendProxyRoutes(app, sessionDaemon, "/api/plugin-backends", managementEmbed);
252
260
  registerPluginBackendProxyRoutes(app, sessionDaemon, "/api/machines/local/plugin-backends", managementEmbed);
253
- registerWorkspaceExplorerRoutes(app, projects, workspaceInput, "/api", { config: configService, managementEmbed });
254
- registerWorkspaceExplorerRoutes(app, projects, workspaceInput, "/api/machines/local", { config: configService, managementEmbed });
255
- registerGitRoutes(app, projects, legacyWorkspaces, "/api", managementEmbed);
256
- registerGitRoutes(app, projects, legacyWorkspaces, "/api/machines/local", managementEmbed);
261
+ const fileSuggestions = new FileSuggestionCatalog();
262
+ registerWorkspaceExplorerRoutes(app, projects, workspaceInput, "/api", { config: configService, managementEmbed, fileSuggestions });
263
+ registerWorkspaceExplorerRoutes(app, projects, workspaceInput, "/api/machines/local", { config: configService, managementEmbed, fileSuggestions });
264
+ const gitStatuses = new GitStatusCache();
265
+ registerGitRoutes(app, projects, legacyWorkspaces, "/api", managementEmbed, gitStatuses);
266
+ registerGitRoutes(app, projects, legacyWorkspaces, "/api/machines/local", managementEmbed, gitStatuses);
257
267
  registerTerminalProxyRoutes(app, projects, workspaceInput, sessionDaemon, "/api", managementEmbed);
258
268
  registerTerminalProxyRoutes(app, projects, workspaceInput, sessionDaemon, "/api/machines/local", managementEmbed);
259
269
  registerWorkspaceDeletionRoutes(app, sessionDaemon, "/api", managementEmbed);
260
270
  registerWorkspaceDeletionRoutes(app, sessionDaemon, "/api/machines/local", managementEmbed);
261
- registerLocalFileSuggestionRoutes(app, projects, workspaceInput, "/api", { config: configService, managementEmbed });
262
- registerLocalFileSuggestionRoutes(app, projects, workspaceInput, "/api/machines/local", { config: configService, managementEmbed });
271
+ registerLocalFileSuggestionRoutes(app, projects, workspaceInput, "/api", { config: configService, managementEmbed, fileSuggestions });
272
+ registerLocalFileSuggestionRoutes(app, projects, workspaceInput, "/api/machines/local", { config: configService, managementEmbed, fileSuggestions });
263
273
  registerMachineProxyRoutes(app, machines);
264
274
  const packagedClientDist = join(dirname(fileURLToPath(import.meta.url)), "..", "client");
265
275
  const clientDist = deps.clientDist ?? (existsSync(packagedClientDist) ? packagedClientDist : join(process.cwd(), "dist", "client"));
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/server/app.ts"],"names":[],"mappings":"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"}