openplanr 1.13.2 → 1.14.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 (159) hide show
  1. package/README.md +46 -4
  2. package/dist/cli/commands/artifact.d.ts.map +1 -1
  3. package/dist/cli/commands/artifact.js +17 -6
  4. package/dist/cli/commands/artifact.js.map +1 -1
  5. package/dist/cli/commands/operate.d.ts +3 -0
  6. package/dist/cli/commands/operate.d.ts.map +1 -0
  7. package/dist/cli/commands/operate.js +568 -0
  8. package/dist/cli/commands/operate.js.map +1 -0
  9. package/dist/cli/index.js +42 -2
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/services/ai-service.d.ts +9 -2
  12. package/dist/services/ai-service.d.ts.map +1 -1
  13. package/dist/services/ai-service.js +14 -6
  14. package/dist/services/ai-service.js.map +1 -1
  15. package/dist/services/artifact-pipeline-service.d.ts +1 -0
  16. package/dist/services/artifact-pipeline-service.d.ts.map +1 -1
  17. package/dist/services/artifact-pipeline-service.js.map +1 -1
  18. package/dist/services/delta-apply-service.js +1 -1
  19. package/dist/services/delta-apply-service.js.map +1 -1
  20. package/dist/services/operate/advisors.d.ts +219 -0
  21. package/dist/services/operate/advisors.d.ts.map +1 -0
  22. package/dist/services/operate/advisors.js +745 -0
  23. package/dist/services/operate/advisors.js.map +1 -0
  24. package/dist/services/operate/artifact-route-generation.d.ts +111 -0
  25. package/dist/services/operate/artifact-route-generation.d.ts.map +1 -0
  26. package/dist/services/operate/artifact-route-generation.js +459 -0
  27. package/dist/services/operate/artifact-route-generation.js.map +1 -0
  28. package/dist/services/operate/artifacts.d.ts +26 -0
  29. package/dist/services/operate/artifacts.d.ts.map +1 -0
  30. package/dist/services/operate/artifacts.js +92 -0
  31. package/dist/services/operate/artifacts.js.map +1 -0
  32. package/dist/services/operate/canonical.d.ts +18 -0
  33. package/dist/services/operate/canonical.d.ts.map +1 -0
  34. package/dist/services/operate/canonical.js +157 -0
  35. package/dist/services/operate/canonical.js.map +1 -0
  36. package/dist/services/operate/config.d.ts +56 -0
  37. package/dist/services/operate/config.d.ts.map +1 -0
  38. package/dist/services/operate/config.js +644 -0
  39. package/dist/services/operate/config.js.map +1 -0
  40. package/dist/services/operate/consolidation.d.ts +18 -0
  41. package/dist/services/operate/consolidation.d.ts.map +1 -0
  42. package/dist/services/operate/consolidation.js +539 -0
  43. package/dist/services/operate/consolidation.js.map +1 -0
  44. package/dist/services/operate/doctor.d.ts +12 -0
  45. package/dist/services/operate/doctor.d.ts.map +1 -0
  46. package/dist/services/operate/doctor.js +307 -0
  47. package/dist/services/operate/doctor.js.map +1 -0
  48. package/dist/services/operate/engine.d.ts +53 -0
  49. package/dist/services/operate/engine.d.ts.map +1 -0
  50. package/dist/services/operate/engine.js +1097 -0
  51. package/dist/services/operate/engine.js.map +1 -0
  52. package/dist/services/operate/event-store.d.ts +57 -0
  53. package/dist/services/operate/event-store.d.ts.map +1 -0
  54. package/dist/services/operate/event-store.js +232 -0
  55. package/dist/services/operate/event-store.js.map +1 -0
  56. package/dist/services/operate/evidence-cache.d.ts +17 -0
  57. package/dist/services/operate/evidence-cache.d.ts.map +1 -0
  58. package/dist/services/operate/evidence-cache.js +96 -0
  59. package/dist/services/operate/evidence-cache.js.map +1 -0
  60. package/dist/services/operate/evidence-import.d.ts +40 -0
  61. package/dist/services/operate/evidence-import.d.ts.map +1 -0
  62. package/dist/services/operate/evidence-import.js +340 -0
  63. package/dist/services/operate/evidence-import.js.map +1 -0
  64. package/dist/services/operate/evidence-readiness.d.ts +8 -0
  65. package/dist/services/operate/evidence-readiness.d.ts.map +1 -0
  66. package/dist/services/operate/evidence-readiness.js +78 -0
  67. package/dist/services/operate/evidence-readiness.js.map +1 -0
  68. package/dist/services/operate/evidence.d.ts +71 -0
  69. package/dist/services/operate/evidence.d.ts.map +1 -0
  70. package/dist/services/operate/evidence.js +1022 -0
  71. package/dist/services/operate/evidence.js.map +1 -0
  72. package/dist/services/operate/ids.d.ts +7 -0
  73. package/dist/services/operate/ids.d.ts.map +1 -0
  74. package/dist/services/operate/ids.js +23 -0
  75. package/dist/services/operate/ids.js.map +1 -0
  76. package/dist/services/operate/index.d.ts +14 -0
  77. package/dist/services/operate/index.d.ts.map +1 -0
  78. package/dist/services/operate/index.js +881 -0
  79. package/dist/services/operate/index.js.map +1 -0
  80. package/dist/services/operate/journal.d.ts +34 -0
  81. package/dist/services/operate/journal.d.ts.map +1 -0
  82. package/dist/services/operate/journal.js +229 -0
  83. package/dist/services/operate/journal.js.map +1 -0
  84. package/dist/services/operate/legacy-import-service.d.ts +58 -0
  85. package/dist/services/operate/legacy-import-service.d.ts.map +1 -0
  86. package/dist/services/operate/legacy-import-service.js +922 -0
  87. package/dist/services/operate/legacy-import-service.js.map +1 -0
  88. package/dist/services/operate/lifecycle.d.ts +88 -0
  89. package/dist/services/operate/lifecycle.d.ts.map +1 -0
  90. package/dist/services/operate/lifecycle.js +556 -0
  91. package/dist/services/operate/lifecycle.js.map +1 -0
  92. package/dist/services/operate/lock-service.d.ts +37 -0
  93. package/dist/services/operate/lock-service.d.ts.map +1 -0
  94. package/dist/services/operate/lock-service.js +208 -0
  95. package/dist/services/operate/lock-service.js.map +1 -0
  96. package/dist/services/operate/maintenance.d.ts +38 -0
  97. package/dist/services/operate/maintenance.d.ts.map +1 -0
  98. package/dist/services/operate/maintenance.js +699 -0
  99. package/dist/services/operate/maintenance.js.map +1 -0
  100. package/dist/services/operate/outcomes.d.ts +48 -0
  101. package/dist/services/operate/outcomes.d.ts.map +1 -0
  102. package/dist/services/operate/outcomes.js +312 -0
  103. package/dist/services/operate/outcomes.js.map +1 -0
  104. package/dist/services/operate/pipeline-handoff.d.ts +138 -0
  105. package/dist/services/operate/pipeline-handoff.d.ts.map +1 -0
  106. package/dist/services/operate/pipeline-handoff.js +175 -0
  107. package/dist/services/operate/pipeline-handoff.js.map +1 -0
  108. package/dist/services/operate/projection-persistence.d.ts +55 -0
  109. package/dist/services/operate/projection-persistence.d.ts.map +1 -0
  110. package/dist/services/operate/projection-persistence.js +393 -0
  111. package/dist/services/operate/projection-persistence.js.map +1 -0
  112. package/dist/services/operate/projection.d.ts +4 -0
  113. package/dist/services/operate/projection.d.ts.map +1 -0
  114. package/dist/services/operate/projection.js +128 -0
  115. package/dist/services/operate/projection.js.map +1 -0
  116. package/dist/services/operate/protocol.d.ts +60 -0
  117. package/dist/services/operate/protocol.d.ts.map +1 -0
  118. package/dist/services/operate/protocol.js +62 -0
  119. package/dist/services/operate/protocol.js.map +1 -0
  120. package/dist/services/operate/read-only-providers.d.ts +38 -0
  121. package/dist/services/operate/read-only-providers.d.ts.map +1 -0
  122. package/dist/services/operate/read-only-providers.js +286 -0
  123. package/dist/services/operate/read-only-providers.js.map +1 -0
  124. package/dist/services/operate/redaction.d.ts +47 -0
  125. package/dist/services/operate/redaction.d.ts.map +1 -0
  126. package/dist/services/operate/redaction.js +279 -0
  127. package/dist/services/operate/redaction.js.map +1 -0
  128. package/dist/services/operate/reducer.d.ts +10 -0
  129. package/dist/services/operate/reducer.d.ts.map +1 -0
  130. package/dist/services/operate/reducer.js +11 -0
  131. package/dist/services/operate/reducer.js.map +1 -0
  132. package/dist/services/operate/routes.d.ts +49 -0
  133. package/dist/services/operate/routes.d.ts.map +1 -0
  134. package/dist/services/operate/routes.js +996 -0
  135. package/dist/services/operate/routes.js.map +1 -0
  136. package/dist/services/operate/shipment-observer.d.ts +14 -0
  137. package/dist/services/operate/shipment-observer.d.ts.map +1 -0
  138. package/dist/services/operate/shipment-observer.js +321 -0
  139. package/dist/services/operate/shipment-observer.js.map +1 -0
  140. package/dist/services/operate/stalled-item-service.d.ts +18 -0
  141. package/dist/services/operate/stalled-item-service.d.ts.map +1 -0
  142. package/dist/services/operate/stalled-item-service.js +121 -0
  143. package/dist/services/operate/stalled-item-service.js.map +1 -0
  144. package/dist/services/operate/subprocess-env.d.ts +4 -0
  145. package/dist/services/operate/subprocess-env.d.ts.map +1 -0
  146. package/dist/services/operate/subprocess-env.js +45 -0
  147. package/dist/services/operate/subprocess-env.js.map +1 -0
  148. package/dist/services/operate/types.d.ts +729 -0
  149. package/dist/services/operate/types.d.ts.map +1 -0
  150. package/dist/services/operate/types.js +13 -0
  151. package/dist/services/operate/types.js.map +1 -0
  152. package/dist/services/operate/workspace.d.ts +59 -0
  153. package/dist/services/operate/workspace.d.ts.map +1 -0
  154. package/dist/services/operate/workspace.js +316 -0
  155. package/dist/services/operate/workspace.js.map +1 -0
  156. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  157. package/dist/services/runtime-manager-service.js +71 -2
  158. package/dist/services/runtime-manager-service.js.map +1 -1
  159. package/package.json +10 -4
@@ -0,0 +1,340 @@
1
+ import { readFile, realpath, stat } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { canonicalize } from './canonical.js';
4
+ import { OperateError } from './types.js';
5
+ import { isPathInside } from './workspace.js';
6
+ const FORBIDDEN_KEYS = new Set(['__proto__', 'prototype', 'constructor']);
7
+ class StrictJsonParser {
8
+ source;
9
+ limits;
10
+ index = 0;
11
+ scalars = 0;
12
+ constructor(source, limits) {
13
+ this.source = source;
14
+ this.limits = limits;
15
+ }
16
+ parse() {
17
+ if (Buffer.byteLength(this.source) > this.limits.maxBytes)
18
+ this.fail('JSON exceeds byte limit');
19
+ this.skipWhitespace();
20
+ const value = this.value(0);
21
+ this.skipWhitespace();
22
+ if (this.index !== this.source.length)
23
+ this.fail('Unexpected trailing JSON content');
24
+ return value;
25
+ }
26
+ value(depth) {
27
+ if (depth > this.limits.maxDepth)
28
+ this.fail('JSON exceeds nesting limit');
29
+ this.skipWhitespace();
30
+ const char = this.source[this.index];
31
+ if (char === '{')
32
+ return this.object(depth + 1);
33
+ if (char === '[')
34
+ return this.array(depth + 1);
35
+ if (char === '"')
36
+ return this.scalar(this.string());
37
+ if (this.source.startsWith('true', this.index)) {
38
+ this.index += 4;
39
+ return this.scalar(true);
40
+ }
41
+ if (this.source.startsWith('false', this.index)) {
42
+ this.index += 5;
43
+ return this.scalar(false);
44
+ }
45
+ if (this.source.startsWith('null', this.index)) {
46
+ this.index += 4;
47
+ return this.scalar(null);
48
+ }
49
+ return this.scalar(this.number());
50
+ }
51
+ object(depth) {
52
+ this.index += 1;
53
+ const result = Object.create(null);
54
+ const seen = new Set();
55
+ this.skipWhitespace();
56
+ if (this.source[this.index] === '}') {
57
+ this.index += 1;
58
+ return result;
59
+ }
60
+ while (true) {
61
+ this.skipWhitespace();
62
+ if (this.source[this.index] !== '"')
63
+ this.fail('Object key must be a string');
64
+ const key = this.string();
65
+ if (FORBIDDEN_KEYS.has(key))
66
+ this.fail(`Forbidden JSON key: ${key}`);
67
+ if (seen.has(key))
68
+ this.fail(`Duplicate JSON key: ${key}`);
69
+ seen.add(key);
70
+ this.skipWhitespace();
71
+ if (this.source[this.index] !== ':')
72
+ this.fail('Expected colon after object key');
73
+ this.index += 1;
74
+ result[key] = this.value(depth);
75
+ this.skipWhitespace();
76
+ const separator = this.source[this.index++];
77
+ if (separator === '}')
78
+ return result;
79
+ if (separator !== ',')
80
+ this.fail('Expected comma or closing brace');
81
+ }
82
+ }
83
+ array(depth) {
84
+ this.index += 1;
85
+ const result = [];
86
+ this.skipWhitespace();
87
+ if (this.source[this.index] === ']') {
88
+ this.index += 1;
89
+ return result;
90
+ }
91
+ while (true) {
92
+ result.push(this.value(depth));
93
+ this.skipWhitespace();
94
+ const separator = this.source[this.index++];
95
+ if (separator === ']')
96
+ return result;
97
+ if (separator !== ',')
98
+ this.fail('Expected comma or closing bracket');
99
+ }
100
+ }
101
+ string() {
102
+ const start = this.index;
103
+ this.index += 1;
104
+ let escaped = false;
105
+ while (this.index < this.source.length) {
106
+ const code = this.source.charCodeAt(this.index);
107
+ if (!escaped && code < 0x20)
108
+ this.fail('Unescaped control character in string');
109
+ if (!escaped && this.source[this.index] === '"') {
110
+ this.index += 1;
111
+ const value = JSON.parse(this.source.slice(start, this.index));
112
+ if (value.length > this.limits.maxStringLength)
113
+ this.fail('JSON string exceeds limit');
114
+ return value;
115
+ }
116
+ if (!escaped && this.source[this.index] === '\\') {
117
+ escaped = true;
118
+ }
119
+ else {
120
+ escaped = false;
121
+ }
122
+ this.index += 1;
123
+ }
124
+ this.fail('Unterminated JSON string');
125
+ }
126
+ number() {
127
+ const match = this.source
128
+ .slice(this.index)
129
+ .match(/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/);
130
+ if (!match)
131
+ this.fail('Invalid JSON value');
132
+ this.index += match[0].length;
133
+ const value = Number(match[0]);
134
+ if (!Number.isFinite(value))
135
+ this.fail('JSON number is not finite');
136
+ return value;
137
+ }
138
+ scalar(value) {
139
+ this.scalars += 1;
140
+ if (this.scalars > this.limits.maxScalars)
141
+ this.fail('JSON exceeds scalar limit');
142
+ return value;
143
+ }
144
+ skipWhitespace() {
145
+ while (/[\t\n\r ]/.test(this.source[this.index] ?? ''))
146
+ this.index += 1;
147
+ }
148
+ fail(message) {
149
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', `${message} at character ${this.index}.`);
150
+ }
151
+ }
152
+ export function parseStrictJson(source, limits = {}) {
153
+ return new StrictJsonParser(source.replace(/^\ufeff/, ''), {
154
+ maxDepth: limits.maxDepth ?? 32,
155
+ maxScalars: limits.maxScalars ?? 20_000,
156
+ maxStringLength: limits.maxStringLength ?? 100_000,
157
+ maxBytes: limits.maxBytes ?? 1_000_000,
158
+ }).parse();
159
+ }
160
+ export function parseStrictCsv(source, limits = {}) {
161
+ const resolved = {
162
+ maxRows: limits.maxRows ?? 10_000,
163
+ maxColumns: limits.maxColumns ?? 256,
164
+ maxFieldLength: limits.maxFieldLength ?? 100_000,
165
+ maxBytes: limits.maxBytes ?? 1_000_000,
166
+ };
167
+ if (Buffer.byteLength(source) > resolved.maxBytes || source.includes('\0')) {
168
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV is oversized or contains NUL.');
169
+ }
170
+ const rows = [];
171
+ let row = [];
172
+ let field = '';
173
+ let quoted = false;
174
+ let quoteClosed = false;
175
+ const input = source.replace(/^\ufeff/, '');
176
+ const pushField = () => {
177
+ if (field.length > resolved.maxFieldLength) {
178
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV field exceeds limit.');
179
+ }
180
+ row.push(field);
181
+ field = '';
182
+ if (row.length > resolved.maxColumns) {
183
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV exceeds column limit.');
184
+ }
185
+ };
186
+ const pushRow = () => {
187
+ pushField();
188
+ rows.push(row);
189
+ row = [];
190
+ if (rows.length > resolved.maxRows) {
191
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV exceeds row limit.');
192
+ }
193
+ };
194
+ for (let index = 0; index < input.length; index += 1) {
195
+ const char = input[index];
196
+ if (quoted) {
197
+ if (char === '"' && input[index + 1] === '"') {
198
+ field += '"';
199
+ index += 1;
200
+ }
201
+ else if (char === '"') {
202
+ quoted = false;
203
+ quoteClosed = true;
204
+ }
205
+ else {
206
+ field += char;
207
+ }
208
+ continue;
209
+ }
210
+ if (quoteClosed && char !== ',' && char !== '\n' && char !== '\r') {
211
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV contains characters after a closing quote.');
212
+ }
213
+ if (char === '"' && field.length === 0 && !quoteClosed) {
214
+ quoted = true;
215
+ }
216
+ else if (char === '"') {
217
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV contains a quote inside an unquoted field.');
218
+ }
219
+ else if (char === ',') {
220
+ pushField();
221
+ quoteClosed = false;
222
+ }
223
+ else if (char === '\n') {
224
+ pushRow();
225
+ quoteClosed = false;
226
+ }
227
+ else if (char === '\r') {
228
+ if (input[index + 1] === '\n')
229
+ index += 1;
230
+ pushRow();
231
+ quoteClosed = false;
232
+ }
233
+ else {
234
+ field += char;
235
+ }
236
+ }
237
+ if (quoted) {
238
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'CSV has an unterminated quote.');
239
+ }
240
+ if (field.length > 0 || row.length > 0)
241
+ pushRow();
242
+ return rows;
243
+ }
244
+ export function escapeSpreadsheetCell(value) {
245
+ return /^[=+\-@\t\r]/.test(value) ? `'${value}` : value;
246
+ }
247
+ export function serializeSafeCsv(rows) {
248
+ return `${rows
249
+ .map((row) => row
250
+ .map((raw) => {
251
+ const value = escapeSpreadsheetCell(raw);
252
+ return /[",\r\n]/.test(value) ? `"${value.replace(/"/g, '""')}"` : value;
253
+ })
254
+ .join(','))
255
+ .join('\n')}\n`;
256
+ }
257
+ function decodeUtf8(buffer) {
258
+ try {
259
+ return new TextDecoder('utf-8', { fatal: true }).decode(buffer);
260
+ }
261
+ catch {
262
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence is not valid UTF-8.');
263
+ }
264
+ }
265
+ export async function resolveEvidenceImportPath(projectRoot, configuredPath, roots) {
266
+ if (!configuredPath.trim() || configuredPath.includes('\0')) {
267
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence path is empty or contains NUL.');
268
+ }
269
+ const canonicalRoots = await Promise.all(roots.map(async (entry) => ({
270
+ componentId: entry.componentId,
271
+ root: await realpath(entry.root),
272
+ })));
273
+ const candidate = path.isAbsolute(configuredPath)
274
+ ? configuredPath
275
+ : path.resolve(await realpath(projectRoot), configuredPath);
276
+ let resolved;
277
+ try {
278
+ resolved = await realpath(candidate);
279
+ }
280
+ catch {
281
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', `Imported evidence file does not exist: ${configuredPath}.`);
282
+ }
283
+ const owner = canonicalRoots
284
+ .filter((entry) => isPathInside(entry.root, resolved))
285
+ .sort((left, right) => right.root.length - left.root.length)[0];
286
+ if (!owner) {
287
+ throw new OperateError('E_OPERATE_PATH_ESCAPE', 'Imported evidence must remain inside the configured product workspace.');
288
+ }
289
+ const info = await stat(resolved);
290
+ if (!info.isFile()) {
291
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence must be a regular file.');
292
+ }
293
+ const extension = path.extname(resolved).toLowerCase();
294
+ if (extension !== '.json' && extension !== '.csv') {
295
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence supports .json and .csv files only.');
296
+ }
297
+ return {
298
+ absolutePath: resolved,
299
+ location: `${owner.componentId}/${path.relative(owner.root, resolved).split(path.sep).join('/')}`,
300
+ };
301
+ }
302
+ export async function readImportedEvidenceFile(input) {
303
+ if (!Number.isSafeInteger(input.maxBytes) || input.maxBytes < 1) {
304
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence byte limit must be a positive integer.');
305
+ }
306
+ const resolved = await resolveEvidenceImportPath(input.projectRoot, input.configuredPath, input.roots);
307
+ const before = await stat(resolved.absolutePath);
308
+ if (before.size > input.maxBytes) {
309
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence exceeds the configured byte limit.');
310
+ }
311
+ const buffer = await readFile(resolved.absolutePath);
312
+ if (buffer.byteLength > input.maxBytes) {
313
+ throw new OperateError('E_OPERATE_EVIDENCE_REJECTED', 'Imported evidence changed while reading and exceeds the byte limit.');
314
+ }
315
+ const source = decodeUtf8(buffer);
316
+ const extension = path.extname(resolved.absolutePath).toLowerCase();
317
+ if (extension === '.json') {
318
+ const parsed = parseStrictJson(source, {
319
+ ...input.jsonLimits,
320
+ maxBytes: Math.min(input.maxBytes, input.jsonLimits?.maxBytes ?? input.maxBytes),
321
+ });
322
+ return {
323
+ ...resolved,
324
+ format: 'json',
325
+ content: canonicalize(parsed),
326
+ byteCount: buffer.byteLength,
327
+ };
328
+ }
329
+ const rows = parseStrictCsv(source, {
330
+ ...input.csvLimits,
331
+ maxBytes: Math.min(input.maxBytes, input.csvLimits?.maxBytes ?? input.maxBytes),
332
+ });
333
+ return {
334
+ ...resolved,
335
+ format: 'csv',
336
+ content: serializeSafeCsv(rows),
337
+ byteCount: buffer.byteLength,
338
+ };
339
+ }
340
+ //# sourceMappingURL=evidence-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-import.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgB9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AAE1E,MAAM,gBAAgB;IAKD;IACA;IALX,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,CAAC,CAAC;IAEpB,YACmB,MAAc,EACd,MAAwB;QADxB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAkB;IACxC,CAAC;IAEJ,KAAK;QACH,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,MAAM,MAAM,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B,CAAC;QACvF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAClF,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,IAAI,SAAS,KAAK,GAAG;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,SAAS,KAAK,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,IAAI,SAAS,KAAK,GAAG;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,SAAS,KAAK,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAW,CAAC;gBACzE,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe;oBAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACvF,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjD,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM;aACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aACjB,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAI,KAAQ;QACxB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAClF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc;QACpB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC1E,CAAC;IAEO,IAAI,CAAC,OAAe;QAC1B,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,GAAG,OAAO,iBAAiB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IAClG,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,SAAoC,EAAE;IACpF,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE;QACzD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM;QACvC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,OAAO;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;KACvC,CAAC,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,SAAmC,EAAE;IAClF,MAAM,QAAQ,GAAoB;QAChC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG;QACpC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;QAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;KACvC,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,mCAAmC,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC3C,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,0BAA0B,CAAC,CAAC;QACpF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,KAAK,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,2BAA2B,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,GAAG,GAAG,EAAE,CAAC;QACT,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,wBAAwB,CAAC,CAAC;QAClF,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC7C,KAAK,IAAI,GAAG,CAAC;gBACb,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,GAAG,KAAK,CAAC;gBACf,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,IAAI,CAAC;YAChB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,WAAW,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClE,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,gDAAgD,CACjD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,gDAAgD,CACjD,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,SAAS,EAAE,CAAC;YACZ,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;YACV,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;YACV,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,gCAAgC,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAoC;IACnE,OAAO,GAAG,IAAI;SACX,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,GAAG;SACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CACb;SACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,CAAC;AAeD,SAAS,UAAU,CAAC,MAAc;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,uCAAuC,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB,EACnB,cAAsB,EACtB,KAAoC;IAEpC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,kDAAkD,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI,EAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACjC,CAAC,CAAC,CACJ,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAC/C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,0CAA0C,cAAc,GAAG,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,cAAc;SACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,YAAY,CACpB,uBAAuB,EACvB,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAClD,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KAClG,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAO9C;IACC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,0DAA0D,CAC3D,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAC9C,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,KAAK,CACZ,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,sDAAsD,CACvD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,YAAY,CACpB,6BAA6B,EAC7B,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;YACrC,GAAG,KAAK,CAAC,UAAU;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;SACjF,CAAC,CAAC;QACH,OAAO;YACL,GAAG,QAAQ;YACX,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,MAAM,CAAC,UAAU;SAC7B,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE;QAClC,GAAG,KAAK,CAAC,SAAS;QAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;KAChF,CAAC,CAAC;IACH,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type OperatingEvidence, type OperatingEvidenceReadiness, type OperatingRoleId } from './types.js';
2
+ export declare function evaluateEvidenceReadiness(input: {
3
+ cycleId: string;
4
+ evidence: OperatingEvidence;
5
+ enabledRoles: OperatingRoleId[];
6
+ now?: Date;
7
+ }): Promise<OperatingEvidenceReadiness>;
8
+ //# sourceMappingURL=evidence-readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-readiness.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence-readiness.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAgBpB,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAqFtC"}
@@ -0,0 +1,78 @@
1
+ import { canonicalDigest } from './canonical.js';
2
+ import { assertOperatingArtifact, loadOperatingProtocol } from './protocol.js';
3
+ import { compareSensitivity } from './redaction.js';
4
+ import { OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, } from './types.js';
5
+ function ageHours(iso, now) {
6
+ return Math.max(0, (now.getTime() - Date.parse(iso)) / (60 * 60 * 1_000));
7
+ }
8
+ export async function evaluateEvidenceReadiness(input) {
9
+ const now = input.now ?? new Date();
10
+ const registry = (await loadOperatingProtocol()).listOperatingRoles();
11
+ let gapNumber = 1;
12
+ const roles = input.enabledRoles.map((roleId) => {
13
+ const role = registry.find((entry) => entry.id === roleId);
14
+ const configured = role?.minimumEvidence.requirements ?? [
15
+ {
16
+ source: 'repository',
17
+ claimTypes: ['code'],
18
+ minimumItems: 1,
19
+ maxAgeHours: 168,
20
+ observationWindow: 'current-state',
21
+ sensitivityCeiling: 'internal',
22
+ },
23
+ ];
24
+ const requirements = configured.map((requirement) => {
25
+ const matching = input.evidence.items.filter((item) => item.source === requirement.source &&
26
+ requirement.claimTypes.some((claim) => item.claimTypes.includes(claim)) &&
27
+ compareSensitivity(item.sensitivity, requirement.sensitivityCeiling) <= 0);
28
+ const oldestAgeHours = matching.length > 0
29
+ ? Math.max(...matching.map((item) => ageHours(item.collectedAt, now)))
30
+ : null;
31
+ const satisfied = matching.length >= requirement.minimumItems &&
32
+ oldestAgeHours !== null &&
33
+ oldestAgeHours <= requirement.maxAgeHours &&
34
+ (requirement.observationWindow === 'current-state' ||
35
+ requirement.observationWindow === 'current-cycle' ||
36
+ matching.some((item) => item.observedFrom && item.observedTo));
37
+ return {
38
+ ...structuredClone(requirement),
39
+ observedItems: matching.length,
40
+ oldestAgeHours,
41
+ satisfied,
42
+ };
43
+ });
44
+ const ready = (role?.minimumEvidence.match ?? 'all') === 'any'
45
+ ? requirements.some((requirement) => requirement.satisfied)
46
+ : requirements.every((requirement) => requirement.satisfied);
47
+ const gapId = ready ? null : `GAP-${String(gapNumber++).padStart(3, '0')}`;
48
+ return {
49
+ roleId,
50
+ readiness: ready ? 'ready' : 'not_evaluated',
51
+ requirements,
52
+ missingEvidence: requirements
53
+ .filter((requirement) => !requirement.satisfied)
54
+ .map((requirement) => `${requirement.source}:${requirement.claimTypes.join('+')} (${requirement.observedItems}/${requirement.minimumItems})`),
55
+ evidenceRefs: input.evidence.items
56
+ .filter((item) => requirements.some((requirement) => requirement.source === item.source &&
57
+ requirement.claimTypes.some((claim) => item.claimTypes.includes(claim))))
58
+ .map((item) => item.id)
59
+ .sort(),
60
+ modelCallAllowed: ready,
61
+ gapId,
62
+ };
63
+ });
64
+ const readiness = {
65
+ kind: 'operating-evidence-readiness',
66
+ schemaVersion: OPERATE_SCHEMA_VERSION,
67
+ protocolVersion: OPERATE_PROTOCOL_VERSION,
68
+ cycleId: input.cycleId,
69
+ inputDigest: canonicalDigest({
70
+ evidence: input.evidence.fingerprint,
71
+ roles: input.enabledRoles,
72
+ }),
73
+ evaluatedAt: now.toISOString(),
74
+ roles,
75
+ };
76
+ return assertOperatingArtifact('operating-evidence-readiness', readiness);
77
+ }
78
+ //# sourceMappingURL=evidence-readiness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-readiness.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-readiness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type ReadOnlyFetch } from './read-only-providers.js';
2
+ import { type CollectedEvidenceItem, type EvidenceBudget, type OperatingDataGap, type OperatingEvidence, type OperatingEvidenceItem, type OperatingSensitivity, type OperatingWorkspaceManifest } from './types.js';
3
+ export interface EvidenceCollectionInput {
4
+ projectRoot: string;
5
+ cycleId: string;
6
+ workspace: OperatingWorkspaceManifest;
7
+ providers: string[];
8
+ sensitivityCeiling: OperatingSensitivity;
9
+ budgets: EvidenceBudget;
10
+ localRoot?: string;
11
+ now?: Date;
12
+ /** Standard cycles may reuse an unchanged machine-local evidence snapshot. */
13
+ incremental?: boolean;
14
+ /** Actual runs persist the snapshot; dry-run remains write-free. */
15
+ persistIncremental?: boolean;
16
+ /** Evidence already cited by open findings, decisions, or outcomes. */
17
+ requiredEvidenceRefs?: string[];
18
+ /** Test seam for deterministic remote-provider fixtures. */
19
+ remote?: {
20
+ fetchImpl?: ReadOnlyFetch;
21
+ githubToken?: string;
22
+ linearToken?: string;
23
+ };
24
+ }
25
+ export declare function evidenceFingerprintItems(items: readonly OperatingEvidenceItem[]): Array<{
26
+ id: string;
27
+ digest: `sha256:${string}`;
28
+ sensitivity: OperatingSensitivity;
29
+ }>;
30
+ export declare function collectGitHubEvidence(input: {
31
+ projectRoot: string;
32
+ workspace: OperatingWorkspaceManifest;
33
+ now: Date;
34
+ deadline: number;
35
+ budgets: EvidenceBudget;
36
+ token?: string;
37
+ fetchImpl?: ReadOnlyFetch;
38
+ }): Promise<{
39
+ items: CollectedEvidenceItem[];
40
+ truncated: boolean;
41
+ }>;
42
+ export declare function collectLinearEvidence(input: {
43
+ projectRoot: string;
44
+ now: Date;
45
+ deadline: number;
46
+ budgets: EvidenceBudget;
47
+ token?: string;
48
+ fetchImpl?: ReadOnlyFetch;
49
+ teamIds?: string[];
50
+ }): Promise<{
51
+ items: CollectedEvidenceItem[];
52
+ truncated: boolean;
53
+ }>;
54
+ export declare function collectOperatingEvidence(input: EvidenceCollectionInput): Promise<OperatingEvidence>;
55
+ /**
56
+ * Convert commercial numbers without reproducible query/window identity into
57
+ * governed gaps before any advisor can turn them into recommendations.
58
+ */
59
+ export declare function unqualifiedCommercialEvidenceGaps(input: {
60
+ cycleId: string;
61
+ evidence: OperatingEvidence;
62
+ owner: string;
63
+ now: string;
64
+ }): Promise<OperatingDataGap[]>;
65
+ export declare function evidenceProjectionSources(evidence: OperatingEvidence): Array<{
66
+ id: string;
67
+ freshness: OperatingEvidenceItem['freshness'];
68
+ status: string;
69
+ itemCount: number;
70
+ }>;
71
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence.ts"],"names":[],"mappings":"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"}