@redaksjon/protokoll 0.0.15 → 0.2.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 +612 -31
- package/dist/main.js +750 -231
- package/dist/main.js.map +1 -1
- package/dist/mcp/server.js +2053 -78
- 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} +1636 -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 +523 -93
- package/guide/feedback.md +1 -1
- package/guide/index.md +65 -2
- package/guide/interactive.md +224 -9
- package/guide/mcp-integration.md +94 -20
- 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
|
@@ -42,77 +42,303 @@ Projects define routing destinations and classification rules.
|
|
|
42
42
|
protokoll project list
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
Output:
|
|
45
|
+
Output (compact table with row numbers):
|
|
46
46
|
```
|
|
47
47
|
Projects (3):
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
┌─────┬────────────────────┬────────────────────┬───────────────────────────┐
|
|
50
|
+
│ # │ ID │ Name │ Info │
|
|
51
|
+
├─────┼────────────────────┼────────────────────┼───────────────────────────┤
|
|
52
|
+
│ 1 │ personal │ Personal Notes │ INACTIVE → ~/notes │
|
|
53
|
+
├─────┼────────────────────┼────────────────────┼───────────────────────────┤
|
|
54
|
+
│ 2 │ quarterly-planning │ Quarterly Planning │ → ~/work/planning/notes │
|
|
55
|
+
├─────┼────────────────────┼────────────────────┼───────────────────────────┤
|
|
56
|
+
│ 3 │ work │ Work Notes │ → ~/work/notes │
|
|
57
|
+
└─────┴────────────────────┴────────────────────┴───────────────────────────┘
|
|
58
|
+
|
|
59
|
+
Use "project show <id>" or "project show <#>" to see full details for any entry.
|
|
52
60
|
```
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
The table uses fixed column widths and truncates long paths intelligently. For full details including descriptions, trigger phrases, and all configuration, use either the ID or row number:
|
|
55
63
|
```bash
|
|
56
|
-
protokoll project
|
|
64
|
+
protokoll project show walmart # By ID
|
|
65
|
+
protokoll project show 6 # By row number from list
|
|
57
66
|
```
|
|
58
67
|
|
|
59
|
-
|
|
68
|
+
Or for verbose output with full YAML details:
|
|
69
|
+
```bash
|
|
70
|
+
protokoll project list --verbose
|
|
71
|
+
```
|
|
60
72
|
|
|
61
73
|
### Show Project Details
|
|
62
74
|
|
|
75
|
+
You can show details using either the ID or the row number from the list:
|
|
76
|
+
|
|
63
77
|
```bash
|
|
64
|
-
protokoll project show quarterly-planning
|
|
78
|
+
protokoll project show quarterly-planning # By ID
|
|
79
|
+
protokoll project show 2 # By row number
|
|
65
80
|
```
|
|
66
81
|
|
|
67
|
-
Output:
|
|
82
|
+
Output (formatted table):
|
|
68
83
|
```
|
|
69
84
|
Project: Quarterly Planning
|
|
70
85
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
┌─────────────────────┬────────────────────────────────────────────┐
|
|
87
|
+
│ ID │ quarterly-planning │
|
|
88
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
89
|
+
│ Name │ Quarterly Planning │
|
|
90
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
91
|
+
│ Type │ project │
|
|
92
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
93
|
+
│ Context Type │ work │
|
|
94
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
95
|
+
│ Trigger Phrases │ • quarterly planning │
|
|
96
|
+
│ │ • Q1 planning │
|
|
97
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
98
|
+
│ Topics │ • roadmap │
|
|
99
|
+
│ │ • budget │
|
|
100
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
101
|
+
│ Destination │ ~/work/planning/notes │
|
|
102
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
103
|
+
│ Directory Structure │ month │
|
|
104
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
105
|
+
│ Filename Options │ • date │
|
|
106
|
+
│ │ • time │
|
|
107
|
+
│ │ • subject │
|
|
108
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
109
|
+
│ Sounds Like │ • quarterly plan │
|
|
110
|
+
│ │ • quarter planning │
|
|
111
|
+
├─────────────────────┼────────────────────────────────────────────┤
|
|
112
|
+
│ Active │ true │
|
|
113
|
+
└─────────────────────┴────────────────────────────────────────────┘
|
|
90
114
|
|
|
91
115
|
File: /Users/you/.protokoll/projects/quarterly-planning.yaml
|
|
92
116
|
```
|
|
93
117
|
|
|
118
|
+
The formatted output makes it easy to read all fields. Arrays are displayed as bullet points, and nested objects are expanded in a readable format.
|
|
119
|
+
|
|
94
120
|
### Add a Project
|
|
95
121
|
|
|
96
122
|
```bash
|
|
97
123
|
protokoll project add
|
|
98
124
|
```
|
|
99
125
|
|
|
100
|
-
|
|
126
|
+
For the best experience, provide the project name on the command line:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
protokoll project add --name "Client Alpha"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The streamlined process uses sensible defaults and focuses on the smart assistance features:
|
|
133
|
+
|
|
101
134
|
```
|
|
102
135
|
[Add New Project]
|
|
103
136
|
|
|
104
137
|
Project name: Client Alpha
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
138
|
+
|
|
139
|
+
[Generating phonetic variants...]
|
|
140
|
+
• Calling AI model...
|
|
141
|
+
(Phonetic variants help when Whisper mishears the project name)
|
|
142
|
+
Sounds like (Enter for suggested, or edit):
|
|
143
|
+
client alpha,client alfa,klient alpha,clint alpha,...(+4 more)
|
|
144
|
+
>
|
|
145
|
+
|
|
146
|
+
[Generating trigger phrases...]
|
|
147
|
+
• Calling AI model...
|
|
148
|
+
(Trigger phrases indicate content belongs to this project)
|
|
149
|
+
Trigger phrases (Enter for suggested, or edit):
|
|
150
|
+
client alpha,alpha project,working on alpha,alpha client,...(+8 more)
|
|
151
|
+
>
|
|
152
|
+
|
|
153
|
+
Topic keywords (Enter for suggested, or edit):
|
|
154
|
+
client engagement,consulting,project management,...(+5 more)
|
|
155
|
+
>
|
|
156
|
+
|
|
157
|
+
Description (Enter for suggested, or edit):
|
|
158
|
+
Primary client project for Q1
|
|
159
|
+
>
|
|
112
160
|
|
|
113
161
|
Project "Client Alpha" saved successfully.
|
|
114
162
|
```
|
|
115
163
|
|
|
164
|
+
The project creation now uses these sensible defaults:
|
|
165
|
+
- **ID**: Auto-generated from name (e.g., "Client Alpha" → "client-alpha")
|
|
166
|
+
- **Context type**: Defaults to "work"
|
|
167
|
+
- **Directory structure**: Defaults to "month"
|
|
168
|
+
- **Output destination**: Uses your configured default
|
|
169
|
+
|
|
170
|
+
You can override any default using command-line options:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
protokoll project add --name "Personal Notes" \
|
|
174
|
+
--context personal \
|
|
175
|
+
--structure day \
|
|
176
|
+
--destination ~/personal-notes
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
#### Non-Interactive Mode
|
|
180
|
+
|
|
181
|
+
If you want to accept all AI-generated suggestions automatically without being prompted, use the `--yes` flag:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
protokoll project add --name "FjellGrunn" --yes
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
This will generate phonetic variants, trigger phrases, topics, and description using AI, then immediately save the project without waiting for your confirmation. Output looks like:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
[Add New Project]
|
|
191
|
+
|
|
192
|
+
[Generating phonetic variants...]
|
|
193
|
+
• Calling AI model...
|
|
194
|
+
(Phonetic variants help when Whisper mishears the project name)
|
|
195
|
+
fyellgruhn,feelgrun,feellgrun,fyellgrunn,fyehlgrunn,fjehlgrun,...(+16 more)
|
|
196
|
+
✓ Accepted (--yes mode)
|
|
197
|
+
|
|
198
|
+
[Generating trigger phrases...]
|
|
199
|
+
• Calling AI model...
|
|
200
|
+
(Trigger phrases indicate content belongs to this project)
|
|
201
|
+
fjellgrunn,fjell grunn project,working on fjellgrunn,...(+12 more)
|
|
202
|
+
✓ Accepted (--yes mode)
|
|
203
|
+
|
|
204
|
+
Project "FjellGrunn" saved successfully.
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This mode is useful for:
|
|
208
|
+
- **Automation**: Scripts that create projects without manual intervention
|
|
209
|
+
- **Trusting the AI**: When you're confident the AI will generate good suggestions
|
|
210
|
+
- **Speed**: Quickly creating multiple projects in a batch
|
|
211
|
+
|
|
212
|
+
You can combine `--yes` with other flags:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Non-interactive with source URL
|
|
216
|
+
protokoll project add https://github.com/myorg/myproject --name "My Project" --yes
|
|
217
|
+
|
|
218
|
+
# Non-interactive with local README
|
|
219
|
+
protokoll project add /path/to/README.md --name "Documentation" --yes
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
#### Project Field Reference
|
|
223
|
+
|
|
224
|
+
| Field | How Set | Purpose | Examples |
|
|
225
|
+
|-------|---------|---------|----------|
|
|
226
|
+
| **Name** | Prompted (or `--name` flag) | Display name for the project | "Client Alpha", "Personal Notes" |
|
|
227
|
+
| **ID** | Auto-generated from name | Filename and reference identifier | "client-alpha", "personal-notes" |
|
|
228
|
+
| **Context type** | Auto: "work" (override with `--context`) | Nature of content | work, personal, mixed |
|
|
229
|
+
| **Directory structure** | Auto: "month" (override with `--structure`) | Date-based folder organization | none, year, month, day |
|
|
230
|
+
| **Output destination** | Auto: configured default (override with `--destination`) | Where transcripts are saved | "~/clients/alpha/notes" |
|
|
231
|
+
| **Sounds like** | AI-suggested (editable) | Phonetic variants for misheard names | "protocol" for "Protokoll" |
|
|
232
|
+
| **Trigger phrases** | AI-suggested (editable) | High-confidence matching phrases | "client alpha", "working on alpha" |
|
|
233
|
+
| **Topic keywords** | AI-suggested (editable) | Lower-confidence theme associations | "budget", "roadmap" |
|
|
234
|
+
| **Description** | AI-suggested (editable) | Your reference note | "Primary client project for Q1" |
|
|
235
|
+
|
|
236
|
+
##### Understanding Trigger Phrases vs Sounds Like vs Topics
|
|
237
|
+
|
|
238
|
+
- **Trigger phrases** (`explicit_phrases`): High-confidence content matching. If someone says "working on the alpha project" in a recording, and "alpha project" is a trigger phrase, the transcript routes to this project. These match the *content* being discussed.
|
|
239
|
+
|
|
240
|
+
- **Sounds like** (`sounds_like`): Phonetic variants for when Whisper mishears the *project name itself*. If your project is named "Protokoll" (Norwegian), Whisper might transcribe it as "protocol" or "pro to call". Add these variants so lookups still find the project.
|
|
241
|
+
|
|
242
|
+
- **Topic keywords** (`topics`): Lower-confidence associations. If a transcript mentions "budget" and your project has "budget" as a topic, it's a weaker signal than a trigger phrase. Topics help with classification but shouldn't be relied on alone.
|
|
243
|
+
|
|
244
|
+
#### Smart Project Creation
|
|
245
|
+
|
|
246
|
+
Protokoll can use AI assistance to automatically generate sounds_like, trigger phrases, topics, and descriptions:
|
|
247
|
+
|
|
248
|
+
**Basic Smart Creation**
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# AI generates sounds_like and trigger phrases from project name
|
|
252
|
+
protokoll project add
|
|
253
|
+
|
|
254
|
+
[Add New Project]
|
|
255
|
+
|
|
256
|
+
Project name: Protokoll
|
|
257
|
+
ID (Enter for "protokoll"):
|
|
258
|
+
|
|
259
|
+
[Generating phonetic variants...]
|
|
260
|
+
Sounds like (Enter for suggested, or edit):
|
|
261
|
+
protocol,pro to call,proto call,protocolle,...
|
|
262
|
+
|
|
263
|
+
[Generating trigger phrases...]
|
|
264
|
+
Trigger phrases (Enter for suggested, or edit):
|
|
265
|
+
protokoll,working on protokoll,protokoll project,protokoll meeting,...
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**With Source Content**
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# Provide URL or file for full context analysis
|
|
272
|
+
protokoll project add https://github.com/myorg/myproject
|
|
273
|
+
|
|
274
|
+
[Fetching content from source...]
|
|
275
|
+
Found: github - myorg/myproject
|
|
276
|
+
|
|
277
|
+
[Analyzing content...]
|
|
278
|
+
|
|
279
|
+
Project name (Enter for "MyProject"):
|
|
280
|
+
ID (Enter for "myproject"):
|
|
281
|
+
|
|
282
|
+
[Generating phonetic variants...]
|
|
283
|
+
[Generating trigger phrases...]
|
|
284
|
+
|
|
285
|
+
Topic keywords (Enter for suggested, or edit):
|
|
286
|
+
typescript,automation,api,github,...
|
|
287
|
+
|
|
288
|
+
Description (Enter for suggested, or edit):
|
|
289
|
+
MyProject is a comprehensive automation toolkit...
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Command-Line Options**
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# Skip prompts with arguments
|
|
296
|
+
protokoll project add --name "My Project"
|
|
297
|
+
protokoll project add --name "My Project" --context work
|
|
298
|
+
|
|
299
|
+
# Combine with source
|
|
300
|
+
protokoll project add https://github.com/org/repo --name "Repo Name"
|
|
301
|
+
|
|
302
|
+
# Control smart assistance
|
|
303
|
+
protokoll project add --smart # Force enable
|
|
304
|
+
protokoll project add --no-smart # Force disable
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Supported Source Types**
|
|
308
|
+
|
|
309
|
+
| Type | Description | Example |
|
|
310
|
+
|------|-------------|---------|
|
|
311
|
+
| GitHub URL | Fetches raw README.md | `https://github.com/org/repo` |
|
|
312
|
+
| Web URL | Fetches page content | `https://example.com/docs` |
|
|
313
|
+
| Local file | Reads file content | `./README.md` |
|
|
314
|
+
| Directory | Finds README in directory | `./my-project/` |
|
|
315
|
+
|
|
316
|
+
**Configuration**
|
|
317
|
+
|
|
318
|
+
```yaml
|
|
319
|
+
# .protokoll/config.yaml
|
|
320
|
+
smartAssistance:
|
|
321
|
+
enabled: true # Enable AI-assisted project creation
|
|
322
|
+
phoneticModel: "gpt-5-nano" # Fast model for phonetic variants
|
|
323
|
+
analysisModel: "gpt-5-mini" # Model for content analysis
|
|
324
|
+
soundsLikeOnAdd: true # Auto-generate phonetic variants
|
|
325
|
+
triggerPhrasesOnAdd: true # Auto-generate trigger phrases
|
|
326
|
+
promptForSource: true # Ask for URL/file when creating projects
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**How It Works**
|
|
330
|
+
|
|
331
|
+
1. Enter project name
|
|
332
|
+
2. AI generates sounds_like (phonetic variants for transcription correction)
|
|
333
|
+
3. AI generates trigger phrases (content-matching for classification)
|
|
334
|
+
4. Optionally provide URL/file for topics and description
|
|
335
|
+
5. All suggestions are editable before saving
|
|
336
|
+
|
|
337
|
+
**Requirements**
|
|
338
|
+
|
|
339
|
+
- `OPENAI_API_KEY` environment variable set
|
|
340
|
+
- Network access for URL fetching and API calls
|
|
341
|
+
|
|
116
342
|
### Delete a Project
|
|
117
343
|
|
|
118
344
|
```bash
|
|
@@ -131,6 +357,46 @@ Skip confirmation:
|
|
|
131
357
|
protokoll project delete client-alpha --force
|
|
132
358
|
```
|
|
133
359
|
|
|
360
|
+
### Edit a Project (MCP Only)
|
|
361
|
+
|
|
362
|
+
The `protokoll_edit_project` MCP tool allows manual edits to existing projects without requiring LLM regeneration:
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
// Add sounds_like variants (for when Whisper mishears project name)
|
|
366
|
+
await use_mcp_tool('protokoll_edit_project', {
|
|
367
|
+
id: 'protokoll',
|
|
368
|
+
add_sounds_like: ['pro to call', 'proto call']
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
// Update routing configuration
|
|
372
|
+
await use_mcp_tool('protokoll_edit_project', {
|
|
373
|
+
id: 'client-alpha',
|
|
374
|
+
destination: '~/notes/clients/alpha',
|
|
375
|
+
structure: 'month'
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
// Add trigger phrases and topics
|
|
379
|
+
await use_mcp_tool('protokoll_edit_project', {
|
|
380
|
+
id: 'quarterly-planning',
|
|
381
|
+
add_explicit_phrases: ['Q2 planning', 'quarterly review'],
|
|
382
|
+
add_topics: ['budget', 'roadmap']
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
// Deactivate a project
|
|
386
|
+
await use_mcp_tool('protokoll_edit_project', {
|
|
387
|
+
id: 'old-project',
|
|
388
|
+
active: false
|
|
389
|
+
});
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Available fields:**
|
|
393
|
+
- `name`, `description`, `destination`, `structure`, `contextType`, `active` - Simple updates
|
|
394
|
+
- `sounds_like`, `topics`, `explicit_phrases` - Replace entire array
|
|
395
|
+
- `add_sounds_like`, `add_topics`, `add_explicit_phrases` - Add to existing array
|
|
396
|
+
- `remove_sounds_like`, `remove_topics`, `remove_explicit_phrases` - Remove from array
|
|
397
|
+
|
|
398
|
+
**Note:** For regenerating metadata from documentation, use `protokoll_update_project` instead.
|
|
399
|
+
|
|
134
400
|
## Person Commands
|
|
135
401
|
|
|
136
402
|
People are used for name recognition and correction in transcripts.
|
|
@@ -141,37 +407,55 @@ People are used for name recognition and correction in transcripts.
|
|
|
141
407
|
protokoll person list
|
|
142
408
|
```
|
|
143
409
|
|
|
144
|
-
Output:
|
|
410
|
+
Output (compact table with row numbers):
|
|
145
411
|
```
|
|
146
|
-
People (
|
|
412
|
+
People (3):
|
|
147
413
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
414
|
+
┌─────┬──────────────┬──────────────┬────────────────────────────┐
|
|
415
|
+
│ # │ ID │ Name │ Info │
|
|
416
|
+
├─────┼──────────────┼──────────────┼────────────────────────────┤
|
|
417
|
+
│ 1 │ john-smith │ John Smith │ Engineering Lead · @acme │
|
|
418
|
+
├─────┼──────────────┼──────────────┼────────────────────────────┤
|
|
419
|
+
│ 2 │ priya-sharma │ Priya Sharma │ Product Manager · @acme │
|
|
420
|
+
├─────┼──────────────┼──────────────┼────────────────────────────┤
|
|
421
|
+
│ 3 │ sarah-chen │ Sarah Chen │ Designer │
|
|
422
|
+
└─────┴──────────────┴──────────────┴────────────────────────────┘
|
|
423
|
+
|
|
424
|
+
Use "person show <id>" or "person show <#>" to see full details for any entry.
|
|
151
425
|
```
|
|
152
426
|
|
|
153
427
|
### Show Person Details
|
|
154
428
|
|
|
155
429
|
```bash
|
|
156
|
-
protokoll person show priya-sharma
|
|
430
|
+
protokoll person show priya-sharma # By ID
|
|
431
|
+
protokoll person show 2 # By row number
|
|
157
432
|
```
|
|
158
433
|
|
|
159
|
-
Output:
|
|
434
|
+
Output (formatted table):
|
|
160
435
|
```
|
|
161
436
|
Person: Priya Sharma
|
|
162
437
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
438
|
+
┌─────────────┬──────────────────────────────────────────┐
|
|
439
|
+
│ ID │ priya-sharma │
|
|
440
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
441
|
+
│ Name │ Priya Sharma │
|
|
442
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
443
|
+
│ Type │ person │
|
|
444
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
445
|
+
│ First Name │ Priya │
|
|
446
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
447
|
+
│ Last Name │ Sharma │
|
|
448
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
449
|
+
│ Company │ acme-corp │
|
|
450
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
451
|
+
│ Role │ Product Manager │
|
|
452
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
453
|
+
│ Sounds Like │ • pre a │
|
|
454
|
+
│ │ • pria │
|
|
455
|
+
│ │ • preeya │
|
|
456
|
+
├─────────────┼──────────────────────────────────────────┤
|
|
457
|
+
│ Context │ Colleague from product team │
|
|
458
|
+
└─────────────┴──────────────────────────────────────────┘
|
|
175
459
|
|
|
176
460
|
File: /Users/you/.protokoll/people/priya-sharma.yaml
|
|
177
461
|
```
|
|
@@ -208,6 +492,38 @@ protokoll person delete john-smith
|
|
|
208
492
|
protokoll person delete john-smith --force
|
|
209
493
|
```
|
|
210
494
|
|
|
495
|
+
### Edit a Person (MCP Only)
|
|
496
|
+
|
|
497
|
+
The `protokoll_edit_person` MCP tool allows manual edits to existing people:
|
|
498
|
+
|
|
499
|
+
```typescript
|
|
500
|
+
// Add sounds_like variants
|
|
501
|
+
await use_mcp_tool('protokoll_edit_person', {
|
|
502
|
+
id: 'priya-sharma',
|
|
503
|
+
add_sounds_like: ['pre a sharma', 'preeya']
|
|
504
|
+
});
|
|
505
|
+
|
|
506
|
+
// Update multiple fields
|
|
507
|
+
await use_mcp_tool('protokoll_edit_person', {
|
|
508
|
+
id: 'john-smith',
|
|
509
|
+
company: 'new-company',
|
|
510
|
+
role: 'Senior Engineer',
|
|
511
|
+
add_sounds_like: ['john smyth']
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// Remove sounds_like variants
|
|
515
|
+
await use_mcp_tool('protokoll_edit_person', {
|
|
516
|
+
id: 'jane-doe',
|
|
517
|
+
remove_sounds_like: ['outdated-variant']
|
|
518
|
+
});
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
**Available fields:**
|
|
522
|
+
- `name`, `firstName`, `lastName`, `company`, `role`, `context` - Simple text updates
|
|
523
|
+
- `sounds_like` - Replace entire array
|
|
524
|
+
- `add_sounds_like` - Add to existing array
|
|
525
|
+
- `remove_sounds_like` - Remove from array
|
|
526
|
+
|
|
211
527
|
## Term Commands
|
|
212
528
|
|
|
213
529
|
Terms define technical vocabulary and their phonetic variants.
|
|
@@ -218,37 +534,57 @@ Terms define technical vocabulary and their phonetic variants.
|
|
|
218
534
|
protokoll term list
|
|
219
535
|
```
|
|
220
536
|
|
|
221
|
-
Output:
|
|
537
|
+
Output (compact table with row numbers):
|
|
222
538
|
```
|
|
223
|
-
Terms (
|
|
539
|
+
Terms (3):
|
|
540
|
+
|
|
541
|
+
┌─────┬────────────┬────────────┬──────────────────────────────────┐
|
|
542
|
+
│ # │ ID │ Name │ Info │
|
|
543
|
+
├─────┼────────────┼────────────┼──────────────────────────────────┤
|
|
544
|
+
│ 1 │ graphql │ GraphQL │ GraphQL Query Language │
|
|
545
|
+
├─────┼────────────┼────────────┼──────────────────────────────────┤
|
|
546
|
+
│ 2 │ kubernetes │ Kubernetes │ Container orchestration platform │
|
|
547
|
+
├─────┼────────────┼────────────┼──────────────────────────────────┤
|
|
548
|
+
│ 3 │ react │ React │ JavaScript UI library │
|
|
549
|
+
└─────┴────────────┴────────────┴──────────────────────────────────┘
|
|
224
550
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
551
|
+
Use "term show <id>" or "term show <#>" to see full details for any entry.
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
Long expansions are truncated in the table view. For verbose output with full YAML details:
|
|
555
|
+
```bash
|
|
556
|
+
protokoll term list --verbose
|
|
228
557
|
```
|
|
229
558
|
|
|
230
559
|
### Show Term Details
|
|
231
560
|
|
|
232
561
|
```bash
|
|
233
|
-
protokoll term show kubernetes
|
|
562
|
+
protokoll term show kubernetes # By ID
|
|
563
|
+
protokoll term show 2 # By row number
|
|
234
564
|
```
|
|
235
565
|
|
|
236
|
-
Output:
|
|
566
|
+
Output (formatted table):
|
|
237
567
|
```
|
|
238
568
|
Term: Kubernetes
|
|
239
569
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
570
|
+
┌─────────────┬────────────────────────────────────────┐
|
|
571
|
+
│ ID │ kubernetes │
|
|
572
|
+
├─────────────┼────────────────────────────────────────┤
|
|
573
|
+
│ Name │ Kubernetes │
|
|
574
|
+
├─────────────┼────────────────────────────────────────┤
|
|
575
|
+
│ Type │ term │
|
|
576
|
+
├─────────────┼────────────────────────────────────────┤
|
|
577
|
+
│ Expansion │ Container orchestration platform │
|
|
578
|
+
├─────────────┼────────────────────────────────────────┤
|
|
579
|
+
│ Domain │ engineering │
|
|
580
|
+
├─────────────┼────────────────────────────────────────┤
|
|
581
|
+
│ Sounds Like │ • kube │
|
|
582
|
+
│ │ • k8s │
|
|
583
|
+
│ │ • cube er net ease │
|
|
584
|
+
│ │ • kuber netties │
|
|
585
|
+
├─────────────┼────────────────────────────────────────┤
|
|
586
|
+
│ Projects │ • infrastructure │
|
|
587
|
+
└─────────────┴────────────────────────────────────────┘
|
|
252
588
|
|
|
253
589
|
File: /Users/you/.protokoll/terms/kubernetes.yaml
|
|
254
590
|
```
|
|
@@ -273,12 +609,83 @@ Associated project IDs (comma-separated, Enter to skip): api-project
|
|
|
273
609
|
Term "GraphQL" saved successfully.
|
|
274
610
|
```
|
|
275
611
|
|
|
612
|
+
### Update a Term from Source
|
|
613
|
+
|
|
614
|
+
Regenerate term metadata by analyzing updated documentation:
|
|
615
|
+
|
|
616
|
+
```bash
|
|
617
|
+
protokoll term update kubernetes https://kubernetes.io/docs/concepts/overview/
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
This will:
|
|
621
|
+
- Fetch content from the URL
|
|
622
|
+
- Regenerate description, topics, domain using LLM
|
|
623
|
+
- Generate new sounds_like variants
|
|
624
|
+
- Suggest relevant projects based on topics
|
|
625
|
+
- Update the term file with new metadata
|
|
626
|
+
|
|
627
|
+
**Use case**: The Kubernetes project has evolved significantly. Update the term definition to reflect current documentation.
|
|
628
|
+
|
|
629
|
+
### Merge Duplicate Terms
|
|
630
|
+
|
|
631
|
+
```bash
|
|
632
|
+
protokoll term merge kubernetes-dupe kubernetes
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
This will:
|
|
636
|
+
- Combine sounds_like arrays (deduplicated)
|
|
637
|
+
- Combine topics arrays (deduplicated)
|
|
638
|
+
- Combine projects arrays (deduplicated)
|
|
639
|
+
- Keep target's description/domain (fall back to source if missing)
|
|
640
|
+
- Delete the source term
|
|
641
|
+
- Save the merged term
|
|
642
|
+
|
|
643
|
+
**Use case**: You accidentally created "kubernetes" and "k8s" as separate terms. Merge them into one.
|
|
644
|
+
|
|
276
645
|
### Delete a Term
|
|
277
646
|
|
|
278
647
|
```bash
|
|
279
648
|
protokoll term delete graphql
|
|
280
649
|
```
|
|
281
650
|
|
|
651
|
+
### Edit a Term (MCP Only)
|
|
652
|
+
|
|
653
|
+
The `protokoll_edit_term` MCP tool allows manual edits to existing terms without requiring LLM calls. Unlike `update` which regenerates metadata from a source, `edit` lets you make specific changes:
|
|
654
|
+
|
|
655
|
+
```typescript
|
|
656
|
+
// Add a specific sounds_like variant
|
|
657
|
+
await use_mcp_tool('protokoll_edit_term', {
|
|
658
|
+
id: 'cardigantime',
|
|
659
|
+
add_sounds_like: ['Cartesian Time', 'card again time']
|
|
660
|
+
});
|
|
661
|
+
|
|
662
|
+
// Update multiple fields
|
|
663
|
+
await use_mcp_tool('protokoll_edit_term', {
|
|
664
|
+
id: 'kubernetes',
|
|
665
|
+
domain: 'devops',
|
|
666
|
+
description: 'Container orchestration platform',
|
|
667
|
+
add_topics: ['containers', 'orchestration']
|
|
668
|
+
});
|
|
669
|
+
|
|
670
|
+
// Replace sounds_like entirely
|
|
671
|
+
await use_mcp_tool('protokoll_edit_term', {
|
|
672
|
+
id: 'graphql',
|
|
673
|
+
sounds_like: ['graph ql', 'graph q l'] // Replaces all existing
|
|
674
|
+
});
|
|
675
|
+
|
|
676
|
+
// Remove specific topics
|
|
677
|
+
await use_mcp_tool('protokoll_edit_term', {
|
|
678
|
+
id: 'docker',
|
|
679
|
+
remove_topics: ['obsolete-topic']
|
|
680
|
+
});
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
**Available fields:**
|
|
684
|
+
- `expansion`, `domain`, `description` - Simple text updates
|
|
685
|
+
- `sounds_like`, `topics`, `projects` - Replace entire array
|
|
686
|
+
- `add_sounds_like`, `add_topics`, `add_projects` - Add to existing array
|
|
687
|
+
- `remove_sounds_like`, `remove_topics`, `remove_projects` - Remove from array
|
|
688
|
+
|
|
282
689
|
## Company Commands
|
|
283
690
|
|
|
284
691
|
Companies are used for organization recognition and can be linked to people.
|
|
@@ -289,34 +696,49 @@ Companies are used for organization recognition and can be linked to people.
|
|
|
289
696
|
protokoll company list
|
|
290
697
|
```
|
|
291
698
|
|
|
292
|
-
Output:
|
|
699
|
+
Output (compact table with row numbers):
|
|
293
700
|
```
|
|
294
701
|
Companies (3):
|
|
295
702
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
703
|
+
┌─────┬────────────┬──────────────────┬──────────────┐
|
|
704
|
+
│ # │ ID │ Name │ Info │
|
|
705
|
+
├─────┼────────────┼──────────────────┼──────────────┤
|
|
706
|
+
│ 1 │ acme-corp │ Acme Corporation │ Manufacturing│
|
|
707
|
+
├─────┼────────────┼──────────────────┼──────────────┤
|
|
708
|
+
│ 2 │ globalbank │ Global Bank │ Finance │
|
|
709
|
+
├─────┼────────────┼──────────────────┼──────────────┤
|
|
710
|
+
│ 3 │ techstart │ TechStart Inc │ Technology │
|
|
711
|
+
└─────┴────────────┴──────────────────┴──────────────┘
|
|
712
|
+
|
|
713
|
+
Use "company show <id>" or "company show <#>" to see full details for any entry.
|
|
299
714
|
```
|
|
300
715
|
|
|
301
716
|
### Show Company Details
|
|
302
717
|
|
|
303
718
|
```bash
|
|
304
|
-
protokoll company show acme-corp
|
|
719
|
+
protokoll company show acme-corp # By ID
|
|
720
|
+
protokoll company show 1 # By row number
|
|
305
721
|
```
|
|
306
722
|
|
|
307
|
-
Output:
|
|
723
|
+
Output (formatted table):
|
|
308
724
|
```
|
|
309
725
|
Company: Acme Corporation
|
|
310
726
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
727
|
+
┌─────────────┬──────────────────────────┐
|
|
728
|
+
│ ID │ acme-corp │
|
|
729
|
+
├─────────────┼──────────────────────────┤
|
|
730
|
+
│ Name │ Acme Corporation │
|
|
731
|
+
├─────────────┼──────────────────────────┤
|
|
732
|
+
│ Type │ company │
|
|
733
|
+
├─────────────┼──────────────────────────┤
|
|
734
|
+
│ Full Name │ Acme Corporation Ltd. │
|
|
735
|
+
├─────────────┼──────────────────────────┤
|
|
736
|
+
│ Industry │ Manufacturing │
|
|
737
|
+
├─────────────┼──────────────────────────┤
|
|
738
|
+
│ Sounds Like │ • acme │
|
|
739
|
+
│ │ • acme corp │
|
|
740
|
+
│ │ • a c m e │
|
|
741
|
+
└─────────────┴──────────────────────────┘
|
|
320
742
|
|
|
321
743
|
File: /Users/you/.protokoll/companies/acme-corp.yaml
|
|
322
744
|
```
|
|
@@ -356,13 +778,21 @@ Ignored terms are words or phrases that Protokoll won't ask about during interac
|
|
|
356
778
|
protokoll ignored list
|
|
357
779
|
```
|
|
358
780
|
|
|
359
|
-
Output:
|
|
781
|
+
Output (compact table with row numbers):
|
|
360
782
|
```
|
|
361
783
|
Ignored terms (3):
|
|
362
784
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
785
|
+
┌─────┬───────────┬───────────┬──────────────┐
|
|
786
|
+
│ # │ ID │ Name │ Info │
|
|
787
|
+
├─────┼───────────┼───────────┼──────────────┤
|
|
788
|
+
│ 1 │ basically │ basically │ 1/8/2026 │
|
|
789
|
+
├─────┼───────────┼───────────┼──────────────┤
|
|
790
|
+
│ 2 │ like │ like │ 1/10/2026 │
|
|
791
|
+
├─────┼───────────┼───────────┼──────────────┤
|
|
792
|
+
│ 3 │ um │ um │ 1/12/2026 │
|
|
793
|
+
└─────┴───────────┴───────────┴──────────────┘
|
|
794
|
+
|
|
795
|
+
Use "ignored show <id>" to see full details for any entry.
|
|
366
796
|
```
|
|
367
797
|
|
|
368
798
|
### Show Ignored Term Details
|