@redaksjon/protokoll 0.0.12 → 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.
Files changed (112) hide show
  1. package/.cursor/rules/definition-of-done.md +1 -0
  2. package/.cursor/rules/no-emoticons.md +26 -12
  3. package/README.md +681 -69
  4. package/dist/feedback.js +5193 -0
  5. package/dist/feedback.js.map +1 -0
  6. package/dist/main.js +1861 -2
  7. package/dist/main.js.map +1 -1
  8. package/dist/mcp/server.js +1330 -0
  9. package/dist/mcp/server.js.map +1 -0
  10. package/docs/duplicate-question-prevention.md +117 -0
  11. package/docs/examples.md +152 -0
  12. package/docs/interactive-context-example.md +92 -0
  13. package/docs/package-lock.json +6 -0
  14. package/docs/package.json +3 -1
  15. package/guide/action.md +375 -0
  16. package/guide/config.md +207 -0
  17. package/guide/configuration.md +82 -67
  18. package/guide/context-commands.md +574 -0
  19. package/guide/context-system.md +20 -7
  20. package/guide/development.md +106 -4
  21. package/guide/feedback.md +335 -0
  22. package/guide/index.md +116 -4
  23. package/guide/interactive.md +15 -14
  24. package/guide/mcp-integration.md +341 -0
  25. package/guide/quickstart.md +21 -7
  26. package/guide/reasoning.md +18 -4
  27. package/guide/routing.md +192 -97
  28. package/package.json +5 -3
  29. package/scripts/coverage-priority.mjs +323 -0
  30. package/tsconfig.tsbuildinfo +1 -1
  31. package/vite.config.ts +13 -29
  32. package/vitest.config.ts +5 -1
  33. package/dist/agentic/executor.js +0 -315
  34. package/dist/agentic/executor.js.map +0 -1
  35. package/dist/agentic/index.js +0 -19
  36. package/dist/agentic/index.js.map +0 -1
  37. package/dist/agentic/registry.js +0 -41
  38. package/dist/agentic/registry.js.map +0 -1
  39. package/dist/agentic/tools/lookup-person.js +0 -66
  40. package/dist/agentic/tools/lookup-person.js.map +0 -1
  41. package/dist/agentic/tools/lookup-project.js +0 -93
  42. package/dist/agentic/tools/lookup-project.js.map +0 -1
  43. package/dist/agentic/tools/route-note.js +0 -45
  44. package/dist/agentic/tools/route-note.js.map +0 -1
  45. package/dist/agentic/tools/store-context.js +0 -51
  46. package/dist/agentic/tools/store-context.js.map +0 -1
  47. package/dist/agentic/tools/verify-spelling.js +0 -57
  48. package/dist/agentic/tools/verify-spelling.js.map +0 -1
  49. package/dist/arguments.js +0 -175
  50. package/dist/arguments.js.map +0 -1
  51. package/dist/constants.js +0 -84
  52. package/dist/constants.js.map +0 -1
  53. package/dist/context/discovery.js +0 -114
  54. package/dist/context/discovery.js.map +0 -1
  55. package/dist/context/index.js +0 -58
  56. package/dist/context/index.js.map +0 -1
  57. package/dist/context/storage.js +0 -131
  58. package/dist/context/storage.js.map +0 -1
  59. package/dist/interactive/handler.js +0 -223
  60. package/dist/interactive/handler.js.map +0 -1
  61. package/dist/interactive/index.js +0 -18
  62. package/dist/interactive/index.js.map +0 -1
  63. package/dist/interactive/onboarding.js +0 -28
  64. package/dist/interactive/onboarding.js.map +0 -1
  65. package/dist/logging.js +0 -46
  66. package/dist/logging.js.map +0 -1
  67. package/dist/output/index.js +0 -8
  68. package/dist/output/index.js.map +0 -1
  69. package/dist/output/manager.js +0 -105
  70. package/dist/output/manager.js.map +0 -1
  71. package/dist/phases/complete.js +0 -107
  72. package/dist/phases/complete.js.map +0 -1
  73. package/dist/phases/locate.js +0 -64
  74. package/dist/phases/locate.js.map +0 -1
  75. package/dist/pipeline/index.js +0 -8
  76. package/dist/pipeline/index.js.map +0 -1
  77. package/dist/pipeline/orchestrator.js +0 -281
  78. package/dist/pipeline/orchestrator.js.map +0 -1
  79. package/dist/protokoll.js +0 -114
  80. package/dist/protokoll.js.map +0 -1
  81. package/dist/reasoning/client.js +0 -150
  82. package/dist/reasoning/client.js.map +0 -1
  83. package/dist/reasoning/index.js +0 -36
  84. package/dist/reasoning/index.js.map +0 -1
  85. package/dist/reasoning/strategy.js +0 -60
  86. package/dist/reasoning/strategy.js.map +0 -1
  87. package/dist/reflection/collector.js +0 -124
  88. package/dist/reflection/collector.js.map +0 -1
  89. package/dist/reflection/index.js +0 -16
  90. package/dist/reflection/index.js.map +0 -1
  91. package/dist/reflection/reporter.js +0 -238
  92. package/dist/reflection/reporter.js.map +0 -1
  93. package/dist/routing/classifier.js +0 -201
  94. package/dist/routing/classifier.js.map +0 -1
  95. package/dist/routing/index.js +0 -27
  96. package/dist/routing/index.js.map +0 -1
  97. package/dist/routing/router.js +0 -153
  98. package/dist/routing/router.js.map +0 -1
  99. package/dist/transcription/index.js +0 -41
  100. package/dist/transcription/index.js.map +0 -1
  101. package/dist/transcription/service.js +0 -64
  102. package/dist/transcription/service.js.map +0 -1
  103. package/dist/transcription/types.js +0 -31
  104. package/dist/transcription/types.js.map +0 -1
  105. package/dist/util/dates.js +0 -96
  106. package/dist/util/dates.js.map +0 -1
  107. package/dist/util/media.js +0 -103
  108. package/dist/util/media.js.map +0 -1
  109. package/dist/util/metadata.js +0 -95
  110. package/dist/util/metadata.js.map +0 -1
  111. package/dist/util/storage.js +0 -135
  112. package/dist/util/storage.js.map +0 -1
@@ -1,281 +0,0 @@
1
- import { create as create$1 } from '../context/index.js';
2
- import { create as create$2 } from '../routing/index.js';
3
- import { create as create$6 } from '../interactive/index.js';
4
- import { create as create$7 } from '../output/index.js';
5
- import { create as create$5 } from '../reflection/index.js';
6
- import { create as create$3 } from '../transcription/index.js';
7
- import { create as create$9 } from '../reasoning/index.js';
8
- import { create as create$8 } from '../agentic/index.js';
9
- import { create as create$4 } from '../phases/complete.js';
10
- import { getLogger } from '../logging.js';
11
- import { extractTagsFromSignals, createRoutingMetadata } from '../util/metadata.js';
12
-
13
- const create = async (config)=>{
14
- var _config_keepIntermediates;
15
- const logger = getLogger();
16
- const currentWorkingDir = globalThis.process.cwd();
17
- logger.debug('Initializing intelligent transcription pipeline...');
18
- // Initialize context system (async)
19
- const context = await create$1({
20
- startingDir: config.contextDirectory || currentWorkingDir
21
- });
22
- logger.debug('Context system initialized - ready to query entities via tools');
23
- // Initialize routing with config-based defaults
24
- const routingConfig = {
25
- default: {
26
- path: config.outputDirectory || '~/notes',
27
- structure: config.outputStructure || 'month',
28
- filename_options: config.outputFilenameOptions || [
29
- 'date',
30
- 'time',
31
- 'subject'
32
- ],
33
- createDirectories: true
34
- },
35
- projects: [],
36
- conflict_resolution: 'primary'
37
- };
38
- const routing = create$2(routingConfig, context);
39
- logger.debug('Routing system initialized');
40
- const interactive = create$6({
41
- enabled: config.interactive}, context);
42
- const output = create$7({
43
- intermediateDir: config.intermediateDir || './output/protokoll',
44
- keepIntermediates: (_config_keepIntermediates = config.keepIntermediates) !== null && _config_keepIntermediates !== void 0 ? _config_keepIntermediates : true});
45
- logger.debug('Output manager initialized');
46
- const reflection = config.selfReflection ? create$5() : null;
47
- if (reflection) {
48
- logger.debug('Self-reflection system enabled');
49
- }
50
- // Initialize transcription service
51
- const transcription = create$3({
52
- defaultModel: config.transcriptionModel
53
- });
54
- logger.debug('Transcription service initialized with model: %s', config.transcriptionModel);
55
- // Initialize reasoning for agentic processing
56
- const reasoning = create$9({
57
- model: config.model
58
- });
59
- logger.debug('Reasoning system initialized with model: %s', config.model);
60
- // Initialize complete phase for moving files to processed directory
61
- // Pass outputStructure so processed files use the same directory structure as output
62
- const complete = config.processedDirectory ? create$4({
63
- processedDirectory: config.processedDirectory,
64
- outputStructure: config.outputStructure,
65
- dryRun: config.dryRun
66
- }) : null;
67
- if (complete) {
68
- logger.debug('Complete phase initialized with processed directory: %s', config.processedDirectory);
69
- }
70
- // Helper to extract a human-readable title from the output path
71
- const extractTitleFromPath = (outputPath)=>{
72
- var _outputPath_split_pop;
73
- const filename = (_outputPath_split_pop = outputPath.split('/').pop()) === null || _outputPath_split_pop === void 0 ? void 0 : _outputPath_split_pop.replace('.md', '');
74
- if (!filename) return undefined;
75
- // Remove date prefix (e.g., "27-0716-" from "27-0716-meeting-notes")
76
- const withoutDate = filename.replace(/^\d{2}-\d{4}-/, '');
77
- if (!withoutDate) return undefined;
78
- // Convert kebab-case to Title Case
79
- return withoutDate.split('-').map((word)=>word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
80
- };
81
- const processInput = async (input)=>{
82
- const startTime = Date.now();
83
- logger.info('Processing: %s (hash: %s)', input.audioFile, input.hash);
84
- // Initialize state
85
- const state = {
86
- input,
87
- startTime: new Date()
88
- };
89
- // Start reflection collection if enabled
90
- if (reflection) {
91
- reflection.collector.start();
92
- }
93
- // Start interactive session if enabled
94
- if (config.interactive) {
95
- interactive.startSession();
96
- logger.debug('Interactive session started');
97
- }
98
- try {
99
- // Step 1: Check onboarding needs
100
- logger.debug('Checking onboarding state...');
101
- const onboardingState = interactive.checkNeedsOnboarding();
102
- if (onboardingState.needsOnboarding) {
103
- logger.debug('First-run detected - onboarding may be triggered');
104
- }
105
- // Step 2: Raw transcription using Transcription module
106
- logger.info('Transcribing audio...');
107
- const whisperStart = Date.now();
108
- const transcriptionResult = await transcription.transcribe(input.audioFile, {
109
- model: config.transcriptionModel
110
- });
111
- state.rawTranscript = transcriptionResult.text;
112
- const whisperDuration = Date.now() - whisperStart;
113
- logger.info('Transcription: %d chars in %.1fs', state.rawTranscript.length, whisperDuration / 1000);
114
- if (reflection) {
115
- reflection.collector.recordWhisper(whisperDuration);
116
- }
117
- // Step 3: Route detection
118
- logger.debug('Determining routing destination...');
119
- const routingContext = {
120
- transcriptText: state.rawTranscript || '',
121
- audioDate: input.creation,
122
- sourceFile: input.audioFile,
123
- hash: input.hash
124
- };
125
- const routeResult = routing.route(routingContext);
126
- logger.debug('Routing decision: project=%s, confidence=%.2f', routeResult.projectId || 'default', routeResult.confidence);
127
- // Record routing decision in reflection
128
- if (reflection) {
129
- var _routeResult_alternateMatches;
130
- reflection.collector.recordRoutingDecision({
131
- projectId: routeResult.projectId,
132
- destination: routeResult.destination.path,
133
- confidence: routeResult.confidence,
134
- reasoning: routeResult.reasoning,
135
- signals: routeResult.signals.map((s)=>({
136
- type: s.type,
137
- value: s.value,
138
- weight: s.weight
139
- })),
140
- alternativesConsidered: (_routeResult_alternateMatches = routeResult.alternateMatches) === null || _routeResult_alternateMatches === void 0 ? void 0 : _routeResult_alternateMatches.map((alt)=>({
141
- projectId: alt.projectId,
142
- confidence: alt.confidence,
143
- whyNotChosen: `Lower confidence (${(alt.confidence * 100).toFixed(1)}%)`
144
- }))
145
- });
146
- }
147
- // Build output path
148
- const outputPath = routing.buildOutputPath(routeResult, routingContext);
149
- logger.debug('Output path: %s', outputPath);
150
- // Step 4: Create output paths using Output module
151
- logger.debug('Setting up output directories...');
152
- const paths = output.createOutputPaths(input.audioFile, outputPath, input.hash, input.creation);
153
- await output.ensureDirectories(paths);
154
- // Write raw transcript to intermediate
155
- await output.writeIntermediate(paths, 'transcript', {
156
- text: state.rawTranscript,
157
- model: config.transcriptionModel,
158
- duration: whisperDuration
159
- });
160
- // Step 5: Agentic enhancement using real executor
161
- logger.info('Enhancing with %s...', config.model);
162
- const agenticStart = Date.now();
163
- const toolContext = {
164
- transcriptText: state.rawTranscript || '',
165
- audioDate: input.creation,
166
- sourceFile: input.audioFile,
167
- contextInstance: context,
168
- routingInstance: routing,
169
- interactiveMode: config.interactive,
170
- interactiveInstance: config.interactive ? interactive : undefined
171
- };
172
- const executor = create$8(reasoning, toolContext);
173
- const agenticResult = await executor.process(state.rawTranscript || '');
174
- state.enhancedText = agenticResult.enhancedText;
175
- const toolsUsed = agenticResult.toolsUsed;
176
- const agenticDuration = Date.now() - agenticStart;
177
- // Record tool calls in reflection
178
- if (reflection) {
179
- for (const tool of toolsUsed){
180
- reflection.collector.recordToolCall(tool, agenticDuration / toolsUsed.length, true);
181
- }
182
- reflection.collector.recordCorrection(state.rawTranscript || '', state.enhancedText);
183
- // Record token usage from agentic result
184
- if (agenticResult.totalTokens) {
185
- reflection.collector.recordModelResponse(config.model, agenticResult.totalTokens);
186
- }
187
- // Record context changes (new projects, entities created)
188
- if (agenticResult.contextChanges) {
189
- for (const change of agenticResult.contextChanges){
190
- reflection.collector.recordContextChange(change);
191
- }
192
- }
193
- }
194
- // Write agentic session to intermediate
195
- await output.writeIntermediate(paths, 'session', {
196
- iterations: agenticResult.iterations,
197
- toolsUsed: agenticResult.toolsUsed,
198
- state: agenticResult.state
199
- });
200
- // Step 6: Write final output using Output module with metadata
201
- logger.debug('Writing final transcript...');
202
- if (state.enhancedText) {
203
- // Build metadata from routing decision and input
204
- const transcriptMetadata = {
205
- title: extractTitleFromPath(paths.final),
206
- projectId: routeResult.projectId || undefined,
207
- project: routeResult.projectId || undefined,
208
- date: input.creation,
209
- routing: createRoutingMetadata(routeResult),
210
- tags: extractTagsFromSignals(routeResult.signals),
211
- confidence: routeResult.confidence
212
- };
213
- await output.writeTranscript(paths, state.enhancedText, transcriptMetadata);
214
- }
215
- // Step 7: Generate reflection report
216
- logger.debug('Generating reflection report...');
217
- let reflectionReport;
218
- if (reflection) {
219
- reflectionReport = reflection.generate(input.audioFile, paths.final, undefined, state.enhancedText);
220
- if (paths.intermediate.reflection) {
221
- await reflection.save(reflectionReport, paths.intermediate.reflection);
222
- }
223
- }
224
- // Step 8: End interactive session
225
- logger.debug('Finalizing session...');
226
- let session;
227
- if (config.interactive) {
228
- session = interactive.endSession();
229
- logger.debug('Interactive session ended: %d clarifications', session.responses.length);
230
- // Save session if path available
231
- if (paths.intermediate.session) {
232
- await output.writeIntermediate(paths, 'session', session);
233
- }
234
- }
235
- // Step 9: Cleanup if needed
236
- if (!config.keepIntermediates && !config.debug) {
237
- await output.cleanIntermediates(paths);
238
- }
239
- // Step 10: Move audio file to processed directory
240
- let processedAudioPath;
241
- if (complete) {
242
- var _paths_final_split_pop;
243
- // Extract subject from output path for naming
244
- const subject = ((_paths_final_split_pop = paths.final.split('/').pop()) === null || _paths_final_split_pop === void 0 ? void 0 : _paths_final_split_pop.replace('.md', '')) || undefined;
245
- processedAudioPath = await complete.complete(input.audioFile, input.hash, input.creation, subject);
246
- }
247
- const processingTime = Date.now() - startTime;
248
- // Compact summary output
249
- logger.info('Enhancement: %d iterations, %d tools, %.1fs', agenticResult.iterations, toolsUsed.length, agenticDuration / 1000);
250
- if (agenticResult.totalTokens) {
251
- logger.info('Tokens: %d total', agenticResult.totalTokens);
252
- }
253
- logger.info('Output: %s (%.1fs total)', paths.final, processingTime / 1000);
254
- return {
255
- outputPath: paths.final,
256
- enhancedText: state.enhancedText || '',
257
- rawTranscript: state.rawTranscript || '',
258
- routedProject: routeResult.projectId,
259
- routingConfidence: routeResult.confidence,
260
- processingTime,
261
- toolsUsed,
262
- correctionsApplied: agenticResult.state.resolvedEntities.size,
263
- processedAudioPath,
264
- reflection: reflectionReport,
265
- session,
266
- intermediatePaths: paths
267
- };
268
- } catch (error) {
269
- logger.error('Pipeline error', {
270
- error
271
- });
272
- throw error;
273
- }
274
- };
275
- return {
276
- process: processInput
277
- };
278
- };
279
-
280
- export { create };
281
- //# sourceMappingURL=orchestrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orchestrator.js","sources":["../../src/pipeline/orchestrator.ts"],"sourcesContent":["/**\n * Pipeline Orchestrator\n *\n * Orchestrates the intelligent transcription pipeline, coordinating\n * all the modules: context, routing, transcription, reasoning,\n * agentic tools, interactive mode, output management, and reflection.\n * \n * THIS IS THE MAIN PROCESSING FLOW - NOT DEAD CODE!\n */\n\nimport { PipelineConfig, PipelineInput, PipelineResult, PipelineState } from './types';\nimport * as Context from '../context';\nimport * as Routing from '../routing';\nimport * as Interactive from '../interactive';\nimport * as Output from '../output';\nimport * as Reflection from '../reflection';\nimport * as Transcription from '../transcription';\nimport * as Reasoning from '../reasoning';\nimport * as Agentic from '../agentic';\nimport * as CompletePhase from '../phases/complete';\nimport * as Logging from '../logging';\nimport * as Metadata from '../util/metadata';\n\nexport interface OrchestratorInstance {\n process(input: PipelineInput): Promise<PipelineResult>;\n}\n\nexport interface OrchestratorConfig extends PipelineConfig {\n outputDirectory: string;\n outputStructure: string;\n outputFilenameOptions: string[];\n maxAudioSize: number;\n tempDirectory: string;\n}\n\nexport const create = async (config: OrchestratorConfig): Promise<OrchestratorInstance> => {\n const logger = Logging.getLogger();\n const currentWorkingDir = globalThis.process.cwd();\n \n logger.debug('Initializing intelligent transcription pipeline...');\n \n // Initialize context system (async)\n const context = await Context.create({\n startingDir: config.contextDirectory || currentWorkingDir,\n });\n logger.debug('Context system initialized - ready to query entities via tools');\n \n // Initialize routing with config-based defaults\n const routingConfig: Routing.RoutingConfig = {\n default: {\n path: config.outputDirectory || '~/notes',\n structure: (config.outputStructure || 'month') as Routing.FilesystemStructure,\n filename_options: (config.outputFilenameOptions || ['date', 'time', 'subject']) as Routing.FilenameOption[],\n createDirectories: true,\n },\n projects: [],\n conflict_resolution: 'primary',\n };\n \n const routing = Routing.create(routingConfig, context);\n logger.debug('Routing system initialized');\n \n const interactive = Interactive.create(\n { enabled: config.interactive, defaultToSuggestion: true },\n context\n );\n \n const output = Output.create({\n intermediateDir: config.intermediateDir || './output/protokoll',\n keepIntermediates: config.keepIntermediates ?? true,\n timestampFormat: 'YYMMDD-HHmm',\n });\n logger.debug('Output manager initialized');\n \n const reflection = config.selfReflection \n ? Reflection.create({\n enabled: true,\n format: 'markdown',\n includeConversation: false,\n includeOutput: true,\n })\n : null;\n if (reflection) {\n logger.debug('Self-reflection system enabled');\n }\n \n // Initialize transcription service\n const transcription = Transcription.create({\n defaultModel: config.transcriptionModel as Transcription.TranscriptionModel,\n });\n logger.debug('Transcription service initialized with model: %s', config.transcriptionModel);\n \n // Initialize reasoning for agentic processing\n const reasoning = Reasoning.create({ model: config.model });\n logger.debug('Reasoning system initialized with model: %s', config.model);\n\n // Initialize complete phase for moving files to processed directory\n // Pass outputStructure so processed files use the same directory structure as output\n const complete = config.processedDirectory \n ? CompletePhase.create({\n processedDirectory: config.processedDirectory,\n outputStructure: config.outputStructure as CompletePhase.FilesystemStructure,\n dryRun: config.dryRun,\n })\n : null;\n if (complete) {\n logger.debug('Complete phase initialized with processed directory: %s', config.processedDirectory);\n }\n \n // Helper to extract a human-readable title from the output path\n const extractTitleFromPath = (outputPath: string): string | undefined => {\n const filename = outputPath.split('/').pop()?.replace('.md', '');\n if (!filename) return undefined;\n \n // Remove date prefix (e.g., \"27-0716-\" from \"27-0716-meeting-notes\")\n const withoutDate = filename.replace(/^\\d{2}-\\d{4}-/, '');\n if (!withoutDate) return undefined;\n \n // Convert kebab-case to Title Case\n return withoutDate\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n };\n\n const processInput = async (input: PipelineInput): Promise<PipelineResult> => {\n const startTime = Date.now();\n \n logger.info('Processing: %s (hash: %s)', input.audioFile, input.hash);\n \n // Initialize state\n const state: PipelineState = {\n input,\n startTime: new Date(),\n };\n \n // Start reflection collection if enabled\n if (reflection) {\n reflection.collector.start();\n }\n \n // Start interactive session if enabled\n if (config.interactive) {\n interactive.startSession();\n logger.debug('Interactive session started');\n }\n \n try {\n // Step 1: Check onboarding needs\n logger.debug('Checking onboarding state...');\n const onboardingState = interactive.checkNeedsOnboarding();\n if (onboardingState.needsOnboarding) {\n logger.debug('First-run detected - onboarding may be triggered');\n }\n \n // Step 2: Raw transcription using Transcription module\n logger.info('Transcribing audio...');\n const whisperStart = Date.now();\n \n const transcriptionResult = await transcription.transcribe(input.audioFile, {\n model: config.transcriptionModel as Transcription.TranscriptionModel,\n });\n state.rawTranscript = transcriptionResult.text;\n \n const whisperDuration = Date.now() - whisperStart;\n logger.info('Transcription: %d chars in %.1fs', \n state.rawTranscript.length, whisperDuration / 1000);\n \n if (reflection) {\n reflection.collector.recordWhisper(whisperDuration);\n }\n \n // Step 3: Route detection\n logger.debug('Determining routing destination...');\n const routingContext: Routing.RoutingContext = {\n transcriptText: state.rawTranscript || '',\n audioDate: input.creation,\n sourceFile: input.audioFile,\n hash: input.hash,\n };\n \n const routeResult = routing.route(routingContext);\n \n logger.debug('Routing decision: project=%s, confidence=%.2f', \n routeResult.projectId || 'default', routeResult.confidence);\n \n // Record routing decision in reflection\n if (reflection) {\n reflection.collector.recordRoutingDecision({\n projectId: routeResult.projectId,\n destination: routeResult.destination.path,\n confidence: routeResult.confidence,\n reasoning: routeResult.reasoning,\n signals: routeResult.signals.map(s => ({\n type: s.type,\n value: s.value,\n weight: s.weight,\n })),\n alternativesConsidered: routeResult.alternateMatches?.map(alt => ({\n projectId: alt.projectId,\n confidence: alt.confidence,\n whyNotChosen: `Lower confidence (${(alt.confidence * 100).toFixed(1)}%)`,\n })),\n });\n }\n \n // Build output path\n const outputPath = routing.buildOutputPath(routeResult, routingContext);\n logger.debug('Output path: %s', outputPath);\n \n // Step 4: Create output paths using Output module\n logger.debug('Setting up output directories...');\n const paths = output.createOutputPaths(\n input.audioFile,\n outputPath,\n input.hash,\n input.creation\n );\n \n await output.ensureDirectories(paths);\n \n // Write raw transcript to intermediate\n await output.writeIntermediate(paths, 'transcript', {\n text: state.rawTranscript,\n model: config.transcriptionModel,\n duration: whisperDuration,\n });\n \n // Step 5: Agentic enhancement using real executor\n logger.info('Enhancing with %s...', config.model);\n \n const agenticStart = Date.now();\n const toolContext: Agentic.ToolContext = {\n transcriptText: state.rawTranscript || '',\n audioDate: input.creation,\n sourceFile: input.audioFile,\n contextInstance: context,\n routingInstance: routing,\n interactiveMode: config.interactive,\n interactiveInstance: config.interactive ? interactive : undefined,\n };\n \n const executor = Agentic.create(reasoning, toolContext);\n const agenticResult = await executor.process(state.rawTranscript || '');\n \n state.enhancedText = agenticResult.enhancedText;\n const toolsUsed = agenticResult.toolsUsed;\n const agenticDuration = Date.now() - agenticStart;\n \n // Record tool calls in reflection\n if (reflection) {\n for (const tool of toolsUsed) {\n reflection.collector.recordToolCall(tool, agenticDuration / toolsUsed.length, true);\n }\n reflection.collector.recordCorrection(state.rawTranscript || '', state.enhancedText);\n // Record token usage from agentic result\n if (agenticResult.totalTokens) {\n reflection.collector.recordModelResponse(config.model, agenticResult.totalTokens);\n }\n // Record context changes (new projects, entities created)\n if (agenticResult.contextChanges) {\n for (const change of agenticResult.contextChanges) {\n reflection.collector.recordContextChange(change);\n }\n }\n }\n \n // Write agentic session to intermediate\n await output.writeIntermediate(paths, 'session', {\n iterations: agenticResult.iterations,\n toolsUsed: agenticResult.toolsUsed,\n state: agenticResult.state,\n });\n \n // Step 6: Write final output using Output module with metadata\n logger.debug('Writing final transcript...');\n if (state.enhancedText) {\n // Build metadata from routing decision and input\n const transcriptMetadata: Metadata.TranscriptMetadata = {\n title: extractTitleFromPath(paths.final),\n projectId: routeResult.projectId || undefined,\n project: routeResult.projectId || undefined,\n date: input.creation,\n routing: Metadata.createRoutingMetadata(routeResult),\n tags: Metadata.extractTagsFromSignals(routeResult.signals),\n confidence: routeResult.confidence,\n };\n \n await output.writeTranscript(paths, state.enhancedText, transcriptMetadata);\n }\n \n // Step 7: Generate reflection report\n logger.debug('Generating reflection report...');\n let reflectionReport: Reflection.ReflectionReport | undefined;\n if (reflection) {\n reflectionReport = reflection.generate(\n input.audioFile,\n paths.final,\n undefined,\n state.enhancedText\n );\n \n if (paths.intermediate.reflection) {\n await reflection.save(reflectionReport, paths.intermediate.reflection);\n }\n }\n \n // Step 8: End interactive session\n logger.debug('Finalizing session...');\n let session: Interactive.InteractiveSession | undefined;\n if (config.interactive) {\n session = interactive.endSession();\n logger.debug('Interactive session ended: %d clarifications', session.responses.length);\n \n // Save session if path available\n if (paths.intermediate.session) {\n await output.writeIntermediate(paths, 'session', session);\n }\n }\n \n // Step 9: Cleanup if needed\n if (!config.keepIntermediates && !config.debug) {\n await output.cleanIntermediates(paths);\n }\n\n // Step 10: Move audio file to processed directory\n let processedAudioPath: string | undefined;\n if (complete) {\n // Extract subject from output path for naming\n const subject = paths.final.split('/').pop()?.replace('.md', '') || undefined;\n processedAudioPath = await complete.complete(\n input.audioFile, \n input.hash, \n input.creation,\n subject\n );\n }\n \n const processingTime = Date.now() - startTime;\n \n // Compact summary output\n logger.info('Enhancement: %d iterations, %d tools, %.1fs', \n agenticResult.iterations, toolsUsed.length, agenticDuration / 1000);\n if (agenticResult.totalTokens) {\n logger.info('Tokens: %d total', agenticResult.totalTokens);\n }\n logger.info('Output: %s (%.1fs total)', paths.final, processingTime / 1000);\n \n return {\n outputPath: paths.final,\n enhancedText: state.enhancedText || '',\n rawTranscript: state.rawTranscript || '',\n routedProject: routeResult.projectId,\n routingConfidence: routeResult.confidence,\n processingTime,\n toolsUsed,\n correctionsApplied: agenticResult.state.resolvedEntities.size,\n processedAudioPath,\n reflection: reflectionReport,\n session,\n intermediatePaths: paths,\n };\n \n } catch (error) {\n logger.error('Pipeline error', { error });\n throw error;\n }\n };\n \n return { process: processInput };\n};\n"],"names":["create","config","logger","Logging","currentWorkingDir","globalThis","process","cwd","debug","context","Context","startingDir","contextDirectory","routingConfig","default","path","outputDirectory","structure","outputStructure","filename_options","outputFilenameOptions","createDirectories","projects","conflict_resolution","routing","Routing","interactive","Interactive","enabled","output","Output","intermediateDir","keepIntermediates","reflection","selfReflection","Reflection","transcription","Transcription","defaultModel","transcriptionModel","reasoning","Reasoning","model","complete","processedDirectory","CompletePhase","dryRun","extractTitleFromPath","outputPath","filename","split","pop","replace","undefined","withoutDate","map","word","charAt","toUpperCase","slice","join","processInput","input","startTime","Date","now","info","audioFile","hash","state","collector","start","startSession","onboardingState","checkNeedsOnboarding","needsOnboarding","whisperStart","transcriptionResult","transcribe","rawTranscript","text","whisperDuration","length","recordWhisper","routingContext","transcriptText","audioDate","creation","sourceFile","routeResult","route","projectId","confidence","recordRoutingDecision","destination","signals","s","type","value","weight","alternativesConsidered","alternateMatches","alt","whyNotChosen","toFixed","buildOutputPath","paths","createOutputPaths","ensureDirectories","writeIntermediate","duration","agenticStart","toolContext","contextInstance","routingInstance","interactiveMode","interactiveInstance","executor","Agentic","agenticResult","enhancedText","toolsUsed","agenticDuration","tool","recordToolCall","recordCorrection","totalTokens","recordModelResponse","contextChanges","change","recordContextChange","iterations","transcriptMetadata","title","final","project","date","Metadata","tags","writeTranscript","reflectionReport","generate","intermediate","save","session","endSession","responses","cleanIntermediates","processedAudioPath","subject","processingTime","routedProject","routingConfidence","correctionsApplied","resolvedEntities","size","intermediatePaths","error"],"mappings":"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"}
package/dist/protokoll.js DELETED
@@ -1,114 +0,0 @@
1
- #!/usr/bin/env node
2
- import 'dotenv/config';
3
- import { configure } from './arguments.js';
4
- import { PROGRAM_NAME, VERSION, ALLOWED_OUTPUT_FILENAME_OPTIONS, ALLOWED_OUTPUT_STRUCTURES, ALLOWED_AUDIO_EXTENSIONS, DEFAULT_OUTPUT_DIRECTORY, DEFAULT_INPUT_DIRECTORY, DEFAULT_OUTPUT_FILENAME_OPTIONS, DEFAULT_OUTPUT_STRUCTURE, DEFAULT_AUDIO_EXTENSIONS, DEFAULT_TIMEZONE, DEFAULT_CONFIG_DIR, DEFAULT_INTERMEDIATE_DIRECTORY } from './constants.js';
5
- import { setLogLevel, getLogger } from './logging.js';
6
- import { create as create$1 } from './pipeline/index.js';
7
- import { create } from './phases/locate.js';
8
- import * as Dreadcabinet from '@theunwalked/dreadcabinet';
9
- import * as Cardigantime from '@theunwalked/cardigantime';
10
- import { z } from 'zod';
11
-
12
- const ConfigSchema = z.object({
13
- dryRun: z.boolean(),
14
- verbose: z.boolean(),
15
- debug: z.boolean(),
16
- diff: z.boolean(),
17
- log: z.boolean(),
18
- model: z.string(),
19
- transcriptionModel: z.string(),
20
- contentTypes: z.array(z.string()),
21
- overrides: z.boolean(),
22
- contextDirectories: z.array(z.string()).optional(),
23
- maxAudioSize: z.number(),
24
- tempDirectory: z.string(),
25
- interactive: z.boolean(),
26
- selfReflection: z.boolean(),
27
- processedDirectory: z.string().optional()
28
- });
29
- z.object({
30
- openaiApiKey: z.string().optional()
31
- });
32
- async function main() {
33
- // eslint-disable-next-line no-console
34
- console.info(`Starting ${PROGRAM_NAME}: ${VERSION}`);
35
- const dreadcabinetOptions = {
36
- defaults: {
37
- timezone: DEFAULT_TIMEZONE,
38
- extensions: DEFAULT_AUDIO_EXTENSIONS,
39
- outputStructure: DEFAULT_OUTPUT_STRUCTURE,
40
- outputFilenameOptions: DEFAULT_OUTPUT_FILENAME_OPTIONS,
41
- inputDirectory: DEFAULT_INPUT_DIRECTORY,
42
- outputDirectory: DEFAULT_OUTPUT_DIRECTORY
43
- },
44
- allowed: {
45
- extensions: ALLOWED_AUDIO_EXTENSIONS,
46
- outputStructures: ALLOWED_OUTPUT_STRUCTURES,
47
- outputFilenameOptions: ALLOWED_OUTPUT_FILENAME_OPTIONS
48
- },
49
- features: Dreadcabinet.DEFAULT_FEATURES,
50
- addDefaults: false
51
- };
52
- const dreadcabinet = Dreadcabinet.create(dreadcabinetOptions);
53
- const cardigantime = Cardigantime.create({
54
- defaults: {
55
- configDirectory: DEFAULT_CONFIG_DIR
56
- },
57
- configShape: ConfigSchema.shape
58
- });
59
- const [config, secureConfig] = await configure(dreadcabinet, cardigantime);
60
- // Set log level based on verbose flag
61
- if (config.verbose === true) {
62
- setLogLevel('verbose');
63
- }
64
- if (config.debug === true) {
65
- setLogLevel('debug');
66
- }
67
- const logger = getLogger();
68
- dreadcabinet.setLogger(logger);
69
- try {
70
- const operator = await dreadcabinet.operate({
71
- ...config,
72
- ...secureConfig
73
- });
74
- // Use the locate phase for file discovery and hash generation
75
- const locatePhase = create(config, operator);
76
- // Create the intelligent transcription pipeline
77
- // This wires together ALL modules: context, routing, transcription,
78
- // reasoning, agentic tools, interactive, output, and reflection
79
- const pipeline = await create$1({
80
- model: config.model,
81
- transcriptionModel: config.transcriptionModel,
82
- interactive: config.interactive,
83
- selfReflection: config.selfReflection,
84
- debug: config.debug,
85
- dryRun: config.dryRun,
86
- contextDirectory: config.configDirectory,
87
- intermediateDir: DEFAULT_INTERMEDIATE_DIRECTORY,
88
- keepIntermediates: config.debug,
89
- outputDirectory: config.outputDirectory || DEFAULT_OUTPUT_DIRECTORY,
90
- outputStructure: config.outputStructure || DEFAULT_OUTPUT_STRUCTURE,
91
- outputFilenameOptions: config.outputFilenameOptions || DEFAULT_OUTPUT_FILENAME_OPTIONS,
92
- maxAudioSize: config.maxAudioSize,
93
- tempDirectory: config.tempDirectory,
94
- processedDirectory: config.processedDirectory
95
- });
96
- await operator.process(async (file)=>{
97
- // Use locate phase for file metadata
98
- const { creationTime, hash } = await locatePhase.locate(file);
99
- // Run through the full intelligent pipeline
100
- const result = await pipeline.process({
101
- audioFile: file,
102
- creation: creationTime,
103
- hash
104
- });
105
- logger.info('Processed: %s -> %s', file, result.outputPath);
106
- });
107
- } catch (error) {
108
- logger.error('Exiting due to Error: %s, %s', error.message, error.stack);
109
- process.exit(1);
110
- }
111
- }
112
-
113
- export { ConfigSchema, main };
114
- //# sourceMappingURL=protokoll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protokoll.js","sources":["../src/protokoll.ts"],"sourcesContent":["#!/usr/bin/env node\nimport 'dotenv/config';\nimport * as Arguments from '@/arguments';\nimport { ALLOWED_AUDIO_EXTENSIONS, ALLOWED_OUTPUT_FILENAME_OPTIONS, ALLOWED_OUTPUT_STRUCTURES, DEFAULT_AUDIO_EXTENSIONS, DEFAULT_OUTPUT_FILENAME_OPTIONS, DEFAULT_INPUT_DIRECTORY, DEFAULT_OUTPUT_DIRECTORY, DEFAULT_OUTPUT_STRUCTURE, DEFAULT_TIMEZONE, PROGRAM_NAME, VERSION, DEFAULT_CONFIG_DIR, DEFAULT_INTERMEDIATE_DIRECTORY } from '@/constants';\nimport { getLogger, setLogLevel } from '@/logging';\nimport * as Pipeline from './pipeline';\nimport * as LocatePhase from './phases/locate';\nimport * as Dreadcabinet from '@theunwalked/dreadcabinet';\nimport * as Cardigantime from '@theunwalked/cardigantime';\nimport { z } from 'zod';\n\nexport interface Args extends Dreadcabinet.Args, Cardigantime.Args {\n dryRun?: boolean;\n verbose?: boolean;\n debug?: boolean;\n transcriptionModel?: string;\n model?: string;\n openaiApiKey?: string;\n overrides?: boolean;\n contextDirectories?: string[];\n maxAudioSize?: number | string;\n tempDirectory?: string;\n interactive?: boolean;\n selfReflection?: boolean;\n processedDirectory?: string;\n}\n\nexport const ConfigSchema = z.object({\n dryRun: z.boolean(),\n verbose: z.boolean(),\n debug: z.boolean(),\n diff: z.boolean(),\n log: z.boolean(),\n model: z.string(),\n transcriptionModel: z.string(),\n contentTypes: z.array(z.string()),\n overrides: z.boolean(),\n contextDirectories: z.array(z.string()).optional(),\n maxAudioSize: z.number(),\n tempDirectory: z.string(),\n interactive: z.boolean(),\n selfReflection: z.boolean(),\n processedDirectory: z.string().optional(),\n});\n\nexport const SecureConfigSchema = z.object({\n openaiApiKey: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof ConfigSchema> & Dreadcabinet.Config & Cardigantime.Config;\nexport type SecureConfig = z.infer<typeof SecureConfigSchema>;\n\nexport async function main() {\n\n // eslint-disable-next-line no-console\n console.info(`Starting ${PROGRAM_NAME}: ${VERSION}`);\n\n const dreadcabinetOptions = {\n defaults: {\n timezone: DEFAULT_TIMEZONE,\n extensions: DEFAULT_AUDIO_EXTENSIONS,\n outputStructure: DEFAULT_OUTPUT_STRUCTURE,\n outputFilenameOptions: DEFAULT_OUTPUT_FILENAME_OPTIONS,\n inputDirectory: DEFAULT_INPUT_DIRECTORY,\n outputDirectory: DEFAULT_OUTPUT_DIRECTORY,\n },\n allowed: {\n extensions: ALLOWED_AUDIO_EXTENSIONS,\n outputStructures: ALLOWED_OUTPUT_STRUCTURES,\n outputFilenameOptions: ALLOWED_OUTPUT_FILENAME_OPTIONS,\n },\n features: Dreadcabinet.DEFAULT_FEATURES,\n addDefaults: false,\n };\n\n const dreadcabinet = Dreadcabinet.create(dreadcabinetOptions);\n\n const cardigantime = Cardigantime.create({\n defaults: {\n configDirectory: DEFAULT_CONFIG_DIR,\n },\n configShape: ConfigSchema.shape,\n });\n\n const [config, secureConfig]: [Config, SecureConfig] = await Arguments.configure(dreadcabinet, cardigantime);\n\n // Set log level based on verbose flag\n if (config.verbose === true) {\n setLogLevel('verbose');\n }\n if (config.debug === true) {\n setLogLevel('debug');\n }\n\n const logger = getLogger();\n dreadcabinet.setLogger(logger);\n\n try {\n\n const operator: Dreadcabinet.Operator = await dreadcabinet.operate({\n ...config,\n ...secureConfig,\n });\n \n // Use the locate phase for file discovery and hash generation\n const locatePhase = LocatePhase.create(config, operator);\n \n // Create the intelligent transcription pipeline\n // This wires together ALL modules: context, routing, transcription,\n // reasoning, agentic tools, interactive, output, and reflection\n const pipeline = await Pipeline.create({\n model: config.model,\n transcriptionModel: config.transcriptionModel,\n interactive: config.interactive,\n selfReflection: config.selfReflection,\n debug: config.debug,\n dryRun: config.dryRun,\n contextDirectory: config.configDirectory,\n intermediateDir: DEFAULT_INTERMEDIATE_DIRECTORY,\n keepIntermediates: config.debug,\n outputDirectory: config.outputDirectory || DEFAULT_OUTPUT_DIRECTORY,\n outputStructure: config.outputStructure || DEFAULT_OUTPUT_STRUCTURE,\n outputFilenameOptions: config.outputFilenameOptions || DEFAULT_OUTPUT_FILENAME_OPTIONS,\n maxAudioSize: config.maxAudioSize,\n tempDirectory: config.tempDirectory,\n processedDirectory: config.processedDirectory,\n });\n\n await operator.process(async (file: string) => {\n // Use locate phase for file metadata\n const { creationTime, hash } = await locatePhase.locate(file);\n \n // Run through the full intelligent pipeline\n const result = await pipeline.process({\n audioFile: file,\n creation: creationTime,\n hash,\n });\n \n logger.info('Processed: %s -> %s', file, result.outputPath);\n });\n } catch (error: any) {\n logger.error('Exiting due to Error: %s, %s', error.message, error.stack);\n process.exit(1);\n }\n}"],"names":["ConfigSchema","z","object","dryRun","boolean","verbose","debug","diff","log","model","string","transcriptionModel","contentTypes","array","overrides","contextDirectories","optional","maxAudioSize","number","tempDirectory","interactive","selfReflection","processedDirectory","openaiApiKey","main","console","info","PROGRAM_NAME","VERSION","dreadcabinetOptions","defaults","timezone","DEFAULT_TIMEZONE","extensions","DEFAULT_AUDIO_EXTENSIONS","outputStructure","DEFAULT_OUTPUT_STRUCTURE","outputFilenameOptions","DEFAULT_OUTPUT_FILENAME_OPTIONS","inputDirectory","DEFAULT_INPUT_DIRECTORY","outputDirectory","DEFAULT_OUTPUT_DIRECTORY","allowed","ALLOWED_AUDIO_EXTENSIONS","outputStructures","ALLOWED_OUTPUT_STRUCTURES","ALLOWED_OUTPUT_FILENAME_OPTIONS","features","Dreadcabinet","DEFAULT_FEATURES","addDefaults","dreadcabinet","create","cardigantime","Cardigantime","configDirectory","DEFAULT_CONFIG_DIR","configShape","shape","config","secureConfig","Arguments","setLogLevel","logger","getLogger","setLogger","operator","operate","locatePhase","LocatePhase","pipeline","Pipeline","contextDirectory","intermediateDir","DEFAULT_INTERMEDIATE_DIRECTORY","keepIntermediates","process","file","creationTime","hash","locate","result","audioFile","creation","outputPath","error","message","stack","exit"],"mappings":"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"}