gnosys 4.4.7 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/cli.js +140 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.js +65 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/attachments.d.ts +43 -0
  6. package/dist/lib/attachments.d.ts.map +1 -0
  7. package/dist/lib/attachments.js +154 -0
  8. package/dist/lib/attachments.js.map +1 -0
  9. package/dist/lib/audioExtract.d.ts +39 -0
  10. package/dist/lib/audioExtract.d.ts.map +1 -0
  11. package/dist/lib/audioExtract.js +220 -0
  12. package/dist/lib/audioExtract.js.map +1 -0
  13. package/dist/lib/chunkSplitter.d.ts +46 -0
  14. package/dist/lib/chunkSplitter.d.ts.map +1 -0
  15. package/dist/lib/chunkSplitter.js +233 -0
  16. package/dist/lib/chunkSplitter.js.map +1 -0
  17. package/dist/lib/config.d.ts +70 -1
  18. package/dist/lib/config.d.ts.map +1 -1
  19. package/dist/lib/config.js +24 -0
  20. package/dist/lib/config.js.map +1 -1
  21. package/dist/lib/db.d.ts +7 -1
  22. package/dist/lib/db.d.ts.map +1 -1
  23. package/dist/lib/db.js +31 -4
  24. package/dist/lib/db.js.map +1 -1
  25. package/dist/lib/dbWrite.d.ts.map +1 -1
  26. package/dist/lib/dbWrite.js +11 -0
  27. package/dist/lib/dbWrite.js.map +1 -1
  28. package/dist/lib/docxExtract.d.ts +27 -0
  29. package/dist/lib/docxExtract.d.ts.map +1 -0
  30. package/dist/lib/docxExtract.js +80 -0
  31. package/dist/lib/docxExtract.js.map +1 -0
  32. package/dist/lib/fileDetect.d.ts +20 -0
  33. package/dist/lib/fileDetect.d.ts.map +1 -0
  34. package/dist/lib/fileDetect.js +124 -0
  35. package/dist/lib/fileDetect.js.map +1 -0
  36. package/dist/lib/imageExtract.d.ts +26 -0
  37. package/dist/lib/imageExtract.d.ts.map +1 -0
  38. package/dist/lib/imageExtract.js +113 -0
  39. package/dist/lib/imageExtract.js.map +1 -0
  40. package/dist/lib/llm.d.ts +9 -0
  41. package/dist/lib/llm.d.ts.map +1 -1
  42. package/dist/lib/llm.js +102 -0
  43. package/dist/lib/llm.js.map +1 -1
  44. package/dist/lib/multimodalIngest.d.ts +68 -0
  45. package/dist/lib/multimodalIngest.d.ts.map +1 -0
  46. package/dist/lib/multimodalIngest.js +463 -0
  47. package/dist/lib/multimodalIngest.js.map +1 -0
  48. package/dist/lib/pdfExtract.d.ts +29 -0
  49. package/dist/lib/pdfExtract.d.ts.map +1 -0
  50. package/dist/lib/pdfExtract.js +163 -0
  51. package/dist/lib/pdfExtract.js.map +1 -0
  52. package/dist/lib/setup.d.ts.map +1 -1
  53. package/dist/lib/setup.js +96 -36
  54. package/dist/lib/setup.js.map +1 -1
  55. package/dist/lib/store.d.ts +3 -0
  56. package/dist/lib/store.d.ts.map +1 -1
  57. package/dist/lib/store.js.map +1 -1
  58. package/dist/lib/videoExtract.d.ts +30 -0
  59. package/dist/lib/videoExtract.d.ts.map +1 -0
  60. package/dist/lib/videoExtract.js +92 -0
  61. package/dist/lib/videoExtract.js.map +1 -0
  62. package/package.json +3 -1
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Gnosys Video Extraction — Extract audio from video files and transcribe.
3
+ *
4
+ * Requires ffmpeg to be installed on the system. Extracts audio to a temp WAV
5
+ * file, then delegates to audioExtract.ts for transcription.
6
+ *
7
+ * Part of v5.0 Phase 4: Multimodal Ingestion — Video support.
8
+ */
9
+ import * as path from "path";
10
+ import * as os from "os";
11
+ import * as fs from "fs/promises";
12
+ import { execFileSync } from "child_process";
13
+ import { transcribeAudio, } from "./audioExtract.js";
14
+ // ─── Helpers ────────────────────────────────────────────────────────────
15
+ /**
16
+ * Check that ffmpeg is installed and accessible.
17
+ * Throws a clear error message if not found.
18
+ */
19
+ function checkFfmpeg() {
20
+ try {
21
+ execFileSync("ffmpeg", ["-version"], { stdio: "ignore" });
22
+ }
23
+ catch {
24
+ throw new Error("Video transcription requires ffmpeg to be installed.\n" +
25
+ "Install it with:\n" +
26
+ " macOS: brew install ffmpeg\n" +
27
+ " Ubuntu: sudo apt install ffmpeg\n" +
28
+ " Windows: winget install FFmpeg");
29
+ }
30
+ }
31
+ /**
32
+ * Extract audio from a video file into a WAV file using ffmpeg.
33
+ *
34
+ * Uses PCM 16-bit, 16kHz mono — the format Whisper expects.
35
+ * Uses execFileSync (not execSync) to avoid shell injection since
36
+ * the file path comes from user input.
37
+ */
38
+ function extractAudioTrack(videoPath, outputWav) {
39
+ execFileSync("ffmpeg", [
40
+ "-i", videoPath,
41
+ "-vn", // no video
42
+ "-acodec", "pcm_s16le", // PCM 16-bit little-endian
43
+ "-ar", "16000", // 16kHz sample rate
44
+ "-ac", "1", // mono
45
+ "-y", // overwrite output
46
+ outputWav,
47
+ ], {
48
+ stdio: "ignore",
49
+ timeout: 300_000, // 5-minute timeout for large files
50
+ });
51
+ }
52
+ // ─── Public API ─────────────────────────────────────────────────────────
53
+ /**
54
+ * Extract audio from a video file and transcribe it.
55
+ *
56
+ * Steps:
57
+ * 1. Check that ffmpeg is installed
58
+ * 2. Extract audio track to a temp WAV file
59
+ * 3. Transcribe the WAV file using audioExtract
60
+ * 4. Clean up the temp file
61
+ * 5. Return the transcript result
62
+ */
63
+ export async function transcribeVideo(filePath, options) {
64
+ // Step 1: Check for ffmpeg
65
+ checkFfmpeg();
66
+ // Step 2: Create a temp WAV file path
67
+ const tempWav = path.join(os.tmpdir(), `gnosys-audio-${Date.now()}.wav`);
68
+ try {
69
+ // Step 3: Extract audio from video
70
+ extractAudioTrack(filePath, tempWav);
71
+ // Step 4: Transcribe the extracted audio
72
+ const result = await transcribeAudio(tempWav, options);
73
+ // Step 5: Return the result
74
+ return {
75
+ segments: result.segments,
76
+ fullText: result.fullText,
77
+ duration: result.duration,
78
+ language: result.language,
79
+ };
80
+ }
81
+ finally {
82
+ // Step 6: Clean up temp file (always, even if transcription fails)
83
+ try {
84
+ await fs.unlink(tempWav);
85
+ }
86
+ catch {
87
+ // Ignore cleanup errors — the temp file may not exist if
88
+ // ffmpeg failed before creating it
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=videoExtract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoExtract.js","sourceRoot":"","sources":["../../src/lib/videoExtract.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,eAAe,GAIhB,MAAM,mBAAmB,CAAC;AAc3B,2EAA2E;AAE3E;;;GAGG;AACH,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,wDAAwD;YACtD,oBAAoB;YACpB,kCAAkC;YAClC,sCAAsC;YACtC,kCAAkC,CACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;IAC7D,YAAY,CAAC,QAAQ,EAAE;QACrB,IAAI,EAAE,SAAS;QACf,KAAK,EAAmB,WAAW;QACnC,SAAS,EAAE,WAAW,EAAE,2BAA2B;QACnD,KAAK,EAAE,OAAO,EAAU,oBAAoB;QAC5C,KAAK,EAAE,GAAG,EAAc,OAAO;QAC/B,IAAI,EAAoB,mBAAmB;QAC3C,SAAS;KACV,EAAE;QACD,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,OAAO,EAAE,mCAAmC;KACtD,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAE3E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAA8B;IAE9B,2BAA2B;IAC3B,WAAW,EAAE,CAAC;IAEd,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,mCAAmC;QACnC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAErC,yCAAyC;QACzC,MAAM,MAAM,GAAqB,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzE,4BAA4B;QAC5B,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;YACzD,mCAAmC;QACrC,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gnosys",
3
- "version": "4.4.7",
3
+ "version": "5.0.1",
4
4
  "description": "Gnosys — Persistent Memory for AI Agents. Sandbox-first runtime, central SQLite brain, federated search, Dream Mode, Web Knowledge Base, Obsidian export.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,6 +37,8 @@
37
37
  "dotenv": "^17.3.1",
38
38
  "glob": "^13.0.6",
39
39
  "gray-matter": "^4.0.3",
40
+ "mammoth": "^1.12.0",
41
+ "pdf-parse": "^2.4.5",
40
42
  "turndown": "^7.2.2",
41
43
  "zod": "^4.3.6"
42
44
  },