@redaksjon/protokoll 0.0.13 → 0.0.14
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/README.md +198 -0
- package/dist/feedback.js +5193 -0
- package/dist/feedback.js.map +1 -0
- package/dist/main.js +1858 -9
- package/dist/main.js.map +1 -1
- package/dist/mcp/server.js +1330 -0
- package/dist/mcp/server.js.map +1 -0
- package/guide/index.md +16 -0
- package/guide/mcp-integration.md +341 -0
- package/package.json +5 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/vite.config.ts +13 -29
- package/dist/agentic/executor.js +0 -747
- package/dist/agentic/executor.js.map +0 -1
- package/dist/agentic/index.js +0 -19
- package/dist/agentic/index.js.map +0 -1
- package/dist/agentic/registry.js +0 -41
- package/dist/agentic/registry.js.map +0 -1
- package/dist/agentic/tools/lookup-person.js +0 -185
- package/dist/agentic/tools/lookup-person.js.map +0 -1
- package/dist/agentic/tools/lookup-project.js +0 -210
- package/dist/agentic/tools/lookup-project.js.map +0 -1
- package/dist/agentic/tools/route-note.js +0 -49
- package/dist/agentic/tools/route-note.js.map +0 -1
- package/dist/agentic/tools/store-context.js +0 -51
- package/dist/agentic/tools/store-context.js.map +0 -1
- package/dist/agentic/tools/verify-spelling.js +0 -57
- package/dist/agentic/tools/verify-spelling.js.map +0 -1
- package/dist/arguments.js +0 -178
- package/dist/arguments.js.map +0 -1
- package/dist/cli/action.js +0 -704
- package/dist/cli/action.js.map +0 -1
- package/dist/cli/config.js +0 -482
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/context.js +0 -466
- package/dist/cli/context.js.map +0 -1
- package/dist/cli/feedback.js +0 -858
- package/dist/cli/feedback.js.map +0 -1
- package/dist/cli/index.js +0 -103
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/install.js +0 -572
- package/dist/cli/install.js.map +0 -1
- package/dist/cli/transcript.js +0 -199
- package/dist/cli/transcript.js.map +0 -1
- package/dist/constants.js +0 -91
- package/dist/constants.js.map +0 -1
- package/dist/context/discovery.js +0 -114
- package/dist/context/discovery.js.map +0 -1
- package/dist/context/index.js +0 -82
- package/dist/context/index.js.map +0 -1
- package/dist/context/storage.js +0 -184
- package/dist/context/storage.js.map +0 -1
- package/dist/interactive/handler.js +0 -524
- package/dist/interactive/handler.js.map +0 -1
- package/dist/interactive/index.js +0 -18
- package/dist/interactive/index.js.map +0 -1
- package/dist/interactive/onboarding.js +0 -28
- package/dist/interactive/onboarding.js.map +0 -1
- package/dist/logging.js +0 -46
- package/dist/logging.js.map +0 -1
- package/dist/output/index.js +0 -8
- package/dist/output/index.js.map +0 -1
- package/dist/output/manager.js +0 -150
- package/dist/output/manager.js.map +0 -1
- package/dist/phases/complete.js +0 -142
- package/dist/phases/complete.js.map +0 -1
- package/dist/phases/locate.js +0 -64
- package/dist/phases/locate.js.map +0 -1
- package/dist/pipeline/index.js +0 -8
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/orchestrator.js +0 -354
- package/dist/pipeline/orchestrator.js.map +0 -1
- package/dist/protokoll.js +0 -180
- package/dist/protokoll.js.map +0 -1
- package/dist/reasoning/client.js +0 -233
- package/dist/reasoning/client.js.map +0 -1
- package/dist/reasoning/index.js +0 -37
- package/dist/reasoning/index.js.map +0 -1
- package/dist/reasoning/strategy.js +0 -60
- package/dist/reasoning/strategy.js.map +0 -1
- package/dist/reflection/collector.js +0 -124
- package/dist/reflection/collector.js.map +0 -1
- package/dist/reflection/index.js +0 -16
- package/dist/reflection/index.js.map +0 -1
- package/dist/reflection/reporter.js +0 -238
- package/dist/reflection/reporter.js.map +0 -1
- package/dist/routing/classifier.js +0 -201
- package/dist/routing/classifier.js.map +0 -1
- package/dist/routing/index.js +0 -27
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/router.js +0 -153
- package/dist/routing/router.js.map +0 -1
- package/dist/transcription/index.js +0 -41
- package/dist/transcription/index.js.map +0 -1
- package/dist/transcription/service.js +0 -64
- package/dist/transcription/service.js.map +0 -1
- package/dist/transcription/types.js +0 -31
- package/dist/transcription/types.js.map +0 -1
- package/dist/util/dates.js +0 -96
- package/dist/util/dates.js.map +0 -1
- package/dist/util/media.js +0 -103
- package/dist/util/media.js.map +0 -1
- package/dist/util/metadata.js +0 -95
- package/dist/util/metadata.js.map +0 -1
- package/dist/util/sound.js +0 -116
- package/dist/util/sound.js.map +0 -1
- package/dist/util/storage.js +0 -135
- package/dist/util/storage.js.map +0 -1
package/README.md
CHANGED
|
@@ -94,6 +94,7 @@ The goal is simple: **After a few weeks of use, Protokoll should understand your
|
|
|
94
94
|
- [Output Structure](#output-structure)
|
|
95
95
|
- [Supported Models](#supported-models)
|
|
96
96
|
- [Troubleshooting](#troubleshooting)
|
|
97
|
+
- [MCP Server Integration](#mcp-server-integration)
|
|
97
98
|
- [Architecture](#architecture)
|
|
98
99
|
- [Examples](#examples)
|
|
99
100
|
|
|
@@ -1263,6 +1264,203 @@ Check `./output/protokoll/` for:
|
|
|
1263
1264
|
- LLM requests/responses
|
|
1264
1265
|
- Routing decisions
|
|
1265
1266
|
|
|
1267
|
+
## MCP Server Integration
|
|
1268
|
+
|
|
1269
|
+
Protokoll can run as an MCP (Model Context Protocol) server, allowing AI assistants like Cursor and Claude to interact with transcription and context management directly—without needing to understand command-line interfaces.
|
|
1270
|
+
|
|
1271
|
+
### Why MCP?
|
|
1272
|
+
|
|
1273
|
+
Traditional workflow:
|
|
1274
|
+
1. Open terminal
|
|
1275
|
+
2. Navigate to directory
|
|
1276
|
+
3. Remember command syntax
|
|
1277
|
+
4. Copy-paste file paths
|
|
1278
|
+
5. Run commands
|
|
1279
|
+
|
|
1280
|
+
With MCP, you just talk naturally:
|
|
1281
|
+
- *"Can you transcribe this meeting recording?"*
|
|
1282
|
+
- *"Add Sanjay Gupta as a person - Whisper mishears him as 'San Jay Grouper'"*
|
|
1283
|
+
- *"This should be in the Quantum Readiness project"*
|
|
1284
|
+
|
|
1285
|
+
The AI handles all the details.
|
|
1286
|
+
|
|
1287
|
+
### Project-Aware Configuration
|
|
1288
|
+
|
|
1289
|
+
**Important**: Protokoll supports multiple project configurations. When you have different `.protokoll` directories for different projects, the MCP server intelligently discovers and uses the right configuration.
|
|
1290
|
+
|
|
1291
|
+
#### How It Works
|
|
1292
|
+
|
|
1293
|
+
When you ask to transcribe a file, the AI:
|
|
1294
|
+
|
|
1295
|
+
1. **Discovers configurations** - Walks up the directory tree to find `.protokoll` directories
|
|
1296
|
+
2. **Suggests projects** - Analyzes the file path to determine which project it likely belongs to
|
|
1297
|
+
3. **Asks for clarification** - If ambiguous, asks which project to use
|
|
1298
|
+
4. **Processes with context** - Uses the appropriate configuration for transcription
|
|
1299
|
+
|
|
1300
|
+
#### Example: Ambiguous Location
|
|
1301
|
+
|
|
1302
|
+
```
|
|
1303
|
+
You: "Can you transcribe ~/Downloads/meeting.m4a?"
|
|
1304
|
+
|
|
1305
|
+
AI: "I found your Protokoll configuration with 3 projects configured.
|
|
1306
|
+
Based on the file location in Downloads, I can't automatically
|
|
1307
|
+
determine which project this belongs to. Is this for:
|
|
1308
|
+
1. Client Alpha
|
|
1309
|
+
2. Internal Notes
|
|
1310
|
+
3. Personal
|
|
1311
|
+
Which project should I use?"
|
|
1312
|
+
|
|
1313
|
+
You: "It's for Client Alpha"
|
|
1314
|
+
|
|
1315
|
+
AI: "Got it! Processing with Client Alpha configuration..."
|
|
1316
|
+
[transcribes and routes to ~/notes/client-alpha/]
|
|
1317
|
+
```
|
|
1318
|
+
|
|
1319
|
+
#### Example: Clear Location
|
|
1320
|
+
|
|
1321
|
+
```
|
|
1322
|
+
You: "Transcribe ~/work/client-alpha/recordings/standup.m4a"
|
|
1323
|
+
|
|
1324
|
+
AI: "Found Client Alpha configuration nearby. Processing..."
|
|
1325
|
+
[automatically uses the right config and routing]
|
|
1326
|
+
```
|
|
1327
|
+
|
|
1328
|
+
### Available MCP Tools
|
|
1329
|
+
|
|
1330
|
+
| Tool | Purpose |
|
|
1331
|
+
|------|---------|
|
|
1332
|
+
| **Discovery** | |
|
|
1333
|
+
| `protokoll_discover_config` | Find .protokoll configurations for a file/directory |
|
|
1334
|
+
| `protokoll_suggest_project` | Determine which project a file belongs to |
|
|
1335
|
+
| **Transcription** | |
|
|
1336
|
+
| `protokoll_process_audio` | Process a single audio file |
|
|
1337
|
+
| `protokoll_batch_process` | Process all audio files in a directory |
|
|
1338
|
+
| **Context Management** | |
|
|
1339
|
+
| `protokoll_context_status` | Get status of the context system |
|
|
1340
|
+
| `protokoll_list_projects` | List all configured projects |
|
|
1341
|
+
| `protokoll_list_people` | List all people in context |
|
|
1342
|
+
| `protokoll_list_terms` | List technical terms |
|
|
1343
|
+
| `protokoll_list_companies` | List companies |
|
|
1344
|
+
| `protokoll_search_context` | Search across all entity types |
|
|
1345
|
+
| `protokoll_get_entity` | Get detailed info about an entity |
|
|
1346
|
+
| `protokoll_add_person` | Add a new person to context |
|
|
1347
|
+
| `protokoll_add_project` | Add a new project |
|
|
1348
|
+
| `protokoll_add_term` | Add a technical term |
|
|
1349
|
+
| `protokoll_add_company` | Add a company |
|
|
1350
|
+
| `protokoll_delete_entity` | Delete an entity |
|
|
1351
|
+
| **Transcript Actions** | |
|
|
1352
|
+
| `protokoll_read_transcript` | Read and parse a transcript file |
|
|
1353
|
+
| `protokoll_edit_transcript` | Edit title or change project |
|
|
1354
|
+
| `protokoll_combine_transcripts` | Combine multiple transcripts |
|
|
1355
|
+
| `protokoll_provide_feedback` | Natural language feedback to correct transcripts |
|
|
1356
|
+
|
|
1357
|
+
### Setup
|
|
1358
|
+
|
|
1359
|
+
Add Protokoll to your MCP configuration:
|
|
1360
|
+
|
|
1361
|
+
**For Cursor:**
|
|
1362
|
+
|
|
1363
|
+
Add to `~/.cursor/mcp.json`:
|
|
1364
|
+
|
|
1365
|
+
```json
|
|
1366
|
+
{
|
|
1367
|
+
"mcpServers": {
|
|
1368
|
+
"protokoll": {
|
|
1369
|
+
"command": "protokoll-mcp"
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
```
|
|
1374
|
+
|
|
1375
|
+
**For Claude Desktop:**
|
|
1376
|
+
|
|
1377
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
1378
|
+
|
|
1379
|
+
```json
|
|
1380
|
+
{
|
|
1381
|
+
"mcpServers": {
|
|
1382
|
+
"protokoll": {
|
|
1383
|
+
"command": "protokoll-mcp"
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
```
|
|
1388
|
+
|
|
1389
|
+
### Example Conversations
|
|
1390
|
+
|
|
1391
|
+
**Basic Transcription:**
|
|
1392
|
+
```
|
|
1393
|
+
Human: Transcribe ~/recordings/standup.m4a
|
|
1394
|
+
|
|
1395
|
+
AI: [discovers config, suggests project]
|
|
1396
|
+
|
|
1397
|
+
AI: Done! Transcript saved to ~/notes/2026/01/16-0900-standup.md
|
|
1398
|
+
Project: Daily Standups (95% confidence)
|
|
1399
|
+
People recognized: Sarah Chen, Mike Johnson
|
|
1400
|
+
```
|
|
1401
|
+
|
|
1402
|
+
**Add Context:**
|
|
1403
|
+
```
|
|
1404
|
+
Human: "San Jay" should be "Sanjay Gupta" - he's a product manager at Acme
|
|
1405
|
+
|
|
1406
|
+
AI: [calls protokoll_add_person]
|
|
1407
|
+
|
|
1408
|
+
AI: Added Sanjay Gupta to your context. Future transcripts will
|
|
1409
|
+
recognize "San Jay", "Sanjay", and similar variations.
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
**Provide Feedback:**
|
|
1413
|
+
```
|
|
1414
|
+
Human: In that last transcript, WCMP should be WCNP
|
|
1415
|
+
|
|
1416
|
+
AI: [calls protokoll_provide_feedback]
|
|
1417
|
+
|
|
1418
|
+
AI: Fixed! I replaced "WCMP" with "WCNP" (3 occurrences) and added
|
|
1419
|
+
WCNP to your vocabulary for future transcripts.
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
**Combine Transcripts:**
|
|
1423
|
+
```
|
|
1424
|
+
Human: Combine these three meeting parts into one:
|
|
1425
|
+
~/notes/meeting-part1.md
|
|
1426
|
+
~/notes/meeting-part2.md
|
|
1427
|
+
~/notes/meeting-part3.md
|
|
1428
|
+
|
|
1429
|
+
AI: [calls protokoll_combine_transcripts]
|
|
1430
|
+
|
|
1431
|
+
AI: Combined into ~/notes/16-1400-full-meeting.md
|
|
1432
|
+
The source files have been deleted.
|
|
1433
|
+
```
|
|
1434
|
+
|
|
1435
|
+
### Configuration Hierarchy
|
|
1436
|
+
|
|
1437
|
+
The MCP server respects Protokoll's hierarchical configuration:
|
|
1438
|
+
|
|
1439
|
+
```
|
|
1440
|
+
~/
|
|
1441
|
+
├── .protokoll/ # Global config (shared context)
|
|
1442
|
+
│ ├── config.yaml
|
|
1443
|
+
│ ├── people/ # People you mention across all projects
|
|
1444
|
+
│ └── companies/
|
|
1445
|
+
└── work/
|
|
1446
|
+
└── client-alpha/
|
|
1447
|
+
└── .protokoll/ # Project-specific (overrides global)
|
|
1448
|
+
├── config.yaml # Client-specific settings
|
|
1449
|
+
├── people/ # Client Alpha contacts
|
|
1450
|
+
└── projects/ # Routing for this client
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
When processing a file, the nearest `.protokoll` takes precedence, but inherits from parent directories.
|
|
1454
|
+
|
|
1455
|
+
### Best Practices
|
|
1456
|
+
|
|
1457
|
+
1. **Create project-specific configs** when you have different routing needs
|
|
1458
|
+
2. **Use global config** for shared context (common terms, general contacts)
|
|
1459
|
+
3. **Let the AI discover** - it will ask when clarification is needed
|
|
1460
|
+
4. **Accept context suggestions** - when the AI offers to add terms/people, say yes
|
|
1461
|
+
|
|
1462
|
+
For complete documentation, see the [MCP Integration Guide](./guide/mcp-integration.md).
|
|
1463
|
+
|
|
1266
1464
|
## Architecture
|
|
1267
1465
|
|
|
1268
1466
|
Protokoll is built with a modular architecture designed for extensibility:
|