@openclaw/codex 2026.9.8 → 2026.10.1-beta.1
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 +8 -0
- package/dist/.setup/{account-usage-runtime-G348lY1q.mjs → account-usage-runtime-C4GFoef_.mjs} +5 -5
- package/dist/.setup/app-server-policy-Bg4FZw1f.mjs +23 -0
- package/dist/.setup/{apply-Cqb-YoCS.mjs → apply-D02fLpgN.mjs} +48 -39
- package/dist/.setup/attempt-client-cleanup-yLjGwbwT.mjs +155 -0
- package/dist/.setup/{attempt-workspace-context-BJ5Z_olH.mjs → attempt-workspace-context-CbSzT6V2.mjs} +11 -15
- package/dist/.setup/{auth-binding-BLWz7stm.mjs → auth-binding-BoMwpuPN.mjs} +17 -25
- package/dist/.setup/{auth-cache-key-Dnps4W4_.mjs → auth-cache-key-CEd9QlIs.mjs} +244 -82
- package/dist/.setup/{auth-profile-B0okYl2D.mjs → auth-profile-CgHQ8Vot.mjs} +2 -1
- package/dist/.setup/{auth-profile-selection-DFu9e167.mjs → auth-profile-selection-hr8ocLtz.mjs} +5 -7
- package/dist/.setup/{binding-connection-DTtN1KrX.mjs → binding-connection-C-08ez1w.mjs} +2 -2
- package/dist/.setup/{binding-connection.runtime-6TpgD1M6.mjs → binding-connection.runtime-Dn2p-fdy.mjs} +3 -3
- package/dist/.setup/{bounded-turn-BNunZPtz.mjs → bounded-turn-DlHlNTyS.mjs} +14 -13
- package/dist/.setup/{bounded-turn-isolation-B8K_ylqk.mjs → bounded-turn-isolation-DklXNk3k.mjs} +4 -4
- package/dist/.setup/{build-state-DIQ5O_-S.mjs → build-state-CIi3Ckqu.mjs} +1 -1
- package/dist/.setup/{capabilities-B3WEZl4e.mjs → capabilities-kQntafj_.mjs} +1 -1
- package/dist/.setup/{client-qyUBJlGZ.mjs → client-CBzEVDyb.mjs} +438 -160
- package/dist/.setup/{client-catalog-response-DRvx_wCC.mjs → client-catalog-response-CmvIiDdj.mjs} +57 -25
- package/dist/.setup/command-authorization-AikPDtcc.mjs +15 -0
- package/dist/.setup/{command-dispatch-Btrs1D6f.mjs → command-dispatch-BE_RdMou.mjs} +3 -3
- package/dist/.setup/{command-formatters-R3ckE3Co.mjs → command-formatters-DV3DHhdr.mjs} +7 -5
- package/dist/.setup/{command-handlers-DvlCHJch.mjs → command-handlers-DNoRq5Ps.mjs} +82 -144
- package/dist/.setup/{command-rpc-skzRq4wD.mjs → command-rpc-B6xsq2dB.mjs} +23 -31
- package/dist/.setup/{compact-8ttks5U5.mjs → compact-BLSAd-ru.mjs} +117 -65
- package/dist/.setup/{plugin-metadata-cache-BRwtRct9.mjs → computer-use-DpolvQHw.mjs} +65 -202
- package/dist/.setup/{config-DKhXquav.mjs → config-0Gxk3_eq.mjs} +5 -6
- package/dist/.setup/{config-options-CzyWLTJt.mjs → config-options-HG_Rr3W_.mjs} +13 -23
- package/dist/.setup/{config-parsing-b088LyhT.mjs → config-parsing-BQq-CHTF.mjs} +41 -4
- package/dist/.setup/{config-runtime-C0NbLms1.mjs → config-runtime-cUYrqu_a.mjs} +2 -2
- package/dist/.setup/{config-security-CE-FcGw9.mjs → config-security-KAPScztc.mjs} +20 -36
- package/dist/.setup/{context-engine-projection-PezSESth.mjs → context-engine-projection-CsgYSQhW.mjs} +11 -14
- package/dist/.setup/{conversation-binding-74LaGGH-.mjs → conversation-binding-CgSSD1Qz.mjs} +36 -48
- package/dist/.setup/{conversation-binding-data-C746z5Pn.mjs → conversation-binding-data-DJ4ix-W5.mjs} +1 -1
- package/dist/.setup/{conversation-control-OrN6zuaY.mjs → conversation-control-tCg763cI.mjs} +19 -21
- package/dist/.setup/{cyber-failover-XV0nNRZu.mjs → cyber-failover-Bb1J6hS1.mjs} +1 -1
- package/dist/.setup/{cyber-failover-notice-RNpGpTyP.mjs → cyber-failover-notice-XR03ef31.mjs} +1 -1
- package/dist/.setup/doctor-start-options-DPW9JxIE.mjs +63 -0
- package/dist/.setup/dynamic-tool-build-CVrx02cH.mjs +463 -0
- package/dist/.setup/{dynamic-tools-Db2sY5cZ.mjs → dynamic-tools-DdsymYGQ.mjs} +238 -878
- package/dist/.setup/{effective-mcp-catalog-Bi6-SQ7i.mjs → effective-mcp-catalog-BysTBZCW.mjs} +83 -11
- package/dist/.setup/{elicitation-input-DPoK8F7w.mjs → elicitation-input-r9axtppm.mjs} +4 -2
- package/dist/.setup/{ephemeral-turn-DiCS1ijR.mjs → ephemeral-turn-oPKxs3ia.mjs} +2 -2
- package/dist/.setup/{event-projector-assistant-message-MV_1dj-3.mjs → event-projector-assistant-message-YCL2wspu.mjs} +2 -2
- package/dist/.setup/{event-projector-values-DJSz8BTk.mjs → event-projector-values-DTqZHizf.mjs} +2 -12
- package/dist/.setup/{inference-dispatch-CMZtjQyz.mjs → inference-dispatch-B5UKEUyC.mjs} +12 -21
- package/dist/.setup/{inference-proxy-DhcXOgUE.mjs → inference-proxy-DUO5E2QQ.mjs} +6 -5
- package/dist/.setup/{isolated-completion-D80IXfQF.mjs → isolated-completion-D5gbKm6k.mjs} +8 -8
- package/dist/.setup/{managed-binary-kiWRhNRE.mjs → managed-binary-C1VFoVPf.mjs} +31 -38
- package/dist/.setup/mcp-app-session-preparation-CdqsXwZX.mjs +223 -0
- package/dist/.setup/mcp-tool-metadata-j10HhfTC.mjs +43 -0
- package/dist/.setup/{model-catalog-DiC0Tkha.mjs → model-catalog-Dj_uvusa.mjs} +7 -7
- package/dist/.setup/{models-DfLmPV0k.mjs → models-Du_i5G_t.mjs} +10 -7
- package/dist/.setup/{native-auth-CuG53tu4.mjs → native-auth-Cjb9y7IZ.mjs} +5 -6
- package/dist/.setup/{native-execution-policy-BxZJy5mP.mjs → native-execution-policy-ClzpdG3D.mjs} +1 -12
- package/dist/.setup/native-mcp-app-DV7VbfzF.mjs +310 -0
- package/dist/.setup/{native-subagent-monitor-BwkQXf9e.mjs → native-subagent-monitor-CCEFO6qK.mjs} +235 -318
- package/dist/.setup/{native-subagent-pending-assignments-DwkCzLvD.mjs → native-subagent-pending-assignments-BDqhOdJp.mjs} +0 -4
- package/dist/.setup/{native-task-assignments-DMQ0g3hu.mjs → native-task-assignments-C6KVqiN1.mjs} +9 -8
- package/dist/.setup/{node-cli-sessions-HC4W6FLI.mjs → node-cli-sessions-B5oNDkUS.mjs} +11 -17
- package/dist/.setup/{node-exec-server.runtime-BgBfWQqo.mjs → node-exec-server.runtime-0xSEjKYt.mjs} +2 -2
- package/dist/.setup/{plan-DPdMk1Oy.mjs → plan-CUHSIOep.mjs} +67 -89
- package/dist/.setup/{plugin-activation-cNHRfaxU.mjs → plugin-activation-BcyBv8PG.mjs} +4 -4
- package/dist/.setup/{plugin-app-cache-key-BL9B5H0L.mjs → plugin-app-cache-key-BW8rd98k.mjs} +11 -15
- package/dist/.setup/plugin-approval-roundtrip-uAR-oQfr.mjs +109 -0
- package/dist/.setup/{plugin-inventory-Cky2XJUw.mjs → plugin-inventory-Bf0_piTw.mjs} +29 -51
- package/dist/.setup/{plugin-marketplace-discovery-D_dV9FXa.mjs → plugin-marketplace-discovery-SQPhSuic.mjs} +2 -16
- package/dist/.setup/plugin-metadata-cache-DWnB7VMj.mjs +84 -0
- package/dist/.setup/plugin-thread-config-deadline-CdRzGJt4.mjs +124 -0
- package/dist/.setup/{provider-D6F_7p1I.mjs → provider-BP8ZaZqn.mjs} +4 -4
- package/dist/.setup/provider-capabilities-Z5ZbBxqP.mjs +50 -0
- package/dist/.setup/{rate-limits-B7-X2TgG.mjs → rate-limits-CMPy24F5.mjs} +1 -5
- package/dist/.setup/{request-BZOfsSXW.mjs → request-BH3FvYUE.mjs} +189 -49
- package/dist/.setup/rpc-error-hmWM21RB.mjs +57 -0
- package/dist/.setup/{run-attempt-dYJhjZrp.mjs → run-attempt-CgvFoW7R.mjs} +553 -727
- package/dist/.setup/{run-attempt-lifecycle-C-6O3Exn.mjs → run-attempt-lifecycle-BuZgVbDA.mjs} +19 -3
- package/dist/.setup/{runtime-artifact-DDQ-HGXf.mjs → runtime-artifact-CUTOOnKw.mjs} +5 -6
- package/dist/.setup/{runtime-artifact-connection-D68qQn1m.mjs → runtime-artifact-connection-CADz3_BY.mjs} +5 -4
- package/dist/.setup/{sandbox-guard-DjCz2eOw.mjs → sandbox-guard-WqE8yPge.mjs} +3 -3
- package/dist/.setup/service-tier-normalization-Cei89SW6.mjs +15 -0
- package/dist/.setup/{session-binding-DGCYAfvD.mjs → session-binding-Ce7BqiPN.mjs} +92 -102
- package/dist/.setup/session-binding-meta-Lkm5Lpf4.mjs +15 -0
- package/dist/.setup/session-binding-record-BZB8RgcF.mjs +179 -0
- package/dist/.setup/session-binding-record-codec-z4ZpDn6E.mjs +216 -0
- package/dist/.setup/{session-binding-sidecars-jo6H8dFr.mjs → session-binding-sidecars-BrdV95Fg.mjs} +8 -2
- package/dist/.setup/{session-catalog-adoption-BU_pHWG7.mjs → session-catalog-adoption-CPIP4S_y.mjs} +34 -18
- package/dist/.setup/{session-catalog-archive-spHfihri.mjs → session-catalog-archive-DcgwvSbF.mjs} +24 -29
- package/dist/.setup/{session-catalog-events-BMCFMZw-.mjs → session-catalog-events-KIXOoSnQ.mjs} +5 -5
- package/dist/.setup/{session-catalog-index-DwJjnF5k.mjs → session-catalog-index-DPICGlxr.mjs} +361 -72
- package/dist/.setup/{session-catalog-index-order-BcQpHks3.mjs → session-catalog-index-order-nhyO0wdW.mjs} +1 -1
- package/dist/.setup/{session-catalog-limits-DDxOsQeC.mjs → session-catalog-limits-DEU36Qlo.mjs} +1 -1
- package/dist/.setup/{session-catalog-index-state-TeO7EyO-.mjs → session-catalog-list-request-tXephOB4.mjs} +180 -6
- package/dist/.setup/{session-catalog-native-projection-CuaFZuQE.mjs → session-catalog-native-projection-CTBd4EUm.mjs} +7 -6
- package/dist/.setup/{session-catalog-node-adoption-DgXvSGu0.mjs → session-catalog-node-adoption-7-WEQTB1.mjs} +12 -2
- package/dist/.setup/{session-catalog-node-continue-DjKXHBbi.mjs → session-catalog-node-continue-DLWBwAAO.mjs} +11 -15
- package/dist/.setup/{session-catalog-node-lookup-CtAXI5W5.mjs → session-catalog-node-lookup-Uufckwcm.mjs} +2 -2
- package/dist/.setup/{session-catalog-parsing-CPGaPYr-.mjs → session-catalog-parsing-B-qWJh2x.mjs} +70 -28
- package/dist/.setup/{session-catalog-projection-CGfzfP93.mjs → session-catalog-projection-CE0_Hffi.mjs} +6 -122
- package/dist/.setup/{session-catalog-provenance-DoAvktcj.mjs → session-catalog-provenance-CmsOE5mh.mjs} +6 -1
- package/dist/.setup/{session-cli-DlmBHYIe.mjs → session-cli-kH4vuGod.mjs} +1 -2
- package/dist/.setup/{session-history-D83lJWHG.mjs → session-history-BogBHKLk.mjs} +1 -1
- package/dist/.setup/{session-history-import-WhX-X33a.mjs → session-history-import-NWKPa4ZO.mjs} +4 -4
- package/dist/.setup/{session-history-read-Ov3StuL4.mjs → session-history-read-CNN8zwbD.mjs} +8 -19
- package/dist/.setup/{session-history.worker-MnPKncqP.mjs → session-history.worker-Cq_4DYgN.mjs} +3 -3
- package/dist/.setup/{session-initialization-6aveB9qb.mjs → session-initialization-D6dtFQkE.mjs} +2 -2
- package/dist/.setup/{session-permission-policy-Ci_fVX6y.mjs → session-permission-policy-BxIUJ0Zd.mjs} +8 -37
- package/dist/.setup/{session-retirement-LlYWBKTJ.mjs → session-retirement-aC60o6P3.mjs} +14 -15
- package/dist/.setup/{settled-turn-context-D4yj4rxf.mjs → settled-turn-context-BZsMjkIO.mjs} +13 -6
- package/dist/.setup/{settled-turn-finalizer-DW9W3gza.mjs → settled-turn-finalizer-CDxCejjC.mjs} +8 -8
- package/dist/.setup/{shared-client-CJCTeFpQ.mjs → shared-client-DJJ3ljH2.mjs} +291 -272
- package/dist/.setup/{provider-capabilities-DG5qbsUZ.mjs → shell-dynamic-tools-Do9lIAT1.mjs} +16 -55
- package/dist/.setup/{side-question-BLeGj7TQ.mjs → side-question-B7T0_GEC.mjs} +99 -91
- package/dist/.setup/{source-CJis_1EF.mjs → source-DH70LqN0.mjs} +24 -40
- package/dist/.setup/{thread-lifecycle-_bAbjedG.mjs → thread-lifecycle-DkcoX9q-.mjs} +262 -305
- package/dist/.setup/{thread-ownership-B6pPt21M.mjs → thread-ownership-0aRHD9iK.mjs} +10 -8
- package/dist/.setup/{thread-policy-gNPzzpVp.mjs → thread-policy-CXZV97TS.mjs} +22 -21
- package/dist/.setup/{thread-requests-OWGOiDaV.mjs → thread-requests-COrRJcZb.mjs} +107 -98
- package/dist/.setup/{thread-resume-GOry0AYh.mjs → thread-resume-rx7J68Rx.mjs} +10 -18
- package/dist/.setup/{transcript-history-projection-DRSifI-1.mjs → transcript-history-projection-B9a7HwUV.mjs} +11 -16
- package/dist/.setup/{transcript-mirror-kxmCYsuF.mjs → transcript-mirror-BfLRARNL.mjs} +64 -67
- package/dist/.setup/{transport-stdio-Bdegpn2V.mjs → transport-stdio-a0HDa2Mj.mjs} +27 -8
- package/dist/.setup/{transport-websocket-BTBE-LD9.mjs → transport-websocket-zqJ0Cmtn.mjs} +3 -8
- package/dist/.setup/{attempt-client-cleanup-B-S7ngS_.mjs → turn-router-CX1-EoCp.mjs} +75 -170
- package/dist/.setup/{upstream-session-fork-gkdRj2yH.mjs → upstream-session-fork-LYlaQnbt.mjs} +35 -46
- package/dist/.setup/{usage-CApUvLOV.mjs → usage-Dmx7B0W2.mjs} +4 -4
- package/dist/.setup/{usage-limit-error-wSMQkbpV.mjs → usage-limit-error-M8jVnITZ.mjs} +4 -4
- package/dist/.setup/{web-search-provider.runtime-UKgeiBUG.mjs → web-search-provider.runtime-CsVmqbFm.mjs} +4 -20
- package/dist/.setup/websocket-data-XlRvt8Ys.mjs +6 -0
- package/dist/.setup/workspace-write-sandbox-probe-DmUHLrrl.mjs +118 -0
- package/dist/api.js +34 -54
- package/dist/catalog-page.worker.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/doctor-contract-api.js +15 -27
- package/dist/harness.js +37 -22
- package/dist/index.js +2880 -276
- package/dist/media-understanding-provider.js +2 -2
- package/dist/migration-provider-api.js +1 -1
- package/dist/native-session-binding-api.js +2 -0
- package/dist/provider-discovery.js +1 -1
- package/dist/session-history-worker-runtime.js +33 -4
- package/dist/session-history.worker.js +1 -1
- package/openclaw.plugin.json +3 -3
- package/package.json +6 -6
- package/dist/.setup/config-utils-D0CXecki.mjs +0 -57
- package/dist/.setup/incognito-session-DWYapfwf.mjs +0 -2
- package/dist/.setup/managed-thread-store-BMqgThVL.mjs +0 -100
- package/dist/.setup/rpc-error-BlD2vuzn.mjs +0 -31
- package/dist/.setup/session-binding-meta-B7aEMU7g.mjs +0 -6
- package/dist/.setup/session-binding-record-Oe9L-CNY.mjs +0 -375
- package/dist/.setup/session-catalog-BFafIiF6.mjs +0 -2599
- package/dist/.setup/session-catalog-list-request-CvtxrYSe.mjs +0 -170
- package/dist/.setup/shared-client-lifecycle-7xgtlo15.mjs +0 -153
package/dist/.setup/{session-catalog-index-DwJjnF5k.mjs → session-catalog-index-DPICGlxr.mjs}
RENAMED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { S as readControlCursor, _ as normalizeLimit, c as MAX_CWD_LENGTH, d as boundedCatalogString, h as filterCatalogPageByTitle, m as codexCatalogThreadStatus, o as CatalogParamsError, p as codexCatalogThreadName } from "./session-catalog-parsing-
|
|
2
|
-
import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-
|
|
3
|
-
import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-BMCFMZw-.mjs";
|
|
1
|
+
import { S as readControlCursor, _ as normalizeLimit, c as MAX_CWD_LENGTH, d as boundedCatalogString, h as filterCatalogPageByTitle, m as codexCatalogThreadStatus, o as CatalogParamsError, p as codexCatalogThreadName } from "./session-catalog-parsing-B-qWJh2x.mjs";
|
|
2
|
+
import { n as detachCodexCatalogString, t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-DEU36Qlo.mjs";
|
|
3
|
+
import { i as retainCodexCatalogRow, n as codexCatalogRowRecency, r as compareCodexCatalogRows, t as CodexCatalogOrdering } from "./session-catalog-index-order-nhyO0wdW.mjs";
|
|
4
|
+
import { c as codexCatalogMetadataPage, i as CodexCatalogAvailability, r as withCodexCatalogListRequest, s as CodexCatalogPersistence } from "./session-catalog-list-request-tXephOB4.mjs";
|
|
5
|
+
import { l as getCodexCatalogSource, p as setCodexCatalogSource, r as projectCodexCatalogNativeThread, u as hasLiveCodexCatalogSource } from "./session-catalog-native-projection-CTBd4EUm.mjs";
|
|
6
|
+
import { i as subscribeCodexCatalogEvents } from "./session-catalog-events-KIXOoSnQ.mjs";
|
|
8
7
|
import { a as reportCodexCatalogSpawnFailure, n as findCodexAppServerSpawnError } from "./spawn-error-CL3n6MAa.mjs";
|
|
9
|
-
import { CodexCatalogProjectionCapacityError, CodexCatalogProjections,
|
|
8
|
+
import { CodexCatalogProjectionCapacityError, CodexCatalogProjections, mergeCodexCatalogRolloutRow, n as readCodexCatalogRollout, projectCodexCatalogThread, r as resolveCodexCatalogRolloutFingerprint, t as codexCatalogRolloutLogicalPath } from "./session-catalog-projection-CE0_Hffi.mjs";
|
|
10
9
|
import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
11
10
|
import { createHash } from "node:crypto";
|
|
12
11
|
import { isDeepStrictEqual } from "node:util";
|
|
13
12
|
import { embeddedAgentLog } from "openclaw/plugin-sdk/agent-harness-registration";
|
|
14
|
-
import
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import fs$1 from "node:fs/promises";
|
|
16
|
+
import { coerceErrorMessage, extractErrorCode, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
|
|
15
17
|
import { setImmediate as setImmediate$1 } from "node:timers/promises";
|
|
16
18
|
import { sanitizeTerminalText } from "openclaw/plugin-sdk/text-chunking";
|
|
17
19
|
//#region extensions/codex/src/session-catalog-currency.ts
|
|
@@ -349,6 +351,318 @@ var CodexCatalogField = class {
|
|
|
349
351
|
}
|
|
350
352
|
};
|
|
351
353
|
//#endregion
|
|
354
|
+
//#region extensions/codex/src/session-catalog-rollout-scanner.ts
|
|
355
|
+
const DIRECTORY_PARTS = [
|
|
356
|
+
/^\d{4}$/,
|
|
357
|
+
/^(?:0[1-9]|1[0-2])$/,
|
|
358
|
+
/^(?:0[1-9]|[12]\d|3[01])$/
|
|
359
|
+
];
|
|
360
|
+
const ROLLOUT_FILE_NAME = /\.jsonl(?:\.zst)?$/;
|
|
361
|
+
const MAX_WATCHED_DIRECTORIES = 256;
|
|
362
|
+
const SCAN_BATCH_SIZE = 64;
|
|
363
|
+
const DARWIN_WATCH_ARM_MS = 250;
|
|
364
|
+
function compareRolloutCandidates(left, right) {
|
|
365
|
+
return left[1].mtimeMs - right[1].mtimeMs || (left[0] < right[0] ? -1 : left[0] > right[0] ? 1 : 0);
|
|
366
|
+
}
|
|
367
|
+
/** Retain only the newest fingerprints while streaming an arbitrarily large home. */
|
|
368
|
+
var NewestRolloutCandidates = class {
|
|
369
|
+
constructor() {
|
|
370
|
+
this.heap = [];
|
|
371
|
+
}
|
|
372
|
+
offer(candidate) {
|
|
373
|
+
if (this.heap.length < 2e4) {
|
|
374
|
+
let childIndex = this.heap.length;
|
|
375
|
+
this.heap.push(candidate);
|
|
376
|
+
while (childIndex > 0) {
|
|
377
|
+
const parentIndex = Math.floor((childIndex - 1) / 2);
|
|
378
|
+
const parent = this.heap[parentIndex];
|
|
379
|
+
if (!parent || compareRolloutCandidates(parent, candidate) <= 0) break;
|
|
380
|
+
this.heap[childIndex] = parent;
|
|
381
|
+
childIndex = parentIndex;
|
|
382
|
+
}
|
|
383
|
+
this.heap[childIndex] = candidate;
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const oldest = this.heap[0];
|
|
387
|
+
if (!oldest || compareRolloutCandidates(candidate, oldest) <= 0) return;
|
|
388
|
+
let parentIndex = 0;
|
|
389
|
+
while (true) {
|
|
390
|
+
let childIndex = parentIndex * 2 + 1;
|
|
391
|
+
let child = this.heap[childIndex];
|
|
392
|
+
if (!child) break;
|
|
393
|
+
const right = this.heap[childIndex + 1];
|
|
394
|
+
if (right && compareRolloutCandidates(right, child) < 0) {
|
|
395
|
+
child = right;
|
|
396
|
+
childIndex++;
|
|
397
|
+
}
|
|
398
|
+
if (compareRolloutCandidates(candidate, child) <= 0) break;
|
|
399
|
+
this.heap[parentIndex] = child;
|
|
400
|
+
parentIndex = childIndex;
|
|
401
|
+
}
|
|
402
|
+
this.heap[parentIndex] = candidate;
|
|
403
|
+
}
|
|
404
|
+
finish() {
|
|
405
|
+
this.heap.sort((left, right) => compareRolloutCandidates(right, left));
|
|
406
|
+
return new Map(this.heap);
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
/** Absence is meaningful only inside the layout visited by the currency scan. */
|
|
410
|
+
function isCodexCatalogRolloutPathCovered(sessionsRoot, rolloutPath) {
|
|
411
|
+
const directories = path.relative(sessionsRoot, rolloutPath).split(path.sep);
|
|
412
|
+
const fileName = directories.pop();
|
|
413
|
+
return fileName !== void 0 && ROLLOUT_FILE_NAME.test(fileName) && directories.length === DIRECTORY_PARTS.length && directories.every((part, index) => DIRECTORY_PARTS[index]?.test(part) === true);
|
|
414
|
+
}
|
|
415
|
+
async function unlessMissing(operation) {
|
|
416
|
+
try {
|
|
417
|
+
return await operation;
|
|
418
|
+
} catch (error) {
|
|
419
|
+
if (extractErrorCode(error) === "ENOENT") return;
|
|
420
|
+
throw error;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
function sameDirectory(left, right) {
|
|
424
|
+
return left.dev === right.dev && left.ino === right.ino && left.ctimeMs === right.ctimeMs && left.mtimeMs === right.mtimeMs;
|
|
425
|
+
}
|
|
426
|
+
/** The resident home owns a bounded watcher cache; unwatchable leaves are scanned in full. */
|
|
427
|
+
var CodexCatalogRolloutScanner = class {
|
|
428
|
+
constructor(sessionsRoot) {
|
|
429
|
+
this.sessionsRoot = sessionsRoot;
|
|
430
|
+
this.directories = /* @__PURE__ */ new Map();
|
|
431
|
+
this.cachedFiles = 0;
|
|
432
|
+
this.closed = false;
|
|
433
|
+
}
|
|
434
|
+
scan(trackedPaths) {
|
|
435
|
+
const previous = this.running;
|
|
436
|
+
const running = (async () => {
|
|
437
|
+
await previous?.catch(() => void 0);
|
|
438
|
+
await setImmediate$1();
|
|
439
|
+
return this.walk(trackedPaths);
|
|
440
|
+
})();
|
|
441
|
+
this.running = running;
|
|
442
|
+
return running.finally(() => {
|
|
443
|
+
if (this.running === running) this.running = void 0;
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
forget(directory) {
|
|
447
|
+
const cached = this.directories.get(directory);
|
|
448
|
+
if (cached) {
|
|
449
|
+
this.cachedFiles -= cached.files.size;
|
|
450
|
+
this.directories.delete(directory);
|
|
451
|
+
cached.watcher.close();
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
watch(directory, stat) {
|
|
455
|
+
if (this.closed || directory.length > 4096 || this.directories.size >= MAX_WATCHED_DIRECTORIES) return;
|
|
456
|
+
try {
|
|
457
|
+
const watcher = fs.watch(directory, { persistent: false });
|
|
458
|
+
const cached = {
|
|
459
|
+
watcher,
|
|
460
|
+
stat,
|
|
461
|
+
revision: 0,
|
|
462
|
+
armAt: process.platform === "darwin" ? performance.now() + DARWIN_WATCH_ARM_MS : 0,
|
|
463
|
+
files: /* @__PURE__ */ new Map()
|
|
464
|
+
};
|
|
465
|
+
watcher.on("change", () => {
|
|
466
|
+
cached.revision++;
|
|
467
|
+
});
|
|
468
|
+
const withdraw = () => {
|
|
469
|
+
if (this.directories.get(directory) === cached) this.forget(directory);
|
|
470
|
+
};
|
|
471
|
+
watcher.on("error", withdraw);
|
|
472
|
+
watcher.on("close", withdraw);
|
|
473
|
+
this.directories.set(directory, cached);
|
|
474
|
+
return cached;
|
|
475
|
+
} catch {
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
async walk(trackedPaths, reuseCache = true) {
|
|
480
|
+
if (this.closed) throw new Error("Codex catalog rollout scanner is closed");
|
|
481
|
+
const present = /* @__PURE__ */ new Set();
|
|
482
|
+
const unvisited = new Set(this.directories.keys());
|
|
483
|
+
const candidates = new NewestRolloutCandidates();
|
|
484
|
+
const reused = /* @__PURE__ */ new Map();
|
|
485
|
+
let cacheWithdrawn = false;
|
|
486
|
+
let processed = 0;
|
|
487
|
+
const offer = (file, fingerprint) => {
|
|
488
|
+
if (trackedPaths.has(codexCatalogRolloutLogicalPath(file))) present.add(codexCatalogRolloutLogicalPath(file));
|
|
489
|
+
candidates.offer([file, fingerprint]);
|
|
490
|
+
};
|
|
491
|
+
const scan = async (directory, depth, rootReal) => {
|
|
492
|
+
if (this.closed) throw new Error("Codex catalog rollout scanner is closed");
|
|
493
|
+
if (await unlessMissing(fs$1.realpath(directory)) !== directory) return;
|
|
494
|
+
const directoryPattern = DIRECTORY_PARTS[depth];
|
|
495
|
+
const stat = !directoryPattern ? await unlessMissing(fs$1.lstat(directory)) : void 0;
|
|
496
|
+
let cached = this.directories.get(directory);
|
|
497
|
+
if (!directoryPattern) {
|
|
498
|
+
if (!stat?.isDirectory() || stat.isSymbolicLink()) return;
|
|
499
|
+
unvisited.delete(directory);
|
|
500
|
+
if (cached && !sameDirectory(cached.stat, stat)) {
|
|
501
|
+
this.forget(directory);
|
|
502
|
+
cached = void 0;
|
|
503
|
+
}
|
|
504
|
+
if (reuseCache && cached && cached.scannedRevision === cached.revision) {
|
|
505
|
+
const revision = cached.revision;
|
|
506
|
+
reused.set(directory, {
|
|
507
|
+
cached,
|
|
508
|
+
revision
|
|
509
|
+
});
|
|
510
|
+
for (const [file, fingerprint] of cached.files) {
|
|
511
|
+
offer(file, fingerprint);
|
|
512
|
+
if (++processed % SCAN_BATCH_SIZE === 0) {
|
|
513
|
+
await setImmediate$1();
|
|
514
|
+
if (this.directories.get(directory) !== cached || cached.revision !== revision) {
|
|
515
|
+
cacheWithdrawn = true;
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
cached ??= this.watch(directory, stat);
|
|
523
|
+
}
|
|
524
|
+
if (cached) cached.scannedRevision = void 0;
|
|
525
|
+
const revision = cached?.revision;
|
|
526
|
+
const armed = cached && performance.now() >= cached.armAt;
|
|
527
|
+
const retained = cached ? /* @__PURE__ */ new Map() : void 0;
|
|
528
|
+
let cacheable = true;
|
|
529
|
+
const entries = await unlessMissing(fs$1.opendir(directory));
|
|
530
|
+
if (!entries) {
|
|
531
|
+
this.forget(directory);
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
for await (const entry of entries) {
|
|
535
|
+
if (cacheWithdrawn) return;
|
|
536
|
+
if (this.closed) throw new Error("Codex catalog rollout scanner is closed");
|
|
537
|
+
if (++processed % SCAN_BATCH_SIZE === 0) await setImmediate$1();
|
|
538
|
+
const file = path.join(directory, entry.name);
|
|
539
|
+
if (directoryPattern) {
|
|
540
|
+
if (entry.isDirectory() && directoryPattern.test(entry.name)) await scan(file, depth + 1, rootReal);
|
|
541
|
+
} else if (entry.isFile() && ROLLOUT_FILE_NAME.test(entry.name)) {
|
|
542
|
+
const fileStat = await unlessMissing(fs$1.lstat(file));
|
|
543
|
+
if (!fileStat?.isFile() || fileStat.nlink !== 1) continue;
|
|
544
|
+
const physicalPath = path.join(this.sessionsRoot, path.relative(rootReal, file));
|
|
545
|
+
if (physicalPath.length > 4096) continue;
|
|
546
|
+
if (physicalPath !== codexCatalogRolloutLogicalPath(physicalPath)) {
|
|
547
|
+
const plain = await unlessMissing(fs$1.lstat(codexCatalogRolloutLogicalPath(file)));
|
|
548
|
+
if (plain?.isFile() && plain.nlink === 1) continue;
|
|
549
|
+
}
|
|
550
|
+
const fingerprint = {
|
|
551
|
+
mtimeMs: fileStat.mtimeMs,
|
|
552
|
+
size: fileStat.size
|
|
553
|
+
};
|
|
554
|
+
const detached = detachCodexCatalogString(physicalPath);
|
|
555
|
+
offer(detached, fingerprint);
|
|
556
|
+
if (retained && cacheable) {
|
|
557
|
+
retained.set(detached, fingerprint);
|
|
558
|
+
if (this.cachedFiles - (cached?.files.size ?? 0) + retained.size > 2e4) {
|
|
559
|
+
cacheable = false;
|
|
560
|
+
retained.clear();
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
if (cached && retained && stat) {
|
|
566
|
+
const current = await unlessMissing(fs$1.lstat(directory));
|
|
567
|
+
if (cacheable && !this.closed && this.directories.get(directory) === cached && current?.isDirectory() && sameDirectory(stat, current)) {
|
|
568
|
+
this.cachedFiles += retained.size - cached.files.size;
|
|
569
|
+
cached.files = retained;
|
|
570
|
+
cached.stat = stat;
|
|
571
|
+
cached.scannedRevision = armed && cached.revision === revision ? revision : void 0;
|
|
572
|
+
} else this.forget(directory);
|
|
573
|
+
}
|
|
574
|
+
};
|
|
575
|
+
const rootStat = await unlessMissing(fs$1.lstat(this.sessionsRoot));
|
|
576
|
+
if (rootStat?.isDirectory() && !rootStat.isSymbolicLink()) {
|
|
577
|
+
const rootReal = await unlessMissing(fs$1.realpath(this.sessionsRoot));
|
|
578
|
+
if (rootReal) await scan(rootReal, 0, rootReal);
|
|
579
|
+
}
|
|
580
|
+
if (cacheWithdrawn || [...reused].some(([directory, { cached, revision }]) => this.directories.get(directory) !== cached || cached.revision !== revision)) return this.walk(trackedPaths, false);
|
|
581
|
+
for (const directory of unvisited) this.forget(directory);
|
|
582
|
+
return {
|
|
583
|
+
files: candidates.finish(),
|
|
584
|
+
present
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
close() {
|
|
588
|
+
this.closed = true;
|
|
589
|
+
for (const directory of this.directories.keys()) this.forget(directory);
|
|
590
|
+
}
|
|
591
|
+
};
|
|
592
|
+
//#endregion
|
|
593
|
+
//#region extensions/codex/src/session-catalog-index-files.ts
|
|
594
|
+
/** Plan file reconciliation; the index retains every publication and lifetime decision. */
|
|
595
|
+
async function reconcileCodexCatalogFiles(root, isCurrent, owner) {
|
|
596
|
+
const byPath = /* @__PURE__ */ new Map();
|
|
597
|
+
let processed = 0;
|
|
598
|
+
for (const row of owner.rows.values()) {
|
|
599
|
+
if (row.rolloutPath) byPath.set(codexCatalogRolloutLogicalPath(row.rolloutPath), row);
|
|
600
|
+
if (++processed % 128 === 0) {
|
|
601
|
+
await setImmediate$1();
|
|
602
|
+
owner.assertCurrent();
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
const { files, present } = await owner.scanner.scan(new Set(byPath.keys()));
|
|
606
|
+
owner.assertCurrent();
|
|
607
|
+
const observed = new Map(files);
|
|
608
|
+
for (const [file, fingerprint] of files) {
|
|
609
|
+
if (++processed % 128 === 0) {
|
|
610
|
+
await setImmediate$1();
|
|
611
|
+
owner.assertCurrent();
|
|
612
|
+
}
|
|
613
|
+
const previous = byPath.get(codexCatalogRolloutLogicalPath(file));
|
|
614
|
+
const known = owner.observedFiles.get(file) ?? previous?.fingerprint;
|
|
615
|
+
if (known?.mtimeMs === fingerprint.mtimeMs && known.size === fingerprint.size) continue;
|
|
616
|
+
owner.requestNativeRefresh();
|
|
617
|
+
observed.delete(file);
|
|
618
|
+
if (known) observed.set(file, known);
|
|
619
|
+
let thread;
|
|
620
|
+
try {
|
|
621
|
+
thread = await readCodexCatalogRollout(root, file);
|
|
622
|
+
} catch (error) {
|
|
623
|
+
owner.assertCurrent();
|
|
624
|
+
owner.report(error);
|
|
625
|
+
continue;
|
|
626
|
+
}
|
|
627
|
+
owner.assertCurrent();
|
|
628
|
+
if (!thread) {
|
|
629
|
+
observed.set(file, fingerprint);
|
|
630
|
+
continue;
|
|
631
|
+
}
|
|
632
|
+
if (!isCurrent(thread.id)) continue;
|
|
633
|
+
const existing = owner.rows.get(thread.id);
|
|
634
|
+
if (existing?.rolloutPath && codexCatalogRolloutLogicalPath(existing.rolloutPath) !== codexCatalogRolloutLogicalPath(file)) {
|
|
635
|
+
observed.set(file, fingerprint);
|
|
636
|
+
continue;
|
|
637
|
+
}
|
|
638
|
+
if (!existing && !thread.preview) {
|
|
639
|
+
observed.set(file, fingerprint);
|
|
640
|
+
continue;
|
|
641
|
+
}
|
|
642
|
+
thread.preview ||= existing?.preview;
|
|
643
|
+
const projected = await projectCodexCatalogThread(thread, root);
|
|
644
|
+
owner.assertCurrent();
|
|
645
|
+
if (!isCurrent(thread.id)) continue;
|
|
646
|
+
observed.set(file, fingerprint);
|
|
647
|
+
const row = projected.rows[0];
|
|
648
|
+
if (!row) continue;
|
|
649
|
+
owner.mark(row.threadId);
|
|
650
|
+
owner.put(mergeCodexCatalogRolloutRow(row, existing, fingerprint));
|
|
651
|
+
await setImmediate$1();
|
|
652
|
+
}
|
|
653
|
+
for (const row of byPath.values()) {
|
|
654
|
+
if (++processed % 128 === 0) {
|
|
655
|
+
await setImmediate$1();
|
|
656
|
+
owner.assertCurrent();
|
|
657
|
+
}
|
|
658
|
+
if (row.rolloutPath && isCodexCatalogRolloutPathCovered(root, row.rolloutPath) && !present.has(codexCatalogRolloutLogicalPath(row.rolloutPath)) && owner.rows.get(row.threadId) === row) {
|
|
659
|
+
owner.requestNativeRefresh();
|
|
660
|
+
owner.remove(row.threadId);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
return observed;
|
|
664
|
+
}
|
|
665
|
+
//#endregion
|
|
352
666
|
//#region extensions/codex/src/session-catalog-index-names.ts
|
|
353
667
|
function applyCodexCatalogName(row, name) {
|
|
354
668
|
if (name === void 0) return row;
|
|
@@ -729,6 +1043,7 @@ var CodexCatalogIndex = class {
|
|
|
729
1043
|
this.sourceRevision = 0;
|
|
730
1044
|
this.ordering = new CodexCatalogOrdering();
|
|
731
1045
|
this.observations = new CodexCatalogObservations();
|
|
1046
|
+
this.rolloutScanner = options.localSessionsRoot ? new CodexCatalogRolloutScanner(options.localSessionsRoot) : void 0;
|
|
732
1047
|
this.currency = new CodexCatalogCurrency({
|
|
733
1048
|
local: Boolean(options.localSessionsRoot),
|
|
734
1049
|
reconcileFiles: () => this.reconcile(),
|
|
@@ -879,16 +1194,23 @@ var CodexCatalogIndex = class {
|
|
|
879
1194
|
this.assertCurrent();
|
|
880
1195
|
if (snapshot.cleanupIncomplete) this.persistence.invalidate(/* @__PURE__ */ new Error("Codex catalog obsolete snapshot exceeds its cleanup limit"));
|
|
881
1196
|
for (const key of snapshot.obsolete) this.obsoleteStoredKeys.add(key);
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
if (
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
1197
|
+
let restoredRows = 0;
|
|
1198
|
+
for (const row of snapshot.rows) {
|
|
1199
|
+
if (++restoredRows % 128 === 0) {
|
|
1200
|
+
await setImmediate$1();
|
|
1201
|
+
this.assertCurrent();
|
|
1202
|
+
}
|
|
1203
|
+
if (isCurrent(row.threadId)) {
|
|
1204
|
+
const restored = row.rolloutPath ? {
|
|
1205
|
+
...row,
|
|
1206
|
+
rolloutPath: codexCatalogRolloutLogicalPath(row.rolloutPath)
|
|
1207
|
+
} : row;
|
|
1208
|
+
const patched = this.withName(restored);
|
|
1209
|
+
if (patched !== restored) this.persistence.put(patched);
|
|
1210
|
+
const evicted = retainCodexCatalogRow(this.rows, patched);
|
|
1211
|
+
if (evicted) this.evict(evicted.threadId);
|
|
1212
|
+
this.ordering.restore(row);
|
|
1213
|
+
}
|
|
892
1214
|
}
|
|
893
1215
|
this.overflow ||= snapshot.overflow || this.rows.size >= 2e4;
|
|
894
1216
|
if (snapshot.complete) {
|
|
@@ -936,7 +1258,8 @@ var CodexCatalogIndex = class {
|
|
|
936
1258
|
}
|
|
937
1259
|
async hydratePages(isCurrent, useStateDbOnly, incremental) {
|
|
938
1260
|
this.assertCurrent();
|
|
939
|
-
const files = this.
|
|
1261
|
+
const files = this.rolloutScanner && !useStateDbOnly ? (await this.rolloutScanner.scan(/* @__PURE__ */ new Set())).files : /* @__PURE__ */ new Map();
|
|
1262
|
+
this.assertCurrent();
|
|
940
1263
|
let observedRevision;
|
|
941
1264
|
let frontier;
|
|
942
1265
|
const batchOrder = this.ordering.captureBatch(this.availability.complete);
|
|
@@ -980,7 +1303,11 @@ var CodexCatalogIndex = class {
|
|
|
980
1303
|
frontier = this.rows.get(row.threadId) ?? frontier;
|
|
981
1304
|
}
|
|
982
1305
|
if (incremental && (!changed && page.rows.length > 0 || sourceOrder >= 2e4)) break;
|
|
983
|
-
if (page.nextCursor)
|
|
1306
|
+
if (page.nextCursor) {
|
|
1307
|
+
this.availability.publish(frontier);
|
|
1308
|
+
await setImmediate$1();
|
|
1309
|
+
this.assertCurrent();
|
|
1310
|
+
}
|
|
984
1311
|
}
|
|
985
1312
|
if (remaining && (!useStateDbOnly || !this.options.localSessionsRoot)) {
|
|
986
1313
|
for (const [id, row] of remaining) if (isCurrent(id) && this.rows.get(id) === row) this.remove(id);
|
|
@@ -997,58 +1324,19 @@ var CodexCatalogIndex = class {
|
|
|
997
1324
|
}
|
|
998
1325
|
async reconcileFiles(isCurrent) {
|
|
999
1326
|
const root = this.options.localSessionsRoot;
|
|
1000
|
-
if (!root || !this.initialized || this.closed) return;
|
|
1001
|
-
this.assertCurrent();
|
|
1002
|
-
const byPath = indexCodexCatalogRowsByRollout(this.rows.values());
|
|
1003
|
-
const { files, present } = await scanCodexCatalogRollouts(root, new Set(byPath.keys()));
|
|
1327
|
+
if (!root || !this.rolloutScanner || !this.initialized || this.closed) return;
|
|
1004
1328
|
this.assertCurrent();
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
this.currency.requestNativeRefresh()
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
} catch (error) {
|
|
1017
|
-
this.assertCurrent();
|
|
1018
|
-
this.report(error);
|
|
1019
|
-
continue;
|
|
1020
|
-
}
|
|
1021
|
-
this.assertCurrent();
|
|
1022
|
-
if (!thread) {
|
|
1023
|
-
observed.set(file, fingerprint);
|
|
1024
|
-
continue;
|
|
1025
|
-
}
|
|
1026
|
-
if (!isCurrent(thread.id)) continue;
|
|
1027
|
-
const existing = this.rows.get(thread.id);
|
|
1028
|
-
if (existing?.rolloutPath && codexCatalogRolloutLogicalPath(existing.rolloutPath) !== codexCatalogRolloutLogicalPath(file)) {
|
|
1029
|
-
observed.set(file, fingerprint);
|
|
1030
|
-
continue;
|
|
1031
|
-
}
|
|
1032
|
-
if (!existing && !thread.preview) {
|
|
1033
|
-
observed.set(file, fingerprint);
|
|
1034
|
-
continue;
|
|
1035
|
-
}
|
|
1036
|
-
thread.preview ||= existing?.preview;
|
|
1037
|
-
const projected = await projectCodexCatalogThread(thread, root);
|
|
1038
|
-
this.assertCurrent();
|
|
1039
|
-
if (!isCurrent(thread.id)) continue;
|
|
1040
|
-
observed.set(file, fingerprint);
|
|
1041
|
-
const row = projected.rows[0];
|
|
1042
|
-
if (!row) continue;
|
|
1043
|
-
this.observations.mark(row.threadId);
|
|
1044
|
-
this.put(mergeCodexCatalogRolloutRow(row, existing, fingerprint));
|
|
1045
|
-
await setImmediate$1();
|
|
1046
|
-
}
|
|
1047
|
-
for (const row of byPath.values()) if (row.rolloutPath && isCodexCatalogRolloutPathCovered(root, row.rolloutPath) && !present.has(codexCatalogRolloutLogicalPath(row.rolloutPath)) && this.rows.get(row.threadId) === row) {
|
|
1048
|
-
this.currency.requestNativeRefresh();
|
|
1049
|
-
this.remove(row.threadId);
|
|
1050
|
-
}
|
|
1051
|
-
this.observedFiles = observed;
|
|
1329
|
+
this.observedFiles = await reconcileCodexCatalogFiles(root, isCurrent, {
|
|
1330
|
+
rows: this.rows,
|
|
1331
|
+
observedFiles: this.observedFiles,
|
|
1332
|
+
scanner: this.rolloutScanner,
|
|
1333
|
+
assertCurrent: () => this.assertCurrent(),
|
|
1334
|
+
requestNativeRefresh: () => this.currency.requestNativeRefresh(),
|
|
1335
|
+
report: (error) => this.report(error),
|
|
1336
|
+
mark: (id) => this.observations.mark(id),
|
|
1337
|
+
put: (row) => this.put(row),
|
|
1338
|
+
remove: (id) => this.remove(id)
|
|
1339
|
+
});
|
|
1052
1340
|
}
|
|
1053
1341
|
upsertThread(thread) {
|
|
1054
1342
|
if (this.closed) return Promise.resolve();
|
|
@@ -1151,6 +1439,7 @@ var CodexCatalogIndex = class {
|
|
|
1151
1439
|
this.liveStatus.invalidate();
|
|
1152
1440
|
this.liveSettings.invalidate();
|
|
1153
1441
|
this.unsubscribe();
|
|
1442
|
+
this.rolloutScanner?.close();
|
|
1154
1443
|
this.currency.close();
|
|
1155
1444
|
return this.persistence.retire();
|
|
1156
1445
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-
|
|
1
|
+
import { t as CODEX_CATALOG_MAX_ROWS } from "./session-catalog-limits-DEU36Qlo.mjs";
|
|
2
2
|
//#region extensions/codex/src/session-catalog-index-order.ts
|
|
3
3
|
function codexCatalogRowRecency(row) {
|
|
4
4
|
return row.recencyAt ?? row.updatedAt ?? 0;
|
package/dist/.setup/{session-catalog-limits-DDxOsQeC.mjs → session-catalog-limits-DEU36Qlo.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as __exportAll } from "./session-binding-sidecars-
|
|
1
|
+
import { t as __exportAll } from "./session-binding-sidecars-BrdV95Fg.mjs";
|
|
2
2
|
//#region extensions/codex/src/session-catalog-limits.ts
|
|
3
3
|
var session_catalog_limits_exports = /* @__PURE__ */ __exportAll({
|
|
4
4
|
CODEX_CATALOG_MAX_ROWS: () => CODEX_CATALOG_MAX_ROWS,
|