@redaksjon/protokoll 0.0.15 → 0.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/.cursor/rules/no-auto-summary-files.md +43 -0
- package/README.md +603 -31
- package/dist/main.js +750 -231
- package/dist/main.js.map +1 -1
- package/dist/mcp/server.js +1363 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/term-assist.js +274 -0
- package/dist/term-assist.js.map +1 -0
- package/dist/term-context.js +146 -0
- package/dist/term-context.js.map +1 -0
- package/dist/{feedback.js → transcript.js} +1623 -155
- package/dist/transcript.js.map +1 -0
- package/docs/entity-metadata.md +416 -0
- package/docs/examples.md +21 -0
- package/docs/transcript-listing.md +371 -0
- package/guide/action.md +266 -4
- package/guide/context-commands.md +413 -93
- package/guide/feedback.md +1 -1
- package/guide/index.md +65 -2
- package/guide/interactive.md +224 -9
- package/guide/mcp-integration.md +66 -19
- package/guide/transcript-listing.md +444 -0
- package/package.json +17 -8
- package/scripts/test-mcp-compliance.js +97 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/feedback.js.map +0 -1
package/README.md
CHANGED
|
@@ -41,11 +41,12 @@ When you first start using Protokoll, it doesn't know anything about you. It doe
|
|
|
41
41
|
name: Project Alpha
|
|
42
42
|
classification:
|
|
43
43
|
context_type: work
|
|
44
|
-
explicit_phrases: ["project alpha", "update on alpha"]
|
|
45
|
-
topics: ["client engagement", "Q1 planning"]
|
|
44
|
+
explicit_phrases: ["project alpha", "update on alpha"] # Routes when these appear in audio
|
|
45
|
+
topics: ["client engagement", "Q1 planning"] # Lower-confidence associations
|
|
46
46
|
routing:
|
|
47
47
|
destination: ~/notes/projects/alpha
|
|
48
48
|
structure: month
|
|
49
|
+
sounds_like: ["project alfa"] # Phonetic variants for misheard project names
|
|
49
50
|
```
|
|
50
51
|
|
|
51
52
|
**You can read these files. You can edit them. You can version control them.** This is YOUR context, not a proprietary model hidden in someone else's cloud.
|
|
@@ -68,6 +69,65 @@ This means:
|
|
|
68
69
|
|
|
69
70
|
The goal is simple: **After a few weeks of use, Protokoll should understand your world well enough to route notes perfectly with minimal intervention.**
|
|
70
71
|
|
|
72
|
+
## MCP Server: AI Assistant Integration
|
|
73
|
+
|
|
74
|
+
**NEW:** Protokoll now implements the Model Context Protocol (MCP), making all its capabilities available to AI coding assistants like Claude, Cursor, and other MCP-compatible tools.
|
|
75
|
+
|
|
76
|
+
### What is MCP?
|
|
77
|
+
|
|
78
|
+
MCP is a protocol that allows AI assistants to access external data and functionality. Protokoll's MCP server exposes:
|
|
79
|
+
|
|
80
|
+
#### Resources (Read-Only Data Access)
|
|
81
|
+
- **Transcripts**: Read individual transcript files with `protokoll://transcript/{path}`
|
|
82
|
+
- **Entities**: Access context entities (people, projects, terms) as YAML with `protokoll://entity/{type}/{id}`
|
|
83
|
+
- **Configuration**: View Protokoll setup and entity counts with `protokoll://config`
|
|
84
|
+
- **Transcript Lists**: Browse transcripts by directory with filtering and pagination
|
|
85
|
+
- **Entity Lists**: List all entities of a given type with URIs for navigation
|
|
86
|
+
|
|
87
|
+
#### Prompts (Workflow Templates)
|
|
88
|
+
- **transcribe_with_context**: Guided transcription with automatic context discovery
|
|
89
|
+
- **setup_project**: Interactive project creation with metadata assistance
|
|
90
|
+
- **review_transcript**: Analyze and improve transcript accuracy
|
|
91
|
+
- **enrich_entity**: Add or update context entities
|
|
92
|
+
- **batch_transcription**: Process multiple audio files
|
|
93
|
+
- **find_and_analyze**: Search and analyze transcript content
|
|
94
|
+
|
|
95
|
+
#### Tools (Direct Operations)
|
|
96
|
+
All existing CLI tools remain available through MCP for direct operations.
|
|
97
|
+
|
|
98
|
+
### Using the MCP Server
|
|
99
|
+
|
|
100
|
+
1. **Build the server**:
|
|
101
|
+
```bash
|
|
102
|
+
npm run mcp:build
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
2. **Test with MCP Inspector**:
|
|
106
|
+
```bash
|
|
107
|
+
npm run mcp:inspect
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
3. **Configure in your AI assistant** (example for Claude Desktop):
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"mcpServers": {
|
|
114
|
+
"protokoll": {
|
|
115
|
+
"command": "node",
|
|
116
|
+
"args": ["/path/to/protokoll/dist/mcp/server.js"]
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Now your AI assistant can:
|
|
123
|
+
- Transcribe audio with context awareness
|
|
124
|
+
- Browse and read transcripts
|
|
125
|
+
- Analyze context entities
|
|
126
|
+
- Guide project setup interactively
|
|
127
|
+
- And much more!
|
|
128
|
+
|
|
129
|
+
**See**: `guide/mcp-integration.md` for complete MCP documentation.
|
|
130
|
+
|
|
71
131
|
## Table of Contents
|
|
72
132
|
|
|
73
133
|
- [The Problem](#the-problem)
|
|
@@ -84,6 +144,7 @@ The goal is simple: **After a few weeks of use, Protokoll should understand your
|
|
|
84
144
|
- [Quick Configuration Commands](#quick-configuration-commands)
|
|
85
145
|
- [Command Line Options](#command-line-options)
|
|
86
146
|
- [Context Management Commands](#context-management-commands)
|
|
147
|
+
- [Smart Project Creation](#smart-project-creation)
|
|
87
148
|
- [Transcript Actions](#transcript-actions)
|
|
88
149
|
- [Feedback Command](#feedback-command)
|
|
89
150
|
- [Key Features](#key-features)
|
|
@@ -405,6 +466,15 @@ selfReflection: true # Generate reports by default
|
|
|
405
466
|
silent: false # Sound notifications
|
|
406
467
|
debug: false # Debug mode
|
|
407
468
|
|
|
469
|
+
# Smart assistance for project creation
|
|
470
|
+
smartAssistance:
|
|
471
|
+
enabled: true # Enable AI-assisted project creation
|
|
472
|
+
phoneticModel: "gpt-5-nano" # Fast model for phonetic variant generation
|
|
473
|
+
analysisModel: "gpt-5-mini" # Model for content analysis and suggestions
|
|
474
|
+
soundsLikeOnAdd: true # Auto-generate phonetic variants
|
|
475
|
+
triggerPhrasesOnAdd: true # Auto-generate content-matching phrases
|
|
476
|
+
promptForSource: true # Ask for URL/file when creating projects
|
|
477
|
+
|
|
408
478
|
# Advanced
|
|
409
479
|
maxAudioSize: 26214400 # Max audio file size in bytes (25MB)
|
|
410
480
|
tempDirectory: "/tmp" # Temporary file storage
|
|
@@ -506,6 +576,19 @@ protokoll project add
|
|
|
506
576
|
protokoll person add
|
|
507
577
|
protokoll term add
|
|
508
578
|
|
|
579
|
+
# Add term with command-line arguments
|
|
580
|
+
protokoll term add --term "Kubernetes" --domain "devops" \
|
|
581
|
+
--description "Container orchestration platform" \
|
|
582
|
+
--topics "containers,orchestration,cloud-native" \
|
|
583
|
+
--projects "infrastructure"
|
|
584
|
+
|
|
585
|
+
# Update existing entity with new content (regenerates metadata)
|
|
586
|
+
protokoll project update redaksjon https://github.com/user/redaksjon/README.md
|
|
587
|
+
protokoll term update kubernetes https://kubernetes.io/docs/concepts/overview/
|
|
588
|
+
|
|
589
|
+
# Merge duplicate terms
|
|
590
|
+
protokoll term merge kubernetes-old kubernetes # Combines metadata, deletes source
|
|
591
|
+
|
|
509
592
|
# Delete an entity
|
|
510
593
|
protokoll project delete <id>
|
|
511
594
|
protokoll person delete john-smith --force
|
|
@@ -540,25 +623,176 @@ Context notes (Enter to skip): Colleague from product team
|
|
|
540
623
|
Person "Priya Sharma" saved successfully.
|
|
541
624
|
```
|
|
542
625
|
|
|
626
|
+
### Smart Project Creation
|
|
627
|
+
|
|
628
|
+
Protokoll can use AI assistance to help create projects faster by automatically generating:
|
|
629
|
+
|
|
630
|
+
- **Sounds like**: Phonetic variants of your project NAME for when Whisper mishears it (e.g., "Protokoll" → "protocol", "pro to call")
|
|
631
|
+
- **Trigger phrases**: Content-matching phrases that indicate audio content belongs to this project (e.g., "working on protokoll", "protokoll meeting")
|
|
632
|
+
- **Topic keywords**: Relevant keywords extracted from project documentation
|
|
633
|
+
- **Description**: A contextual description of your project
|
|
634
|
+
|
|
635
|
+
#### Understanding Sounds Like vs Trigger Phrases
|
|
636
|
+
|
|
637
|
+
| Field | Purpose | Example for "Protokoll" |
|
|
638
|
+
|-------|---------|------------------------|
|
|
639
|
+
| **Sounds like** | Correct misheard project NAME | "protocol", "pro to call" |
|
|
640
|
+
| **Trigger phrases** | Match content to project | "working on protokoll", "protokoll meeting" |
|
|
641
|
+
|
|
642
|
+
- `sounds_like` is used during transcription to correct the project name when Whisper mishears it
|
|
643
|
+
- `trigger phrases` are used during classification to route content to the right project
|
|
644
|
+
|
|
645
|
+
#### Basic Usage
|
|
646
|
+
|
|
647
|
+
```bash
|
|
648
|
+
# Interactive mode with smart assistance (default when configured)
|
|
649
|
+
protokoll project add
|
|
650
|
+
|
|
651
|
+
# With a source URL for full context analysis
|
|
652
|
+
protokoll project add https://github.com/myorg/myproject
|
|
653
|
+
|
|
654
|
+
# With a local file or directory
|
|
655
|
+
protokoll project add ./README.md
|
|
656
|
+
protokoll project add /path/to/project
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
#### Command-Line Options
|
|
660
|
+
|
|
661
|
+
```bash
|
|
662
|
+
protokoll project add [source] [options]
|
|
663
|
+
|
|
664
|
+
Arguments:
|
|
665
|
+
source URL or file path to analyze for project context
|
|
666
|
+
|
|
667
|
+
Options:
|
|
668
|
+
--name <name> Project name (skips name prompt)
|
|
669
|
+
--id <id> Project ID (auto-generated from name if not provided)
|
|
670
|
+
--context <type> Context type: work, personal, or mixed (default: work)
|
|
671
|
+
--destination <path> Output destination path for transcripts
|
|
672
|
+
--structure <type> Directory structure: none, year, month, day (default: month)
|
|
673
|
+
--smart Force enable smart assistance
|
|
674
|
+
--no-smart Force disable smart assistance
|
|
675
|
+
-y, --yes Accept all AI-generated suggestions without prompting (non-interactive)
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
#### Examples
|
|
679
|
+
|
|
680
|
+
```bash
|
|
681
|
+
# Quick project from GitHub repo
|
|
682
|
+
protokoll project add https://github.com/myorg/myproject --name "My Project"
|
|
683
|
+
|
|
684
|
+
# Create project with pre-set options
|
|
685
|
+
protokoll project add --name "Quarterly Planning" --context work
|
|
686
|
+
|
|
687
|
+
# Analyze local documentation
|
|
688
|
+
protokoll project add ./docs/README.md --name "Documentation"
|
|
689
|
+
|
|
690
|
+
# Non-interactive mode: accept all AI suggestions automatically
|
|
691
|
+
protokoll project add https://github.com/myorg/myproject --name "My Project" --yes
|
|
692
|
+
|
|
693
|
+
# Disable smart assistance for manual entry
|
|
694
|
+
protokoll project add --no-smart
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
#### How It Works
|
|
698
|
+
|
|
699
|
+
1. **Name Entry**: When you provide a project name, smart assistance generates:
|
|
700
|
+
- **Sounds like**: Phonetic variants for when Whisper mishears the name
|
|
701
|
+
- **Trigger phrases**: Content-matching phrases for classification
|
|
702
|
+
|
|
703
|
+
2. **Content Analysis**: When you provide a URL or file path, smart assistance:
|
|
704
|
+
- Fetches the content (supports GitHub repos, web pages, local files)
|
|
705
|
+
- Analyzes it to suggest topic keywords and description
|
|
706
|
+
|
|
707
|
+
3. **Editable Suggestions**: All suggestions are presented as defaults that you can accept (press Enter) or edit
|
|
708
|
+
|
|
709
|
+
4. **Non-Interactive Mode**: Use the `--yes` flag to automatically accept all AI-generated suggestions without prompting. This is useful for automation or when you want to trust the AI completely
|
|
710
|
+
|
|
711
|
+
#### Configuration
|
|
712
|
+
|
|
713
|
+
Enable or disable smart assistance globally in your `.protokoll/config.yaml`:
|
|
714
|
+
|
|
715
|
+
```yaml
|
|
716
|
+
smartAssistance:
|
|
717
|
+
enabled: true # Enable smart assistance globally
|
|
718
|
+
phoneticModel: "gpt-5-nano" # Fast model for phonetic variant generation (default)
|
|
719
|
+
analysisModel: "gpt-5-mini" # Model for content analysis and suggestions (default)
|
|
720
|
+
soundsLikeOnAdd: true # Auto-generate phonetic variants
|
|
721
|
+
triggerPhrasesOnAdd: true # Auto-generate content-matching phrases
|
|
722
|
+
promptForSource: true # Ask about URL/file when not provided
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
Override per-command with `--smart` or `--no-smart` flags.
|
|
726
|
+
|
|
727
|
+
#### Requirements
|
|
728
|
+
|
|
729
|
+
- OpenAI API key set in environment (`OPENAI_API_KEY`)
|
|
730
|
+
- Network access for URL fetching and API calls
|
|
731
|
+
|
|
543
732
|
### Example: Adding a Project
|
|
544
733
|
|
|
734
|
+
The interactive prompt guides you through each field with explanations:
|
|
735
|
+
|
|
545
736
|
```bash
|
|
546
737
|
$ protokoll project add
|
|
547
738
|
|
|
548
739
|
[Add New Project]
|
|
549
740
|
|
|
741
|
+
Projects define where transcripts are filed and how they're classified.
|
|
742
|
+
Each field helps Protokoll route your audio notes to the right place.
|
|
743
|
+
|
|
550
744
|
Project name: Client Alpha
|
|
745
|
+
|
|
746
|
+
ID is used for the filename to store project info (e.g., "client-alpha.yaml")
|
|
747
|
+
and as a reference when linking other entities to this project.
|
|
551
748
|
ID (Enter for "client-alpha"):
|
|
552
|
-
|
|
749
|
+
|
|
750
|
+
Output destination is where transcripts for this project will be saved.
|
|
751
|
+
Leave blank to use the configured default: ~/notes
|
|
752
|
+
Output destination path (Enter for default): ~/clients/alpha/notes
|
|
753
|
+
|
|
754
|
+
Directory structure determines how transcripts are organized by date:
|
|
755
|
+
none: output/transcript.md
|
|
756
|
+
year: output/2025/transcript.md
|
|
757
|
+
month: output/2025/01/transcript.md
|
|
758
|
+
day: output/2025/01/15/transcript.md
|
|
553
759
|
Directory structure (none/year/month/day, Enter for month): month
|
|
760
|
+
|
|
761
|
+
Context type helps classify the nature of this project:
|
|
762
|
+
work: Professional/business content
|
|
763
|
+
personal: Personal notes and ideas
|
|
764
|
+
mixed: Contains both work and personal content
|
|
554
765
|
Context type (work/personal/mixed, Enter for work): work
|
|
766
|
+
|
|
767
|
+
Trigger phrases are words/phrases that identify content belongs to this project.
|
|
768
|
+
When these phrases appear in your audio, Protokoll routes it here.
|
|
769
|
+
Examples: "client alpha", "alpha project", "working on alpha"
|
|
555
770
|
Trigger phrases (comma-separated): client alpha, alpha project
|
|
771
|
+
|
|
772
|
+
Sounds-like variants help when Whisper mishears the project name.
|
|
773
|
+
Useful for non-English names (Norwegian, etc.) that may be transcribed differently.
|
|
774
|
+
Examples for "Protokoll": "protocol", "pro to call", "proto call"
|
|
775
|
+
Sounds like (comma-separated, Enter to skip):
|
|
776
|
+
|
|
777
|
+
Topic keywords are themes/subjects associated with this project.
|
|
778
|
+
These provide additional context for classification but are lower-confidence
|
|
779
|
+
than trigger phrases. Examples: "budget", "roadmap", "client engagement"
|
|
556
780
|
Topic keywords (comma-separated, Enter to skip): client engagement
|
|
781
|
+
|
|
782
|
+
Description is a brief note about this project for your reference.
|
|
557
783
|
Description (Enter to skip): Primary client project
|
|
558
784
|
|
|
559
785
|
Project "Client Alpha" saved successfully.
|
|
560
786
|
```
|
|
561
787
|
|
|
788
|
+
#### Project Field Reference
|
|
789
|
+
|
|
790
|
+
| Field | Purpose |
|
|
791
|
+
|-------|---------|
|
|
792
|
+
| **Trigger phrases** | High-confidence matching - routes transcripts when these phrases appear in audio |
|
|
793
|
+
| **Sounds like** | Phonetic variants for when Whisper mishears the project name (useful for non-English names) |
|
|
794
|
+
| **Topic keywords** | Lower-confidence theme associations for classification |
|
|
795
|
+
|
|
562
796
|
### Options
|
|
563
797
|
|
|
564
798
|
| Option | Description |
|
|
@@ -570,7 +804,74 @@ For complete documentation, see the [Context Commands Guide](./guide/context-com
|
|
|
570
804
|
|
|
571
805
|
## Transcript Actions
|
|
572
806
|
|
|
573
|
-
Protokoll includes
|
|
807
|
+
Protokoll includes commands for working with transcripts: listing, editing, combining, and analyzing your transcript library.
|
|
808
|
+
|
|
809
|
+
### List Transcripts
|
|
810
|
+
|
|
811
|
+
Search, filter, and browse your transcript library with pagination:
|
|
812
|
+
|
|
813
|
+
```bash
|
|
814
|
+
# List recent transcripts (default: 50 most recent)
|
|
815
|
+
protokoll transcript list ~/notes
|
|
816
|
+
|
|
817
|
+
# Search for transcripts containing specific text
|
|
818
|
+
protokoll transcript list ~/notes --search "kubernetes"
|
|
819
|
+
|
|
820
|
+
# Filter by date range
|
|
821
|
+
protokoll transcript list ~/notes --start-date 2026-01-01 --end-date 2026-01-31
|
|
822
|
+
|
|
823
|
+
# Sort by filename or title instead of date
|
|
824
|
+
protokoll transcript list ~/notes --sort-by title
|
|
825
|
+
|
|
826
|
+
# Pagination - show next 50 results
|
|
827
|
+
protokoll transcript list ~/notes --limit 50 --offset 50
|
|
828
|
+
|
|
829
|
+
# Combine filters
|
|
830
|
+
protokoll transcript list ~/notes \
|
|
831
|
+
--search "meeting" \
|
|
832
|
+
--start-date 2026-01-01 \
|
|
833
|
+
--sort-by date \
|
|
834
|
+
--limit 25
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
**Example Output:**
|
|
838
|
+
|
|
839
|
+
```
|
|
840
|
+
📂 Transcripts in: ~/notes
|
|
841
|
+
📊 Showing 1-3 of 45 total
|
|
842
|
+
|
|
843
|
+
✅ 2026-01-18 14:30 - Meeting with Priya about Q1 Planning
|
|
844
|
+
2026-01-18-1430_Meeting_with_Priya.md
|
|
845
|
+
|
|
846
|
+
✅ 2026-01-17 - Quick Ideas for New Feature
|
|
847
|
+
2026-01-17_Quick_Ideas.md
|
|
848
|
+
|
|
849
|
+
2026-01-16 09:15 - Sprint Planning Session
|
|
850
|
+
2026-01-16-0915_Sprint_Planning.md
|
|
851
|
+
|
|
852
|
+
💡 More results available. Use --offset 50 to see the next page.
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
**List Options:**
|
|
856
|
+
|
|
857
|
+
| Option | Description | Default |
|
|
858
|
+
|--------|-------------|---------|
|
|
859
|
+
| `--limit <number>` | Max results to return | 50 |
|
|
860
|
+
| `--offset <number>` | Results to skip (pagination) | 0 |
|
|
861
|
+
| `--sort-by <field>` | Sort by: date, filename, title | date |
|
|
862
|
+
| `--start-date <YYYY-MM-DD>` | Filter from this date | none |
|
|
863
|
+
| `--end-date <YYYY-MM-DD>` | Filter to this date | none |
|
|
864
|
+
| `--search <text>` | Search filename and content | none |
|
|
865
|
+
|
|
866
|
+
**What Gets Displayed:**
|
|
867
|
+
|
|
868
|
+
- ✅ or space (indicates if raw transcript exists)
|
|
869
|
+
- Date from filename (YYYY-MM-DD format)
|
|
870
|
+
- Time if available (HH:MM format)
|
|
871
|
+
- Extracted title from document heading
|
|
872
|
+
- Filename
|
|
873
|
+
|
|
874
|
+
**MCP Tool:** Also available as `protokoll_list_transcripts` for AI assistants.
|
|
574
875
|
|
|
575
876
|
### Edit a Single Transcript
|
|
576
877
|
|
|
@@ -861,10 +1162,13 @@ type: project
|
|
|
861
1162
|
|
|
862
1163
|
classification:
|
|
863
1164
|
context_type: work
|
|
1165
|
+
# Trigger phrases: high-confidence content matching
|
|
1166
|
+
# When these phrases appear in audio, route to this project
|
|
864
1167
|
explicit_phrases:
|
|
865
1168
|
- "quarterly planning"
|
|
866
1169
|
- "Q1 planning"
|
|
867
1170
|
- "roadmap review"
|
|
1171
|
+
# Topic keywords: lower-confidence theme associations
|
|
868
1172
|
topics:
|
|
869
1173
|
- "roadmap"
|
|
870
1174
|
- "budget"
|
|
@@ -877,6 +1181,12 @@ routing:
|
|
|
877
1181
|
- time
|
|
878
1182
|
- subject
|
|
879
1183
|
|
|
1184
|
+
# Phonetic variants: how Whisper might mishear the project name
|
|
1185
|
+
# Useful for non-English names (Norwegian, etc.)
|
|
1186
|
+
sounds_like:
|
|
1187
|
+
- "quarterly plan"
|
|
1188
|
+
- "quarter planning"
|
|
1189
|
+
|
|
880
1190
|
active: true
|
|
881
1191
|
```
|
|
882
1192
|
|
|
@@ -898,13 +1208,24 @@ context: "Primary client"
|
|
|
898
1208
|
```yaml
|
|
899
1209
|
# ~/.protokoll/terms/kubernetes.yaml
|
|
900
1210
|
id: kubernetes
|
|
901
|
-
|
|
1211
|
+
name: Kubernetes
|
|
1212
|
+
type: term
|
|
1213
|
+
expansion: "" # For acronyms (e.g., "K8s" → "Kubernetes")
|
|
1214
|
+
domain: devops # E.g., devops, engineering, security, finance
|
|
1215
|
+
description: "Container orchestration platform that automates deployment, scaling, and management"
|
|
902
1216
|
sounds_like:
|
|
903
1217
|
- "kube"
|
|
904
1218
|
- "k8s"
|
|
905
1219
|
- "kubernetes"
|
|
906
1220
|
- "cube er net ease"
|
|
907
|
-
|
|
1221
|
+
topics: # Related keywords for classification
|
|
1222
|
+
- containers
|
|
1223
|
+
- orchestration
|
|
1224
|
+
- cloud-native
|
|
1225
|
+
- devops
|
|
1226
|
+
projects: # Associated project IDs where this term is relevant
|
|
1227
|
+
- infrastructure
|
|
1228
|
+
- myapp
|
|
908
1229
|
```
|
|
909
1230
|
|
|
910
1231
|
## Routing System
|
|
@@ -1043,6 +1364,195 @@ Welcome to Protokoll!
|
|
|
1043
1364
|
Configuration saved to ~/.protokoll/config.yaml
|
|
1044
1365
|
```
|
|
1045
1366
|
|
|
1367
|
+
### Interactive Session Tracking & Control
|
|
1368
|
+
|
|
1369
|
+
Protokoll now provides comprehensive tracking and control during interactive sessions:
|
|
1370
|
+
|
|
1371
|
+
#### Per-File Progress Monitoring
|
|
1372
|
+
|
|
1373
|
+
Every prompt shows your progress for the current file:
|
|
1374
|
+
|
|
1375
|
+
```
|
|
1376
|
+
[File: recording1.m4a] [Prompts: 3]
|
|
1377
|
+
(Type 'S' to skip remaining prompts for this file)
|
|
1378
|
+
|
|
1379
|
+
────────────────────────────────────────────────────────────
|
|
1380
|
+
[Unknown: "Kubernetes"]
|
|
1381
|
+
...
|
|
1382
|
+
```
|
|
1383
|
+
|
|
1384
|
+
#### Skip Rest of File
|
|
1385
|
+
|
|
1386
|
+
When processing long recordings with many prompts, you can skip ahead:
|
|
1387
|
+
|
|
1388
|
+
```
|
|
1389
|
+
> S
|
|
1390
|
+
|
|
1391
|
+
[Skipping remaining prompts for this file...]
|
|
1392
|
+
```
|
|
1393
|
+
|
|
1394
|
+
This is useful when:
|
|
1395
|
+
- You've answered enough questions for one file
|
|
1396
|
+
- A recording has too many unknown terms to process now
|
|
1397
|
+
- You want to move to the next file quickly
|
|
1398
|
+
|
|
1399
|
+
The file will still be transcribed, but no more interactive prompts will appear for it.
|
|
1400
|
+
|
|
1401
|
+
#### Session Summary Report
|
|
1402
|
+
|
|
1403
|
+
At the end of every interactive session, you get a comprehensive summary:
|
|
1404
|
+
|
|
1405
|
+
```
|
|
1406
|
+
═══════════════════════════════════════════════════════════
|
|
1407
|
+
INTERACTIVE SESSION SUMMARY
|
|
1408
|
+
═══════════════════════════════════════════════════════════
|
|
1409
|
+
|
|
1410
|
+
Duration: 8m 23s
|
|
1411
|
+
Total prompts answered: 12
|
|
1412
|
+
|
|
1413
|
+
────────────────────────────────────────────────────────────
|
|
1414
|
+
FILES PROCESSED
|
|
1415
|
+
────────────────────────────────────────────────────────────
|
|
1416
|
+
|
|
1417
|
+
1. /recordings/meeting1.m4a
|
|
1418
|
+
Prompts answered: 5
|
|
1419
|
+
Status: Completed
|
|
1420
|
+
Transcript: ~/notes/2026/01/2026-01-18_Meeting_Notes.md
|
|
1421
|
+
Audio moved to: ~/archive/2026/01/meeting1.m4a
|
|
1422
|
+
|
|
1423
|
+
2. /recordings/ideas.m4a
|
|
1424
|
+
Prompts answered: 3
|
|
1425
|
+
Status: SKIPPED (user requested)
|
|
1426
|
+
Transcript: ~/notes/2026/01/2026-01-18_Quick_Ideas.md
|
|
1427
|
+
|
|
1428
|
+
────────────────────────────────────────────────────────────
|
|
1429
|
+
CHANGES MADE
|
|
1430
|
+
────────────────────────────────────────────────────────────
|
|
1431
|
+
|
|
1432
|
+
✓ Terms added (3):
|
|
1433
|
+
- Kubernetes
|
|
1434
|
+
- Docker
|
|
1435
|
+
- GraphQL
|
|
1436
|
+
|
|
1437
|
+
✓ Projects added (1):
|
|
1438
|
+
- Project Alpha
|
|
1439
|
+
|
|
1440
|
+
✓ Aliases created (2):
|
|
1441
|
+
- "K8s" → "Kubernetes"
|
|
1442
|
+
- "Chronology" → "Kronologi"
|
|
1443
|
+
|
|
1444
|
+
═══════════════════════════════════════════════════════════
|
|
1445
|
+
```
|
|
1446
|
+
|
|
1447
|
+
This summary shows:
|
|
1448
|
+
- **Session duration** and total prompts answered
|
|
1449
|
+
- **Each file** processed with prompt counts, status, and output locations
|
|
1450
|
+
- **All changes** made to your context (new terms, projects, aliases)
|
|
1451
|
+
|
|
1452
|
+
#### Mid-Session Stop
|
|
1453
|
+
|
|
1454
|
+
Press `Ctrl+C` at any time during an interactive session to stop and see the summary:
|
|
1455
|
+
|
|
1456
|
+
```
|
|
1457
|
+
^C
|
|
1458
|
+
[Session interrupted by user]
|
|
1459
|
+
|
|
1460
|
+
═══════════════════════════════════════════════════════════
|
|
1461
|
+
INTERACTIVE SESSION SUMMARY
|
|
1462
|
+
═══════════════════════════════════════════════════════════
|
|
1463
|
+
...
|
|
1464
|
+
```
|
|
1465
|
+
|
|
1466
|
+
All progress up to that point is saved. You can resume processing the remaining files later.
|
|
1467
|
+
|
|
1468
|
+
### Streamlined Learning Flow
|
|
1469
|
+
|
|
1470
|
+
The interactive wizard has been redesigned for speed and efficiency:
|
|
1471
|
+
|
|
1472
|
+
#### Smart Similarity Matching
|
|
1473
|
+
|
|
1474
|
+
Protokoll automatically detects similar existing terms:
|
|
1475
|
+
|
|
1476
|
+
```
|
|
1477
|
+
────────────────────────────────────────────────────────────
|
|
1478
|
+
[Unknown: "Chronology"]
|
|
1479
|
+
────────────────────────────────────────────────────────────
|
|
1480
|
+
|
|
1481
|
+
Found similar term(s): Kronologi
|
|
1482
|
+
Is "Chronology" the same as "Kronologi"? (Y/N): Y
|
|
1483
|
+
|
|
1484
|
+
info: Added alias "Chronology" to existing term "Kronologi"
|
|
1485
|
+
```
|
|
1486
|
+
|
|
1487
|
+
No more duplicate entries for similar spellings!
|
|
1488
|
+
|
|
1489
|
+
#### Automated Content Analysis
|
|
1490
|
+
|
|
1491
|
+
Instead of answering multiple questions, just provide a URL or file:
|
|
1492
|
+
|
|
1493
|
+
```
|
|
1494
|
+
────────────────────────────────────────────────────────────
|
|
1495
|
+
[Unknown: "Cursor"]
|
|
1496
|
+
────────────────────────────────────────────────────────────
|
|
1497
|
+
|
|
1498
|
+
Ignore this? (X to ignore, or Enter to continue):
|
|
1499
|
+
|
|
1500
|
+
[How should I learn about this?]
|
|
1501
|
+
Options:
|
|
1502
|
+
1. Provide a file path (e.g., ~/docs/project.md)
|
|
1503
|
+
2. Provide a URL (e.g., https://example.com)
|
|
1504
|
+
3. Paste text directly
|
|
1505
|
+
4. Enter details manually
|
|
1506
|
+
|
|
1507
|
+
Enter 1-4, or paste path/URL directly: https://cursor.com
|
|
1508
|
+
|
|
1509
|
+
Fetching content from: https://cursor.com...
|
|
1510
|
+
Analyzing content from cursor.com...
|
|
1511
|
+
|
|
1512
|
+
────────────────────────────────────────────────────────────
|
|
1513
|
+
[Analysis Results]
|
|
1514
|
+
Type: TERM
|
|
1515
|
+
Name: Cursor
|
|
1516
|
+
Description: Cursor is an AI-powered code editor...
|
|
1517
|
+
Topics: ai, code-editor, vscode, development
|
|
1518
|
+
Confidence: high
|
|
1519
|
+
────────────────────────────────────────────────────────────
|
|
1520
|
+
|
|
1521
|
+
Use this? (Y/N, or Enter to accept):
|
|
1522
|
+
|
|
1523
|
+
Which project(s) is this related to?
|
|
1524
|
+
1. FjellGrunn
|
|
1525
|
+
2. Redaksjon
|
|
1526
|
+
3. Grunnverk
|
|
1527
|
+
N. Create new project
|
|
1528
|
+
|
|
1529
|
+
Enter numbers (comma-separated) or N, or Enter to skip: 2
|
|
1530
|
+
Associated with: Redaksjon
|
|
1531
|
+
|
|
1532
|
+
info: Added term "Cursor" to Redaksjon
|
|
1533
|
+
```
|
|
1534
|
+
|
|
1535
|
+
**95% automated**: Just provide documentation and let AI extract:
|
|
1536
|
+
- Entity type (Project vs Term)
|
|
1537
|
+
- Correct name
|
|
1538
|
+
- Description
|
|
1539
|
+
- Related topics
|
|
1540
|
+
- Acronym expansions
|
|
1541
|
+
|
|
1542
|
+
#### Clean Project Selection
|
|
1543
|
+
|
|
1544
|
+
Project lists now show only names, not full descriptions:
|
|
1545
|
+
|
|
1546
|
+
```
|
|
1547
|
+
Which project(s) is this related to?
|
|
1548
|
+
1. FjellGrunn
|
|
1549
|
+
2. Grunnverk
|
|
1550
|
+
3. Redaksjon
|
|
1551
|
+
4. Utilarium
|
|
1552
|
+
```
|
|
1553
|
+
|
|
1554
|
+
Much easier to scan and select!
|
|
1555
|
+
|
|
1046
1556
|
## Self-Reflection Reports
|
|
1047
1557
|
|
|
1048
1558
|
Enable with `--self-reflection` to generate detailed reports:
|
|
@@ -1137,6 +1647,32 @@ Each transcript includes:
|
|
|
1137
1647
|
---
|
|
1138
1648
|
|
|
1139
1649
|
# Your Transcript Content Here
|
|
1650
|
+
|
|
1651
|
+
...transcript content...
|
|
1652
|
+
|
|
1653
|
+
---
|
|
1654
|
+
|
|
1655
|
+
## Entity References
|
|
1656
|
+
|
|
1657
|
+
<!-- Machine-readable entity metadata for indexing and querying -->
|
|
1658
|
+
|
|
1659
|
+
### People
|
|
1660
|
+
|
|
1661
|
+
- `priya-sharma`: Priya Sharma
|
|
1662
|
+
- `john-smith`: John Smith
|
|
1663
|
+
|
|
1664
|
+
### Projects
|
|
1665
|
+
|
|
1666
|
+
- `project-alpha`: Project Alpha
|
|
1667
|
+
|
|
1668
|
+
### Terms
|
|
1669
|
+
|
|
1670
|
+
- `kubernetes`: Kubernetes
|
|
1671
|
+
- `graphql`: GraphQL
|
|
1672
|
+
|
|
1673
|
+
### Companies
|
|
1674
|
+
|
|
1675
|
+
- `acme-corp`: Acme Corp
|
|
1140
1676
|
```
|
|
1141
1677
|
|
|
1142
1678
|
### Metadata Fields
|
|
@@ -1155,6 +1691,17 @@ Each transcript includes:
|
|
|
1155
1691
|
| **Tags** | Auto-extracted from signals (people, companies, topics) |
|
|
1156
1692
|
| **Duration** | Audio duration in human-readable format |
|
|
1157
1693
|
|
|
1694
|
+
### Entity References (Footer)
|
|
1695
|
+
|
|
1696
|
+
At the bottom of each transcript, Protokoll automatically includes structured entity metadata showing all entities (people, projects, terms, companies) that were referenced or used during processing. This metadata:
|
|
1697
|
+
|
|
1698
|
+
- **Enables querying**: Find all transcripts that mention a specific person or project
|
|
1699
|
+
- **Machine-readable**: Structured format for programmatic access
|
|
1700
|
+
- **Auto-generated**: Tracks everything used during transcription enhancement
|
|
1701
|
+
- **Indexable**: Perfect for building search indexes or knowledge graphs
|
|
1702
|
+
|
|
1703
|
+
The entity metadata is tracked automatically as Protokoll processes the transcript - whenever a lookup tool finds a person, project, term, or company in your context, it's recorded in the footer.
|
|
1704
|
+
|
|
1158
1705
|
### Using Metadata
|
|
1159
1706
|
|
|
1160
1707
|
The metadata section helps you:
|
|
@@ -1251,6 +1798,31 @@ sounds_like:
|
|
|
1251
1798
|
- "another variant"
|
|
1252
1799
|
```
|
|
1253
1800
|
|
|
1801
|
+
#### Smart Project Creation Issues
|
|
1802
|
+
|
|
1803
|
+
**"Smart assistance not available"**
|
|
1804
|
+
- Ensure `OPENAI_API_KEY` is set in your environment
|
|
1805
|
+
- Check that smart assistance is enabled in config or use `--smart` flag
|
|
1806
|
+
|
|
1807
|
+
**Slow sounds_like/trigger phrase generation**
|
|
1808
|
+
- The first call may take a few seconds as the model generates variations
|
|
1809
|
+
- Subsequent calls are typically faster
|
|
1810
|
+
- Both sounds_like and trigger phrases are generated in parallel for efficiency
|
|
1811
|
+
|
|
1812
|
+
**URL fetch failing**
|
|
1813
|
+
- Ensure network connectivity
|
|
1814
|
+
- For private repositories, use local file paths instead
|
|
1815
|
+
- Check that the URL is accessible (not behind authentication)
|
|
1816
|
+
|
|
1817
|
+
**Sounds like variants not matching your project**
|
|
1818
|
+
- For Norwegian or non-English project names, you may need to manually add English phonetic variants
|
|
1819
|
+
- Example: "Protokoll" might need "protocol", "pro to call" added manually
|
|
1820
|
+
|
|
1821
|
+
**Suggestions don't match my project**
|
|
1822
|
+
- You can edit all suggestions before saving
|
|
1823
|
+
- Try providing more context with a README or documentation file
|
|
1824
|
+
- Adjust the topics and description manually as needed
|
|
1825
|
+
|
|
1254
1826
|
### Debug Mode
|
|
1255
1827
|
|
|
1256
1828
|
Run with `--debug` to see all intermediate files:
|
|
@@ -1277,7 +1849,7 @@ Traditional workflow:
|
|
|
1277
1849
|
4. Copy-paste file paths
|
|
1278
1850
|
5. Run commands
|
|
1279
1851
|
|
|
1280
|
-
With MCP, you
|
|
1852
|
+
With MCP, you can use natural language:
|
|
1281
1853
|
- *"Can you transcribe this meeting recording?"*
|
|
1282
1854
|
- *"Add Sanjay Gupta as a person - Whisper mishears him as 'San Jay Grouper'"*
|
|
1283
1855
|
- *"This should be in the Quantum Readiness project"*
|
|
@@ -1300,28 +1872,28 @@ When you ask to transcribe a file, the AI:
|
|
|
1300
1872
|
#### Example: Ambiguous Location
|
|
1301
1873
|
|
|
1302
1874
|
```
|
|
1303
|
-
|
|
1875
|
+
User: Can you transcribe ~/Downloads/meeting.m4a?
|
|
1304
1876
|
|
|
1305
|
-
AI:
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1877
|
+
AI: I found your Protokoll configuration with 3 projects configured.
|
|
1878
|
+
Based on the file location in Downloads, I can't automatically
|
|
1879
|
+
determine which project this belongs to. Is this for:
|
|
1880
|
+
1. Client Alpha
|
|
1881
|
+
2. Internal Notes
|
|
1882
|
+
3. Personal
|
|
1883
|
+
Which project should I use?
|
|
1312
1884
|
|
|
1313
|
-
|
|
1885
|
+
User: It's for Client Alpha
|
|
1314
1886
|
|
|
1315
|
-
AI:
|
|
1887
|
+
AI: Got it! Processing with Client Alpha configuration...
|
|
1316
1888
|
[transcribes and routes to ~/notes/client-alpha/]
|
|
1317
1889
|
```
|
|
1318
1890
|
|
|
1319
1891
|
#### Example: Clear Location
|
|
1320
1892
|
|
|
1321
1893
|
```
|
|
1322
|
-
|
|
1894
|
+
User: Transcribe ~/work/client-alpha/recordings/standup.m4a
|
|
1323
1895
|
|
|
1324
|
-
AI:
|
|
1896
|
+
AI: Found Client Alpha configuration nearby. Processing...
|
|
1325
1897
|
[automatically uses the right config and routing]
|
|
1326
1898
|
```
|
|
1327
1899
|
|
|
@@ -1391,45 +1963,45 @@ Or if installed globally (`npm install -g @redaksjon/protokoll`):
|
|
|
1391
1963
|
|
|
1392
1964
|
**Basic Transcription:**
|
|
1393
1965
|
```
|
|
1394
|
-
|
|
1966
|
+
User: Transcribe ~/recordings/standup.m4a
|
|
1395
1967
|
|
|
1396
1968
|
AI: [discovers config, suggests project]
|
|
1397
1969
|
|
|
1398
|
-
|
|
1970
|
+
Done! Transcript saved to ~/notes/2026/01/16-0900-standup.md
|
|
1399
1971
|
Project: Daily Standups (95% confidence)
|
|
1400
1972
|
People recognized: Sarah Chen, Mike Johnson
|
|
1401
1973
|
```
|
|
1402
1974
|
|
|
1403
1975
|
**Add Context:**
|
|
1404
1976
|
```
|
|
1405
|
-
|
|
1977
|
+
User: "San Jay" should be "Sanjay Gupta" - he's a product manager at Acme
|
|
1406
1978
|
|
|
1407
1979
|
AI: [calls protokoll_add_person]
|
|
1408
1980
|
|
|
1409
|
-
|
|
1981
|
+
Added Sanjay Gupta to your context. Future transcripts will
|
|
1410
1982
|
recognize "San Jay", "Sanjay", and similar variations.
|
|
1411
1983
|
```
|
|
1412
1984
|
|
|
1413
1985
|
**Provide Feedback:**
|
|
1414
1986
|
```
|
|
1415
|
-
|
|
1987
|
+
User: In that last transcript, WCMP should be WCNP
|
|
1416
1988
|
|
|
1417
1989
|
AI: [calls protokoll_provide_feedback]
|
|
1418
1990
|
|
|
1419
|
-
|
|
1991
|
+
Fixed! I replaced "WCMP" with "WCNP" (3 occurrences) and added
|
|
1420
1992
|
WCNP to your vocabulary for future transcripts.
|
|
1421
1993
|
```
|
|
1422
1994
|
|
|
1423
1995
|
**Combine Transcripts:**
|
|
1424
1996
|
```
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1997
|
+
User: Combine these three meeting parts into one:
|
|
1998
|
+
~/notes/meeting-part1.md
|
|
1999
|
+
~/notes/meeting-part2.md
|
|
2000
|
+
~/notes/meeting-part3.md
|
|
1429
2001
|
|
|
1430
2002
|
AI: [calls protokoll_combine_transcripts]
|
|
1431
2003
|
|
|
1432
|
-
|
|
2004
|
+
Combined into ~/notes/16-1400-full-meeting.md
|
|
1433
2005
|
The source files have been deleted.
|
|
1434
2006
|
```
|
|
1435
2007
|
|
|
@@ -1458,7 +2030,7 @@ When processing a file, the nearest `.protokoll` takes precedence, but inherits
|
|
|
1458
2030
|
1. **Create project-specific configs** when you have different routing needs
|
|
1459
2031
|
2. **Use global config** for shared context (common terms, general contacts)
|
|
1460
2032
|
3. **Let the AI discover** - it will ask when clarification is needed
|
|
1461
|
-
4. **Accept context suggestions** - when the AI offers to add terms/people,
|
|
2033
|
+
4. **Accept context suggestions** - when the AI offers to add terms/people, accept the suggestions
|
|
1462
2034
|
|
|
1463
2035
|
For complete documentation, see the [MCP Integration Guide](./guide/mcp-integration.md).
|
|
1464
2036
|
|