@cortexkit/aft-pi 0.49.4 → 0.50.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/README.md +2 -2
- package/dist/bg-notifications.d.ts +4 -2
- package/dist/bg-notifications.d.ts.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +482 -54
- package/dist/tools/hoisted.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -59,8 +59,8 @@ All four keep the same agent-facing parameters as Pi's built-ins, so your prompt
|
|
|
59
59
|
|
|
60
60
|
AFT reads config from two levels, project overrides user:
|
|
61
61
|
|
|
62
|
-
- **User:** `~/.
|
|
63
|
-
- **Project:** `<project>/.
|
|
62
|
+
- **User:** `~/.config/cortexkit/aft.jsonc`
|
|
63
|
+
- **Project:** `<project>/.cortexkit/aft.jsonc`
|
|
64
64
|
|
|
65
65
|
All keys are optional. Example:
|
|
66
66
|
|
|
@@ -164,8 +164,10 @@ export declare function handleTurnEndBgCompletions(drainContext: DrainContext &
|
|
|
164
164
|
* (re-armed until acked), so it always means "drain me now" — even for a task
|
|
165
165
|
* this process never tracked (prior session / already-cleared outstanding entry),
|
|
166
166
|
* which the gated drain in {@link triggerWakeIfPending} would skip, leaving the
|
|
167
|
-
* module to re-arm and nudge forever.
|
|
168
|
-
*
|
|
167
|
+
* module to re-arm and nudge forever. The module-side loop lives at
|
|
168
|
+
* `crates/aft/src/subc/push.rs::{emit_bg_event_wakes,clear_stale_bg_wakes_for_empty_sessions}`:
|
|
169
|
+
* it re-emits pending wakes until ack empties the queue, so coalescing a duplicate
|
|
170
|
+
* while this handler is in flight is safe. See the OpenCode twin for the full rationale.
|
|
169
171
|
*/
|
|
170
172
|
export declare function handleSubcBgEventsNudge(drainContext: DrainContext & {
|
|
171
173
|
runtime: SendUserMessageRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bg-notifications.d.ts","sourceRoot":"","sources":["../src/bg-notifications.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bg-notifications.d.ts","sourceRoot":"","sources":["../src/bg-notifications.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -133,6 +133,8 @@ export interface AftConfig {
|
|
|
133
133
|
$schema?: string;
|
|
134
134
|
/** Master switch for AFT. Default true. Project config may set it because turning AFT off is not a privilege escalation. */
|
|
135
135
|
enabled?: boolean;
|
|
136
|
+
/** Select the edit/read surface. `hashline` exposes tagged reads and `{ patch }` edits. */
|
|
137
|
+
edit_mode?: "default" | "hashline";
|
|
136
138
|
format_on_edit?: boolean;
|
|
137
139
|
/** Maximum formatter subprocess wallclock seconds. Bounded 1..=600. Default 10. */
|
|
138
140
|
formatter_timeout_secs?: number;
|
|
@@ -216,6 +218,10 @@ export declare function resolveBashConfig(config: AftConfig): ResolvedBashConfig
|
|
|
216
218
|
export declare const AftConfigSchema: z.ZodPreprocess<z.ZodObject<{
|
|
217
219
|
$schema: z.ZodOptional<z.ZodString>;
|
|
218
220
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
221
|
+
edit_mode: z.ZodOptional<z.ZodEnum<{
|
|
222
|
+
default: "default";
|
|
223
|
+
hashline: "hashline";
|
|
224
|
+
}>>;
|
|
219
225
|
format_on_edit: z.ZodOptional<z.ZodBoolean>;
|
|
220
226
|
formatter_timeout_secs: z.ZodOptional<z.ZodNumber>;
|
|
221
227
|
validate_on_edit: z.ZodOptional<z.ZodEnum<{
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,OAAO,EACL,KAAK,SAAS,EAGd,mBAAmB,EAIpB,MAAM,aAAa,CAAC;AA2BrB,OAAO,EAAyB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA4BrF,KAAK,mBAAmB,GAAG;IACzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,iBAAS,4BAA4B,CACnC,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAC9C,sBAAsB,GAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAgB,IAOrE,eAAe,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCjF;AAyED,iBAAS,0BAA0B,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC7C,IAAI,CAUN;AAED,iBAAS,wBAAwB,CAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,GACtD,OAAO,CAGT;AAED,iBAAS,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9E;AASD,iBAAe,iCAAiC,CAAC,OAAO,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,OAAO,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC1E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChB;AAED;;;;GAIG;AACH,yBAA+B,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,OAAO,EACL,KAAK,SAAS,EAGd,mBAAmB,EAIpB,MAAM,aAAa,CAAC;AA2BrB,OAAO,EAAyB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA4BrF,KAAK,mBAAmB,GAAG;IACzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,iBAAS,4BAA4B,CACnC,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAC9C,sBAAsB,GAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAgB,IAOrE,eAAe,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCjF;AAyED,iBAAS,0BAA0B,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC7C,IAAI,CAUN;AAED,iBAAS,wBAAwB,CAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,GACtD,OAAO,CAGT;AAED,iBAAS,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9E;AASD,iBAAe,iCAAiC,CAAC,OAAO,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,OAAO,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC1E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChB;AAED;;;;GAIG;AACH,yBAA+B,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoiB9D;AAED,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8410,6 +8410,8 @@ var DEFAULT_BRIDGE_TIMEOUT_MS = 30000;
|
|
|
8410
8410
|
var BRIDGE_HANG_TIMEOUT_THRESHOLD = 2;
|
|
8411
8411
|
var MAX_STDOUT_BUFFER = 64 * 1024 * 1024;
|
|
8412
8412
|
var STDOUT_BUFFER_COMPACT_THRESHOLD = 64 * 1024;
|
|
8413
|
+
var HASHLINE_REGISTRATION_LOG_INTERVAL_MS = 60000;
|
|
8414
|
+
var HASHLINE_REGISTRATION_LOG_STATE_LIMIT = 256;
|
|
8413
8415
|
var TERMINAL_BASH_STATUSES = new Set([
|
|
8414
8416
|
"completed",
|
|
8415
8417
|
"failed",
|
|
@@ -8559,6 +8561,9 @@ class BinaryBridge {
|
|
|
8559
8561
|
configured = false;
|
|
8560
8562
|
_configurePromise = null;
|
|
8561
8563
|
configOverrides;
|
|
8564
|
+
editSlotSurvives;
|
|
8565
|
+
editSlotSurvivesCaptured = false;
|
|
8566
|
+
hashlineRegistrationLogState = new Map;
|
|
8562
8567
|
minVersion;
|
|
8563
8568
|
onVersionMismatch;
|
|
8564
8569
|
onConfigureWarnings;
|
|
@@ -8575,20 +8580,33 @@ class BinaryBridge {
|
|
|
8575
8580
|
errorPrefix;
|
|
8576
8581
|
logger;
|
|
8577
8582
|
childEnv;
|
|
8578
|
-
constructor(binaryPath, cwd, options, configOverrides) {
|
|
8583
|
+
constructor(binaryPath, cwd, options, configOverrides, editSlotSurvives) {
|
|
8579
8584
|
this.binaryPath = binaryPath;
|
|
8580
8585
|
this.cwd = cwd;
|
|
8581
8586
|
this.timeoutMs = options?.timeoutMs ?? DEFAULT_BRIDGE_TIMEOUT_MS;
|
|
8582
8587
|
this.hangThreshold = options?.hangThreshold ?? BRIDGE_HANG_TIMEOUT_THRESHOLD;
|
|
8583
8588
|
this.maxRestarts = options?.maxRestarts ?? 3;
|
|
8584
|
-
this.
|
|
8589
|
+
this.errorPrefix = options?.errorPrefix ?? "[aft-bridge]";
|
|
8590
|
+
this.configOverrides = { ...configOverrides ?? {} };
|
|
8591
|
+
const legacyEditSlotSurvives = this.configOverrides.edit_slot_survives;
|
|
8592
|
+
delete this.configOverrides.edit_slot_survives;
|
|
8593
|
+
if (legacyEditSlotSurvives !== undefined && typeof legacyEditSlotSurvives !== "boolean") {
|
|
8594
|
+
throw new Error(`${this.errorPrefix} edit_slot_survives must be a boolean`);
|
|
8595
|
+
}
|
|
8596
|
+
if (editSlotSurvives !== undefined && legacyEditSlotSurvives !== undefined && editSlotSurvives !== legacyEditSlotSurvives) {
|
|
8597
|
+
throw new Error(`${this.errorPrefix} conflicting edit_slot_survives construction values`);
|
|
8598
|
+
}
|
|
8599
|
+
const capturedEditSlotSurvives = editSlotSurvives ?? legacyEditSlotSurvives;
|
|
8600
|
+
if (typeof capturedEditSlotSurvives === "boolean") {
|
|
8601
|
+
this.editSlotSurvives = capturedEditSlotSurvives;
|
|
8602
|
+
this.editSlotSurvivesCaptured = true;
|
|
8603
|
+
}
|
|
8585
8604
|
this.minVersion = options?.minVersion;
|
|
8586
8605
|
this.onVersionMismatch = options?.onVersionMismatch;
|
|
8587
8606
|
this.onConfigureWarnings = options?.onConfigureWarnings;
|
|
8588
8607
|
this.onBashCompletion = options?.onBashCompletion;
|
|
8589
8608
|
this.onBashLongRunning = options?.onBashLongRunning;
|
|
8590
8609
|
this.onBashPatternMatch = options?.onBashPatternMatch;
|
|
8591
|
-
this.errorPrefix = options?.errorPrefix ?? "[aft-bridge]";
|
|
8592
8610
|
this.logger = options?.logger;
|
|
8593
8611
|
this.childEnv = options?.childEnv;
|
|
8594
8612
|
}
|
|
@@ -8699,13 +8717,54 @@ class BinaryBridge {
|
|
|
8699
8717
|
cacheStatusSnapshot(snapshot) {
|
|
8700
8718
|
this.cachedStatus = snapshot;
|
|
8701
8719
|
}
|
|
8720
|
+
setEditSlotSurvives(value) {
|
|
8721
|
+
if (this.editSlotSurvivesCaptured) {
|
|
8722
|
+
throw new Error(`${this.errorPrefix} edit_slot_survives is write-once and was already captured`);
|
|
8723
|
+
}
|
|
8724
|
+
this.editSlotSurvives = value;
|
|
8725
|
+
this.editSlotSurvivesCaptured = true;
|
|
8726
|
+
}
|
|
8727
|
+
logHashlineRegistrationCarrier(phase, sessionId, editSlotSurvives) {
|
|
8728
|
+
const session = sessionId && sessionId.length > 0 ? sessionId : "__default__";
|
|
8729
|
+
const key = `${phase}\x00${session}\x00${String(editSlotSurvives)}`;
|
|
8730
|
+
const now = Date.now();
|
|
8731
|
+
const state = this.hashlineRegistrationLogState.get(key);
|
|
8732
|
+
if (state && now - state.lastEmittedAt < HASHLINE_REGISTRATION_LOG_INTERVAL_MS) {
|
|
8733
|
+
state.suppressed += 1;
|
|
8734
|
+
return;
|
|
8735
|
+
}
|
|
8736
|
+
const repeated = state && state.suppressed > 0 ? ` repeated=${state.suppressed + 1}` : "";
|
|
8737
|
+
if (!state && this.hashlineRegistrationLogState.size >= HASHLINE_REGISTRATION_LOG_STATE_LIMIT) {
|
|
8738
|
+
const oldest = this.hashlineRegistrationLogState.keys().next().value;
|
|
8739
|
+
if (oldest !== undefined)
|
|
8740
|
+
this.hashlineRegistrationLogState.delete(oldest);
|
|
8741
|
+
}
|
|
8742
|
+
this.hashlineRegistrationLogState.set(key, { lastEmittedAt: now, suppressed: 0 });
|
|
8743
|
+
this.sessionLogVia(sessionId, `hashline registration carrier transport=ndjson phase=${phase} edit_slot_survives=${editSlotSurvives}${repeated}`);
|
|
8744
|
+
}
|
|
8702
8745
|
async send(command, params = {}, options) {
|
|
8703
|
-
|
|
8746
|
+
let dispatchParams = params;
|
|
8747
|
+
if (command === "configure") {
|
|
8748
|
+
dispatchParams = { ...params };
|
|
8749
|
+
delete dispatchParams.edit_slot_survives;
|
|
8750
|
+
const editSlotSurvives = this.editSlotSurvives;
|
|
8751
|
+
if (this.editSlotSurvivesCaptured && typeof editSlotSurvives === "boolean") {
|
|
8752
|
+
dispatchParams.edit_slot_survives = editSlotSurvives;
|
|
8753
|
+
const sessionId = typeof dispatchParams.session_id === "string" ? dispatchParams.session_id : undefined;
|
|
8754
|
+
this.logHashlineRegistrationCarrier("configure", sessionId, editSlotSurvives);
|
|
8755
|
+
}
|
|
8756
|
+
}
|
|
8757
|
+
return this.sendWithVersionMismatchRetry(command, dispatchParams, options, true);
|
|
8704
8758
|
}
|
|
8705
8759
|
async toolCall(sessionId, name, rawArgs = {}, options) {
|
|
8706
8760
|
const params = { name, arguments: rawArgs };
|
|
8707
8761
|
if (sessionId)
|
|
8708
8762
|
params.session_id = sessionId;
|
|
8763
|
+
const editSlotSurvives = this.editSlotSurvives;
|
|
8764
|
+
if (this.editSlotSurvivesCaptured && typeof editSlotSurvives === "boolean") {
|
|
8765
|
+
params.edit_slot_survives = editSlotSurvives;
|
|
8766
|
+
this.logHashlineRegistrationCarrier("tool_call", sessionId, editSlotSurvives);
|
|
8767
|
+
}
|
|
8709
8768
|
const { preview, ...sendOptions } = options ?? {};
|
|
8710
8769
|
if (preview === true)
|
|
8711
8770
|
params.preview = true;
|
|
@@ -12873,6 +12932,8 @@ function normalizeWindowsRoot(p) {
|
|
|
12873
12932
|
var AFT_MODULE_ID = "aft";
|
|
12874
12933
|
var MAX_CONSECUTIVE_TRANSPORT_FAILURES = 3;
|
|
12875
12934
|
var BG_STABLE_MS = 5000;
|
|
12935
|
+
var BG_LIFECYCLE_LOG_INTERVAL_MS = 60000;
|
|
12936
|
+
var BG_DISPATCH_PROBE_INTERVAL_MS = 60000;
|
|
12876
12937
|
var DEFAULT_SESSION_ID = "__default__";
|
|
12877
12938
|
var LOCALLY_SATISFIED_COMMANDS = new Set(["configure"]);
|
|
12878
12939
|
|
|
@@ -12935,12 +12996,15 @@ class BgSubscription {
|
|
|
12935
12996
|
canAttach;
|
|
12936
12997
|
onRootAttachFailure;
|
|
12937
12998
|
onDormant;
|
|
12999
|
+
dispatchProbeIntervalMs;
|
|
12938
13000
|
nudgeRef;
|
|
12939
13001
|
isCurrent;
|
|
12940
13002
|
stopped = false;
|
|
12941
13003
|
current = null;
|
|
12942
13004
|
loop;
|
|
12943
|
-
|
|
13005
|
+
lifecycleLogState = new Map;
|
|
13006
|
+
nudgeReceiptLogState = null;
|
|
13007
|
+
constructor(identity, acquireClient, dropClient, consumerIdentity, onNudge, sleep2, canAttach, onRootAttachFailure, onDormant, dispatchProbeIntervalMs, nudgeRef, isCurrent = () => true) {
|
|
12944
13008
|
this.identity = identity;
|
|
12945
13009
|
this.acquireClient = acquireClient;
|
|
12946
13010
|
this.dropClient = dropClient;
|
|
@@ -12950,6 +13014,7 @@ class BgSubscription {
|
|
|
12950
13014
|
this.canAttach = canAttach;
|
|
12951
13015
|
this.onRootAttachFailure = onRootAttachFailure;
|
|
12952
13016
|
this.onDormant = onDormant;
|
|
13017
|
+
this.dispatchProbeIntervalMs = dispatchProbeIntervalMs;
|
|
12953
13018
|
this.nudgeRef = nudgeRef;
|
|
12954
13019
|
this.isCurrent = isCurrent;
|
|
12955
13020
|
this.loop = this.run();
|
|
@@ -12966,25 +13031,106 @@ class BgSubscription {
|
|
|
12966
13031
|
return;
|
|
12967
13032
|
});
|
|
12968
13033
|
}
|
|
13034
|
+
info(kind, message) {
|
|
13035
|
+
const now = Date.now();
|
|
13036
|
+
const state = this.lifecycleLogState.get(kind);
|
|
13037
|
+
if (state && now - state.lastEmittedAt < BG_LIFECYCLE_LOG_INTERVAL_MS) {
|
|
13038
|
+
state.suppressed += 1;
|
|
13039
|
+
return;
|
|
13040
|
+
}
|
|
13041
|
+
const suppressed = state?.suppressed ?? 0;
|
|
13042
|
+
this.lifecycleLogState.set(kind, { lastEmittedAt: now, suppressed: 0 });
|
|
13043
|
+
const suffix = suppressed > 0 ? ` suppressed=${suppressed}` : "";
|
|
13044
|
+
log(`subc bg_events: ${message}${suffix}`, { sessionId: this.identity.session });
|
|
13045
|
+
}
|
|
13046
|
+
routeId(route) {
|
|
13047
|
+
return `${route.channel}@${route.epoch}`;
|
|
13048
|
+
}
|
|
13049
|
+
recordNudgeReceipt(routeId) {
|
|
13050
|
+
const now = Date.now();
|
|
13051
|
+
const state = this.nudgeReceiptLogState;
|
|
13052
|
+
if (state && now - state.lastEmittedAt < BG_LIFECYCLE_LOG_INTERVAL_MS) {
|
|
13053
|
+
state.count += 1;
|
|
13054
|
+
return;
|
|
13055
|
+
}
|
|
13056
|
+
const count = (state?.count ?? 0) + 1;
|
|
13057
|
+
this.nudgeReceiptLogState = { lastEmittedAt: now, count: 0 };
|
|
13058
|
+
log(`subc bg_events: nudge received channel=${routeId} count=${count}`, {
|
|
13059
|
+
sessionId: this.identity.session
|
|
13060
|
+
});
|
|
13061
|
+
}
|
|
13062
|
+
errorText(error2) {
|
|
13063
|
+
return error2 instanceof Error ? `${error2.name}: ${error2.message}` : String(error2);
|
|
13064
|
+
}
|
|
13065
|
+
startDispatchProbe(client, routeId) {
|
|
13066
|
+
const initial = client.droppedIngressFrames;
|
|
13067
|
+
if (typeof initial !== "number")
|
|
13068
|
+
return () => {
|
|
13069
|
+
return;
|
|
13070
|
+
};
|
|
13071
|
+
let previous = initial;
|
|
13072
|
+
const timer = setInterval(() => {
|
|
13073
|
+
const total = client.droppedIngressFrames;
|
|
13074
|
+
if (typeof total !== "number" || total <= previous)
|
|
13075
|
+
return;
|
|
13076
|
+
const delta = total - previous;
|
|
13077
|
+
previous = total;
|
|
13078
|
+
this.info("dispatch-epoch-drop", `client ingress epoch drops scope=client observed_while_channel=${routeId} delta=${delta} total=${total}`);
|
|
13079
|
+
}, this.dispatchProbeIntervalMs);
|
|
13080
|
+
timer.unref?.();
|
|
13081
|
+
return () => clearInterval(timer);
|
|
13082
|
+
}
|
|
12969
13083
|
async run() {
|
|
12970
|
-
let
|
|
13084
|
+
let backoffAttempt = 0;
|
|
13085
|
+
let reconnectAttempt = 0;
|
|
13086
|
+
let reconnecting = false;
|
|
13087
|
+
const beginReconnect = () => {
|
|
13088
|
+
reconnecting = true;
|
|
13089
|
+
reconnectAttempt = reconnectAttempt === 0 ? 1 : reconnectAttempt + 1;
|
|
13090
|
+
};
|
|
13091
|
+
const giveUp = (reason) => {
|
|
13092
|
+
this.info("reconnect-gave-up", `reconnect gave-up attempt=${reconnectAttempt} reason=${reason}`);
|
|
13093
|
+
};
|
|
12971
13094
|
while (!this.stopped) {
|
|
12972
|
-
if (!this.isCurrent())
|
|
13095
|
+
if (!this.isCurrent()) {
|
|
13096
|
+
if (reconnecting)
|
|
13097
|
+
giveUp("stale-session");
|
|
12973
13098
|
return;
|
|
13099
|
+
}
|
|
12974
13100
|
if (!this.canAttach()) {
|
|
13101
|
+
if (reconnecting)
|
|
13102
|
+
giveUp("root-dormant");
|
|
12975
13103
|
this.onDormant();
|
|
12976
13104
|
return;
|
|
12977
13105
|
}
|
|
13106
|
+
if (reconnecting) {
|
|
13107
|
+
this.info("reconnect-attempt", `reconnect attempt=${reconnectAttempt}`);
|
|
13108
|
+
}
|
|
12978
13109
|
let client;
|
|
12979
13110
|
try {
|
|
12980
13111
|
client = await this.acquireClient();
|
|
12981
|
-
} catch {
|
|
12982
|
-
|
|
13112
|
+
} catch (err) {
|
|
13113
|
+
if (!reconnecting)
|
|
13114
|
+
beginReconnect();
|
|
13115
|
+
this.info("reconnect-error", `reconnect error attempt=${reconnectAttempt} error=${this.errorText(err)}`);
|
|
13116
|
+
await this.backoff(backoffAttempt++);
|
|
13117
|
+
if (reconnecting)
|
|
13118
|
+
reconnectAttempt += 1;
|
|
12983
13119
|
continue;
|
|
12984
13120
|
}
|
|
12985
|
-
if (this.stopped
|
|
13121
|
+
if (this.stopped) {
|
|
13122
|
+
if (reconnecting)
|
|
13123
|
+
giveUp("stopped");
|
|
12986
13124
|
return;
|
|
13125
|
+
}
|
|
13126
|
+
if (!this.isCurrent()) {
|
|
13127
|
+
if (reconnecting)
|
|
13128
|
+
giveUp("stale-session");
|
|
13129
|
+
return;
|
|
13130
|
+
}
|
|
12987
13131
|
if (!this.canAttach()) {
|
|
13132
|
+
if (reconnecting)
|
|
13133
|
+
giveUp("root-dormant");
|
|
12988
13134
|
this.onDormant();
|
|
12989
13135
|
return;
|
|
12990
13136
|
}
|
|
@@ -12993,44 +13139,84 @@ class BgSubscription {
|
|
|
12993
13139
|
route = await client.routeOpen({ kind: "tool_provider", module_id: AFT_MODULE_ID }, this.identity, { consumerIdentity: this.consumerIdentity });
|
|
12994
13140
|
} catch (err) {
|
|
12995
13141
|
if (this.isCurrent() && this.onRootAttachFailure(err)) {
|
|
13142
|
+
if (reconnecting)
|
|
13143
|
+
giveUp("root-dormant");
|
|
12996
13144
|
this.onDormant();
|
|
12997
13145
|
return;
|
|
12998
13146
|
}
|
|
12999
13147
|
if (isConsumerReconnectTransient(err))
|
|
13000
13148
|
this.dropClient(client);
|
|
13001
|
-
|
|
13149
|
+
if (!reconnecting)
|
|
13150
|
+
beginReconnect();
|
|
13151
|
+
this.info("reconnect-error", `reconnect error attempt=${reconnectAttempt} error=${this.errorText(err)}`);
|
|
13152
|
+
await this.backoff(backoffAttempt++);
|
|
13153
|
+
if (reconnecting)
|
|
13154
|
+
reconnectAttempt += 1;
|
|
13002
13155
|
continue;
|
|
13003
13156
|
}
|
|
13004
13157
|
if (this.stopped || !this.isCurrent()) {
|
|
13005
13158
|
safeCloseRoute(client, route);
|
|
13159
|
+
if (reconnecting)
|
|
13160
|
+
giveUp(this.stopped ? "stopped" : "stale-session");
|
|
13006
13161
|
return;
|
|
13007
13162
|
}
|
|
13008
13163
|
const subscribedAt = Date.now();
|
|
13164
|
+
const routeId = this.routeId(route);
|
|
13165
|
+
let stopDispatchProbe = () => {
|
|
13166
|
+
return;
|
|
13167
|
+
};
|
|
13009
13168
|
try {
|
|
13010
13169
|
const sub = client.subscribe(route, { op: "bg_events" }, () => {
|
|
13011
|
-
if (
|
|
13012
|
-
this.
|
|
13170
|
+
if (this.stopped) {
|
|
13171
|
+
this.info("nudge-drop-stopped", `nudge dropped cause=subscription-stopped channel=${routeId}`);
|
|
13172
|
+
return;
|
|
13173
|
+
}
|
|
13174
|
+
this.recordNudgeReceipt(routeId);
|
|
13175
|
+
if (!this.isCurrent()) {
|
|
13176
|
+
this.info("nudge-stale-carrier", `nudge carried by stale subscription; checking current session channel=${routeId}`);
|
|
13177
|
+
}
|
|
13178
|
+
this.onNudge();
|
|
13013
13179
|
});
|
|
13014
13180
|
this.current = sub;
|
|
13181
|
+
stopDispatchProbe = this.startDispatchProbe(client, routeId);
|
|
13182
|
+
this.info("subscription-open", `subscription open channel=${routeId}`);
|
|
13183
|
+
if (reconnecting) {
|
|
13184
|
+
this.info("reconnect-success", `reconnect success attempt=${reconnectAttempt} channel=${routeId}`);
|
|
13185
|
+
reconnecting = false;
|
|
13186
|
+
reconnectAttempt = 0;
|
|
13187
|
+
}
|
|
13015
13188
|
if (this.stopped)
|
|
13016
13189
|
sub.unsubscribe();
|
|
13017
13190
|
if (!this.stopped && this.isCurrent())
|
|
13018
13191
|
this.onNudge();
|
|
13019
13192
|
await sub.closed;
|
|
13020
|
-
|
|
13193
|
+
this.info("stream-end", `stream ended channel=${routeId}`);
|
|
13194
|
+
if (this.stopped) {
|
|
13195
|
+
giveUp("stopped");
|
|
13196
|
+
return;
|
|
13197
|
+
}
|
|
13198
|
+
beginReconnect();
|
|
13021
13199
|
} catch (err) {
|
|
13022
|
-
|
|
13200
|
+
const routeId2 = this.routeId(route);
|
|
13201
|
+
this.info("stream-error", `stream error channel=${routeId2} error=${this.errorText(err)}`);
|
|
13202
|
+
if (this.stopped) {
|
|
13203
|
+
giveUp("stopped");
|
|
13023
13204
|
return;
|
|
13205
|
+
}
|
|
13024
13206
|
if (isConsumerReconnectTransient(err))
|
|
13025
13207
|
this.dropClient(client);
|
|
13026
13208
|
if (Date.now() - subscribedAt >= BG_STABLE_MS)
|
|
13027
|
-
|
|
13209
|
+
backoffAttempt = 0;
|
|
13210
|
+
beginReconnect();
|
|
13028
13211
|
} finally {
|
|
13212
|
+
stopDispatchProbe();
|
|
13029
13213
|
this.current = null;
|
|
13030
13214
|
safeCloseRoute(client, route);
|
|
13031
13215
|
}
|
|
13032
|
-
await this.backoff(
|
|
13216
|
+
await this.backoff(backoffAttempt++);
|
|
13033
13217
|
}
|
|
13218
|
+
if (reconnecting)
|
|
13219
|
+
giveUp("stopped");
|
|
13034
13220
|
}
|
|
13035
13221
|
async backoff(attempt) {
|
|
13036
13222
|
const ms = Math.min(100 * 2 ** Math.min(attempt, 6), 2000);
|
|
@@ -13128,6 +13314,9 @@ class SubcTransport {
|
|
|
13128
13314
|
this.assertCurrent();
|
|
13129
13315
|
const { preview, timeoutMs, onProgress } = this.splitOptions(options);
|
|
13130
13316
|
const body = { name, arguments: rawArgs };
|
|
13317
|
+
const editSlotSurvives = this.pool.getEditSlotSurvives();
|
|
13318
|
+
if (editSlotSurvives !== undefined)
|
|
13319
|
+
body.edit_slot_survives = editSlotSurvives;
|
|
13131
13320
|
if (preview === true)
|
|
13132
13321
|
body.preview = true;
|
|
13133
13322
|
const reply = await this.pool.routeRequest(this.identityFor(sessionId), body, timeoutMs, onProgress, this.generation);
|
|
@@ -13142,7 +13331,11 @@ class SubcTransport {
|
|
|
13142
13331
|
}
|
|
13143
13332
|
const { timeoutMs, onProgress } = this.splitOptions(options);
|
|
13144
13333
|
const session = typeof params.session_id === "string" ? params.session_id : undefined;
|
|
13145
|
-
const
|
|
13334
|
+
const body = { name: command, arguments: params };
|
|
13335
|
+
const editSlotSurvives = this.pool.getEditSlotSurvives();
|
|
13336
|
+
if (editSlotSurvives !== undefined)
|
|
13337
|
+
body.edit_slot_survives = editSlotSurvives;
|
|
13338
|
+
const reply = await this.pool.routeRequest(this.identityFor(session), body, timeoutMs, onProgress, this.generation);
|
|
13146
13339
|
const response = reliftReply(reply);
|
|
13147
13340
|
this.captureStatusBar(response);
|
|
13148
13341
|
return response;
|
|
@@ -13166,6 +13359,7 @@ class SubcTransportPool {
|
|
|
13166
13359
|
onBgEventsNudge;
|
|
13167
13360
|
onBgEventsNudgeRef;
|
|
13168
13361
|
bgBackoffSleep;
|
|
13362
|
+
bgDispatchProbeIntervalMs;
|
|
13169
13363
|
lifecycleDemandCheck;
|
|
13170
13364
|
onLifecycleEvent;
|
|
13171
13365
|
onBgNudgeRejected;
|
|
@@ -13181,8 +13375,11 @@ class SubcTransportPool {
|
|
|
13181
13375
|
transportFailures = 0;
|
|
13182
13376
|
transports = new Map;
|
|
13183
13377
|
generationRejections = new Set;
|
|
13378
|
+
nudgeDeliveryLogState = new Map;
|
|
13184
13379
|
pendingRootCleanups = new Set;
|
|
13185
13380
|
shuttingDown = false;
|
|
13381
|
+
editSlotSurvives;
|
|
13382
|
+
editSlotSurvivesCaptured = false;
|
|
13186
13383
|
constructor(options) {
|
|
13187
13384
|
this.connectionFile = options.connectionFile;
|
|
13188
13385
|
this.harness = options.harness;
|
|
@@ -13192,6 +13389,7 @@ class SubcTransportPool {
|
|
|
13192
13389
|
this.onBgEventsNudge = options.onBgEventsNudge;
|
|
13193
13390
|
this.onBgEventsNudgeRef = options.onBgEventsNudgeRef;
|
|
13194
13391
|
this.bgBackoffSleep = options.bgBackoffSleep ?? ((ms) => new Promise((resolve4) => setTimeout(resolve4, ms)));
|
|
13392
|
+
this.bgDispatchProbeIntervalMs = options.bgDispatchProbeIntervalMs ?? BG_DISPATCH_PROBE_INTERVAL_MS;
|
|
13195
13393
|
const lifecycle = options.lifecycle;
|
|
13196
13394
|
const demandCheck = options.lifecycleDemandCheck ?? options.demandCheck ?? lifecycle?.demandCheck;
|
|
13197
13395
|
this.lifecycleDemandCheck = demandCheck;
|
|
@@ -13508,6 +13706,35 @@ class SubcTransportPool {
|
|
|
13508
13706
|
isCurrentSession(key, record) {
|
|
13509
13707
|
return this.sessions.get(key) === record && !record.closed;
|
|
13510
13708
|
}
|
|
13709
|
+
currentSessionForNudge(identity) {
|
|
13710
|
+
const current = this.sessions.get(identityKey(identity));
|
|
13711
|
+
return current && !current.closed ? current : null;
|
|
13712
|
+
}
|
|
13713
|
+
nudgeRefFor(record) {
|
|
13714
|
+
const poolId = this.currentPoolId();
|
|
13715
|
+
const generation = record.generation;
|
|
13716
|
+
if (poolId === undefined || generation === undefined)
|
|
13717
|
+
return;
|
|
13718
|
+
return {
|
|
13719
|
+
canonicalRoot: record.canonicalRoot,
|
|
13720
|
+
session: record.identity.session,
|
|
13721
|
+
concretePoolId: poolId,
|
|
13722
|
+
generation
|
|
13723
|
+
};
|
|
13724
|
+
}
|
|
13725
|
+
logNudgeDelivery(kind, record, message) {
|
|
13726
|
+
const key = `${kind}\x00${record.identityKey}`;
|
|
13727
|
+
const now = Date.now();
|
|
13728
|
+
const state = this.nudgeDeliveryLogState.get(key);
|
|
13729
|
+
if (state && now - state.lastEmittedAt < BG_LIFECYCLE_LOG_INTERVAL_MS) {
|
|
13730
|
+
state.suppressed += 1;
|
|
13731
|
+
return;
|
|
13732
|
+
}
|
|
13733
|
+
const suppressed = state?.suppressed ?? 0;
|
|
13734
|
+
this.nudgeDeliveryLogState.set(key, { lastEmittedAt: now, suppressed: 0 });
|
|
13735
|
+
const suffix = suppressed > 0 ? ` suppressed=${suppressed}` : "";
|
|
13736
|
+
log(`subc bg_events: ${message}${suffix}`, { sessionId: record.identity.session });
|
|
13737
|
+
}
|
|
13511
13738
|
removeIndexMembership(record) {
|
|
13512
13739
|
const keys = this.rootIndex.get(record.canonicalRoot);
|
|
13513
13740
|
if (!keys)
|
|
@@ -13761,20 +13988,32 @@ class SubcTransportPool {
|
|
|
13761
13988
|
return;
|
|
13762
13989
|
if (record.bgSub)
|
|
13763
13990
|
return;
|
|
13764
|
-
const
|
|
13765
|
-
const generation = record.generation;
|
|
13766
|
-
const nudgeRef = poolId !== undefined && generation !== undefined ? {
|
|
13767
|
-
canonicalRoot: record.canonicalRoot,
|
|
13768
|
-
session: identity.session,
|
|
13769
|
-
concretePoolId: poolId,
|
|
13770
|
-
generation
|
|
13771
|
-
} : undefined;
|
|
13991
|
+
const nudgeRef = this.nudgeRefFor(record);
|
|
13772
13992
|
const onNudge = () => {
|
|
13773
|
-
|
|
13993
|
+
const currentRecord = this.currentSessionForNudge(identity);
|
|
13994
|
+
if (!currentRecord) {
|
|
13995
|
+
this.logNudgeDelivery("drop-no-current-session", record, `nudge dropped cause=no-current-session root=${record.canonicalRoot}`);
|
|
13774
13996
|
return;
|
|
13775
|
-
|
|
13776
|
-
if (
|
|
13777
|
-
this.
|
|
13997
|
+
}
|
|
13998
|
+
if (currentRecord !== record) {
|
|
13999
|
+
this.logNudgeDelivery("forward-superseded-carrier", currentRecord, `nudge forwarding cause=superseded-carrying-record root=${currentRecord.canonicalRoot}`);
|
|
14000
|
+
}
|
|
14001
|
+
const currentRef = this.nudgeRefFor(currentRecord);
|
|
14002
|
+
let delivered = false;
|
|
14003
|
+
if (currentRef && this.onBgEventsNudgeRef) {
|
|
14004
|
+
this.onBgEventsNudgeRef(currentRef);
|
|
14005
|
+
delivered = true;
|
|
14006
|
+
}
|
|
14007
|
+
if (this.onBgEventsNudge) {
|
|
14008
|
+
if (!currentRef && this.onBgEventsNudgeRef) {
|
|
14009
|
+
this.logNudgeDelivery("fallback-missing-generation", currentRecord, `nudge dispatch fallback=root-session-handler cause=generation-provenance-unavailable root=${currentRecord.canonicalRoot}`);
|
|
14010
|
+
}
|
|
14011
|
+
this.onBgEventsNudge(currentRecord.identity.project_root, currentRecord.identity.session);
|
|
14012
|
+
delivered = true;
|
|
14013
|
+
}
|
|
14014
|
+
if (delivered)
|
|
14015
|
+
return;
|
|
14016
|
+
this.logNudgeDelivery("drop-no-compatible-handler", currentRecord, `nudge dropped cause=generation-provenance-unavailable-and-root-session-handler-unwired root=${currentRecord.canonicalRoot}`);
|
|
13778
14017
|
};
|
|
13779
14018
|
let sub = null;
|
|
13780
14019
|
const clearDormantSubscription = () => {
|
|
@@ -13786,7 +14025,7 @@ class SubcTransportPool {
|
|
|
13786
14025
|
return false;
|
|
13787
14026
|
this.markRootDormant(record.canonicalRoot, error2);
|
|
13788
14027
|
return true;
|
|
13789
|
-
}, clearDormantSubscription, nudgeRef, () => this.isCurrentSession(record.identityKey, record) && this.isCurrentLiveGeneration(record.canonicalRoot, record.generation));
|
|
14028
|
+
}, clearDormantSubscription, this.bgDispatchProbeIntervalMs, nudgeRef, () => this.isCurrentSession(record.identityKey, record) && this.isCurrentLiveGeneration(record.canonicalRoot, record.generation));
|
|
13790
14029
|
record.bgSub = sub;
|
|
13791
14030
|
if (!this.rootCanAttach(record.canonicalRoot)) {
|
|
13792
14031
|
record.bgSub = null;
|
|
@@ -13848,7 +14087,21 @@ class SubcTransportPool {
|
|
|
13848
14087
|
return Promise.resolve();
|
|
13849
14088
|
return registry.requestProjectRootClose(registration.concretePoolId, root, generation, cause);
|
|
13850
14089
|
}
|
|
13851
|
-
setConfigureOverride(
|
|
14090
|
+
setConfigureOverride(key, value) {
|
|
14091
|
+
if (key !== "edit_slot_survives")
|
|
14092
|
+
return;
|
|
14093
|
+
if (typeof value !== "boolean") {
|
|
14094
|
+
throw new Error("edit_slot_survives must be set once to a boolean");
|
|
14095
|
+
}
|
|
14096
|
+
if (this.editSlotSurvivesCaptured) {
|
|
14097
|
+
throw new Error("edit_slot_survives is write-once and was already captured");
|
|
14098
|
+
}
|
|
14099
|
+
this.editSlotSurvives = value;
|
|
14100
|
+
this.editSlotSurvivesCaptured = true;
|
|
14101
|
+
}
|
|
14102
|
+
getEditSlotSurvives() {
|
|
14103
|
+
return this.editSlotSurvives;
|
|
14104
|
+
}
|
|
13852
14105
|
async reconfigure(_projectRoot, _overrides) {}
|
|
13853
14106
|
async replaceBinary(path2) {
|
|
13854
14107
|
return path2;
|
|
@@ -13926,14 +14179,29 @@ function toolErrorFromResponse(command, response) {
|
|
|
13926
14179
|
return new AftToolError(message, code, response);
|
|
13927
14180
|
}
|
|
13928
14181
|
var BASH_TRANSPORT_DISPOSITION = "The transport to the AFT daemon was interrupted; no background task was created for this command and no task ID exists. Re-run the command. Do not poll bash_status for it.";
|
|
14182
|
+
var SUBC_MODULE_RESTART_DISPOSITION = "The AFT daemon module restarted while this call was in flight, so its outcome is UNKNOWN: it may or may not have executed. Verify actual state before re-running, and never blind-retry a mutation.";
|
|
14183
|
+
function isRouteGoodbyeError(error2) {
|
|
14184
|
+
if (!(error2 instanceof SubcError))
|
|
14185
|
+
return false;
|
|
14186
|
+
if (error2.code === undefined) {
|
|
14187
|
+
return error2.message.includes("route closed by subc");
|
|
14188
|
+
}
|
|
14189
|
+
return error2.code === "route_closed" && error2.message.includes("route closed by subc");
|
|
14190
|
+
}
|
|
13929
14191
|
function isTransportClassError(error2) {
|
|
13930
14192
|
return isBridgeTransportTimeout(error2) || isConsumerReconnectTransient(error2) || error2 instanceof StaleRouteHandleError || error2 instanceof SubcRootGenerationExpiredError || error2 instanceof SubcRootReapedError;
|
|
13931
14193
|
}
|
|
13932
14194
|
function adaptToolError(command, error2) {
|
|
13933
|
-
if (command !== "bash" || !isTransportClassError(error2))
|
|
13934
|
-
return error2;
|
|
13935
14195
|
if (!(error2 instanceof Error))
|
|
13936
14196
|
return error2;
|
|
14197
|
+
if (isRouteGoodbyeError(error2)) {
|
|
14198
|
+
if (error2.message.includes(SUBC_MODULE_RESTART_DISPOSITION))
|
|
14199
|
+
return error2;
|
|
14200
|
+
error2.message = error2.message ? `${error2.message} ${SUBC_MODULE_RESTART_DISPOSITION}` : SUBC_MODULE_RESTART_DISPOSITION;
|
|
14201
|
+
return error2;
|
|
14202
|
+
}
|
|
14203
|
+
if (command !== "bash" || !isTransportClassError(error2))
|
|
14204
|
+
return error2;
|
|
13937
14205
|
if (error2.message.includes(BASH_TRANSPORT_DISPOSITION))
|
|
13938
14206
|
return error2;
|
|
13939
14207
|
error2.message = error2.message ? `${error2.message} ${BASH_TRANSPORT_DISPOSITION}` : BASH_TRANSPORT_DISPOSITION;
|
|
@@ -16065,6 +16333,8 @@ class BridgePool {
|
|
|
16065
16333
|
idleTimeoutMs;
|
|
16066
16334
|
bridgeOptions;
|
|
16067
16335
|
configOverrides;
|
|
16336
|
+
editSlotSurvives;
|
|
16337
|
+
editSlotSurvivesCaptured = false;
|
|
16068
16338
|
projectConfigLoader;
|
|
16069
16339
|
logger;
|
|
16070
16340
|
cleanupTimer = null;
|
|
@@ -16089,7 +16359,16 @@ class BridgePool {
|
|
|
16089
16359
|
logger: options.logger,
|
|
16090
16360
|
childEnv: options.childEnv
|
|
16091
16361
|
};
|
|
16092
|
-
this.configOverrides = configOverrides;
|
|
16362
|
+
this.configOverrides = { ...configOverrides };
|
|
16363
|
+
const initialEditSlotSurvives = this.configOverrides.edit_slot_survives;
|
|
16364
|
+
delete this.configOverrides.edit_slot_survives;
|
|
16365
|
+
if (initialEditSlotSurvives !== undefined) {
|
|
16366
|
+
if (typeof initialEditSlotSurvives !== "boolean") {
|
|
16367
|
+
throw new Error("edit_slot_survives must be a boolean");
|
|
16368
|
+
}
|
|
16369
|
+
this.editSlotSurvives = initialEditSlotSurvives;
|
|
16370
|
+
this.editSlotSurvivesCaptured = true;
|
|
16371
|
+
}
|
|
16093
16372
|
this.startCleanupTimer();
|
|
16094
16373
|
}
|
|
16095
16374
|
getActiveBridgeForRoot(projectRoot) {
|
|
@@ -16128,7 +16407,8 @@ class BridgePool {
|
|
|
16128
16407
|
}
|
|
16129
16408
|
const projectOverrides = this.loadProjectOverrides(key);
|
|
16130
16409
|
const mergedOverrides = { ...this.configOverrides, ...projectOverrides };
|
|
16131
|
-
|
|
16410
|
+
delete mergedOverrides.edit_slot_survives;
|
|
16411
|
+
const bridge = new BinaryBridge(this.binaryPath, key, this.bridgeOptions, mergedOverrides, this.editSlotSurvivesCaptured ? this.editSlotSurvives : undefined);
|
|
16132
16412
|
this.bridges.set(key, { bridge, lastUsed: Date.now() });
|
|
16133
16413
|
return bridge;
|
|
16134
16414
|
}
|
|
@@ -16232,6 +16512,23 @@ class BridgePool {
|
|
|
16232
16512
|
error(message, meta);
|
|
16233
16513
|
}
|
|
16234
16514
|
setConfigureOverride(key, value) {
|
|
16515
|
+
if (key === "edit_slot_survives") {
|
|
16516
|
+
if (typeof value !== "boolean") {
|
|
16517
|
+
throw new Error("edit_slot_survives must be set once to a boolean");
|
|
16518
|
+
}
|
|
16519
|
+
if (this.editSlotSurvivesCaptured) {
|
|
16520
|
+
throw new Error("edit_slot_survives is write-once and was already captured");
|
|
16521
|
+
}
|
|
16522
|
+
this.editSlotSurvives = value;
|
|
16523
|
+
this.editSlotSurvivesCaptured = true;
|
|
16524
|
+
for (const entry of this.bridges.values()) {
|
|
16525
|
+
entry.bridge.setEditSlotSurvives(value);
|
|
16526
|
+
}
|
|
16527
|
+
for (const bridge of this.staleBridges) {
|
|
16528
|
+
bridge.setEditSlotSurvives(value);
|
|
16529
|
+
}
|
|
16530
|
+
return;
|
|
16531
|
+
}
|
|
16235
16532
|
if (value === undefined) {
|
|
16236
16533
|
delete this.configOverrides[key];
|
|
16237
16534
|
} else {
|
|
@@ -16289,6 +16586,7 @@ class RevivableTransportPool {
|
|
|
16289
16586
|
revival = null;
|
|
16290
16587
|
transports = new Map;
|
|
16291
16588
|
configureOverrides = new Map;
|
|
16589
|
+
editSlotSurvivesCaptured = false;
|
|
16292
16590
|
constructor(initialPool, createPool, onBinaryReplaced) {
|
|
16293
16591
|
this.createPool = createPool;
|
|
16294
16592
|
this.onBinaryReplaced = onBinaryReplaced;
|
|
@@ -16319,6 +16617,18 @@ class RevivableTransportPool {
|
|
|
16319
16617
|
return this.getBridge(projectRoot).toolCall(runtime.sessionID, name, rawArgs, options);
|
|
16320
16618
|
}
|
|
16321
16619
|
setConfigureOverride(key, value) {
|
|
16620
|
+
if (key === "edit_slot_survives") {
|
|
16621
|
+
if (typeof value !== "boolean") {
|
|
16622
|
+
throw new Error("edit_slot_survives must be set once to a boolean");
|
|
16623
|
+
}
|
|
16624
|
+
if (this.editSlotSurvivesCaptured) {
|
|
16625
|
+
throw new Error("edit_slot_survives is write-once and was already captured");
|
|
16626
|
+
}
|
|
16627
|
+
this.activePool.setConfigureOverride(key, value);
|
|
16628
|
+
this.editSlotSurvivesCaptured = true;
|
|
16629
|
+
this.configureOverrides.set(key, value);
|
|
16630
|
+
return;
|
|
16631
|
+
}
|
|
16322
16632
|
if (value === undefined)
|
|
16323
16633
|
this.configureOverrides.delete(key);
|
|
16324
16634
|
else
|
|
@@ -16326,14 +16636,20 @@ class RevivableTransportPool {
|
|
|
16326
16636
|
this.activePool.setConfigureOverride(key, value);
|
|
16327
16637
|
}
|
|
16328
16638
|
async reconfigure(projectRoot, overrides) {
|
|
16639
|
+
const pool = await this.ensureActivePool();
|
|
16640
|
+
const runtimeOverrides = {};
|
|
16329
16641
|
for (const [key, value] of Object.entries(overrides)) {
|
|
16642
|
+
if (key === "edit_slot_survives") {
|
|
16643
|
+
this.setConfigureOverride(key, value);
|
|
16644
|
+
continue;
|
|
16645
|
+
}
|
|
16330
16646
|
if (value === undefined)
|
|
16331
16647
|
this.configureOverrides.delete(key);
|
|
16332
16648
|
else
|
|
16333
16649
|
this.configureOverrides.set(key, value);
|
|
16650
|
+
runtimeOverrides[key] = value;
|
|
16334
16651
|
}
|
|
16335
|
-
|
|
16336
|
-
await pool.reconfigure(projectRoot, overrides);
|
|
16652
|
+
await pool.reconfigure(projectRoot, runtimeOverrides);
|
|
16337
16653
|
}
|
|
16338
16654
|
async replaceBinary(path2) {
|
|
16339
16655
|
const replaced = await this.activePool.replaceBinary(path2);
|
|
@@ -16739,6 +17055,12 @@ var UNKNOWN_COMPLETION_TTL_MS = 5000;
|
|
|
16739
17055
|
var UNKNOWN_COMPLETION_CAP = 32;
|
|
16740
17056
|
var DEFAULT_SESSION_ID2 = "__default__";
|
|
16741
17057
|
var LOG_PREFIX = "[aft-pi] bg-notifications:";
|
|
17058
|
+
var SUBC_NUDGE_LOG_INTERVAL_MS = 60000;
|
|
17059
|
+
var subcNudgesInFlight = new Map;
|
|
17060
|
+
var subcNudgeLogState = new Map;
|
|
17061
|
+
function normalizeSessionID(sessionID) {
|
|
17062
|
+
return sessionID && sessionID.length > 0 ? sessionID : DEFAULT_SESSION_ID2;
|
|
17063
|
+
}
|
|
16742
17064
|
function consumeBgCompletion(sessionID, taskId) {
|
|
16743
17065
|
const state = stateFor(sessionID);
|
|
16744
17066
|
state.pendingCompletions = state.pendingCompletions.filter((c) => c.task_id !== taskId);
|
|
@@ -16934,11 +17256,49 @@ async function handleTurnEndBgCompletions(drainContext) {
|
|
|
16934
17256
|
stateFor(drainContext.sessionID).wakeDeferredTaskIds.clear();
|
|
16935
17257
|
await triggerWakeIfPending(drainContext, false, true);
|
|
16936
17258
|
}
|
|
16937
|
-
|
|
17259
|
+
function handleSubcBgEventsNudge(drainContext) {
|
|
17260
|
+
const resolvedDrainContext = {
|
|
17261
|
+
...drainContext,
|
|
17262
|
+
sessionID: normalizeSessionID(drainContext.sessionID)
|
|
17263
|
+
};
|
|
17264
|
+
const key = `${resolvedDrainContext.directory}\x00${resolvedDrainContext.sessionID}`;
|
|
17265
|
+
const inFlight = subcNudgesInFlight.get(key);
|
|
17266
|
+
if (inFlight) {
|
|
17267
|
+
logSubcNudgeLifecycle(resolvedDrainContext, "coalesced-in-flight", "nudge coalesced cause=handler-already-in-flight");
|
|
17268
|
+
return inFlight;
|
|
17269
|
+
}
|
|
17270
|
+
logSubcNudgeLifecycle(resolvedDrainContext, "handler-entry", "nudge handler entered");
|
|
17271
|
+
const handling = handleSubcBgEventsNudgeOnce(resolvedDrainContext);
|
|
17272
|
+
subcNudgesInFlight.set(key, handling);
|
|
17273
|
+
const clear = () => {
|
|
17274
|
+
if (subcNudgesInFlight.get(key) === handling)
|
|
17275
|
+
subcNudgesInFlight.delete(key);
|
|
17276
|
+
};
|
|
17277
|
+
handling.then(clear, clear);
|
|
17278
|
+
return handling;
|
|
17279
|
+
}
|
|
17280
|
+
async function handleSubcBgEventsNudgeOnce(drainContext) {
|
|
16938
17281
|
bridgeForDrain(drainContext);
|
|
16939
17282
|
stateFor(drainContext.sessionID).wakeDeferredTaskIds.clear();
|
|
16940
17283
|
await triggerWakeIfPending(drainContext, false, true, true);
|
|
16941
17284
|
}
|
|
17285
|
+
function logSubcNudgeLifecycle(drainContext, kind, message) {
|
|
17286
|
+
const key = `${kind}\x00${drainContext.directory}\x00${drainContext.sessionID}`;
|
|
17287
|
+
const now = Date.now();
|
|
17288
|
+
const state = subcNudgeLogState.get(key);
|
|
17289
|
+
if (state && now - state.lastEmittedAt < SUBC_NUDGE_LOG_INTERVAL_MS) {
|
|
17290
|
+
state.suppressed += 1;
|
|
17291
|
+
return;
|
|
17292
|
+
}
|
|
17293
|
+
const suppressed = state?.suppressed ?? 0;
|
|
17294
|
+
subcNudgeLogState.set(key, { lastEmittedAt: now, suppressed: 0 });
|
|
17295
|
+
sessionLog(drainContext.sessionID, `${LOG_PREFIX} ${message}`, {
|
|
17296
|
+
event: "subc_bg_nudge_delivery",
|
|
17297
|
+
cause: kind,
|
|
17298
|
+
canonical_root: drainContext.directory,
|
|
17299
|
+
suppressed
|
|
17300
|
+
});
|
|
17301
|
+
}
|
|
16942
17302
|
async function triggerWakeIfPending(drainContext, skipDrain, includeDeferredCompletions = true, forceDrain = false) {
|
|
16943
17303
|
const state = stateFor(drainContext.sessionID);
|
|
16944
17304
|
if (!skipDrain && (forceDrain || state.outstandingTaskIds.size > 0 || !state.forcedDrainCompleted)) {
|
|
@@ -17406,7 +17766,7 @@ import {
|
|
|
17406
17766
|
// package.json
|
|
17407
17767
|
var package_default = {
|
|
17408
17768
|
name: "@cortexkit/aft-pi",
|
|
17409
|
-
version: "0.
|
|
17769
|
+
version: "0.50.0",
|
|
17410
17770
|
type: "module",
|
|
17411
17771
|
description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
17412
17772
|
main: "dist/index.js",
|
|
@@ -17429,19 +17789,19 @@ var package_default = {
|
|
|
17429
17789
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
17430
17790
|
},
|
|
17431
17791
|
dependencies: {
|
|
17432
|
-
"@cortexkit/aft-bridge": "0.
|
|
17792
|
+
"@cortexkit/aft-bridge": "0.50.0",
|
|
17433
17793
|
"comment-json": "^5.0.0",
|
|
17434
17794
|
diff: "^8.0.4",
|
|
17435
17795
|
typebox: "1.1.38",
|
|
17436
17796
|
zod: "^4.4.3"
|
|
17437
17797
|
},
|
|
17438
17798
|
optionalDependencies: {
|
|
17439
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
17440
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
17441
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
17442
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
17443
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
17444
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
17799
|
+
"@cortexkit/aft-darwin-arm64": "0.50.0",
|
|
17800
|
+
"@cortexkit/aft-darwin-x64": "0.50.0",
|
|
17801
|
+
"@cortexkit/aft-linux-arm64": "0.50.0",
|
|
17802
|
+
"@cortexkit/aft-linux-x64": "0.50.0",
|
|
17803
|
+
"@cortexkit/aft-win32-arm64": "0.50.0",
|
|
17804
|
+
"@cortexkit/aft-win32-x64": "0.50.0"
|
|
17445
17805
|
},
|
|
17446
17806
|
devDependencies: {
|
|
17447
17807
|
"@earendil-works/pi-coding-agent": "^0.80.2",
|
|
@@ -32502,6 +32862,7 @@ var BackupConfigSchema = exports_external.object({
|
|
|
32502
32862
|
var AftConfigSchema = exports_external.preprocess((value) => stripHarnessSpecificConfigKeys(value, OPENCODE_ONLY_KEYS), exports_external.object({
|
|
32503
32863
|
$schema: exports_external.string().optional(),
|
|
32504
32864
|
enabled: exports_external.boolean().optional(),
|
|
32865
|
+
edit_mode: exports_external.enum(["default", "hashline"]).optional(),
|
|
32505
32866
|
format_on_edit: exports_external.boolean().optional(),
|
|
32506
32867
|
formatter_timeout_secs: exports_external.number().int().min(1).max(600).optional(),
|
|
32507
32868
|
validate_on_edit: exports_external.enum(["syntax", "full"]).optional(),
|
|
@@ -32715,10 +33076,15 @@ function loadConfigFromPath(configPath) {
|
|
|
32715
33076
|
}
|
|
32716
33077
|
}
|
|
32717
33078
|
function parseConfigPartially(rawConfig) {
|
|
33079
|
+
let configForParsing = rawConfig;
|
|
33080
|
+
if (Object.hasOwn(rawConfig, "edit_mode") && rawConfig.edit_mode !== "default" && rawConfig.edit_mode !== "hashline") {
|
|
33081
|
+
warn2(`Unknown edit_mode value ${JSON.stringify(rawConfig.edit_mode)}; falling back to "default"`);
|
|
33082
|
+
configForParsing = { ...rawConfig, edit_mode: "default" };
|
|
33083
|
+
}
|
|
32718
33084
|
const partialConfig = {};
|
|
32719
33085
|
const invalidSections = [];
|
|
32720
|
-
for (const key of Object.keys(
|
|
32721
|
-
const sectionResult = AftConfigSchema.safeParse({ [key]:
|
|
33086
|
+
for (const key of Object.keys(configForParsing)) {
|
|
33087
|
+
const sectionResult = AftConfigSchema.safeParse({ [key]: configForParsing[key] });
|
|
32722
33088
|
if (sectionResult.success) {
|
|
32723
33089
|
const parsed = sectionResult.data;
|
|
32724
33090
|
if (parsed[key] !== undefined) {
|
|
@@ -32843,6 +33209,7 @@ function getProjectLspStrippedKeys(lsp) {
|
|
|
32843
33209
|
}
|
|
32844
33210
|
var PROJECT_SAFE_TOP_LEVEL_FIELDS = new Set([
|
|
32845
33211
|
"enabled",
|
|
33212
|
+
"edit_mode",
|
|
32846
33213
|
"tool_surface",
|
|
32847
33214
|
"format_on_edit",
|
|
32848
33215
|
"validate_on_edit",
|
|
@@ -35190,6 +35557,15 @@ var EditParams = Type2.Object({
|
|
|
35190
35557
|
description: "Batch edits — non-empty array of { oldString, newString }, { oldString, newString, replaceAll: true }, or { startLine, endLine, content } objects applied atomically."
|
|
35191
35558
|
}))
|
|
35192
35559
|
});
|
|
35560
|
+
var HashlineEditParams = Type2.Object({
|
|
35561
|
+
patch: Type2.String({
|
|
35562
|
+
minLength: 1,
|
|
35563
|
+
description: "Hashline patch text with one or more [path#TAG] sections and PUT/CUT/REM/MV operations"
|
|
35564
|
+
})
|
|
35565
|
+
}, { additionalProperties: false });
|
|
35566
|
+
function stringList(value) {
|
|
35567
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
35568
|
+
}
|
|
35193
35569
|
var GrepParams = Type2.Object({
|
|
35194
35570
|
pattern: Type2.String({ description: "Regex pattern to search for" }),
|
|
35195
35571
|
path: Type2.Optional(Type2.String({
|
|
@@ -35354,7 +35730,42 @@ PDFs aren't supported on the Pi harness yet.`, response);
|
|
|
35354
35730
|
}
|
|
35355
35731
|
}));
|
|
35356
35732
|
}
|
|
35357
|
-
if (surface.hoistEdit) {
|
|
35733
|
+
if (surface.hoistEdit && ctx.hashlineEffective === true) {
|
|
35734
|
+
pi.registerTool({
|
|
35735
|
+
name: "edit",
|
|
35736
|
+
label: "edit",
|
|
35737
|
+
description: "Apply a hashline patch. Arguments are exactly `{patch}` where `patch` is a non-empty string of one or more `[path#TAG]` sections with PUT/CUT/REM/MV operations. Paths and tags come from section headers; obtain tags from tagged reads. Server-owned preview control is outside this schema.",
|
|
35738
|
+
promptSnippet: "Apply a tagged hashline patch through the edit tool",
|
|
35739
|
+
promptGuidelines: [
|
|
35740
|
+
"Read a file to obtain its current hashline tag before editing it.",
|
|
35741
|
+
"Pass exactly one patch string; paths and tags belong in patch section headers."
|
|
35742
|
+
],
|
|
35743
|
+
parameters: HashlineEditParams,
|
|
35744
|
+
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
35745
|
+
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
35746
|
+
const rawArgs = { patch: params.patch };
|
|
35747
|
+
const preflight = await callToolCall(bridge, "hashline_preflight", rawArgs, extCtx);
|
|
35748
|
+
if (preflight.success === false)
|
|
35749
|
+
throw toolErrorFromResponse("edit", preflight);
|
|
35750
|
+
for (const target of [
|
|
35751
|
+
...stringList(preflight.affected_paths),
|
|
35752
|
+
...stringList(preflight.mv_destinations)
|
|
35753
|
+
]) {
|
|
35754
|
+
await assertExternalDirectoryPermission(extCtx, await resolvePathArg(extCtx.cwd, target), {
|
|
35755
|
+
restrictToProjectRoot: surface.restrictToProjectRoot
|
|
35756
|
+
});
|
|
35757
|
+
}
|
|
35758
|
+
const preview = await callToolCall(bridge, "edit", rawArgs, extCtx, { preview: true });
|
|
35759
|
+
if (preview.success === false)
|
|
35760
|
+
throw toolErrorFromResponse("edit", preview);
|
|
35761
|
+
const response = await callToolCall(bridge, "edit", rawArgs, extCtx);
|
|
35762
|
+
if (response.success === false)
|
|
35763
|
+
throw toolErrorFromResponse("edit", response);
|
|
35764
|
+
return buildMutationResult(response);
|
|
35765
|
+
}
|
|
35766
|
+
});
|
|
35767
|
+
}
|
|
35768
|
+
if (surface.hoistEdit && ctx.hashlineEffective !== true) {
|
|
35358
35769
|
pi.registerTool(withPathAliasPreparation({
|
|
35359
35770
|
name: "edit",
|
|
35360
35771
|
label: "edit",
|
|
@@ -38574,7 +38985,7 @@ var PLUGIN_VERSION = (() => {
|
|
|
38574
38985
|
return "0.0.0";
|
|
38575
38986
|
}
|
|
38576
38987
|
})();
|
|
38577
|
-
var ANNOUNCEMENT_VERSION = "0.
|
|
38988
|
+
var ANNOUNCEMENT_VERSION = "0.50.0";
|
|
38578
38989
|
var ANNOUNCEMENT_FEATURES = [
|
|
38579
38990
|
"Callgraph stays consistent under load: edits arriving mid-rebuild can no longer be silently lost from navigation results.",
|
|
38580
38991
|
"aft_zoom handles real-world .jsonc: files with comment banners above the opening brace now resolve, and not-found errors point at the segment that actually failed (thanks @iceteaSA).",
|
|
@@ -38850,6 +39261,16 @@ ${lines}
|
|
|
38850
39261
|
poolOptions,
|
|
38851
39262
|
configOverrides,
|
|
38852
39263
|
subcConnectionFile: config2.subc?.connection_file,
|
|
39264
|
+
onBgEventsNudge: (directory, sessionID) => {
|
|
39265
|
+
handleSubcBgEventsNudge({
|
|
39266
|
+
ctx,
|
|
39267
|
+
directory,
|
|
39268
|
+
sessionID,
|
|
39269
|
+
runtime: pi
|
|
39270
|
+
}).catch((err) => {
|
|
39271
|
+
warn2(`[aft-pi] bg nudge rejected: ${err instanceof Error ? err.message : String(err)}`);
|
|
39272
|
+
});
|
|
39273
|
+
},
|
|
38853
39274
|
onBgEventsNudgeRef: (ref) => {
|
|
38854
39275
|
handleSubcBgEventsNudge({
|
|
38855
39276
|
ctx,
|
|
@@ -38874,8 +39295,16 @@ ${lines}
|
|
|
38874
39295
|
});
|
|
38875
39296
|
}
|
|
38876
39297
|
pool.setConfigureOverride("harness", "pi");
|
|
38877
|
-
|
|
38878
|
-
const
|
|
39298
|
+
const surface = resolvePiToolSurface(config2);
|
|
39299
|
+
const hashlineEditRegistered = config2.edit_mode === "hashline" && surface.hoistEdit;
|
|
39300
|
+
pool.setConfigureOverride("edit_slot_survives", hashlineEditRegistered);
|
|
39301
|
+
pool.setConfigureOverride("aft_search_registered", surface.semantic);
|
|
39302
|
+
const ctx = {
|
|
39303
|
+
pool,
|
|
39304
|
+
config: config2,
|
|
39305
|
+
hashlineEffective: hashlineEditRegistered,
|
|
39306
|
+
storageDir
|
|
39307
|
+
};
|
|
38879
39308
|
if (onnxRuntimePromise) {
|
|
38880
39309
|
onnxRuntimePromise.then((ortDylibDir) => {
|
|
38881
39310
|
if (ortDylibDir) {
|
|
@@ -38913,7 +39342,6 @@ ${lines}
|
|
|
38913
39342
|
if (ANNOUNCEMENT_VERSION && ANNOUNCEMENT_FEATURES.length > 0) {
|
|
38914
39343
|
sendFeatureAnnouncement(ANNOUNCEMENT_VERSION, ANNOUNCEMENT_FEATURES, ANNOUNCEMENT_FOOTER, storageDir);
|
|
38915
39344
|
}
|
|
38916
|
-
const surface = resolvePiToolSurface(config2);
|
|
38917
39345
|
registerPiToolSurface(pi, ctx, surface);
|
|
38918
39346
|
registerWorkflowHints(pi, config2, surface);
|
|
38919
39347
|
registerStatusCommand(pi, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyDjD;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuFD;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/E,OAAO,CAAC,IAAI,CAAC,CA6Bf;
|
|
1
|
+
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyDjD;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuFD;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/E,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAiHD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,kEAAkE;AAClE,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA8ED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CA0SN;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,eAAe,CAAC,mBAAmB,CAAC,CAmFtC;AAuED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAON;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,IAAI,CAmDlB;AAQD;6BAC6B;AAC7B,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B3D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,OAAO,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER"}
|
package/dist/types.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ import type { AftConfig } from "./config.js";
|
|
|
12
12
|
export interface PluginContext {
|
|
13
13
|
pool: AftTransportPool;
|
|
14
14
|
config: AftConfig;
|
|
15
|
+
/** Whether hashline edit/read mode is active for this plugin registration. */
|
|
16
|
+
hashlineEffective?: boolean;
|
|
15
17
|
/** Absolute path to AFT's data storage dir (e.g. ~/.local/share/cortexkit/aft). */
|
|
16
18
|
storageDir: string;
|
|
17
19
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/aft-pi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@cortexkit/aft-bridge": "0.
|
|
26
|
+
"@cortexkit/aft-bridge": "0.50.0",
|
|
27
27
|
"comment-json": "^5.0.0",
|
|
28
28
|
"diff": "^8.0.4",
|
|
29
29
|
"typebox": "1.1.38",
|
|
30
30
|
"zod": "^4.4.3"
|
|
31
31
|
},
|
|
32
32
|
"optionalDependencies": {
|
|
33
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
34
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
35
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
36
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
37
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
38
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
33
|
+
"@cortexkit/aft-darwin-arm64": "0.50.0",
|
|
34
|
+
"@cortexkit/aft-darwin-x64": "0.50.0",
|
|
35
|
+
"@cortexkit/aft-linux-arm64": "0.50.0",
|
|
36
|
+
"@cortexkit/aft-linux-x64": "0.50.0",
|
|
37
|
+
"@cortexkit/aft-win32-arm64": "0.50.0",
|
|
38
|
+
"@cortexkit/aft-win32-x64": "0.50.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@earendil-works/pi-coding-agent": "^0.80.2",
|