ds4-context-core 0.1.2 → 0.2.0-beta.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.
Files changed (125) hide show
  1. package/README.md +20 -4
  2. package/dist/adapter/conformance.d.ts +35 -0
  3. package/dist/adapter/conformance.d.ts.map +1 -0
  4. package/dist/adapter/conformance.js +260 -0
  5. package/dist/adapter/conformance.js.map +1 -0
  6. package/dist/adapter/local-kv.d.ts +125 -0
  7. package/dist/adapter/local-kv.d.ts.map +1 -0
  8. package/dist/adapter/local-kv.js +276 -0
  9. package/dist/adapter/local-kv.js.map +1 -0
  10. package/dist/adapter/runtime-adapter.d.ts +124 -0
  11. package/dist/adapter/runtime-adapter.d.ts.map +1 -0
  12. package/dist/adapter/runtime-adapter.js +289 -0
  13. package/dist/adapter/runtime-adapter.js.map +1 -0
  14. package/dist/config/config-loader.d.ts +1 -0
  15. package/dist/config/config-loader.d.ts.map +1 -1
  16. package/dist/config/config-loader.js +110 -1
  17. package/dist/config/config-loader.js.map +1 -1
  18. package/dist/config/config.d.ts +50 -0
  19. package/dist/config/config.d.ts.map +1 -1
  20. package/dist/config/config.js +31 -0
  21. package/dist/config/config.js.map +1 -1
  22. package/dist/core/canonical-message.d.ts +2 -1
  23. package/dist/core/canonical-message.d.ts.map +1 -1
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +13 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/manifest/context-manifest.d.ts +12 -0
  29. package/dist/manifest/context-manifest.d.ts.map +1 -1
  30. package/dist/memory/memory-manager.d.ts +7 -1
  31. package/dist/memory/memory-manager.d.ts.map +1 -1
  32. package/dist/memory/memory-manager.js +100 -3
  33. package/dist/memory/memory-manager.js.map +1 -1
  34. package/dist/memory/memory-types.d.ts +43 -0
  35. package/dist/memory/memory-types.d.ts.map +1 -1
  36. package/dist/memory/memory-types.js.map +1 -1
  37. package/dist/persistence/migrations.d.ts +2 -1
  38. package/dist/persistence/migrations.d.ts.map +1 -1
  39. package/dist/persistence/migrations.js +155 -25
  40. package/dist/persistence/migrations.js.map +1 -1
  41. package/dist/persistence/repositories/artifact-repository.d.ts +3 -1
  42. package/dist/persistence/repositories/artifact-repository.d.ts.map +1 -1
  43. package/dist/persistence/repositories/artifact-repository.js +16 -27
  44. package/dist/persistence/repositories/artifact-repository.js.map +1 -1
  45. package/dist/persistence/repositories/context-manifest-repository.d.ts +3 -1
  46. package/dist/persistence/repositories/context-manifest-repository.d.ts.map +1 -1
  47. package/dist/persistence/repositories/context-manifest-repository.js +10 -18
  48. package/dist/persistence/repositories/context-manifest-repository.js.map +1 -1
  49. package/dist/persistence/repositories/context-quality-repository.d.ts +21 -0
  50. package/dist/persistence/repositories/context-quality-repository.d.ts.map +1 -0
  51. package/dist/persistence/repositories/context-quality-repository.js +83 -0
  52. package/dist/persistence/repositories/context-quality-repository.js.map +1 -0
  53. package/dist/persistence/repositories/embedding-repository.d.ts +37 -0
  54. package/dist/persistence/repositories/embedding-repository.d.ts.map +1 -0
  55. package/dist/persistence/repositories/embedding-repository.js +142 -0
  56. package/dist/persistence/repositories/embedding-repository.js.map +1 -0
  57. package/dist/persistence/repositories/lease-repository.d.ts +22 -0
  58. package/dist/persistence/repositories/lease-repository.d.ts.map +1 -0
  59. package/dist/persistence/repositories/lease-repository.js +113 -0
  60. package/dist/persistence/repositories/lease-repository.js.map +1 -0
  61. package/dist/persistence/repositories/memory-repository.d.ts +34 -3
  62. package/dist/persistence/repositories/memory-repository.d.ts.map +1 -1
  63. package/dist/persistence/repositories/memory-repository.js +426 -64
  64. package/dist/persistence/repositories/memory-repository.js.map +1 -1
  65. package/dist/persistence/repositories/project-knowledge-repository.d.ts +28 -5
  66. package/dist/persistence/repositories/project-knowledge-repository.d.ts.map +1 -1
  67. package/dist/persistence/repositories/project-knowledge-repository.js +123 -53
  68. package/dist/persistence/repositories/project-knowledge-repository.js.map +1 -1
  69. package/dist/persistence/repositories/session-index-repository.d.ts +9 -1
  70. package/dist/persistence/repositories/session-index-repository.d.ts.map +1 -1
  71. package/dist/persistence/repositories/session-index-repository.js +38 -17
  72. package/dist/persistence/repositories/session-index-repository.js.map +1 -1
  73. package/dist/persistence/repositories/summary-repository.d.ts +3 -1
  74. package/dist/persistence/repositories/summary-repository.d.ts.map +1 -1
  75. package/dist/persistence/repositories/summary-repository.js +35 -31
  76. package/dist/persistence/repositories/summary-repository.js.map +1 -1
  77. package/dist/persistence/sqlite.d.ts +10 -0
  78. package/dist/persistence/sqlite.d.ts.map +1 -1
  79. package/dist/persistence/sqlite.js +41 -12
  80. package/dist/persistence/sqlite.js.map +1 -1
  81. package/dist/persistence/write-coordinator.d.ts +37 -0
  82. package/dist/persistence/write-coordinator.d.ts.map +1 -0
  83. package/dist/persistence/write-coordinator.js +120 -0
  84. package/dist/persistence/write-coordinator.js.map +1 -0
  85. package/dist/planner/context-planner.d.ts +5 -0
  86. package/dist/planner/context-planner.d.ts.map +1 -1
  87. package/dist/planner/context-planner.js +41 -62
  88. package/dist/planner/context-planner.js.map +1 -1
  89. package/dist/project/file-indexer.d.ts +5 -3
  90. package/dist/project/file-indexer.d.ts.map +1 -1
  91. package/dist/project/file-indexer.js +83 -38
  92. package/dist/project/file-indexer.js.map +1 -1
  93. package/dist/project/project-knowledge.d.ts +15 -3
  94. package/dist/project/project-knowledge.d.ts.map +1 -1
  95. package/dist/project/project-knowledge.js +168 -42
  96. package/dist/project/project-knowledge.js.map +1 -1
  97. package/dist/project/symbol-parser.d.ts +48 -0
  98. package/dist/project/symbol-parser.d.ts.map +1 -0
  99. package/dist/project/symbol-parser.js +427 -0
  100. package/dist/project/symbol-parser.js.map +1 -0
  101. package/dist/quality/context-quality.d.ts +172 -0
  102. package/dist/quality/context-quality.d.ts.map +1 -0
  103. package/dist/quality/context-quality.js +624 -0
  104. package/dist/quality/context-quality.js.map +1 -0
  105. package/dist/ranking/learned-ranker.d.ts +174 -0
  106. package/dist/ranking/learned-ranker.d.ts.map +1 -0
  107. package/dist/ranking/learned-ranker.js +782 -0
  108. package/dist/ranking/learned-ranker.js.map +1 -0
  109. package/dist/retrieval/embedding.d.ts +92 -0
  110. package/dist/retrieval/embedding.d.ts.map +1 -0
  111. package/dist/retrieval/embedding.js +56 -0
  112. package/dist/retrieval/embedding.js.map +1 -0
  113. package/dist/retrieval/retrieval-engine.d.ts +9 -1
  114. package/dist/retrieval/retrieval-engine.d.ts.map +1 -1
  115. package/dist/retrieval/retrieval-engine.js +105 -7
  116. package/dist/retrieval/retrieval-engine.js.map +1 -1
  117. package/dist/retrieval/semantic-index.d.ts +30 -0
  118. package/dist/retrieval/semantic-index.d.ts.map +1 -0
  119. package/dist/retrieval/semantic-index.js +284 -0
  120. package/dist/retrieval/semantic-index.js.map +1 -0
  121. package/dist/retrieval/semantic-quality.d.ts +52 -0
  122. package/dist/retrieval/semantic-quality.d.ts.map +1 -0
  123. package/dist/retrieval/semantic-quality.js +117 -0
  124. package/dist/retrieval/semantic-quality.js.map +1 -0
  125. package/package.json +1 -1
@@ -0,0 +1,276 @@
1
+ import { sha256 } from "../shared/hash.js";
2
+ import { stableStringify } from "../shared/stable-json.js";
3
+ export const LOCAL_KV_ELIGIBILITY_VERSION = "local-kv-eligibility-v1";
4
+ export const LOCAL_KV_RUNTIME_PORT_VERSION = "local-kv-runtime-port-v1";
5
+ export const LOCAL_KV_DIAGNOSTICS_VERSION = "local-kv-diagnostics-v1";
6
+ function identifier(value, maximum = 256) {
7
+ return typeof value === "string"
8
+ && value.length > 0
9
+ && value.length <= maximum
10
+ && value.trim() === value
11
+ && !/[\u0000-\u001f\u007f]/u.test(value);
12
+ }
13
+ function validTokenCount(value) {
14
+ return Number.isSafeInteger(value) && value >= 0;
15
+ }
16
+ function assertStableOption(value, seen) {
17
+ if (value === null || typeof value === "string" || typeof value === "boolean")
18
+ return;
19
+ if (typeof value === "number") {
20
+ if (!Number.isFinite(value))
21
+ throw new Error("non-finite option number");
22
+ return;
23
+ }
24
+ if (typeof value === "undefined")
25
+ return;
26
+ if (typeof value !== "object" || value instanceof Uint8Array) {
27
+ throw new Error("unsupported option value");
28
+ }
29
+ if (seen.has(value))
30
+ throw new Error("circular option value");
31
+ const prototype = Object.getPrototypeOf(value);
32
+ if (!Array.isArray(value) && prototype !== Object.prototype && prototype !== null) {
33
+ throw new Error("non-plain option object");
34
+ }
35
+ seen.add(value);
36
+ try {
37
+ if (Array.isArray(value)) {
38
+ const extraKeys = Reflect.ownKeys(value).filter((key) => key !== "length" && (typeof key !== "string" || !/^(?:0|[1-9]\d*)$/u.test(key)));
39
+ if (extraKeys.length > 0)
40
+ throw new Error("unsupported array option property");
41
+ for (const item of value)
42
+ assertStableOption(item, seen);
43
+ }
44
+ else {
45
+ for (const key of Reflect.ownKeys(value)) {
46
+ if (typeof key !== "string")
47
+ throw new Error("symbol option key");
48
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
49
+ if (!descriptor?.enumerable || !("value" in descriptor)) {
50
+ throw new Error("non-data option property");
51
+ }
52
+ assertStableOption(descriptor.value, seen);
53
+ }
54
+ }
55
+ }
56
+ finally {
57
+ seen.delete(value);
58
+ }
59
+ }
60
+ function optionsHash(systemOptions, toolOptions) {
61
+ try {
62
+ const seen = new WeakSet();
63
+ assertStableOption(systemOptions, seen);
64
+ assertStableOption(toolOptions, seen);
65
+ return sha256(stableStringify({ systemOptions, toolOptions }));
66
+ }
67
+ catch {
68
+ return undefined;
69
+ }
70
+ }
71
+ export function deriveLocalKvEligibility(input) {
72
+ if (input.enabled !== true)
73
+ return { eligible: false, reason: "disabled" };
74
+ if (input.capabilityEnabled !== true)
75
+ return { eligible: false, reason: "capability-unsupported" };
76
+ if (input.destination !== "local")
77
+ return { eligible: false, reason: "non-local-destination" };
78
+ if (!identifier(input.provider))
79
+ return { eligible: false, reason: "invalid-provider" };
80
+ if (!identifier(input.model))
81
+ return { eligible: false, reason: "invalid-model" };
82
+ if (!identifier(input.modelRevision))
83
+ return { eligible: false, reason: "invalid-model-revision" };
84
+ if (!identifier(input.runtimeId))
85
+ return { eligible: false, reason: "invalid-runtime-identity" };
86
+ if (!identifier(input.runtimeRevision))
87
+ return { eligible: false, reason: "invalid-runtime-revision" };
88
+ if (!identifier(input.capabilityVersion, 64))
89
+ return { eligible: false, reason: "invalid-capability-version" };
90
+ if (!identifier(input.privacyPolicyVersion)) {
91
+ return { eligible: false, reason: "invalid-privacy-policy-version" };
92
+ }
93
+ const prefixBytes = typeof input.promptPrefix === "string"
94
+ ? new TextEncoder().encode(input.promptPrefix)
95
+ : input.promptPrefix;
96
+ if (!(prefixBytes instanceof Uint8Array) || prefixBytes.byteLength === 0) {
97
+ return { eligible: false, reason: "invalid-prompt-prefix" };
98
+ }
99
+ if (!validTokenCount(input.prefixTokenCount)
100
+ || !validTokenCount(input.contextTokenCount)
101
+ || input.prefixTokenCount > input.contextTokenCount) {
102
+ return { eligible: false, reason: "invalid-token-count" };
103
+ }
104
+ const hashedOptions = optionsHash(input.systemOptions, input.toolOptions);
105
+ if (!hashedOptions)
106
+ return { eligible: false, reason: "invalid-options" };
107
+ const prefixHash = sha256(prefixBytes);
108
+ const providerModelHash = sha256(stableStringify({
109
+ provider: input.provider,
110
+ model: input.model,
111
+ modelRevision: input.modelRevision,
112
+ }));
113
+ const privacyHash = sha256(stableStringify({
114
+ destination: input.destination,
115
+ privacyPolicyVersion: input.privacyPolicyVersion,
116
+ }));
117
+ const runtimeHash = sha256(stableStringify({
118
+ runtimeId: input.runtimeId,
119
+ runtimeRevision: input.runtimeRevision,
120
+ capabilityVersion: input.capabilityVersion,
121
+ }));
122
+ const fingerprint = sha256(stableStringify({
123
+ version: LOCAL_KV_ELIGIBILITY_VERSION,
124
+ prefixHash,
125
+ providerModelHash,
126
+ optionsHash: hashedOptions,
127
+ privacyHash,
128
+ runtimeHash,
129
+ }));
130
+ return {
131
+ eligible: true,
132
+ key: {
133
+ version: LOCAL_KV_ELIGIBILITY_VERSION,
134
+ fingerprint,
135
+ prefixHash,
136
+ providerModelHash,
137
+ optionsHash: hashedOptions,
138
+ privacyHash,
139
+ runtimeHash,
140
+ },
141
+ prefixTokenCount: input.prefixTokenCount,
142
+ contextTokenCount: input.contextTokenCount,
143
+ };
144
+ }
145
+ function freshDiagnostics() {
146
+ return {
147
+ version: LOCAL_KV_DIAGNOSTICS_VERSION,
148
+ requests: 0,
149
+ eligibleRequests: 0,
150
+ bypassedRequests: 0,
151
+ hits: 0,
152
+ misses: 0,
153
+ rejected: 0,
154
+ unavailable: 0,
155
+ fullReplays: 0,
156
+ transportFailures: 0,
157
+ prefixTokens: 0,
158
+ contextTokens: 0,
159
+ savedPrefillTokens: 0,
160
+ replayPrefillTokens: 0,
161
+ replayPrefillLatencyMs: 0,
162
+ };
163
+ }
164
+ function boundedAdd(current, increment) {
165
+ if (!Number.isFinite(increment) || increment < 0)
166
+ return current;
167
+ return Math.min(Number.MAX_SAFE_INTEGER, current + increment);
168
+ }
169
+ function validLatency(value) {
170
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
171
+ }
172
+ function validReuseAttempt(value, prefixTokens) {
173
+ if (!value || typeof value !== "object" || !("status" in value))
174
+ return false;
175
+ const attempt = value;
176
+ if (attempt.status === "miss" || attempt.status === "rejected" || attempt.status === "unavailable")
177
+ return true;
178
+ return attempt.status === "hit"
179
+ && "output" in attempt
180
+ && validTokenCount(attempt.savedPrefillTokens)
181
+ && attempt.savedPrefillTokens <= prefixTokens
182
+ && validLatency(attempt.prefillLatencyMs);
183
+ }
184
+ function validFullReplay(value) {
185
+ if (!value || typeof value !== "object")
186
+ return false;
187
+ const replay = value;
188
+ return "output" in replay
189
+ && validTokenCount(replay.prefillTokens)
190
+ && validLatency(replay.prefillLatencyMs);
191
+ }
192
+ /** Volatile aggregate controller; it stores no prompt, fingerprint, or cache handle. */
193
+ export class LocalKvReuseController {
194
+ aggregate = freshDiagnostics();
195
+ diagnostics() {
196
+ return { ...this.aggregate };
197
+ }
198
+ resetDiagnostics() {
199
+ this.aggregate = freshDiagnostics();
200
+ }
201
+ async complete(input, port) {
202
+ this.aggregate.requests = boundedAdd(this.aggregate.requests, 1);
203
+ const eligibility = deriveLocalKvEligibility(input);
204
+ if (!eligibility.eligible) {
205
+ this.aggregate.bypassedRequests = boundedAdd(this.aggregate.bypassedRequests, 1);
206
+ return { status: "ineligible", reason: eligibility.reason };
207
+ }
208
+ this.aggregate.eligibleRequests = boundedAdd(this.aggregate.eligibleRequests, 1);
209
+ this.aggregate.prefixTokens = boundedAdd(this.aggregate.prefixTokens, eligibility.prefixTokenCount);
210
+ this.aggregate.contextTokens = boundedAdd(this.aggregate.contextTokens, eligibility.contextTokenCount);
211
+ const runtimeRequest = {
212
+ eligibility: eligibility.key,
213
+ provider: input.provider,
214
+ model: input.model,
215
+ payload: input.payload,
216
+ prefixTokenCount: eligibility.prefixTokenCount,
217
+ contextTokenCount: eligibility.contextTokenCount,
218
+ };
219
+ let attempt = { status: "unavailable" };
220
+ try {
221
+ const candidate = await port.tryReuse(runtimeRequest);
222
+ if (validReuseAttempt(candidate, eligibility.prefixTokenCount))
223
+ attempt = candidate;
224
+ }
225
+ catch {
226
+ // Runtime/cache loss is intentionally indistinguishable from unavailable state.
227
+ }
228
+ if (attempt.status === "hit") {
229
+ this.aggregate.hits = boundedAdd(this.aggregate.hits, 1);
230
+ this.aggregate.savedPrefillTokens = boundedAdd(this.aggregate.savedPrefillTokens, attempt.savedPrefillTokens);
231
+ return {
232
+ status: "completed",
233
+ output: attempt.output,
234
+ metadata: {
235
+ mode: "hit",
236
+ prefixTokens: eligibility.prefixTokenCount,
237
+ contextTokens: eligibility.contextTokenCount,
238
+ savedPrefillTokens: attempt.savedPrefillTokens,
239
+ replayPrefillTokens: 0,
240
+ prefillLatencyMs: attempt.prefillLatencyMs,
241
+ },
242
+ };
243
+ }
244
+ if (attempt.status === "miss")
245
+ this.aggregate.misses = boundedAdd(this.aggregate.misses, 1);
246
+ else if (attempt.status === "rejected")
247
+ this.aggregate.rejected = boundedAdd(this.aggregate.rejected, 1);
248
+ else
249
+ this.aggregate.unavailable = boundedAdd(this.aggregate.unavailable, 1);
250
+ this.aggregate.fullReplays = boundedAdd(this.aggregate.fullReplays, 1);
251
+ try {
252
+ const replay = await port.fullReplay(runtimeRequest);
253
+ if (!validFullReplay(replay))
254
+ throw new Error("local KV runtime returned invalid replay metadata");
255
+ this.aggregate.replayPrefillTokens = boundedAdd(this.aggregate.replayPrefillTokens, replay.prefillTokens);
256
+ this.aggregate.replayPrefillLatencyMs = boundedAdd(this.aggregate.replayPrefillLatencyMs, replay.prefillLatencyMs);
257
+ return {
258
+ status: "completed",
259
+ output: replay.output,
260
+ metadata: {
261
+ mode: "full-replay",
262
+ prefixTokens: eligibility.prefixTokenCount,
263
+ contextTokens: eligibility.contextTokenCount,
264
+ savedPrefillTokens: 0,
265
+ replayPrefillTokens: replay.prefillTokens,
266
+ prefillLatencyMs: replay.prefillLatencyMs,
267
+ },
268
+ };
269
+ }
270
+ catch (error) {
271
+ this.aggregate.transportFailures = boundedAdd(this.aggregate.transportFailures, 1);
272
+ throw error;
273
+ }
274
+ }
275
+ }
276
+ //# sourceMappingURL=local-kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-kv.js","sourceRoot":"","sources":["../../src/adapter/local-kv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import type { CanonicalMessage } from "../core/canonical-message.ts";
2
+ import type { ModelDescriptor } from "../core/model-profile.ts";
3
+ import type { EmbeddingPort } from "../retrieval/embedding.ts";
4
+ import type { LocalKvCompletionMetadata, LocalKvReuseDiagnostics, LocalKvRuntimePort } from "./local-kv.ts";
5
+ export declare const RUNTIME_ADAPTER_CONTRACT_VERSION: "runtime-adapter-v1";
6
+ export declare const RUNTIME_HISTORY_SCHEMA_VERSION: "runtime-history-v1";
7
+ export declare const RUNTIME_CAPABILITY_IDS: readonly ["compaction", "provider-continuation", "embeddings", "local-kv-reuse"];
8
+ export type RuntimeCapabilityId = typeof RUNTIME_CAPABILITY_IDS[number];
9
+ export type RuntimeDiagnosticSeverity = "info" | "warning" | "error";
10
+ export interface RuntimeAdapterIdentity {
11
+ runtimeId: string;
12
+ adapterName: string;
13
+ adapterVersion: string;
14
+ contractVersion: typeof RUNTIME_ADAPTER_CONTRACT_VERSION;
15
+ }
16
+ export interface RuntimeCapabilityDeclaration {
17
+ id: RuntimeCapabilityId;
18
+ supported: boolean;
19
+ version?: string;
20
+ reason?: string;
21
+ }
22
+ export interface RuntimeCapabilityRequest {
23
+ id: RuntimeCapabilityId;
24
+ required?: boolean;
25
+ }
26
+ export interface RuntimeCapabilityStatus extends RuntimeCapabilityDeclaration {
27
+ requested: boolean;
28
+ required: boolean;
29
+ enabled: boolean;
30
+ }
31
+ export interface RuntimeAdapterDiagnostic {
32
+ code: string;
33
+ severity: RuntimeDiagnosticSeverity;
34
+ message: string;
35
+ capability?: RuntimeCapabilityId;
36
+ }
37
+ export interface RuntimeCapabilityNegotiation {
38
+ contractVersion: typeof RUNTIME_ADAPTER_CONTRACT_VERSION;
39
+ statuses: RuntimeCapabilityStatus[];
40
+ enabled: RuntimeCapabilityId[];
41
+ disabled: RuntimeCapabilityId[];
42
+ diagnostics: RuntimeAdapterDiagnostic[];
43
+ }
44
+ export interface RuntimeToolAtomicGroup {
45
+ id: string;
46
+ messageIds: string[];
47
+ toolCallIds: string[];
48
+ complete: boolean;
49
+ }
50
+ export interface RuntimeHistorySnapshot {
51
+ schemaVersion: typeof RUNTIME_HISTORY_SCHEMA_VERSION;
52
+ runtimeId: string;
53
+ sessionId: string;
54
+ revision: string;
55
+ projectRoot: string;
56
+ messages: CanonicalMessage[];
57
+ toolAtomicGroups: RuntimeToolAtomicGroup[];
58
+ }
59
+ export interface RuntimeHistoryValidationIssue {
60
+ code: string;
61
+ message: string;
62
+ messageId?: string;
63
+ toolCallId?: string;
64
+ }
65
+ export interface RuntimePrivacyRequest<T = unknown> {
66
+ provider: string;
67
+ payload: T;
68
+ }
69
+ export interface RuntimePrivacyResult<T = unknown> {
70
+ provider: string;
71
+ destination: "local" | "remote";
72
+ payload: T;
73
+ changed: boolean;
74
+ blockedBlocks: number;
75
+ secretRedactions: number;
76
+ }
77
+ export interface RuntimeCompletionRequest<T = unknown> {
78
+ provider: string;
79
+ model: string;
80
+ payload: T;
81
+ }
82
+ export interface RuntimeCompletionTransportRequest<T = unknown> {
83
+ provider: string;
84
+ model: string;
85
+ destination: "local" | "remote";
86
+ payload: T;
87
+ }
88
+ export type RuntimeCompletionTransport = (request: RuntimeCompletionTransportRequest) => Promise<unknown>;
89
+ export type RuntimeCompletionResult = {
90
+ status: "completed";
91
+ output: unknown;
92
+ privacy: Omit<RuntimePrivacyResult, "payload">;
93
+ localKv?: LocalKvCompletionMetadata;
94
+ } | {
95
+ status: "fallback";
96
+ code: "adapter-closed" | "invalid-request" | "privacy-enforcement-failed" | "transport-failed";
97
+ reason: string;
98
+ retryable: boolean;
99
+ };
100
+ /**
101
+ * Runtime-facing DS4 boundary. Implementations own native history conversion,
102
+ * completion transport and lifecycle integration; core owns only this neutral contract.
103
+ */
104
+ export interface RuntimeAdapter {
105
+ readonly identity: RuntimeAdapterIdentity;
106
+ readonly embeddingPort?: EmbeddingPort;
107
+ /** Optional volatile runtime-owned KV boundary; handles never cross into core. */
108
+ readonly localKvPort?: LocalKvRuntimePort;
109
+ capabilityDeclarations(): readonly RuntimeCapabilityDeclaration[];
110
+ negotiateCapabilities(requested: readonly RuntimeCapabilityRequest[]): RuntimeCapabilityNegotiation;
111
+ snapshotHistory(): Promise<RuntimeHistorySnapshot>;
112
+ rebuildDerivedState(): Promise<RuntimeHistorySnapshot>;
113
+ currentModel(): Promise<ModelDescriptor | undefined>;
114
+ trustedProjectRoot(): Promise<string>;
115
+ enforcePrivacy<T>(request: RuntimePrivacyRequest<T>): Promise<RuntimePrivacyResult<T>>;
116
+ complete<T>(request: RuntimeCompletionRequest<T>): Promise<RuntimeCompletionResult>;
117
+ diagnostics(): readonly RuntimeAdapterDiagnostic[];
118
+ localKvDiagnostics?(): LocalKvReuseDiagnostics;
119
+ shutdown(): Promise<void>;
120
+ }
121
+ export declare function negotiateRuntimeCapabilities(declarations: readonly RuntimeCapabilityDeclaration[], requested: readonly RuntimeCapabilityRequest[]): RuntimeCapabilityNegotiation;
122
+ export declare function buildCanonicalToolAtomicGroups(messages: readonly CanonicalMessage[]): RuntimeToolAtomicGroup[];
123
+ export declare function validateRuntimeHistorySnapshot(snapshot: RuntimeHistorySnapshot): RuntimeHistoryValidationIssue[];
124
+ //# sourceMappingURL=runtime-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/runtime-adapter.ts"],"names":[],"mappings":"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"}