@planweave-ai/runtime 0.1.4 → 0.1.7
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/autoRun/claudeCodeIntegration.d.ts.map +1 -1
- package/dist/autoRun/claudeCodeIntegration.js +4 -2
- package/dist/autoRun/claudeCodeIntegration.js.map +1 -1
- package/dist/autoRun/codexExecutor.d.ts +2 -0
- package/dist/autoRun/codexExecutor.d.ts.map +1 -1
- package/dist/autoRun/codexExecutor.js +10 -2
- package/dist/autoRun/codexExecutor.js.map +1 -1
- package/dist/autoRun/codexIntegration.d.ts.map +1 -1
- package/dist/autoRun/codexIntegration.js +4 -2
- package/dist/autoRun/codexIntegration.js.map +1 -1
- package/dist/autoRun/executorIntegration.d.ts +1 -0
- package/dist/autoRun/executorIntegration.d.ts.map +1 -1
- package/dist/autoRun/executorIntegration.js.map +1 -1
- package/dist/autoRun/localReviewExecutor.d.ts +2 -0
- package/dist/autoRun/localReviewExecutor.d.ts.map +1 -1
- package/dist/autoRun/localReviewExecutor.js +9 -2
- package/dist/autoRun/localReviewExecutor.js.map +1 -1
- package/dist/autoRun/localReviewIntegration.d.ts.map +1 -1
- package/dist/autoRun/localReviewIntegration.js +4 -2
- package/dist/autoRun/localReviewIntegration.js.map +1 -1
- package/dist/autoRun/opencodeExecutor.d.ts +2 -0
- package/dist/autoRun/opencodeExecutor.d.ts.map +1 -1
- package/dist/autoRun/opencodeExecutor.js +9 -2
- package/dist/autoRun/opencodeExecutor.js.map +1 -1
- package/dist/autoRun/opencodeIntegration.d.ts.map +1 -1
- package/dist/autoRun/opencodeIntegration.js +4 -2
- package/dist/autoRun/opencodeIntegration.js.map +1 -1
- package/dist/autoRun/piIntegration.d.ts.map +1 -1
- package/dist/autoRun/piIntegration.js +4 -2
- package/dist/autoRun/piIntegration.js.map +1 -1
- package/dist/autoRun/terminalAgentExecutor.d.ts +2 -0
- package/dist/autoRun/terminalAgentExecutor.d.ts.map +1 -1
- package/dist/autoRun/terminalAgentExecutor.js +9 -2
- package/dist/autoRun/terminalAgentExecutor.js.map +1 -1
- package/dist/autoRun/tmuxExecutor.d.ts +3 -0
- package/dist/autoRun/tmuxExecutor.d.ts.map +1 -1
- package/dist/autoRun/tmuxExecutor.js +19 -3
- package/dist/autoRun/tmuxExecutor.js.map +1 -1
- package/dist/desktop/canvasApi.d.ts.map +1 -1
- package/dist/desktop/canvasApi.js +45 -22
- package/dist/desktop/canvasApi.js.map +1 -1
- package/dist/desktop/canvasGraphApi.d.ts.map +1 -1
- package/dist/desktop/canvasGraphApi.js +24 -33
- package/dist/desktop/canvasGraphApi.js.map +1 -1
- package/dist/desktop/canvasSelectionApi.d.ts +2 -0
- package/dist/desktop/canvasSelectionApi.d.ts.map +1 -0
- package/dist/desktop/canvasSelectionApi.js +18 -0
- package/dist/desktop/canvasSelectionApi.js.map +1 -0
- package/dist/desktop/canvasSelectionStore.d.ts +6 -0
- package/dist/desktop/canvasSelectionStore.d.ts.map +1 -0
- package/dist/desktop/canvasSelectionStore.js +88 -0
- package/dist/desktop/canvasSelectionStore.js.map +1 -0
- package/dist/desktop/fileSyncApi.d.ts.map +1 -1
- package/dist/desktop/fileSyncApi.js +45 -6
- package/dist/desktop/fileSyncApi.js.map +1 -1
- package/dist/desktop/graph/editModel.d.ts +8 -5
- package/dist/desktop/graph/editModel.d.ts.map +1 -1
- package/dist/desktop/graph/editModel.js +151 -72
- package/dist/desktop/graph/editModel.js.map +1 -1
- package/dist/desktop/graph/projectProjectionModel.d.ts.map +1 -1
- package/dist/desktop/graph/projectProjectionModel.js +255 -77
- package/dist/desktop/graph/projectProjectionModel.js.map +1 -1
- package/dist/desktop/graph/readModel.d.ts.map +1 -1
- package/dist/desktop/graph/readModel.js +33 -59
- package/dist/desktop/graph/readModel.js.map +1 -1
- package/dist/desktop/graph/resultsFileIndex.d.ts +6 -0
- package/dist/desktop/graph/resultsFileIndex.d.ts.map +1 -1
- package/dist/desktop/graph/resultsFileIndex.js +11 -2
- package/dist/desktop/graph/resultsFileIndex.js.map +1 -1
- package/dist/desktop/graph/searchIndexModel.d.ts +10 -1
- package/dist/desktop/graph/searchIndexModel.d.ts.map +1 -1
- package/dist/desktop/graph/searchIndexModel.js +95 -77
- package/dist/desktop/graph/searchIndexModel.js.map +1 -1
- package/dist/desktop/graph/statisticsIndexModel.d.ts.map +1 -1
- package/dist/desktop/graph/statisticsIndexModel.js +35 -103
- package/dist/desktop/graph/statisticsIndexModel.js.map +1 -1
- package/dist/desktop/graph/todoModel.d.ts +6 -17
- package/dist/desktop/graph/todoModel.d.ts.map +1 -1
- package/dist/desktop/graph/todoModel.js +30 -102
- package/dist/desktop/graph/todoModel.js.map +1 -1
- package/dist/desktop/graphApi.d.ts +1 -1
- package/dist/desktop/graphApi.d.ts.map +1 -1
- package/dist/desktop/graphApi.js +1 -1
- package/dist/desktop/graphApi.js.map +1 -1
- package/dist/desktop/index.d.ts +2 -1
- package/dist/desktop/index.d.ts.map +1 -1
- package/dist/desktop/index.js +2 -1
- package/dist/desktop/index.js.map +1 -1
- package/dist/desktop/layoutApi.d.ts +3 -2
- package/dist/desktop/layoutApi.d.ts.map +1 -1
- package/dist/desktop/layoutApi.js +29 -122
- package/dist/desktop/layoutApi.js.map +1 -1
- package/dist/desktop/layoutStore.d.ts +10 -0
- package/dist/desktop/layoutStore.d.ts.map +1 -0
- package/dist/desktop/layoutStore.js +158 -0
- package/dist/desktop/layoutStore.js.map +1 -0
- package/dist/desktop/projectGraphEditApi.d.ts.map +1 -1
- package/dist/desktop/projectGraphEditApi.js +13 -46
- package/dist/desktop/projectGraphEditApi.js.map +1 -1
- package/dist/desktop/reviewPipelineApi.d.ts.map +1 -1
- package/dist/desktop/reviewPipelineApi.js +28 -28
- package/dist/desktop/reviewPipelineApi.js.map +1 -1
- package/dist/desktop/runApi.d.ts.map +1 -1
- package/dist/desktop/runApi.js +4 -3
- package/dist/desktop/runApi.js.map +1 -1
- package/dist/desktop/types/bridgeTypes.d.ts +12 -4
- package/dist/desktop/types/bridgeTypes.d.ts.map +1 -1
- package/dist/desktop/types/graphTypes.d.ts +11 -0
- package/dist/desktop/types/graphTypes.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/package/manifestEdit.d.ts.map +1 -1
- package/dist/package/manifestEdit.js +112 -33
- package/dist/package/manifestEdit.js.map +1 -1
- package/dist/plangraph/adapters.d.ts +3 -0
- package/dist/plangraph/adapters.d.ts.map +1 -0
- package/dist/plangraph/adapters.js +13 -0
- package/dist/plangraph/adapters.js.map +1 -0
- package/dist/plangraph/commands.d.ts +191 -0
- package/dist/plangraph/commands.d.ts.map +1 -0
- package/dist/plangraph/commands.js +4 -0
- package/dist/plangraph/commands.js.map +1 -0
- package/dist/plangraph/domain/buildPlanGraph.d.ts +14 -0
- package/dist/plangraph/domain/buildPlanGraph.d.ts.map +1 -0
- package/dist/plangraph/domain/buildPlanGraph.js +91 -0
- package/dist/plangraph/domain/buildPlanGraph.js.map +1 -0
- package/dist/plangraph/domain/selectors.d.ts +11 -0
- package/dist/plangraph/domain/selectors.d.ts.map +1 -0
- package/dist/plangraph/domain/selectors.js +54 -0
- package/dist/plangraph/domain/selectors.js.map +1 -0
- package/dist/plangraph/domain/types.d.ts +56 -0
- package/dist/plangraph/domain/types.d.ts.map +1 -0
- package/dist/plangraph/domain/types.js +2 -0
- package/dist/plangraph/domain/types.js.map +1 -0
- package/dist/plangraph/executeCommand.d.ts +19 -0
- package/dist/plangraph/executeCommand.d.ts.map +1 -0
- package/dist/plangraph/executeCommand.js +809 -0
- package/dist/plangraph/executeCommand.js.map +1 -0
- package/dist/plangraph/hash.d.ts +4 -0
- package/dist/plangraph/hash.d.ts.map +1 -0
- package/dist/plangraph/hash.js +21 -0
- package/dist/plangraph/hash.js.map +1 -0
- package/dist/plangraph/index.d.ts +15 -0
- package/dist/plangraph/index.d.ts.map +1 -0
- package/dist/plangraph/index.js +9 -0
- package/dist/plangraph/index.js.map +1 -0
- package/dist/plangraph/packageRepository.d.ts +19 -0
- package/dist/plangraph/packageRepository.d.ts.map +1 -0
- package/dist/plangraph/packageRepository.js +114 -0
- package/dist/plangraph/packageRepository.js.map +1 -0
- package/dist/plangraph/ports.d.ts +73 -0
- package/dist/plangraph/ports.d.ts.map +1 -0
- package/dist/plangraph/ports.js +2 -0
- package/dist/plangraph/ports.js.map +1 -0
- package/dist/plangraph/projectGraphCommand.d.ts +16 -0
- package/dist/plangraph/projectGraphCommand.d.ts.map +1 -0
- package/dist/plangraph/projectGraphCommand.js +203 -0
- package/dist/plangraph/projectGraphCommand.js.map +1 -0
- package/dist/plangraph/projections/agentContextProjection.d.ts +8 -0
- package/dist/plangraph/projections/agentContextProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/agentContextProjection.js +50 -0
- package/dist/plangraph/projections/agentContextProjection.js.map +1 -0
- package/dist/plangraph/projections/canvasMapProjection.d.ts +13 -0
- package/dist/plangraph/projections/canvasMapProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/canvasMapProjection.js +40 -0
- package/dist/plangraph/projections/canvasMapProjection.js.map +1 -0
- package/dist/plangraph/projections/graphViewProjection.d.ts +16 -0
- package/dist/plangraph/projections/graphViewProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/graphViewProjection.js +125 -0
- package/dist/plangraph/projections/graphViewProjection.js.map +1 -0
- package/dist/plangraph/projections/index.d.ts +10 -0
- package/dist/plangraph/projections/index.d.ts.map +1 -0
- package/dist/plangraph/projections/index.js +6 -0
- package/dist/plangraph/projections/index.js.map +1 -0
- package/dist/plangraph/projections/reviewProjection.d.ts +25 -0
- package/dist/plangraph/projections/reviewProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/reviewProjection.js +27 -0
- package/dist/plangraph/projections/reviewProjection.js.map +1 -0
- package/dist/plangraph/projections/statisticsProjection.d.ts +15 -0
- package/dist/plangraph/projections/statisticsProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/statisticsProjection.js +113 -0
- package/dist/plangraph/projections/statisticsProjection.js.map +1 -0
- package/dist/plangraph/projections/todoProjection.d.ts +43 -0
- package/dist/plangraph/projections/todoProjection.d.ts.map +1 -0
- package/dist/plangraph/projections/todoProjection.js +97 -0
- package/dist/plangraph/projections/todoProjection.js.map +1 -0
- package/dist/plangraph/sqliteIndex.d.ts +11 -0
- package/dist/plangraph/sqliteIndex.d.ts.map +1 -0
- package/dist/plangraph/sqliteIndex.js +655 -0
- package/dist/plangraph/sqliteIndex.js.map +1 -0
- package/dist/projectGraph/canvasWorkspaceRecovery.d.ts +40 -0
- package/dist/projectGraph/canvasWorkspaceRecovery.d.ts.map +1 -0
- package/dist/projectGraph/canvasWorkspaceRecovery.js +213 -0
- package/dist/projectGraph/canvasWorkspaceRecovery.js.map +1 -0
- package/dist/taskManager/autoRun.d.ts +1 -0
- package/dist/taskManager/autoRun.d.ts.map +1 -1
- package/dist/taskManager/autoRun.js +2 -2
- package/dist/taskManager/autoRun.js.map +1 -1
- package/dist/taskManager/projectDoctor.d.ts.map +1 -1
- package/dist/taskManager/projectDoctor.js +87 -3
- package/dist/taskManager/projectDoctor.js.map +1 -1
- package/dist/taskManager/promptRenderer.d.ts.map +1 -1
- package/dist/taskManager/promptRenderer.js +10 -0
- package/dist/taskManager/promptRenderer.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { join, resolve } from "node:path";
|
|
2
1
|
import { stat } from "node:fs/promises";
|
|
3
|
-
import {
|
|
2
|
+
import { performance } from "node:perf_hooks";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
4
4
|
import { createPackageFileSnapshot } from "../../package/fileChanges.js";
|
|
5
|
+
import { resolveProjectWorkspace } from "../../project.js";
|
|
5
6
|
import { projectGraphPath } from "../../projectGraph/index.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
7
|
+
import { loadRuntime } from "../../taskManager/runtimeContext.js";
|
|
8
|
+
import { appendDesktopDiagnostic, desktopDiagnostic, errorMessage } from "./desktopDiagnostics.js";
|
|
9
|
+
import { loadProjectCanvasAggregation, runtimeSnapshotFromGraphState } from "./projectCanvasAggregation.js";
|
|
10
|
+
import { buildResultsFileIndexFromFingerprintSnapshot, sameResultsFileFingerprintSnapshot, snapshotResultsFileFingerprints } from "./resultsFileIndex.js";
|
|
11
|
+
import { buildSearchIndexForCanvas, buildSearchIndexFromCanvasIndexes } from "./searchIndexModel.js";
|
|
8
12
|
import { buildStatisticsProjectionFromIndexes } from "./statisticsIndexModel.js";
|
|
9
|
-
import {
|
|
13
|
+
import { buildCanvasExecutionSnapshot, failedCanvasExecutionSnapshot } from "./todoModel.js";
|
|
14
|
+
const desktopProjectProjectionCacheVersion = 2;
|
|
10
15
|
const projectProjectionCache = new Map();
|
|
11
16
|
function projectProjectionKey(projectRoot) {
|
|
12
17
|
return resolve(typeof projectRoot === "string" ? projectRoot : projectRoot.rootPath);
|
|
@@ -18,25 +23,6 @@ export function invalidateDesktopProjectProjection(projectRoot) {
|
|
|
18
23
|
}
|
|
19
24
|
projectProjectionCache.delete(projectProjectionKey(projectRoot));
|
|
20
25
|
}
|
|
21
|
-
async function buildDesktopProjectProjection(projectRoot) {
|
|
22
|
-
const todoContext = await loadProjectTodoContext(projectRoot);
|
|
23
|
-
const diagnostics = [...todoContext.diagnostics];
|
|
24
|
-
const resultsByCanvas = new Map();
|
|
25
|
-
for (const canvasId of todoContext.aggregation.orderedCanvasIds) {
|
|
26
|
-
const canvas = todoContext.aggregation.canvasesById.get(canvasId);
|
|
27
|
-
if (!canvas) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
const resultIndex = await buildResultsFileIndex(canvas.workspace);
|
|
31
|
-
resultsByCanvas.set(canvasId, resultIndex);
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
projectRoot,
|
|
35
|
-
todoContext,
|
|
36
|
-
resultsByCanvas,
|
|
37
|
-
diagnostics
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
26
|
async function optionalFileStatFingerprint(path) {
|
|
41
27
|
try {
|
|
42
28
|
const metadata = await stat(path);
|
|
@@ -51,11 +37,26 @@ async function optionalFileStatFingerprint(path) {
|
|
|
51
37
|
}
|
|
52
38
|
}
|
|
53
39
|
async function packageInputFingerprint(projectRoot) {
|
|
40
|
+
const snapshot = await createPackageFileSnapshot(projectRoot);
|
|
41
|
+
return {
|
|
42
|
+
manifestFile: snapshot.manifestFile,
|
|
43
|
+
promptFiles: snapshot.promptFiles
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function workspaceFingerprint(workspace) {
|
|
47
|
+
return {
|
|
48
|
+
rootPath: resolve(workspace.rootPath),
|
|
49
|
+
packageDir: resolve(workspace.packageDir),
|
|
50
|
+
stateFile: resolve(workspace.stateFile),
|
|
51
|
+
resultsDir: resolve(workspace.resultsDir)
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async function canvasRuntimeInputFingerprint(workspace) {
|
|
54
55
|
try {
|
|
55
|
-
const snapshot = await createPackageFileSnapshot(projectRoot);
|
|
56
56
|
return {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
workspace: workspaceFingerprint(workspace),
|
|
58
|
+
packageFiles: await packageInputFingerprint(workspace),
|
|
59
|
+
stateFile: await optionalFileStatFingerprint(workspace.stateFile)
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
catch {
|
|
@@ -70,24 +71,6 @@ async function buildProjectInputFingerprint(projectRoot) {
|
|
|
70
71
|
legacyCanvasRegistryFile: await optionalFileStatFingerprint(join(workspace.workspaceRoot, "desktop", "canvases.json"))
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
async function buildDesktopProjectProjectionFingerprints(projectRoot, projection) {
|
|
74
|
-
const canvases = new Map();
|
|
75
|
-
for (const canvasId of projection.todoContext.aggregation.orderedCanvasIds) {
|
|
76
|
-
const canvas = projection.todoContext.aggregation.canvasesById.get(canvasId);
|
|
77
|
-
if (!canvas) {
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
canvases.set(canvasId, {
|
|
81
|
-
packageFiles: await packageInputFingerprint(canvas.workspace),
|
|
82
|
-
stateFile: await optionalFileStatFingerprint(canvas.workspace.stateFile),
|
|
83
|
-
results: await snapshotResultsFileFingerprints(canvas.workspace)
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
project: await buildProjectInputFingerprint(projectRoot),
|
|
88
|
-
canvases
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
74
|
function sameFileStatFingerprint(left, right) {
|
|
92
75
|
return left?.path === right?.path && left?.mtimeMs === right?.mtimeMs && left?.size === right?.size;
|
|
93
76
|
}
|
|
@@ -104,9 +87,6 @@ function samePromptFileFingerprints(left, right) {
|
|
|
104
87
|
return true;
|
|
105
88
|
}
|
|
106
89
|
function samePackageInputFingerprint(left, right) {
|
|
107
|
-
if (left === null || right === null) {
|
|
108
|
-
return left === right;
|
|
109
|
-
}
|
|
110
90
|
return sameFileFingerprint(left.manifestFile, right.manifestFile) && samePromptFileFingerprints(left.promptFiles, right.promptFiles);
|
|
111
91
|
}
|
|
112
92
|
function sameProjectInputFingerprint(left, right) {
|
|
@@ -114,47 +94,235 @@ function sameProjectInputFingerprint(left, right) {
|
|
|
114
94
|
&& sameFileStatFingerprint(left.projectGraphFile, right.projectGraphFile)
|
|
115
95
|
&& sameFileStatFingerprint(left.legacyCanvasRegistryFile, right.legacyCanvasRegistryFile);
|
|
116
96
|
}
|
|
97
|
+
function sameWorkspaceFingerprint(left, right) {
|
|
98
|
+
return left.rootPath === right.rootPath
|
|
99
|
+
&& left.packageDir === right.packageDir
|
|
100
|
+
&& left.stateFile === right.stateFile
|
|
101
|
+
&& left.resultsDir === right.resultsDir;
|
|
102
|
+
}
|
|
103
|
+
function sameCanvasRuntimeInputFingerprint(left, right) {
|
|
104
|
+
return sameWorkspaceFingerprint(left.workspace, right.workspace)
|
|
105
|
+
&& samePackageInputFingerprint(left.packageFiles, right.packageFiles)
|
|
106
|
+
&& sameFileStatFingerprint(left.stateFile, right.stateFile);
|
|
107
|
+
}
|
|
108
|
+
function sameCanvasBlockerFingerprint(left, right) {
|
|
109
|
+
return left.canvasDependencies.length === right.canvasDependencies.length
|
|
110
|
+
&& left.canvasDependencies.every((dependency, index) => {
|
|
111
|
+
const next = right.canvasDependencies[index];
|
|
112
|
+
return dependency.canvasId === next?.canvasId && dependency.complete === next.complete;
|
|
113
|
+
})
|
|
114
|
+
&& left.crossTaskDependencies.length === right.crossTaskDependencies.length
|
|
115
|
+
&& left.crossTaskDependencies.every((dependency, index) => {
|
|
116
|
+
const next = right.crossTaskDependencies[index];
|
|
117
|
+
return dependency.canvasId === next?.canvasId
|
|
118
|
+
&& dependency.taskId === next.taskId
|
|
119
|
+
&& dependency.dependsOnCanvasId === next.dependsOnCanvasId
|
|
120
|
+
&& dependency.dependsOnTaskId === next.dependsOnTaskId
|
|
121
|
+
&& dependency.status === next.status;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
117
124
|
function sameCanvasProjectionFingerprint(left, right) {
|
|
118
|
-
return
|
|
119
|
-
&&
|
|
120
|
-
&&
|
|
125
|
+
return sameCanvasRuntimeInputFingerprint(left, right)
|
|
126
|
+
&& sameResultsFileFingerprintSnapshot(left.results, right.results)
|
|
127
|
+
&& sameCanvasBlockerFingerprint(left.blockers, right.blockers);
|
|
128
|
+
}
|
|
129
|
+
function slowDiagnosticThresholdMs() {
|
|
130
|
+
const raw = process.env.PLANWEAVE_DESKTOP_PROJECTION_SLOW_DIAGNOSTICS_MS;
|
|
131
|
+
if (raw === undefined || raw === "") {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
const threshold = Number(raw);
|
|
135
|
+
return Number.isFinite(threshold) && threshold >= 0 ? threshold : null;
|
|
121
136
|
}
|
|
122
|
-
async function
|
|
123
|
-
|
|
137
|
+
async function captureProjectionPart(diagnostics, label, path, action) {
|
|
138
|
+
const threshold = slowDiagnosticThresholdMs();
|
|
139
|
+
if (threshold === null) {
|
|
140
|
+
return action();
|
|
141
|
+
}
|
|
142
|
+
const startedAt = performance.now();
|
|
124
143
|
try {
|
|
125
|
-
|
|
144
|
+
return await action();
|
|
126
145
|
}
|
|
127
|
-
|
|
128
|
-
|
|
146
|
+
finally {
|
|
147
|
+
const elapsedMs = performance.now() - startedAt;
|
|
148
|
+
if (elapsedMs >= threshold) {
|
|
149
|
+
appendDesktopDiagnostic(diagnostics, desktopDiagnostic("desktop_projection_slow_part", `Desktop projection ${label} took ${Math.round(elapsedMs)} ms.`, path));
|
|
150
|
+
}
|
|
129
151
|
}
|
|
130
|
-
|
|
131
|
-
|
|
152
|
+
}
|
|
153
|
+
function canvasBlockerFingerprint(aggregation, canvasId) {
|
|
154
|
+
const canvasDependencies = (aggregation.graph.canvasDependenciesByCanvas.get(canvasId) ?? [])
|
|
155
|
+
.map((dependencyCanvasId) => ({
|
|
156
|
+
canvasId: dependencyCanvasId,
|
|
157
|
+
complete: aggregation.runtimeSnapshotsByCanvas.get(dependencyCanvasId)?.complete ?? false
|
|
158
|
+
}))
|
|
159
|
+
.sort((left, right) => left.canvasId.localeCompare(right.canvasId));
|
|
160
|
+
const taskIds = Array.from(aggregation.runtimeSnapshotsByCanvas.get(canvasId)?.taskStatusById.keys() ?? []);
|
|
161
|
+
const crossTaskDependencies = taskIds.flatMap((taskId) => aggregation.graph
|
|
162
|
+
.crossTaskDependencies({ canvasId, taskId })
|
|
163
|
+
.filter((dependency) => dependency.canvasId !== canvasId)
|
|
164
|
+
.map((dependency) => ({
|
|
165
|
+
canvasId,
|
|
166
|
+
taskId,
|
|
167
|
+
dependsOnCanvasId: dependency.canvasId,
|
|
168
|
+
dependsOnTaskId: dependency.taskId,
|
|
169
|
+
status: aggregation.runtimeSnapshotsByCanvas.get(dependency.canvasId)?.taskStatusById.get(dependency.taskId) ?? null
|
|
170
|
+
})))
|
|
171
|
+
.sort((left, right) => {
|
|
172
|
+
const leftKey = `${left.canvasId}:${left.taskId}:${left.dependsOnCanvasId}:${left.dependsOnTaskId}`;
|
|
173
|
+
const rightKey = `${right.canvasId}:${right.taskId}:${right.dependsOnCanvasId}:${right.dependsOnTaskId}`;
|
|
174
|
+
return leftKey.localeCompare(rightKey);
|
|
175
|
+
});
|
|
176
|
+
return { canvasDependencies, crossTaskDependencies };
|
|
177
|
+
}
|
|
178
|
+
async function loadCanvasRuntimeSnapshot(workspace, canvasId, cached, runtimeInputFingerprintsByCanvas, runtimesByCanvas) {
|
|
179
|
+
const currentFingerprint = await canvasRuntimeInputFingerprint(workspace);
|
|
180
|
+
runtimeInputFingerprintsByCanvas.set(canvasId, currentFingerprint);
|
|
181
|
+
const cachedEntry = cached?.canvases.get(canvasId);
|
|
182
|
+
if (currentFingerprint
|
|
183
|
+
&& cachedEntry?.version === desktopProjectProjectionCacheVersion
|
|
184
|
+
&& cachedEntry.fingerprint
|
|
185
|
+
&& sameCanvasRuntimeInputFingerprint(cachedEntry.fingerprint, currentFingerprint)) {
|
|
186
|
+
return cachedEntry.runtimeSnapshot;
|
|
132
187
|
}
|
|
133
|
-
|
|
134
|
-
|
|
188
|
+
const runtime = await loadRuntime({ projectRoot: workspace });
|
|
189
|
+
runtimesByCanvas.set(canvasId, runtime);
|
|
190
|
+
runtimeInputFingerprintsByCanvas.set(canvasId, await canvasRuntimeInputFingerprint(workspace));
|
|
191
|
+
return runtimeSnapshotFromGraphState(runtime.graph, runtime.state);
|
|
192
|
+
}
|
|
193
|
+
function cachedCanvasEntryIsReusable(cachedEntry, currentFingerprint, projectInputsChanged) {
|
|
194
|
+
return !projectInputsChanged
|
|
195
|
+
&& currentFingerprint !== null
|
|
196
|
+
&& cachedEntry?.version === desktopProjectProjectionCacheVersion
|
|
197
|
+
&& cachedEntry.fingerprint !== null
|
|
198
|
+
&& sameCanvasProjectionFingerprint(cachedEntry.fingerprint, currentFingerprint);
|
|
199
|
+
}
|
|
200
|
+
function missingRuntimeSnapshot() {
|
|
201
|
+
return {
|
|
202
|
+
taskCount: 0,
|
|
203
|
+
taskStatusById: new Map(),
|
|
204
|
+
complete: false
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function appendCanvasExecutionSnapshotDiagnostics(diagnostics, canvasId, snapshot) {
|
|
208
|
+
if (!snapshot.error) {
|
|
209
|
+
return;
|
|
135
210
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
211
|
+
appendDesktopDiagnostic(diagnostics, desktopDiagnostic("desktop_canvas_execution_snapshot_failed", errorMessage(snapshot.error), canvasId));
|
|
212
|
+
}
|
|
213
|
+
function appendProjectProjectionDiagnostic(diagnostics, diagnostic) {
|
|
214
|
+
if (diagnostic.code !== "desktop_canvas_execution_snapshot_failed") {
|
|
215
|
+
appendDesktopDiagnostic(diagnostics, diagnostic);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
for (let index = diagnostics.length - 1; index >= 0; index -= 1) {
|
|
219
|
+
const current = diagnostics[index];
|
|
220
|
+
if (current.code === diagnostic.code && current.path === diagnostic.path) {
|
|
221
|
+
diagnostics.splice(index, 1);
|
|
140
222
|
}
|
|
141
223
|
}
|
|
142
|
-
|
|
224
|
+
diagnostics.push(diagnostic);
|
|
143
225
|
}
|
|
144
|
-
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
226
|
+
async function buildCanvasCacheEntry(input) {
|
|
227
|
+
const canvas = input.aggregation.canvasesById.get(input.canvasId);
|
|
228
|
+
if (!canvas) {
|
|
229
|
+
throw new Error(`Project canvas '${input.canvasId}' is missing from aggregation.`);
|
|
230
|
+
}
|
|
231
|
+
const resultsIndex = await captureProjectionPart(input.diagnostics, "per-canvas results index", input.canvasId, () => buildResultsFileIndexFromFingerprintSnapshot(canvas.workspace, input.resultsFingerprint));
|
|
232
|
+
let snapshot;
|
|
233
|
+
try {
|
|
234
|
+
snapshot = await captureProjectionPart(input.diagnostics, "per-canvas snapshot", input.canvasId, () => buildCanvasExecutionSnapshot(input.aggregation, input.canvasId, input.runtime ?? input.cachedEntry?.snapshot.runtime ?? undefined));
|
|
149
235
|
}
|
|
150
|
-
|
|
151
|
-
|
|
236
|
+
catch (caught) {
|
|
237
|
+
appendDesktopDiagnostic(input.diagnostics, desktopDiagnostic("desktop_canvas_execution_snapshot_failed", errorMessage(caught), input.canvasId));
|
|
238
|
+
snapshot = failedCanvasExecutionSnapshot(canvas.canvas.taskCount, caught);
|
|
239
|
+
}
|
|
240
|
+
const searchIndex = await captureProjectionPart(input.diagnostics, "search index construction", input.canvasId, () => buildSearchIndexForCanvas({
|
|
241
|
+
aggregation: input.aggregation,
|
|
242
|
+
canvasId: input.canvasId,
|
|
243
|
+
snapshot,
|
|
244
|
+
resultIndex: resultsIndex
|
|
245
|
+
}));
|
|
246
|
+
return {
|
|
247
|
+
version: desktopProjectProjectionCacheVersion,
|
|
248
|
+
fingerprint: input.fingerprint,
|
|
249
|
+
runtimeSnapshot: input.aggregation.runtimeSnapshotsByCanvas.get(input.canvasId) ?? missingRuntimeSnapshot(),
|
|
250
|
+
snapshot,
|
|
251
|
+
resultsIndex,
|
|
252
|
+
searchIndex
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
async function buildDesktopProjectProjection(projectRoot, cached) {
|
|
256
|
+
const diagnostics = [];
|
|
257
|
+
const runtimeInputFingerprintsByCanvas = new Map();
|
|
258
|
+
const runtimesByCanvas = new Map();
|
|
259
|
+
const aggregation = await captureProjectionPart(diagnostics, "project aggregation", projectRoot, () => loadProjectCanvasAggregation(projectRoot, {
|
|
260
|
+
loadRuntimeSnapshot: (workspace, canvasId) => loadCanvasRuntimeSnapshot(workspace, canvasId, cached, runtimeInputFingerprintsByCanvas, runtimesByCanvas)
|
|
261
|
+
}));
|
|
262
|
+
const projectFingerprint = await buildProjectInputFingerprint(projectRoot);
|
|
263
|
+
const projectInputsChanged = !cached
|
|
264
|
+
|| cached.version !== desktopProjectProjectionCacheVersion
|
|
265
|
+
|| !sameProjectInputFingerprint(cached.projectFingerprint, projectFingerprint);
|
|
266
|
+
const canvases = new Map();
|
|
267
|
+
const snapshotsByCanvas = new Map();
|
|
268
|
+
const resultsByCanvas = new Map();
|
|
269
|
+
for (const canvasId of aggregation.orderedCanvasIds) {
|
|
270
|
+
const canvas = aggregation.canvasesById.get(canvasId);
|
|
271
|
+
if (!canvas) {
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
const runtimeInputFingerprint = runtimeInputFingerprintsByCanvas.get(canvasId) ?? await canvasRuntimeInputFingerprint(canvas.workspace);
|
|
275
|
+
const resultsFingerprint = await captureProjectionPart(diagnostics, "per-canvas results fingerprint", canvasId, () => snapshotResultsFileFingerprints(canvas.workspace));
|
|
276
|
+
const currentFingerprint = runtimeInputFingerprint
|
|
277
|
+
? {
|
|
278
|
+
...runtimeInputFingerprint,
|
|
279
|
+
results: resultsFingerprint,
|
|
280
|
+
blockers: canvasBlockerFingerprint(aggregation, canvasId)
|
|
281
|
+
}
|
|
282
|
+
: null;
|
|
283
|
+
const cachedEntry = cached?.canvases.get(canvasId);
|
|
284
|
+
const entry = cachedCanvasEntryIsReusable(cachedEntry, currentFingerprint, projectInputsChanged)
|
|
285
|
+
? cachedEntry
|
|
286
|
+
: await buildCanvasCacheEntry({
|
|
287
|
+
aggregation,
|
|
288
|
+
canvasId,
|
|
289
|
+
fingerprint: currentFingerprint,
|
|
290
|
+
resultsFingerprint,
|
|
291
|
+
cachedEntry,
|
|
292
|
+
runtime: runtimesByCanvas.get(canvasId),
|
|
293
|
+
diagnostics
|
|
294
|
+
});
|
|
295
|
+
canvases.set(canvasId, entry);
|
|
296
|
+
snapshotsByCanvas.set(canvasId, entry.snapshot);
|
|
297
|
+
resultsByCanvas.set(canvasId, entry.resultsIndex);
|
|
298
|
+
appendCanvasExecutionSnapshotDiagnostics(diagnostics, canvasId, entry.snapshot);
|
|
299
|
+
}
|
|
300
|
+
const todoContext = {
|
|
301
|
+
aggregation,
|
|
302
|
+
snapshotsByCanvas,
|
|
303
|
+
diagnostics
|
|
304
|
+
};
|
|
305
|
+
const projection = {
|
|
306
|
+
projectRoot,
|
|
307
|
+
todoContext,
|
|
308
|
+
resultsByCanvas,
|
|
309
|
+
diagnostics
|
|
310
|
+
};
|
|
311
|
+
return {
|
|
312
|
+
version: desktopProjectProjectionCacheVersion,
|
|
152
313
|
projection,
|
|
153
|
-
|
|
314
|
+
projectFingerprint,
|
|
315
|
+
canvases,
|
|
154
316
|
searchIndex: null,
|
|
155
317
|
statisticsProjection: null
|
|
156
|
-
}
|
|
157
|
-
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
export async function readDesktopProjectProjection(projectRoot) {
|
|
321
|
+
const key = projectProjectionKey(projectRoot);
|
|
322
|
+
const cached = projectProjectionCache.get(key);
|
|
323
|
+
const next = await buildDesktopProjectProjection(projectRoot, cached);
|
|
324
|
+
projectProjectionCache.set(key, next);
|
|
325
|
+
return next.projection;
|
|
158
326
|
}
|
|
159
327
|
export async function readDesktopProjectSearchIndex(projectRoot) {
|
|
160
328
|
const key = projectProjectionKey(projectRoot);
|
|
@@ -163,7 +331,13 @@ export async function readDesktopProjectSearchIndex(projectRoot) {
|
|
|
163
331
|
if (cached?.searchIndex) {
|
|
164
332
|
return cached.searchIndex;
|
|
165
333
|
}
|
|
166
|
-
const
|
|
334
|
+
const diagnostics = [...projection.diagnostics];
|
|
335
|
+
const searchIndex = await captureProjectionPart(diagnostics, "search index construction", projectRoot, async () => buildSearchIndexFromCanvasIndexes(projection.todoContext.aggregation.orderedCanvasIds
|
|
336
|
+
.map((canvasId) => cached?.canvases.get(canvasId)?.searchIndex)
|
|
337
|
+
.filter((index) => index !== undefined)));
|
|
338
|
+
for (const diagnostic of diagnostics) {
|
|
339
|
+
appendProjectProjectionDiagnostic(searchIndex.diagnostics, diagnostic);
|
|
340
|
+
}
|
|
167
341
|
if (cached) {
|
|
168
342
|
cached.searchIndex = searchIndex;
|
|
169
343
|
}
|
|
@@ -176,7 +350,11 @@ export async function readDesktopProjectStatisticsProjection(projectRoot) {
|
|
|
176
350
|
if (cached?.statisticsProjection) {
|
|
177
351
|
return cached.statisticsProjection;
|
|
178
352
|
}
|
|
179
|
-
const
|
|
353
|
+
const diagnostics = [...projection.diagnostics];
|
|
354
|
+
const statisticsProjection = await captureProjectionPart(diagnostics, "statistics projection", projectRoot, async () => buildStatisticsProjectionFromIndexes(projection.todoContext, projection.resultsByCanvas));
|
|
355
|
+
for (const diagnostic of diagnostics) {
|
|
356
|
+
appendProjectProjectionDiagnostic(statisticsProjection.diagnostics, diagnostic);
|
|
357
|
+
}
|
|
180
358
|
if (cached) {
|
|
181
359
|
cached.statisticsProjection = statisticsProjection;
|
|
182
360
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectProjectionModel.js","sourceRoot":"","sources":["../../../src/desktop/graph/projectProjectionModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projectProjectionModel.js","sourceRoot":"","sources":["../../../src/desktop/graph/projectProjectionModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readModel.d.ts","sourceRoot":"","sources":["../../../src/desktop/graph/readModel.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"readModel.d.ts","sourceRoot":"","sources":["../../../src/desktop/graph/readModel.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGvF,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAG3H,MAAM,MAAM,4BAA4B,GAAG,cAAc,GAAG;IAC1D,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAYF,wBAAsB,gCAAgC,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAG9H;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,4BAA4B,CAMhI;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqC/G;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAExG;AAED,wBAAsB,aAAa,CAAC,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhH;AAED,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAQhI;AAED,wBAAsB,cAAc,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsC/G"}
|
|
@@ -6,7 +6,8 @@ import { getExecutionStatus, renderPromptSurface } from "../../taskManager/index
|
|
|
6
6
|
import { buildExecutionStatus } from "../../taskManager/executionStatus.js";
|
|
7
7
|
import { loadRuntime } from "../../taskManager/runtimeContext.js";
|
|
8
8
|
import { listExecutorProfilesForManifest } from "../../autoRun/executors.js";
|
|
9
|
-
import {
|
|
9
|
+
import { buildPlanGraphViewProjection, loadPlanGraphPackage } from "../../plangraph/index.js";
|
|
10
|
+
import { getBlock, getTask, readOptionalFile, sortBlockRefsForTask } from "./graphHelpers.js";
|
|
10
11
|
function appendDiagnostic(diagnostics, diagnostic) {
|
|
11
12
|
if (!diagnostic) {
|
|
12
13
|
return;
|
|
@@ -28,71 +29,38 @@ export function buildDesktopGraphViewModelContext(runtime, status) {
|
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
export async function buildGraphViewModel(context) {
|
|
31
|
-
const { workspace,
|
|
32
|
-
const
|
|
32
|
+
const { workspace, status, executorOptions } = context;
|
|
33
|
+
const planGraphPackage = await loadPlanGraphPackage(workspace);
|
|
33
34
|
const dirtyPromptRefs = new Set();
|
|
34
|
-
const diagnostics = [...graph.diagnostics
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const taskPrompt = await readOptionalFile(await resolvePackagePath(workspace.packageDir, task.prompt), task.prompt);
|
|
35
|
+
const diagnostics = [...planGraphPackage.graph.diagnostics];
|
|
36
|
+
const taskPromptMarkdownById = new Map();
|
|
37
|
+
for (const task of planGraphPackage.graph.tasks.values()) {
|
|
38
|
+
const taskPrompt = await readOptionalFile(await resolvePackagePath(workspace.packageDir, task.promptRef.path), task.promptRef.path);
|
|
39
39
|
appendDiagnostic(diagnostics, taskPrompt.diagnostic);
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
const block =
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
appendDiagnostic(diagnostics, blockPrompt.diagnostic);
|
|
46
|
-
return {
|
|
47
|
-
ref,
|
|
48
|
-
blockId: parseBlockRef(ref).blockId,
|
|
49
|
-
type: block.type,
|
|
50
|
-
title: block.title,
|
|
51
|
-
status: blockStatus?.status ?? "planned",
|
|
52
|
-
executor: block.executor ?? task.executor ?? manifest.execution.defaultExecutor ?? null,
|
|
53
|
-
promptMissing: blockPrompt.missing,
|
|
54
|
-
exceptionReason: blockStatus?.reason ?? null
|
|
55
|
-
};
|
|
56
|
-
}));
|
|
57
|
-
const blockPreview = blocks.slice(0, 4);
|
|
58
|
-
const exceptions = orderedRefs
|
|
59
|
-
.map((ref) => {
|
|
60
|
-
const blockStatus = statusByBlock.get(ref);
|
|
61
|
-
if (!blockStatus) {
|
|
62
|
-
return null;
|
|
40
|
+
taskPromptMarkdownById.set(task.taskId, taskPrompt.markdown);
|
|
41
|
+
for (const blockRef of task.blockRefs) {
|
|
42
|
+
const block = planGraphPackage.graph.blocks.get(blockRef);
|
|
43
|
+
if (!block) {
|
|
44
|
+
continue;
|
|
63
45
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
.filter((item) => item !== null);
|
|
67
|
-
if ((state.tasks[taskId]?.openFeedbackCount ?? 0) > 0) {
|
|
68
|
-
exceptions.push({
|
|
69
|
-
ref: taskId,
|
|
70
|
-
source: "feedback",
|
|
71
|
-
reason: `${state.tasks[taskId].openFeedbackCount} unresolved feedback item(s).`
|
|
72
|
-
});
|
|
46
|
+
const blockPrompt = await readOptionalFile(await resolvePackagePath(workspace.packageDir, block.promptRef.path), block.promptRef.path);
|
|
47
|
+
appendDiagnostic(diagnostics, blockPrompt.diagnostic);
|
|
73
48
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
promptMissing: taskPrompt.missing,
|
|
82
|
-
promptPreview: promptPreview(taskPrompt.markdown),
|
|
83
|
-
blocks,
|
|
84
|
-
blockPreview,
|
|
85
|
-
hiddenBlockRefs: orderedRefs.slice(blockPreview.length),
|
|
86
|
-
overflowBlockCount: Math.max(0, orderedRefs.length - blockPreview.length),
|
|
87
|
-
exceptions
|
|
88
|
-
};
|
|
89
|
-
}));
|
|
49
|
+
}
|
|
50
|
+
const projection = buildPlanGraphViewProjection({
|
|
51
|
+
graph: planGraphPackage.graph,
|
|
52
|
+
runtime: context,
|
|
53
|
+
status,
|
|
54
|
+
taskPromptMarkdownById
|
|
55
|
+
});
|
|
90
56
|
return {
|
|
91
57
|
projectId: workspace.id,
|
|
92
|
-
projectTitle:
|
|
58
|
+
projectTitle: planGraphPackage.graph.project.title,
|
|
59
|
+
graphVersion: planGraphPackage.graph.graphVersion,
|
|
60
|
+
packageFingerprint: planGraphPackage.graph.packageFingerprint,
|
|
93
61
|
executorOptions,
|
|
94
|
-
tasks,
|
|
95
|
-
edges:
|
|
62
|
+
tasks: projection.tasks,
|
|
63
|
+
edges: projection.edges,
|
|
96
64
|
diagnostics,
|
|
97
65
|
dirtyPromptRefs: [...dirtyPromptRefs]
|
|
98
66
|
};
|
|
@@ -103,15 +71,18 @@ export async function getGraphViewModel(projectRoot) {
|
|
|
103
71
|
export async function getTaskDetail(projectRoot, taskId) {
|
|
104
72
|
const { workspace, manifest } = await loadPackage(projectRoot);
|
|
105
73
|
const graph = compileTaskGraph(manifest);
|
|
74
|
+
const planGraphPackage = await loadPlanGraphPackage(workspace);
|
|
106
75
|
const task = getTask(graph, taskId);
|
|
107
76
|
const status = await getExecutionStatus({ projectRoot });
|
|
108
77
|
const prompt = await readOptionalFile(await resolvePackagePath(workspace.packageDir, task.prompt), task.prompt);
|
|
109
78
|
return {
|
|
110
79
|
taskId,
|
|
80
|
+
graphVersion: planGraphPackage.graph.graphVersion,
|
|
111
81
|
title: task.title,
|
|
112
82
|
status: status.tasks.find((item) => item.taskId === taskId)?.status ?? "planned",
|
|
113
83
|
executor: task.executor ?? null,
|
|
114
84
|
promptMarkdown: prompt.markdown,
|
|
85
|
+
promptHash: planGraphPackage.graph.tasks.get(taskId)?.promptRef.contentHash ?? "",
|
|
115
86
|
promptMissing: prompt.missing,
|
|
116
87
|
acceptance: task.acceptance,
|
|
117
88
|
blockOrder: sortBlockRefsForTask(graph, taskId)
|
|
@@ -129,6 +100,7 @@ export async function getTaskExecutionOrder(projectRoot, taskId) {
|
|
|
129
100
|
export async function getBlockDetail(projectRoot, ref) {
|
|
130
101
|
const { workspace, manifest } = await loadPackage(projectRoot);
|
|
131
102
|
const graph = compileTaskGraph(manifest);
|
|
103
|
+
const planGraphPackage = await loadPlanGraphPackage(workspace);
|
|
132
104
|
const { taskId, blockId } = parseBlockRef(ref);
|
|
133
105
|
const task = getTask(graph, taskId);
|
|
134
106
|
const block = getBlock(graph, ref);
|
|
@@ -143,6 +115,7 @@ export async function getBlockDetail(projectRoot, ref) {
|
|
|
143
115
|
});
|
|
144
116
|
return {
|
|
145
117
|
ref,
|
|
118
|
+
graphVersion: planGraphPackage.graph.graphVersion,
|
|
146
119
|
taskId,
|
|
147
120
|
blockId,
|
|
148
121
|
type: block.type,
|
|
@@ -151,6 +124,7 @@ export async function getBlockDetail(projectRoot, ref) {
|
|
|
151
124
|
executor: block.executor ?? null,
|
|
152
125
|
effectiveExecutor: block.executor ?? task.executor ?? manifest.execution.defaultExecutor ?? null,
|
|
153
126
|
promptMarkdown: prompt.markdown,
|
|
127
|
+
promptHash: planGraphPackage.graph.blocks.get(ref)?.promptRef.contentHash ?? "",
|
|
154
128
|
promptMissing: prompt.missing,
|
|
155
129
|
promptSurfaceMarkdown: promptSurface.markdown,
|
|
156
130
|
promptSources: promptSurface.sources,
|