@flyingrobots/graft 0.9.0 → 0.10.0
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/CHANGELOG.md +54 -0
- package/README.md +23 -15
- package/dist/adapters/colorful-cli-prose-projector.d.ts +13 -0
- package/dist/adapters/colorful-cli-prose-projector.d.ts.map +1 -0
- package/dist/adapters/colorful-cli-prose-projector.js +89 -0
- package/dist/adapters/colorful-cli-prose-projector.js.map +1 -0
- package/dist/adapters/node-process-runner.d.ts.map +1 -1
- package/dist/adapters/node-process-runner.js +1 -0
- package/dist/adapters/node-process-runner.js.map +1 -1
- package/dist/api/index.d.ts +7 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +14 -3
- package/dist/api/index.js.map +1 -1
- package/dist/contracts/output-schema-fragments.d.ts +21 -0
- package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
- package/dist/contracts/output-schema-fragments.js +11 -0
- package/dist/contracts/output-schema-fragments.js.map +1 -1
- package/dist/contracts/output-schema-mcp.d.ts +7 -0
- package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
- package/dist/contracts/output-schemas.d.ts.map +1 -1
- package/dist/contracts/output-schemas.js +11 -0
- package/dist/contracts/output-schemas.js.map +1 -1
- package/dist/echo/structural-reading-generated-model.d.ts +18 -0
- package/dist/echo/structural-reading-generated-model.d.ts.map +1 -0
- package/dist/echo/structural-reading-generated-model.js +324 -0
- package/dist/echo/structural-reading-generated-model.js.map +1 -0
- package/dist/generated/graft-structural-history.codec.generated.d.ts +1 -1
- package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -1
- package/dist/generated/graft-structural-history.codec.generated.js +4 -0
- package/dist/generated/graft-structural-history.codec.generated.js.map +1 -1
- package/dist/generated/graft-structural-history.d.ts +1 -1
- package/dist/generated/graft-structural-history.d.ts.map +1 -1
- package/dist/mcp/control-plane/types.d.ts +8 -0
- package/dist/mcp/control-plane/types.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.d.ts +2 -1
- package/dist/mcp/daemon-control-plane.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.js +49 -0
- package/dist/mcp/daemon-control-plane.js.map +1 -1
- package/dist/mcp/repo-workspace.d.ts +1 -1
- package/dist/mcp/repo-workspace.d.ts.map +1 -1
- package/dist/mcp/repo-workspace.js +5 -0
- package/dist/mcp/repo-workspace.js.map +1 -1
- package/dist/mcp/tools/changed-since.d.ts.map +1 -1
- package/dist/mcp/tools/changed-since.js +24 -10
- package/dist/mcp/tools/changed-since.js.map +1 -1
- package/dist/mcp/tools/file-outline.d.ts.map +1 -1
- package/dist/mcp/tools/file-outline.js +10 -5
- package/dist/mcp/tools/file-outline.js.map +1 -1
- package/dist/mcp/workspace-registry.d.ts +83 -0
- package/dist/mcp/workspace-registry.d.ts.map +1 -0
- package/dist/mcp/workspace-registry.js +542 -0
- package/dist/mcp/workspace-registry.js.map +1 -0
- package/dist/operations/colorful-prose-projection.d.ts +32 -0
- package/dist/operations/colorful-prose-projection.d.ts.map +1 -0
- package/dist/operations/colorful-prose-projection.js +344 -0
- package/dist/operations/colorful-prose-projection.js.map +1 -0
- package/dist/operations/file-outline.d.ts +10 -0
- package/dist/operations/file-outline.d.ts.map +1 -1
- package/dist/operations/file-outline.js +29 -3
- package/dist/operations/file-outline.js.map +1 -1
- package/dist/operations/repo-workspace.d.ts +4 -0
- package/dist/operations/repo-workspace.d.ts.map +1 -1
- package/dist/operations/repo-workspace.js +57 -21
- package/dist/operations/repo-workspace.js.map +1 -1
- package/dist/operations/safe-read.d.ts +2 -0
- package/dist/operations/safe-read.d.ts.map +1 -1
- package/dist/operations/safe-read.js +20 -0
- package/dist/operations/safe-read.js.map +1 -1
- package/dist/operations/structured-buffer-model.d.ts +19 -15
- package/dist/operations/structured-buffer-model.d.ts.map +1 -1
- package/dist/operations/structured-buffer-model.js +6 -4
- package/dist/operations/structured-buffer-model.js.map +1 -1
- package/dist/operations/structured-buffer-query.d.ts.map +1 -1
- package/dist/operations/structured-buffer-query.js +64 -1
- package/dist/operations/structured-buffer-query.js.map +1 -1
- package/dist/operations/structured-buffer.d.ts +3 -1
- package/dist/operations/structured-buffer.d.ts.map +1 -1
- package/dist/operations/structured-buffer.js.map +1 -1
- package/dist/parser/types.d.ts +1 -1
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/types.js.map +1 -1
- package/dist/ports/process-runner.d.ts +1 -0
- package/dist/ports/process-runner.d.ts.map +1 -1
- package/dist/ports/structural-history.d.ts +23 -0
- package/dist/ports/structural-history.d.ts.map +1 -0
- package/dist/ports/structural-history.js +22 -0
- package/dist/ports/structural-history.js.map +1 -0
- package/dist/warp/structural-reading-adapter.d.ts.map +1 -1
- package/dist/warp/structural-reading-adapter.js +5 -1
- package/dist/warp/structural-reading-adapter.js.map +1 -1
- package/package.json +5 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ZERO_SCHEDULER_COUNTS } from "./daemon-job-scheduler.js";
|
|
2
|
+
import { observeGitWorkspace } from "./workspace-registry.js";
|
|
2
3
|
import { DEFAULT_DAEMON_CAPABILITY_PROFILE, resolveWorkspaceRequest, } from "./workspace-router.js";
|
|
3
4
|
import { buildStatePath, capabilityProfilesEqual, cloneAuthorizedWorkspaceRecord, cloneCapabilityProfile, loadPersistedState, persistState, resolveCapabilityProfile, sortByWorktreeRoot, } from "./control-plane/authz-storage.js";
|
|
4
5
|
import { readRuntimeCausalContext, readWorkspaceStatus, resolveSharedAttachSource, toDaemonSessionView, } from "./control-plane/session-registry.js";
|
|
@@ -6,6 +7,7 @@ import { buildStatusView, toAuthorizedWorkspaceView, ZERO_MONITOR_COUNTS, } from
|
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
7
8
|
// DaemonControlPlane
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
10
|
+
const REMOTE_LIST_MAX_BUFFER_BYTES = 64 * 1024;
|
|
9
11
|
export class DaemonControlPlane {
|
|
10
12
|
options;
|
|
11
13
|
statePath;
|
|
@@ -68,10 +70,12 @@ export class DaemonControlPlane {
|
|
|
68
70
|
|| !capabilityProfilesEqual(current.capabilityProfile, next.capabilityProfile);
|
|
69
71
|
this.authorizedWorkspaces.set(next.worktreeId, next);
|
|
70
72
|
await this.persist();
|
|
73
|
+
const registryObservation = await this.observeAuthorizedWorkspace(next);
|
|
71
74
|
return {
|
|
72
75
|
ok: true,
|
|
73
76
|
changed,
|
|
74
77
|
authorization: toAuthorizedWorkspaceView(next, this.activeTransportsFor(next.worktreeId)),
|
|
78
|
+
registryObservation,
|
|
75
79
|
};
|
|
76
80
|
}
|
|
77
81
|
async revokeWorkspace(request) {
|
|
@@ -193,8 +197,53 @@ export class DaemonControlPlane {
|
|
|
193
197
|
async persist() {
|
|
194
198
|
await persistState(this.statePath, this.options.fs, this.options.codec, this.authorizedWorkspaces);
|
|
195
199
|
}
|
|
200
|
+
async observeAuthorizedWorkspace(record) {
|
|
201
|
+
try {
|
|
202
|
+
await observeGitWorkspace({
|
|
203
|
+
graftDir: this.options.graftDir,
|
|
204
|
+
canonicalRoot: record.worktreeRoot,
|
|
205
|
+
gitCommonDir: record.gitCommonDir,
|
|
206
|
+
remotes: await readGitRemotes(this.options.git, record.worktreeRoot),
|
|
207
|
+
});
|
|
208
|
+
return { ok: true };
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
return {
|
|
212
|
+
ok: false,
|
|
213
|
+
code: "REGISTRY_OBSERVATION_UNAVAILABLE",
|
|
214
|
+
message: error instanceof Error ? error.message : String(error),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
196
218
|
activeTransportsFor(worktreeId) {
|
|
197
219
|
return this.listTransports().filter((session) => session.worktreeId === worktreeId).length;
|
|
198
220
|
}
|
|
199
221
|
}
|
|
222
|
+
async function readGitRemotes(git, cwd) {
|
|
223
|
+
const result = await git.run({
|
|
224
|
+
cwd,
|
|
225
|
+
args: ["remote", "-v"],
|
|
226
|
+
maxBufferBytes: REMOTE_LIST_MAX_BUFFER_BYTES,
|
|
227
|
+
});
|
|
228
|
+
if (result.error !== undefined || result.status !== 0) {
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
const remotes = new Set();
|
|
232
|
+
for (const line of result.stdout.split(/\r?\n/u)) {
|
|
233
|
+
const remoteUrl = parseGitRemoteListingUrl(line);
|
|
234
|
+
if (remoteUrl !== undefined && remoteUrl.length > 0) {
|
|
235
|
+
remotes.add(remoteUrl);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return [...remotes].sort();
|
|
239
|
+
}
|
|
240
|
+
function parseGitRemoteListingUrl(line) {
|
|
241
|
+
const tabIndex = line.indexOf("\t");
|
|
242
|
+
const payload = tabIndex >= 0
|
|
243
|
+
? line.slice(tabIndex + 1)
|
|
244
|
+
: line.trim().replace(/^\S+\s+/u, "");
|
|
245
|
+
const marker = /^(.*)\s+\((?:fetch|push)\)$/u.exec(payload);
|
|
246
|
+
const remoteUrl = (marker?.[1] ?? payload).trim();
|
|
247
|
+
return remoteUrl.length > 0 ? remoteUrl : undefined;
|
|
248
|
+
}
|
|
200
249
|
//# sourceMappingURL=daemon-control-plane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-control-plane.js","sourceRoot":"","sources":["../../src/mcp/daemon-control-plane.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon-control-plane.js","sourceRoot":"","sources":["../../src/mcp/daemon-control-plane.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RepoWorkspace } from "../operations/repo-workspace.js";
|
|
2
2
|
import type { ToolContext } from "./context.js";
|
|
3
|
-
export declare function createRepoWorkspaceFromToolContext(ctx: Pick<ToolContext, "projectRoot" | "fs" | "codec" | "graftignorePatterns" | "resolvePath" | "governor" | "cache">): RepoWorkspace;
|
|
3
|
+
export declare function createRepoWorkspaceFromToolContext(ctx: Pick<ToolContext, "projectRoot" | "fs" | "codec" | "graftignorePatterns" | "resolvePath" | "governor" | "cache" | "process">): RepoWorkspace;
|
|
4
4
|
//# sourceMappingURL=repo-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/mcp/repo-workspace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/mcp/repo-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,IAAI,CACP,WAAW,EACX,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,qBAAqB,GAAG,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAC1G,GACA,aAAa,CAef"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toRepoPolicyPath } from "../adapters/repo-paths.js";
|
|
2
|
+
import { createColorfulCliProseProjector } from "../adapters/colorful-cli-prose-projector.js";
|
|
2
3
|
import { RepoWorkspace } from "../operations/repo-workspace.js";
|
|
3
4
|
export function createRepoWorkspaceFromToolContext(ctx) {
|
|
4
5
|
return new RepoWorkspace({
|
|
@@ -10,6 +11,10 @@ export function createRepoWorkspaceFromToolContext(ctx) {
|
|
|
10
11
|
toPolicyPath: (resolvedPath) => toRepoPolicyPath(ctx.projectRoot, resolvedPath),
|
|
11
12
|
governor: ctx.governor,
|
|
12
13
|
cache: ctx.cache,
|
|
14
|
+
proseProjector: createColorfulCliProseProjector({
|
|
15
|
+
processRunner: ctx.process,
|
|
16
|
+
cwd: ctx.projectRoot,
|
|
17
|
+
}),
|
|
13
18
|
});
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=repo-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/mcp/repo-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,MAAM,UAAU,kCAAkC,CAChD,GAGC;IAED,OAAO,IAAI,aAAa,CAAC;QACvB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;QAC/E,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/mcp/repo-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE,MAAM,UAAU,kCAAkC,CAChD,GAGC;IAED,OAAO,IAAI,aAAa,CAAC;QACvB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;QAC5C,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;QAC/E,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,cAAc,EAAE,+BAA+B,CAAC;YAC9C,aAAa,EAAE,GAAG,CAAC,OAAO;YAC1B,GAAG,EAAE,GAAG,CAAC,WAAW;SACrB,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-since.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"changed-since.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,gBAAgB,EAAE,cAiF9B,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { createColorfulCliProseProjector } from "../../adapters/colorful-cli-prose-projector.js";
|
|
2
3
|
import { RefusedResult } from "../../policy/types.js";
|
|
3
4
|
import { detectStructuredFormat } from "../../parser/lang.js";
|
|
4
|
-
import { extractOutlineForFileAsync } from "../../parser/outline.js";
|
|
5
5
|
import { diffOutlines } from "../../parser/diff.js";
|
|
6
|
+
import { extractOutlineProjectionForContent } from "../../operations/file-outline.js";
|
|
6
7
|
import { hashContent } from "../cache.js";
|
|
7
8
|
import { evaluateMcpPolicy } from "../policy.js";
|
|
8
9
|
export const changedSinceTool = {
|
|
@@ -33,29 +34,42 @@ export const changedSinceTool = {
|
|
|
33
34
|
if (policy instanceof RefusedResult) {
|
|
34
35
|
return ctx.respond("changed_since", { status: "refused", reason: policy.reason });
|
|
35
36
|
}
|
|
36
|
-
if (detectStructuredFormat(filePath) === null) {
|
|
37
|
-
return ctx.respond("changed_since", {
|
|
38
|
-
status: "unsupported",
|
|
39
|
-
reason: "UNSUPPORTED_LANGUAGE",
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
37
|
const cacheResult = ctx.cache.check(filePath, rawContent);
|
|
43
38
|
if (cacheResult.hit) {
|
|
44
39
|
return ctx.respond("changed_since", { status: "unchanged" });
|
|
45
40
|
}
|
|
46
41
|
if (cacheResult.stale === null) {
|
|
42
|
+
if (detectStructuredFormat(filePath) === null) {
|
|
43
|
+
const outline = await extractOutlineProjectionForContent(filePath, rawContent, {
|
|
44
|
+
proseProjector: createColorfulCliProseProjector({
|
|
45
|
+
processRunner: ctx.process,
|
|
46
|
+
cwd: ctx.projectRoot,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
if (outline === null) {
|
|
50
|
+
return ctx.respond("changed_since", {
|
|
51
|
+
status: "unsupported",
|
|
52
|
+
reason: "UNSUPPORTED_LANGUAGE",
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
47
56
|
return ctx.respond("changed_since", { status: "no_previous_observation" });
|
|
48
57
|
}
|
|
49
|
-
const newOutlineResult = await
|
|
58
|
+
const newOutlineResult = await extractOutlineProjectionForContent(filePath, rawContent, {
|
|
59
|
+
proseProjector: createColorfulCliProseProjector({
|
|
60
|
+
processRunner: ctx.process,
|
|
61
|
+
cwd: ctx.projectRoot,
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
50
64
|
if (newOutlineResult === null) {
|
|
51
65
|
return ctx.respond("changed_since", {
|
|
52
66
|
status: "unsupported",
|
|
53
67
|
reason: "UNSUPPORTED_LANGUAGE",
|
|
54
68
|
});
|
|
55
69
|
}
|
|
56
|
-
const diff = diffOutlines(cacheResult.stale.outline, newOutlineResult.
|
|
70
|
+
const diff = diffOutlines(cacheResult.stale.outline, newOutlineResult.outline);
|
|
57
71
|
if (consume) {
|
|
58
|
-
ctx.cache.record(filePath, hashContent(rawContent), newOutlineResult.
|
|
72
|
+
ctx.cache.record(filePath, hashContent(rawContent), newOutlineResult.outline, newOutlineResult.jumpTable, actual);
|
|
59
73
|
}
|
|
60
74
|
return ctx.respond("changed_since", { diff, consumed: consume });
|
|
61
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changed-since.js","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"changed-since.js","sourceRoot":"","sources":["../../../src/mcp/tools/changed-since.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-outline.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/file-outline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"file-outline.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/file-outline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,eAAe,EAAE,cA+D7B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { createColorfulCliProseProjector } from "../../adapters/colorful-cli-prose-projector.js";
|
|
2
3
|
import { fileOutline } from "../../operations/file-outline.js";
|
|
3
|
-
import { detectStructuredFormat } from "../../parser/lang.js";
|
|
4
4
|
import { hashContent } from "../cache.js";
|
|
5
5
|
import { toJsonObject } from "../../operations/result-dto.js";
|
|
6
6
|
export const fileOutlineTool = {
|
|
@@ -22,8 +22,7 @@ export const fileOutlineTool = {
|
|
|
22
22
|
catch {
|
|
23
23
|
// proceed to fileOutline for error handling
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
if (rawContent !== null && outlineSupported) {
|
|
25
|
+
if (rawContent !== null) {
|
|
27
26
|
const cacheResult = ctx.cache.check(filePath, rawContent);
|
|
28
27
|
if (cacheResult.hit) {
|
|
29
28
|
cacheResult.obs.touch(ctx.cache.now());
|
|
@@ -40,11 +39,17 @@ export const fileOutlineTool = {
|
|
|
40
39
|
}
|
|
41
40
|
// If stale, fall through to fresh parse (no diff for file_outline)
|
|
42
41
|
}
|
|
43
|
-
const result = await fileOutline(filePath, {
|
|
42
|
+
const result = await fileOutline(filePath, {
|
|
43
|
+
fs: ctx.fs,
|
|
44
|
+
proseProjector: createColorfulCliProseProjector({
|
|
45
|
+
processRunner: ctx.process,
|
|
46
|
+
cwd: ctx.projectRoot,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
44
49
|
ctx.metrics.recordOutline();
|
|
45
50
|
ctx.recordFootprint({ symbols: result.outline.map((e) => e.name) });
|
|
46
51
|
// Record observation
|
|
47
|
-
if (rawContent !== null &&
|
|
52
|
+
if (rawContent !== null && result.reason !== "UNSUPPORTED_LANGUAGE") {
|
|
48
53
|
ctx.cache.record(filePath, hashContent(rawContent), result.outline, result.jumpTable, { lines: rawContent.split("\n").length, bytes: Buffer.byteLength(rawContent) });
|
|
49
54
|
}
|
|
50
55
|
return ctx.respond("file_outline", toJsonObject(result));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-outline.js","sourceRoot":"","sources":["../../../src/mcp/tools/file-outline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"file-outline.js","sourceRoot":"","sources":["../../../src/mcp/tools/file-outline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export type WorkspaceRegistryKind = "git" | "directory";
|
|
2
|
+
export type IncarnationStatus = "confirmed" | "suspect" | "replaced" | "unknown";
|
|
3
|
+
export interface WorkspaceIdentityInput {
|
|
4
|
+
readonly installationId: string;
|
|
5
|
+
readonly platformNamespace: string;
|
|
6
|
+
readonly volumeNamespace: string;
|
|
7
|
+
readonly workspaceKind: WorkspaceRegistryKind;
|
|
8
|
+
readonly canonicalIdentityComponents: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export interface WorkspaceRegistryPaths {
|
|
11
|
+
readonly graftDir: string;
|
|
12
|
+
readonly workspaceDir: string;
|
|
13
|
+
readonly metadataPath: string;
|
|
14
|
+
readonly incarnationsDir: string;
|
|
15
|
+
readonly incarnationDir: string;
|
|
16
|
+
readonly incarnationMetadataPath: string;
|
|
17
|
+
readonly incarnationCacheDir: string;
|
|
18
|
+
}
|
|
19
|
+
export interface WorkspaceRegistryRetention {
|
|
20
|
+
readonly cachePolicy: "derived-content";
|
|
21
|
+
readonly workspaceBudgetBytes: number;
|
|
22
|
+
readonly ttlDays: number;
|
|
23
|
+
}
|
|
24
|
+
export interface WorkspaceRegistryStorage {
|
|
25
|
+
readonly registry: "graft-managed";
|
|
26
|
+
readonly cache: "graft-managed";
|
|
27
|
+
}
|
|
28
|
+
export interface WorkspaceMetadataRecord {
|
|
29
|
+
readonly schemaVersion: 1;
|
|
30
|
+
readonly workspaceId: string;
|
|
31
|
+
readonly displayName: string;
|
|
32
|
+
readonly canonicalRoot: string;
|
|
33
|
+
readonly gitCommonDir: string;
|
|
34
|
+
readonly sanitizedRemotes: readonly string[];
|
|
35
|
+
readonly incarnationId: string;
|
|
36
|
+
readonly historyBindingIds: readonly string[];
|
|
37
|
+
readonly storage: WorkspaceRegistryStorage;
|
|
38
|
+
readonly createdAt: string;
|
|
39
|
+
readonly lastObservedAt: string;
|
|
40
|
+
readonly retention: WorkspaceRegistryRetention;
|
|
41
|
+
}
|
|
42
|
+
export interface IncarnationMetadataRecord {
|
|
43
|
+
readonly schemaVersion: 1;
|
|
44
|
+
readonly workspaceId: string;
|
|
45
|
+
readonly incarnationId: string;
|
|
46
|
+
readonly incarnationStatus: IncarnationStatus;
|
|
47
|
+
readonly createdAt: string;
|
|
48
|
+
readonly lastObservedAt: string;
|
|
49
|
+
readonly evidence: {
|
|
50
|
+
readonly kind: "git";
|
|
51
|
+
readonly canonicalRoot: string;
|
|
52
|
+
readonly gitCommonDir: string;
|
|
53
|
+
readonly repositoryFingerprint?: string | undefined;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface ObserveGitWorkspaceInput {
|
|
57
|
+
readonly graftDir: string;
|
|
58
|
+
readonly canonicalRoot: string;
|
|
59
|
+
readonly gitCommonDir: string;
|
|
60
|
+
readonly remotes?: readonly string[] | undefined;
|
|
61
|
+
readonly installationId?: string | undefined;
|
|
62
|
+
readonly platformNamespace?: string | undefined;
|
|
63
|
+
readonly volumeNamespace?: string | undefined;
|
|
64
|
+
readonly now?: (() => string) | undefined;
|
|
65
|
+
readonly randomBytes?: ((size: number) => Buffer) | undefined;
|
|
66
|
+
readonly repositoryFingerprint?: string | undefined;
|
|
67
|
+
}
|
|
68
|
+
export interface ObservedWorkspaceRecord {
|
|
69
|
+
readonly workspaceId: string;
|
|
70
|
+
readonly incarnationId: string;
|
|
71
|
+
readonly metadata: WorkspaceMetadataRecord;
|
|
72
|
+
readonly paths: WorkspaceRegistryPaths;
|
|
73
|
+
}
|
|
74
|
+
export declare function deriveWorkspaceId(input: WorkspaceIdentityInput): string;
|
|
75
|
+
export declare function registryPaths(graftDir: string, workspaceId: string, incarnationId: string): WorkspaceRegistryPaths;
|
|
76
|
+
export declare function sanitizeRemoteUrl(remote: string): string;
|
|
77
|
+
export declare function loadOrCreateInstallationId(input: {
|
|
78
|
+
readonly graftDir: string;
|
|
79
|
+
readonly now?: (() => string) | undefined;
|
|
80
|
+
readonly randomBytes?: ((size: number) => Buffer) | undefined;
|
|
81
|
+
}): Promise<string>;
|
|
82
|
+
export declare function observeGitWorkspace(input: ObserveGitWorkspaceInput): Promise<ObservedWorkspaceRecord>;
|
|
83
|
+
//# sourceMappingURL=workspace-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-registry.d.ts","sourceRoot":"","sources":["../../src/mcp/workspace-registry.ts"],"names":[],"mappings":"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"}
|