@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.
- package/.cursor/rules/definition-of-done.md +1 -0
- package/.cursor/rules/no-emoticons.md +26 -12
- package/README.md +681 -69
- package/dist/feedback.js +5193 -0
- package/dist/feedback.js.map +1 -0
- package/dist/main.js +1861 -2
- package/dist/main.js.map +1 -1
- package/dist/mcp/server.js +1330 -0
- package/dist/mcp/server.js.map +1 -0
- package/docs/duplicate-question-prevention.md +117 -0
- package/docs/examples.md +152 -0
- package/docs/interactive-context-example.md +92 -0
- package/docs/package-lock.json +6 -0
- package/docs/package.json +3 -1
- package/guide/action.md +375 -0
- package/guide/config.md +207 -0
- package/guide/configuration.md +82 -67
- package/guide/context-commands.md +574 -0
- package/guide/context-system.md +20 -7
- package/guide/development.md +106 -4
- package/guide/feedback.md +335 -0
- package/guide/index.md +116 -4
- package/guide/interactive.md +15 -14
- package/guide/mcp-integration.md +341 -0
- package/guide/quickstart.md +21 -7
- package/guide/reasoning.md +18 -4
- package/guide/routing.md +192 -97
- package/package.json +5 -3
- package/scripts/coverage-priority.mjs +323 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vite.config.ts +13 -29
- package/vitest.config.ts +5 -1
- package/dist/agentic/executor.js +0 -315
- package/dist/agentic/executor.js.map +0 -1
- package/dist/agentic/index.js +0 -19
- package/dist/agentic/index.js.map +0 -1
- package/dist/agentic/registry.js +0 -41
- package/dist/agentic/registry.js.map +0 -1
- package/dist/agentic/tools/lookup-person.js +0 -66
- package/dist/agentic/tools/lookup-person.js.map +0 -1
- package/dist/agentic/tools/lookup-project.js +0 -93
- package/dist/agentic/tools/lookup-project.js.map +0 -1
- package/dist/agentic/tools/route-note.js +0 -45
- package/dist/agentic/tools/route-note.js.map +0 -1
- package/dist/agentic/tools/store-context.js +0 -51
- package/dist/agentic/tools/store-context.js.map +0 -1
- package/dist/agentic/tools/verify-spelling.js +0 -57
- package/dist/agentic/tools/verify-spelling.js.map +0 -1
- package/dist/arguments.js +0 -175
- package/dist/arguments.js.map +0 -1
- package/dist/constants.js +0 -84
- package/dist/constants.js.map +0 -1
- package/dist/context/discovery.js +0 -114
- package/dist/context/discovery.js.map +0 -1
- package/dist/context/index.js +0 -58
- package/dist/context/index.js.map +0 -1
- package/dist/context/storage.js +0 -131
- package/dist/context/storage.js.map +0 -1
- package/dist/interactive/handler.js +0 -223
- package/dist/interactive/handler.js.map +0 -1
- package/dist/interactive/index.js +0 -18
- package/dist/interactive/index.js.map +0 -1
- package/dist/interactive/onboarding.js +0 -28
- package/dist/interactive/onboarding.js.map +0 -1
- package/dist/logging.js +0 -46
- package/dist/logging.js.map +0 -1
- package/dist/output/index.js +0 -8
- package/dist/output/index.js.map +0 -1
- package/dist/output/manager.js +0 -105
- package/dist/output/manager.js.map +0 -1
- package/dist/phases/complete.js +0 -107
- package/dist/phases/complete.js.map +0 -1
- package/dist/phases/locate.js +0 -64
- package/dist/phases/locate.js.map +0 -1
- package/dist/pipeline/index.js +0 -8
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/orchestrator.js +0 -281
- package/dist/pipeline/orchestrator.js.map +0 -1
- package/dist/protokoll.js +0 -114
- package/dist/protokoll.js.map +0 -1
- package/dist/reasoning/client.js +0 -150
- package/dist/reasoning/client.js.map +0 -1
- package/dist/reasoning/index.js +0 -36
- package/dist/reasoning/index.js.map +0 -1
- package/dist/reasoning/strategy.js +0 -60
- package/dist/reasoning/strategy.js.map +0 -1
- package/dist/reflection/collector.js +0 -124
- package/dist/reflection/collector.js.map +0 -1
- package/dist/reflection/index.js +0 -16
- package/dist/reflection/index.js.map +0 -1
- package/dist/reflection/reporter.js +0 -238
- package/dist/reflection/reporter.js.map +0 -1
- package/dist/routing/classifier.js +0 -201
- package/dist/routing/classifier.js.map +0 -1
- package/dist/routing/index.js +0 -27
- package/dist/routing/index.js.map +0 -1
- package/dist/routing/router.js +0 -153
- package/dist/routing/router.js.map +0 -1
- package/dist/transcription/index.js +0 -41
- package/dist/transcription/index.js.map +0 -1
- package/dist/transcription/service.js +0 -64
- package/dist/transcription/service.js.map +0 -1
- package/dist/transcription/types.js +0 -31
- package/dist/transcription/types.js.map +0 -1
- package/dist/util/dates.js +0 -96
- package/dist/util/dates.js.map +0 -1
- package/dist/util/media.js +0 -103
- package/dist/util/media.js.map +0 -1
- package/dist/util/metadata.js +0 -95
- package/dist/util/metadata.js.map +0 -1
- package/dist/util/storage.js +0 -135
- 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
|
package/dist/protokoll.js.map
DELETED
|
@@ -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":";;;;;;;;;;;AA2BO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAeC,CAAAA,CAAEC,MAAM,CAAC,CAAA;AACjCC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQF,EAAEG,OAAO,CAAA,CAAA,CAAA;AACjBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASJ,EAAEG,OAAO,CAAA,CAAA,CAAA;AAClBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOL,EAAEG,OAAO,CAAA,CAAA,CAAA;AAChBG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMN,EAAEG,OAAO,CAAA,CAAA,CAAA;AACfI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAKP,EAAEG,OAAO,CAAA,CAAA,CAAA;AACdK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOR,EAAES,MAAM,CAAA,CAAA,CAAA;AACfC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoBV,EAAES,MAAM,CAAA,CAAA,CAAA;AAC5BE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcX,CAAAA,CAAEY,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAACZ,CAAAA,CAAES,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAA,CAAA;AAC9BI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAWb,EAAEG,OAAO,CAAA,CAAA,CAAA;AACpBW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoBd,EAAEY,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAACZ,CAAAA,CAAES,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,GAAIM,QAAQ,CAAA,CAAA,CAAA;AAChDC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAchB,EAAEiB,MAAM,CAAA,CAAA,CAAA;AACtBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAelB,EAAES,MAAM,CAAA,CAAA,CAAA;AACvBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAanB,EAAEG,OAAO,CAAA,CAAA,CAAA;AACtBiB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBpB,EAAEG,OAAO,CAAA,CAAA,CAAA;IACzBkB,kBAAAA,CAAAA,CAAoBrB,CAAAA,CAAES,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAGM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA;AAC3C,CAAA,CAAA,CAAA;AAEkCf,CAAAA,CAAEC,MAAM,CAAC,CAAA;IACvCqB,YAAAA,CAAAA,CAActB,CAAAA,CAAES,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA,CAAA,CAAGM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAAA,CAAA;AACrC,CAAA,CAAA,CAAA;AAKO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAeQ,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;IAGlBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQC,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAE,CAAA,CAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAAA,CAAA;AAEnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,mBAAAA,CAAAA,CAAAA,CAAsB,CAAA;QACxBC,QAAAA,CAAAA,CAAU,CAAA;YACNC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACVC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAYC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACZC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACjBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAuBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACvBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAgBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAChBC,eAAAA,CAAAA,CAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACAC,OAAAA,CAAAA,CAAS,CAAA;YACLV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAYW,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACZC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAkBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAClBT,qBAAAA,CAAAA,CAAuBU,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAUC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAaC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB,CAAA;QACvCC,WAAAA,CAAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,YAAAA,CAAAA,CAAAA,CAAeH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAACxB,mBAAAA,CAAAA,CAAAA;IAEzC,MAAMyB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAeC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAaF,MAAM,CAAC,CAAA;QACrCvB,QAAAA,CAAAA,CAAU,CAAA;YACN0B,eAAAA,CAAAA,CAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACAC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa1D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAa2D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAQC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA,CAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmB,CAACV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAcE,YAAAA,CAAAA,CAAAA;;IAG/F,IAAIM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOvD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAK,IAAA,CAAA,CAAM,CAAA;QACzB0D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA;IACA,IAAIH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOtD,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAK,IAAA,CAAA,CAAM,CAAA;QACvByD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACfb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAac,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,CAACF,MAAAA,CAAAA,CAAAA;IAEvB,CAAA,CAAA,CAAA,CAAI,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAMG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkC,MAAMf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAagB,OAAO,CAAC,CAAA;AAC/D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAGR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA;AACT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAGC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMQ,WAAAA,CAAAA,CAAAA,CAAcC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkB,CAACV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQO,QAAAA,CAAAA,CAAAA;;;;AAK/C,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMC,QAAe,CAAC,CAAA;AACnC/D,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOmD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOnD,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;AACnBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoBiD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOjD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkB,CAAA;AAC7CS,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAawC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOxC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,CAAA;AAC/BC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAgBuC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOvC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc,CAAA;AACrCf,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOsD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOtD,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;AACnBH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQyD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOzD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAAA;AACrBsE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAkBb,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,CAAA;YACxCkB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAiBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACjBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAmBhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOtD,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAA;YAC/BmC,eAAAA,CAAAA,CAAiBmB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOnB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC3CP,eAAAA,CAAAA,CAAiByB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOzB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC3CC,qBAAAA,CAAAA,CAAuBuB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOvB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAqB,IAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACvDrB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAc2C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAO3C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;AACjCE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAeyC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOzC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAa,CAAA;AACnCG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAoBsC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOtC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QAEA,MAAM6C,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASU,OAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;YAE1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAEC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA,CAAEC,CAAAA,CAAAA,CAAAA,CAAI,CAAA,CAAE,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAMX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAYY,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,CAACH,IAAAA,CAAAA,CAAAA;;AAGxD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAS,MAAMX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAASM,OAAO,CAAC,CAAA;gBAClCM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAWL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;gBACXM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAUL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACVC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEAhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOtC,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuBoD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAOG,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAA,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAOC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAY,CAAA;AACjBtB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAOsB,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgCA,CAAAA,CAAAA,CAAAA,CAAAA,EAAMC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,CAAA,CAAED,CAAAA,CAAAA,CAAAA,CAAAA,EAAME,KAAK,CAAA,CAAA;AACvEX,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQY,CAAAA,CAAAA,CAAAA,CAAI,CAAC,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAA;;"}
|