@cortexkit/aft-bridge 0.35.0 → 0.35.2

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.
@@ -0,0 +1,35 @@
1
+ /** Shape of the Rust mutation response fields this helper reads. */
2
+ export interface EditSummaryInput {
3
+ /** Files modified in a multi-file transaction (Rust `files_modified`). */
4
+ files_modified?: number;
5
+ /** Number of match replacements (find/replace, replaceAll). */
6
+ replacements?: number;
7
+ /** Number of edits applied in batch mode (Rust `edits_applied`). */
8
+ edits_applied?: number;
9
+ /** True when a new file was created (append/write create path). */
10
+ created?: boolean;
11
+ /** True when the post-write content is byte-identical to before. */
12
+ no_op?: boolean;
13
+ /** True when the write was reverted (e.g. generated invalid syntax). */
14
+ rolled_back?: boolean;
15
+ /** Whether the file was auto-formatted after the write. */
16
+ formatted?: boolean;
17
+ /** Diff counts. before/after content is intentionally ignored here. */
18
+ diff?: {
19
+ additions?: number;
20
+ deletions?: number;
21
+ };
22
+ }
23
+ /**
24
+ * Build the compact agent-facing summary line for a successful mutation.
25
+ *
26
+ * Returns just the headline sentence; callers append their own conditional
27
+ * notes (no-op, format-skip, LSP diagnostics, pending/exited servers) which
28
+ * already exist per-plugin and carry real signal.
29
+ *
30
+ * Honesty: when `rolled_back` is true the change did NOT land, so we never say
31
+ * "applied" — we say the file was left unchanged. This was previously buried
32
+ * inside a raw `"rolled_back":false` JSON field the agent had to parse.
33
+ */
34
+ export declare function formatEditSummary(data: EditSummaryInput): string;
35
+ //# sourceMappingURL=edit-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-summary.d.ts","sourceRoot":"","sources":["../src/edit-summary.ts"],"names":[],"mappings":"AAeA,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAqChE"}
@@ -0,0 +1,62 @@
1
+ // Shared, compact agent-facing summary for file-mutation tool results
2
+ // (edit / write / apply_patch transaction). Both the OpenCode and Pi plugins
3
+ // render the SAME agent-facing text from this helper so the two harnesses stay
4
+ // in parity.
5
+ //
6
+ // Design (see session decision): the agent already supplied the path and the
7
+ // content it wants, so we do NOT echo the file path, the before/after content,
8
+ // or the raw Rust JSON envelope back to the model. Doing so makes the payload
9
+ // scale with file size, not edit size. The rich data (diff body, backup id,
10
+ // status-bar counts, etc.) stays in the plugin's UI `metadata`/`details`; the
11
+ // status-bar line is injected separately by the bridge layer.
12
+ //
13
+ // The model only needs: did it apply, how much changed (cheap confirmation),
14
+ // and any signal it must act on (rollback, no-op, format-skip, LSP errors).
15
+ /**
16
+ * Build the compact agent-facing summary line for a successful mutation.
17
+ *
18
+ * Returns just the headline sentence; callers append their own conditional
19
+ * notes (no-op, format-skip, LSP diagnostics, pending/exited servers) which
20
+ * already exist per-plugin and carry real signal.
21
+ *
22
+ * Honesty: when `rolled_back` is true the change did NOT land, so we never say
23
+ * "applied" — we say the file was left unchanged. This was previously buried
24
+ * inside a raw `"rolled_back":false` JSON field the agent had to parse.
25
+ */
26
+ export function formatEditSummary(data) {
27
+ // Rollback is the one case where "applied" would be a lie. The write was
28
+ // reverted (typically because the result failed syntax validation), so the
29
+ // file is unchanged and the agent must retry differently.
30
+ if (data.rolled_back === true) {
31
+ return "Edit rolled back: the change produced invalid syntax, so the file was left unchanged.";
32
+ }
33
+ // Multi-file transaction (operations array): report file count, not per-file
34
+ // diffs (those are in the UI metadata).
35
+ if (typeof data.files_modified === "number") {
36
+ const n = data.files_modified;
37
+ return `Applied edits to ${n} file${n === 1 ? "" : "s"}.`;
38
+ }
39
+ const additions = data.diff?.additions ?? 0;
40
+ const deletions = data.diff?.deletions ?? 0;
41
+ const counts = `+${additions}/-${deletions}`;
42
+ // Append/write create path.
43
+ if (data.created === true) {
44
+ let s = `Created file (${counts}).`;
45
+ if (data.formatted)
46
+ s += " Auto-formatted.";
47
+ return s;
48
+ }
49
+ // Batch mode reports edits_applied; replaceAll reports replacements > 1.
50
+ let detail = counts;
51
+ if (typeof data.edits_applied === "number" && data.edits_applied > 1) {
52
+ detail = `${counts}, ${data.edits_applied} edits`;
53
+ }
54
+ else if (typeof data.replacements === "number" && data.replacements > 1) {
55
+ detail = `${counts}, ${data.replacements} replacements`;
56
+ }
57
+ let s = `Edited (${detail}).`;
58
+ if (data.formatted)
59
+ s += " Auto-formatted.";
60
+ return s;
61
+ }
62
+ //# sourceMappingURL=edit-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-summary.js","sourceRoot":"","sources":["../src/edit-summary.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAC/E,aAAa;AACb,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAsB5E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAsB;IACtD,yEAAyE;IACzE,2EAA2E;IAC3E,0DAA0D;IAC1D,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,uFAAuF,CAAC;IACjG,CAAC;IAED,6EAA6E;IAC7E,wCAAwC;IACxC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC9B,OAAO,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;IAE7C,4BAA4B;IAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,iBAAiB,MAAM,IAAI,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,IAAI,kBAAkB,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yEAAyE;IACzE,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC,aAAa,QAAQ,CAAC;IACpD,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC,YAAY,eAAe,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,GAAG,WAAW,MAAM,IAAI,CAAC;IAC9B,IAAI,IAAI,CAAC,SAAS;QAAE,CAAC,IAAI,kBAAkB,CAAC;IAC5C,OAAO,CAAC,CAAC;AACX,CAAC"}
package/dist/index.d.ts CHANGED
@@ -11,17 +11,22 @@ export { maybeAppendConflictsHint, maybeAppendGrepHint } from "./bash-hints.js";
11
11
  export type { BashCompletedPayload, BashLongRunningPayload, BridgeOptions, BridgeRequestOptions, ConfigureWarning, ConfigureWarningsContext, StatusSnapshot, } from "./bridge.js";
12
12
  export { BinaryBridge, compareSemver, tagStderrLine } from "./bridge.js";
13
13
  export { downloadBinary, ensureBinary, getBinaryName, getCacheDir, getCachedBinaryPath, } from "./downloader.js";
14
+ export type { EditSummaryInput } from "./edit-summary.js";
15
+ export { formatEditSummary } from "./edit-summary.js";
14
16
  export { compressionSavingsPercent, formatTokenCount } from "./format.js";
17
+ export { stripJsoncSymbols } from "./jsonc.js";
15
18
  export type { Logger, LogMeta } from "./logger.js";
16
19
  export type { MigrationHarness, MigrationOptions, MigrationStatus } from "./migration.js";
17
20
  export { ensureStorageMigrated, getMigrationStatus, resolveCortexKitStorageRoot, resolveLegacyStorageRoot, } from "./migration.js";
21
+ export type { ResolvedNpm } from "./npm-resolver.js";
22
+ export { isNpmAvailable, npmSpawnEnv, probeNpmVersion, resolveNpm, } from "./npm-resolver.js";
18
23
  export { __test__ as __onnxTest__, cleanupOnnxRuntime, ensureOnnxRuntime, getManualInstallHint, isOrtAutoDownloadSupported, } from "./onnx-runtime.js";
19
24
  export { markAnnouncementSeen, repairRootScopedStorageFile, resolveHarnessStoragePath, shouldShowAnnouncement, } from "./paths.js";
20
25
  export { PLATFORM_ARCH_MAP, PLATFORM_ASSET_MAP } from "./platform.js";
21
26
  export type { PoolOptions } from "./pool.js";
22
27
  export { BridgePool, HomeProjectRootError, isHomeDirectoryRoot } from "./pool.js";
23
28
  export type { AftErrorResponse, AftPushFrame, AftRequestEnvelope, AftResponse, AftSuccessResponse, BashCompletedFrame, BgCompletion, ConfigureWarningFrame, PermissionAskFrame, ProgressFrame, StatusCompression, StatusCompressionAggregate, StatusResponse, } from "./protocol.js";
24
- export { findBinary, findBinarySync, platformKey } from "./resolver.js";
29
+ export { findBinary, findBinarySync, isNativeExecutable, platformKey } from "./resolver.js";
25
30
  export type { StatusBarCounts, StatusBarEmitState } from "./status-bar.js";
26
31
  export { createStatusBarEmitState, formatStatusBar, parseStatusBarCounts, STATUS_BAR_HEARTBEAT_CALLS, shouldEmitStatusBar, statusBarLine, } from "./status-bar.js";
27
32
  export type { ZoomMultiTargetEntry, ZoomMultiTargetResult, ZoomMultiTargetSymbolResult, ZoomResponseLike, } from "./zoom-format.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElF,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAElF,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5F,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -14,17 +14,21 @@ export { maybeAppendConflictsHint, maybeAppendGrepHint } from "./bash-hints.js";
14
14
  export { BinaryBridge, compareSemver, tagStderrLine } from "./bridge.js";
15
15
  // --- binary resolution ---
16
16
  export { downloadBinary, ensureBinary, getBinaryName, getCacheDir, getCachedBinaryPath, } from "./downloader.js";
17
+ export { formatEditSummary } from "./edit-summary.js";
17
18
  // --- compact UI formatting ---
18
19
  export { compressionSavingsPercent, formatTokenCount } from "./format.js";
20
+ // --- jsonc helpers ---
21
+ export { stripJsoncSymbols } from "./jsonc.js";
19
22
  // --- storage migration ---
20
23
  export { ensureStorageMigrated, getMigrationStatus, resolveCortexKitStorageRoot, resolveLegacyStorageRoot, } from "./migration.js";
24
+ export { isNpmAvailable, npmSpawnEnv, probeNpmVersion, resolveNpm, } from "./npm-resolver.js";
21
25
  // --- ONNX runtime ---
22
26
  export { __test__ as __onnxTest__, cleanupOnnxRuntime, ensureOnnxRuntime, getManualInstallHint, isOrtAutoDownloadSupported, } from "./onnx-runtime.js";
23
27
  export { markAnnouncementSeen, repairRootScopedStorageFile, resolveHarnessStoragePath, shouldShowAnnouncement, } from "./paths.js";
24
28
  // --- platform helpers ---
25
29
  export { PLATFORM_ARCH_MAP, PLATFORM_ASSET_MAP } from "./platform.js";
26
30
  export { BridgePool, HomeProjectRootError, isHomeDirectoryRoot } from "./pool.js";
27
- export { findBinary, findBinarySync, platformKey } from "./resolver.js";
31
+ export { findBinary, findBinarySync, isNativeExecutable, platformKey } from "./resolver.js";
28
32
  export { createStatusBarEmitState, formatStatusBar, parseStatusBarCounts, STATUS_BAR_HEARTBEAT_CALLS, shouldEmitStatusBar, statusBarLine, } from "./status-bar.js";
29
33
  export { formatZoomMultiTargetResult, formatZoomText } from "./zoom-format.js";
30
34
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,0DAA0D;AAC1D,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAUhF,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,4BAA4B;AAC5B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,gCAAgC;AAChC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1E,4BAA4B;AAC5B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,uBAAuB;AACvB,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAiBlF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,0DAA0D;AAC1D,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAUhF,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,4BAA4B;AAC5B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,gCAAgC;AAChC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1E,wBAAwB;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,4BAA4B;AAC5B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,uBAAuB;AACvB,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAiBlF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,GACd,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * JSONC parse helpers shared by host plugins.
3
+ *
4
+ * `comment-json` preserves comments by attaching `Symbol(before:<key>)` /
5
+ * `Symbol(after:<key>)` properties to the parsed objects. Those symbol keys are
6
+ * exactly what lets the migration round-trip rewrite a config without losing
7
+ * user comments, but they are poison for anything that walks own-property keys
8
+ * and stringifies them. Zod's validation builds error paths through the object
9
+ * and interpolates each key into a string; the instant a comment symbol lands
10
+ * in an error path (`path.join(".")` or a template literal), Node throws
11
+ * `TypeError: Cannot convert a symbol to a string`, the whole config load is
12
+ * caught by the outer try/catch, and every setting silently falls back to its
13
+ * default. See issue #88.
14
+ *
15
+ * For the in-memory load path we don't need the comments, so we deep-copy the
16
+ * parsed result into plain objects that carry only string-keyed enumerable
17
+ * properties. The disk-rewrite/migration path keeps the original symbol-bearing
18
+ * object so comments survive the round-trip.
19
+ */
20
+ export declare function stripJsoncSymbols<T>(value: T): T;
21
+ //# sourceMappingURL=jsonc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAchD"}
package/dist/jsonc.js ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * JSONC parse helpers shared by host plugins.
3
+ *
4
+ * `comment-json` preserves comments by attaching `Symbol(before:<key>)` /
5
+ * `Symbol(after:<key>)` properties to the parsed objects. Those symbol keys are
6
+ * exactly what lets the migration round-trip rewrite a config without losing
7
+ * user comments, but they are poison for anything that walks own-property keys
8
+ * and stringifies them. Zod's validation builds error paths through the object
9
+ * and interpolates each key into a string; the instant a comment symbol lands
10
+ * in an error path (`path.join(".")` or a template literal), Node throws
11
+ * `TypeError: Cannot convert a symbol to a string`, the whole config load is
12
+ * caught by the outer try/catch, and every setting silently falls back to its
13
+ * default. See issue #88.
14
+ *
15
+ * For the in-memory load path we don't need the comments, so we deep-copy the
16
+ * parsed result into plain objects that carry only string-keyed enumerable
17
+ * properties. The disk-rewrite/migration path keeps the original symbol-bearing
18
+ * object so comments survive the round-trip.
19
+ */
20
+ export function stripJsoncSymbols(value) {
21
+ if (Array.isArray(value)) {
22
+ return value.map((item) => stripJsoncSymbols(item));
23
+ }
24
+ if (value !== null && typeof value === "object") {
25
+ const out = {};
26
+ // Object.entries only yields string-keyed enumerable own properties, so the
27
+ // comment symbols are dropped here by construction.
28
+ for (const [key, val] of Object.entries(value)) {
29
+ out[key] = stripJsoncSymbols(val);
30
+ }
31
+ return out;
32
+ }
33
+ return value;
34
+ }
35
+ //# sourceMappingURL=jsonc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAI,KAAQ;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAiB,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,4EAA4E;QAC5E,oDAAoD;QACpD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,GAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,42 @@
1
+ export interface ResolvedNpm {
2
+ /** Absolute path to the npm executable (or a bare name if only PATH-resolved). */
3
+ command: string;
4
+ /** Directory containing npm, prepended to PATH at spawn time so npm's
5
+ * `#!/usr/bin/env node` shebang can find its sibling node. Null when the
6
+ * command was found via the OS PATH resolver and no augmentation is needed. */
7
+ binDir: string | null;
8
+ }
9
+ interface ResolveNpmDeps {
10
+ platform: NodeJS.Platform;
11
+ env: NodeJS.ProcessEnv;
12
+ home: string;
13
+ execPath: string;
14
+ /**
15
+ * Absolute system bin directories scanned last (e.g. /usr/local/bin). Defaults
16
+ * to the platform's well-known list. Injectable so tests can pass `[]` to stay
17
+ * hermetic — otherwise a real system npm (present on CI runners) leaks in and
18
+ * breaks the "returns null" cases.
19
+ */
20
+ systemNpmDirs?: string[];
21
+ }
22
+ /**
23
+ * Resolve npm, preferring PATH, then node-adjacent, then well-known version
24
+ * manager / system locations. Returns null only when npm genuinely cannot be
25
+ * found anywhere we know to look.
26
+ */
27
+ export declare function resolveNpm(deps?: ResolveNpmDeps): ResolvedNpm | null;
28
+ /**
29
+ * Build a spawn env that makes a resolved npm runnable: prepend its bin dir to
30
+ * PATH so npm's `#!/usr/bin/env node` shebang finds its sibling node, even when
31
+ * the inherited PATH was stripped by a GUI launch.
32
+ */
33
+ export declare function npmSpawnEnv(resolved: ResolvedNpm, baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
34
+ /**
35
+ * Quick boolean check: can we run npm at all? Used by pre-flight gating before
36
+ * destructive auto-update steps.
37
+ */
38
+ export declare function isNpmAvailable(deps?: ResolveNpmDeps): boolean;
39
+ /** Test seam: verify a resolved npm actually executes (used by diagnostics). */
40
+ export declare function probeNpmVersion(resolved: ResolvedNpm): string | null;
41
+ export {};
42
+ //# sourceMappingURL=npm-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-resolver.d.ts","sourceRoot":"","sources":["../src/npm-resolver.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB;;mFAE+E;IAC/E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAuHD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,cAA8B,GAAG,WAAW,GAAG,IAAI,CAkBnF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,CAAC,UAAU,CAKnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,cAA8B,GAAG,OAAO,CAE5E;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAapE"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Resolve an `npm` executable when it is not on PATH.
3
+ *
4
+ * OpenCode and Pi are frequently launched from a GUI / dock / Desktop app,
5
+ * which gives the process a stripped PATH that does NOT include a Node version
6
+ * manager's bin directory (nvm, mise, volta, fnm, asdf) or even Homebrew. When
7
+ * that happens, `spawn("npm", ...)` fails with "Executable not found in $PATH",
8
+ * so the auto-updater and LSP auto-install silently break. See issue: a user's
9
+ * auto-update churned every launch (rewrite package.json -> delete package ->
10
+ * npm install fails -> restore) and they stayed pinned to the old version.
11
+ *
12
+ * `npm` is itself a Node script (`#!/usr/bin/env node` shebang on Unix), so once
13
+ * we find npm's absolute path we must also make its sibling `node` reachable, or
14
+ * the shebang fails the same way. `resolveNpm()` returns both the command and
15
+ * its bin directory; `npmSpawnEnv()` prepends that directory to PATH for the
16
+ * spawn so npm can find its own node.
17
+ */
18
+ import { execFileSync } from "node:child_process";
19
+ import { readdirSync, statSync } from "node:fs";
20
+ import { homedir } from "node:os";
21
+ import { delimiter, dirname, isAbsolute, join } from "node:path";
22
+ function defaultDeps() {
23
+ return {
24
+ platform: process.platform,
25
+ env: process.env,
26
+ home: homedir(),
27
+ execPath: process.execPath,
28
+ };
29
+ }
30
+ function npmBinaryName(platform) {
31
+ return platform === "win32" ? "npm.cmd" : "npm";
32
+ }
33
+ function isFile(p) {
34
+ try {
35
+ return statSync(p).isFile();
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /** Scan the PATH env for npm. Returns the first match's directory, or null. */
42
+ function npmFromPath(deps) {
43
+ const name = npmBinaryName(deps.platform);
44
+ const raw = deps.env.PATH ?? deps.env.Path ?? "";
45
+ for (const entry of raw.split(delimiter)) {
46
+ const dir = entry.trim().replace(/^"|"$/g, "");
47
+ if (!dir || !isAbsolute(dir))
48
+ continue;
49
+ if (isFile(join(dir, name)))
50
+ return dir;
51
+ }
52
+ return null;
53
+ }
54
+ /** npm ships beside node in standard installs (e.g. /opt/homebrew/bin/{node,npm}). */
55
+ function npmAdjacentToNode(deps) {
56
+ // process.execPath is the running node/bun binary. Under Node this is
57
+ // .../bin/node with npm as a sibling; under Bun (OpenCode TUI) there is no
58
+ // npm sibling, which is fine — we fall through to well-known locations.
59
+ const dir = dirname(deps.execPath);
60
+ return isFile(join(dir, npmBinaryName(deps.platform))) ? dir : null;
61
+ }
62
+ /**
63
+ * Pick the highest-version subdirectory under a version-manager `installs`
64
+ * directory that actually contains npm. Used for nvm / mise layouts like
65
+ * `~/.nvm/versions/node/<ver>/bin/npm`.
66
+ */
67
+ function highestVersionedNodeBin(installsDir, name) {
68
+ let entries;
69
+ try {
70
+ entries = readdirSync(installsDir);
71
+ }
72
+ catch {
73
+ return null;
74
+ }
75
+ const candidates = entries
76
+ .filter((v) => isFile(join(installsDir, v, "bin", name)))
77
+ .sort((a, b) => compareVersionsDesc(a, b));
78
+ return candidates.length > 0 ? join(installsDir, candidates[0], "bin") : null;
79
+ }
80
+ /** Descending semver-ish compare; non-numeric segments sort after numeric. */
81
+ function compareVersionsDesc(a, b) {
82
+ const pa = a
83
+ .replace(/^v/, "")
84
+ .split(".")
85
+ .map((n) => Number.parseInt(n, 10));
86
+ const pb = b
87
+ .replace(/^v/, "")
88
+ .split(".")
89
+ .map((n) => Number.parseInt(n, 10));
90
+ for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
91
+ const na = Number.isFinite(pa[i]) ? pa[i] : -1;
92
+ const nb = Number.isFinite(pb[i]) ? pb[i] : -1;
93
+ if (na !== nb)
94
+ return nb - na;
95
+ }
96
+ return b.localeCompare(a);
97
+ }
98
+ /** Well-known npm bin directories, in priority order, for the current platform. */
99
+ function wellKnownNpmDirs(deps) {
100
+ const { platform, env, home } = deps;
101
+ const name = npmBinaryName(platform);
102
+ const dirs = [];
103
+ const push = (dir) => {
104
+ if (dir && !dirs.includes(dir))
105
+ dirs.push(dir);
106
+ };
107
+ if (platform === "win32") {
108
+ const programFiles = env.ProgramFiles || "C:\\Program Files";
109
+ const appData = env.APPDATA;
110
+ const localAppData = env.LOCALAPPDATA;
111
+ push(join(programFiles, "nodejs"));
112
+ if (appData)
113
+ push(join(appData, "npm"));
114
+ if (localAppData)
115
+ push(join(localAppData, "Volta", "bin"));
116
+ // nvm-windows
117
+ if (env.NVM_SYMLINK)
118
+ push(env.NVM_SYMLINK);
119
+ }
120
+ else {
121
+ // Active node version manager hints (set even when PATH is otherwise stripped).
122
+ if (env.NVM_BIN)
123
+ push(env.NVM_BIN);
124
+ // Version-manager installs (pick highest version with npm).
125
+ push(highestVersionedNodeBin(join(home, ".nvm", "versions", "node"), name));
126
+ push(highestVersionedNodeBin(join(home, ".local", "share", "mise", "installs", "node"), name));
127
+ push(highestVersionedNodeBin(join(home, ".asdf", "installs", "nodejs"), name));
128
+ // Fixed-location managers.
129
+ push(join(home, ".volta", "bin"));
130
+ push(join(home, ".asdf", "shims"));
131
+ // Homebrew + system (injectable so tests stay hermetic; see ResolveNpmDeps).
132
+ const systemDirs = deps.systemNpmDirs ??
133
+ (platform === "darwin"
134
+ ? ["/opt/homebrew/bin", "/usr/local/bin"]
135
+ : ["/usr/local/bin", "/usr/bin", join(home, ".local", "bin")]);
136
+ for (const dir of systemDirs)
137
+ push(dir);
138
+ }
139
+ return dirs;
140
+ }
141
+ /**
142
+ * Resolve npm, preferring PATH, then node-adjacent, then well-known version
143
+ * manager / system locations. Returns null only when npm genuinely cannot be
144
+ * found anywhere we know to look.
145
+ */
146
+ export function resolveNpm(deps = defaultDeps()) {
147
+ const name = npmBinaryName(deps.platform);
148
+ // 1. PATH — respects the user's own setup when it survived to this process.
149
+ const onPath = npmFromPath(deps);
150
+ if (onPath)
151
+ return { command: join(onPath, name), binDir: onPath };
152
+ // 2. Node-adjacent (npm sits next to node in standard installs).
153
+ const adjacent = npmAdjacentToNode(deps);
154
+ if (adjacent)
155
+ return { command: join(adjacent, name), binDir: adjacent };
156
+ // 3. Well-known version-manager / system locations.
157
+ for (const dir of wellKnownNpmDirs(deps)) {
158
+ const candidate = join(dir, name);
159
+ if (isFile(candidate))
160
+ return { command: candidate, binDir: dir };
161
+ }
162
+ return null;
163
+ }
164
+ /**
165
+ * Build a spawn env that makes a resolved npm runnable: prepend its bin dir to
166
+ * PATH so npm's `#!/usr/bin/env node` shebang finds its sibling node, even when
167
+ * the inherited PATH was stripped by a GUI launch.
168
+ */
169
+ export function npmSpawnEnv(resolved, baseEnv = process.env) {
170
+ if (!resolved.binDir)
171
+ return { ...baseEnv };
172
+ const existing = baseEnv.PATH ?? baseEnv.Path ?? "";
173
+ const next = existing ? `${resolved.binDir}${delimiter}${existing}` : resolved.binDir;
174
+ return { ...baseEnv, PATH: next };
175
+ }
176
+ /**
177
+ * Quick boolean check: can we run npm at all? Used by pre-flight gating before
178
+ * destructive auto-update steps.
179
+ */
180
+ export function isNpmAvailable(deps = defaultDeps()) {
181
+ return resolveNpm(deps) !== null;
182
+ }
183
+ /** Test seam: verify a resolved npm actually executes (used by diagnostics). */
184
+ export function probeNpmVersion(resolved) {
185
+ try {
186
+ const out = execFileSync(resolved.command, ["--version"], {
187
+ env: npmSpawnEnv(resolved),
188
+ encoding: "utf-8",
189
+ timeout: 5000,
190
+ stdio: ["ignore", "pipe", "ignore"],
191
+ });
192
+ const v = out.trim();
193
+ return /^\d+\.\d+\.\d+/.test(v) ? v : null;
194
+ }
195
+ catch {
196
+ return null;
197
+ }
198
+ }
199
+ //# sourceMappingURL=npm-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-resolver.js","sourceRoot":"","sources":["../src/npm-resolver.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,22 @@ type EnsureBinary = typeof ensureBinary;
3
3
  export declare function __setEnsureBinaryForTests(impl: EnsureBinary | null): void;
4
4
  export { readBinaryVersion };
5
5
  declare function parsePathLookupOutput(output: string): string[];
6
+ /**
7
+ * True when `binaryPath` begins with a recognized native-executable magic
8
+ * number (Mach-O, ELF, or PE/`MZ`). False for script shims that start with a
9
+ * shebang (`#!`) or anything else.
10
+ *
11
+ * This is the guard against a `which aft` / `where aft` PATH lookup resolving to
12
+ * the `@cortexkit/aft` CLI's OWN node-script shim. The CLI publishes a `bin`
13
+ * named `aft` (same name as the native binary), and npx prepends its
14
+ * `node_modules/.bin` to PATH, so `which aft` can resolve to that shim. Probing
15
+ * it with `--version` re-enters the CLI, which probes `which aft` again, which
16
+ * forks `opencode --version` / `pi --version` for its harness report — an
17
+ * exponential fork bomb (issue: self-resolution recursion). Native binaries
18
+ * never start with `#!`, so a magic-number check rejects the shim regardless of
19
+ * where it lives (npx cache, global `npm i -g`, etc.).
20
+ */
21
+ export declare function isNativeExecutable(binaryPath: string): boolean;
6
22
  /**
7
23
  * Map the current `process.platform` and `process.arch` to the npm platform
8
24
  * package suffix (e.g. `"darwin-arm64"`, `"linux-x64"`).
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,KAAK,YAAY,GAAG,OAAO,YAAY,CAAC;AAIxC,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAEzE;AAID,OAAO,EAAE,iBAAiB,EAAE,CAAC;AA2G7B,iBAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAKvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,GAAE,MAAyB,EACnC,IAAI,GAAE,MAAqB,GAC1B,MAAM,CAgBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgFtE;AAED,eAAO,MAAM,QAAQ;;CAEpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC1E"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,KAAK,YAAY,GAAG,OAAO,YAAY,CAAC;AAIxC,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAEzE;AAID,OAAO,EAAE,iBAAiB,EAAE,CAAC;AA2G7B,iBAAS,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAKvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAgC9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,GAAE,MAAyB,EACnC,IAAI,GAAE,MAAqB,GAC1B,MAAM,CAgBR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwFtE;AAED,eAAO,MAAM,QAAQ;;CAEpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC1E"}
package/dist/resolver.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { execSync } from "node:child_process";
2
- import { chmodSync, copyFileSync, existsSync, mkdirSync, renameSync, unlinkSync } from "node:fs";
2
+ import { chmodSync, closeSync, copyFileSync, existsSync, mkdirSync, openSync, readSync, renameSync, unlinkSync, } from "node:fs";
3
3
  import { createRequire } from "node:module";
4
4
  import { homedir } from "node:os";
5
5
  import { join } from "node:path";
@@ -107,6 +107,62 @@ function parsePathLookupOutput(output) {
107
107
  .map((candidate) => candidate.trim())
108
108
  .filter(Boolean);
109
109
  }
110
+ /**
111
+ * True when `binaryPath` begins with a recognized native-executable magic
112
+ * number (Mach-O, ELF, or PE/`MZ`). False for script shims that start with a
113
+ * shebang (`#!`) or anything else.
114
+ *
115
+ * This is the guard against a `which aft` / `where aft` PATH lookup resolving to
116
+ * the `@cortexkit/aft` CLI's OWN node-script shim. The CLI publishes a `bin`
117
+ * named `aft` (same name as the native binary), and npx prepends its
118
+ * `node_modules/.bin` to PATH, so `which aft` can resolve to that shim. Probing
119
+ * it with `--version` re-enters the CLI, which probes `which aft` again, which
120
+ * forks `opencode --version` / `pi --version` for its harness report — an
121
+ * exponential fork bomb (issue: self-resolution recursion). Native binaries
122
+ * never start with `#!`, so a magic-number check rejects the shim regardless of
123
+ * where it lives (npx cache, global `npm i -g`, etc.).
124
+ */
125
+ export function isNativeExecutable(binaryPath) {
126
+ let fd = null;
127
+ try {
128
+ fd = openSync(binaryPath, "r");
129
+ const buf = Buffer.alloc(4);
130
+ const read = readSync(fd, buf, 0, 4, 0);
131
+ if (read < 2)
132
+ return false;
133
+ const b0 = buf[0];
134
+ const b1 = buf[1];
135
+ // Shebang script shim (`#!`) — the recursion vector. Reject outright.
136
+ if (b0 === 0x23 && b1 === 0x21)
137
+ return false;
138
+ const m32 = buf.readUInt32BE(0);
139
+ // Mach-O: feedface/feedfacf (BE) + cefaedfe/cffaedfe (LE) + cafebabe (fat).
140
+ const machO = new Set([0xfeedface, 0xfeedfacf, 0xcefaedfe, 0xcffaedfe, 0xcafebabe]);
141
+ if (read >= 4 && machO.has(m32))
142
+ return true;
143
+ // ELF: 0x7f 'E' 'L' 'F'.
144
+ if (read >= 4 && m32 === 0x7f454c46)
145
+ return true;
146
+ // PE (Windows .exe): 'MZ'.
147
+ if (b0 === 0x4d && b1 === 0x5a)
148
+ return true;
149
+ return false;
150
+ }
151
+ catch {
152
+ // If we can't read it, don't trust it as a native binary.
153
+ return false;
154
+ }
155
+ finally {
156
+ if (fd !== null) {
157
+ try {
158
+ closeSync(fd);
159
+ }
160
+ catch {
161
+ // best-effort
162
+ }
163
+ }
164
+ }
165
+ }
110
166
  /**
111
167
  * Map the current `process.platform` and `process.arch` to the npm platform
112
168
  * package suffix (e.g. `"darwin-arm64"`, `"linux-x64"`).
@@ -205,6 +261,14 @@ export function findBinarySync(expectedVersion) {
205
261
  stdio: ["pipe", "pipe", "pipe"],
206
262
  }).trim();
207
263
  for (const candidate of parsePathLookupOutput(result)) {
264
+ // Guard against self-resolution: a `which aft` hit can be the
265
+ // @cortexkit/aft CLI's own node-script shim (npx prepends its
266
+ // node_modules/.bin to PATH). Probing it with --version re-enters the CLI
267
+ // and fork-bombs. Only accept native executables here.
268
+ if (!isNativeExecutable(candidate)) {
269
+ warn(`PATH binary at ${candidate} is not a native executable (script shim?); skipping`);
270
+ continue;
271
+ }
208
272
  const usable = probeBinaryCandidate(candidate, "PATH", expectedVersion);
209
273
  if (usable)
210
274
  return usable;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIlD,IAAI,uBAAuB,GAAiB,YAAY,CAAC;AAEzD,MAAM,UAAU,yBAAyB,CAAC,IAAyB;IACjE,uBAAuB,GAAG,IAAI,IAAI,YAAY,CAAC;AACjD,CAAC;AAID,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;GAQG;AACH,SAAS,oBAAoB,CAAC,aAAqB,EAAE,YAAqB;IACxE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAEnD,sEAAsE;QACtE,uEAAuE;QACvE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,aAAa,KAAK,OAAO;gBAAE,OAAO,UAAU,CAAC;YACjD,IAAI,CACF,oBAAoB,UAAU,YAAY,aAAa,IAAI,YAAY,cAAc,OAAO,+BAA+B,CAC5H,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QACjE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,wFAAwF;QACxF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC;gBACH,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;YACnE,CAAC;QACH,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChC,GAAG,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;QAC3D,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,GAAgB;IACtC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,eAAe,CAAC,GAAgB;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe,EAAE,GAAgB,EAAE,GAAW;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB,EAAE,eAAuB;IACzE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CACF,oBAAoB,UAAU,YAAY,MAAM,IAAI,YAAY,cAAc,QAAQ,4BAA4B,CACnH,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAkB,EAClB,MAAc,EACd,eAAwB;IAExB,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,MAAM,cAAc,UAAU,qCAAqC,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,eAAe,IAAI,MAAM,KAAK,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,IAAI,CACF,GAAG,MAAM,cAAc,UAAU,YAAY,MAAM,cAAc,oBAAoB,CAAC,eAAe,CAAC,YAAY,CACnH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc;IAC3C,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACpC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,sEAAsE;QACtE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,4EAA4E;QAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,yBAAyB;QACzB,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QACjD,2BAA2B;QAC3B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,SAAS,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,WAAmB,OAAO,CAAC,QAAQ,EACnC,OAAe,OAAO,CAAC,IAAI;IAE3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,WAAW,IAAI,KAAK;YACnD,wBAAwB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,gBAAgB,QAAQ,IAAI;YAC3D,+BAA+B,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,eAAwB;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/B,4EAA4E;IAC5E,4EAA4E;IAC5E,cAAc;IACd,MAAM,aAAa,GACjB,eAAe;QACf,CAAC,GAAG,EAAE;YACJ,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3C,OAAQ,GAAG,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC;QAChF,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,aAAa,IAAI,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC;YAAE,OAAO,aAAa,CAAC;IAClG,CAAC;IAED,mEAAmE;IACnE,qEAAqE;IACrE,EAAE;IACF,sEAAsE;IACtE,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,kBAAkB,GAAG,WAAW,GAAG,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,IAAI,CACF,kCAAkC,QAAQ,iEAAiE,CAC5G,CAAC;YACJ,CAAC;iBAAM,IAAI,aAAa,IAAI,UAAU,KAAK,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/E,IAAI,CACF,gCAAgC,UAAU,2BAA2B,aAAa,wCAAwC,CAC3H,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC1D,OAAO,MAAM,IAAI,QAAQ,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,GAAG;YACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,MAAM,SAAS,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,8DAA8D;YAC9D,8DAA8D;YAC9D,0EAA0E;YAC1E,uDAAuD;YACvD,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,kBAAkB,SAAS,sDAAsD,CAAC,CAAC;gBACxF,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;YACxE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;IAC1E,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,eAAwB;IACvD,+CAA+C;IAC/C,MAAM,UAAU,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,wCAAwC;IACxC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAClE,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,wBAAwB;IACxB,MAAM,IAAI,KAAK,CACb;QACE,kCAAkC;QAClC,EAAE;QACF,oBAAoB;QACpB,yCAAyC;QACzC,sDAAsD;QACtD,6BAA6B;QAC7B,sBAAsB;QACtB,iDAAiD;QACjD,EAAE;QACF,wCAAwC;QACxC,0FAA0F;QAC1F,+DAA+D;QAC/D,8EAA8E;QAC9E,EAAE;QACF,wCAAwC;KACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-bridge",
3
- "version": "0.35.0",
3
+ "version": "0.35.2",
4
4
  "type": "module",
5
5
  "description": "Shared NDJSON bridge transport, binary resolution, and ONNX runtime helpers for AFT agent-host plugins (OpenCode, Pi)",
6
6
  "license": "MIT",