@remnic/core 10.0.76 → 10.0.77
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/dist/access-admin-ops-surface.js +2 -2
- package/dist/access-authorization-probe.js +3 -3
- package/dist/access-boundary.js +2 -2
- package/dist/access-cli.js +17 -17
- package/dist/access-extraction-force-flush.js +2 -2
- package/dist/access-http-briefing.js +3 -3
- package/dist/access-http-query.js +2 -2
- package/dist/access-http.js +14 -14
- package/dist/access-identity-continuity-surface.js +2 -2
- package/dist/access-lcm-surface.js +2 -2
- package/dist/access-mcp.js +9 -9
- package/dist/access-namespace-preflight.js +2 -2
- package/dist/access-observe-helpers.d.ts.map +1 -1
- package/dist/access-observe-helpers.js +1 -1
- package/dist/access-observe-write-surface.js +2 -2
- package/dist/access-operations-batch.js +3 -3
- package/dist/access-operations.js +8 -8
- package/dist/access-recall-concurrency.js +2 -2
- package/dist/access-recall-response.js +2 -2
- package/dist/access-recall-surface.js +2 -2
- package/dist/access-service.js +2 -2
- package/dist/access-surface-catalog.js +4 -4
- package/dist/{chunk-R24RYSQX.js → chunk-2JRLKDHV.js} +2 -2
- package/dist/{chunk-N6GEGRCT.js → chunk-4NDDRYBY.js} +2 -2
- package/dist/{chunk-VEWTHVX2.js → chunk-5HVEYVNQ.js} +2 -2
- package/dist/{chunk-KAED7IBB.js → chunk-6L62IDS6.js} +2 -2
- package/dist/{chunk-IPHIIRDN.js → chunk-CYTTY4M2.js} +5 -7
- package/dist/chunk-CYTTY4M2.js.map +1 -0
- package/dist/{chunk-SZBZOUHR.js → chunk-D26XMQP5.js} +2 -2
- package/dist/{chunk-VPEMGBTI.js → chunk-D3USVQIV.js} +2 -2
- package/dist/{chunk-E22CQZ3H.js → chunk-EYIBIGIU.js} +8 -8
- package/dist/{chunk-IBQ7LGUJ.js → chunk-FQU65RJX.js} +3 -3
- package/dist/{chunk-FP2AT4WL.js → chunk-G3PBNYDH.js} +2 -2
- package/dist/{chunk-HR6NTVYZ.js → chunk-I4W2ADBP.js} +140 -7
- package/dist/chunk-I4W2ADBP.js.map +1 -0
- package/dist/{chunk-ZG57BEUS.js → chunk-LXDERMOU.js} +2 -2
- package/dist/{chunk-SY4AFWUZ.js → chunk-MAURCRPQ.js} +4 -4
- package/dist/{chunk-3GGCMRO7.js → chunk-MUZWS6KB.js} +2 -2
- package/dist/{chunk-TD5VTVPT.js → chunk-MXQKGSMW.js} +2 -2
- package/dist/{chunk-RXGFITWS.js → chunk-NUBOY2LQ.js} +2 -2
- package/dist/{chunk-PLGBPFEO.js → chunk-TWHVCSLX.js} +2 -2
- package/dist/{chunk-VEQVXNWR.js → chunk-TX627XOF.js} +2 -2
- package/dist/cli.js +15 -15
- package/dist/external-wiki-access.js +3 -3
- package/dist/index.js +17 -17
- package/dist/memory-browse-operations.js +3 -3
- package/dist/orchestration/backlog-scheduler.js +18 -18
- package/dist/orchestration/buffer-drain-runner.js +18 -18
- package/dist/orchestration/extraction-queue-snapshot-sharing.d.ts +113 -0
- package/dist/orchestration/extraction-queue-snapshot-sharing.d.ts.map +1 -0
- package/dist/orchestration/turn-ingestion.d.ts +3 -0
- package/dist/orchestration/turn-ingestion.d.ts.map +1 -1
- package/dist/orchestrator.js +17 -17
- package/dist/recall-navigation-operations.js +3 -3
- package/dist/recall-navigation.js +2 -2
- package/dist/support-passport/index.js +5 -5
- package/package.json +2 -2
- package/src/access-observe-helpers.test.ts +156 -0
- package/src/access-observe-helpers.ts +6 -6
- package/src/orchestration/extraction-queue-bounded-retention.test.ts +548 -0
- package/src/orchestration/extraction-queue-snapshot-sharing.ts +257 -0
- package/src/orchestration/turn-ingestion.ts +19 -6
- package/dist/chunk-HR6NTVYZ.js.map +0 -1
- package/dist/chunk-IPHIIRDN.js.map +0 -1
- /package/dist/{chunk-R24RYSQX.js.map → chunk-2JRLKDHV.js.map} +0 -0
- /package/dist/{chunk-N6GEGRCT.js.map → chunk-4NDDRYBY.js.map} +0 -0
- /package/dist/{chunk-VEWTHVX2.js.map → chunk-5HVEYVNQ.js.map} +0 -0
- /package/dist/{chunk-KAED7IBB.js.map → chunk-6L62IDS6.js.map} +0 -0
- /package/dist/{chunk-SZBZOUHR.js.map → chunk-D26XMQP5.js.map} +0 -0
- /package/dist/{chunk-VPEMGBTI.js.map → chunk-D3USVQIV.js.map} +0 -0
- /package/dist/{chunk-E22CQZ3H.js.map → chunk-EYIBIGIU.js.map} +0 -0
- /package/dist/{chunk-IBQ7LGUJ.js.map → chunk-FQU65RJX.js.map} +0 -0
- /package/dist/{chunk-FP2AT4WL.js.map → chunk-G3PBNYDH.js.map} +0 -0
- /package/dist/{chunk-ZG57BEUS.js.map → chunk-LXDERMOU.js.map} +0 -0
- /package/dist/{chunk-SY4AFWUZ.js.map → chunk-MAURCRPQ.js.map} +0 -0
- /package/dist/{chunk-3GGCMRO7.js.map → chunk-MUZWS6KB.js.map} +0 -0
- /package/dist/{chunk-TD5VTVPT.js.map → chunk-MXQKGSMW.js.map} +0 -0
- /package/dist/{chunk-RXGFITWS.js.map → chunk-NUBOY2LQ.js.map} +0 -0
- /package/dist/{chunk-PLGBPFEO.js.map → chunk-TWHVCSLX.js.map} +0 -0
- /package/dist/{chunk-VEQVXNWR.js.map → chunk-TX627XOF.js.map} +0 -0
|
@@ -88,11 +88,9 @@ var PendingObserveExtractionTracker = class {
|
|
|
88
88
|
);
|
|
89
89
|
if (rejected) throw rejected.reason;
|
|
90
90
|
}) : extraction;
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
controllers: new Set(previous ? [...previous.controllers, controller] : [controller])
|
|
95
|
-
};
|
|
91
|
+
const controllers = previous?.controllers ?? /* @__PURE__ */ new Set();
|
|
92
|
+
controllers.add(controller);
|
|
93
|
+
const entry = { promise, running: previous?.running ?? extraction, controllers };
|
|
96
94
|
this.entries.set(key, entry);
|
|
97
95
|
void promise.then(() => {
|
|
98
96
|
if (this.entries.get(key) === entry) this.entries.delete(key);
|
|
@@ -119,7 +117,7 @@ var PendingObserveExtractionTracker = class {
|
|
|
119
117
|
for (const [key, entry] of this.entries) {
|
|
120
118
|
const [entrySessionKey, entryPrincipal, entryNamespace] = key.split("\0");
|
|
121
119
|
if (entrySessionKey !== sessionKey || principal !== void 0 && entryPrincipal !== (principal ?? "") || namespace !== void 0 && entryNamespace !== (namespace ?? "")) continue;
|
|
122
|
-
for (const controller of entry.controllers) controller.abort(reason);
|
|
120
|
+
for (const controller of [...entry.controllers]) controller.abort(reason);
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
123
|
async wait(sessionKey, principal, namespace, abortSignal, registerCancellation, scopeHint, preemptAfterAdmission) {
|
|
@@ -171,4 +169,4 @@ export {
|
|
|
171
169
|
pendingObserveScopeHint,
|
|
172
170
|
PendingObserveExtractionTracker
|
|
173
171
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
172
|
+
//# sourceMappingURL=chunk-CYTTY4M2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/access-observe-helpers.ts"],"sourcesContent":["import { isPreemptedExtraction } from \"./abort-error.js\";\n\ntype PendingObservePreparation = {\n cancelled: boolean;\n scopeHint?: string;\n principal?: string;\n namespace?: string;\n scopeResolved: boolean;\n resolvedScopeFences: Array<{ principal?: string; namespace?: string }>;\n released: Promise<void>;\n release: () => void;\n};\n\nfunction resolvedScopesMatch(\n left: { principal?: string; namespace?: string },\n right: { principal?: string; namespace?: string },\n): boolean {\n return left.principal === right.principal && left.namespace === right.namespace;\n}\n\nfunction preparationMatchesScope(\n reservation: PendingObservePreparation,\n principal: string | undefined,\n namespace: string | undefined,\n scopeHint: string | undefined,\n): boolean {\n if (reservation.scopeResolved) {\n return resolvedScopesMatch(reservation, { principal, namespace });\n }\n return reservation.scopeHint === undefined || scopeHint === undefined || reservation.scopeHint === scopeHint;\n}\n\nexport type PendingObservePreparationHandle = {\n isCancelled(): boolean;\n setScope(principal?: string, namespace?: string): void;\n release(): void;\n};\n\nexport function pendingObserveScopeHint(options: {\n namespace?: string;\n projectTag?: string;\n cwd?: string;\n}): string | undefined {\n const namespace = options.namespace?.trim();\n if (namespace) return `namespace:${namespace}`;\n const projectTag = options.projectTag?.trim();\n if (projectTag) return `projectTag:${projectTag}`;\n const cwd = options.cwd?.trim();\n return cwd ? `cwd:${cwd}` : undefined;\n}\n\ntype PendingObserveExtraction = {\n promise: Promise<void>;\n running: Promise<void>;\n controllers: Set<AbortController>;\n};\n\nexport class PendingObserveExtractionTracker {\n private readonly entries = new Map<string, PendingObserveExtraction>();\n private readonly preparations = new Map<string, Set<PendingObservePreparation>>();\n\n reserve(sessionKey: string, scopeHint?: string): PendingObservePreparationHandle {\n let released = false;\n let resolveReleased: () => void = () => {};\n const reservation: PendingObservePreparation = {\n cancelled: false,\n scopeResolved: false,\n resolvedScopeFences: [],\n scopeHint,\n released: new Promise<void>((resolve) => {\n resolveReleased = resolve;\n }),\n release: () => {\n if (released) return;\n released = true;\n const entries = this.preparations.get(sessionKey);\n entries?.delete(reservation);\n if (entries?.size === 0) this.preparations.delete(sessionKey);\n resolveReleased();\n },\n };\n const entries = this.preparations.get(sessionKey) ?? new Set<PendingObservePreparation>();\n entries.add(reservation);\n this.preparations.set(sessionKey, entries);\n return {\n isCancelled: () => reservation.cancelled,\n setScope: (principal, namespace) => {\n reservation.principal = principal;\n reservation.namespace = namespace;\n reservation.scopeResolved = true;\n if (reservation.resolvedScopeFences.some((fence) => resolvedScopesMatch(reservation, fence))) {\n reservation.cancelled = true;\n }\n },\n release: reservation.release,\n };\n }\n\n private async waitForPreparations(\n sessionKey: string,\n principal: string | undefined,\n namespace: string | undefined,\n scopeHint: string | undefined,\n ): Promise<void> {\n while (true) {\n const reservations = [...(this.preparations.get(sessionKey) ?? [])];\n for (const reservation of reservations) {\n if (\n !reservation.cancelled &&\n !reservation.scopeResolved &&\n !preparationMatchesScope(reservation, principal, namespace, scopeHint) &&\n !reservation.resolvedScopeFences.some((fence) =>\n resolvedScopesMatch(fence, { principal, namespace }),\n )\n ) {\n reservation.resolvedScopeFences.push({ principal, namespace });\n }\n }\n const pending = reservations.filter(\n (reservation) =>\n !reservation.cancelled && preparationMatchesScope(reservation, principal, namespace, scopeHint),\n );\n if (pending.length === 0) return;\n await Promise.all(pending.map((reservation) => reservation.released));\n }\n }\n\n\n key(sessionKey: string, principal: string | undefined, namespace: string | undefined): string {\n return `${sessionKey}\\u0000${principal ?? \"\"}\\u0000${namespace ?? \"\"}`;\n }\n\n track(key: string, extraction: Promise<void>, controller: AbortController): void {\n const previous = this.entries.get(key);\n const promise = previous\n ? Promise.allSettled([previous.promise, extraction]).then((results) => {\n const rejected = results.find(\n (result): result is PromiseRejectedResult =>\n result.status === \"rejected\" &&\n !(result.reason instanceof Error && isPreemptedExtraction(result.reason)),\n );\n if (rejected) throw rejected.reason;\n })\n : extraction;\n const controllers = previous?.controllers ?? new Set<AbortController>();\n controllers.add(controller);\n const entry = { promise, running: previous?.running ?? extraction, controllers };\n this.entries.set(key, entry);\n // Any settle (success OR rejection — preemption is just one rejection\n // kind) ends the pending entry; leaving a settled failure tracked wedged\n // the key and kept every controller ever registered for it alive.\n void promise\n .then(() => {\n if (this.entries.get(key) === entry) this.entries.delete(key);\n })\n .catch(() => {\n if (this.entries.get(key) === entry) this.entries.delete(key);\n });\n }\n\n cancelPreparations(sessionKey: string, scopeHint?: string): void {\n for (const reservation of this.preparations.get(sessionKey) ?? []) {\n if (\n scopeHint !== undefined &&\n reservation.scopeHint !== undefined &&\n reservation.scopeHint !== scopeHint\n ) {\n continue;\n }\n reservation.cancelled = true;\n }\n }\n\n cancel(\n sessionKey: string,\n principal?: string,\n namespace?: string,\n scopeHint?: string,\n reason?: Error,\n ): void {\n for (const reservation of this.preparations.get(sessionKey) ?? []) {\n if (!preparationMatchesScope(reservation, principal, namespace, scopeHint)) continue;\n reservation.cancelled = true;\n }\n\n this.abortTracked(sessionKey, principal, namespace, reason);\n }\n\n private abortTracked(\n sessionKey: string,\n principal: string | undefined,\n namespace: string | undefined,\n reason?: Error,\n ): void {\n for (const [key, entry] of this.entries) {\n const [entrySessionKey, entryPrincipal, entryNamespace] = key.split(\"\\u0000\");\n if (\n entrySessionKey !== sessionKey ||\n (principal !== undefined && entryPrincipal !== (principal ?? \"\")) ||\n (namespace !== undefined && entryNamespace !== (namespace ?? \"\"))\n ) continue;\n // Snapshot: an abort listener may track() synchronously; iterating the\n // shared live set would abort that new admission or never terminate.\n for (const controller of [...entry.controllers]) controller.abort(reason);\n }\n }\n\n async wait(\n sessionKey: string,\n principal: string | undefined,\n namespace: string | undefined,\n abortSignal?: AbortSignal,\n registerCancellation?: (cancel: () => void) => void,\n scopeHint?: string,\n preemptAfterAdmission?: () => void,\n ): Promise<void> {\n const key = this.key(sessionKey, principal, namespace);\n let cancelled = abortSignal?.aborted === true;\n const abortTracked = (): void => {\n cancelled = true;\n this.cancel(sessionKey, principal, namespace, scopeHint);\n };\n registerCancellation?.(abortTracked);\n abortSignal?.addEventListener(\"abort\", abortTracked, { once: true });\n try {\n await this.waitForPreparations(sessionKey, principal, namespace, scopeHint);\n if (cancelled || abortSignal?.aborted) return;\n if (preemptAfterAdmission) {\n preemptAfterAdmission();\n const running = this.entries.get(key)?.running;\n if (!running) return;\n try {\n await running;\n } catch (error) {\n if (this.entries.get(key)?.running === running) this.entries.delete(key);\n if (!(error instanceof Error && isPreemptedExtraction(error))) throw error;\n }\n return;\n }\n while (true) {\n const entry = this.entries.get(key);\n if (!entry) return;\n try {\n await entry.promise;\n } catch (error) {\n if (this.entries.get(key) !== entry) continue;\n this.entries.delete(key);\n if (error instanceof Error && isPreemptedExtraction(error)) return;\n throw error;\n }\n if (this.entries.get(key) !== entry) continue;\n this.entries.delete(key);\n return;\n }\n } finally {\n abortSignal?.removeEventListener(\"abort\", abortTracked);\n }\n }\n}\n"],"mappings":"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","names":["entries"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SupportPassportError,
|
|
3
3
|
SupportPassportOwnerCreateGrantRequestSchema,
|
|
4
4
|
getOperation
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2JRLKDHV.js";
|
|
6
6
|
|
|
7
7
|
// src/support-passport/access-http.ts
|
|
8
8
|
var OWNER_ROOT = "/engram/v1/support-passport";
|
|
@@ -137,4 +137,4 @@ export {
|
|
|
137
137
|
SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
|
|
138
138
|
handleSupportPassportOwnerHttp
|
|
139
139
|
};
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-D26XMQP5.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-7T4TOGMS.js";
|
|
4
4
|
import {
|
|
5
5
|
defineOperation
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2JRLKDHV.js";
|
|
7
7
|
|
|
8
8
|
// src/external-wiki-access.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
|
|
|
26
26
|
export {
|
|
27
27
|
externalWikiSearchOperation
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-D3USVQIV.js.map
|
|
@@ -21,10 +21,10 @@ import {
|
|
|
21
21
|
} from "./chunk-FETPTCQZ.js";
|
|
22
22
|
import {
|
|
23
23
|
handleSupportPassportOwnerHttp
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-D26XMQP5.js";
|
|
25
25
|
import {
|
|
26
26
|
buildSupportPassportPublicRequestHandler
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-5HVEYVNQ.js";
|
|
28
28
|
import {
|
|
29
29
|
handleMcpGetSse
|
|
30
30
|
} from "./chunk-SRT6SHVZ.js";
|
|
@@ -37,10 +37,10 @@ import {
|
|
|
37
37
|
processChatMessage,
|
|
38
38
|
sessionBelongsToPrincipal,
|
|
39
39
|
subscribeChatTranscript
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-TX627XOF.js";
|
|
41
41
|
import {
|
|
42
42
|
RelayMissionStoreError
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-FQU65RJX.js";
|
|
44
44
|
import {
|
|
45
45
|
handleRecallWhyHttpQuery,
|
|
46
46
|
handleRecallXrayHttpQuery
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
} from "./chunk-KNZDGZSY.js";
|
|
65
65
|
import {
|
|
66
66
|
respondBriefingHttp
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-6L62IDS6.js";
|
|
68
68
|
import {
|
|
69
69
|
maybeHandleLifecycleFlush
|
|
70
70
|
} from "./chunk-2BPPGNAQ.js";
|
|
@@ -75,11 +75,11 @@ import {
|
|
|
75
75
|
authorizationProbeNamespaces,
|
|
76
76
|
authorizationProbeRequiresPrincipalNamespace,
|
|
77
77
|
probeOperationAuthorization
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-G3PBNYDH.js";
|
|
79
79
|
import {
|
|
80
80
|
getOperation,
|
|
81
81
|
resolveQueryNamespaceWritablePreflight
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-2JRLKDHV.js";
|
|
83
83
|
import {
|
|
84
84
|
handleWhoKnowsHttpQuery
|
|
85
85
|
} from "./chunk-ELUG6NKQ.js";
|
|
@@ -3573,4 +3573,4 @@ export {
|
|
|
3573
3573
|
resolveDefaultAdminConsolePublicDir,
|
|
3574
3574
|
EngramAccessHttpServer
|
|
3575
3575
|
};
|
|
3576
|
-
//# sourceMappingURL=chunk-
|
|
3576
|
+
//# sourceMappingURL=chunk-EYIBIGIU.js.map
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
} from "./chunk-233S3MXC.js";
|
|
13
13
|
import {
|
|
14
14
|
externalWikiSearchOperation
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-D3USVQIV.js";
|
|
16
16
|
import {
|
|
17
17
|
DECISION_SUBCOMMANDS,
|
|
18
18
|
DELTA_SUBCOMMANDS,
|
|
19
19
|
defineOperation,
|
|
20
20
|
isCodegraphToolName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-2JRLKDHV.js";
|
|
22
22
|
import {
|
|
23
23
|
CorrectionContractError
|
|
24
24
|
} from "./chunk-ETSJD5IV.js";
|
|
@@ -1916,4 +1916,4 @@ export {
|
|
|
1916
1916
|
codegraphIngestTracesOperation,
|
|
1917
1917
|
REGISTERED_OPERATIONS
|
|
1918
1918
|
};
|
|
1919
|
-
//# sourceMappingURL=chunk-
|
|
1919
|
+
//# sourceMappingURL=chunk-FQU65RJX.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
getOperation,
|
|
4
4
|
operationRequiresAuthorizedNamespace,
|
|
5
5
|
operationUsesPrincipalNamespace
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2JRLKDHV.js";
|
|
7
7
|
import {
|
|
8
8
|
assertOperationAuthorizationAllowed
|
|
9
9
|
} from "./chunk-YO2JEX2Z.js";
|
|
@@ -60,4 +60,4 @@ export {
|
|
|
60
60
|
authorizationProbeNamespaces,
|
|
61
61
|
authorizationProbeRequiresPrincipalNamespace
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-G3PBNYDH.js.map
|
|
@@ -234,7 +234,7 @@ import {
|
|
|
234
234
|
runTimelinePublishCli,
|
|
235
235
|
screenCandidateFact,
|
|
236
236
|
summarizeVaultPublish
|
|
237
|
-
} from "./chunk-
|
|
237
|
+
} from "./chunk-MAURCRPQ.js";
|
|
238
238
|
import {
|
|
239
239
|
RoutingRulesStore
|
|
240
240
|
} from "./chunk-TBUEE7XF.js";
|
|
@@ -373,7 +373,7 @@ import {
|
|
|
373
373
|
} from "./chunk-MI2OTWV5.js";
|
|
374
374
|
import {
|
|
375
375
|
MeetingsInputError
|
|
376
|
-
} from "./chunk-
|
|
376
|
+
} from "./chunk-EYIBIGIU.js";
|
|
377
377
|
import {
|
|
378
378
|
WearablesInputError,
|
|
379
379
|
describeErrorForOperator
|
|
@@ -400,7 +400,7 @@ import {
|
|
|
400
400
|
detectPassiveCorrections,
|
|
401
401
|
renderSessionExperiencePreview,
|
|
402
402
|
scoreSessionExperienceForPrompt
|
|
403
|
-
} from "./chunk-
|
|
403
|
+
} from "./chunk-2JRLKDHV.js";
|
|
404
404
|
import {
|
|
405
405
|
importCapsule
|
|
406
406
|
} from "./chunk-2R7OCBRR.js";
|
|
@@ -671,7 +671,8 @@ import {
|
|
|
671
671
|
import {
|
|
672
672
|
bufferTurnsEqual,
|
|
673
673
|
describeError,
|
|
674
|
-
groupTurnsByExtractionScope
|
|
674
|
+
groupTurnsByExtractionScope,
|
|
675
|
+
scopeProfilePlanIdentity
|
|
675
676
|
} from "./chunk-4KLQI3L2.js";
|
|
676
677
|
import {
|
|
677
678
|
FallbackLlmClient,
|
|
@@ -16354,6 +16355,132 @@ function queueBufferedCaptureScopeGroups(queueBufferedExtraction, extractionTurn
|
|
|
16354
16355
|
}
|
|
16355
16356
|
}
|
|
16356
16357
|
|
|
16358
|
+
// src/orchestration/extraction-queue-snapshot-sharing.ts
|
|
16359
|
+
function automaticSnapshotSharingEligible(options) {
|
|
16360
|
+
return options.execution === void 0 && options.preemptable === true && options.failOnExtractionFailure !== true && options.forceExtractionAttempt !== true && options.preemptRunning !== true;
|
|
16361
|
+
}
|
|
16362
|
+
function turnRepresentationEquivalent(left, right) {
|
|
16363
|
+
return bufferTurnsEqual(left, right) && left.extractionContextOnly === right.extractionContextOnly && left.importProvenance === right.importProvenance && left.parts === right.parts && left.rawContent === right.rawContent && left.sourceFormat === right.sourceFormat;
|
|
16364
|
+
}
|
|
16365
|
+
function scopeClassKey(turn) {
|
|
16366
|
+
return [
|
|
16367
|
+
turn.writeNamespaceOverride ?? "",
|
|
16368
|
+
turn.principalOverride ?? "",
|
|
16369
|
+
scopeProfilePlanIdentity(turn.scopeProfileWritePlan),
|
|
16370
|
+
turn.acceptedCapture === true ? "accepted" : "",
|
|
16371
|
+
turn.codingContext?.projectId ?? "",
|
|
16372
|
+
turn.codingContext?.rootPath ?? "",
|
|
16373
|
+
turn.codingContext?.branch ?? "",
|
|
16374
|
+
turn.codingContext?.defaultBranch ?? ""
|
|
16375
|
+
].join("\0");
|
|
16376
|
+
}
|
|
16377
|
+
function chainNodes(chain) {
|
|
16378
|
+
const nodes = [];
|
|
16379
|
+
for (let node = chain; node; node = node.base) nodes.push(node);
|
|
16380
|
+
return [...nodes].reverse();
|
|
16381
|
+
}
|
|
16382
|
+
function chainPrefixEquivalent(chain, turns) {
|
|
16383
|
+
let offset = 0;
|
|
16384
|
+
for (const node of chainNodes(chain)) {
|
|
16385
|
+
for (const chained of node.tail) {
|
|
16386
|
+
const incoming = turns[offset];
|
|
16387
|
+
if (incoming === void 0) return false;
|
|
16388
|
+
if (!turnRepresentationEquivalent(chained, incoming)) return false;
|
|
16389
|
+
offset += 1;
|
|
16390
|
+
}
|
|
16391
|
+
}
|
|
16392
|
+
return offset === chain.total;
|
|
16393
|
+
}
|
|
16394
|
+
function materializeChain(chain) {
|
|
16395
|
+
const out = [];
|
|
16396
|
+
for (const node of chainNodes(chain)) {
|
|
16397
|
+
for (const turn of node.tail) out.push(turn);
|
|
16398
|
+
}
|
|
16399
|
+
return out;
|
|
16400
|
+
}
|
|
16401
|
+
var ExtractionSnapshotSharingRegistry = class {
|
|
16402
|
+
buckets = /* @__PURE__ */ new Map();
|
|
16403
|
+
/**
|
|
16404
|
+
* Admit one automatic snapshot for `bufferKey`: chain it onto the newest
|
|
16405
|
+
* queued same-scope snapshot when that is a verified prefix-extension,
|
|
16406
|
+
* otherwise start a fresh chain. The caller's array is never mutated.
|
|
16407
|
+
*/
|
|
16408
|
+
admit(bufferKey, turns) {
|
|
16409
|
+
const scopeClass = turns.length > 0 ? scopeClassKey(turns[0]) : "";
|
|
16410
|
+
const bucketKey = `${bufferKey}\0${scopeClass}`;
|
|
16411
|
+
const list = this.buckets.get(bucketKey);
|
|
16412
|
+
const base = list !== void 0 && list.length > 0 ? list[list.length - 1] : void 0;
|
|
16413
|
+
if (base && base.total === turns.length && chainPrefixEquivalent(base, turns)) {
|
|
16414
|
+
base.holders += 1;
|
|
16415
|
+
return base;
|
|
16416
|
+
}
|
|
16417
|
+
const node = base && base.total <= turns.length && chainPrefixEquivalent(base, turns) ? {
|
|
16418
|
+
key: bufferKey,
|
|
16419
|
+
scopeClass,
|
|
16420
|
+
base,
|
|
16421
|
+
baseLength: base.total,
|
|
16422
|
+
tail: turns.slice(base.total),
|
|
16423
|
+
total: turns.length,
|
|
16424
|
+
holders: 1
|
|
16425
|
+
} : {
|
|
16426
|
+
key: bufferKey,
|
|
16427
|
+
scopeClass,
|
|
16428
|
+
base: void 0,
|
|
16429
|
+
baseLength: 0,
|
|
16430
|
+
tail: [...turns],
|
|
16431
|
+
total: turns.length,
|
|
16432
|
+
holders: 1
|
|
16433
|
+
};
|
|
16434
|
+
if (list) list.push(node);
|
|
16435
|
+
else this.buckets.set(bucketKey, [node]);
|
|
16436
|
+
return node;
|
|
16437
|
+
}
|
|
16438
|
+
/** Release one holder of a node when its task exits (or on enqueue
|
|
16439
|
+
* refusal). CONTRACT: called EXACTLY ONCE per admit, by the task that
|
|
16440
|
+
* admitted it — the registry has no task identity, so a second call by the
|
|
16441
|
+
* same task would steal another holder's count. The only production caller
|
|
16442
|
+
* (queueBufferedExtraction) enforces this structurally: the closure-finally
|
|
16443
|
+
* and the enqueue-refusal branch are mutually exclusive. Defensively, a
|
|
16444
|
+
* release past zero is a no-op. */
|
|
16445
|
+
release(node) {
|
|
16446
|
+
if (node.holders <= 0) return;
|
|
16447
|
+
node.holders -= 1;
|
|
16448
|
+
if (node.holders > 0) return;
|
|
16449
|
+
const list = this.buckets.get(`${node.key}\0${node.scopeClass}`);
|
|
16450
|
+
if (!list) return;
|
|
16451
|
+
const index = list.indexOf(node);
|
|
16452
|
+
if (index >= 0) list.splice(index, 1);
|
|
16453
|
+
if (list.length === 0) this.buckets.delete(`${node.key}\0${node.scopeClass}`);
|
|
16454
|
+
}
|
|
16455
|
+
/** Proof seam: what the queue retains right now. */
|
|
16456
|
+
stats() {
|
|
16457
|
+
const visited = /* @__PURE__ */ new Set();
|
|
16458
|
+
let queuedNodes = 0;
|
|
16459
|
+
let queuedTailRefs = 0;
|
|
16460
|
+
let queuedReachableDepth = 0;
|
|
16461
|
+
let queuedHolders = 0;
|
|
16462
|
+
let unsharedEquivalentRefs = 0;
|
|
16463
|
+
let queuedTotalRefs = 0;
|
|
16464
|
+
for (const list of this.buckets.values()) {
|
|
16465
|
+
for (const node of list) {
|
|
16466
|
+
queuedNodes += 1;
|
|
16467
|
+
unsharedEquivalentRefs += node.total * node.holders;
|
|
16468
|
+
queuedTotalRefs += node.total;
|
|
16469
|
+
let depth = 0;
|
|
16470
|
+
for (let walk = node; walk; walk = walk.base) {
|
|
16471
|
+
depth += 1;
|
|
16472
|
+
if (visited.has(walk)) continue;
|
|
16473
|
+
visited.add(walk);
|
|
16474
|
+
queuedTailRefs += walk.tail.length;
|
|
16475
|
+
queuedHolders += walk.holders;
|
|
16476
|
+
}
|
|
16477
|
+
if (depth > queuedReachableDepth) queuedReachableDepth = depth;
|
|
16478
|
+
}
|
|
16479
|
+
}
|
|
16480
|
+
return { queuedNodes, queuedTotalRefs, queuedTailRefs, queuedReachableDepth, queuedHolders, unsharedEquivalentRefs };
|
|
16481
|
+
}
|
|
16482
|
+
};
|
|
16483
|
+
|
|
16357
16484
|
// src/orchestration/turn-ingestion.ts
|
|
16358
16485
|
var ReplayAdmissionRefusedError = class extends Error {
|
|
16359
16486
|
constructor(message) {
|
|
@@ -16367,13 +16494,15 @@ function isFlushPlanRecoveryTurn(turn) {
|
|
|
16367
16494
|
return typeof provenance?.sourceId === "string" && /:flush-plan(:\d+\/\d+)?$/.test(provenance.sourceId);
|
|
16368
16495
|
}
|
|
16369
16496
|
var TurnIngestionCoordinator = class {
|
|
16370
|
-
// chunked trigger-drain (extraction-drain.ts)
|
|
16371
16497
|
constructor(deps) {
|
|
16372
16498
|
this.deps = deps;
|
|
16373
16499
|
this.drain = new ExtractionDrain(deps);
|
|
16374
16500
|
}
|
|
16375
16501
|
deps;
|
|
16376
16502
|
drain;
|
|
16503
|
+
// chunked trigger-drain (extraction-drain.ts)
|
|
16504
|
+
/** Queued automatic-snapshot chains: bounded-queue retention via structural sharing. */
|
|
16505
|
+
snapshotSharing = new ExtractionSnapshotSharingRegistry();
|
|
16377
16506
|
async processTurn(role, content, sessionKey, options = {}) {
|
|
16378
16507
|
if (role !== "user" && role !== "assistant") {
|
|
16379
16508
|
log.debug(`processTurn: ignoring unsupported role=${String(role)}`);
|
|
@@ -16855,6 +16984,8 @@ var TurnIngestionCoordinator = class {
|
|
|
16855
16984
|
}
|
|
16856
16985
|
if (settled) return;
|
|
16857
16986
|
const preemptable = options.preemptable === true && options.preemptRunning !== true;
|
|
16987
|
+
const sharingNode = automaticSnapshotSharingEligible(options) && turnsToExtract.length > 0 ? this.snapshotSharing.admit(bufferKey, turnsToExtract) : void 0;
|
|
16988
|
+
const queuedTurnsSource = sharingNode ? { chain: sharingNode } : { direct: turnsToExtract };
|
|
16858
16989
|
const accepted = this.deps.extractionQueueCoordinator.enqueue(async (preemptHandle) => {
|
|
16859
16990
|
try {
|
|
16860
16991
|
await this.deps.extractionQueueCoordinator.runPreemptable(preemptHandle, preemptable, options.abortSignal, async (abortSignal) => {
|
|
@@ -16866,7 +16997,7 @@ var TurnIngestionCoordinator = class {
|
|
|
16866
16997
|
clearQueueWaitTimer();
|
|
16867
16998
|
if (options.execution === void 0 && skipClaimedSession(this.deps.buffer, bufferKey, (result) => settleTask(void 0, result))) return;
|
|
16868
16999
|
try {
|
|
16869
|
-
let effectiveTurns =
|
|
17000
|
+
let effectiveTurns = "chain" in queuedTurnsSource ? materializeChain(queuedTurnsSource.chain) : queuedTurnsSource.direct;
|
|
16870
17001
|
let effectiveScopePlan = options.scopeProfileWritePlan;
|
|
16871
17002
|
const executionBuffer = options.execution?.buffer;
|
|
16872
17003
|
if (effectiveTurns.some((turn) => turn.acceptedCapture === true)) {
|
|
@@ -16983,10 +17114,12 @@ var TurnIngestionCoordinator = class {
|
|
|
16983
17114
|
}
|
|
16984
17115
|
});
|
|
16985
17116
|
} finally {
|
|
17117
|
+
if (sharingNode) this.snapshotSharing.release(sharingNode);
|
|
16986
17118
|
options.onTaskExit?.();
|
|
16987
17119
|
}
|
|
16988
17120
|
}, { front: options.preemptRunning === true, key: bufferKey });
|
|
16989
17121
|
if (!accepted) {
|
|
17122
|
+
if (sharingNode) this.snapshotSharing.release(sharingNode);
|
|
16990
17123
|
settleTask(new Error("extraction queue is stopped"));
|
|
16991
17124
|
options.onTaskExit?.();
|
|
16992
17125
|
return;
|
|
@@ -32085,4 +32218,4 @@ export {
|
|
|
32085
32218
|
qmdStartupCollectionChecksWithTimeout,
|
|
32086
32219
|
Orchestrator
|
|
32087
32220
|
};
|
|
32088
|
-
//# sourceMappingURL=chunk-
|
|
32221
|
+
//# sourceMappingURL=chunk-I4W2ADBP.js.map
|