@stacklink/sdk 0.3.13 → 0.3.14
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/compatibility.json +1 -1
- package/dist/src/domain/bot-contract.d.ts +480 -188
- package/dist/src/domain/bot-contract.d.ts.map +1 -1
- package/dist/src/domain/bot-contract.js +37 -0
- package/dist/src/domain/bot-contract.js.map +1 -1
- package/dist/src/domain/memory-contract.d.ts +108 -108
- package/dist/src/domain/stacklink-meta-tools.js +1 -1
- package/dist/src/domain/stacklink-meta-tools.js.map +1 -1
- package/dist/src/sdk/index.d.ts +25 -2
- package/dist/src/sdk/index.d.ts.map +1 -1
- package/dist/src/sdk/index.js +9 -1
- package/dist/src/sdk/index.js.map +1 -1
- package/dist/src/services/content-normalization/content-type-capabilities.d.ts +15 -0
- package/dist/src/services/content-normalization/content-type-capabilities.d.ts.map +1 -0
- package/dist/src/services/content-normalization/content-type-capabilities.js +164 -0
- package/dist/src/services/content-normalization/content-type-capabilities.js.map +1 -0
- package/dist/src/services/content-normalization/normalized-content-artifact.d.ts +230 -0
- package/dist/src/services/content-normalization/normalized-content-artifact.d.ts.map +1 -0
- package/dist/src/services/content-normalization/normalized-content-artifact.js +147 -0
- package/dist/src/services/content-normalization/normalized-content-artifact.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const TEXT_EXTENSIONS = new Set([
|
|
2
|
+
'txt',
|
|
3
|
+
'csv',
|
|
4
|
+
'json',
|
|
5
|
+
'md',
|
|
6
|
+
'markdown',
|
|
7
|
+
'xml',
|
|
8
|
+
'html',
|
|
9
|
+
'htm',
|
|
10
|
+
'css',
|
|
11
|
+
'scss',
|
|
12
|
+
'less',
|
|
13
|
+
'js',
|
|
14
|
+
'jsx',
|
|
15
|
+
'ts',
|
|
16
|
+
'tsx',
|
|
17
|
+
'mjs',
|
|
18
|
+
'cjs',
|
|
19
|
+
'py',
|
|
20
|
+
'java',
|
|
21
|
+
'c',
|
|
22
|
+
'cc',
|
|
23
|
+
'cpp',
|
|
24
|
+
'h',
|
|
25
|
+
'hpp',
|
|
26
|
+
'go',
|
|
27
|
+
'rs',
|
|
28
|
+
'rb',
|
|
29
|
+
'php',
|
|
30
|
+
'sql',
|
|
31
|
+
'sh',
|
|
32
|
+
'bash',
|
|
33
|
+
'zsh',
|
|
34
|
+
'fish',
|
|
35
|
+
'ps1',
|
|
36
|
+
'bat',
|
|
37
|
+
'cmd',
|
|
38
|
+
'yaml',
|
|
39
|
+
'yml',
|
|
40
|
+
'toml',
|
|
41
|
+
'ini',
|
|
42
|
+
'conf',
|
|
43
|
+
'log',
|
|
44
|
+
]);
|
|
45
|
+
const TEXT_FILENAMES = new Set([
|
|
46
|
+
'.env',
|
|
47
|
+
'.gitignore',
|
|
48
|
+
'dockerfile',
|
|
49
|
+
'makefile',
|
|
50
|
+
]);
|
|
51
|
+
const SPREADSHEET_EXTENSIONS = new Set(['xlsx', 'xls', 'xlsm', 'csv']);
|
|
52
|
+
const DOCX_EXTENSIONS = new Set(['docx']);
|
|
53
|
+
const LEGACY_DOC_EXTENSIONS = new Set(['doc']);
|
|
54
|
+
const PDF_EXTENSIONS = new Set(['pdf']);
|
|
55
|
+
const PPTX_EXTENSIONS = new Set(['pptx']);
|
|
56
|
+
const RTF_EXTENSIONS = new Set(['rtf']);
|
|
57
|
+
const EML_EXTENSIONS = new Set(['eml']);
|
|
58
|
+
const ZIP_EXTENSIONS = new Set(['zip']);
|
|
59
|
+
const HTML_EXTENSIONS = new Set(['html', 'htm']);
|
|
60
|
+
const IMAGE_EXTENSIONS = new Set(['png', 'jpg', 'jpeg', 'webp', 'gif']);
|
|
61
|
+
const AUDIO_EXTENSIONS = new Set(['mp3', 'mpeg', 'mpga', 'm4a', 'wav', 'webm']);
|
|
62
|
+
const VIDEO_EXTENSIONS = new Set(['mp4', 'mpeg', 'webm']);
|
|
63
|
+
const IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
|
|
64
|
+
const AUDIO_MEDIA_TYPES = new Set([
|
|
65
|
+
'audio/mpeg',
|
|
66
|
+
'audio/mp4',
|
|
67
|
+
'audio/mpga',
|
|
68
|
+
'audio/x-m4a',
|
|
69
|
+
'audio/wav',
|
|
70
|
+
'audio/x-wav',
|
|
71
|
+
'audio/webm',
|
|
72
|
+
]);
|
|
73
|
+
const VIDEO_MEDIA_TYPES = new Set(['video/mp4', 'video/mpeg', 'video/webm']);
|
|
74
|
+
function lowerTrim(value) {
|
|
75
|
+
return (value ?? '').trim().toLowerCase();
|
|
76
|
+
}
|
|
77
|
+
export function getFilenameExtension(filename) {
|
|
78
|
+
const lower = lowerTrim(filename);
|
|
79
|
+
const slashIndex = Math.max(lower.lastIndexOf('/'), lower.lastIndexOf('\\'));
|
|
80
|
+
const basename = slashIndex >= 0 ? lower.slice(slashIndex + 1) : lower;
|
|
81
|
+
const dotIndex = basename.lastIndexOf('.');
|
|
82
|
+
if (dotIndex <= 0 || dotIndex === basename.length - 1) {
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
return basename.slice(dotIndex + 1);
|
|
86
|
+
}
|
|
87
|
+
function getBasename(filename) {
|
|
88
|
+
const lower = lowerTrim(filename);
|
|
89
|
+
const slashIndex = Math.max(lower.lastIndexOf('/'), lower.lastIndexOf('\\'));
|
|
90
|
+
return slashIndex >= 0 ? lower.slice(slashIndex + 1) : lower;
|
|
91
|
+
}
|
|
92
|
+
export function getContentFileCapability(input) {
|
|
93
|
+
const mediaType = lowerTrim(input.mediaType);
|
|
94
|
+
const basename = getBasename(input.filename);
|
|
95
|
+
const extension = getFilenameExtension(input.filename);
|
|
96
|
+
const hasTypedMedia = IMAGE_MEDIA_TYPES.has(mediaType)
|
|
97
|
+
|| VIDEO_MEDIA_TYPES.has(mediaType)
|
|
98
|
+
|| AUDIO_MEDIA_TYPES.has(mediaType);
|
|
99
|
+
if (mediaType === 'text/html' || HTML_EXTENSIONS.has(extension)) {
|
|
100
|
+
return { mode: 'html', isTextLike: true, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
101
|
+
}
|
|
102
|
+
if (IMAGE_MEDIA_TYPES.has(mediaType) || (!hasTypedMedia && IMAGE_EXTENSIONS.has(extension))) {
|
|
103
|
+
return { mode: 'image', isTextLike: false, canRenderPages: true, canPreviewManifest: false, supported: true };
|
|
104
|
+
}
|
|
105
|
+
if (VIDEO_MEDIA_TYPES.has(mediaType) || (!hasTypedMedia && VIDEO_EXTENSIONS.has(extension))) {
|
|
106
|
+
return { mode: 'video', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
107
|
+
}
|
|
108
|
+
if (AUDIO_MEDIA_TYPES.has(mediaType) || (!hasTypedMedia && AUDIO_EXTENSIONS.has(extension))) {
|
|
109
|
+
return { mode: 'audio', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
110
|
+
}
|
|
111
|
+
if (mediaType.includes('spreadsheet')
|
|
112
|
+
|| mediaType.includes('excel')
|
|
113
|
+
|| SPREADSHEET_EXTENSIONS.has(extension)) {
|
|
114
|
+
return { mode: 'spreadsheet', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
115
|
+
}
|
|
116
|
+
if (mediaType.includes('wordprocessingml') || DOCX_EXTENSIONS.has(extension)) {
|
|
117
|
+
return { mode: 'docx', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
118
|
+
}
|
|
119
|
+
if (mediaType === 'application/msword' || LEGACY_DOC_EXTENSIONS.has(extension)) {
|
|
120
|
+
return {
|
|
121
|
+
mode: 'unsupported',
|
|
122
|
+
isTextLike: false,
|
|
123
|
+
canRenderPages: false,
|
|
124
|
+
canPreviewManifest: false,
|
|
125
|
+
supported: false,
|
|
126
|
+
reason: 'Legacy .doc (Word 97-2003) is not supported. Convert it to .docx or PDF and re-upload.',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (mediaType === 'application/pdf' || PDF_EXTENSIONS.has(extension)) {
|
|
130
|
+
return { mode: 'pdf', isTextLike: false, canRenderPages: true, canPreviewManifest: false, supported: true };
|
|
131
|
+
}
|
|
132
|
+
if (mediaType.includes('presentationml') || PPTX_EXTENSIONS.has(extension)) {
|
|
133
|
+
return { mode: 'pptx', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
134
|
+
}
|
|
135
|
+
if (mediaType === 'application/rtf' || mediaType === 'text/rtf' || RTF_EXTENSIONS.has(extension)) {
|
|
136
|
+
return { mode: 'rtf', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
137
|
+
}
|
|
138
|
+
if (mediaType === 'message/rfc822' || EML_EXTENSIONS.has(extension)) {
|
|
139
|
+
return { mode: 'eml', isTextLike: false, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
140
|
+
}
|
|
141
|
+
if (mediaType === 'application/zip'
|
|
142
|
+
|| mediaType === 'application/x-zip-compressed'
|
|
143
|
+
|| ZIP_EXTENSIONS.has(extension)) {
|
|
144
|
+
return { mode: 'zip_manifest', isTextLike: false, canRenderPages: false, canPreviewManifest: true, supported: true };
|
|
145
|
+
}
|
|
146
|
+
if (mediaType.startsWith('text/') || TEXT_EXTENSIONS.has(extension) || TEXT_FILENAMES.has(basename)) {
|
|
147
|
+
return { mode: 'plain_text', isTextLike: true, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
148
|
+
}
|
|
149
|
+
if (mediaType === 'application/json'
|
|
150
|
+
|| mediaType === 'application/xml'
|
|
151
|
+
|| mediaType === 'application/x-yaml'
|
|
152
|
+
|| mediaType === 'application/yaml') {
|
|
153
|
+
return { mode: 'plain_text', isTextLike: true, canRenderPages: false, canPreviewManifest: false, supported: true };
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
mode: 'unsupported',
|
|
157
|
+
isTextLike: false,
|
|
158
|
+
canRenderPages: false,
|
|
159
|
+
canPreviewManifest: false,
|
|
160
|
+
supported: false,
|
|
161
|
+
reason: `Unsupported file type for "${input.filename}" (mediaType="${input.mediaType}"). Upload text, HTML, PDF, DOCX, spreadsheet, presentation, image, audio, video, EML, or ZIP content.`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=content-type-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-type-capabilities.js","sourceRoot":"","sources":["../../../../../../src/services/content-normalization/content-type-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { ContentExtractionMode } from './content-type-capabilities.js';
|
|
2
|
+
export declare const CONTENT_NORMALIZER_VERSION = "stacklink-content-v1";
|
|
3
|
+
export type NormalizedContentKind = ContentExtractionMode;
|
|
4
|
+
export type ContentLocator = {
|
|
5
|
+
kind: 'file';
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'text_lines';
|
|
8
|
+
startLine: number;
|
|
9
|
+
endLine?: number;
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'pdf_page';
|
|
12
|
+
pageNumber: number;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'pdf_pages';
|
|
15
|
+
startPage: number;
|
|
16
|
+
endPage: number;
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'spreadsheet_sheet';
|
|
19
|
+
sheetName: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'spreadsheet_range';
|
|
22
|
+
sheetName: string;
|
|
23
|
+
startRow: number;
|
|
24
|
+
endRow?: number;
|
|
25
|
+
startColumn?: string;
|
|
26
|
+
endColumn?: string;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'docx_paragraph';
|
|
29
|
+
paragraphIndex: number;
|
|
30
|
+
} | {
|
|
31
|
+
kind: 'docx_table';
|
|
32
|
+
tableIndex: number;
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'docx_section';
|
|
35
|
+
sectionIndex: number;
|
|
36
|
+
heading?: string;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'pptx_slide';
|
|
39
|
+
slideNumber: number;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'eml_part';
|
|
42
|
+
part: 'headers' | 'body' | 'attachment_manifest';
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'html_section';
|
|
45
|
+
heading?: string;
|
|
46
|
+
sectionIndex: number;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'image_region';
|
|
49
|
+
pageNumber?: number;
|
|
50
|
+
description?: string;
|
|
51
|
+
} | {
|
|
52
|
+
kind: 'media_segment';
|
|
53
|
+
startSeconds: number;
|
|
54
|
+
endSeconds: number;
|
|
55
|
+
speaker?: string;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'zip_entry';
|
|
58
|
+
path: string;
|
|
59
|
+
};
|
|
60
|
+
export interface ContentNormalizationWarning {
|
|
61
|
+
code: string;
|
|
62
|
+
message: string;
|
|
63
|
+
locator?: ContentLocator;
|
|
64
|
+
}
|
|
65
|
+
export interface ContentLineSpan {
|
|
66
|
+
lineNumber: number;
|
|
67
|
+
startOffset: number;
|
|
68
|
+
endOffset: number;
|
|
69
|
+
}
|
|
70
|
+
export interface NormalizedPage {
|
|
71
|
+
pageNumber: number;
|
|
72
|
+
text: string;
|
|
73
|
+
charStart?: number;
|
|
74
|
+
charEnd?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface NormalizedSpreadsheetSheet {
|
|
77
|
+
name: string;
|
|
78
|
+
rowCount?: number;
|
|
79
|
+
columnCount?: number;
|
|
80
|
+
range?: string;
|
|
81
|
+
previewStartRow?: number;
|
|
82
|
+
previewEndRow?: number;
|
|
83
|
+
previewStartColumn?: string;
|
|
84
|
+
previewEndColumn?: string;
|
|
85
|
+
previewCsv: string;
|
|
86
|
+
previewCells?: string[][];
|
|
87
|
+
truncatedRows: boolean;
|
|
88
|
+
charStart?: number;
|
|
89
|
+
charEnd?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface NormalizedDocxParagraph {
|
|
92
|
+
paragraphIndex: number;
|
|
93
|
+
text: string;
|
|
94
|
+
charStart?: number;
|
|
95
|
+
charEnd?: number;
|
|
96
|
+
}
|
|
97
|
+
export interface NormalizedDocxTable {
|
|
98
|
+
tableIndex: number;
|
|
99
|
+
text: string;
|
|
100
|
+
}
|
|
101
|
+
export interface NormalizedDocxSection {
|
|
102
|
+
sectionIndex: number;
|
|
103
|
+
heading?: string;
|
|
104
|
+
text: string;
|
|
105
|
+
charStart?: number;
|
|
106
|
+
charEnd?: number;
|
|
107
|
+
}
|
|
108
|
+
export interface NormalizedPptxSlide {
|
|
109
|
+
slideNumber: number;
|
|
110
|
+
text: string;
|
|
111
|
+
notesText?: string;
|
|
112
|
+
charStart?: number;
|
|
113
|
+
charEnd?: number;
|
|
114
|
+
}
|
|
115
|
+
export interface NormalizedEmail {
|
|
116
|
+
headers: Record<string, string>;
|
|
117
|
+
bodyText: string;
|
|
118
|
+
attachmentManifest: string[];
|
|
119
|
+
}
|
|
120
|
+
export interface NormalizedZipEntry {
|
|
121
|
+
path: string;
|
|
122
|
+
directory: boolean;
|
|
123
|
+
uncompressedSize?: number;
|
|
124
|
+
}
|
|
125
|
+
export interface NormalizedHtmlSection {
|
|
126
|
+
sectionIndex: number;
|
|
127
|
+
heading?: string;
|
|
128
|
+
text: string;
|
|
129
|
+
charStart: number;
|
|
130
|
+
charEnd: number;
|
|
131
|
+
}
|
|
132
|
+
export interface NormalizedVisualContent {
|
|
133
|
+
pageNumber?: number;
|
|
134
|
+
text: string;
|
|
135
|
+
description?: string;
|
|
136
|
+
charStart?: number;
|
|
137
|
+
charEnd?: number;
|
|
138
|
+
}
|
|
139
|
+
export interface NormalizedMediaSegment {
|
|
140
|
+
startSeconds: number;
|
|
141
|
+
endSeconds: number;
|
|
142
|
+
text: string;
|
|
143
|
+
speaker?: string;
|
|
144
|
+
charStart?: number;
|
|
145
|
+
charEnd?: number;
|
|
146
|
+
}
|
|
147
|
+
export interface NormalizedContentArtifact {
|
|
148
|
+
kind: NormalizedContentKind;
|
|
149
|
+
filename: string;
|
|
150
|
+
mediaType: string;
|
|
151
|
+
extractorVersion: typeof CONTENT_NORMALIZER_VERSION;
|
|
152
|
+
plainText: string;
|
|
153
|
+
lineMap?: ContentLineSpan[];
|
|
154
|
+
pages?: NormalizedPage[];
|
|
155
|
+
sheets?: NormalizedSpreadsheetSheet[];
|
|
156
|
+
docx?: {
|
|
157
|
+
paragraphs: NormalizedDocxParagraph[];
|
|
158
|
+
tables: NormalizedDocxTable[];
|
|
159
|
+
sections: NormalizedDocxSection[];
|
|
160
|
+
};
|
|
161
|
+
slides?: NormalizedPptxSlide[];
|
|
162
|
+
email?: NormalizedEmail;
|
|
163
|
+
htmlSections?: NormalizedHtmlSection[];
|
|
164
|
+
visuals?: NormalizedVisualContent[];
|
|
165
|
+
mediaSegments?: NormalizedMediaSegment[];
|
|
166
|
+
durationSeconds?: number;
|
|
167
|
+
zipManifest?: NormalizedZipEntry[];
|
|
168
|
+
warnings: ContentNormalizationWarning[];
|
|
169
|
+
unsupportedReason?: string;
|
|
170
|
+
}
|
|
171
|
+
export declare function compactNormalizedContentStructure(artifact: NormalizedContentArtifact): {
|
|
172
|
+
kind: ContentExtractionMode;
|
|
173
|
+
pages: {
|
|
174
|
+
pageNumber: number;
|
|
175
|
+
charStart: number | null;
|
|
176
|
+
charEnd: number | null;
|
|
177
|
+
}[];
|
|
178
|
+
sheets: {
|
|
179
|
+
name: string;
|
|
180
|
+
range: string | null;
|
|
181
|
+
rowCount: number | null;
|
|
182
|
+
columnCount: number | null;
|
|
183
|
+
charStart: number | null;
|
|
184
|
+
charEnd: number | null;
|
|
185
|
+
previewStartRow: number | null;
|
|
186
|
+
previewEndRow: number | null;
|
|
187
|
+
previewStartColumn: string | null;
|
|
188
|
+
previewEndColumn: string | null;
|
|
189
|
+
}[];
|
|
190
|
+
docxParagraphs: {
|
|
191
|
+
paragraphIndex: number;
|
|
192
|
+
charStart: number | null;
|
|
193
|
+
charEnd: number | null;
|
|
194
|
+
}[];
|
|
195
|
+
docxSections: {
|
|
196
|
+
sectionIndex: number;
|
|
197
|
+
heading: string | null;
|
|
198
|
+
charStart: number | null;
|
|
199
|
+
charEnd: number | null;
|
|
200
|
+
}[];
|
|
201
|
+
slides: {
|
|
202
|
+
slideNumber: number;
|
|
203
|
+
charStart: number | null;
|
|
204
|
+
charEnd: number | null;
|
|
205
|
+
}[];
|
|
206
|
+
htmlSections: {
|
|
207
|
+
sectionIndex: number;
|
|
208
|
+
heading: string | null;
|
|
209
|
+
charStart: number;
|
|
210
|
+
charEnd: number;
|
|
211
|
+
}[];
|
|
212
|
+
mediaSegments: {
|
|
213
|
+
startSeconds: number;
|
|
214
|
+
endSeconds: number;
|
|
215
|
+
speaker: string | null;
|
|
216
|
+
charStart: number | null;
|
|
217
|
+
charEnd: number | null;
|
|
218
|
+
}[];
|
|
219
|
+
visuals: {
|
|
220
|
+
pageNumber: number | null;
|
|
221
|
+
description: string | null;
|
|
222
|
+
charStart: number | null;
|
|
223
|
+
charEnd: number | null;
|
|
224
|
+
}[];
|
|
225
|
+
durationSeconds: number | null;
|
|
226
|
+
warnings: ContentNormalizationWarning[];
|
|
227
|
+
};
|
|
228
|
+
export declare function buildContentLineMap(text: string): ContentLineSpan[];
|
|
229
|
+
export declare function formatContentLocator(locator: ContentLocator): string;
|
|
230
|
+
//# sourceMappingURL=normalized-content-artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-content-artifact.d.ts","sourceRoot":"","sources":["../../../../../../src/services/content-normalization/normalized-content-artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
export const CONTENT_NORMALIZER_VERSION = 'stacklink-content-v1';
|
|
2
|
+
export function compactNormalizedContentStructure(artifact) {
|
|
3
|
+
return {
|
|
4
|
+
kind: artifact.kind,
|
|
5
|
+
pages: artifact.pages?.map((page) => ({
|
|
6
|
+
pageNumber: page.pageNumber,
|
|
7
|
+
charStart: page.charStart ?? null,
|
|
8
|
+
charEnd: page.charEnd ?? null,
|
|
9
|
+
})) ?? [],
|
|
10
|
+
sheets: artifact.sheets?.map((sheet) => ({
|
|
11
|
+
name: sheet.name,
|
|
12
|
+
range: sheet.range ?? null,
|
|
13
|
+
rowCount: sheet.rowCount ?? null,
|
|
14
|
+
columnCount: sheet.columnCount ?? null,
|
|
15
|
+
charStart: sheet.charStart ?? null,
|
|
16
|
+
charEnd: sheet.charEnd ?? null,
|
|
17
|
+
previewStartRow: sheet.previewStartRow ?? null,
|
|
18
|
+
previewEndRow: sheet.previewEndRow ?? null,
|
|
19
|
+
previewStartColumn: sheet.previewStartColumn ?? null,
|
|
20
|
+
previewEndColumn: sheet.previewEndColumn ?? null,
|
|
21
|
+
})) ?? [],
|
|
22
|
+
docxParagraphs: artifact.docx?.paragraphs.map((paragraph) => ({
|
|
23
|
+
paragraphIndex: paragraph.paragraphIndex,
|
|
24
|
+
charStart: paragraph.charStart ?? null,
|
|
25
|
+
charEnd: paragraph.charEnd ?? null,
|
|
26
|
+
})) ?? [],
|
|
27
|
+
docxSections: artifact.docx?.sections.map((section) => ({
|
|
28
|
+
sectionIndex: section.sectionIndex,
|
|
29
|
+
heading: section.heading ?? null,
|
|
30
|
+
charStart: section.charStart ?? null,
|
|
31
|
+
charEnd: section.charEnd ?? null,
|
|
32
|
+
})) ?? [],
|
|
33
|
+
slides: artifact.slides?.map((slide) => ({
|
|
34
|
+
slideNumber: slide.slideNumber,
|
|
35
|
+
charStart: slide.charStart ?? null,
|
|
36
|
+
charEnd: slide.charEnd ?? null,
|
|
37
|
+
})) ?? [],
|
|
38
|
+
htmlSections: artifact.htmlSections?.map((section) => ({
|
|
39
|
+
sectionIndex: section.sectionIndex,
|
|
40
|
+
heading: section.heading ?? null,
|
|
41
|
+
charStart: section.charStart,
|
|
42
|
+
charEnd: section.charEnd,
|
|
43
|
+
})) ?? [],
|
|
44
|
+
mediaSegments: artifact.mediaSegments?.map((segment) => ({
|
|
45
|
+
startSeconds: segment.startSeconds,
|
|
46
|
+
endSeconds: segment.endSeconds,
|
|
47
|
+
speaker: segment.speaker ?? null,
|
|
48
|
+
charStart: segment.charStart ?? null,
|
|
49
|
+
charEnd: segment.charEnd ?? null,
|
|
50
|
+
})) ?? [],
|
|
51
|
+
visuals: artifact.visuals?.map((visual) => ({
|
|
52
|
+
pageNumber: visual.pageNumber ?? null,
|
|
53
|
+
description: visual.description ?? null,
|
|
54
|
+
charStart: visual.charStart ?? null,
|
|
55
|
+
charEnd: visual.charEnd ?? null,
|
|
56
|
+
})) ?? [],
|
|
57
|
+
durationSeconds: artifact.durationSeconds ?? null,
|
|
58
|
+
warnings: artifact.warnings,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function buildContentLineMap(text) {
|
|
62
|
+
if (text.length === 0) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const spans = [];
|
|
66
|
+
let lineNumber = 1;
|
|
67
|
+
let startOffset = 0;
|
|
68
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
69
|
+
const char = text[index];
|
|
70
|
+
if (char !== '\n' && char !== '\r') {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
spans.push({
|
|
74
|
+
lineNumber,
|
|
75
|
+
startOffset,
|
|
76
|
+
endOffset: index,
|
|
77
|
+
});
|
|
78
|
+
lineNumber += 1;
|
|
79
|
+
if (char === '\r' && text[index + 1] === '\n') {
|
|
80
|
+
index += 1;
|
|
81
|
+
}
|
|
82
|
+
startOffset = index + 1;
|
|
83
|
+
}
|
|
84
|
+
if (startOffset < text.length) {
|
|
85
|
+
spans.push({
|
|
86
|
+
lineNumber,
|
|
87
|
+
startOffset,
|
|
88
|
+
endOffset: text.length,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return spans;
|
|
92
|
+
}
|
|
93
|
+
export function formatContentLocator(locator) {
|
|
94
|
+
switch (locator.kind) {
|
|
95
|
+
case 'file':
|
|
96
|
+
return 'file';
|
|
97
|
+
case 'text_lines':
|
|
98
|
+
return locator.endLine && locator.endLine !== locator.startLine
|
|
99
|
+
? `lines ${locator.startLine}-${locator.endLine}`
|
|
100
|
+
: `line ${locator.startLine}`;
|
|
101
|
+
case 'pdf_page':
|
|
102
|
+
return `page ${locator.pageNumber}`;
|
|
103
|
+
case 'pdf_pages':
|
|
104
|
+
return locator.startPage === locator.endPage
|
|
105
|
+
? `page ${locator.startPage}`
|
|
106
|
+
: `pages ${locator.startPage}-${locator.endPage}`;
|
|
107
|
+
case 'spreadsheet_sheet':
|
|
108
|
+
return `sheet ${locator.sheetName}`;
|
|
109
|
+
case 'spreadsheet_range': {
|
|
110
|
+
const rows = locator.endRow && locator.endRow !== locator.startRow
|
|
111
|
+
? `rows ${locator.startRow}-${locator.endRow}`
|
|
112
|
+
: `row ${locator.startRow}`;
|
|
113
|
+
if (!locator.startColumn) {
|
|
114
|
+
return `sheet ${locator.sheetName}, ${rows}`;
|
|
115
|
+
}
|
|
116
|
+
const columns = locator.endColumn && locator.endColumn !== locator.startColumn
|
|
117
|
+
? `columns ${locator.startColumn}-${locator.endColumn}`
|
|
118
|
+
: `column ${locator.startColumn}`;
|
|
119
|
+
return `sheet ${locator.sheetName}, ${rows}, ${columns}`;
|
|
120
|
+
}
|
|
121
|
+
case 'docx_paragraph':
|
|
122
|
+
return `paragraph ${locator.paragraphIndex}`;
|
|
123
|
+
case 'docx_table':
|
|
124
|
+
return `table ${locator.tableIndex}`;
|
|
125
|
+
case 'docx_section':
|
|
126
|
+
return locator.heading
|
|
127
|
+
? `section ${locator.sectionIndex}: ${locator.heading}`
|
|
128
|
+
: `section ${locator.sectionIndex}`;
|
|
129
|
+
case 'pptx_slide':
|
|
130
|
+
return `slide ${locator.slideNumber}`;
|
|
131
|
+
case 'eml_part':
|
|
132
|
+
return `email ${locator.part}`;
|
|
133
|
+
case 'html_section':
|
|
134
|
+
return locator.heading
|
|
135
|
+
? `section ${locator.sectionIndex}: ${locator.heading}`
|
|
136
|
+
: `section ${locator.sectionIndex}`;
|
|
137
|
+
case 'image_region':
|
|
138
|
+
return locator.pageNumber ? `image on page ${locator.pageNumber}` : 'image';
|
|
139
|
+
case 'media_segment': {
|
|
140
|
+
const range = `${locator.startSeconds.toFixed(2)}s-${locator.endSeconds.toFixed(2)}s`;
|
|
141
|
+
return locator.speaker ? `${locator.speaker}, ${range}` : range;
|
|
142
|
+
}
|
|
143
|
+
case 'zip_entry':
|
|
144
|
+
return `zip entry ${locator.path}`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=normalized-content-artifact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-content-artifact.js","sourceRoot":"","sources":["../../../../../../src/services/content-normalization/normalized-content-artifact.ts"],"names":[],"mappings":"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"}
|