task-summary-extractor 8.1.0 → 9.0.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.
Files changed (52) hide show
  1. package/.env.example +38 -0
  2. package/ARCHITECTURE.md +116 -15
  3. package/EXPLORATION.md +164 -101
  4. package/QUICK_START.md +5 -2
  5. package/README.md +70 -18
  6. package/bin/taskex.js +11 -4
  7. package/package.json +39 -6
  8. package/process_and_upload.js +7 -100
  9. package/prompt.json +199 -131
  10. package/src/config.js +52 -3
  11. package/src/{utils → modes}/deep-dive.js +2 -2
  12. package/src/{utils → modes}/dynamic-mode.js +2 -2
  13. package/src/{utils → modes}/focused-reanalysis.js +4 -3
  14. package/src/{utils → modes}/progress-updater.js +2 -2
  15. package/src/phases/_shared.js +43 -0
  16. package/src/phases/compile.js +101 -0
  17. package/src/phases/deep-dive.js +118 -0
  18. package/src/phases/discover.js +178 -0
  19. package/src/phases/init.js +192 -0
  20. package/src/phases/output.js +238 -0
  21. package/src/phases/process-media.js +633 -0
  22. package/src/phases/services.js +104 -0
  23. package/src/phases/summary.js +86 -0
  24. package/src/pipeline.js +431 -1462
  25. package/src/renderers/docx.js +531 -0
  26. package/src/renderers/html.js +672 -0
  27. package/src/renderers/markdown.js +15 -183
  28. package/src/renderers/pdf.js +90 -0
  29. package/src/renderers/shared.js +211 -0
  30. package/src/schemas/analysis-compiled.schema.json +381 -0
  31. package/src/schemas/analysis-segment.schema.json +380 -0
  32. package/src/services/doc-parser.js +346 -0
  33. package/src/services/gemini.js +105 -48
  34. package/src/services/git.js +0 -29
  35. package/src/services/video.js +123 -8
  36. package/src/utils/adaptive-budget.js +6 -6
  37. package/src/utils/{progress.js → checkpoint.js} +2 -1
  38. package/src/utils/cli.js +161 -113
  39. package/src/utils/colors.js +83 -0
  40. package/src/utils/confidence-filter.js +138 -0
  41. package/src/utils/context-manager.js +0 -4
  42. package/src/utils/diff-engine.js +2 -4
  43. package/src/utils/global-config.js +6 -5
  44. package/src/utils/health-dashboard.js +11 -9
  45. package/src/utils/json-parser.js +5 -3
  46. package/src/utils/learning-loop.js +3 -3
  47. package/src/utils/progress-bar.js +286 -0
  48. package/src/utils/quality-gate.js +4 -8
  49. package/src/utils/retry.js +13 -5
  50. package/src/utils/schema-validator.js +314 -0
  51. package/src/utils/prompt.js +0 -32
  52. /package/src/{utils → modes}/change-detector.js +0 -0
package/README.md CHANGED
@@ -1,16 +1,17 @@
1
1
  # Task Summary Extractor
2
2
 
3
- > **v8.1.0** — AI-powered meeting analysis & document generation CLI. Install globally, run anywhere.
3
+ > **v9.0.0** — AI-powered content analysis CLI meetings, recordings, documents, or any mix. Install globally, run anywhere.
4
4
 
5
5
  <p align="center">
6
6
  <img src="https://img.shields.io/badge/node-%3E%3D18.0.0-green" alt="Node.js" />
7
7
  <img src="https://img.shields.io/badge/gemini-2.5--flash-blue" alt="Gemini" />
8
8
  <img src="https://img.shields.io/badge/firebase-11.x-orange" alt="Firebase" />
9
- <img src="https://img.shields.io/badge/version-8.1.0-brightgreen" alt="Version" />
9
+ <img src="https://img.shields.io/badge/version-9.0.0-brightgreen" alt="Version" />
10
+ <img src="https://img.shields.io/badge/tests-285%20passing-brightgreen" alt="Tests" />
10
11
  <img src="https://img.shields.io/badge/npm-task--summary--extractor-red" alt="npm" />
11
12
  </p>
12
13
 
13
- **Record a meeting → get a structured task document.** Or point it at any folder and generate docs from context.
14
+ **Analyze any content → get a structured task document.** Feed it meeting recordings, audio files, documents, or any mix — it extracts work items, action items, blockers, and more. Or point it at any folder and generate docs from context.
14
15
 
15
16
  📖 **New here?** Jump to [Setup (3 steps)](#setup-3-steps) — you'll be running in under 5 minutes.
16
17
 
@@ -18,9 +19,9 @@
18
19
 
19
20
  ## What It Does
20
21
 
21
- ### 🎥 Video Analysis (default mode)
22
+ ### 🎥 Content Analysis (default mode)
22
23
 
23
- Drop a recording in a folder → run the tool → get a Markdown task document with:
24
+ Drop a recording (video/audio) or documents in a folder → run the tool → get a Markdown task document with:
24
25
 
25
26
  - **Tickets** — ID, title, status, assignee, confidence score
26
27
  - **Change Requests** — what changed, where, how, why
@@ -168,6 +169,9 @@ These are the ones you'll actually use:
168
169
  | `--resume` | Continue an interrupted run | `--resume` |
169
170
  | `--reanalyze` | Force fresh analysis (ignore cache) | `--reanalyze` |
170
171
  | `--dry-run` | Preview what would run, without running | `--dry-run` |
172
+ | `--format <type>` | Output format: `md`, `html`, `json`, `pdf`, `docx`, `all` (default: `md`) | `--format html` |
173
+ | `--min-confidence <level>` | Filter items by confidence: `high`, `medium`, `low` | `--min-confidence high` |
174
+ | `--no-html` | Suppress HTML report generation | `--no-html` |
171
175
 
172
176
  **Typical usage:**
173
177
 
@@ -191,7 +195,7 @@ Choose what the tool does. Only use one at a time:
191
195
 
192
196
  | Flag | Mode | What You Get |
193
197
  |------|------|-------------|
194
- | *(none)* | **Video analysis** | `results.md` — structured task document |
198
+ | *(none)* | **Content analysis** | `results.md` + `results.html` — structured task document |
195
199
  | `--dynamic` | **Doc generation** | `INDEX.md` + 3–15 topic documents |
196
200
  | `--deep-dive` | **Topic explainers** | `INDEX.md` + per-topic deep-dive docs |
197
201
  | `--update-progress` | **Progress check** | `progress.md` — item status via git |
@@ -257,6 +261,8 @@ CONFIG --gemini-key --firebase-key --firebase-project
257
261
  --firebase-bucket --firebase-domain
258
262
  MODES --dynamic --deep-dive --update-progress
259
263
  CORE --name --model --skip-upload --resume --reanalyze --dry-run
264
+ OUTPUT --format <md|html|json|pdf|docx|all> --min-confidence <high|medium|low>
265
+ --no-html
260
266
  UPLOAD --force-upload --no-storage-url
261
267
  SKIP --skip-compression --skip-gemini
262
268
  DYNAMIC --request <text>
@@ -271,11 +277,12 @@ INFO --help (-h) --version (-v)
271
277
 
272
278
  ## Output
273
279
 
274
- ### Video Analysis
280
+ ### Content Analysis
275
281
 
276
282
  ```
277
283
  my-meeting/runs/{timestamp}/
278
284
  ├── results.md ← Open this — your task document
285
+ ├── results.html ← Interactive HTML report (self-contained)
279
286
  ├── results.json ← Full pipeline data
280
287
  └── compilation.json ← All extracted items (JSON)
281
288
  ```
@@ -312,12 +319,12 @@ my-meeting/runs/{timestamp}/
312
319
 
313
320
  ## Folder Setup Tips
314
321
 
315
- Drop docs alongside your video to give the AI context. **More context = better extraction.**
322
+ Drop content files and supporting docs in a folder. **More context = better extraction.**
316
323
 
317
324
  ```
318
325
  my-meeting/
319
- ├── Recording.mp4 ← Video (required for video mode)
320
- ├── Recording.vtt ← Subtitles (highly recommended)
326
+ ├── Recording.mp4 ← Video recording (primary for video mode)
327
+ ├── Recording.vtt ← Subtitles (highly recommended for recordings)
321
328
  ├── agenda.md ← Loose docs at root are fine
322
329
 
323
330
  ├── .tasks/ ← Gets priority weighting (optional)
@@ -328,7 +335,7 @@ my-meeting/
328
335
  └── requirements.md
329
336
  ```
330
337
 
331
- **Supported formats:** `.mp4` `.mkv` `.webm` `.avi` `.mov` (video) · `.vtt` `.srt` `.txt` `.md` `.csv` `.pdf` (docs)
338
+ **Supported formats:** `.mp4` `.mkv` `.webm` `.avi` `.mov` (video) · `.mp3` `.wav` `.ogg` `.m4a` (audio) · `.vtt` `.srt` `.txt` `.md` `.csv` `.pdf` (docs)
332
339
 
333
340
  The tool **recursively scans all subfolders**. `.tasks/` gets highest priority weighting but everything is included.
334
341
 
@@ -406,7 +413,7 @@ GEMINI_API_KEY=your-key-here
406
413
 
407
414
  | Feature | Description |
408
415
  |---------|-------------|
409
- | **Video Compression** | H.264 CRF 24, text-optimized sharpening, configurable speed |
416
+ | **Video/Audio Compression** | H.264 CRF 24, text-optimized sharpening, configurable speed |
410
417
  | **Smart Segmentation** | ≤5 min chunks with boundary-aware splitting |
411
418
  | **Cross-Segment Continuity** | Ticket IDs, names, and context carry forward |
412
419
  | **Document Discovery** | Auto-finds docs in all subfolders |
@@ -423,6 +430,11 @@ GEMINI_API_KEY=your-key-here
423
430
  | **Git Progress Tracking** | Correlates commits with extracted items |
424
431
  | **Deep Dive** | Explanatory docs per topic discussed |
425
432
  | **Dynamic Mode** | Generate docs from any content mix |
433
+ | **Progress Bar** | Real-time visual progress with phase tracking, ETA, and cost display |
434
+ | **HTML Report** | Self-contained HTML report with collapsible sections, filtering, dark mode |
435
+ | **JSON Schema Validation** | Validates AI output against JSON Schema (segment + compiled) |
436
+ | **Confidence Filter** | `--min-confidence` flag to exclude low-confidence items from output |
437
+ | **Multi-Format Output** | `--format` flag: Markdown, HTML, JSON, PDF, DOCX, or all formats at once |
426
438
  | **Interactive CLI** | Run with no args → guided experience |
427
439
  | **Resume / Checkpoint** | `--resume` continues interrupted runs |
428
440
  | **Firebase Upload** | Team access via cloud (optional) |
@@ -468,23 +480,57 @@ Your call folders, `.env`, logs, and videos are all `.gitignore`d — nothing ge
468
480
  task-summary-extractor/
469
481
  ├── bin/
470
482
  │ └── taskex.js Global CLI entry point
471
- ├── process_and_upload.js Backward-compatible entry point
483
+ ├── process_and_upload.js Backward-compatible entry (delegates to bin/taskex)
472
484
  ├── setup.js First-time setup & validation
473
485
  ├── package.json Dependencies, scripts, bin config
474
486
  ├── prompt.json Gemini extraction prompt
487
+ ├── vitest.config.js Test configuration
475
488
 
476
489
  ├── src/
477
490
  │ ├── config.js Config, model registry, env vars
478
491
  │ ├── logger.js Structured JSONL logger (triple output)
479
- │ ├── pipeline.js Multi-mode orchestrator (1,985 lines)
492
+ │ ├── pipeline.js Multi-mode orchestrator (~920 lines)
493
+ │ ├── phases/ Decomposed pipeline phases (9 modules)
494
+ │ │ ├── _shared.js Shared phase utilities
495
+ │ │ ├── init.js Phase 1: CLI parsing, config validation
496
+ │ │ ├── discover.js Phase 2: Find videos, docs, resolve user
497
+ │ │ ├── services.js Phase 3: Firebase auth, Gemini init
498
+ │ │ ├── process-media.js Phase 4: Compress, upload, analyze
499
+ │ │ ├── compile.js Phase 5: Cross-segment compilation
500
+ │ │ ├── output.js Phase 6: Write JSON, render MD + HTML
501
+ │ │ ├── summary.js Phase 8: Save learning, print summary
502
+ │ │ └── deep-dive.js Phase 9: Optional deep-dive generation
480
503
  │ ├── services/
481
504
  │ │ ├── gemini.js Gemini AI — 3-strategy file resolution + External URL support
482
505
  │ │ ├── firebase.js Firebase Storage (async I/O)
483
506
  │ │ ├── video.js ffmpeg compression
484
- │ │ └── git.js Git CLI wrapper
507
+ │ │ ├── git.js Git CLI wrapper
508
+ │ │ └── doc-parser.js Document text extraction (DOCX, XLSX, PPTX, etc.)
509
+ │ ├── modes/ AI-heavy pipeline phase modules
510
+ │ │ ├── deep-dive.js Topic discovery & deep-dive doc generation
511
+ │ │ ├── dynamic-mode.js Dynamic document planning & generation
512
+ │ │ ├── focused-reanalysis.js Targeted reanalysis of weak segments
513
+ │ │ ├── progress-updater.js Git-based progress assessment
514
+ │ │ └── change-detector.js Git change correlation engine
485
515
  │ ├── renderers/
486
- │ │ └── markdown.js Report renderer
487
- └── utils/ 21 modules see ARCHITECTURE.md
516
+ │ │ ├── markdown.js Markdown report renderer
517
+ │ ├── html.js HTML report renderer (self-contained)
518
+ │ │ ├── pdf.js PDF report renderer (HTML → PDF via puppeteer)
519
+ │ │ ├── docx.js DOCX report renderer (programmatic Word document)
520
+ │ │ └── shared.js Shared renderer utilities
521
+ │ ├── schemas/
522
+ │ │ ├── analysis-segment.schema.json Segment analysis JSON Schema
523
+ │ │ └── analysis-compiled.schema.json Compiled analysis JSON Schema
524
+ │ └── utils/ Pure utilities — parsing, retry, budget, config
525
+ │ ├── colors.js Zero-dep ANSI color utility
526
+ │ ├── progress-bar.js Visual progress bar (TTY-aware)
527
+ │ ├── confidence-filter.js Confidence level filtering
528
+ │ ├── schema-validator.js JSON Schema validation (ajv)
529
+ │ └── ... (15 more utility modules)
530
+
531
+ ├── tests/ Test suite — 285 tests across 13 files (vitest)
532
+ │ ├── utils/ Utility module tests
533
+ │ └── renderers/ Renderer tests
488
534
 
489
535
  ├── QUICK_START.md Step-by-step setup guide
490
536
  ├── ARCHITECTURE.md Technical deep dive
@@ -505,6 +551,9 @@ task-summary-extractor/
505
551
  | `npm run check` | Validate environment |
506
552
  | `npm start` | Run the pipeline |
507
553
  | `npm run help` | Show CLI help |
554
+ | `npm test` | Run test suite (285 tests) |
555
+ | `npm run test:watch` | Run tests in watch mode |
556
+ | `npm run test:coverage` | Run tests with coverage report |
508
557
 
509
558
  ---
510
559
 
@@ -512,6 +561,9 @@ task-summary-extractor/
512
561
 
513
562
  | Version | Highlights |
514
563
  |---------|-----------|
564
+ | **v9.0.0** | **CLI UX upgrade** — colors & progress bar, HTML reports, PDF & DOCX output (via puppeteer and docx npm package), JSON Schema validation, confidence filter (`--min-confidence`), pipeline decomposition (`src/phases/` — 9 modules), test suite (285 tests via vitest), multi-format output (`--format`: md/html/json/pdf/docx/all), doc-parser service, shared renderer utilities |
565
+ | **v8.3.0** | **Universal content analysis** — prompt v4.0.0 supports video, audio, documents, and mixed content; input type auto-detection; timestamps conditional on content type; gemini.js bridge text generalized; all markdown docs updated |
566
+ | **v8.2.0** | **Architecture cleanup** — `src/modes/` for AI pipeline phases, `retry.js` self-contained defaults, dead code removal, export trimming, `process_and_upload.js` slim shim, `progress.js` → `checkpoint.js`, merged `prompt.js` into `cli.js` |
515
567
  | **v8.1.0** | **Smart global config** — `taskex config` persistent setup (`~/.taskexrc`), first-run prompting, 5-level config resolution, production audit fixes, shared CLI flag injection, boolean flag parser fix |
516
568
  | **v8.0.0** | **npm package** — `npm i -g task-summary-extractor`, `taskex` global CLI, `--gemini-key` / `--firebase-*` config flags, run from anywhere, CWD-first `.env` resolution |
517
569
  | **v7.2.3** | Production hardening — cross-platform ffmpeg, shell injection fix, auto git init for progress tracking, `runs/` excluded from doc discovery |
@@ -541,4 +593,4 @@ task-summary-extractor/
541
593
 
542
594
  ## License
543
595
 
544
- MIT — © 2026 Youssef Adel
596
+ Proprietary — © 2026 Youssef Adel. All rights reserved.
package/bin/taskex.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * taskex — AI-powered meeting analysis & document generation.
4
4
  *
@@ -7,6 +7,8 @@
7
7
  * Usage: taskex [options] [folder]
8
8
  *
9
9
  * Subcommands:
10
+ * taskex setup Full interactive setup (prerequisites, deps, .env, sample folder)
11
+ * taskex setup --check Validation only (no changes)
10
12
  * taskex config Interactive global config setup (~/.taskexrc)
11
13
  * taskex config --show Show saved config (masked secrets)
12
14
  * taskex config --clear Remove global config file
@@ -24,7 +26,7 @@
24
26
 
25
27
  'use strict';
26
28
 
27
- // ── Handle `taskex config` subcommand before anything else ────────────────
29
+ // ── Handle subcommands before anything else ──────────────────────────────
28
30
  const rawArgs = process.argv.slice(2);
29
31
  if (rawArgs[0] === 'config') {
30
32
  const hasShow = rawArgs.includes('--show');
@@ -36,6 +38,10 @@ if (rawArgs[0] === 'config') {
36
38
  process.stderr.write(`\nError: ${err.message}\n`);
37
39
  process.exit(1);
38
40
  });
41
+ } else if (rawArgs[0] === 'setup') {
42
+ // Delegate to setup.js — supports --check and --silent
43
+ const setupPath = require('path').join(__dirname, '..', 'setup.js');
44
+ require('child_process').execFileSync(process.execPath, [setupPath, ...rawArgs.slice(1)], { stdio: 'inherit' });
39
45
  } else {
40
46
  // ── Inject CLI config flags into process.env ────────────────────────────
41
47
  // Must run BEFORE any require() that touches config.js / dotenv
@@ -44,6 +50,7 @@ if (rawArgs[0] === 'config') {
44
50
 
45
51
  // ── Delegate to pipeline ────────────────────────────────────────────────
46
52
  const { run, getLog } = require('../src/pipeline');
53
+ const { c } = require('../src/utils/colors');
47
54
 
48
55
  run().catch(err => {
49
56
  if (err.code === 'HELP_SHOWN' || err.code === 'VERSION_SHOWN') {
@@ -57,8 +64,8 @@ if (rawArgs[0] === 'config') {
57
64
  log.step('FAILED');
58
65
  log.close();
59
66
  }
60
- process.stderr.write(`\nFATAL: ${err.message || err}\n`);
61
- process.stderr.write(`${err.stack || ''}\n`);
67
+ process.stderr.write(`\n${c.error(`FATAL: ${err.message || err}`)}\n`);
68
+ process.stderr.write(`${c.dim(err.stack || '')}\n`);
62
69
  process.exit(1);
63
70
  });
64
71
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "task-summary-extractor",
3
- "version": "8.1.0",
3
+ "version": "9.0.0",
4
4
  "description": "AI-powered meeting analysis & document generation CLI — video + document processing, deep dive docs, dynamic mode, interactive CLI with model selection, confidence scoring, learning loop, git progress tracking",
5
5
  "main": "process_and_upload.js",
6
6
  "bin": {
7
- "taskex": "./bin/taskex.js"
7
+ "taskex": "bin/taskex.js"
8
8
  },
9
9
  "files": [
10
10
  "bin/",
@@ -12,6 +12,7 @@
12
12
  "prompt.json",
13
13
  "process_and_upload.js",
14
14
  "setup.js",
15
+ ".env.example",
15
16
  "README.md",
16
17
  "QUICK_START.md",
17
18
  "ARCHITECTURE.md",
@@ -19,15 +20,37 @@
19
20
  ],
20
21
  "scripts": {
21
22
  "setup": "node setup.js",
22
- "check": "node setup.js --check",
23
+ "setup:check": "node setup.js --check",
24
+ "setup:silent": "node setup.js --silent",
23
25
  "start": "node process_and_upload.js",
24
26
  "process": "node process_and_upload.js",
25
27
  "process:local": "node process_and_upload.js --skip-upload",
26
28
  "process:resume": "node process_and_upload.js --resume",
29
+ "process:reanalyze": "node process_and_upload.js --reanalyze",
27
30
  "process:dry-run": "node process_and_upload.js --dry-run",
31
+ "process:fast": "node process_and_upload.js --parallel 5 --parallel-analysis 3",
32
+ "process:turbo": "node process_and_upload.js --parallel 8 --parallel-analysis 3",
33
+ "process:serial": "node process_and_upload.js --parallel 1 --parallel-analysis 1",
34
+ "process:minimal": "node process_and_upload.js --skip-upload --no-focused-pass --no-learning --no-diff",
35
+ "process:no-ai": "node process_and_upload.js --skip-gemini",
36
+ "process:upload-only": "node process_and_upload.js --skip-compression --skip-gemini",
37
+ "deep-dive": "node process_and_upload.js --deep-dive",
38
+ "deep-dive:local": "node process_and_upload.js --deep-dive --skip-upload",
39
+ "deep-dive:fast": "node process_and_upload.js --deep-dive --parallel 5 --parallel-analysis 3",
40
+ "deep-dive:resume": "node process_and_upload.js --deep-dive --resume",
28
41
  "dynamic": "node process_and_upload.js --dynamic",
42
+ "dynamic:local": "node process_and_upload.js --dynamic --skip-upload",
43
+ "dynamic:fast": "node process_and_upload.js --dynamic --parallel 5 --parallel-analysis 3",
44
+ "dynamic:resume": "node process_and_upload.js --dynamic --resume",
45
+ "progress": "node process_and_upload.js --update-progress",
46
+ "config": "node process_and_upload.js config",
47
+ "config:show": "node process_and_upload.js config --show",
48
+ "config:clear": "node process_and_upload.js config --clear",
29
49
  "help": "node process_and_upload.js --help",
30
- "version": "node process_and_upload.js --version"
50
+ "version": "node process_and_upload.js --version",
51
+ "test": "vitest run",
52
+ "test:watch": "vitest",
53
+ "test:coverage": "vitest run --coverage"
31
54
  },
32
55
  "keywords": [
33
56
  "meeting",
@@ -51,13 +74,23 @@
51
74
  "url": "https://github.com/youssefadel94/task-summary-extractor/issues"
52
75
  },
53
76
  "author": "Youssef Adel",
54
- "license": "MIT",
77
+ "license": "UNLICENSED",
55
78
  "dependencies": {
56
79
  "@google/genai": "^1.42.0",
80
+ "ajv": "^8.18.0",
81
+ "docx": "^9.6.0",
57
82
  "dotenv": "^17.3.1",
58
- "firebase": "^12.9.0"
83
+ "firebase": "^12.9.0",
84
+ "mammoth": "^1.11.0",
85
+ "officeparser": "^6.0.4",
86
+ "puppeteer": "^24.37.5",
87
+ "xlsx": "^0.18.5"
59
88
  },
60
89
  "engines": {
61
90
  "node": ">=18.0.0"
91
+ },
92
+ "devDependencies": {
93
+ "@vitest/coverage-v8": "^4.0.18",
94
+ "vitest": "^4.0.18"
62
95
  }
63
96
  }
@@ -1,107 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * taskex AI-powered meeting analysis & document generation.
3
+ * Backward-compatible entry point delegates to bin/taskex.js.
4
4
  *
5
- * Backward-compatible entry point delegates to src/pipeline.js.
6
- * For global installs, use the `taskex` command directly.
5
+ * For global installs, use the `taskex` CLI command directly.
6
+ * This file exists for `node process_and_upload.js` and `npm start` compatibility.
7
7
  *
8
8
  * Usage:
9
- * taskex [options] [folder]
10
- * node process_and_upload.js [options] "C:\path\to\call folder"
9
+ * taskex [options] [folder] (recommended)
10
+ * node process_and_upload.js [options] [folder] (legacy)
11
11
  *
12
- * Config flags (override .env):
13
- * --gemini-key <key> Gemini API key
14
- * --firebase-key <key> Firebase API key
15
- * --firebase-project <id> Firebase project ID
16
- * --firebase-bucket <bucket> Firebase storage bucket
17
- * --firebase-domain <domain> Firebase auth domain
18
- *
19
- * Options:
20
- * --name <name> Your name (skips interactive prompt)
21
- * --model <id> Gemini model (default: gemini-2.5-flash)
22
- * --skip-upload Skip Firebase Storage uploads
23
- * --force-upload Upload even if remote file exists
24
- * --no-storage-url Disable Storage URL strategy for Gemini
25
- * --skip-compression Skip video compression (use existing segments)
26
- * --skip-gemini Skip Gemini AI analysis
27
- * --resume Resume from last checkpoint
28
- * --reanalyze Force re-analysis of all segments
29
- * --parallel <n> Max parallel uploads (default: 3)
30
- * --parallel-analysis <n> Max concurrent Gemini analyses (default: 2)
31
- * --thinking-budget <n> Gemini thinking token budget
32
- * --compilation-thinking-budget <n> Compilation thinking budget
33
- * --log-level <level> Log level: debug, info, warn, error
34
- * --output <dir> Custom output directory
35
- * --dry-run Show what would be done without executing
36
- * --dynamic Document-only mode (no video required)
37
- * --deep-dive Generate deep-dive documents after analysis
38
- * --request <text> Custom research prompt for deep-dive/dynamic
39
- * --update-progress Smart change detection & progress update
40
- * --repo <path> Git repo path for progress tracking
41
- * --no-focused-pass Disable focused re-analysis pass
42
- * --no-learning Disable learning loop
43
- * --no-diff Disable diff against previous run
44
- * --help, -h Show help
45
- * --version, -v Show version
46
- *
47
- * Project structure:
48
- * src/
49
- * config.js — Environment-based config with validation
50
- * logger.js — Buffered dual-file logger with levels
51
- * pipeline.js — Main orchestrator with CLI flags & progress
52
- * services/
53
- * firebase.js — Firebase init, upload with retry, exists checks
54
- * gemini.js — Gemini init, segment analysis with retry
55
- * git.js — Git CLI wrapper for change detection
56
- * video.js — ffmpeg compression, segmentation, probing
57
- * renderers/
58
- * markdown.js — Action-focused Markdown renderer
59
- * utils/
60
- * adaptive-budget.js — Transcript complexity → thinking budget
61
- * change-detector.js — Git + document change correlation engine
62
- * cli.js — CLI argument parser & interactive prompts
63
- * context-manager.js — Smart context prioritization for Gemini
64
- * cost-tracker.js — Model-specific token cost tracking
65
- * deep-dive.js — AI topic discovery & document generation
66
- * diff-engine.js — Compilation diff between runs
67
- * dynamic-mode.js — Document-only analysis mode
68
- * focused-reanalysis.js — Second-pass extraction for weak dimensions
69
- * format.js — Duration/size formatting helpers
70
- * fs.js — Recursive file discovery
71
- * health-dashboard.js — Quality report builder
72
- * json-parser.js — Robust JSON extraction from AI output
73
- * learning-loop.js — Cross-run history & trend analysis
74
- * progress.js — Pipeline checkpoint/resume persistence
75
- * progress-updater.js — Smart progress assessment & rendering
76
- * prompt.js — Interactive CLI prompts (stdin/stdout)
77
- * quality-gate.js — Multi-dimension confidence scoring
78
- * retry.js — Exponential backoff retry with parallelMap
12
+ * Run `taskex --help` for full CLI reference.
79
13
  */
80
-
81
- 'use strict';
82
-
83
- // ── Inject CLI config flags into process.env ──────────────────────────────
84
- // Must run BEFORE any require() that touches config.js / dotenv
85
- const { injectCliFlags } = require('./src/utils/inject-cli-flags');
86
- injectCliFlags();
87
-
88
- // ── Delegate to pipeline ──────────────────────────────────────────────────
89
- const { run, getLog } = require('./src/pipeline');
90
-
91
- run().catch(err => {
92
- // showHelp() throws with code HELP_SHOWN — clean exit, not an error
93
- if (err.code === 'HELP_SHOWN' || err.code === 'VERSION_SHOWN') {
94
- process.exit(0);
95
- }
96
-
97
- const log = getLog();
98
- if (log) {
99
- log.error(`FATAL: ${err.message || err}`);
100
- log.error(err.stack || '');
101
- log.step('FAILED');
102
- log.close();
103
- }
104
- process.stderr.write(`\nFATAL: ${err.message || err}\n`);
105
- process.stderr.write(`${err.stack || ''}\n`);
106
- process.exit(1);
107
- });
14
+ require('./bin/taskex');