@tarquinen/opencode-dcp 2.1.2 → 2.1.4

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 (56) hide show
  1. package/dist/lib/config.d.ts.map +1 -1
  2. package/dist/lib/config.js +24 -0
  3. package/dist/lib/config.js.map +1 -1
  4. package/dist/lib/hooks.d.ts.map +1 -1
  5. package/dist/lib/hooks.js +4 -1
  6. package/dist/lib/hooks.js.map +1 -1
  7. package/dist/lib/message-ids.d.ts +19 -0
  8. package/dist/lib/message-ids.d.ts.map +1 -0
  9. package/dist/lib/message-ids.js +97 -0
  10. package/dist/lib/message-ids.js.map +1 -0
  11. package/dist/lib/messages/index.d.ts +1 -0
  12. package/dist/lib/messages/index.d.ts.map +1 -1
  13. package/dist/lib/messages/index.js +1 -0
  14. package/dist/lib/messages/index.js.map +1 -1
  15. package/dist/lib/messages/inject.d.ts +1 -0
  16. package/dist/lib/messages/inject.d.ts.map +1 -1
  17. package/dist/lib/messages/inject.js +35 -7
  18. package/dist/lib/messages/inject.js.map +1 -1
  19. package/dist/lib/messages/prune.js +8 -6
  20. package/dist/lib/messages/prune.js.map +1 -1
  21. package/dist/lib/messages/utils.d.ts +10 -4
  22. package/dist/lib/messages/utils.d.ts.map +1 -1
  23. package/dist/lib/messages/utils.js +37 -11
  24. package/dist/lib/messages/utils.js.map +1 -1
  25. package/dist/lib/prompts/_codegen/compress.generated.d.ts +1 -1
  26. package/dist/lib/prompts/_codegen/compress.generated.d.ts.map +1 -1
  27. package/dist/lib/prompts/_codegen/compress.generated.js +26 -16
  28. package/dist/lib/prompts/_codegen/compress.generated.js.map +1 -1
  29. package/dist/lib/prompts/_codegen/system.generated.d.ts +1 -1
  30. package/dist/lib/prompts/_codegen/system.generated.d.ts.map +1 -1
  31. package/dist/lib/prompts/_codegen/system.generated.js +2 -2
  32. package/dist/lib/state/persistence.d.ts.map +1 -1
  33. package/dist/lib/state/persistence.js +37 -7
  34. package/dist/lib/state/persistence.js.map +1 -1
  35. package/dist/lib/state/state.d.ts.map +1 -1
  36. package/dist/lib/state/state.js +16 -1
  37. package/dist/lib/state/state.js.map +1 -1
  38. package/dist/lib/state/types.d.ts +7 -0
  39. package/dist/lib/state/types.d.ts.map +1 -1
  40. package/dist/lib/state/utils.d.ts.map +1 -1
  41. package/dist/lib/state/utils.js +5 -0
  42. package/dist/lib/state/utils.js.map +1 -1
  43. package/dist/lib/strategies/purge-errors.js +1 -1
  44. package/dist/lib/strategies/purge-errors.js.map +1 -1
  45. package/dist/lib/tools/compress-utils.d.ts +59 -0
  46. package/dist/lib/tools/compress-utils.d.ts.map +1 -0
  47. package/dist/lib/tools/compress-utils.js +405 -0
  48. package/dist/lib/tools/compress-utils.js.map +1 -0
  49. package/dist/lib/tools/compress.d.ts.map +1 -1
  50. package/dist/lib/tools/compress.js +52 -96
  51. package/dist/lib/tools/compress.js.map +1 -1
  52. package/package.json +1 -3
  53. package/dist/lib/tools/utils.d.ts +0 -14
  54. package/dist/lib/tools/utils.d.ts.map +0 -1
  55. package/dist/lib/tools/utils.js +0 -171
  56. package/dist/lib/tools/utils.js.map +0 -1
@@ -0,0 +1,59 @@
1
+ import type { SessionState, WithParts, CompressSummary } from "../state";
2
+ export interface CompressToolArgs {
3
+ topic: string;
4
+ content: {
5
+ startId: string;
6
+ endId: string;
7
+ summary: string;
8
+ };
9
+ }
10
+ export interface BoundaryReference {
11
+ kind: "message" | "compressed-block";
12
+ rawIndex: number;
13
+ messageId?: string;
14
+ blockId?: number;
15
+ anchorMessageId?: string;
16
+ }
17
+ export interface SearchContext {
18
+ rawMessages: WithParts[];
19
+ rawMessagesById: Map<string, WithParts>;
20
+ rawIndexById: Map<string, number>;
21
+ summaryByBlockId: Map<number, CompressSummary>;
22
+ }
23
+ export interface RangeResolution {
24
+ startReference: BoundaryReference;
25
+ endReference: BoundaryReference;
26
+ messageIds: string[];
27
+ messageTokenById: Map<string, number>;
28
+ toolIds: string[];
29
+ requiredBlockIds: number[];
30
+ }
31
+ export interface ParsedBlockPlaceholder {
32
+ raw: string;
33
+ blockId: number;
34
+ startIndex: number;
35
+ endIndex: number;
36
+ }
37
+ export interface InjectedSummaryResult {
38
+ expandedSummary: string;
39
+ consumedBlockIds: number[];
40
+ }
41
+ export declare function formatCompressedBlockHeader(_blockId: number): string;
42
+ export declare function formatCompressedBlockFooter(blockId: number): string;
43
+ export declare function formatBlockPlaceholder(blockId: number): string;
44
+ export declare function validateCompressArgs(args: CompressToolArgs): void;
45
+ export declare function fetchSessionMessages(client: any, sessionId: string): Promise<WithParts[]>;
46
+ export declare function buildSearchContext(state: SessionState, rawMessages: WithParts[]): SearchContext;
47
+ export declare function resolveBoundaryIds(context: SearchContext, state: SessionState, startId: string, endId: string): {
48
+ startReference: BoundaryReference;
49
+ endReference: BoundaryReference;
50
+ };
51
+ export declare function resolveRange(context: SearchContext, startReference: BoundaryReference, endReference: BoundaryReference): RangeResolution;
52
+ export declare function resolveAnchorMessageId(startReference: BoundaryReference): string;
53
+ export declare function parseBlockPlaceholders(summary: string): ParsedBlockPlaceholder[];
54
+ export declare function validateSummaryPlaceholders(placeholders: ParsedBlockPlaceholder[], requiredBlockIds: number[], startReference: BoundaryReference, endReference: BoundaryReference, summaryByBlockId: Map<number, CompressSummary>): void;
55
+ export declare function injectBlockPlaceholders(summary: string, placeholders: ParsedBlockPlaceholder[], summaryByBlockId: Map<number, CompressSummary>, startReference: BoundaryReference, endReference: BoundaryReference): InjectedSummaryResult;
56
+ export declare function allocateBlockId(summaries: CompressSummary[]): number;
57
+ export declare function addCompressedBlockHeader(blockId: number, summary: string): string;
58
+ export declare function upsertCompressedSummary(summaries: CompressSummary[], blockId: number, anchorMessageId: string, summary: string, consumedBlockIds: number[]): CompressSummary[];
59
+ //# sourceMappingURL=compress-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-utils.d.ts","sourceRoot":"","sources":["../../../lib/tools/compress-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,405 @@
1
+ import { formatBlockRef, formatMessageIdTag, parseBoundaryId } from "../message-ids";
2
+ import { isIgnoredUserMessage } from "../messages/utils";
3
+ import { countMessageTextTokens } from "../strategies/utils";
4
+ const BLOCK_PLACEHOLDER_REGEX = /\(b(\d+)\)|\{block_(\d+)\}/gi;
5
+ export function formatCompressedBlockHeader(_blockId) {
6
+ return "[Compressed conversation section]";
7
+ }
8
+ export function formatCompressedBlockFooter(blockId) {
9
+ return formatMessageIdTag(formatBlockRef(blockId));
10
+ }
11
+ export function formatBlockPlaceholder(blockId) {
12
+ return `(b${blockId})`;
13
+ }
14
+ export function validateCompressArgs(args) {
15
+ if (typeof args.topic !== "string" || args.topic.trim().length === 0) {
16
+ throw new Error("topic is required and must be a non-empty string");
17
+ }
18
+ if (typeof args.content?.startId !== "string" || args.content.startId.trim().length === 0) {
19
+ throw new Error("content.startId is required and must be a non-empty string");
20
+ }
21
+ if (typeof args.content?.endId !== "string" || args.content.endId.trim().length === 0) {
22
+ throw new Error("content.endId is required and must be a non-empty string");
23
+ }
24
+ if (typeof args.content?.summary !== "string" || args.content.summary.trim().length === 0) {
25
+ throw new Error("content.summary is required and must be a non-empty string");
26
+ }
27
+ }
28
+ export async function fetchSessionMessages(client, sessionId) {
29
+ const response = await client.session.messages({
30
+ path: { id: sessionId },
31
+ });
32
+ const payload = (response?.data || response);
33
+ return Array.isArray(payload) ? payload : [];
34
+ }
35
+ export function buildSearchContext(state, rawMessages) {
36
+ const rawMessagesById = new Map();
37
+ const rawIndexById = new Map();
38
+ for (const msg of rawMessages) {
39
+ rawMessagesById.set(msg.info.id, msg);
40
+ }
41
+ for (let index = 0; index < rawMessages.length; index++) {
42
+ const message = rawMessages[index];
43
+ if (!message) {
44
+ continue;
45
+ }
46
+ rawIndexById.set(message.info.id, index);
47
+ }
48
+ const summaryByBlockId = new Map();
49
+ for (const summary of state.compressSummaries || []) {
50
+ summaryByBlockId.set(summary.blockId, summary);
51
+ }
52
+ return {
53
+ rawMessages,
54
+ rawMessagesById,
55
+ rawIndexById,
56
+ summaryByBlockId,
57
+ };
58
+ }
59
+ export function resolveBoundaryIds(context, state, startId, endId) {
60
+ const lookup = buildBoundaryReferenceLookup(context, state);
61
+ const issues = [];
62
+ const parsedStartId = parseBoundaryId(startId);
63
+ const parsedEndId = parseBoundaryId(endId);
64
+ if (parsedStartId === null) {
65
+ issues.push("startId is invalid. Use an injected message ID (mNNNN) or block ID (bN).");
66
+ }
67
+ if (parsedEndId === null) {
68
+ issues.push("endId is invalid. Use an injected message ID (mNNNN) or block ID (bN).");
69
+ }
70
+ if (issues.length > 0) {
71
+ throwCombinedIssues(issues);
72
+ }
73
+ const validStartId = parsedStartId;
74
+ const validEndId = parsedEndId;
75
+ const startReference = lookup.get(validStartId.ref);
76
+ const endReference = lookup.get(validEndId.ref);
77
+ if (!startReference) {
78
+ issues.push(`startId ${validStartId.ref} is not available in the current conversation context. Choose an injected ID visible in context.`);
79
+ }
80
+ if (!endReference) {
81
+ issues.push(`endId ${validEndId.ref} is not available in the current conversation context. Choose an injected ID visible in context.`);
82
+ }
83
+ if (issues.length > 0) {
84
+ throwCombinedIssues(issues);
85
+ }
86
+ if (!startReference || !endReference) {
87
+ throw new Error("Failed to resolve boundary IDs");
88
+ }
89
+ if (startReference.rawIndex > endReference.rawIndex) {
90
+ throw new Error(`startId ${validStartId.ref} appears after endId ${validEndId.ref} in the conversation. Start must come before end.`);
91
+ }
92
+ return { startReference, endReference };
93
+ }
94
+ function buildBoundaryReferenceLookup(context, state) {
95
+ const lookup = new Map();
96
+ for (const [messageRef, messageId] of state.messageIds.byRef) {
97
+ const rawMessage = context.rawMessagesById.get(messageId);
98
+ if (!rawMessage) {
99
+ continue;
100
+ }
101
+ if (rawMessage.info.role === "user" && isIgnoredUserMessage(rawMessage)) {
102
+ continue;
103
+ }
104
+ const rawIndex = context.rawIndexById.get(messageId);
105
+ if (rawIndex === undefined) {
106
+ continue;
107
+ }
108
+ lookup.set(messageRef, {
109
+ kind: "message",
110
+ rawIndex,
111
+ messageId,
112
+ });
113
+ }
114
+ const summaries = Array.from(context.summaryByBlockId.values()).sort((a, b) => a.blockId - b.blockId);
115
+ for (const summary of summaries) {
116
+ const anchorMessage = context.rawMessagesById.get(summary.anchorMessageId);
117
+ if (!anchorMessage) {
118
+ continue;
119
+ }
120
+ if (anchorMessage.info.role === "user" && isIgnoredUserMessage(anchorMessage)) {
121
+ continue;
122
+ }
123
+ const rawIndex = context.rawIndexById.get(summary.anchorMessageId);
124
+ if (rawIndex === undefined) {
125
+ continue;
126
+ }
127
+ const blockRef = formatBlockRef(summary.blockId);
128
+ if (!lookup.has(blockRef)) {
129
+ lookup.set(blockRef, {
130
+ kind: "compressed-block",
131
+ rawIndex,
132
+ blockId: summary.blockId,
133
+ anchorMessageId: summary.anchorMessageId,
134
+ });
135
+ }
136
+ }
137
+ return lookup;
138
+ }
139
+ export function resolveRange(context, startReference, endReference) {
140
+ const startRawIndex = startReference.rawIndex;
141
+ const endRawIndex = endReference.rawIndex;
142
+ const messageIds = [];
143
+ const messageSeen = new Set();
144
+ const toolIds = [];
145
+ const toolSeen = new Set();
146
+ const requiredBlockIds = [];
147
+ const requiredBlockSeen = new Set();
148
+ const messageTokenById = new Map();
149
+ for (let index = startRawIndex; index <= endRawIndex; index++) {
150
+ const rawMessage = context.rawMessages[index];
151
+ if (!rawMessage) {
152
+ continue;
153
+ }
154
+ if (rawMessage.info.role === "user" && isIgnoredUserMessage(rawMessage)) {
155
+ continue;
156
+ }
157
+ const messageId = rawMessage.info.id;
158
+ if (!messageSeen.has(messageId)) {
159
+ messageSeen.add(messageId);
160
+ messageIds.push(messageId);
161
+ }
162
+ if (!messageTokenById.has(messageId)) {
163
+ messageTokenById.set(messageId, countMessageTextTokens(rawMessage));
164
+ }
165
+ const parts = Array.isArray(rawMessage.parts) ? rawMessage.parts : [];
166
+ for (const part of parts) {
167
+ if (part.type !== "tool" || !part.callID) {
168
+ continue;
169
+ }
170
+ if (toolSeen.has(part.callID)) {
171
+ continue;
172
+ }
173
+ toolSeen.add(part.callID);
174
+ toolIds.push(part.callID);
175
+ }
176
+ }
177
+ const rangeMessageIdSet = new Set(messageIds);
178
+ const summariesInRange = [];
179
+ for (const summary of context.summaryByBlockId.values()) {
180
+ if (!rangeMessageIdSet.has(summary.anchorMessageId)) {
181
+ continue;
182
+ }
183
+ const anchorIndex = context.rawIndexById.get(summary.anchorMessageId);
184
+ if (anchorIndex === undefined) {
185
+ continue;
186
+ }
187
+ summariesInRange.push({
188
+ blockId: summary.blockId,
189
+ rawIndex: anchorIndex,
190
+ });
191
+ }
192
+ summariesInRange.sort((a, b) => a.rawIndex - b.rawIndex || a.blockId - b.blockId);
193
+ for (const summary of summariesInRange) {
194
+ if (requiredBlockSeen.has(summary.blockId)) {
195
+ continue;
196
+ }
197
+ requiredBlockSeen.add(summary.blockId);
198
+ requiredBlockIds.push(summary.blockId);
199
+ }
200
+ if (messageIds.length === 0) {
201
+ throw new Error("Failed to map boundary matches back to raw messages. Choose boundaries that include original conversation messages.");
202
+ }
203
+ return {
204
+ startReference,
205
+ endReference,
206
+ messageIds,
207
+ messageTokenById,
208
+ toolIds,
209
+ requiredBlockIds,
210
+ };
211
+ }
212
+ export function resolveAnchorMessageId(startReference) {
213
+ if (startReference.kind === "compressed-block") {
214
+ if (!startReference.anchorMessageId) {
215
+ throw new Error("Failed to map boundary matches back to raw messages");
216
+ }
217
+ return startReference.anchorMessageId;
218
+ }
219
+ if (!startReference.messageId) {
220
+ throw new Error("Failed to map boundary matches back to raw messages");
221
+ }
222
+ return startReference.messageId;
223
+ }
224
+ export function parseBlockPlaceholders(summary) {
225
+ const placeholders = [];
226
+ const regex = new RegExp(BLOCK_PLACEHOLDER_REGEX);
227
+ let match;
228
+ while ((match = regex.exec(summary)) !== null) {
229
+ const full = match[0];
230
+ const blockIdPart = match[1] || match[2];
231
+ const parsed = Number.parseInt(blockIdPart, 10);
232
+ if (!Number.isInteger(parsed)) {
233
+ continue;
234
+ }
235
+ placeholders.push({
236
+ raw: full,
237
+ blockId: parsed,
238
+ startIndex: match.index,
239
+ endIndex: match.index + full.length,
240
+ });
241
+ }
242
+ return placeholders;
243
+ }
244
+ export function validateSummaryPlaceholders(placeholders, requiredBlockIds, startReference, endReference, summaryByBlockId) {
245
+ const issues = [];
246
+ const boundaryOptionalIds = new Set();
247
+ if (startReference.kind === "compressed-block") {
248
+ if (startReference.blockId === undefined) {
249
+ issues.push("Failed to map boundary matches back to raw messages");
250
+ }
251
+ else {
252
+ boundaryOptionalIds.add(startReference.blockId);
253
+ }
254
+ }
255
+ if (endReference.kind === "compressed-block") {
256
+ if (endReference.blockId === undefined) {
257
+ issues.push("Failed to map boundary matches back to raw messages");
258
+ }
259
+ else {
260
+ boundaryOptionalIds.add(endReference.blockId);
261
+ }
262
+ }
263
+ const strictRequiredIds = requiredBlockIds.filter((id) => !boundaryOptionalIds.has(id));
264
+ const requiredSet = new Set(requiredBlockIds);
265
+ const placeholderIds = placeholders.map((p) => p.blockId);
266
+ const placeholderSet = new Set();
267
+ const duplicateIds = new Set();
268
+ for (const id of placeholderIds) {
269
+ if (placeholderSet.has(id)) {
270
+ duplicateIds.add(id);
271
+ continue;
272
+ }
273
+ placeholderSet.add(id);
274
+ }
275
+ const missing = strictRequiredIds.filter((id) => !placeholderSet.has(id));
276
+ if (missing.length > 0) {
277
+ issues.push(`Missing required block placeholders: ${missing.map(formatBlockPlaceholder).join(", ")}`);
278
+ }
279
+ const unknown = placeholderIds.filter((id) => !summaryByBlockId.has(id));
280
+ if (unknown.length > 0) {
281
+ const uniqueUnknown = [...new Set(unknown)];
282
+ issues.push(`Unknown block placeholders: ${uniqueUnknown.map(formatBlockPlaceholder).join(", ")}`);
283
+ }
284
+ const invalid = placeholderIds.filter((id) => !requiredSet.has(id));
285
+ if (invalid.length > 0) {
286
+ const uniqueInvalid = [...new Set(invalid)];
287
+ issues.push(`Invalid block placeholders for selected range: ${uniqueInvalid.map(formatBlockPlaceholder).join(", ")}`);
288
+ }
289
+ if (duplicateIds.size > 0) {
290
+ issues.push(`Duplicate block placeholders are not allowed: ${[...duplicateIds]
291
+ .map(formatBlockPlaceholder)
292
+ .join(", ")}`);
293
+ }
294
+ if (issues.length > 0) {
295
+ throwCombinedIssues(issues);
296
+ }
297
+ }
298
+ export function injectBlockPlaceholders(summary, placeholders, summaryByBlockId, startReference, endReference) {
299
+ let cursor = 0;
300
+ let expanded = summary;
301
+ const consumed = [];
302
+ const consumedSeen = new Set();
303
+ if (placeholders.length > 0) {
304
+ expanded = "";
305
+ for (const placeholder of placeholders) {
306
+ const target = summaryByBlockId.get(placeholder.blockId);
307
+ if (!target) {
308
+ throw new Error(`Compressed block not found: ${formatBlockPlaceholder(placeholder.blockId)}`);
309
+ }
310
+ expanded += summary.slice(cursor, placeholder.startIndex);
311
+ expanded += restoreStoredCompressedSummary(target.summary);
312
+ cursor = placeholder.endIndex;
313
+ if (!consumedSeen.has(placeholder.blockId)) {
314
+ consumedSeen.add(placeholder.blockId);
315
+ consumed.push(placeholder.blockId);
316
+ }
317
+ }
318
+ expanded += summary.slice(cursor);
319
+ }
320
+ expanded = injectBoundarySummaryIfMissing(expanded, startReference, "start", summaryByBlockId, consumed, consumedSeen);
321
+ expanded = injectBoundarySummaryIfMissing(expanded, endReference, "end", summaryByBlockId, consumed, consumedSeen);
322
+ return {
323
+ expandedSummary: expanded,
324
+ consumedBlockIds: consumed,
325
+ };
326
+ }
327
+ export function allocateBlockId(summaries) {
328
+ if (summaries.length === 0) {
329
+ return 1;
330
+ }
331
+ let max = 0;
332
+ for (const summary of summaries) {
333
+ if (summary.blockId > max) {
334
+ max = summary.blockId;
335
+ }
336
+ }
337
+ return max + 1;
338
+ }
339
+ export function addCompressedBlockHeader(blockId, summary) {
340
+ const header = formatCompressedBlockHeader(blockId);
341
+ const footer = formatCompressedBlockFooter(blockId);
342
+ const body = summary.trim();
343
+ if (body.length === 0) {
344
+ return `${header}\n${footer}`;
345
+ }
346
+ return `${header}\n${body}\n\n${footer}`;
347
+ }
348
+ export function upsertCompressedSummary(summaries, blockId, anchorMessageId, summary, consumedBlockIds) {
349
+ const consumed = new Set(consumedBlockIds);
350
+ const next = summaries.filter((s) => !consumed.has(s.blockId));
351
+ next.push({
352
+ blockId,
353
+ anchorMessageId,
354
+ summary,
355
+ });
356
+ return next;
357
+ }
358
+ function restoreStoredCompressedSummary(summary) {
359
+ const headerMatch = summary.match(/^\s*\[Compressed conversation(?: section)?(?: b\d+)?\]/i);
360
+ if (!headerMatch) {
361
+ return summary;
362
+ }
363
+ const afterHeader = summary.slice(headerMatch[0].length);
364
+ const withoutLeadingBreaks = afterHeader.replace(/^(?:\r?\n)+/, "");
365
+ return withoutLeadingBreaks
366
+ .replace(/(?:\r?\n)*<dcp-message-id>b\d+<\/dcp-message-id>\s*$/i, "")
367
+ .replace(/(?:\r?\n)+$/, "");
368
+ }
369
+ function injectBoundarySummaryIfMissing(summary, reference, position, summaryByBlockId, consumed, consumedSeen) {
370
+ if (reference.kind !== "compressed-block" || reference.blockId === undefined) {
371
+ return summary;
372
+ }
373
+ if (consumedSeen.has(reference.blockId)) {
374
+ return summary;
375
+ }
376
+ const target = summaryByBlockId.get(reference.blockId);
377
+ if (!target) {
378
+ throw new Error(`Compressed block not found: ${formatBlockPlaceholder(reference.blockId)}`);
379
+ }
380
+ const injectedBody = restoreStoredCompressedSummary(target.summary);
381
+ const next = position === "start"
382
+ ? mergeWithSpacing(injectedBody, summary)
383
+ : mergeWithSpacing(summary, injectedBody);
384
+ consumedSeen.add(reference.blockId);
385
+ consumed.push(reference.blockId);
386
+ return next;
387
+ }
388
+ function mergeWithSpacing(left, right) {
389
+ const l = left.trim();
390
+ const r = right.trim();
391
+ if (!l) {
392
+ return right;
393
+ }
394
+ if (!r) {
395
+ return left;
396
+ }
397
+ return `${l}\n\n${r}`;
398
+ }
399
+ function throwCombinedIssues(issues) {
400
+ if (issues.length === 1) {
401
+ throw new Error(issues[0]);
402
+ }
403
+ throw new Error(issues.map((issue) => `- ${issue}`).join("\n"));
404
+ }
405
+ //# sourceMappingURL=compress-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-utils.js","sourceRoot":"","sources":["../../../lib/tools/compress-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../../lib/tools/compress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAW/C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CA2MjF"}
1
+ {"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../../lib/tools/compress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAwB/C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAiJjF"}