ds4-context-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/dist/artifacts/artifact-manager.d.ts +58 -0
  4. package/dist/artifacts/artifact-manager.d.ts.map +1 -0
  5. package/dist/artifacts/artifact-manager.js +445 -0
  6. package/dist/artifacts/artifact-manager.js.map +1 -0
  7. package/dist/artifacts/artifact-store.d.ts +33 -0
  8. package/dist/artifacts/artifact-store.d.ts.map +1 -0
  9. package/dist/artifacts/artifact-store.js +116 -0
  10. package/dist/artifacts/artifact-store.js.map +1 -0
  11. package/dist/compaction/compaction-record.d.ts +74 -0
  12. package/dist/compaction/compaction-record.d.ts.map +1 -0
  13. package/dist/compaction/compaction-record.js +113 -0
  14. package/dist/compaction/compaction-record.js.map +1 -0
  15. package/dist/compaction/summary-contract.d.ts +68 -0
  16. package/dist/compaction/summary-contract.d.ts.map +1 -0
  17. package/dist/compaction/summary-contract.js +315 -0
  18. package/dist/compaction/summary-contract.js.map +1 -0
  19. package/dist/compaction/summary-graph.d.ts +48 -0
  20. package/dist/compaction/summary-graph.d.ts.map +1 -0
  21. package/dist/compaction/summary-graph.js +123 -0
  22. package/dist/compaction/summary-graph.js.map +1 -0
  23. package/dist/config/config-loader.d.ts +18 -0
  24. package/dist/config/config-loader.d.ts.map +1 -0
  25. package/dist/config/config-loader.js +305 -0
  26. package/dist/config/config-loader.js.map +1 -0
  27. package/dist/config/config.d.ts +113 -0
  28. package/dist/config/config.d.ts.map +1 -0
  29. package/dist/config/config.js +89 -0
  30. package/dist/config/config.js.map +1 -0
  31. package/dist/continuation/native-continuation.d.ts +107 -0
  32. package/dist/continuation/native-continuation.d.ts.map +1 -0
  33. package/dist/continuation/native-continuation.js +374 -0
  34. package/dist/continuation/native-continuation.js.map +1 -0
  35. package/dist/core/budget-manager.d.ts +26 -0
  36. package/dist/core/budget-manager.d.ts.map +1 -0
  37. package/dist/core/budget-manager.js +42 -0
  38. package/dist/core/budget-manager.js.map +1 -0
  39. package/dist/core/canonical-message.d.ts +69 -0
  40. package/dist/core/canonical-message.d.ts.map +1 -0
  41. package/dist/core/canonical-message.js +2 -0
  42. package/dist/core/canonical-message.js.map +1 -0
  43. package/dist/core/model-awareness.d.ts +59 -0
  44. package/dist/core/model-awareness.d.ts.map +1 -0
  45. package/dist/core/model-awareness.js +177 -0
  46. package/dist/core/model-awareness.js.map +1 -0
  47. package/dist/core/model-profile.d.ts +27 -0
  48. package/dist/core/model-profile.d.ts.map +1 -0
  49. package/dist/core/model-profile.js +29 -0
  50. package/dist/core/model-profile.js.map +1 -0
  51. package/dist/core/token-estimator.d.ts +4 -0
  52. package/dist/core/token-estimator.d.ts.map +1 -0
  53. package/dist/core/token-estimator.js +64 -0
  54. package/dist/core/token-estimator.js.map +1 -0
  55. package/dist/index.d.ts +37 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +37 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/manifest/context-manifest.d.ts +163 -0
  60. package/dist/manifest/context-manifest.d.ts.map +1 -0
  61. package/dist/manifest/context-manifest.js +2 -0
  62. package/dist/manifest/context-manifest.js.map +1 -0
  63. package/dist/manifest/observer.d.ts +63 -0
  64. package/dist/manifest/observer.d.ts.map +1 -0
  65. package/dist/manifest/observer.js +150 -0
  66. package/dist/manifest/observer.js.map +1 -0
  67. package/dist/memory/memory-manager.d.ts +112 -0
  68. package/dist/memory/memory-manager.d.ts.map +1 -0
  69. package/dist/memory/memory-manager.js +499 -0
  70. package/dist/memory/memory-manager.js.map +1 -0
  71. package/dist/memory/memory-types.d.ts +126 -0
  72. package/dist/memory/memory-types.d.ts.map +1 -0
  73. package/dist/memory/memory-types.js +73 -0
  74. package/dist/memory/memory-types.js.map +1 -0
  75. package/dist/persistence/migrations.d.ts +17 -0
  76. package/dist/persistence/migrations.d.ts.map +1 -0
  77. package/dist/persistence/migrations.js +588 -0
  78. package/dist/persistence/migrations.js.map +1 -0
  79. package/dist/persistence/repositories/artifact-repository.d.ts +50 -0
  80. package/dist/persistence/repositories/artifact-repository.d.ts.map +1 -0
  81. package/dist/persistence/repositories/artifact-repository.js +186 -0
  82. package/dist/persistence/repositories/artifact-repository.js.map +1 -0
  83. package/dist/persistence/repositories/context-manifest-repository.d.ts +19 -0
  84. package/dist/persistence/repositories/context-manifest-repository.d.ts.map +1 -0
  85. package/dist/persistence/repositories/context-manifest-repository.js +144 -0
  86. package/dist/persistence/repositories/context-manifest-repository.js.map +1 -0
  87. package/dist/persistence/repositories/memory-repository.d.ts +33 -0
  88. package/dist/persistence/repositories/memory-repository.d.ts.map +1 -0
  89. package/dist/persistence/repositories/memory-repository.js +429 -0
  90. package/dist/persistence/repositories/memory-repository.js.map +1 -0
  91. package/dist/persistence/repositories/project-knowledge-repository.d.ts +65 -0
  92. package/dist/persistence/repositories/project-knowledge-repository.d.ts.map +1 -0
  93. package/dist/persistence/repositories/project-knowledge-repository.js +248 -0
  94. package/dist/persistence/repositories/project-knowledge-repository.js.map +1 -0
  95. package/dist/persistence/repositories/session-index-repository.d.ts +81 -0
  96. package/dist/persistence/repositories/session-index-repository.d.ts.map +1 -0
  97. package/dist/persistence/repositories/session-index-repository.js +220 -0
  98. package/dist/persistence/repositories/session-index-repository.js.map +1 -0
  99. package/dist/persistence/repositories/summary-repository.d.ts +16 -0
  100. package/dist/persistence/repositories/summary-repository.d.ts.map +1 -0
  101. package/dist/persistence/repositories/summary-repository.js +242 -0
  102. package/dist/persistence/repositories/summary-repository.js.map +1 -0
  103. package/dist/persistence/sqlite.d.ts +45 -0
  104. package/dist/persistence/sqlite.d.ts.map +1 -0
  105. package/dist/persistence/sqlite.js +137 -0
  106. package/dist/persistence/sqlite.js.map +1 -0
  107. package/dist/planner/atomic-groups.d.ts +15 -0
  108. package/dist/planner/atomic-groups.d.ts.map +1 -0
  109. package/dist/planner/atomic-groups.js +177 -0
  110. package/dist/planner/atomic-groups.js.map +1 -0
  111. package/dist/planner/context-planner.d.ts +49 -0
  112. package/dist/planner/context-planner.d.ts.map +1 -0
  113. package/dist/planner/context-planner.js +367 -0
  114. package/dist/planner/context-planner.js.map +1 -0
  115. package/dist/privacy/privacy-policy.d.ts +58 -0
  116. package/dist/privacy/privacy-policy.d.ts.map +1 -0
  117. package/dist/privacy/privacy-policy.js +412 -0
  118. package/dist/privacy/privacy-policy.js.map +1 -0
  119. package/dist/project/file-indexer.d.ts +32 -0
  120. package/dist/project/file-indexer.d.ts.map +1 -0
  121. package/dist/project/file-indexer.js +374 -0
  122. package/dist/project/file-indexer.js.map +1 -0
  123. package/dist/project/git-state.d.ts +12 -0
  124. package/dist/project/git-state.d.ts.map +1 -0
  125. package/dist/project/git-state.js +109 -0
  126. package/dist/project/git-state.js.map +1 -0
  127. package/dist/project/project-knowledge.d.ts +63 -0
  128. package/dist/project/project-knowledge.d.ts.map +1 -0
  129. package/dist/project/project-knowledge.js +332 -0
  130. package/dist/project/project-knowledge.js.map +1 -0
  131. package/dist/retrieval/retrieval-engine.d.ts +55 -0
  132. package/dist/retrieval/retrieval-engine.d.ts.map +1 -0
  133. package/dist/retrieval/retrieval-engine.js +290 -0
  134. package/dist/retrieval/retrieval-engine.js.map +1 -0
  135. package/dist/retrieval/task-descriptor.d.ts +17 -0
  136. package/dist/retrieval/task-descriptor.d.ts.map +1 -0
  137. package/dist/retrieval/task-descriptor.js +107 -0
  138. package/dist/retrieval/task-descriptor.js.map +1 -0
  139. package/dist/shared/hash.d.ts +2 -0
  140. package/dist/shared/hash.d.ts.map +1 -0
  141. package/dist/shared/hash.js +5 -0
  142. package/dist/shared/hash.js.map +1 -0
  143. package/dist/shared/logging.d.ts +27 -0
  144. package/dist/shared/logging.d.ts.map +1 -0
  145. package/dist/shared/logging.js +83 -0
  146. package/dist/shared/logging.js.map +1 -0
  147. package/dist/shared/stable-json.d.ts +2 -0
  148. package/dist/shared/stable-json.d.ts.map +1 -0
  149. package/dist/shared/stable-json.js +38 -0
  150. package/dist/shared/stable-json.js.map +1 -0
  151. package/package.json +56 -0
@@ -0,0 +1,412 @@
1
+ export const PRIVACY_CLASSIFICATIONS = [
2
+ "normal",
3
+ "internal",
4
+ "sensitive",
5
+ "local-only",
6
+ ];
7
+ const CLASSIFICATION_RANK = {
8
+ normal: 0,
9
+ internal: 1,
10
+ sensitive: 2,
11
+ "local-only": 3,
12
+ };
13
+ const STRUCTURAL_KEYS = new Set([
14
+ "api",
15
+ "id",
16
+ "model",
17
+ "name",
18
+ "role",
19
+ "stopreason",
20
+ "stop_reason",
21
+ "toolcallid",
22
+ "tool_call_id",
23
+ "type",
24
+ ]);
25
+ const CONTENT_KEYS = new Set([
26
+ "arguments",
27
+ "content",
28
+ "contents",
29
+ "context",
30
+ "description",
31
+ "input",
32
+ "instructions",
33
+ "messages",
34
+ "metadata",
35
+ "parts",
36
+ "prompt",
37
+ "requestmetadata",
38
+ "system",
39
+ "system_instruction",
40
+ "systeminstruction",
41
+ "systemprompt",
42
+ "text",
43
+ "thinking",
44
+ "toolconfig",
45
+ "tools",
46
+ ]);
47
+ const CLOSED_MARKER = /(?<!\\)\[ds4:(normal|internal|sensitive|local-only)\]([\s\S]*?)(?<!\\)\[\/ds4:\1\]/giu;
48
+ const PREFIX_MARKER = /^\s*(?<!\\)\[ds4:(normal|internal|sensitive|local-only)\]\s*/iu;
49
+ const ANY_MARKER = /(?<!\\)\[\/?ds4:(?:normal|internal|sensitive|local-only)\]/iu;
50
+ export function isPrivacyClassification(value) {
51
+ return typeof value === "string" && PRIVACY_CLASSIFICATIONS.includes(value);
52
+ }
53
+ export function highestClassification(left, right) {
54
+ return CLASSIFICATION_RANK[right] > CLASSIFICATION_RANK[left] ? right : left;
55
+ }
56
+ export function emptyPrivacyCounts() {
57
+ return { normal: 0, internal: 0, sensitive: 0, "local-only": 0 };
58
+ }
59
+ export function disabledPrivacyDiagnostics() {
60
+ return {
61
+ enabled: false,
62
+ allowedClassifications: [...PRIVACY_CLASSIFICATIONS],
63
+ inspectedMessages: 0,
64
+ selectedClassifications: emptyPrivacyCounts(),
65
+ blockedBlocks: 0,
66
+ excludedSources: 0,
67
+ secretRedactions: 0,
68
+ providerChecks: 0,
69
+ providerPayloadRedactions: 0,
70
+ enforcement: "disabled",
71
+ warnings: [],
72
+ };
73
+ }
74
+ function normalizedProvider(value) {
75
+ return value.trim().toLowerCase();
76
+ }
77
+ export function providerPrivacyPolicy(config, provider) {
78
+ const normalized = normalizedProvider(provider);
79
+ const local = config.localProviders.some((item) => normalizedProvider(item) === normalized);
80
+ if (local) {
81
+ return {
82
+ provider,
83
+ destination: "local",
84
+ allowedClassifications: [...PRIVACY_CLASSIFICATIONS],
85
+ };
86
+ }
87
+ const providerRule = Object.entries(config.remoteProviders)
88
+ .find(([name]) => normalizedProvider(name) === normalized)?.[1];
89
+ return {
90
+ provider,
91
+ destination: "remote",
92
+ allowedClassifications: [...(providerRule ?? config.remoteDefaultAllowed)],
93
+ };
94
+ }
95
+ function blockedPlaceholder(classification) {
96
+ return `[DS4 ${classification} content excluded by privacy policy]`;
97
+ }
98
+ function replaceCount(value, pattern, replacement) {
99
+ let count = 0;
100
+ const next = value.replace(pattern, (...args) => {
101
+ count++;
102
+ return typeof replacement === "string" ? replacement : replacement(...args);
103
+ });
104
+ return { value: next, count };
105
+ }
106
+ export function redactSecrets(value) {
107
+ let current = value;
108
+ let count = 0;
109
+ const apply = (pattern, replacement) => {
110
+ const result = replaceCount(current, pattern, replacement);
111
+ current = result.value;
112
+ count += result.count;
113
+ };
114
+ apply(/-----BEGIN (?:RSA |EC |OPENSSH |DSA )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH |DSA )?PRIVATE KEY-----/gu, "[DS4 REDACTED PRIVATE KEY]");
115
+ apply(/\b(?:sk-(?:ant-)?[A-Za-z0-9_-]{8,}|gh[pousr]_[A-Za-z0-9]{12,}|AKIA[0-9A-Z]{16})\b/gu, "[DS4 REDACTED CREDENTIAL]");
116
+ apply(/\b(Bearer\s+)[A-Za-z0-9._~+/=-]{8,}/giu, (_match, prefix) => `${prefix}[DS4 REDACTED TOKEN]`);
117
+ apply(/\b(api[_-]?key|access[_-]?token|auth[_-]?token|client[_-]?secret|password)\b(\s*[:=]\s*)(["']?)[^\s,"';}\]]{4,}\3/giu, (_match, key, separator, quote) => `${key}${separator}${quote}[DS4 REDACTED SECRET]${quote}`);
118
+ return { value: current, count };
119
+ }
120
+ function sanitizeSegment(text, classification, allowed) {
121
+ if (allowed.has(classification))
122
+ return { value: text, blocked: 0 };
123
+ return { value: blockedPlaceholder(classification), blocked: 1 };
124
+ }
125
+ export function sanitizeClassifiedText(text, policy, defaultClassification, redactRemoteSecrets) {
126
+ if (text.length === 0) {
127
+ return {
128
+ value: text,
129
+ classification: defaultClassification,
130
+ changed: false,
131
+ blockedBlocks: 0,
132
+ secretRedactions: 0,
133
+ inspectedStrings: 1,
134
+ };
135
+ }
136
+ const allowed = new Set(policy.allowedClassifications);
137
+ let classification = defaultClassification;
138
+ let blockedBlocks = 0;
139
+ let output = "";
140
+ let cursor = 0;
141
+ let markerCount = 0;
142
+ CLOSED_MARKER.lastIndex = 0;
143
+ for (const match of text.matchAll(CLOSED_MARKER)) {
144
+ const index = match.index ?? 0;
145
+ const before = text.slice(cursor, index);
146
+ if (before) {
147
+ const sanitized = sanitizeSegment(before, defaultClassification, allowed);
148
+ output += sanitized.value;
149
+ blockedBlocks += sanitized.blocked;
150
+ }
151
+ const markerClassification = match[1]?.toLowerCase();
152
+ const markedClassification = highestClassification(defaultClassification, markerClassification);
153
+ const markedText = match[2] ?? "";
154
+ classification = highestClassification(classification, markedClassification);
155
+ const sanitized = sanitizeSegment(markedText, markedClassification, allowed);
156
+ output += sanitized.value;
157
+ blockedBlocks += sanitized.blocked;
158
+ cursor = index + match[0].length;
159
+ markerCount++;
160
+ }
161
+ if (markerCount > 0) {
162
+ const remaining = text.slice(cursor);
163
+ if (remaining) {
164
+ const sanitized = sanitizeSegment(remaining, defaultClassification, allowed);
165
+ output += sanitized.value;
166
+ blockedBlocks += sanitized.blocked;
167
+ }
168
+ }
169
+ else {
170
+ const prefix = PREFIX_MARKER.exec(text);
171
+ if (prefix) {
172
+ const markerClassification = prefix[1]?.toLowerCase();
173
+ const markedClassification = highestClassification(defaultClassification, markerClassification);
174
+ classification = markedClassification;
175
+ const sanitized = sanitizeSegment(text.slice(prefix[0].length), markedClassification, allowed);
176
+ output = sanitized.value;
177
+ blockedBlocks += sanitized.blocked;
178
+ markerCount = 1;
179
+ }
180
+ else {
181
+ const sanitized = sanitizeSegment(text, defaultClassification, allowed);
182
+ output = sanitized.value;
183
+ blockedBlocks += sanitized.blocked;
184
+ }
185
+ }
186
+ let secretRedactions = 0;
187
+ if (policy.destination === "remote" && redactRemoteSecrets) {
188
+ const redacted = redactSecrets(output);
189
+ output = redacted.value;
190
+ secretRedactions = redacted.count;
191
+ }
192
+ return {
193
+ value: output,
194
+ classification,
195
+ changed: output !== text || markerCount > 0,
196
+ blockedBlocks,
197
+ secretRedactions,
198
+ inspectedStrings: 1,
199
+ };
200
+ }
201
+ function markerStructureFloor(value) {
202
+ const strings = [];
203
+ const seen = new WeakSet();
204
+ const collect = (candidate) => {
205
+ if (typeof candidate === "string") {
206
+ strings.push(candidate);
207
+ return;
208
+ }
209
+ if (!candidate || typeof candidate !== "object" || seen.has(candidate))
210
+ return;
211
+ seen.add(candidate);
212
+ for (const child of Array.isArray(candidate) ? candidate : Object.values(candidate))
213
+ collect(child);
214
+ };
215
+ collect(value);
216
+ const stack = [];
217
+ let floor;
218
+ const raise = (classification) => {
219
+ floor = floor ? highestClassification(floor, classification) : classification;
220
+ };
221
+ for (let stringIndex = 0; stringIndex < strings.length; stringIndex++) {
222
+ const text = strings[stringIndex] ?? "";
223
+ const markers = text.matchAll(/(?<!\\)\[(\/?)ds4:(normal|internal|sensitive|local-only)\]/giu);
224
+ for (const marker of markers) {
225
+ const closing = marker[1] === "/";
226
+ const classification = marker[2]?.toLowerCase();
227
+ if (!closing) {
228
+ if (stack.length > 0) {
229
+ for (const active of stack)
230
+ raise(active.classification);
231
+ raise(classification);
232
+ }
233
+ stack.push({ classification, stringIndex });
234
+ continue;
235
+ }
236
+ const active = stack.pop();
237
+ if (!active || active.classification !== classification || active.stringIndex !== stringIndex) {
238
+ if (active)
239
+ raise(active.classification);
240
+ raise(classification);
241
+ }
242
+ }
243
+ }
244
+ for (const active of stack)
245
+ raise(active.classification);
246
+ return floor;
247
+ }
248
+ export function classifyMarkedContent(value) {
249
+ let classification = markerStructureFloor(value);
250
+ const seen = new WeakSet();
251
+ const inspect = (candidate) => {
252
+ if (typeof candidate === "string") {
253
+ const markers = candidate.matchAll(/(?<!\\)\[\/?ds4:(normal|internal|sensitive|local-only)\]/giu);
254
+ for (const marker of markers) {
255
+ const found = marker[1]?.toLowerCase();
256
+ classification = classification
257
+ ? highestClassification(classification, found)
258
+ : found;
259
+ }
260
+ return;
261
+ }
262
+ if (!candidate || typeof candidate !== "object" || seen.has(candidate))
263
+ return;
264
+ seen.add(candidate);
265
+ for (const child of Array.isArray(candidate) ? candidate : Object.values(candidate))
266
+ inspect(child);
267
+ };
268
+ inspect(value);
269
+ return classification;
270
+ }
271
+ function mergeState(target, result) {
272
+ target.classification = highestClassification(target.classification, result.classification);
273
+ target.changed ||= result.changed;
274
+ target.blockedBlocks += result.blockedBlocks;
275
+ target.secretRedactions += result.secretRedactions;
276
+ target.inspectedStrings += result.inspectedStrings;
277
+ }
278
+ function sanitizeValue(value, policy, config, explicitClassification, contentContext, key, seen, state) {
279
+ const normalizedKey = key?.toLowerCase();
280
+ if (typeof value === "string") {
281
+ const hasMarker = ANY_MARKER.test(value);
282
+ if (!contentContext && !hasMarker)
283
+ return value;
284
+ if (normalizedKey && STRUCTURAL_KEYS.has(normalizedKey) && !hasMarker)
285
+ return value;
286
+ const result = sanitizeClassifiedText(value, policy, explicitClassification ?? config.defaultClassification, config.redactSecrets);
287
+ mergeState(state, result);
288
+ return result.value;
289
+ }
290
+ if (value === null || typeof value !== "object")
291
+ return value;
292
+ const known = seen.get(value);
293
+ if (known !== undefined)
294
+ return known;
295
+ if (ArrayBuffer.isView(value)) {
296
+ const classification = explicitClassification ?? config.defaultClassification;
297
+ state.classification = highestClassification(state.classification, classification);
298
+ if (contentContext && !policy.allowedClassifications.includes(classification)) {
299
+ state.changed = true;
300
+ state.blockedBlocks++;
301
+ return new Uint8Array(0);
302
+ }
303
+ return value;
304
+ }
305
+ if (Array.isArray(value)) {
306
+ const output = [];
307
+ seen.set(value, output);
308
+ value.forEach((item) => output.push(sanitizeValue(item, policy, config, explicitClassification, contentContext, key, seen, state)));
309
+ return output;
310
+ }
311
+ const output = {};
312
+ seen.set(value, output);
313
+ let childIndex = 0;
314
+ for (const [childKey, child] of Object.entries(value)) {
315
+ const normalizedChildKey = childKey.toLowerCase();
316
+ const childContent = contentContext || CONTENT_KEYS.has(normalizedChildKey);
317
+ const defaultClassification = explicitClassification ?? config.defaultClassification;
318
+ const dynamicContentKey = contentContext
319
+ && !STRUCTURAL_KEYS.has(normalizedChildKey)
320
+ && !CONTENT_KEYS.has(normalizedChildKey);
321
+ let outputKey = childKey;
322
+ if (ANY_MARKER.test(childKey) || dynamicContentKey) {
323
+ const sanitizedKey = sanitizeClassifiedText(childKey, policy, defaultClassification, config.redactSecrets);
324
+ mergeState(state, sanitizedKey);
325
+ outputKey = sanitizedKey.value;
326
+ }
327
+ while (outputKey in output)
328
+ outputKey = `${outputKey}_${childIndex}`;
329
+ output[outputKey] = sanitizeValue(child, policy, config, explicitClassification, childContent, childKey, seen, state);
330
+ childIndex++;
331
+ }
332
+ return output;
333
+ }
334
+ export class PrivacyPolicyEngine {
335
+ config;
336
+ constructor(config) {
337
+ this.config = config;
338
+ }
339
+ policy(provider) {
340
+ return providerPrivacyPolicy(this.config, provider);
341
+ }
342
+ sanitizeText(text, provider, explicitClassification) {
343
+ if (!this.config.enabled) {
344
+ return {
345
+ value: text,
346
+ classification: explicitClassification ?? this.config.defaultClassification,
347
+ changed: false,
348
+ blockedBlocks: 0,
349
+ secretRedactions: 0,
350
+ inspectedStrings: 0,
351
+ };
352
+ }
353
+ const markerFloor = markerStructureFloor(text);
354
+ const effectiveClassification = explicitClassification
355
+ ?? (markerFloor
356
+ ? highestClassification(this.config.defaultClassification, markerFloor)
357
+ : this.config.defaultClassification);
358
+ return sanitizeClassifiedText(text, this.policy(provider), effectiveClassification, this.config.redactSecrets);
359
+ }
360
+ sanitizeMessage(message, provider, explicitClassification) {
361
+ if (!this.config.enabled) {
362
+ return {
363
+ value: message,
364
+ classification: explicitClassification ?? this.config.defaultClassification,
365
+ changed: false,
366
+ blockedBlocks: 0,
367
+ secretRedactions: 0,
368
+ inspectedStrings: 0,
369
+ };
370
+ }
371
+ const markerFloor = markerStructureFloor(message);
372
+ const effectiveClassification = explicitClassification
373
+ ?? (markerFloor
374
+ ? highestClassification(this.config.defaultClassification, markerFloor)
375
+ : undefined);
376
+ const state = {
377
+ classification: effectiveClassification ?? this.config.defaultClassification,
378
+ changed: false,
379
+ blockedBlocks: 0,
380
+ secretRedactions: 0,
381
+ inspectedStrings: 0,
382
+ };
383
+ const sanitized = sanitizeValue(message, this.policy(provider), this.config, effectiveClassification, false, undefined, new WeakMap(), state);
384
+ return { value: sanitized, ...state };
385
+ }
386
+ sanitizeProviderPayload(payload, provider) {
387
+ if (!this.config.enabled) {
388
+ return {
389
+ value: payload,
390
+ classification: this.config.defaultClassification,
391
+ changed: false,
392
+ blockedBlocks: 0,
393
+ secretRedactions: 0,
394
+ inspectedStrings: 0,
395
+ };
396
+ }
397
+ const markerFloor = markerStructureFloor(payload);
398
+ const effectiveClassification = markerFloor
399
+ ? highestClassification(this.config.defaultClassification, markerFloor)
400
+ : undefined;
401
+ const state = {
402
+ classification: effectiveClassification ?? this.config.defaultClassification,
403
+ changed: false,
404
+ blockedBlocks: 0,
405
+ secretRedactions: 0,
406
+ inspectedStrings: 0,
407
+ };
408
+ const value = sanitizeValue(payload, this.policy(provider), this.config, effectiveClassification, false, undefined, new WeakMap(), state);
409
+ return { value, ...state };
410
+ }
411
+ }
412
+ //# sourceMappingURL=privacy-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy-policy.js","sourceRoot":"","sources":["../../src/privacy/privacy-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ProjectKnowledgeConfig } from "../config/config.ts";
2
+ import type { ProjectKnowledgeRepository } from "../persistence/repositories/project-knowledge-repository.ts";
3
+ import { type GitProjectState } from "./git-state.ts";
4
+ export interface ProjectIndexSyncResult {
5
+ mode: "full" | "incremental";
6
+ discoveredFiles: number;
7
+ indexedFiles: number;
8
+ unchangedFiles: number;
9
+ deletedFiles: number;
10
+ skippedLarge: number;
11
+ skippedBinary: number;
12
+ skippedSensitive: number;
13
+ skippedLimit: number;
14
+ currentSnippets: number;
15
+ staleSnippets: number;
16
+ durationMs: number;
17
+ git: GitProjectState;
18
+ }
19
+ export declare class ProjectFileIndexer {
20
+ private readonly repository;
21
+ private readonly config;
22
+ private readonly now;
23
+ readonly projectPath: string;
24
+ private lastGit;
25
+ constructor(projectPath: string, repository: ProjectKnowledgeRepository, config: ProjectKnowledgeConfig, now?: () => number);
26
+ sync(force?: boolean): ProjectIndexSyncResult;
27
+ validateCurrent(filePath: string, expectedHash: string): "current" | "reindexed" | "deleted" | "excluded";
28
+ private readAndIndex;
29
+ private discover;
30
+ private addCandidate;
31
+ }
32
+ //# sourceMappingURL=file-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-indexer.d.ts","sourceRoot":"","sources":["../../src/project/file-indexer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EACV,0BAA0B,EAG3B,MAAM,6DAA6D,CAAC;AAErE,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAyB3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,eAAe,CAAC;CACtB;AA0ID,qBAAa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAkB;gBAG/B,WAAW,EAAE,MAAM,EACF,UAAU,EAAE,0BAA0B,EACtC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,GAAE,MAAM,MAAiB;IAM/C,IAAI,CAAC,KAAK,UAAQ,GAAG,sBAAsB;IAuF3C,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU;IAgDzG,OAAO,CAAC,YAAY;IAyCpB,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,YAAY;CAKrB"}