studiograph 1.3.48-next.77 → 1.3.48-next.78
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/agent/prompts/entity-types-section.d.ts +8 -0
- package/dist/agent/prompts/entity-types-section.js +27 -2
- package/dist/agent/prompts/entity-types-section.js.map +1 -1
- package/dist/agent/tools/folder-tools.js +18 -7
- package/dist/agent/tools/folder-tools.js.map +1 -1
- package/dist/agent/tools/graph-tools.js +65 -9
- package/dist/agent/tools/graph-tools.js.map +1 -1
- package/dist/cli/commands/index.js +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/core/entity-types-catalog.js +2 -0
- package/dist/core/entity-types-catalog.js.map +1 -1
- package/dist/core/graph.d.ts +106 -2
- package/dist/core/graph.js +281 -10
- package/dist/core/graph.js.map +1 -1
- package/dist/core/validation.d.ts +85 -4
- package/dist/core/validation.js +34 -3
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workspace-manager.js +3 -1
- package/dist/core/workspace-manager.js.map +1 -1
- package/dist/mcp/tools.js +6 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/server/routes/asset-api.js +29 -7
- package/dist/server/routes/asset-api.js.map +1 -1
- package/dist/server/routes/graph-api.js +256 -45
- package/dist/server/routes/graph-api.js.map +1 -1
- package/dist/services/asset-upload-service.d.ts +53 -0
- package/dist/services/asset-upload-service.js +199 -0
- package/dist/services/asset-upload-service.js.map +1 -0
- package/dist/services/assets/base.d.ts +15 -0
- package/dist/services/assets/base.js +63 -0
- package/dist/services/assets/base.js.map +1 -1
- package/dist/services/assets/index.d.ts +17 -0
- package/dist/services/assets/index.js +17 -0
- package/dist/services/assets/index.js.map +1 -1
- package/dist/services/import-service.d.ts +20 -1
- package/dist/services/import-service.js +190 -35
- package/dist/services/import-service.js.map +1 -1
- package/dist/services/vector-service.d.ts +20 -2
- package/dist/services/vector-service.js +46 -5
- package/dist/services/vector-service.js.map +1 -1
- package/dist/web/_app/immutable/assets/0.C-U08O83.css +2 -0
- package/dist/web/_app/immutable/assets/2.D4UyD6ef.css +1 -0
- package/dist/web/_app/immutable/assets/{4.DMWmOCtr.css → 4.CMuW9ER9.css} +1 -1
- package/dist/web/_app/immutable/chunks/{B2MhjR4K.js → B2dQ_HtA.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CbChB7Sk.js → BVG-59G_.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CcKbicMh.js → BYMboxS1.js} +1 -1
- package/dist/web/_app/immutable/chunks/BcnRmtrP2.js +1 -0
- package/dist/web/_app/immutable/chunks/Bi49oCkW.js +1 -0
- package/dist/web/_app/immutable/chunks/{Bdr7RoI1.js → BkG8IWXL.js} +1 -1
- package/dist/web/_app/immutable/chunks/BljXMCRN2.js +1 -0
- package/dist/web/_app/immutable/chunks/C1eadUOT.js +1 -0
- package/dist/web/_app/immutable/chunks/{DgmiIA_n.js → C7ZXf1Ei.js} +1 -1
- package/dist/web/_app/immutable/chunks/{he436Z7O.js → C9fPdp9e.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DYw6aCAA2.js → CABEPnKi2.js} +1 -1
- package/dist/web/_app/immutable/chunks/{C4o1fi_w.js → CFFhRHgg.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DB38-mVP.js → CMv-UMQD.js} +1 -1
- package/dist/web/_app/immutable/chunks/{C-MyzyGb.js → CO4LsWNt.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CQPEqD942.js → CXGYcrGq2.js} +1 -1
- package/dist/web/_app/immutable/chunks/ClxmxcVF.js +1 -0
- package/dist/web/_app/immutable/chunks/Co7pw0iy.js +1 -0
- package/dist/web/_app/immutable/chunks/Cu_13EXg.js +8 -0
- package/dist/web/_app/immutable/chunks/{DxmEO50C.js → Cy1yuSCN.js} +1 -1
- package/dist/web/_app/immutable/chunks/{_VOdw24P.js → CzT0T6FJ.js} +1 -1
- package/dist/web/_app/immutable/chunks/{Bl_v2-kF.js → D1AVtJaJ.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CCXj03fW.js → D6ObqpSX.js} +1 -1
- package/dist/web/_app/immutable/chunks/DBMIhZt72.js +1 -0
- package/dist/web/_app/immutable/chunks/{CUVp7kiS.js → DFE7ldAP.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DAQ0s979.js → DKDDh_Qn.js} +1 -1
- package/dist/web/_app/immutable/chunks/DNneJjJN.js +1 -0
- package/dist/web/_app/immutable/chunks/{r4OgPVQH.js → DOastlFY.js} +1 -1
- package/dist/web/_app/immutable/chunks/DPHJu-Bj.js +5 -0
- package/dist/web/_app/immutable/chunks/{D00taIEV.js → DQKT4stP.js} +1 -1
- package/dist/web/_app/immutable/chunks/DQe4a6BS.js +1 -0
- package/dist/web/_app/immutable/chunks/{Ce2P7b-X.js → DQpUZZbo.js} +1 -1
- package/dist/web/_app/immutable/chunks/DVxZLm0W.js +2 -0
- package/dist/web/_app/immutable/chunks/{BWPBe1t_.js → DYbq0sax.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CjDvXCxV.js → Ddr2JLfY.js} +1 -1
- package/dist/web/_app/immutable/chunks/DeQkDfnZ.js +1 -0
- package/dist/web/_app/immutable/chunks/Df-4W2cE2.js +2 -0
- package/dist/web/_app/immutable/chunks/{e9oCENPh.js → Dfu55H0O.js} +1 -1
- package/dist/web/_app/immutable/chunks/{7tAv3Zey.js → DhERF52D.js} +1 -1
- package/dist/web/_app/immutable/chunks/{C2UI_KQ1.js → Dt_-Caf8.js} +1 -1
- package/dist/web/_app/immutable/chunks/DxS997Bi.js +1 -0
- package/dist/web/_app/immutable/chunks/{ChPgixWE.js → P-vv4BQi2.js} +1 -1
- package/dist/web/_app/immutable/chunks/{Fgrpvl6l.js → UqWZFiDw.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DPXpm86N.js → ZhCPwTv_.js} +1 -1
- package/dist/web/_app/immutable/chunks/anxNIaXZ.js +1 -0
- package/dist/web/_app/immutable/chunks/{DuaBraCb.js → dTznEU-N.js} +4 -4
- package/dist/web/_app/immutable/chunks/{wY5DYt0W.js → iqOW8ttz.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DQ86iS7p.js → j7kuJOP8.js} +1 -1
- package/dist/web/_app/immutable/chunks/{PySYLKbq.js → mbVGz96e.js} +1 -1
- package/dist/web/_app/immutable/chunks/rmFsC7j32.js +1 -0
- package/dist/web/_app/immutable/chunks/{CLBsX7ax.js → sdhQg9Jq.js} +1 -1
- package/dist/web/_app/immutable/entry/{app.DN1UaKFY.js → app.BUM2MbTk.js} +2 -2
- package/dist/web/_app/immutable/entry/start.BObvxb93.js +1 -0
- package/dist/web/_app/immutable/nodes/{0.B4kzM-PX.js → 0.BMXqKYhl.js} +2 -2
- package/dist/web/_app/immutable/nodes/{1.BFSzcxgp.js → 1.QaGjZyIl.js} +1 -1
- package/dist/web/_app/immutable/nodes/10.F1nNX_z9.js +1 -0
- package/dist/web/_app/immutable/nodes/{11.DL-1uGFV.js → 11.BfZsU6Vh.js} +1 -1
- package/dist/web/_app/immutable/nodes/{12.BaxGfUVt.js → 12.C5hRguPI.js} +1 -1
- package/dist/web/_app/immutable/nodes/{13.DnuNEtfe.js → 13.BqOI1wyC.js} +1 -1
- package/dist/web/_app/immutable/nodes/2.CCWtRh8O.js +130 -0
- package/dist/web/_app/immutable/nodes/3.DDPCGvvJ.js +2 -0
- package/dist/web/_app/immutable/nodes/4.BhR6-Pss.js +11 -0
- package/dist/web/_app/immutable/nodes/5.DkAirE7a.js +1 -0
- package/dist/web/_app/immutable/nodes/{6.CX3g0XIN.js → 6.CF014BWC.js} +1 -1
- package/dist/web/_app/immutable/nodes/{7.Crv4XWO2.js → 7.B6NRypBk.js} +1 -1
- package/dist/web/_app/immutable/nodes/{8.2aJyTu75.js → 8.B4moM7KQ.js} +1 -1
- package/dist/web/_app/immutable/nodes/{9.lbjYEmw7.js → 9.DVcGpCuy.js} +1 -1
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +16 -16
- package/package.json +1 -1
- package/dist/web/_app/immutable/assets/0.DNW-Nd5m.css +0 -2
- package/dist/web/_app/immutable/assets/2.R677OFd1.css +0 -1
- package/dist/web/_app/immutable/chunks/-jdP5JqO.js +0 -5
- package/dist/web/_app/immutable/chunks/9lbhMmvd.js +0 -1
- package/dist/web/_app/immutable/chunks/B-z4a3eR.js +0 -1
- package/dist/web/_app/immutable/chunks/BDCOho_G.js +0 -1
- package/dist/web/_app/immutable/chunks/BDgHxF8Y.js +0 -8
- package/dist/web/_app/immutable/chunks/BynMq22o.js +0 -1
- package/dist/web/_app/immutable/chunks/C7o6G8Ak2.js +0 -1
- package/dist/web/_app/immutable/chunks/CDDIrInV2.js +0 -2
- package/dist/web/_app/immutable/chunks/CHRfvdkq2.js +0 -1
- package/dist/web/_app/immutable/chunks/CIwAM5f0.js +0 -2
- package/dist/web/_app/immutable/chunks/CSWuNPeq.js +0 -1
- package/dist/web/_app/immutable/chunks/CTFOXiYo.js +0 -1
- package/dist/web/_app/immutable/chunks/CXYTfe_P2.js +0 -1
- package/dist/web/_app/immutable/chunks/CbCiZ2mS2.js +0 -1
- package/dist/web/_app/immutable/chunks/Cjw6nw-K.js +0 -1
- package/dist/web/_app/immutable/chunks/DDzRa0WU.js +0 -1
- package/dist/web/_app/immutable/chunks/DhikmMsg2.js +0 -1
- package/dist/web/_app/immutable/entry/start.B318VXx4.js +0 -1
- package/dist/web/_app/immutable/nodes/10.Bj0EQP8T.js +0 -1
- package/dist/web/_app/immutable/nodes/2.Gew8dws6.js +0 -130
- package/dist/web/_app/immutable/nodes/3.CWR6Ua2L.js +0 -2
- package/dist/web/_app/immutable/nodes/4.ArX8Iovt.js +0 -11
- package/dist/web/_app/immutable/nodes/5.Cg8S9qNq.js +0 -1
- /package/dist/web/_app/immutable/chunks/{D5VdX2NC.js → CQwUl_3l.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{EdMwt2az.js → CvZmtMIf.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{CUyyAHze.js → Dn6yJ9ZG.js} +0 -0
- /package/dist/web/_app/immutable/chunks/{DXeZwJCC2.js → rsjIo1y12.js} +0 -0
|
@@ -51,6 +51,69 @@ export function detectContentType(filename) {
|
|
|
51
51
|
const ext = filename.split('.').pop()?.toLowerCase() || '';
|
|
52
52
|
return CONTENT_TYPES[ext] || 'application/octet-stream';
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Map a filename to the high-level `asset_kind` written into the asset
|
|
56
|
+
* entity's frontmatter. Drives icon and viewer selection; coarser than
|
|
57
|
+
* MIME so the UI doesn't need to enumerate every format. The kind set
|
|
58
|
+
* is canonical in `ASSET_KINDS` in src/core/validation.ts.
|
|
59
|
+
*/
|
|
60
|
+
export function detectAssetKind(filename) {
|
|
61
|
+
const ext = filename.split('.').pop()?.toLowerCase() || '';
|
|
62
|
+
if (IMAGE_EXTS.has(ext))
|
|
63
|
+
return 'image';
|
|
64
|
+
if (VIDEO_EXTS.has(ext))
|
|
65
|
+
return 'video';
|
|
66
|
+
if (AUDIO_EXTS.has(ext))
|
|
67
|
+
return 'audio';
|
|
68
|
+
if (ext === 'pdf')
|
|
69
|
+
return 'pdf';
|
|
70
|
+
if (INDESIGN_EXTS.has(ext))
|
|
71
|
+
return 'indesign';
|
|
72
|
+
if (ext === 'sketch')
|
|
73
|
+
return 'sketch';
|
|
74
|
+
if (ext === 'psd')
|
|
75
|
+
return 'psd';
|
|
76
|
+
if (ext === 'ai')
|
|
77
|
+
return 'illustrator';
|
|
78
|
+
if (ext === 'fig')
|
|
79
|
+
return 'figma';
|
|
80
|
+
if (OFFICE_EXTS.has(ext))
|
|
81
|
+
return 'office';
|
|
82
|
+
if (ARCHIVE_EXTS.has(ext))
|
|
83
|
+
return 'archive';
|
|
84
|
+
return 'other';
|
|
85
|
+
}
|
|
86
|
+
// SVG is intentionally excluded — see docs/asset-architecture.md §security.
|
|
87
|
+
// Stored XSS risk: SVG can contain <script> and the GET /api/assets/* route
|
|
88
|
+
// serves files inline with `Content-Type: image/svg+xml`, which executes in
|
|
89
|
+
// the app origin. Users who need vector assets can paste source into a note
|
|
90
|
+
// or embed via the editor's per-entity attach (which also blocks SVG).
|
|
91
|
+
const IMAGE_EXTS = new Set(['jpg', 'jpeg', 'png', 'gif', 'webp', 'avif', 'heic']);
|
|
92
|
+
const VIDEO_EXTS = new Set(['mp4', 'mov', 'webm', 'avi', 'mkv', 'm4v']);
|
|
93
|
+
const AUDIO_EXTS = new Set(['mp3', 'wav', 'm4a', 'ogg', 'flac', 'aac']);
|
|
94
|
+
const INDESIGN_EXTS = new Set(['indd', 'idml']);
|
|
95
|
+
const OFFICE_EXTS = new Set(['docx', 'doc', 'xlsx', 'xls', 'pptx', 'ppt', 'key', 'pages', 'numbers']);
|
|
96
|
+
const ARCHIVE_EXTS = new Set(['zip', 'tar', 'gz', '7z', 'rar']);
|
|
97
|
+
/**
|
|
98
|
+
* Extension set the asset upload route accepts. Excludes the structured
|
|
99
|
+
* formats handled elsewhere (.md/.txt/.csv → direct write, .docx →
|
|
100
|
+
* mammoth workstream, .html → bookmark importer).
|
|
101
|
+
*/
|
|
102
|
+
export const ASSET_UPLOAD_EXTENSIONS = new Set([
|
|
103
|
+
...IMAGE_EXTS,
|
|
104
|
+
...VIDEO_EXTS,
|
|
105
|
+
...AUDIO_EXTS,
|
|
106
|
+
'pdf',
|
|
107
|
+
...INDESIGN_EXTS,
|
|
108
|
+
'sketch', 'psd', 'ai', 'fig',
|
|
109
|
+
// .docx is intentionally excluded — handled by the mammoth workstream.
|
|
110
|
+
'xlsx', 'xls', 'pptx', 'ppt', 'key', 'pages', 'numbers',
|
|
111
|
+
...ARCHIVE_EXTS,
|
|
112
|
+
]);
|
|
113
|
+
export function isAssetUploadExtension(filename) {
|
|
114
|
+
const ext = filename.split('.').pop()?.toLowerCase() || '';
|
|
115
|
+
return ASSET_UPLOAD_EXTENSIONS.has(ext);
|
|
116
|
+
}
|
|
54
117
|
/**
|
|
55
118
|
* Determine media type from content type
|
|
56
119
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/assets/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/assets/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,3 +39,20 @@ export declare class AssetService {
|
|
|
39
39
|
*/
|
|
40
40
|
getInfo(entityType: string, entityId: string, filename: string, keyPrefix?: string): Promise<AssetInfo | null>;
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert an `AssetInfo` returned by a backend into the URL stored in
|
|
44
|
+
* an entity's `asset_url` (or used as the `src` of an inline embed).
|
|
45
|
+
*
|
|
46
|
+
* R2 returns a fully-qualified `https://…` public URL; use it directly.
|
|
47
|
+
* Local backend returns either `file://…` or a relative path; rewrite to
|
|
48
|
+
* the workspace's HTTP serving route at `/api/assets/{type}/{id}/{file}`
|
|
49
|
+
* so the same URL works for the browser regardless of backend.
|
|
50
|
+
*
|
|
51
|
+
* Centralised here because three different call sites used to inline this
|
|
52
|
+
* ternary, and getting it wrong silently breaks image rendering.
|
|
53
|
+
*/
|
|
54
|
+
export declare function publicUrlFor(asset: {
|
|
55
|
+
url: string;
|
|
56
|
+
path: string;
|
|
57
|
+
filename: string;
|
|
58
|
+
}, entityType: string, entityId: string): string;
|
|
@@ -93,4 +93,21 @@ export class AssetService {
|
|
|
93
93
|
return assets.find(a => a.filename === filename) || null;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Convert an `AssetInfo` returned by a backend into the URL stored in
|
|
98
|
+
* an entity's `asset_url` (or used as the `src` of an inline embed).
|
|
99
|
+
*
|
|
100
|
+
* R2 returns a fully-qualified `https://…` public URL; use it directly.
|
|
101
|
+
* Local backend returns either `file://…` or a relative path; rewrite to
|
|
102
|
+
* the workspace's HTTP serving route at `/api/assets/{type}/{id}/{file}`
|
|
103
|
+
* so the same URL works for the browser regardless of backend.
|
|
104
|
+
*
|
|
105
|
+
* Centralised here because three different call sites used to inline this
|
|
106
|
+
* ternary, and getting it wrong silently breaks image rendering.
|
|
107
|
+
*/
|
|
108
|
+
export function publicUrlFor(asset, entityType, entityId) {
|
|
109
|
+
if (asset.url.startsWith('http'))
|
|
110
|
+
return asset.path; // R2 returns full URL in `path`
|
|
111
|
+
return `/api/assets/${entityType}/${entityId}/${asset.filename}`;
|
|
112
|
+
}
|
|
96
113
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/assets/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/assets/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,16 @@ export interface ImportResult {
|
|
|
14
14
|
entityType: string;
|
|
15
15
|
status: 'created' | 'skipped' | 'error';
|
|
16
16
|
error?: string;
|
|
17
|
+
/** Absolute path of the written file. Set when status === 'created' so
|
|
18
|
+
* batch callers can collect paths to commit in one transaction.
|
|
19
|
+
* Undefined for 'skipped' / 'error'. */
|
|
20
|
+
path?: string;
|
|
21
|
+
/** Absolute paths of any per-folder display-name sidecars written for this
|
|
22
|
+
* import (one per source-segment that carried casing the slug fallback
|
|
23
|
+
* can't recover). Empty when the source path was already kebab. Batch
|
|
24
|
+
* callers should pass these to commitPending() under `extraPaths` so the
|
|
25
|
+
* sidecars land in the same commit as the entity files. */
|
|
26
|
+
sidecarPaths?: string[];
|
|
17
27
|
}
|
|
18
28
|
export interface ImportOptions {
|
|
19
29
|
entityType?: string;
|
|
@@ -39,6 +49,15 @@ export declare function isSupportedFile(filename: string): boolean;
|
|
|
39
49
|
export declare function extractText(filename: string, content: string): Promise<string>;
|
|
40
50
|
/**
|
|
41
51
|
* Import a single file as a Studiograph entity.
|
|
42
|
-
*
|
|
52
|
+
*
|
|
53
|
+
* The `filename` may include a relative directory portion (e.g.
|
|
54
|
+
* `decks/2025-q1/talk.md`); the directory is slugified and combined with
|
|
55
|
+
* `options.folderPath` (the caller's chosen destination subfolder) to
|
|
56
|
+
* produce the final on-disk location. This preserves user-organized
|
|
57
|
+
* folder structure when a folder is dropped onto the import zone.
|
|
58
|
+
*
|
|
59
|
+
* Collisions on `(entity_type, entity_id)` are auto-suffixed (`talk` →
|
|
60
|
+
* `talk-2` → `talk-3` …) rather than skipped, so dropping a folder twice
|
|
61
|
+
* never silently swallows files.
|
|
43
62
|
*/
|
|
44
63
|
export declare function importFile(graph: BaseGraphManager, filename: string, content: Buffer | string, options?: ImportOptions): Promise<ImportResult>;
|
|
@@ -7,12 +7,124 @@
|
|
|
7
7
|
* - .csv → dataset entity (infers column schema)
|
|
8
8
|
* - .pdf → note entity (extracts text via pdf-parse)
|
|
9
9
|
*/
|
|
10
|
-
import { extname, basename } from 'path';
|
|
10
|
+
import { extname, basename, dirname } from 'path';
|
|
11
11
|
import matter from 'gray-matter';
|
|
12
12
|
/** Convert a string to kebab-case for use as an entity ID. */
|
|
13
13
|
function slugify(str) {
|
|
14
14
|
return str.toLowerCase().trim().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
15
15
|
}
|
|
16
|
+
/** Convert a relative directory path (`'My Documents/Q1 Reports'`) into a
|
|
17
|
+
* kebab-case folder path (`'my-documents/q1-reports'`). Empty / `'.'`
|
|
18
|
+
* yields `''`. Each segment is slugified independently so multi-segment
|
|
19
|
+
* paths keep their structure. */
|
|
20
|
+
function slugifyFolderPath(dir) {
|
|
21
|
+
if (!dir || dir === '.')
|
|
22
|
+
return '';
|
|
23
|
+
return dir
|
|
24
|
+
.split(/[/\\]/)
|
|
25
|
+
.map(slugify)
|
|
26
|
+
.filter(Boolean)
|
|
27
|
+
.join('/');
|
|
28
|
+
}
|
|
29
|
+
/** Convert kebab-case slug to the title-cased fallback the UI uses when no
|
|
30
|
+
* sidecar override is present. Mirrors `toDisplayName(slug)` in
|
|
31
|
+
* workspace.svelte.ts so we only persist a sidecar when the user's original
|
|
32
|
+
* segment carries information the fallback can't recover (`Schema_OS`,
|
|
33
|
+
* `HR`, `Q1 Reports`). Skipping look-alikes keeps the manifest sparse. */
|
|
34
|
+
function toDisplayFallback(slug) {
|
|
35
|
+
return slug
|
|
36
|
+
.split('-')
|
|
37
|
+
.map(s => s.charAt(0).toUpperCase() + s.slice(1))
|
|
38
|
+
.join(' ');
|
|
39
|
+
}
|
|
40
|
+
/** Pick the best `name` fallback for an imported entity when the source
|
|
41
|
+
* carries no frontmatter `name`/`title`. Mirrors the sparse rule used for
|
|
42
|
+
* folder display sidecars: prefer the original filename stem only when it
|
|
43
|
+
* carries casing the slug → title-case fallback can't recover (e.g.
|
|
44
|
+
* "Schema_OS.md" → slug "schema-os" → fallback "Schema Os" ≠ original).
|
|
45
|
+
* Otherwise stick with the title-case fallback so kebab and already
|
|
46
|
+
* title-cased filenames keep producing the same display they do today.
|
|
47
|
+
*
|
|
48
|
+
* When the entity_id was explicitly overridden (frontmatter / options) so
|
|
49
|
+
* that finalId differs from the natural slug of the filename, the explicit
|
|
50
|
+
* id is the source of truth — don't substitute the original stem. */
|
|
51
|
+
function deriveImportName(filename, finalId) {
|
|
52
|
+
const ext = extname(filename);
|
|
53
|
+
const originalStem = basename(filename, ext);
|
|
54
|
+
const naturalSlug = slugify(originalStem);
|
|
55
|
+
const slugFallbackName = formatName(finalId);
|
|
56
|
+
if (finalId !== naturalSlug)
|
|
57
|
+
return slugFallbackName;
|
|
58
|
+
if (originalStem === naturalSlug)
|
|
59
|
+
return slugFallbackName;
|
|
60
|
+
if (originalStem === slugFallbackName)
|
|
61
|
+
return slugFallbackName;
|
|
62
|
+
return originalStem;
|
|
63
|
+
}
|
|
64
|
+
/** Walk an original directory string and the slug it produced, emitting a
|
|
65
|
+
* per-segment list of {full slug-path, original segment string} for any
|
|
66
|
+
* segment whose original differs from the slug fallback. The full slug-path
|
|
67
|
+
* is repo-relative within `targetFolderPath` (the caller's chosen base), so
|
|
68
|
+
* the returned paths are ready to pass to `recordFolderDisplays`. */
|
|
69
|
+
function deriveFolderDisplays(originalDir, targetFolderPath) {
|
|
70
|
+
if (!originalDir || originalDir === '.')
|
|
71
|
+
return [];
|
|
72
|
+
const originalSegments = originalDir.split(/[/\\]/).filter(Boolean);
|
|
73
|
+
const result = [];
|
|
74
|
+
let acc = targetFolderPath ?? '';
|
|
75
|
+
for (const original of originalSegments) {
|
|
76
|
+
const slug = slugify(original);
|
|
77
|
+
if (!slug)
|
|
78
|
+
continue;
|
|
79
|
+
acc = acc ? `${acc}/${slug}` : slug;
|
|
80
|
+
// Two skip conditions:
|
|
81
|
+
// 1. original === slug — already kebab on disk; no info to preserve.
|
|
82
|
+
// 2. original === fallback — title-case fallback already round-trips.
|
|
83
|
+
// Only when both fail does the original carry casing the fallback can't
|
|
84
|
+
// recover (e.g. "Schema_OS", "HR", "iOS"), and we persist it.
|
|
85
|
+
if (original !== slug && original !== toDisplayFallback(slug)) {
|
|
86
|
+
result.push({ path: acc, display_name: original });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
/** Combine a target folder path (e.g. caller's chosen subfolder) with a
|
|
92
|
+
* per-file relative directory. Either or both may be empty. */
|
|
93
|
+
function joinFolderPaths(...parts) {
|
|
94
|
+
return parts.filter((p) => Boolean(p)).join('/');
|
|
95
|
+
}
|
|
96
|
+
/** Create an entity, auto-suffixing the entity_id on `(type, id)` collisions
|
|
97
|
+
* (`foo` → `foo-2` → `foo-3` …) up to `maxAttempts` tries. The base id
|
|
98
|
+
* comes through unchanged when there's no collision. Returns the id that
|
|
99
|
+
* was actually used. */
|
|
100
|
+
async function createWithCollisionRetry(graph, options, maxAttempts = 50) {
|
|
101
|
+
let suffix = 0;
|
|
102
|
+
while (true) {
|
|
103
|
+
const entityId = suffix === 0 ? options.entityId : `${options.entityId}-${suffix + 1}`;
|
|
104
|
+
try {
|
|
105
|
+
const created = await graph.create({
|
|
106
|
+
...options,
|
|
107
|
+
entityId,
|
|
108
|
+
data: { ...options.data, entity_id: entityId },
|
|
109
|
+
});
|
|
110
|
+
return { entityId, path: created.path };
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
114
|
+
if (!msg.includes('already exists') || suffix >= maxAttempts)
|
|
115
|
+
throw err;
|
|
116
|
+
suffix++;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extensions importFile handles directly. Binary asset extensions
|
|
122
|
+
* (.indd, .sketch, .psd, .ai, .fig, .pptx, …) are NOT in this set —
|
|
123
|
+
* they go through `uploadAsset` in the route layer instead. .pdf stays
|
|
124
|
+
* here for backwards compatibility (the agent tool still uses importFile
|
|
125
|
+
* to import a PDF as a `note` entity); the web import dispatcher routes
|
|
126
|
+
* .pdf to the asset path before reaching importFile.
|
|
127
|
+
*/
|
|
16
128
|
const SUPPORTED_EXTENSIONS = new Set(['.md', '.txt', '.csv', '.pdf', '.docx', '.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg']);
|
|
17
129
|
export function isSupportedFile(filename) {
|
|
18
130
|
return SUPPORTED_EXTENSIONS.has(extname(filename).toLowerCase());
|
|
@@ -50,38 +162,75 @@ export async function extractText(filename, content) {
|
|
|
50
162
|
}
|
|
51
163
|
/**
|
|
52
164
|
* Import a single file as a Studiograph entity.
|
|
53
|
-
*
|
|
165
|
+
*
|
|
166
|
+
* The `filename` may include a relative directory portion (e.g.
|
|
167
|
+
* `decks/2025-q1/talk.md`); the directory is slugified and combined with
|
|
168
|
+
* `options.folderPath` (the caller's chosen destination subfolder) to
|
|
169
|
+
* produce the final on-disk location. This preserves user-organized
|
|
170
|
+
* folder structure when a folder is dropped onto the import zone.
|
|
171
|
+
*
|
|
172
|
+
* Collisions on `(entity_type, entity_id)` are auto-suffixed (`talk` →
|
|
173
|
+
* `talk-2` → `talk-3` …) rather than skipped, so dropping a folder twice
|
|
174
|
+
* never silently swallows files.
|
|
54
175
|
*/
|
|
55
176
|
export async function importFile(graph, filename, content, options) {
|
|
56
177
|
const ext = extname(filename).toLowerCase();
|
|
57
|
-
const
|
|
58
|
-
if (!
|
|
178
|
+
const baseId = options?.entityId ?? slugify(basename(filename, ext));
|
|
179
|
+
if (!baseId) {
|
|
59
180
|
return { entityId: '', entityType: '', status: 'error', error: 'Could not generate entity ID from filename' };
|
|
60
181
|
}
|
|
182
|
+
// Combine the caller's target folder with the file's own relative
|
|
183
|
+
// directory. e.g. importing `decks/talk.md` into target `2025-q1` →
|
|
184
|
+
// final folderPath `2025-q1/decks`. Directory segments from the source
|
|
185
|
+
// are slugified to match the workspace's kebab-case folder convention.
|
|
186
|
+
const fileDir = dirname(filename);
|
|
187
|
+
const fileSlugDir = slugifyFolderPath(fileDir);
|
|
188
|
+
const combinedFolderPath = joinFolderPaths(options?.folderPath, fileSlugDir);
|
|
189
|
+
const innerOptions = { ...options, folderPath: combinedFolderPath || undefined };
|
|
190
|
+
// Capture original-casing display names for each source segment that the
|
|
191
|
+
// slug can't round-trip ("Schema_OS" → "schema-os" → "Schema Os" ≠
|
|
192
|
+
// original). These are written as per-folder sidecars after the entity
|
|
193
|
+
// lands so the import path is the only place that auto-populates them.
|
|
194
|
+
// First-writer-wins inside recordFolderDisplays — re-importing a folder
|
|
195
|
+
// with the same shape never clobbers a manual rename.
|
|
196
|
+
const folderDisplays = deriveFolderDisplays(fileDir, options?.folderPath);
|
|
61
197
|
try {
|
|
198
|
+
let result;
|
|
62
199
|
// PDF needs binary data — handle before text conversion
|
|
63
200
|
if (ext === '.pdf') {
|
|
64
201
|
const buf = typeof content === 'string' ? Buffer.from(content, 'base64') : content;
|
|
65
|
-
|
|
202
|
+
result = await importPdf(graph, baseId, buf, filename, innerOptions);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
const text = typeof content === 'string' ? content : content.toString('utf-8');
|
|
206
|
+
switch (ext) {
|
|
207
|
+
case '.md':
|
|
208
|
+
result = await importMarkdown(graph, baseId, text, filename, innerOptions);
|
|
209
|
+
break;
|
|
210
|
+
case '.txt':
|
|
211
|
+
result = await importText(graph, baseId, text, filename, innerOptions);
|
|
212
|
+
break;
|
|
213
|
+
case '.csv':
|
|
214
|
+
result = await importCsv(graph, baseId, text, filename, innerOptions);
|
|
215
|
+
break;
|
|
216
|
+
default:
|
|
217
|
+
return { entityId: baseId, entityType: '', status: 'error', error: `Unsupported file type: ${ext}` };
|
|
218
|
+
}
|
|
66
219
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
default:
|
|
76
|
-
return { entityId, entityType: '', status: 'error', error: `Unsupported file type: ${ext}` };
|
|
220
|
+
// Sidecar pass: only after the entity write succeeds. Folder existence
|
|
221
|
+
// is guaranteed at this point — graph.create()'s mkdir -p semantics
|
|
222
|
+
// produced the directories we're writing into.
|
|
223
|
+
if (result.status === 'created' && folderDisplays.length > 0) {
|
|
224
|
+
const sidecarPaths = graph.recordFolderDisplays(folderDisplays);
|
|
225
|
+
if (sidecarPaths.length > 0) {
|
|
226
|
+
result = { ...result, sidecarPaths };
|
|
227
|
+
}
|
|
77
228
|
}
|
|
229
|
+
return result;
|
|
78
230
|
}
|
|
79
231
|
catch (err) {
|
|
80
232
|
const msg = err instanceof Error ? err.message : String(err);
|
|
81
|
-
|
|
82
|
-
return { entityId, entityType: options?.entityType ?? 'note', status: 'skipped', error: 'Entity already exists' };
|
|
83
|
-
}
|
|
84
|
-
return { entityId, entityType: options?.entityType ?? 'note', status: 'error', error: msg };
|
|
233
|
+
return { entityId: baseId, entityType: options?.entityType ?? 'note', status: 'error', error: msg };
|
|
85
234
|
}
|
|
86
235
|
}
|
|
87
236
|
/** Import a .md file. Frontmatter wins: if the file declares
|
|
@@ -90,7 +239,7 @@ export async function importFile(graph, filename, content, options) {
|
|
|
90
239
|
* This preserves the explicit shape of structured markdown a user has
|
|
91
240
|
* already prepared (decks, references, datasets-by-hand, etc.) instead
|
|
92
241
|
* of overwriting it with a generic default. */
|
|
93
|
-
async function importMarkdown(graph, entityId, text, options) {
|
|
242
|
+
async function importMarkdown(graph, entityId, text, filename, options) {
|
|
94
243
|
const parsed = matter(text);
|
|
95
244
|
const fmType = typeof parsed.data.entity_type === 'string' ? parsed.data.entity_type : undefined;
|
|
96
245
|
const fmId = typeof parsed.data.entity_id === 'string' ? parsed.data.entity_id : undefined;
|
|
@@ -104,7 +253,7 @@ async function importMarkdown(graph, entityId, text, options) {
|
|
|
104
253
|
...parsed.data,
|
|
105
254
|
entity_type: entityType,
|
|
106
255
|
entity_id: finalId,
|
|
107
|
-
name: parsed.data.name ?? parsed.data.title ??
|
|
256
|
+
name: parsed.data.name ?? parsed.data.title ?? deriveImportName(filename, finalId),
|
|
108
257
|
created_at: parsed.data.created_at ?? now,
|
|
109
258
|
updated_at: now,
|
|
110
259
|
// Only stamp created_by/updated_by when the source didn't declare them —
|
|
@@ -112,7 +261,7 @@ async function importMarkdown(graph, entityId, text, options) {
|
|
|
112
261
|
created_by: parsed.data.created_by ?? userHandle,
|
|
113
262
|
updated_by: userHandle,
|
|
114
263
|
};
|
|
115
|
-
await graph
|
|
264
|
+
const created = await createWithCollisionRetry(graph, {
|
|
116
265
|
entityType,
|
|
117
266
|
entityId: finalId,
|
|
118
267
|
data,
|
|
@@ -122,7 +271,7 @@ async function importMarkdown(graph, entityId, text, options) {
|
|
|
122
271
|
commitMessage: options?.commitMessage ?? `Import ${entityType}: ${finalId}`,
|
|
123
272
|
skipCommit: options?.skipCommit ?? true,
|
|
124
273
|
});
|
|
125
|
-
return { entityId:
|
|
274
|
+
return { entityId: created.entityId, entityType, status: 'created', path: created.path };
|
|
126
275
|
}
|
|
127
276
|
/** Import a .txt file as a note entity. */
|
|
128
277
|
async function importText(graph, entityId, text, filename, options) {
|
|
@@ -131,13 +280,13 @@ async function importText(graph, entityId, text, filename, options) {
|
|
|
131
280
|
const userHandle = options?.user
|
|
132
281
|
? (options.user.email?.split('@')[0] ?? options.user.name ?? 'import')
|
|
133
282
|
: 'import';
|
|
134
|
-
await graph
|
|
283
|
+
const created = await createWithCollisionRetry(graph, {
|
|
135
284
|
entityType,
|
|
136
285
|
entityId,
|
|
137
286
|
data: {
|
|
138
287
|
entity_type: entityType,
|
|
139
288
|
entity_id: entityId,
|
|
140
|
-
name:
|
|
289
|
+
name: deriveImportName(filename, entityId),
|
|
141
290
|
created_at: now,
|
|
142
291
|
updated_at: now,
|
|
143
292
|
created_by: userHandle,
|
|
@@ -149,7 +298,7 @@ async function importText(graph, entityId, text, filename, options) {
|
|
|
149
298
|
commitMessage: options?.commitMessage ?? `Import note: ${entityId}`,
|
|
150
299
|
skipCommit: options?.skipCommit ?? true,
|
|
151
300
|
});
|
|
152
|
-
return { entityId, entityType, status: 'created' };
|
|
301
|
+
return { entityId: created.entityId, entityType, status: 'created', path: created.path };
|
|
153
302
|
}
|
|
154
303
|
/** Import a .csv file as a dataset entity with inferred schema. */
|
|
155
304
|
async function importCsv(graph, entityId, text, filename, options) {
|
|
@@ -162,13 +311,13 @@ async function importCsv(graph, entityId, text, filename, options) {
|
|
|
162
311
|
const userHandle = options?.user
|
|
163
312
|
? (options.user.email?.split('@')[0] ?? options.user.name ?? 'import')
|
|
164
313
|
: 'import';
|
|
165
|
-
await graph
|
|
314
|
+
const created = await createWithCollisionRetry(graph, {
|
|
166
315
|
entityType,
|
|
167
316
|
entityId,
|
|
168
317
|
data: {
|
|
169
318
|
entity_type: entityType,
|
|
170
319
|
entity_id: entityId,
|
|
171
|
-
name:
|
|
320
|
+
name: deriveImportName(filename, entityId),
|
|
172
321
|
schema,
|
|
173
322
|
created_at: now,
|
|
174
323
|
updated_at: now,
|
|
@@ -181,7 +330,7 @@ async function importCsv(graph, entityId, text, filename, options) {
|
|
|
181
330
|
commitMessage: options?.commitMessage ?? `Import dataset: ${entityId}`,
|
|
182
331
|
skipCommit: options?.skipCommit ?? true,
|
|
183
332
|
});
|
|
184
|
-
return { entityId, entityType, status: 'created' };
|
|
333
|
+
return { entityId: created.entityId, entityType, status: 'created', path: created.path };
|
|
185
334
|
}
|
|
186
335
|
/** Import a .pdf file as a note entity. Extracts text via pdf-parse. */
|
|
187
336
|
async function importPdf(graph, entityId, data, filename, options) {
|
|
@@ -195,22 +344,28 @@ async function importPdf(graph, entityId, data, filename, options) {
|
|
|
195
344
|
}
|
|
196
345
|
const entityType = (options?.entityType ?? 'note');
|
|
197
346
|
const now = new Date().toISOString();
|
|
198
|
-
|
|
347
|
+
const userHandle = options?.user
|
|
348
|
+
? (options.user.email?.split('@')[0] ?? options.user.name ?? 'import')
|
|
349
|
+
: 'import';
|
|
350
|
+
const created = await createWithCollisionRetry(graph, {
|
|
199
351
|
entityType,
|
|
200
352
|
entityId,
|
|
201
353
|
data: {
|
|
202
354
|
entity_type: entityType,
|
|
203
355
|
entity_id: entityId,
|
|
204
|
-
name:
|
|
356
|
+
name: deriveImportName(filename, entityId),
|
|
205
357
|
created_at: now,
|
|
206
358
|
updated_at: now,
|
|
207
|
-
created_by:
|
|
208
|
-
updated_by:
|
|
359
|
+
created_by: userHandle,
|
|
360
|
+
updated_by: userHandle,
|
|
209
361
|
},
|
|
210
362
|
content: text,
|
|
211
|
-
|
|
363
|
+
folderPath: options?.folderPath,
|
|
364
|
+
user: options?.user,
|
|
365
|
+
commitMessage: options?.commitMessage ?? `Import ${entityType}: ${entityId}`,
|
|
366
|
+
skipCommit: options?.skipCommit ?? true,
|
|
212
367
|
});
|
|
213
|
-
return { entityId, entityType, status: 'created' };
|
|
368
|
+
return { entityId: created.entityId, entityType, status: 'created', path: created.path };
|
|
214
369
|
}
|
|
215
370
|
/** Infer column schema from CSV content. */
|
|
216
371
|
function inferCsvSchema(csv) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-service.js","sourceRoot":"","sources":["../../src/services/import-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,8DAA8D;AAC9D,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AA0BD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjI,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,oDAAoD;IACpD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK;YAChD,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,wCAAwC;IACxC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAuB,EACvB,QAAgB,EAChB,OAAwB,EACxB,OAAuB;IAEvB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;IAChH,CAAC;IAED,IAAI,CAAC;QACH,wDAAwD;QACxD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnF,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/E,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9D,KAAK,MAAM;gBACT,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpE,KAAK,MAAM;gBACT,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnE;gBACE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,GAAG,EAAE,EAAE,CAAC;QACjG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QACpH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC9F,CAAC;AACH,CAAC;AAED;;;;;gDAKgD;AAChD,KAAK,UAAU,cAAc,CAC3B,KAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,OAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3F,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,UAAU,IAAI,MAAM,CAAe,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;IAEtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI;QAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;QACtE,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,IAAI,GAAwB;QAChC,GAAG,MAAM,CAAC,IAAI;QACd,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC;QAClE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG;QACzC,UAAU,EAAE,GAAG;QACf,yEAAyE;QACzE,mEAAmE;QACnE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU;QAChD,UAAU,EAAE,UAAU;KACvB,CAAC;IAEF,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,UAAU;QACV,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;QAC9B,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,UAAU,UAAU,KAAK,OAAO,EAAE;QAC3E,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;KACxC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,2CAA2C;AAC3C,KAAK,UAAU,UAAU,CACvB,KAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,OAAuB;IAEvB,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM,CAAe,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI;QAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;QACtE,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,UAAU;QACV,QAAQ;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;SACvB;QACD,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;QACpB,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,gBAAgB,QAAQ,EAAE;QACnE,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;KACxC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACrD,CAAC;AAED,mEAAmE;AACnE,KAAK,UAAU,SAAS,CACtB,KAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,OAAuB;IAEvB,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAe,CAAC;IACpE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;IACzG,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI;QAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;QACtE,CAAC,CAAC,QAAQ,CAAC;IAEb,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,UAAU;QACV,QAAQ;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,MAAM;YACN,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,UAAU;SACvB;QACD,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;QACpB,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,mBAAmB,QAAQ,EAAE;QACtE,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;KACxC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACrD,CAAC;AAED,wEAAwE;AACxE,KAAK,UAAU,SAAS,CACtB,KAAuB,EACvB,QAAgB,EAChB,IAAY,EACZ,QAAgB,EAChB,OAAuB;IAEvB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IACtG,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,MAAM,CAAe,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,KAAK,CAAC,MAAM,CAAC;QACjB,UAAU;QACV,QAAQ;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,QAAQ;SACrB;QACD,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACrD,CAAC;AAED,4CAA4C;AAC5C,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,eAAe;IACf,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,MAAgB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpE,IAAI,UAAU;QAAE,OAAO,QAAQ,CAAC;IAEhC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;IACjG,IAAI,WAAW;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ;QAAE,OAAO,MAAM,CAAC;IAE5B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iEAAiE;AACjE,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpC,OAAO,IAAI,GAAG,CAAC;gBACf,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,CAAC,QAAQ,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uDAAuD;AACvD,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,QAAQ;SACZ,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"import-service.js","sourceRoot":"","sources":["../../src/services/import-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,11 +25,24 @@ export interface VectorSearchResult {
|
|
|
25
25
|
export declare class VectorService {
|
|
26
26
|
private dbPath;
|
|
27
27
|
private voyageApiKey?;
|
|
28
|
+
private workspaceRoot?;
|
|
28
29
|
private db?;
|
|
29
30
|
private table?;
|
|
30
31
|
private lastIndexedPath;
|
|
31
32
|
private initialized;
|
|
32
|
-
constructor(dbPath: string, voyageApiKey?: string);
|
|
33
|
+
constructor(dbPath: string, voyageApiKey?: string, workspaceRoot?: string);
|
|
34
|
+
/**
|
|
35
|
+
* For asset entities backed by a PDF, the binary's extracted text
|
|
36
|
+
* lives in a sidecar at `<workspace>/.studiograph/assets-text/asset/<id>.txt`
|
|
37
|
+
* (written at upload time by `uploadAsset`). Returns the contents so
|
|
38
|
+
* `buildEntityText` can fold the PDF into the embedding/FTS input. The
|
|
39
|
+
* markdown body of an asset entity is intentionally light — without
|
|
40
|
+
* this, PDF assets would be effectively invisible to RAG.
|
|
41
|
+
*
|
|
42
|
+
* Best-effort: missing sidecar / read errors return null. Asset stays
|
|
43
|
+
* indexed by frontmatter alone.
|
|
44
|
+
*/
|
|
45
|
+
private readPdfSidecar;
|
|
33
46
|
/**
|
|
34
47
|
* Open/create the LanceDB table and ensure the FTS index exists.
|
|
35
48
|
* Call once before using the service.
|
|
@@ -83,6 +96,11 @@ export declare function reindexWorkspace(workspacePath: string, repos: Array<{
|
|
|
83
96
|
/**
|
|
84
97
|
* Build a text representation of an entity for FTS/embedding.
|
|
85
98
|
* Combines entity type, key frontmatter fields, and markdown body.
|
|
99
|
+
*
|
|
100
|
+
* `extraText` is appended after the body — used by VectorService to
|
|
101
|
+
* fold PDF sidecar text into asset-entity embeddings. Kept as a plain
|
|
102
|
+
* string parameter (not file IO) so this stays pure and unit-testable.
|
|
103
|
+
*
|
|
86
104
|
* Exported for testing.
|
|
87
105
|
*/
|
|
88
|
-
export declare function buildEntityText(entity: EntityFile): string;
|
|
106
|
+
export declare function buildEntityText(entity: EntityFile, extraText?: string): string;
|