task-summary-extractor 8.1.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 +605 -0
- package/EXPLORATION.md +451 -0
- package/QUICK_START.md +272 -0
- package/README.md +544 -0
- package/bin/taskex.js +64 -0
- package/package.json +63 -0
- package/process_and_upload.js +107 -0
- package/prompt.json +265 -0
- package/setup.js +505 -0
- package/src/config.js +327 -0
- package/src/logger.js +355 -0
- package/src/pipeline.js +2006 -0
- package/src/renderers/markdown.js +968 -0
- package/src/services/firebase.js +106 -0
- package/src/services/gemini.js +779 -0
- package/src/services/git.js +329 -0
- package/src/services/video.js +305 -0
- package/src/utils/adaptive-budget.js +266 -0
- package/src/utils/change-detector.js +466 -0
- package/src/utils/cli.js +415 -0
- package/src/utils/context-manager.js +499 -0
- package/src/utils/cost-tracker.js +156 -0
- package/src/utils/deep-dive.js +549 -0
- package/src/utils/diff-engine.js +315 -0
- package/src/utils/dynamic-mode.js +567 -0
- package/src/utils/focused-reanalysis.js +317 -0
- package/src/utils/format.js +32 -0
- package/src/utils/fs.js +39 -0
- package/src/utils/global-config.js +315 -0
- package/src/utils/health-dashboard.js +216 -0
- package/src/utils/inject-cli-flags.js +58 -0
- package/src/utils/json-parser.js +245 -0
- package/src/utils/learning-loop.js +301 -0
- package/src/utils/progress-updater.js +451 -0
- package/src/utils/progress.js +166 -0
- package/src/utils/prompt.js +32 -0
- package/src/utils/quality-gate.js +429 -0
- package/src/utils/retry.js +129 -0
package/QUICK_START.md
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Quick Start Guide
|
|
2
|
+
|
|
3
|
+
> From zero to your first analysis in **under 5 minutes**.
|
|
4
|
+
>
|
|
5
|
+
> For the full feature list, CLI reference, and configuration → [README.md](README.md)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Step 1: Install prerequisites
|
|
10
|
+
|
|
11
|
+
You need three things on your machine:
|
|
12
|
+
|
|
13
|
+
### Node.js (≥ 18)
|
|
14
|
+
|
|
15
|
+
Check: `node --version`
|
|
16
|
+
|
|
17
|
+
If not installed → [nodejs.org](https://nodejs.org/) (LTS recommended)
|
|
18
|
+
|
|
19
|
+
### ffmpeg
|
|
20
|
+
|
|
21
|
+
Check: `ffmpeg -version`
|
|
22
|
+
|
|
23
|
+
If not installed:
|
|
24
|
+
- **Windows**: [Download from gyan.dev](https://www.gyan.dev/ffmpeg/builds/) → extract → add the `bin` folder to your PATH
|
|
25
|
+
- **Mac**: `brew install ffmpeg`
|
|
26
|
+
- **Linux**: `sudo apt install ffmpeg`
|
|
27
|
+
|
|
28
|
+
> **How to add to PATH on Windows:**
|
|
29
|
+
> 1. Extract ffmpeg to `C:\ffmpeg`
|
|
30
|
+
> 2. Search "Environment Variables" in Start
|
|
31
|
+
> 3. Edit `Path` → Add `C:\ffmpeg\bin`
|
|
32
|
+
> 4. Restart your terminal
|
|
33
|
+
|
|
34
|
+
### Gemini API Key (free)
|
|
35
|
+
|
|
36
|
+
1. Go to [Google AI Studio](https://aistudio.google.com/apikey)
|
|
37
|
+
2. Sign in with your Google account
|
|
38
|
+
3. Click "Create API key"
|
|
39
|
+
4. Copy the key — you'll paste it in Step 2
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Step 2: Install the tool
|
|
44
|
+
|
|
45
|
+
**Option A — npm global install (recommended):**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install -g task-summary-extractor
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
That's it. `taskex` is now available system-wide.
|
|
52
|
+
|
|
53
|
+
Save your API key globally (one time):
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
taskex config
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This saves to `~/.taskexrc` — works across all projects.
|
|
60
|
+
|
|
61
|
+
**Option B — Clone the repo (development):**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
git clone https://github.com/youssefadel94/task-summary-extractor.git
|
|
65
|
+
cd task-summary-extractor
|
|
66
|
+
node setup.js
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The setup script will:
|
|
70
|
+
|
|
71
|
+
1. ✅ Check Node.js, ffmpeg, and git are installed
|
|
72
|
+
2. ✅ Run `npm install` (installs dependencies)
|
|
73
|
+
3. ✅ Create a `.env` file and ask for your Gemini API key
|
|
74
|
+
4. ✅ Set up `.gitignore` so your recordings and keys stay local
|
|
75
|
+
5. ✅ Create a sample folder to test with
|
|
76
|
+
6. ✅ Validate the pipeline loads correctly
|
|
77
|
+
|
|
78
|
+
**Just follow the prompts.** If anything fails, it tells you exactly what to fix.
|
|
79
|
+
|
|
80
|
+
> Already set up? Run `node setup.js --check` to validate your environment.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Step 3: Prepare your recording
|
|
85
|
+
|
|
86
|
+
Create a folder and put your video in it:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
my-meeting/
|
|
90
|
+
├── Meeting Recording.mp4 ← Your video file (required)
|
|
91
|
+
└── Meeting Recording.vtt ← Subtitles (optional, but highly recommended)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**That's the minimum.** You can optionally add more context:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
my-meeting/
|
|
98
|
+
├── Meeting Recording.mp4
|
|
99
|
+
├── Meeting Recording.vtt
|
|
100
|
+
├── agenda.md ← Meeting agenda
|
|
101
|
+
├── .tasks/ ← Context folder (gets priority)
|
|
102
|
+
│ ├── code-map.md ← What each module does
|
|
103
|
+
│ └── current-sprint.md ← What the team is working on
|
|
104
|
+
└── specs/
|
|
105
|
+
└── requirements.md ← Relevant specs
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The tool **automatically scans all subfolders** for documents. Use whatever structure fits your workflow.
|
|
109
|
+
|
|
110
|
+
**Supported files:**
|
|
111
|
+
- Video: `.mp4`, `.mkv`, `.webm`, `.avi`, `.mov`
|
|
112
|
+
- Docs: `.vtt`, `.srt`, `.txt`, `.md`, `.csv`, `.pdf`
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Step 4: Run it
|
|
117
|
+
|
|
118
|
+
### Option A: Interactive (easiest)
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
taskex
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The tool will:
|
|
125
|
+
1. Show available folders — pick one
|
|
126
|
+
2. Ask for your name
|
|
127
|
+
3. Show available Gemini models — pick one (or press Enter for default)
|
|
128
|
+
4. Run the full analysis pipeline
|
|
129
|
+
|
|
130
|
+
### Option B: Specify everything upfront
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
taskex --name "Your Name" "my-meeting"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Option C: Pass API key directly (no .env)
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
taskex --gemini-key "AIza..." --name "Your Name" "my-meeting"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Option D: Skip Firebase (local only)
|
|
143
|
+
|
|
144
|
+
If you don't have Firebase set up, add `--skip-upload`:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
taskex --name "Your Name" --skip-upload "my-meeting"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### What happens
|
|
151
|
+
|
|
152
|
+
The pipeline will:
|
|
153
|
+
1. **Compress** the video (~30s)
|
|
154
|
+
2. **Segment** it into ≤5 min chunks
|
|
155
|
+
3. **Upload** segments to Firebase Storage (if configured)
|
|
156
|
+
4. **Analyze** each segment with Gemini AI — uses Firebase Storage URL directly when available (skips separate Gemini upload)
|
|
157
|
+
5. **Quality check** — retry weak segments automatically (reuses file reference — no re-upload)
|
|
158
|
+
6. **Compile** results across all segments
|
|
159
|
+
7. **Output** `results.md` + `results.json`
|
|
160
|
+
|
|
161
|
+
> **Tip:** Use `--force-upload` to re-upload files that already exist in Storage. Use `--no-storage-url` to bypass Storage URL optimization and force Gemini File API uploads.
|
|
162
|
+
|
|
163
|
+
This takes **~2-5 minutes** depending on video length.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Step 5: View your results
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
my-meeting/runs/{timestamp}/
|
|
171
|
+
├── results.md ← Open this! Your task document
|
|
172
|
+
├── results.json ← Full pipeline data (JSON)
|
|
173
|
+
└── compilation.json ← All extracted items (JSON)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Open `results.md`** — it contains:
|
|
177
|
+
- Your personal task list (items assigned to you, TODOs, blockers)
|
|
178
|
+
- All tickets discussed with status, assignees, and confidence scores
|
|
179
|
+
- Change requests with file-level detail
|
|
180
|
+
- Action items with owners and deadlines
|
|
181
|
+
- Blockers and scope changes
|
|
182
|
+
- Confidence badges (🟢 HIGH, 🟡 MEDIUM, 🔴 LOW) on every item
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Try Dynamic Mode (no video needed)
|
|
187
|
+
|
|
188
|
+
Generate documents from a folder of docs:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
taskex --dynamic --request "Explain this codebase for new developers" "my-project"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Output:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
my-project/runs/{timestamp}/
|
|
198
|
+
├── INDEX.md ← Open this — document index
|
|
199
|
+
├── dm-01-overview.md
|
|
200
|
+
├── dm-02-guide.md
|
|
201
|
+
├── dm-03-analysis.md
|
|
202
|
+
└── dynamic-run.json
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Common Commands
|
|
208
|
+
|
|
209
|
+
| What You Want | Command |
|
|
210
|
+
|---------------|---------|
|
|
211
|
+
| **Interactive mode** | `taskex` |
|
|
212
|
+
| **Analyze a meeting** | `taskex --name "Jane" "my-meeting"` |
|
|
213
|
+
| **Save API key globally** | `taskex config` |
|
|
214
|
+
| **Pass API key inline** | `taskex --gemini-key "AIza..." "my-meeting"` |
|
|
215
|
+
| **Pick a specific model** | `taskex --model gemini-2.5-pro "my-meeting"` |
|
|
216
|
+
| **Run without Firebase** | `taskex --skip-upload "my-meeting"` |
|
|
217
|
+
| **Resume interrupted run** | `taskex --resume "my-meeting"` |
|
|
218
|
+
| **Force re-analysis** | `taskex --reanalyze "my-meeting"` |
|
|
219
|
+
| **Re-upload to Storage** | `taskex --force-upload "my-meeting"` |
|
|
220
|
+
| **Force Gemini File API** | `taskex --no-storage-url "my-meeting"` |
|
|
221
|
+
| **Preview without running** | `taskex --dry-run "my-meeting"` |
|
|
222
|
+
| **Deep dive docs** | `taskex --deep-dive "my-meeting"` |
|
|
223
|
+
| **Generate docs (no video)** | `taskex --dynamic "my-project"` |
|
|
224
|
+
| **Track progress via git** | `taskex --update-progress --repo "C:\project" "my-meeting"` |
|
|
225
|
+
|
|
226
|
+
> **Tip:** If the call folder isn't already a git repo, `--update-progress` auto-initializes one for baseline tracking.
|
|
227
|
+
| **Debug mode** | `taskex --log-level debug "my-meeting"` |
|
|
228
|
+
|
|
229
|
+
> Full CLI reference with all flags → [README.md — CLI Flags](README.md#cli-flags)
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Troubleshooting
|
|
234
|
+
|
|
235
|
+
| Problem | Fix |
|
|
236
|
+
|---------|-----|
|
|
237
|
+
| `ffmpeg not found` | [Download](https://www.gyan.dev/ffmpeg/builds/) → add `bin` folder to PATH → restart terminal |
|
|
238
|
+
| `GEMINI_API_KEY not set` | Run `taskex config` to save globally, or edit `.env` → paste from [AI Studio](https://aistudio.google.com/apikey) |
|
|
239
|
+
| `Cannot find module` | Run `npm install` |
|
|
240
|
+
| `ECONNREFUSED` | Check internet — Gemini API needs network access |
|
|
241
|
+
| Videos are slow | Normal — about 30-60 seconds per 5-minute segment |
|
|
242
|
+
| JSON parse warnings | Expected — the parser has 5 fallback strategies, usually self-corrects |
|
|
243
|
+
| Something broke | Run `node setup.js --check` to validate your setup |
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Updating the Tool
|
|
248
|
+
|
|
249
|
+
**npm global install:**
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm update -g task-summary-extractor
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Git clone:**
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
git checkout main
|
|
259
|
+
git pull
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Your recordings, `.env`, logs — everything local is `.gitignore`d and safe.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Next Steps
|
|
267
|
+
|
|
268
|
+
| What | Where |
|
|
269
|
+
|------|-------|
|
|
270
|
+
| Full feature list, all CLI flags, configuration | [README.md](README.md) |
|
|
271
|
+
| How the pipeline works internally | [ARCHITECTURE.md](ARCHITECTURE.md) |
|
|
272
|
+
| Module map, line counts, roadmap | [EXPLORATION.md](EXPLORATION.md) |
|