@amaster.ai/pi-attachments 0.1.0-beta.0 → 0.1.2-beta.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.
- package/dist/classify.d.ts.map +1 -1
- package/dist/classify.js +63 -68
- package/dist/classify.js.map +1 -1
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +11 -11
- package/dist/diagnostics.js.map +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +5 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/local-store.d.ts +1 -1
- package/dist/local-store.d.ts.map +1 -1
- package/dist/local-store.js +18 -15
- package/dist/local-store.js.map +1 -1
- package/dist/multipart.d.ts.map +1 -1
- package/dist/multipart.js +8 -8
- package/dist/multipart.js.map +1 -1
- package/dist/normalize.d.ts +1 -1
- package/dist/normalize.d.ts.map +1 -1
- package/dist/normalize.js +16 -16
- package/dist/normalize.js.map +1 -1
- package/dist/parser.d.ts +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +42 -40
- package/dist/parser.js.map +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +14 -11
- package/dist/prompt.js.map +1 -1
- package/dist/remote-fetch.d.ts.map +1 -1
- package/dist/remote-fetch.js +4 -3
- package/dist/remote-fetch.js.map +1 -1
- package/dist/routes.d.ts +4 -4
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +14 -12
- package/dist/routes.js.map +1 -1
- package/dist/service.d.ts +2 -3
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +28 -22
- package/dist/service.js.map +1 -1
- package/dist/types.d.ts +9 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/upload-proxy.d.ts +1 -1
- package/dist/upload-proxy.d.ts.map +1 -1
- package/dist/upload-proxy.js +27 -27
- package/dist/upload-proxy.js.map +1 -1
- package/package.json +1 -1
package/dist/normalize.js
CHANGED
|
@@ -3,7 +3,7 @@ export class AttachmentValidationError extends Error {
|
|
|
3
3
|
constructor(message, statusCode = 400) {
|
|
4
4
|
super(message);
|
|
5
5
|
this.statusCode = statusCode;
|
|
6
|
-
this.name =
|
|
6
|
+
this.name = 'AttachmentValidationError';
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export function normalizeAttachments(value, maxCount) {
|
|
@@ -11,7 +11,7 @@ export function normalizeAttachments(value, maxCount) {
|
|
|
11
11
|
return [];
|
|
12
12
|
}
|
|
13
13
|
if (!Array.isArray(value)) {
|
|
14
|
-
throw new AttachmentValidationError(
|
|
14
|
+
throw new AttachmentValidationError('attachments must be an array');
|
|
15
15
|
}
|
|
16
16
|
if (value.length > maxCount) {
|
|
17
17
|
throw new AttachmentValidationError(`attachments must include at most ${maxCount} files`);
|
|
@@ -19,7 +19,7 @@ export function normalizeAttachments(value, maxCount) {
|
|
|
19
19
|
return value.map((raw, index) => normalizeAttachment(raw, index));
|
|
20
20
|
}
|
|
21
21
|
function normalizeAttachment(value, index) {
|
|
22
|
-
if (!value || typeof value !==
|
|
22
|
+
if (!value || typeof value !== 'object') {
|
|
23
23
|
throw new AttachmentValidationError(`attachment ${index + 1} must be an object`);
|
|
24
24
|
}
|
|
25
25
|
const candidate = value;
|
|
@@ -33,7 +33,7 @@ function normalizeAttachment(value, index) {
|
|
|
33
33
|
}
|
|
34
34
|
const source = normalizeSource(candidate.source, index);
|
|
35
35
|
const mimeType = trimToUndefined(candidate.mimeType);
|
|
36
|
-
const size = typeof candidate.size ===
|
|
36
|
+
const size = typeof candidate.size === 'number' && Number.isFinite(candidate.size)
|
|
37
37
|
? Math.max(0, Math.floor(candidate.size))
|
|
38
38
|
: undefined;
|
|
39
39
|
return {
|
|
@@ -45,34 +45,34 @@ function normalizeAttachment(value, index) {
|
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
function normalizeSource(value, index) {
|
|
48
|
-
if (!value || typeof value !==
|
|
48
|
+
if (!value || typeof value !== 'object') {
|
|
49
49
|
throw new AttachmentValidationError(`attachment ${index + 1} source is required`);
|
|
50
50
|
}
|
|
51
51
|
const source = value;
|
|
52
|
-
if (source.kind ===
|
|
53
|
-
if (typeof source.text !==
|
|
52
|
+
if (source.kind === 'inlineText') {
|
|
53
|
+
if (typeof source.text !== 'string') {
|
|
54
54
|
throw new AttachmentValidationError(`attachment ${index + 1} inline text is required`);
|
|
55
55
|
}
|
|
56
56
|
return {
|
|
57
|
-
kind:
|
|
57
|
+
kind: 'inlineText',
|
|
58
58
|
text: source.text,
|
|
59
|
-
...(typeof source.truncated ===
|
|
59
|
+
...(typeof source.truncated === 'boolean' ? { truncated: source.truncated } : {}),
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
|
-
if (source.kind ===
|
|
63
|
-
const url = trimToUndefined(typeof source.url ===
|
|
62
|
+
if (source.kind === 'remoteObject') {
|
|
63
|
+
const url = trimToUndefined(typeof source.url === 'string' ? source.url : undefined);
|
|
64
64
|
if (!url) {
|
|
65
65
|
throw new AttachmentValidationError(`attachment ${index + 1} remote url is required`);
|
|
66
66
|
}
|
|
67
|
-
const key = trimToUndefined(typeof source.key ===
|
|
68
|
-
return { kind:
|
|
67
|
+
const key = trimToUndefined(typeof source.key === 'string' ? source.key : undefined);
|
|
68
|
+
return { kind: 'remoteObject', url, ...(key ? { key } : {}) };
|
|
69
69
|
}
|
|
70
|
-
if (source.kind ===
|
|
71
|
-
const attachmentId = trimToUndefined(typeof source.attachmentId ===
|
|
70
|
+
if (source.kind === 'storedFile') {
|
|
71
|
+
const attachmentId = trimToUndefined(typeof source.attachmentId === 'string' ? source.attachmentId : undefined);
|
|
72
72
|
if (!attachmentId) {
|
|
73
73
|
throw new AttachmentValidationError(`attachment ${index + 1} stored attachment id is required`);
|
|
74
74
|
}
|
|
75
|
-
return { kind:
|
|
75
|
+
return { kind: 'storedFile', attachmentId };
|
|
76
76
|
}
|
|
77
77
|
throw new AttachmentValidationError(`attachment ${index + 1} source kind is invalid`);
|
|
78
78
|
}
|
package/dist/normalize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,yBAA0B,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/D;AAED,qBAAa,qBAAsB,YAAW,gBAAgB;IACtD,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkBpE;AAED,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IAElD,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA2BpE"}
|
package/dist/parser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readFile } from
|
|
2
|
-
import JSZip from
|
|
3
|
-
import { isTextLikeAttachment } from
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import JSZip from 'jszip';
|
|
3
|
+
import { isTextLikeAttachment } from './classify.js';
|
|
4
4
|
export class BasicAttachmentParser {
|
|
5
5
|
async parse(input) {
|
|
6
6
|
if (isPptxAttachment(input.name, input.mimeType)) {
|
|
@@ -12,9 +12,11 @@ export class BasicAttachmentParser {
|
|
|
12
12
|
if (!isTextLikeAttachment(input.name, input.mimeType)) {
|
|
13
13
|
throw new Error(`No basic parser available for ${input.name}`);
|
|
14
14
|
}
|
|
15
|
-
const raw = await readFile(input.path,
|
|
15
|
+
const raw = await readFile(input.path, 'utf8');
|
|
16
16
|
if (isDelimitedFile(input.name, input.mimeType)) {
|
|
17
|
-
return {
|
|
17
|
+
return {
|
|
18
|
+
text: delimitedTextToMarkdown(raw, input.name.toLowerCase().endsWith('.tsv') ? '\t' : ','),
|
|
19
|
+
};
|
|
18
20
|
}
|
|
19
21
|
return { text: raw };
|
|
20
22
|
}
|
|
@@ -28,12 +30,12 @@ export class LiteParseAttachmentParser {
|
|
|
28
30
|
if (isTextLikeAttachment(input.name, input.mimeType)) {
|
|
29
31
|
return this.fallback.parse(input);
|
|
30
32
|
}
|
|
31
|
-
const { LiteParse } = await import(
|
|
33
|
+
const { LiteParse } = await import('@llamaindex/liteparse');
|
|
32
34
|
const parser = new LiteParse({
|
|
33
|
-
outputFormat: input.format ??
|
|
34
|
-
ocrEnabled: input.ocr !==
|
|
35
|
+
outputFormat: input.format ?? 'text',
|
|
36
|
+
ocrEnabled: input.ocr !== 'off',
|
|
35
37
|
maxPages: input.maxPages,
|
|
36
|
-
preciseBoundingBox: input.format ===
|
|
38
|
+
preciseBoundingBox: input.format === 'json',
|
|
37
39
|
});
|
|
38
40
|
try {
|
|
39
41
|
const result = await parser.parse(input.path, true);
|
|
@@ -52,20 +54,19 @@ export class LiteParseAttachmentParser {
|
|
|
52
54
|
}
|
|
53
55
|
function isDelimitedFile(name, mimeType) {
|
|
54
56
|
const lowerMime = mimeType?.toLowerCase();
|
|
55
|
-
return lowerMime ===
|
|
56
|
-
lowerMime ===
|
|
57
|
-
lowerMime ===
|
|
58
|
-
/\.(csv|tsv)$/i.test(name);
|
|
57
|
+
return (lowerMime === 'text/csv' ||
|
|
58
|
+
lowerMime === 'application/csv' ||
|
|
59
|
+
lowerMime === 'text/tab-separated-values' ||
|
|
60
|
+
/\.(csv|tsv)$/i.test(name));
|
|
59
61
|
}
|
|
60
62
|
function isPptxAttachment(name, mimeType) {
|
|
61
|
-
const lowerMime = mimeType?.split(
|
|
62
|
-
return lowerMime ===
|
|
63
|
-
/\.pptx$/i.test(name);
|
|
63
|
+
const lowerMime = mimeType?.split(';')[0]?.trim().toLowerCase();
|
|
64
|
+
return (lowerMime === 'application/vnd.openxmlformats-officedocument.presentationml.presentation' ||
|
|
65
|
+
/\.pptx$/i.test(name));
|
|
64
66
|
}
|
|
65
67
|
function isLegacyPptAttachment(name, mimeType) {
|
|
66
|
-
const lowerMime = mimeType?.split(
|
|
67
|
-
return lowerMime ===
|
|
68
|
-
/\.ppt$/i.test(name);
|
|
68
|
+
const lowerMime = mimeType?.split(';')[0]?.trim().toLowerCase();
|
|
69
|
+
return lowerMime === 'application/vnd.ms-powerpoint' || /\.ppt$/i.test(name);
|
|
69
70
|
}
|
|
70
71
|
async function parsePptxText(filePath) {
|
|
71
72
|
const zip = await JSZip.loadAsync(await readFile(filePath));
|
|
@@ -74,28 +75,29 @@ async function parsePptxText(filePath) {
|
|
|
74
75
|
.sort((a, b) => slideNumber(a.name) - slideNumber(b.name));
|
|
75
76
|
const slides = [];
|
|
76
77
|
for (const entry of slideEntries) {
|
|
77
|
-
const xml = await entry.async(
|
|
78
|
+
const xml = await entry.async('text');
|
|
78
79
|
const textRuns = extractPresentationText(xml);
|
|
79
|
-
const text = textRuns.join(
|
|
80
|
+
const text = textRuns.join('\n').trim();
|
|
80
81
|
if (text) {
|
|
81
82
|
slides.push(`Slide ${slideNumber(entry.name)}:\n${text}`);
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
return {
|
|
85
|
-
text: slides.join(
|
|
86
|
+
text: slides.join('\n\n') || '[No readable text found in presentation slides]',
|
|
86
87
|
pageCount: slideEntries.length,
|
|
87
88
|
};
|
|
88
89
|
}
|
|
89
90
|
async function parseLegacyPptText(filePath) {
|
|
90
91
|
const data = await readFile(filePath);
|
|
91
|
-
const text = data
|
|
92
|
+
const text = data
|
|
93
|
+
.toString('latin1')
|
|
92
94
|
.match(/[ -~\t]{4,}/g)
|
|
93
95
|
?.map((value) => value.trim())
|
|
94
96
|
.filter((value, index, all) => value.length > 3 && all.indexOf(value) === index)
|
|
95
97
|
.slice(0, 400)
|
|
96
|
-
.join(
|
|
98
|
+
.join('\n') ?? '';
|
|
97
99
|
return {
|
|
98
|
-
text: text ||
|
|
100
|
+
text: text || '[No readable text found in legacy PowerPoint file]',
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
103
|
function slideNumber(name) {
|
|
@@ -103,16 +105,16 @@ function slideNumber(name) {
|
|
|
103
105
|
}
|
|
104
106
|
function extractPresentationText(xml) {
|
|
105
107
|
return [...xml.matchAll(/<a:t[^>]*>([\s\S]*?)<\/a:t>/g)]
|
|
106
|
-
.map((match) => decodeXmlText(match[1] ??
|
|
108
|
+
.map((match) => decodeXmlText(match[1] ?? '').trim())
|
|
107
109
|
.filter(Boolean);
|
|
108
110
|
}
|
|
109
111
|
function decodeXmlText(value) {
|
|
110
112
|
return value
|
|
111
|
-
.replace(/</g,
|
|
112
|
-
.replace(/>/g,
|
|
113
|
-
.replace(/"/g, "
|
|
113
|
+
.replace(/</g, '<')
|
|
114
|
+
.replace(/>/g, '>')
|
|
115
|
+
.replace(/"/g, '"')
|
|
114
116
|
.replace(/'/g, "'")
|
|
115
|
-
.replace(/&/g,
|
|
117
|
+
.replace(/&/g, '&');
|
|
116
118
|
}
|
|
117
119
|
function delimitedTextToMarkdown(value, delimiter) {
|
|
118
120
|
const rows = value
|
|
@@ -120,21 +122,21 @@ function delimitedTextToMarkdown(value, delimiter) {
|
|
|
120
122
|
.filter((line) => line.length > 0)
|
|
121
123
|
.map((line) => splitDelimitedLine(line, delimiter));
|
|
122
124
|
if (rows.length === 0) {
|
|
123
|
-
return
|
|
125
|
+
return '';
|
|
124
126
|
}
|
|
125
127
|
const width = Math.max(...rows.map((row) => row.length), 1);
|
|
126
128
|
const normalized = rows.map((row) => Array.from({ length: width }, (_value, index) => formatMarkdownCell(row[index])));
|
|
127
129
|
const header = normalized[0] ?? [];
|
|
128
130
|
const body = normalized.slice(1);
|
|
129
131
|
return [
|
|
130
|
-
`| ${header.join(
|
|
131
|
-
`| ${header.map(() =>
|
|
132
|
-
...body.map((row) => `| ${row.join(
|
|
133
|
-
].join(
|
|
132
|
+
`| ${header.join(' | ')} |`,
|
|
133
|
+
`| ${header.map(() => '---').join(' | ')} |`,
|
|
134
|
+
...body.map((row) => `| ${row.join(' | ')} |`),
|
|
135
|
+
].join('\n');
|
|
134
136
|
}
|
|
135
137
|
function splitDelimitedLine(line, delimiter) {
|
|
136
138
|
const cells = [];
|
|
137
|
-
let current =
|
|
139
|
+
let current = '';
|
|
138
140
|
let quoted = false;
|
|
139
141
|
for (let index = 0; index < line.length; index += 1) {
|
|
140
142
|
const char = line[index];
|
|
@@ -150,7 +152,7 @@ function splitDelimitedLine(line, delimiter) {
|
|
|
150
152
|
}
|
|
151
153
|
if (!quoted && char === delimiter) {
|
|
152
154
|
cells.push(current);
|
|
153
|
-
current =
|
|
155
|
+
current = '';
|
|
154
156
|
continue;
|
|
155
157
|
}
|
|
156
158
|
current += char;
|
|
@@ -159,8 +161,8 @@ function splitDelimitedLine(line, delimiter) {
|
|
|
159
161
|
return cells;
|
|
160
162
|
}
|
|
161
163
|
function formatMarkdownCell(value) {
|
|
162
|
-
return String(value ??
|
|
163
|
-
.replace(/\r?\n/g,
|
|
164
|
-
.replace(/\|/g,
|
|
164
|
+
return String(value ?? '')
|
|
165
|
+
.replace(/\r?\n/g, ' ')
|
|
166
|
+
.replace(/\|/g, '\\|');
|
|
165
167
|
}
|
|
166
168
|
//# sourceMappingURL=parser.js.map
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/prompt.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PreparedAttachmentBundle } from
|
|
1
|
+
import type { PreparedAttachmentBundle } from './types.js';
|
|
2
2
|
export declare function renderAttachmentPrompt(message: string, bundle: PreparedAttachmentBundle): string;
|
|
3
3
|
export declare function attachmentHeader(input: {
|
|
4
4
|
index: number;
|
package/dist/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAuBhG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAQT;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE"}
|
package/dist/prompt.js
CHANGED
|
@@ -2,29 +2,32 @@ export function renderAttachmentPrompt(message, bundle) {
|
|
|
2
2
|
if (bundle.attachments.length === 0) {
|
|
3
3
|
return message;
|
|
4
4
|
}
|
|
5
|
-
const blocks = bundle.promptBlocks.length > 0
|
|
6
|
-
? bundle.promptBlocks
|
|
7
|
-
: ["No attachment content was available."];
|
|
5
|
+
const blocks = bundle.promptBlocks.length > 0 ? bundle.promptBlocks : ['No attachment content was available.'];
|
|
8
6
|
const currentTurnImageGuidance = bundle.images.length > 0
|
|
9
7
|
? [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
].join(
|
|
8
|
+
'Current-turn image inputs are attached as model-visible image content.',
|
|
9
|
+
'Ignore stale earlier statements that images were unsupported, unavailable, or could only be inspected with file tools.',
|
|
10
|
+
].join(' ')
|
|
13
11
|
: undefined;
|
|
14
12
|
return [
|
|
15
13
|
message,
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
'',
|
|
15
|
+
'Uploaded attachments for this turn:',
|
|
18
16
|
currentTurnImageGuidance,
|
|
19
|
-
blocks.join(
|
|
20
|
-
]
|
|
17
|
+
blocks.join('\n\n---\n\n'),
|
|
18
|
+
]
|
|
19
|
+
.filter(Boolean)
|
|
20
|
+
.join('\n')
|
|
21
|
+
.trim();
|
|
21
22
|
}
|
|
22
23
|
export function attachmentHeader(input) {
|
|
23
24
|
return [
|
|
24
25
|
`Attachment ${input.index + 1}: ${input.name}`,
|
|
25
26
|
input.mimeType ? `mimeType=${input.mimeType}` : undefined,
|
|
26
27
|
input.size !== undefined ? `size=${input.size}` : undefined,
|
|
27
|
-
]
|
|
28
|
+
]
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join(' ');
|
|
28
31
|
}
|
|
29
32
|
export function truncateText(value, maxChars) {
|
|
30
33
|
if (value.length <= maxChars) {
|
package/dist/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAgC;IACtF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,MAAgC;IACtF,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAClG,MAAM,wBAAwB,GAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC;YACE,wEAAwE;YACxE,wHAAwH;SACzH,CAAC,IAAI,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,OAAO;QACP,EAAE;QACF,qCAAqC;QACrC,wBAAwB;QACxB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;KAC3B;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAKhC;IACC,OAAO;QACL,cAAc,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE;QAC9C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QACzD,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;KAC5D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,QAAgB;IAC1D,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,wBAAwB,QAAQ,cAAc,CAAC;AACnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-fetch.d.ts","sourceRoot":"","sources":["../src/remote-fetch.ts"],"names":[],"mappings":"AAAA,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"remote-fetch.d.ts","sourceRoot":"","sources":["../src/remote-fetch.ts"],"names":[],"mappings":"AAAA,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/C"}
|
package/dist/remote-fetch.js
CHANGED
|
@@ -6,7 +6,7 @@ export async function fetchRemoteAttachment(input) {
|
|
|
6
6
|
if (!response.ok) {
|
|
7
7
|
throw new Error(`HTTP ${response.status}`);
|
|
8
8
|
}
|
|
9
|
-
const contentLength = Number(response.headers.get(
|
|
9
|
+
const contentLength = Number(response.headers.get('content-length') ?? 0);
|
|
10
10
|
if (contentLength > input.maxBytes) {
|
|
11
11
|
throw new Error(`attachment exceeds ${input.maxBytes} bytes`);
|
|
12
12
|
}
|
|
@@ -14,11 +14,12 @@ export async function fetchRemoteAttachment(input) {
|
|
|
14
14
|
if (data.byteLength > input.maxBytes) {
|
|
15
15
|
throw new Error(`attachment exceeds ${input.maxBytes} bytes`);
|
|
16
16
|
}
|
|
17
|
-
const mimeType = trimToUndefined(response.headers.get(
|
|
17
|
+
const mimeType = trimToUndefined(response.headers.get('content-type')?.split(';')[0]) ??
|
|
18
|
+
input.fallbackMimeType;
|
|
18
19
|
return { data, ...(mimeType ? { mimeType } : {}) };
|
|
19
20
|
}
|
|
20
21
|
catch (error) {
|
|
21
|
-
if (error instanceof Error && error.name ===
|
|
22
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
22
23
|
throw new Error(`attachment fetch timed out after ${input.timeoutMs}ms`);
|
|
23
24
|
}
|
|
24
25
|
throw error;
|
package/dist/remote-fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-fetch.js","sourceRoot":"","sources":["../src/remote-fetch.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAK3C;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"remote-fetch.js","sourceRoot":"","sources":["../src/remote-fetch.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAK3C;IACC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,QAAQ,GACZ,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,KAAK,CAAC,gBAAgB,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACvC,CAAC"}
|
package/dist/routes.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import { type AttachmentUploadAuth } from
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { AttachmentService } from './service.js';
|
|
3
|
+
import type { AttachmentContext } from './types.js';
|
|
4
|
+
import { type AttachmentUploadAuth } from './upload-proxy.js';
|
|
5
5
|
export declare function handleAttachmentRoutes(input: {
|
|
6
6
|
request: IncomingMessage;
|
|
7
7
|
response: ServerResponse;
|
package/dist/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,KAAK,oBAAoB,EAAyB,MAAM,mBAAmB,CAAC;AAErF,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,oBAAoB,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,iBAAiB,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,CAAC,CAmEnB"}
|
package/dist/routes.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AttachmentHttpError, readRequestBody, writeJson } from
|
|
2
|
-
import { parseMultipartBoundary, parseMultipartFiles } from
|
|
3
|
-
import { proxyAttachmentUpload } from
|
|
1
|
+
import { AttachmentHttpError, readRequestBody, writeJson } from './http.js';
|
|
2
|
+
import { parseMultipartBoundary, parseMultipartFiles } from './multipart.js';
|
|
3
|
+
import { proxyAttachmentUpload } from './upload-proxy.js';
|
|
4
4
|
export async function handleAttachmentRoutes(input) {
|
|
5
|
-
if (input.request.method ===
|
|
6
|
-
if (input.service.config.storageMode ===
|
|
5
|
+
if (input.request.method === 'POST' && input.url.pathname === '/v1/attachments/upload') {
|
|
6
|
+
if (input.service.config.storageMode === 'platform') {
|
|
7
7
|
await proxyAttachmentUpload({
|
|
8
8
|
request: input.request,
|
|
9
9
|
response: input.response,
|
|
@@ -33,18 +33,20 @@ export async function handleAttachmentRoutes(input) {
|
|
|
33
33
|
}
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
36
|
-
if (input.request.method ===
|
|
36
|
+
if (input.request.method === 'POST' && input.url.pathname === '/v1/attachments/register-local') {
|
|
37
37
|
if (!input.service.config.desktopEnabled) {
|
|
38
|
-
writeJson(input.response, 404, {
|
|
38
|
+
writeJson(input.response, 404, {
|
|
39
|
+
error: 'local attachment registration is only available in desktop mode',
|
|
40
|
+
});
|
|
39
41
|
return true;
|
|
40
42
|
}
|
|
41
43
|
try {
|
|
42
|
-
const body = JSON.parse((await readRequestBody(input.request, input.maxUploadBodyBytes)).toString(
|
|
44
|
+
const body = JSON.parse((await readRequestBody(input.request, input.maxUploadBodyBytes)).toString('utf8'));
|
|
43
45
|
const files = Array.isArray(body.files) ? body.files : [];
|
|
44
46
|
const attachments = [];
|
|
45
47
|
for (const file of files) {
|
|
46
48
|
if (!file.path) {
|
|
47
|
-
throw new Error(
|
|
49
|
+
throw new Error('file path is required');
|
|
48
50
|
}
|
|
49
51
|
const record = await input.service.store.putFile({
|
|
50
52
|
sourcePath: file.path,
|
|
@@ -64,9 +66,9 @@ export async function handleAttachmentRoutes(input) {
|
|
|
64
66
|
return false;
|
|
65
67
|
}
|
|
66
68
|
async function readMultipartFiles(request, maxBytes) {
|
|
67
|
-
const boundary = parseMultipartBoundary(request.headers[
|
|
69
|
+
const boundary = parseMultipartBoundary(request.headers['content-type']);
|
|
68
70
|
if (!boundary) {
|
|
69
|
-
throw new AttachmentHttpError(400,
|
|
71
|
+
throw new AttachmentHttpError(400, 'multipart_boundary_required', 'multipart boundary is required');
|
|
70
72
|
}
|
|
71
73
|
return parseMultipartFiles(await readRequestBody(request, maxBytes), boundary);
|
|
72
74
|
}
|
|
@@ -76,7 +78,7 @@ function toStoredAttachment(record) {
|
|
|
76
78
|
name: record.name,
|
|
77
79
|
...(record.mimeType ? { mimeType: record.mimeType } : {}),
|
|
78
80
|
size: record.size,
|
|
79
|
-
source: { kind:
|
|
81
|
+
source: { kind: 'storedFile', attachmentId: record.attachmentId },
|
|
80
82
|
};
|
|
81
83
|
}
|
|
82
84
|
function writeRouteError(response, error) {
|
package/dist/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG7E,OAAO,EAA6B,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAQ5C;IACC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,wBAAwB,EAAE,CAAC;QACvF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,qBAAqB,CAAC;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc;gBACnD,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,2BAA2B;gBACvE,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,YAAY,EAAE,KAAK,CAAC,kBAAkB;aACvC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAChF,MAAM,WAAW,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;oBACjD,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,QAAQ;oBACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;iBACnC,CAAC,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,gCAAgC,EAAE,CAAC;QAC/F,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACzC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAC7B,KAAK,EAAE,iEAAiE;aACzE,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACrB,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAGlF,CAAC;YACF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC/C,UAAU,EAAE,IAAI,CAAC,IAAI;oBACrB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;iBACnC,CAAC,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAwB,EAAE,QAAgB;IAC1E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,mBAAmB,CAC3B,GAAG,EACH,6BAA6B,EAC7B,gCAAgC,CACjC,CAAC;IACJ,CAAC;IACD,OAAO,mBAAmB,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,MAK3B;IACC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,YAAY;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAAwB,EAAE,KAAc;IAC/D,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IACD,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { AttachmentServiceConfig, PreparedAttachmentBundle } from
|
|
3
|
-
import { LocalAttachmentStore } from "./local-store.js";
|
|
1
|
+
import { LocalAttachmentStore } from './local-store.js';
|
|
2
|
+
import type { AttachmentContext, AttachmentServiceConfig, PreparedAttachmentBundle } from './types.js';
|
|
4
3
|
export type AttachmentService = {
|
|
5
4
|
readonly config: AttachmentServiceConfig;
|
|
6
5
|
readonly store: LocalAttachmentStore;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AASxD,OAAO,KAAK,EACV,iBAAiB,EAGjB,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,CACd,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAK1F"}
|