omp-fabric 1.1.0 → 1.2.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 +20 -0
- package/README.md +1 -0
- package/dist/agents/handoff.d.ts +1 -1
- package/dist/agents/handoff.d.ts.map +1 -1
- package/dist/agents/types.d.ts +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/chunks/{chunk-TLSJXU4F.js → chunk-5YGOVBOZ.js} +179 -10
- package/dist/chunks/chunk-5YGOVBOZ.js.map +7 -0
- package/dist/chunks/{chunk-CVLO4GNW.js → chunk-EQNNENN6.js} +3 -3
- package/dist/chunks/{chunk-YPYVUGON.js → chunk-JOWMM3EX.js} +6 -6
- package/dist/chunks/chunk-JOWMM3EX.js.map +7 -0
- package/dist/chunks/{chunk-L2FNMIOW.js → chunk-QNRGTJGE.js} +2 -1
- package/dist/chunks/chunk-QNRGTJGE.js.map +7 -0
- package/dist/chunks/{chunk-WXZP5VWP.js → chunk-TQL7FKMG.js} +3 -3
- package/dist/chunks/{chunk-Z6HEQPXX.js → chunk-WGFHMECI.js} +47 -1
- package/dist/chunks/{chunk-Z6HEQPXX.js.map → chunk-WGFHMECI.js.map} +2 -2
- package/dist/chunks/{chunk-EZPERYEG.js → chunk-XRJYPNTI.js} +56 -2
- package/dist/chunks/chunk-XRJYPNTI.js.map +7 -0
- package/dist/chunks/{chunk-KIREBD2V.js → chunk-ZP3S74LW.js} +2 -1
- package/dist/codemap/budget.d.ts +3 -0
- package/dist/codemap/budget.d.ts.map +1 -0
- package/dist/codemap/cascade.d.ts +3 -0
- package/dist/codemap/cascade.d.ts.map +1 -0
- package/dist/codemap/symbols.d.ts +3 -0
- package/dist/codemap/symbols.d.ts.map +1 -0
- package/dist/codemap/types.d.ts +58 -0
- package/dist/codemap/types.d.ts.map +1 -0
- package/dist/compaction/hook.js +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/core/system-guidance.d.ts.map +1 -1
- package/dist/fabric-runtime-state.d.ts.map +1 -1
- package/dist/fabric-runtime-state.js +1605 -344
- package/dist/fabric-runtime-state.js.map +4 -4
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/prewalk/handoff.d.ts +2 -1
- package/dist/prewalk/handoff.d.ts.map +1 -1
- package/dist/prewalk/retirement.d.ts +35 -0
- package/dist/prewalk/retirement.d.ts.map +1 -0
- package/dist/providers/codemap-provider.d.ts +14 -0
- package/dist/providers/codemap-provider.d.ts.map +1 -0
- package/dist/residency/host.js +5 -5
- package/dist/residency/omp-entry.js +5 -5
- package/dist/runtime/core-override-guest-types.js +1 -1
- package/dist/runtime/guest-types.d.ts +1 -1
- package/dist/runtime/guest-types.d.ts.map +1 -1
- package/dist/runtime/guest-types.js +1 -1
- package/dist/runtime/node-process-runtime.js +1 -1
- package/dist/runtime/quickjs-runtime.d.ts +1 -1
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
- package/dist/runtime/quickjs-runtime.js +1 -1
- package/dist/ui/settings.d.ts.map +1 -1
- package/dist/ui/settings.js +90 -1
- package/dist/ui/settings.js.map +2 -2
- package/docs/architecture.md +1 -1
- package/docs/codemap.md +89 -0
- package/docs/configuration.md +1 -1
- package/package.json +4 -1
- package/dist/chunks/chunk-EZPERYEG.js.map +0 -7
- package/dist/chunks/chunk-L2FNMIOW.js.map +0 -7
- package/dist/chunks/chunk-TLSJXU4F.js.map +0 -7
- package/dist/chunks/chunk-YPYVUGON.js.map +0 -7
- /package/dist/chunks/{chunk-CVLO4GNW.js.map → chunk-EQNNENN6.js.map} +0 -0
- /package/dist/chunks/{chunk-WXZP5VWP.js.map → chunk-TQL7FKMG.js.map} +0 -0
- /package/dist/chunks/{chunk-KIREBD2V.js.map → chunk-ZP3S74LW.js.map} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **Code map (`codemap.map`).** A repo-wide symbol index disclosed under an explicit token budget. It is built from the host's native ast-grep binding with `$NAME` metavariable capture, so it needs no extra dependency, and it emits `<line> <letter> <name>` under a bare file header with a one-line legend. Measured on this repository at the tag, 293 TypeScript files and 3,412,131 raw bytes: the map is 210,675 bytes, a 16.20x compression, against 313,626 bytes and 10.88x for the `ast-grep outline` CLI. Languages with no pattern entry fall back to filtered `summarizeCode`, so coverage extends past the pattern table. Reproduce with `bun run benchmark:codemap`, which fails below a 15x floor.
|
|
8
|
+
- **Co-change ranking (`codemap.cascade`).** Ranks files by how often they changed in the same commits as a seed, scored as `shared / sqrt(seedCommits * candidateCommits)`. Raw counting would put lockfiles and changelogs first; the normalisation removes that bias. Merge commits and commits touching more than 100 files are excluded so vendored sweeps and formatter runs invent no affinity. A non-git workspace returns an empty graph with `unavailable` set and never throws. This answers which files a change drags along, which `grep`, `ast_grep`, and `lsp` cannot.
|
|
9
|
+
- **Budget spending that ranks before it spends.** `focus` scores files by query relevance, `seeds` folds in co-change affinity so a historically related file surfaces even when its name shares nothing with the query, and with neither the order is deterministic. Exported symbols win the last slots inside a file that does not fit whole. `omittedFiles` and `omittedSymbols` report exactly what was left out.
|
|
10
|
+
- **`prewalk.handoffRetirement`.** When an executor handoff goes live, the planner's stale successful `read`, `grep`, `find`, and `ls` results are replaced with a compact marker naming the tool, the target, and the original size, so the executor does not re-ingest exploration it will not use. Failed results, mutating tools, user messages, results carrying images, and the most recent `prewalk.handoffRetirementKeep` reads are never touched. The marker stamps OMP's existing `prunedAt` field, which makes retirement idempotent.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- The symbol index enumerated gitignored files. Indexing this repository at its root found 3,425 files, most of them gitignored benchmark checkouts; it now uses `git ls-files --cached --others --exclude-standard` and finds 542, falling back to a filesystem walk outside a git repository.
|
|
15
|
+
- A scoped `codemap.map` scanned the whole workspace anyway. The caller's glob filtered results after the native pass, so it narrowed nothing; the scan is now rooted at the common directory of the selected files. Indexing `src/codemap/**/*.ts` on this repository went from 3,553 ms to 54 ms.
|
|
16
|
+
- The six new numeric settings rows carried no editor, so they rendered as editable and did nothing on Enter. Each now opens an integer editor bounded to the range `normalizeFabricConfig` enforces.
|
|
17
|
+
|
|
18
|
+
### Notes
|
|
19
|
+
|
|
20
|
+
- `handoffRetirement` applies to the trajectory handoff, where Fabric materializes the executor's session. The in-place path leaves OMP's own append-only log as ground truth, which an extension cannot rewrite; `prewalk.compactOnReturn` remains the mechanism there.
|
|
21
|
+
- Retirement reaches file-backed sessions on every thinking-transfer policy. A first cut honoured the pruned branch only when planner and executor shared a provider; every cross-provider handoff, which is the ordinary case, re-read the unpruned branch from disk and discarded the pruning while still reporting the bytes it claimed to save. `tests/prewalk-handoff-seam.test.ts` drives the real `writeHandoffSession` across all three policies, and the two cross-provider cases fail without the fix.
|
|
22
|
+
|
|
3
23
|
## 1.1.0
|
|
4
24
|
|
|
5
25
|
### Added
|
package/README.md
CHANGED
|
@@ -130,6 +130,7 @@ See the [interface & commands reference](docs/interface.md) for every view, keyb
|
|
|
130
130
|
## Reference
|
|
131
131
|
|
|
132
132
|
- [Configuration](docs/configuration.md): `fabric.json`, code modes, tool capture, approvals, and budgets.
|
|
133
|
+
- [Code map](docs/codemap.md): the native symbol index, token-budgeted disclosure, and git co-change ranking.
|
|
133
134
|
- [Memory & recall](docs/memory-recall.md): compact ranked hits, uniform follow calls, lossless expansion, and guest-local `memory.walk` computation.
|
|
134
135
|
- [Interface & commands](docs/interface.md): dashboard, settings, keybindings, slash commands, and headless runs.
|
|
135
136
|
- [Agents, actors & mesh](docs/agents.md): model handoff, `/fabric prewalk`, runners, transports, actors, councils, recursive queries, and durable coordination.
|
package/dist/agents/handoff.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ interface CurrentModel {
|
|
|
13
13
|
id: string;
|
|
14
14
|
}
|
|
15
15
|
export declare const checkedHandoffCompaction: (value: unknown) => HandoffCompactionRequest | undefined;
|
|
16
|
-
export declare const snapshotHandoffSession: (source: HandoffSessionSource, currentModel: CurrentModel | undefined, outerToolResult: AgentToolResultMessage, outerToolCallId: string) => AgentSessionSeed;
|
|
16
|
+
export declare const snapshotHandoffSession: (source: HandoffSessionSource, currentModel: CurrentModel | undefined, outerToolResult: AgentToolResultMessage, outerToolCallId: string, carryBranch?: boolean) => AgentSessionSeed;
|
|
17
17
|
export declare const writeHandoffSession: (seed: AgentSessionSeed, cwd: string, directory: string, transfer?: ThinkingTransferInput, compaction?: HandoffCompactionRequest) => Promise<string>;
|
|
18
18
|
export {};
|
|
19
19
|
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/agents/handoff.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAKL,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAEhC,UAAU,oBAAoB;IAC5B,SAAS,IAAI,YAAY,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC/C,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,YAAY,IAAI,MAAM,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAwBD,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,wBAAwB,GAAG,SA4B7B,CAAC;AAwCF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,oBAAoB,EAC5B,cAAc,YAAY,GAAG,SAAS,EACtC,iBAAiB,sBAAsB,EACvC,iBAAiB,MAAM,
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/agents/handoff.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EAKL,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAEhC,UAAU,oBAAoB;IAC5B,SAAS,IAAI,YAAY,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC/C,SAAS,IAAI,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,IAAI,MAAM,GAAG,SAAS,CAAC;IACrC,YAAY,IAAI,MAAM,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAwBD,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,wBAAwB,GAAG,SA4B7B,CAAC;AAwCF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,oBAAoB,EAC5B,cAAc,YAAY,GAAG,SAAS,EACtC,iBAAiB,sBAAsB,EACvC,iBAAiB,MAAM,EACvB,qBAAmB,KAClB,gBAoCF,CAAC;AAoFF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,gBAAgB,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,WAAW,qBAAqB,EAChC,aAAa,wBAAwB,KACpC,OAAO,CAAC,MAAM,CAkGhB,CAAC"}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -17,8 +17,8 @@ export interface AgentSessionSeed {
|
|
|
17
17
|
sourceSessionId: string;
|
|
18
18
|
sourceSessionFile?: string;
|
|
19
19
|
sourceBranchLeafId: string;
|
|
20
|
-
/** Present only when the source session is in memory and must be materialized. */
|
|
21
20
|
sourceBranch?: SessionEntry[];
|
|
21
|
+
sourceBranchRetired?: boolean;
|
|
22
22
|
sourceModel?: {
|
|
23
23
|
provider: string;
|
|
24
24
|
modelId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,mBAAmB,CAAC,SAAS,CAAC,EAC9B;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CACvB,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
buildThinkingDigest,
|
|
13
13
|
snapshotHandoffSession,
|
|
14
14
|
thinkingTransferPolicy
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JOWMM3EX.js";
|
|
16
16
|
import {
|
|
17
17
|
isFabricThinking
|
|
18
18
|
} from "./chunk-JSBTB3P6.js";
|
|
@@ -161,6 +161,159 @@ var CapturedToolCatalog = class {
|
|
|
161
161
|
|
|
162
162
|
// src/prewalk/handoff.ts
|
|
163
163
|
import { randomUUID } from "node:crypto";
|
|
164
|
+
|
|
165
|
+
// src/prewalk/retirement.ts
|
|
166
|
+
var RETIREMENT_RECENCY_WINDOW = 3;
|
|
167
|
+
var RETIREMENT_MIN_BYTES = 512;
|
|
168
|
+
var RETIREABLE_TOOLS = /* @__PURE__ */ new Set(["read", "grep", "find", "ls"]);
|
|
169
|
+
var MAX_TARGET_CHARS = 200;
|
|
170
|
+
var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
171
|
+
var textBytes = (value) => Buffer.byteLength(value, "utf8");
|
|
172
|
+
var jsonBytes = (value) => {
|
|
173
|
+
if (value === void 0) return 0;
|
|
174
|
+
try {
|
|
175
|
+
const encoded = JSON.stringify(value);
|
|
176
|
+
return typeof encoded === "string" ? textBytes(encoded) : 0;
|
|
177
|
+
} catch {
|
|
178
|
+
return 0;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
var emptyPlan = (enabled) => ({
|
|
182
|
+
enabled,
|
|
183
|
+
candidates: 0,
|
|
184
|
+
retired: [],
|
|
185
|
+
bytesRetired: 0,
|
|
186
|
+
markerBytes: 0
|
|
187
|
+
});
|
|
188
|
+
var isTextBlock = (block) => isRecord(block) && block.type === "text" && typeof block.text === "string";
|
|
189
|
+
var textOnlyContent = (content) => Array.isArray(content) && content.every(isTextBlock);
|
|
190
|
+
var resultBytes = (message) => {
|
|
191
|
+
let bytes = 0;
|
|
192
|
+
const content = message.content;
|
|
193
|
+
if (Array.isArray(content)) {
|
|
194
|
+
for (const block of content) if (isTextBlock(block)) bytes += textBytes(block.text);
|
|
195
|
+
}
|
|
196
|
+
return bytes + jsonBytes(message.details);
|
|
197
|
+
};
|
|
198
|
+
var retireableToolName = (name) => {
|
|
199
|
+
if (typeof name !== "string") return void 0;
|
|
200
|
+
const bare = name.startsWith("omp.") ? name.slice(4) : name;
|
|
201
|
+
return RETIREABLE_TOOLS.has(bare) ? bare : void 0;
|
|
202
|
+
};
|
|
203
|
+
var clipTarget = (value) => value.length > MAX_TARGET_CHARS ? `${value.slice(0, MAX_TARGET_CHARS)}\u2026` : value;
|
|
204
|
+
var targetFromArguments = (args) => {
|
|
205
|
+
if (!isRecord(args)) return void 0;
|
|
206
|
+
const path3 = typeof args.path === "string" ? args.path.trim() : "";
|
|
207
|
+
const needle = ["pattern", "glob", "query"].map((key) => typeof args[key] === "string" ? args[key].trim() : "").find((value) => value.length > 0);
|
|
208
|
+
if (needle && path3) return clipTarget(`${needle} @ ${path3}`);
|
|
209
|
+
const target = path3 || needle;
|
|
210
|
+
return target ? clipTarget(target) : void 0;
|
|
211
|
+
};
|
|
212
|
+
var retirementMarker = (toolName, target, bytes) => target ? `[omp-fabric] retired ${toolName} result for ${target} (${bytes} bytes) \u2014 re-run ${toolName} on ${target} to recover it.` : `[omp-fabric] retired ${toolName} result (${bytes} bytes) \u2014 re-run ${toolName} to recover it.`;
|
|
213
|
+
var collectToolCallArguments = (message, into) => {
|
|
214
|
+
const content = message.content;
|
|
215
|
+
if (!Array.isArray(content)) return;
|
|
216
|
+
for (const block of content) {
|
|
217
|
+
if (!isRecord(block) || block.type !== "toolCall") continue;
|
|
218
|
+
if (typeof block.id !== "string") continue;
|
|
219
|
+
into.set(block.id, block.arguments);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
var positiveInteger = (value, fallback) => typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : fallback;
|
|
223
|
+
var planRetirement = (entries, options = {}) => {
|
|
224
|
+
const enabled = options.handoffRetirement === true;
|
|
225
|
+
if (!enabled || !Array.isArray(entries)) return emptyPlan(enabled);
|
|
226
|
+
const recencyWindow = positiveInteger(
|
|
227
|
+
options.recencyWindow,
|
|
228
|
+
positiveInteger(options.handoffRetirementKeep, RETIREMENT_RECENCY_WINDOW)
|
|
229
|
+
);
|
|
230
|
+
const minBytes = positiveInteger(options.minBytes, RETIREMENT_MIN_BYTES);
|
|
231
|
+
try {
|
|
232
|
+
const callArguments = /* @__PURE__ */ new Map();
|
|
233
|
+
const candidates = [];
|
|
234
|
+
for (const entry of entries) {
|
|
235
|
+
if (!isRecord(entry) || entry.type !== "message") continue;
|
|
236
|
+
const message = entry.message;
|
|
237
|
+
if (!isRecord(message)) continue;
|
|
238
|
+
if (message.role === "assistant") {
|
|
239
|
+
collectToolCallArguments(message, callArguments);
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
if (message.role !== "toolResult") continue;
|
|
243
|
+
if (message.isError !== false) continue;
|
|
244
|
+
if (message.prunedAt !== void 0) continue;
|
|
245
|
+
const toolName = retireableToolName(message.toolName);
|
|
246
|
+
if (!toolName) continue;
|
|
247
|
+
if (!textOnlyContent(message.content)) continue;
|
|
248
|
+
const entryId = typeof entry.id === "string" ? entry.id : void 0;
|
|
249
|
+
const toolCallId = typeof message.toolCallId === "string" ? message.toolCallId : void 0;
|
|
250
|
+
if (!entryId || !toolCallId) continue;
|
|
251
|
+
const bytes = resultBytes(message);
|
|
252
|
+
if (bytes < minBytes) continue;
|
|
253
|
+
const target = targetFromArguments(callArguments.get(toolCallId));
|
|
254
|
+
candidates.push({
|
|
255
|
+
entryId,
|
|
256
|
+
toolCallId,
|
|
257
|
+
toolName,
|
|
258
|
+
...target ? { target } : {},
|
|
259
|
+
bytes,
|
|
260
|
+
marker: retirementMarker(toolName, target, bytes)
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
const retired = candidates.slice(0, Math.max(0, candidates.length - recencyWindow));
|
|
264
|
+
let bytesRetired = 0;
|
|
265
|
+
let markerBytes = 0;
|
|
266
|
+
for (const item of retired) {
|
|
267
|
+
bytesRetired += item.bytes;
|
|
268
|
+
markerBytes += textBytes(item.marker);
|
|
269
|
+
}
|
|
270
|
+
return { enabled, candidates: candidates.length, retired, bytesRetired, markerBytes };
|
|
271
|
+
} catch {
|
|
272
|
+
return emptyPlan(enabled);
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
var withoutDetails = (message) => {
|
|
276
|
+
if (message.details === void 0) return { ...message };
|
|
277
|
+
const copy = { ...message };
|
|
278
|
+
delete copy.details;
|
|
279
|
+
return copy;
|
|
280
|
+
};
|
|
281
|
+
var applyRetirement = (entries, plan, prunedAt = Date.now()) => {
|
|
282
|
+
if (!Array.isArray(entries) || plan.retired.length === 0) return entries;
|
|
283
|
+
try {
|
|
284
|
+
const byEntryId = new Map(plan.retired.map((item) => [item.entryId, item]));
|
|
285
|
+
return entries.map((entry) => {
|
|
286
|
+
if (!isRecord(entry)) return entry;
|
|
287
|
+
const retired = typeof entry.id === "string" ? byEntryId.get(entry.id) : void 0;
|
|
288
|
+
if (!retired || !isRecord(entry.message)) return entry;
|
|
289
|
+
return {
|
|
290
|
+
...entry,
|
|
291
|
+
message: {
|
|
292
|
+
...withoutDetails(entry.message),
|
|
293
|
+
content: [{ type: "text", text: retired.marker }],
|
|
294
|
+
prunedAt
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
});
|
|
298
|
+
} catch {
|
|
299
|
+
return entries;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
var retireHandoffSeed = (seed, options = {}) => {
|
|
303
|
+
try {
|
|
304
|
+
const branch = seed.sourceBranch;
|
|
305
|
+
if (options.handoffRetirement !== true || !Array.isArray(branch)) {
|
|
306
|
+
return { seed, plan: planRetirement(void 0, options) };
|
|
307
|
+
}
|
|
308
|
+
const plan = planRetirement(branch, options);
|
|
309
|
+
if (plan.retired.length === 0) return { seed, plan };
|
|
310
|
+
return { seed: { ...seed, sourceBranch: applyRetirement(branch, plan) }, plan };
|
|
311
|
+
} catch {
|
|
312
|
+
return { seed, plan: emptyPlan(false) };
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
// src/prewalk/handoff.ts
|
|
164
317
|
var PREWALK_CONTINUE_PROMPT = [
|
|
165
318
|
"Continue the existing task in this same session under the new executor model.",
|
|
166
319
|
"Do not stop merely because the model changed or because the first mutation succeeded.",
|
|
@@ -479,7 +632,7 @@ var settleInPlacePrewalk = async (controller, extension, context, options) => {
|
|
|
479
632
|
);
|
|
480
633
|
return true;
|
|
481
634
|
};
|
|
482
|
-
var runFabricHandoffAtBoundary = async (controller, runner, extension, pending, outerToolResult, context, activity) => {
|
|
635
|
+
var runFabricHandoffAtBoundary = async (controller, runner, extension, pending, outerToolResult, context, activity, retirement = {}) => {
|
|
483
636
|
const model = String(pending.args.model ?? "");
|
|
484
637
|
const inPlace = pending.kind === "prewalk-in-place";
|
|
485
638
|
context.ui.setStatus(
|
|
@@ -495,11 +648,15 @@ var runFabricHandoffAtBoundary = async (controller, runner, extension, pending,
|
|
|
495
648
|
activity?.({ type: "progress", message: `Main continuing in place with ${model}` });
|
|
496
649
|
return result2;
|
|
497
650
|
}
|
|
498
|
-
const
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
651
|
+
const retired = retireHandoffSeed(
|
|
652
|
+
snapshotHandoffSession(
|
|
653
|
+
context.sessionManager,
|
|
654
|
+
context.model,
|
|
655
|
+
outerToolResult,
|
|
656
|
+
outerToolResult.toolCallId,
|
|
657
|
+
retirement.handoffRetirement === true
|
|
658
|
+
),
|
|
659
|
+
retirement
|
|
503
660
|
);
|
|
504
661
|
const invocation = {
|
|
505
662
|
cwd: context.cwd,
|
|
@@ -516,7 +673,8 @@ var runFabricHandoffAtBoundary = async (controller, runner, extension, pending,
|
|
|
516
673
|
pending.audit.preview = preview;
|
|
517
674
|
}
|
|
518
675
|
};
|
|
519
|
-
const
|
|
676
|
+
const executorSeed = retired.plan.retired.length > 0 ? { ...retired.seed, sourceBranchRetired: true } : retired.seed;
|
|
677
|
+
const result = await runner.executeHandoff(pending.args, invocation, executorSeed);
|
|
520
678
|
const completed = result.completed === true;
|
|
521
679
|
pending.audit.success = completed;
|
|
522
680
|
pending.audit.result = result;
|
|
@@ -549,7 +707,18 @@ var runFabricHandoffAtBoundary = async (controller, runner, extension, pending,
|
|
|
549
707
|
completed ? "trajectory executor implemented" : `trajectory ${String(result.status ?? "failed")}`
|
|
550
708
|
);
|
|
551
709
|
return {
|
|
552
|
-
...pending.kind === "prewalk-trajectory" ? {
|
|
710
|
+
...pending.kind === "prewalk-trajectory" ? {
|
|
711
|
+
prewalk: true,
|
|
712
|
+
mode: "trajectory",
|
|
713
|
+
trigger: prewalkTriggerField(pending),
|
|
714
|
+
...retired.plan.retired.length > 0 ? {
|
|
715
|
+
retirement: {
|
|
716
|
+
results: retired.plan.retired.length,
|
|
717
|
+
bytes: retired.plan.bytesRetired,
|
|
718
|
+
markerBytes: retired.plan.markerBytes
|
|
719
|
+
}
|
|
720
|
+
} : {}
|
|
721
|
+
} : {},
|
|
553
722
|
...result
|
|
554
723
|
};
|
|
555
724
|
} catch (error) {
|
|
@@ -2634,4 +2803,4 @@ export {
|
|
|
2634
2803
|
resolveFabricIdentity,
|
|
2635
2804
|
MainAgentController
|
|
2636
2805
|
};
|
|
2637
|
-
//# sourceMappingURL=chunk-
|
|
2806
|
+
//# sourceMappingURL=chunk-5YGOVBOZ.js.map
|