@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.
- package/dist/client/assets/{CodeViewer-ujpWthUP.js → CodeViewer-vh-rj4PA.js} +1 -1
- package/dist/client/assets/{TerminalPanel-Br4uzklw.js → TerminalPanel-Bb2lTnwP.js} +1 -1
- package/dist/client/assets/{index-kNZIQ5Kv.js → index-D4FYxEQo.js} +317 -317
- package/dist/client/index.html +1 -1
- package/dist/pi-web-plugins/git/browser/git-contract.js +10 -0
- package/dist/pi-web-plugins/git/browser/git-panel.js +101 -11
- package/dist/pi-web-plugins/git/git-backend.js +35 -8
- package/dist/pi-web-plugins/git/server-plugin.js +3 -2
- package/dist/server/app.js +20 -10
- package/dist/server/app.js.map +1 -1
- package/dist/server/git/gitService.js +32 -6
- package/dist/server/git/gitService.js.map +1 -1
- package/dist/server/gitRoutes.js +3 -3
- package/dist/server/gitRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionProxyRoutes.js +122 -30
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +2 -0
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/workbench/knowledgeSearch.js +16 -7
- package/dist/server/workbench/knowledgeSearch.js.map +1 -1
- package/dist/server/workbench/workbenchClient.js +46 -0
- package/dist/server/workbench/workbenchClient.js.map +1 -1
- package/dist/server/workbench/workbenchTools.js +87 -74
- package/dist/server/workbench/workbenchTools.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +37 -9
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileSuggestions.js +75 -9
- package/dist/server/workspaces/fileSuggestions.js.map +1 -1
- package/dist/server/workspaces/fileTreeService.js +103 -15
- package/dist/server/workspaces/fileTreeService.js.map +1 -1
- package/dist/server/workspaces/normalProjectCwdResolver.js +35 -0
- package/dist/server/workspaces/normalProjectCwdResolver.js.map +1 -0
- package/dist/server/workspaces/workspaceRouteContext.js +1 -1
- package/dist/server/workspaces/workspaceRouteContext.js.map +1 -1
- package/dist/shared/apiTypes.js +1 -0
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/federatedRoutes.js +1 -0
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/docs/config.md +5 -1
- package/package.json +1 -1
package/dist/client/index.html
CHANGED
|
@@ -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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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 {
|
|
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) =>
|
|
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) {
|
package/dist/server/app.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
254
|
-
registerWorkspaceExplorerRoutes(app, projects, workspaceInput, "/api
|
|
255
|
-
|
|
256
|
-
|
|
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"));
|
package/dist/server/app.js.map
CHANGED
|
@@ -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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"}
|