task-summary-extractor 8.1.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +17 -12
- package/EXPLORATION.md +25 -21
- package/README.md +23 -15
- package/package.json +2 -2
- package/process_and_upload.js +7 -100
- package/prompt.json +199 -131
- package/src/{utils → modes}/deep-dive.js +2 -2
- package/src/{utils → modes}/dynamic-mode.js +2 -2
- package/src/{utils → modes}/focused-reanalysis.js +2 -2
- package/src/{utils → modes}/progress-updater.js +1 -1
- package/src/pipeline.js +9 -8
- package/src/services/gemini.js +4 -4
- package/src/services/git.js +0 -29
- package/src/utils/adaptive-budget.js +0 -2
- package/src/utils/cli.js +30 -3
- package/src/utils/context-manager.js +0 -4
- package/src/utils/diff-engine.js +0 -3
- package/src/utils/json-parser.js +1 -1
- package/src/utils/learning-loop.js +0 -1
- package/src/utils/quality-gate.js +0 -6
- package/src/utils/retry.js +10 -4
- package/src/utils/prompt.js +0 -32
- /package/src/{utils → modes}/change-detector.js +0 -0
- /package/src/utils/{progress.js → checkpoint.js} +0 -0
package/ARCHITECTURE.md
CHANGED
|
@@ -76,20 +76,23 @@ flowchart TB
|
|
|
76
76
|
GIT["git.js"]
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
subgraph Utils["Utilities
|
|
79
|
+
subgraph Utils["Utilities"]
|
|
80
80
|
QG["quality-gate"]
|
|
81
|
-
FR["focused-reanalysis"]
|
|
82
81
|
LL["learning-loop"]
|
|
83
82
|
DE["diff-engine"]
|
|
84
|
-
CD["change-detector"]
|
|
85
|
-
PU["progress-updater"]
|
|
86
83
|
CM["context-manager"]
|
|
87
84
|
JP["json-parser"]
|
|
88
85
|
AB["adaptive-budget"]
|
|
89
86
|
HD["health-dashboard"]
|
|
87
|
+
OT["+ 7 more"]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
subgraph Modes["Modes — AI pipeline phases"]
|
|
91
|
+
FR["focused-reanalysis"]
|
|
92
|
+
CD["change-detector"]
|
|
93
|
+
PU["progress-updater"]
|
|
90
94
|
DD["deep-dive"]
|
|
91
95
|
DM["dynamic-mode"]
|
|
92
|
-
OT["+ 7 more"]
|
|
93
96
|
end
|
|
94
97
|
|
|
95
98
|
subgraph Renderers["Renderers"]
|
|
@@ -101,6 +104,7 @@ flowchart TB
|
|
|
101
104
|
P1 -.->|"--dynamic"| DYN
|
|
102
105
|
Pipeline --> Services
|
|
103
106
|
Pipeline --> Utils
|
|
107
|
+
Pipeline --> Modes
|
|
104
108
|
Pipeline --> Renderers
|
|
105
109
|
UP --> GIT
|
|
106
110
|
UP --> CD
|
|
@@ -115,7 +119,7 @@ flowchart TB
|
|
|
115
119
|
| Phase | Name | What Happens |
|
|
116
120
|
|-------|------|-------------|
|
|
117
121
|
| 1 | **Init** | CLI parsing, interactive folder selection (if no arg), config validation, logger setup, load learning insights, route to dynamic/progress mode |
|
|
118
|
-
| 2 | **Discover** | Find videos, discover documents, resolve user name, check resume state |
|
|
122
|
+
| 2 | **Discover** | Find videos/audio, discover documents, resolve user name, check resume state |
|
|
119
123
|
| 3 | **Services** | Firebase auth, Gemini init, prepare document parts |
|
|
120
124
|
| 4 | **Process** | Compress → Upload → Analyze → Quality Gate → Retry → Focused Pass |
|
|
121
125
|
| 5 | **Compile** | Cross-segment compilation, diff engine comparison |
|
|
@@ -294,17 +298,17 @@ flowchart TB
|
|
|
294
298
|
|
|
295
299
|
## Extraction Schema
|
|
296
300
|
|
|
297
|
-
The AI extracts 6 structured categories from
|
|
301
|
+
The AI extracts 6 structured categories from any content source (video, audio, documents, or mixed). The prompt auto-detects the input type and adapts: temporal content (video/audio) gets timestamps; document-only content uses section references and null timestamps. All field names remain identical regardless of input type for backward compatibility.
|
|
298
302
|
|
|
299
303
|
### Categories
|
|
300
304
|
|
|
301
305
|
| Category | Key Fields | Adapts To |
|
|
302
306
|
|----------|-----------|----------|
|
|
303
|
-
| **Tickets / Items** | `ticket_id`, `title`, `status`, `assignee`, `reviewer`, `video_segments` with timestamps, `speaker_comments`, `details` with priority, confidence | Sprint items, requirements, interview topics, incident items |
|
|
304
|
-
| **Change Requests** | `WHERE` (target: file, system, process, scope), `WHAT` (specific change), `HOW` (approach), `WHY` (justification), `dependencies`, `blocked_by`, confidence | Code changes, requirement changes, process changes, scope adjustments |
|
|
305
|
-
| **References** | `name`, `type`, `role`, cross-refs to tickets & CRs, `context_doc_match` | Files, documents, URLs, tools, systems, resources mentioned |
|
|
306
|
-
| **Action Items** | `description`, `assigned_to`, `status`, `deadline`, `dependencies`, related tickets & CRs, confidence | Any follow-up work discussed |
|
|
307
|
-
| **Blockers** | `description`, `severity`, `owner`, `status`, `proposed_resolution`, confidence | Technical blockers, approval gates, resource constraints |
|
|
307
|
+
| **Tickets / Items** | `ticket_id`, `title`, `status`, `assignee`, `reviewer`, `video_segments` with timestamps (or null for docs), `speaker_comments`, `details` with priority, confidence | Sprint items, requirements, interview topics, incident items, legal matters, deals |
|
|
308
|
+
| **Change Requests** | `WHERE` (target: file, system, process, scope), `WHAT` (specific change), `HOW` (approach), `WHY` (justification), `dependencies`, `blocked_by`, confidence | Code changes, requirement changes, process changes, scope adjustments, contract revisions, policy updates |
|
|
309
|
+
| **References** | `name`, `type`, `role`, cross-refs to tickets & CRs, `context_doc_match` | Files, documents, URLs, tools, systems, resources, contracts, reports mentioned |
|
|
310
|
+
| **Action Items** | `description`, `assigned_to`, `status`, `deadline`, `dependencies`, related tickets & CRs, confidence | Any follow-up work discussed or documented |
|
|
311
|
+
| **Blockers** | `description`, `severity`, `owner`, `status`, `proposed_resolution`, confidence | Technical blockers, approval gates, resource constraints, legal reviews, budget approvals |
|
|
308
312
|
| **Scope Changes** | `type` (added/removed/deferred), `original` vs `new` scope, `decided_by`, `impact`, confidence | Feature scope, project scope, contract scope, training scope |
|
|
309
313
|
|
|
310
314
|
### Personalized Task Section
|
|
@@ -500,6 +504,7 @@ taskex --dynamic --request "Document this microservices architecture"
|
|
|
500
504
|
|-----------|--------|-------------|
|
|
501
505
|
| `.vtt` `.srt` `.txt` `.md` `.csv` | Inline text | Read and passed directly as text parts |
|
|
502
506
|
| `.pdf` | Gemini File API | Uploaded as binary, Gemini processes natively |
|
|
507
|
+
| `.mp3` `.wav` `.ogg` `.m4a` | Gemini File API | Uploaded as audio, Gemini processes natively |
|
|
503
508
|
| `.docx` `.doc` | Firebase only | Uploaded for archival, not processable by Gemini |
|
|
504
509
|
|
|
505
510
|
Directories skipped during recursive discovery: `node_modules`, `.git`, `compressed`, `logs`, `gemini_runs`, `runs`
|
package/EXPLORATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Task Summary Extractor — Where We Are & Where We Can Go
|
|
2
2
|
|
|
3
|
-
> **Version 8.
|
|
3
|
+
> **Version 8.3.0** — February 2026
|
|
4
4
|
> Module map, codebase stats, and future roadmap.
|
|
5
5
|
> For setup and CLI reference, see [README.md](README.md) · [Quick Start](QUICK_START.md)
|
|
6
6
|
> For architecture diagrams and algorithms, see [ARCHITECTURE.md](ARCHITECTURE.md)
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
| Config + Logger | 2 | 578 |
|
|
67
67
|
| Entry points (taskex + legacy) | 2 | 165 |
|
|
68
68
|
| Setup script | 1 | 505 |
|
|
69
|
-
| Prompt (JSON) | 1 |
|
|
69
|
+
| Prompt (JSON) | 1 | 308 |
|
|
70
70
|
| **Total** | **33 files** | **~10,600 lines** |
|
|
71
71
|
|
|
72
72
|
### Version History
|
|
@@ -85,6 +85,8 @@
|
|
|
85
85
|
| **v7.2.1** | Storage URL + Audit | Firebase Storage URLs as Gemini External URLs (skip File API upload), 3-strategy file resolution, URI reuse for retry/focused pass, Gemini file cleanup, confidence % fix, logger/firebase/git/version fixes |
|
|
86
86
|
| **v7.2.2** | Upload Control | `--force-upload` to re-upload existing files, `--no-storage-url` to force Gemini File API, production-ready docs |
|
|
87
87
|
| **v8.1.0** | Smart Global Config | Persistent `~/.taskexrc` config, `taskex config` subcommand, first-run API key prompting, 5-level config resolution, production audit (14 fixes), shared CLI flag injection, boolean flag parser fix |
|
|
88
|
+
| **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` |
|
|
89
|
+
| **v8.3.0** | Universal Content Analysis | prompt.json v4.0.0 — input type auto-detection (video/audio/document/mixed), timestamps conditional, domain-adaptive extraction for any content source, gemini.js bridge text generalized |
|
|
88
90
|
| **v8.0.0** | npm Package | Global CLI (`taskex`), `--gemini-key`/`--firebase-*` config flags, CWD-based path resolution, CWD-first `.env`, `bin/taskex.js` entry point, npm publish-ready `package.json` |
|
|
89
91
|
| **v7.2.3** | Production Hardening | Cross-platform ffmpeg detection, shell injection fix (spawnSync), auto git init for `--update-progress`, `runs/` excluded from doc discovery, entry point docs updated |
|
|
90
92
|
|
|
@@ -176,7 +178,7 @@ The logger now writes **three parallel outputs**:
|
|
|
176
178
|
| Adaptive Thinking Budget | `adaptive-budget.js` | Segment position, complexity, context docs → dynamic 8K–32K range |
|
|
177
179
|
| Smart Boundary Detection | `context-manager.js` | Mid-conversation detection, open ticket carry-forward, continuity hints |
|
|
178
180
|
| Health Dashboard | `health-dashboard.js` | Quality scores, extraction density bars, retry stats, efficiency metrics |
|
|
179
|
-
| Enhanced Prompt | `prompt.json` |
|
|
181
|
+
| Enhanced Prompt | `prompt.json` | Universal content analysis (v4.0.0): input type detection, timestamps conditional on content type, domain-adaptive extraction, self-verification checklist |
|
|
180
182
|
|
|
181
183
|
### Current Capabilities
|
|
182
184
|
|
|
@@ -270,36 +272,38 @@ src/
|
|
|
270
272
|
├── config.js 277 ln Central config, env vars, model registry, validation
|
|
271
273
|
├── logger.js 306 ln ★ v6 — Triple output: detailed + minimal + structured JSONL, phase spans, metrics
|
|
272
274
|
├── pipeline.js 1,985 ln Multi-mode orchestrator with Storage URL optimization, upload control flags, learning loop, focused re-analysis, diff engine, deep-dive, dynamic, auto git init
|
|
275
|
+
├── modes/ ★ v8.2.0 — AI-heavy pipeline phase modules
|
|
276
|
+
│ ├── change-detector.js 417 ln Git-based change correlation engine
|
|
277
|
+
│ ├── deep-dive.js 473 ln ★ v6.2 — Topic discovery, parallel doc generation, index builder
|
|
278
|
+
│ ├── dynamic-mode.js 494 ln ★ v7.0 — Context-only doc generation, topic planning, parallel writing
|
|
279
|
+
│ ├── focused-reanalysis.js 268 ln ★ v6 — Weakness detection, targeted second pass, intelligent merge
|
|
280
|
+
│ └── progress-updater.js 402 ln ★ v6.1 — AI-powered progress assessment, status report generation
|
|
273
281
|
├── renderers/
|
|
274
282
|
│ └── markdown.js 879 ln ★ v6 — Confidence badges (🟢🟡🔴), confidence distribution table, diff section
|
|
275
283
|
├── services/
|
|
276
284
|
│ ├── firebase.js 92 ln Init, upload, exists check (with retry, async I/O)
|
|
277
285
|
│ ├── gemini.js 677 ln ★ v7.2.1 — 3-strategy file resolution, External URL support, cleanup, doc prep, analysis, compilation
|
|
278
|
-
│ ├── git.js
|
|
286
|
+
│ ├── git.js 310 ln ★ v7.2.3 — Git CLI wrapper: log, diff, status, changed files, auto-init
|
|
279
287
|
│ └── video.js 285 ln ★ v7.2.3 — ffmpeg compress, segment, probe (cross-platform, spawnSync)
|
|
280
|
-
└── utils/
|
|
288
|
+
└── utils/ Pure utilities — parsing, retry, budget, config
|
|
281
289
|
├── adaptive-budget.js 232 ln ★ v5 — Transcript complexity → dynamic budget
|
|
282
|
-
├──
|
|
283
|
-
├── cli.js
|
|
290
|
+
├── checkpoint.js 145 ln Checkpoint/resume persistence (renamed from progress.js in v8.2.0)
|
|
291
|
+
├── cli.js 415 ln ★ v8.0.0 — Interactive prompts, model selector, folder picker, config flags, taskex help
|
|
284
292
|
├── context-manager.js 424 ln 4-tier priority, VTT slicing, progressive context, boundary detection
|
|
285
293
|
├── cost-tracker.js 140 ln Token counting, USD cost estimation (+ focused pass tracking)
|
|
286
|
-
├── deep-dive.js 473 ln ★ v6.2 — Topic discovery, parallel doc generation, index builder
|
|
287
294
|
├── diff-engine.js 280 ln ★ v6 — Cross-run delta: new/removed/changed items, Markdown rendering
|
|
288
|
-
├── dynamic-mode.js 494 ln ★ v7.0 — Context-only doc generation, topic planning, parallel writing
|
|
289
|
-
├── focused-reanalysis.js 268 ln ★ v6 — Weakness detection, targeted second pass, intelligent merge
|
|
290
295
|
├── format.js 27 ln Duration, bytes formatting
|
|
291
296
|
├── fs.js 40 ln Recursive doc finder (skips runs/)
|
|
297
|
+
├── global-config.js 320 ln ★ v8.1.0 — ~/.taskexrc persistent config, interactive setup
|
|
292
298
|
├── health-dashboard.js 191 ln ★ v5 — Quality report, density bars, efficiency metrics
|
|
299
|
+
├── inject-cli-flags.js 58 ln ★ v8.1.0 — CLI flag → env var injection
|
|
293
300
|
├── json-parser.js 216 ln 5-strategy JSON extraction + repair
|
|
294
301
|
├── learning-loop.js 270 ln ★ v6 — History I/O, trend analysis, budget auto-tuning, recommendations
|
|
295
|
-
├── progress.js 145 ln Checkpoint/resume persistence
|
|
296
|
-
├── progress-updater.js 402 ln ★ v6.1 — AI-powered progress assessment, status report generation
|
|
297
|
-
├── prompt.js 28 ln Interactive user prompts
|
|
298
302
|
├── quality-gate.js 372 ln ★ v6 — 4+1 dimension scoring (+ confidence coverage), retry hints
|
|
299
|
-
└── retry.js 112 ln Exponential backoff, parallel map
|
|
303
|
+
└── retry.js 112 ln Exponential backoff, parallel map (self-contained defaults)
|
|
300
304
|
|
|
301
|
-
prompt.json
|
|
302
|
-
process_and_upload.js
|
|
305
|
+
prompt.json 308 ln ★ v4.0.0 — Universal content analysis: video, audio, documents, mixed input; auto-detects input type + domain
|
|
306
|
+
process_and_upload.js 14 ln Backward-compatible shim — delegates to bin/taskex.js
|
|
303
307
|
setup.js 505 ln Automated first-time setup & environment validation (v8.0.0)
|
|
304
308
|
```
|
|
305
309
|
|
|
@@ -314,14 +318,14 @@ The following features from the original exploration have been **fully implement
|
|
|
314
318
|
| Feature | Status | Implemented In |
|
|
315
319
|
|---------|--------|----------------|
|
|
316
320
|
| 📊 Confidence Scoring Per Extracted Item | ✅ Done | `prompt.json`, `quality-gate.js`, `markdown.js` |
|
|
317
|
-
| 🔄 Multi-Pass Analysis (Focused Re-extraction) | ✅ Done | `focused-reanalysis.js` (268 ln), pipeline integration |
|
|
321
|
+
| 🔄 Multi-Pass Analysis (Focused Re-extraction) | ✅ Done | `modes/focused-reanalysis.js` (268 ln), pipeline integration |
|
|
318
322
|
| 🧠 Learning & Improvement Loop | ✅ Done | `learning-loop.js` (270 ln), pipeline init + save |
|
|
319
323
|
| 📝 Diff-Aware Compilation | ✅ Done | `diff-engine.js` (280 ln), pipeline output + MD |
|
|
320
324
|
| 🔍 Structured Logging & Observability | ✅ Done | `logger.js` rewritten (303 ln), JSONL + spans + metrics |
|
|
321
325
|
| Parallel segment analysis (via CLI) | ✅ Done | `--parallel-analysis` flag, pipeline batching |
|
|
322
|
-
| 🔎 Smart Change Detection & Progress Tracking | ✅ Done | `git.js` (
|
|
323
|
-
| 🗓️ Deep Dive Document Generation | ✅ Done | `deep-dive.js` (473 ln), pipeline phase 9 |
|
|
324
|
-
| 📝 Dynamic Mode (doc-only generation) | ✅ Done | `dynamic-mode.js` (494 ln), pipeline `--dynamic` route |
|
|
326
|
+
| 🔎 Smart Change Detection & Progress Tracking | ✅ Done | `git.js` (310 ln), `modes/change-detector.js` (417 ln), `modes/progress-updater.js` (402 ln), pipeline `--update-progress` mode |
|
|
327
|
+
| 🗓️ Deep Dive Document Generation | ✅ Done | `modes/deep-dive.js` (473 ln), pipeline phase 9 |
|
|
328
|
+
| 📝 Dynamic Mode (doc-only generation) | ✅ Done | `modes/dynamic-mode.js` (494 ln), pipeline `--dynamic` route |
|
|
325
329
|
| 🤖 Runtime Model Selection | ✅ Done | `config.js` model registry, `cli.js` selector, `--model` flag |
|
|
326
330
|
|
|
327
331
|
---
|
|
@@ -416,7 +420,7 @@ The following features from the original exploration have been **fully implement
|
|
|
416
420
|
| **Slack webhook** — post summary to a channel | ~1 hr | Team-wide visibility |
|
|
417
421
|
| **Segment preview** — show first 3 VTT lines per segment before analyzing | ~30 min | Better UX during processing |
|
|
418
422
|
| **Custom output templates** — Handlebars/Mustache for MD output | ~4 hrs | Teams customize report format |
|
|
419
|
-
|
|
|
423
|
+
| **~~Audio-only mode~~** | ~~Done~~ | prompt.json v4.0.0 supports audio/doc/mixed — pipeline video requirement is next |
|
|
420
424
|
| **Watch mode** — monitor a folder and auto-process new recordings | ~3 hrs | Hands-free automation |
|
|
421
425
|
| **Git integration** — auto-commit results to repo | ~1 hr | Version-controlled meeting history |
|
|
422
426
|
| **Confidence threshold filter** — CLI flag to exclude LOW confidence items from output | ~1 hr | Cleaner reports on demand |
|
package/README.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Task Summary Extractor
|
|
2
2
|
|
|
3
|
-
> **v8.
|
|
3
|
+
> **v8.3.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.
|
|
9
|
+
<img src="https://img.shields.io/badge/version-8.3.0-brightgreen" alt="Version" />
|
|
10
10
|
<img src="https://img.shields.io/badge/npm-task--summary--extractor-red" alt="npm" />
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**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
14
|
|
|
15
15
|
📖 **New here?** Jump to [Setup (3 steps)](#setup-3-steps) — you'll be running in under 5 minutes.
|
|
16
16
|
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
## What It Does
|
|
20
20
|
|
|
21
|
-
### 🎥
|
|
21
|
+
### 🎥 Content Analysis (default mode)
|
|
22
22
|
|
|
23
|
-
Drop a recording in a folder → run the tool → get a Markdown task document with:
|
|
23
|
+
Drop a recording (video/audio) or documents in a folder → run the tool → get a Markdown task document with:
|
|
24
24
|
|
|
25
25
|
- **Tickets** — ID, title, status, assignee, confidence score
|
|
26
26
|
- **Change Requests** — what changed, where, how, why
|
|
@@ -191,7 +191,7 @@ Choose what the tool does. Only use one at a time:
|
|
|
191
191
|
|
|
192
192
|
| Flag | Mode | What You Get |
|
|
193
193
|
|------|------|-------------|
|
|
194
|
-
| *(none)* | **
|
|
194
|
+
| *(none)* | **Content analysis** | `results.md` — structured task document |
|
|
195
195
|
| `--dynamic` | **Doc generation** | `INDEX.md` + 3–15 topic documents |
|
|
196
196
|
| `--deep-dive` | **Topic explainers** | `INDEX.md` + per-topic deep-dive docs |
|
|
197
197
|
| `--update-progress` | **Progress check** | `progress.md` — item status via git |
|
|
@@ -271,7 +271,7 @@ INFO --help (-h) --version (-v)
|
|
|
271
271
|
|
|
272
272
|
## Output
|
|
273
273
|
|
|
274
|
-
###
|
|
274
|
+
### Content Analysis
|
|
275
275
|
|
|
276
276
|
```
|
|
277
277
|
my-meeting/runs/{timestamp}/
|
|
@@ -312,12 +312,12 @@ my-meeting/runs/{timestamp}/
|
|
|
312
312
|
|
|
313
313
|
## Folder Setup Tips
|
|
314
314
|
|
|
315
|
-
Drop
|
|
315
|
+
Drop content files and supporting docs in a folder. **More context = better extraction.**
|
|
316
316
|
|
|
317
317
|
```
|
|
318
318
|
my-meeting/
|
|
319
|
-
├── Recording.mp4 ← Video (
|
|
320
|
-
├── Recording.vtt ← Subtitles (highly recommended)
|
|
319
|
+
├── Recording.mp4 ← Video recording (primary for video mode)
|
|
320
|
+
├── Recording.vtt ← Subtitles (highly recommended for recordings)
|
|
321
321
|
├── agenda.md ← Loose docs at root are fine
|
|
322
322
|
│
|
|
323
323
|
├── .tasks/ ← Gets priority weighting (optional)
|
|
@@ -328,7 +328,7 @@ my-meeting/
|
|
|
328
328
|
└── requirements.md
|
|
329
329
|
```
|
|
330
330
|
|
|
331
|
-
**Supported formats:** `.mp4` `.mkv` `.webm` `.avi` `.mov` (video) · `.vtt` `.srt` `.txt` `.md` `.csv` `.pdf` (docs)
|
|
331
|
+
**Supported formats:** `.mp4` `.mkv` `.webm` `.avi` `.mov` (video) · `.mp3` `.wav` `.ogg` `.m4a` (audio) · `.vtt` `.srt` `.txt` `.md` `.csv` `.pdf` (docs)
|
|
332
332
|
|
|
333
333
|
The tool **recursively scans all subfolders**. `.tasks/` gets highest priority weighting but everything is included.
|
|
334
334
|
|
|
@@ -406,7 +406,7 @@ GEMINI_API_KEY=your-key-here
|
|
|
406
406
|
|
|
407
407
|
| Feature | Description |
|
|
408
408
|
|---------|-------------|
|
|
409
|
-
| **Video Compression** | H.264 CRF 24, text-optimized sharpening, configurable speed |
|
|
409
|
+
| **Video/Audio Compression** | H.264 CRF 24, text-optimized sharpening, configurable speed |
|
|
410
410
|
| **Smart Segmentation** | ≤5 min chunks with boundary-aware splitting |
|
|
411
411
|
| **Cross-Segment Continuity** | Ticket IDs, names, and context carry forward |
|
|
412
412
|
| **Document Discovery** | Auto-finds docs in all subfolders |
|
|
@@ -468,7 +468,7 @@ Your call folders, `.env`, logs, and videos are all `.gitignore`d — nothing ge
|
|
|
468
468
|
task-summary-extractor/
|
|
469
469
|
├── bin/
|
|
470
470
|
│ └── taskex.js Global CLI entry point
|
|
471
|
-
├── process_and_upload.js Backward-compatible entry
|
|
471
|
+
├── process_and_upload.js Backward-compatible entry (delegates to bin/taskex)
|
|
472
472
|
├── setup.js First-time setup & validation
|
|
473
473
|
├── package.json Dependencies, scripts, bin config
|
|
474
474
|
├── prompt.json Gemini extraction prompt
|
|
@@ -476,15 +476,21 @@ task-summary-extractor/
|
|
|
476
476
|
├── src/
|
|
477
477
|
│ ├── config.js Config, model registry, env vars
|
|
478
478
|
│ ├── logger.js Structured JSONL logger (triple output)
|
|
479
|
-
│ ├── pipeline.js Multi-mode orchestrator (
|
|
479
|
+
│ ├── pipeline.js Multi-mode orchestrator (~2,000 lines)
|
|
480
480
|
│ ├── services/
|
|
481
481
|
│ │ ├── gemini.js Gemini AI — 3-strategy file resolution + External URL support
|
|
482
482
|
│ │ ├── firebase.js Firebase Storage (async I/O)
|
|
483
483
|
│ │ ├── video.js ffmpeg compression
|
|
484
484
|
│ │ └── git.js Git CLI wrapper
|
|
485
|
+
│ ├── modes/ AI-heavy pipeline phase modules
|
|
486
|
+
│ │ ├── deep-dive.js Topic discovery & deep-dive doc generation
|
|
487
|
+
│ │ ├── dynamic-mode.js Dynamic document planning & generation
|
|
488
|
+
│ │ ├── focused-reanalysis.js Targeted reanalysis of weak segments
|
|
489
|
+
│ │ ├── progress-updater.js Git-based progress assessment
|
|
490
|
+
│ │ └── change-detector.js Git change correlation engine
|
|
485
491
|
│ ├── renderers/
|
|
486
492
|
│ │ └── markdown.js Report renderer
|
|
487
|
-
│ └── utils/
|
|
493
|
+
│ └── utils/ Pure utilities — parsing, retry, budget, config
|
|
488
494
|
│
|
|
489
495
|
├── QUICK_START.md Step-by-step setup guide
|
|
490
496
|
├── ARCHITECTURE.md Technical deep dive
|
|
@@ -512,6 +518,8 @@ task-summary-extractor/
|
|
|
512
518
|
|
|
513
519
|
| Version | Highlights |
|
|
514
520
|
|---------|-----------|
|
|
521
|
+
| **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 |
|
|
522
|
+
| **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
523
|
| **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
524
|
| **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
525
|
| **v7.2.3** | Production hardening — cross-platform ffmpeg, shell injection fix, auto git init for progress tracking, `runs/` excluded from doc discovery |
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-summary-extractor",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.3.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": "
|
|
7
|
+
"taskex": "bin/taskex.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"bin/",
|
package/process_and_upload.js
CHANGED
|
@@ -1,107 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Backward-compatible entry point — delegates to bin/taskex.js.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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]
|
|
9
|
+
* taskex [options] [folder] (recommended)
|
|
10
|
+
* node process_and_upload.js [options] [folder] (legacy)
|
|
11
11
|
*
|
|
12
|
-
*
|
|
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');
|