@redaksjon/protokoll 0.0.8 → 0.0.9

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 +89 -0
  2. package/.cursor/rules/no-emoticons.md +43 -0
  3. package/LICENSE +1 -1
  4. package/README.md +928 -35
  5. package/dist/agentic/executor.js +315 -0
  6. package/dist/agentic/executor.js.map +1 -0
  7. package/dist/agentic/index.js +19 -0
  8. package/dist/agentic/index.js.map +1 -0
  9. package/dist/agentic/registry.js +41 -0
  10. package/dist/agentic/registry.js.map +1 -0
  11. package/dist/agentic/tools/lookup-person.js +66 -0
  12. package/dist/agentic/tools/lookup-person.js.map +1 -0
  13. package/dist/agentic/tools/lookup-project.js +93 -0
  14. package/dist/agentic/tools/lookup-project.js.map +1 -0
  15. package/dist/agentic/tools/route-note.js +45 -0
  16. package/dist/agentic/tools/route-note.js.map +1 -0
  17. package/dist/agentic/tools/store-context.js +51 -0
  18. package/dist/agentic/tools/store-context.js.map +1 -0
  19. package/dist/agentic/tools/verify-spelling.js +57 -0
  20. package/dist/agentic/tools/verify-spelling.js.map +1 -0
  21. package/dist/arguments.js +23 -6
  22. package/dist/arguments.js.map +1 -1
  23. package/dist/constants.js +13 -11
  24. package/dist/constants.js.map +1 -1
  25. package/dist/context/discovery.js +114 -0
  26. package/dist/context/discovery.js.map +1 -0
  27. package/dist/context/index.js +58 -0
  28. package/dist/context/index.js.map +1 -0
  29. package/dist/context/storage.js +131 -0
  30. package/dist/context/storage.js.map +1 -0
  31. package/dist/interactive/handler.js +223 -0
  32. package/dist/interactive/handler.js.map +1 -0
  33. package/dist/interactive/index.js +18 -0
  34. package/dist/interactive/index.js.map +1 -0
  35. package/dist/interactive/onboarding.js +28 -0
  36. package/dist/interactive/onboarding.js.map +1 -0
  37. package/dist/main.js +0 -0
  38. package/dist/output/index.js +8 -0
  39. package/dist/output/index.js.map +1 -0
  40. package/dist/output/manager.js +105 -0
  41. package/dist/output/manager.js.map +1 -0
  42. package/dist/phases/complete.js +107 -0
  43. package/dist/phases/complete.js.map +1 -0
  44. package/dist/phases/locate.js +14 -5
  45. package/dist/phases/locate.js.map +1 -1
  46. package/dist/pipeline/index.js +8 -0
  47. package/dist/pipeline/index.js.map +1 -0
  48. package/dist/pipeline/orchestrator.js +281 -0
  49. package/dist/pipeline/orchestrator.js.map +1 -0
  50. package/dist/prompt/instructions/transcribe.md +6 -6
  51. package/dist/prompt/personas/transcriber.md +5 -5
  52. package/dist/protokoll.js +38 -5
  53. package/dist/protokoll.js.map +1 -1
  54. package/dist/reasoning/client.js +150 -0
  55. package/dist/reasoning/client.js.map +1 -0
  56. package/dist/reasoning/index.js +36 -0
  57. package/dist/reasoning/index.js.map +1 -0
  58. package/dist/reasoning/strategy.js +60 -0
  59. package/dist/reasoning/strategy.js.map +1 -0
  60. package/dist/reflection/collector.js +124 -0
  61. package/dist/reflection/collector.js.map +1 -0
  62. package/dist/reflection/index.js +16 -0
  63. package/dist/reflection/index.js.map +1 -0
  64. package/dist/reflection/reporter.js +238 -0
  65. package/dist/reflection/reporter.js.map +1 -0
  66. package/dist/routing/classifier.js +201 -0
  67. package/dist/routing/classifier.js.map +1 -0
  68. package/dist/routing/index.js +27 -0
  69. package/dist/routing/index.js.map +1 -0
  70. package/dist/routing/router.js +153 -0
  71. package/dist/routing/router.js.map +1 -0
  72. package/dist/transcription/index.js +41 -0
  73. package/dist/transcription/index.js.map +1 -0
  74. package/dist/transcription/service.js +64 -0
  75. package/dist/transcription/service.js.map +1 -0
  76. package/dist/transcription/types.js +31 -0
  77. package/dist/transcription/types.js.map +1 -0
  78. package/dist/util/media.js +4 -4
  79. package/dist/util/media.js.map +1 -1
  80. package/dist/util/metadata.js +95 -0
  81. package/dist/util/metadata.js.map +1 -0
  82. package/dist/util/storage.js +2 -2
  83. package/dist/util/storage.js.map +1 -1
  84. package/docs/examples.md +224 -0
  85. package/docs/index.html +5 -3
  86. package/docs/package-lock.json +639 -332
  87. package/docs/package.json +5 -4
  88. package/docs/troubleshooting.md +257 -0
  89. package/docs/vite.config.js +9 -3
  90. package/eslint.config.mjs +1 -0
  91. package/guide/architecture.md +217 -0
  92. package/guide/configuration.md +199 -0
  93. package/guide/context-system.md +215 -0
  94. package/guide/development.md +273 -0
  95. package/guide/index.md +91 -0
  96. package/guide/interactive.md +199 -0
  97. package/guide/quickstart.md +138 -0
  98. package/guide/reasoning.md +193 -0
  99. package/guide/routing.md +222 -0
  100. package/package.json +10 -7
  101. package/tsconfig.tsbuildinfo +1 -1
  102. package/vitest.config.ts +27 -5
  103. package/dist/phases/transcribe.js +0 -149
  104. package/dist/phases/transcribe.js.map +0 -1
  105. package/dist/processor.js +0 -35
  106. package/dist/processor.js.map +0 -1
  107. package/dist/prompt/transcribe.js +0 -41
  108. package/dist/prompt/transcribe.js.map +0 -1
  109. package/dist/util/general.js +0 -39
  110. package/dist/util/general.js.map +0 -1
  111. package/dist/util/openai.js +0 -92
  112. package/dist/util/openai.js.map +0 -1
@@ -1,10 +1,10 @@
1
- ## 🧠 Whisper Transcript Post-Processor Prompt
1
+ ## Whisper Transcript Post-Processor Prompt
2
2
 
3
3
  You're a transcript formatting tool, not a summarizer, editor, or rewriter.
4
4
 
5
5
  You will receive a raw transcript from Whisper. Your task is to convert it into **clean, readable Markdown** with **intelligent paragraph breaks**, optional **section headings**, and accurate spelling of names and concepts.
6
6
 
7
- ### 📝 Output Format
7
+ ### Output Format
8
8
 
9
9
  - Output **MUST be in Markdown**.
10
10
  - Use **`#`, `##`, or `###` headings** to group content into logical sections **if** a topic shift is clearly identifiable.
@@ -15,13 +15,13 @@ You will receive a raw transcript from Whisper. Your task is to convert it into
15
15
  - Do **not** summarize, shorten, or omit anything unless it's clearly repetitive or a verbal filler (e.g. "uh", "you know", "like" used in isolation).
16
16
  - Do **not** embellish or market language. For example, do not rephrase “this might work” as “this innovative idea…”
17
17
 
18
- ### 🔍 Fidelity Requirements
18
+ ### Fidelity Requirements
19
19
 
20
20
  - **Do not simplify or reinterpret the speaker’s intent.**
21
21
  - Do not remove technical details, curse words, or hedged or tentative phrasing.
22
22
  - Preserve filler words **if they contribute to tone or meaning** (e.g. “I mean”, “sort of”, “well”), but collapse **repetitions** of the exact same phrase if clearly unintentional.
23
23
 
24
- ### ✏️ Spelling & Entity Correction
24
+ ### Spelling & Entity Correction
25
25
 
26
26
  Use the **provided context** (e.g. glossary, list of names, known topics) to:
27
27
 
@@ -31,7 +31,7 @@ Use the **provided context** (e.g. glossary, list of names, known topics) to:
31
31
  If you are uncertain about a correction, include the likely correct term with the original in parentheses:
32
32
  e.g. `Adrian Sloan (transcript: "Adreean Slohn")`
33
33
 
34
- ### 🚫 Do Not:
34
+ ### Do Not:
35
35
 
36
36
  - Do not shorten the transcript.
37
37
  - Do not summarize.
@@ -39,7 +39,7 @@ e.g. `Adrian Sloan (transcript: "Adreean Slohn")`
39
39
  - Do not turn notes into copy.
40
40
  - Do not hallucinate or "fix" awkward phrasing unless it's an obvious transcription error.
41
41
 
42
- ### Do:
42
+ ### Do:
43
43
 
44
44
  - Maintain all nuance.
45
45
  - Correct mistranscribed words or names using context.
@@ -1,10 +1,10 @@
1
- ## 🧑‍💼 Persona: TranscriptFormatter-v1
1
+ ## Persona: TranscriptFormatter-v1
2
2
 
3
3
  **Role**: Markdown transcript formatter and error-correction agent.
4
4
 
5
5
  **Purpose**: To convert raw, unstructured Whisper-generated transcripts into structured, readable, and **high-fidelity** Markdown documents suitable for human review or downstream system processing.
6
6
 
7
- ### 🎯 Core Traits
7
+ ### Core Traits
8
8
 
9
9
  - **Literal** – Captures exactly what was said, not what *should have* been said.
10
10
  - **Structured** – Organizes content with paragraphs and optional section headings without altering meaning.
@@ -12,20 +12,20 @@
12
12
  - **Anti-summarizer** – Never reduces, condenses, or editorializes.
13
13
  - **Language-fidelity obsessed** – Preserves the tone, hesitations, repetitions (unless clearly unintentional), and casual phrasing.
14
14
 
15
- ### 🧱 Boundaries
15
+ ### Boundaries
16
16
 
17
17
  - Will **not** reword awkward phrasing for style.
18
18
  - Will **not** remove profanity, hedging, or emotion unless explicitly instructed.
19
19
  - Will **not** guess or extrapolate beyond context or transcript.
20
20
 
21
- ### 🧰 Toolkit
21
+ ### Toolkit
22
22
 
23
23
  - Markdown formatting engine (headings, paragraphs, emphasis).
24
24
  - Entity correction using supplied glossary/context.
25
25
  - Repetition collapse (only when verbatim duplication is evident).
26
26
  - Parenthetical disambiguation when corrections are uncertain.
27
27
 
28
- ### Example Behavior
28
+ ### Example Behavior
29
29
 
30
30
  - Transcript says: `"uh we talked to adreean slohn yesterday about the update thing"`
31
31
  - Context lists: `Adrian Sloan`
package/dist/protokoll.js CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import 'dotenv/config';
3
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 } from './constants.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
5
  import { setLogLevel, getLogger } from './logging.js';
6
- import { create } from './processor.js';
6
+ import { create as create$1 } from './pipeline/index.js';
7
+ import { create } from './phases/locate.js';
7
8
  import * as Dreadcabinet from '@theunwalked/dreadcabinet';
8
9
  import * as Cardigantime from '@theunwalked/cardigantime';
9
10
  import { z } from 'zod';
@@ -20,7 +21,10 @@ const ConfigSchema = z.object({
20
21
  overrides: z.boolean(),
21
22
  contextDirectories: z.array(z.string()).optional(),
22
23
  maxAudioSize: z.number(),
23
- tempDirectory: z.string()
24
+ tempDirectory: z.string(),
25
+ interactive: z.boolean(),
26
+ selfReflection: z.boolean(),
27
+ processedDirectory: z.string().optional()
24
28
  });
25
29
  z.object({
26
30
  openaiApiKey: z.string().optional()
@@ -67,9 +71,38 @@ async function main() {
67
71
  ...config,
68
72
  ...secureConfig
69
73
  });
70
- const processor = create(config, operator);
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
+ });
71
96
  await operator.process(async (file)=>{
72
- await processor.process(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);
73
106
  });
74
107
  } catch (error) {
75
108
  logger.error('Exiting due to Error: %s, %s', error.message, error.stack);
@@ -1 +1 @@
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 } from '@/constants';\nimport { getLogger, setLogLevel } from '@/logging';\nimport * as Processor from './processor';\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}\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});\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 const processor = Processor.create(config, operator);\n\n await operator.process(async (file: string) => {\n await processor.process(file);\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","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","processor","Processor","process","file","error","message","stack","exit"],"mappings":"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"}
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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"}
@@ -0,0 +1,150 @@
1
+ import OpenAI from 'openai';
2
+ import { getLogger } from '../logging.js';
3
+
4
+ const create = (config)=>{
5
+ const logger = getLogger();
6
+ // Lazy-initialize OpenAI client (only when actually needed)
7
+ let client = null;
8
+ const getClient = ()=>{
9
+ if (!client) {
10
+ client = new OpenAI({
11
+ apiKey: config.apiKey
12
+ });
13
+ }
14
+ return client;
15
+ };
16
+ const getModelFamily = (model)=>{
17
+ if (model.startsWith('gpt') || model.startsWith('o1') || model.startsWith('o3')) return 'openai';
18
+ if (model.startsWith('claude')) return 'anthropic';
19
+ if (model.startsWith('gemini')) return 'gemini';
20
+ return 'unknown';
21
+ };
22
+ const isReasoningModel = (model)=>{
23
+ // Models known for strong reasoning
24
+ const reasoningModels = [
25
+ 'gpt-4o',
26
+ 'gpt-4-turbo',
27
+ 'gpt-5',
28
+ 'gpt-5-mini',
29
+ 'gpt-5.1',
30
+ 'gpt-5.2',
31
+ 'o1',
32
+ 'o1-mini',
33
+ 'o1-preview',
34
+ 'o3',
35
+ 'o3-mini',
36
+ 'claude-3-5-sonnet',
37
+ 'claude-3-opus',
38
+ 'claude-4'
39
+ ];
40
+ return reasoningModels.some((rm)=>model.includes(rm));
41
+ };
42
+ const supportsReasoningLevel = (model)=>{
43
+ // Models that support reasoning_effort parameter
44
+ const models = [
45
+ 'gpt-5.1',
46
+ 'gpt-5.2',
47
+ 'o1',
48
+ 'o1-mini',
49
+ 'o3',
50
+ 'o3-mini'
51
+ ];
52
+ return models.some((m)=>model.includes(m));
53
+ };
54
+ const complete = async (request)=>{
55
+ const startTime = Date.now();
56
+ logger.debug('Reasoning request starting', {
57
+ model: config.model
58
+ });
59
+ try {
60
+ var _request_tools, _message_tool_calls;
61
+ // Build messages for OpenAI
62
+ const messages = [];
63
+ if (request.systemPrompt) {
64
+ messages.push({
65
+ role: 'system',
66
+ content: request.systemPrompt
67
+ });
68
+ }
69
+ // Add the main prompt
70
+ messages.push({
71
+ role: 'user',
72
+ content: request.prompt
73
+ });
74
+ // Build tools if provided
75
+ const tools = (_request_tools = request.tools) === null || _request_tools === void 0 ? void 0 : _request_tools.map((tool)=>({
76
+ type: 'function',
77
+ function: {
78
+ name: tool.name,
79
+ description: tool.description,
80
+ parameters: tool.parameters
81
+ }
82
+ }));
83
+ // Build request options
84
+ const requestOptions = {
85
+ model: config.model,
86
+ messages,
87
+ tools: tools && tools.length > 0 ? tools : undefined,
88
+ tool_choice: tools && tools.length > 0 ? 'auto' : undefined
89
+ };
90
+ // Add reasoning_effort for models that support it (default to 'medium')
91
+ if (supportsReasoningLevel(config.model)) {
92
+ const reasoningLevel = config.reasoningLevel || 'medium';
93
+ requestOptions.reasoning_effort = reasoningLevel;
94
+ logger.debug('Using reasoning_effort: %s for model %s', reasoningLevel, config.model);
95
+ }
96
+ const response = await getClient().chat.completions.create(requestOptions);
97
+ const duration = Date.now() - startTime;
98
+ logger.debug('Reasoning model responded in %dms', duration);
99
+ const choice = response.choices[0];
100
+ const message = choice.message;
101
+ // Extract token usage
102
+ const usage = response.usage ? {
103
+ promptTokens: response.usage.prompt_tokens,
104
+ completionTokens: response.usage.completion_tokens,
105
+ totalTokens: response.usage.total_tokens
106
+ } : undefined;
107
+ // Extract tool calls if any
108
+ const toolCalls = (_message_tool_calls = message.tool_calls) === null || _message_tool_calls === void 0 ? void 0 : _message_tool_calls.map((tc)=>{
109
+ // Handle both standard and custom tool call formats
110
+ const fn = 'function' in tc ? tc.function : null;
111
+ if (!fn) {
112
+ return {
113
+ id: tc.id,
114
+ name: 'unknown',
115
+ arguments: {}
116
+ };
117
+ }
118
+ return {
119
+ id: tc.id,
120
+ name: fn.name,
121
+ arguments: JSON.parse(fn.arguments)
122
+ };
123
+ });
124
+ if (toolCalls && toolCalls.length > 0) {
125
+ logger.debug('Model requested %d tool calls: %s', toolCalls.length, toolCalls.map((t)=>t.name).join(', '));
126
+ }
127
+ return {
128
+ content: message.content || '',
129
+ model: config.model,
130
+ duration,
131
+ usage,
132
+ toolCalls,
133
+ finishReason: choice.finish_reason
134
+ };
135
+ } catch (error) {
136
+ logger.error('Reasoning request failed', {
137
+ error
138
+ });
139
+ throw error;
140
+ }
141
+ };
142
+ return {
143
+ complete,
144
+ isReasoningModel,
145
+ getModelFamily
146
+ };
147
+ };
148
+
149
+ export { create };
150
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sources":["../../src/reasoning/client.ts"],"sourcesContent":["/**\n * Reasoning Client\n * \n * Wrapper for reasoning model calls with tool/function calling support.\n * Uses OpenAI's native function calling for agentic workflows.\n */\n\nimport OpenAI from 'openai';\nimport { ReasoningConfig, ReasoningRequest, ReasoningResponse, ToolCall } from './types';\nimport * as Logging from '../logging';\n\nexport interface ClientInstance {\n complete(request: ReasoningRequest): Promise<ReasoningResponse>;\n isReasoningModel(model: string): boolean;\n getModelFamily(model: string): 'openai' | 'anthropic' | 'gemini' | 'unknown';\n}\n\nexport const create = (config: ReasoningConfig): ClientInstance => {\n const logger = Logging.getLogger();\n \n // Lazy-initialize OpenAI client (only when actually needed)\n let client: OpenAI | null = null;\n const getClient = (): OpenAI => {\n if (!client) {\n client = new OpenAI({ apiKey: config.apiKey });\n }\n return client;\n };\n \n const getModelFamily = (model: string): 'openai' | 'anthropic' | 'gemini' | 'unknown' => {\n if (model.startsWith('gpt') || model.startsWith('o1') || model.startsWith('o3')) return 'openai';\n if (model.startsWith('claude')) return 'anthropic';\n if (model.startsWith('gemini')) return 'gemini';\n return 'unknown';\n };\n \n const isReasoningModel = (model: string): boolean => {\n // Models known for strong reasoning\n const reasoningModels = [\n 'gpt-4o', 'gpt-4-turbo', 'gpt-5', 'gpt-5-mini', 'gpt-5.1', 'gpt-5.2',\n 'o1', 'o1-mini', 'o1-preview', 'o3', 'o3-mini',\n 'claude-3-5-sonnet', 'claude-3-opus', 'claude-4',\n ];\n return reasoningModels.some(rm => model.includes(rm));\n };\n \n const supportsReasoningLevel = (model: string): boolean => {\n // Models that support reasoning_effort parameter\n const models = ['gpt-5.1', 'gpt-5.2', 'o1', 'o1-mini', 'o3', 'o3-mini'];\n return models.some(m => model.includes(m));\n };\n \n const complete = async (request: ReasoningRequest): Promise<ReasoningResponse> => {\n const startTime = Date.now();\n logger.debug('Reasoning request starting', { model: config.model });\n \n try {\n // Build messages for OpenAI\n const messages: Array<OpenAI.Chat.ChatCompletionMessageParam> = [];\n \n if (request.systemPrompt) {\n messages.push({ role: 'system', content: request.systemPrompt });\n }\n \n // Add the main prompt\n messages.push({ role: 'user', content: request.prompt });\n \n // Build tools if provided\n const tools: OpenAI.Chat.ChatCompletionTool[] | undefined = request.tools?.map(tool => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n }));\n \n // Build request options\n const requestOptions: Record<string, unknown> = {\n model: config.model,\n messages,\n tools: tools && tools.length > 0 ? tools : undefined,\n tool_choice: tools && tools.length > 0 ? 'auto' : undefined,\n };\n \n // Add reasoning_effort for models that support it (default to 'medium')\n if (supportsReasoningLevel(config.model)) {\n const reasoningLevel = config.reasoningLevel || 'medium';\n requestOptions.reasoning_effort = reasoningLevel;\n logger.debug('Using reasoning_effort: %s for model %s', reasoningLevel, config.model);\n }\n \n const response = await getClient().chat.completions.create(\n requestOptions as unknown as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming\n );\n \n const duration = Date.now() - startTime;\n logger.debug('Reasoning model responded in %dms', duration);\n \n const choice = response.choices[0];\n const message = choice.message;\n \n // Extract token usage\n const usage = response.usage ? {\n promptTokens: response.usage.prompt_tokens,\n completionTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n } : undefined;\n \n // Extract tool calls if any\n const toolCalls: ToolCall[] | undefined = message.tool_calls?.map(tc => {\n // Handle both standard and custom tool call formats\n const fn = 'function' in tc ? tc.function : null;\n if (!fn) {\n return { id: tc.id, name: 'unknown', arguments: {} };\n }\n return {\n id: tc.id,\n name: fn.name,\n arguments: JSON.parse(fn.arguments),\n };\n });\n \n if (toolCalls && toolCalls.length > 0) {\n logger.debug('Model requested %d tool calls: %s', toolCalls.length, toolCalls.map(t => t.name).join(', '));\n }\n \n return {\n content: message.content || '',\n model: config.model,\n duration,\n usage,\n toolCalls,\n finishReason: choice.finish_reason,\n };\n } catch (error) {\n logger.error('Reasoning request failed', { error });\n throw error;\n }\n };\n \n return {\n complete,\n isReasoningModel,\n getModelFamily,\n };\n};\n"],"names":["create","config","logger","Logging","client","getClient","OpenAI","apiKey","getModelFamily","model","startsWith","isReasoningModel","reasoningModels","some","rm","includes","supportsReasoningLevel","models","m","complete","request","startTime","Date","now","debug","message","messages","systemPrompt","push","role","content","prompt","tools","map","tool","type","function","name","description","parameters","requestOptions","length","undefined","tool_choice","reasoningLevel","reasoning_effort","response","chat","completions","duration","choice","choices","usage","promptTokens","prompt_tokens","completionTokens","completion_tokens","totalTokens","total_tokens","toolCalls","tool_calls","tc","fn","id","arguments","JSON","parse","t","join","finishReason","finish_reason","error"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { create as create$1 } from './client.js';
2
+ import { getRecommendedStrategy, createStrategy } from './strategy.js';
3
+
4
+ const create = (config)=>{
5
+ const client = create$1(config);
6
+ return {
7
+ complete: (request)=>client.complete(request),
8
+ executeWithStrategy: async (request, strategyType)=>{
9
+ var _ref, _response_duration, _ref1;
10
+ var _response_toolCalls, _response_usage;
11
+ // Create the strategy (for future use with full agentic execution)
12
+ createStrategy({
13
+ type: strategyType,
14
+ maxIterations: request.maxIterations
15
+ });
16
+ // For now, simple execution
17
+ // Full strategy execution will be implemented in Step 05 (Agentic)
18
+ const response = await client.complete(request);
19
+ return {
20
+ ...response,
21
+ metrics: {
22
+ iterations: 1,
23
+ toolCallsExecuted: (_ref = (_response_toolCalls = response.toolCalls) === null || _response_toolCalls === void 0 ? void 0 : _response_toolCalls.length) !== null && _ref !== void 0 ? _ref : 0,
24
+ totalDuration: (_response_duration = response.duration) !== null && _response_duration !== void 0 ? _response_duration : 0,
25
+ tokensUsed: (_ref1 = (_response_usage = response.usage) === null || _response_usage === void 0 ? void 0 : _response_usage.totalTokens) !== null && _ref1 !== void 0 ? _ref1 : 0
26
+ }
27
+ };
28
+ },
29
+ isReasoningModel: client.isReasoningModel,
30
+ getModelFamily: client.getModelFamily,
31
+ getRecommendedStrategy: getRecommendedStrategy
32
+ };
33
+ };
34
+
35
+ export { create };
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/reasoning/index.ts"],"sourcesContent":["/**\n * Reasoning System\n * \n * Main entry point for the reasoning system. Provides a factory function\n * to create reasoning instances that can execute LLM calls with various\n * strategies using riotprompt.\n */\n\nimport { ReasoningConfig, ReasoningRequest, ReasoningResponse, ReasoningMetrics } from './types';\nimport * as Client from './client';\nimport * as Strategy from './strategy';\n\nexport interface ReasoningInstance {\n // Single completion\n complete(request: ReasoningRequest): Promise<ReasoningResponse>;\n \n // Strategy-based execution\n executeWithStrategy(\n request: ReasoningRequest,\n strategyType: Strategy.TranscriptionStrategy\n ): Promise<ReasoningResponse & { metrics: ReasoningMetrics }>;\n \n // Model information\n isReasoningModel(model: string): boolean;\n getModelFamily(model: string): 'openai' | 'anthropic' | 'gemini' | 'unknown';\n \n // Strategy helpers\n getRecommendedStrategy(\n transcriptLength: number,\n hasUnknownNames: boolean,\n complexity: 'low' | 'medium' | 'high'\n ): Strategy.TranscriptionStrategy;\n}\n\nexport const create = (config: ReasoningConfig): ReasoningInstance => {\n const client = Client.create(config);\n \n return {\n complete: (request) => client.complete(request),\n \n executeWithStrategy: async (request, strategyType) => {\n // Create the strategy (for future use with full agentic execution)\n Strategy.createStrategy({\n type: strategyType,\n maxIterations: request.maxIterations,\n });\n \n // For now, simple execution\n // Full strategy execution will be implemented in Step 05 (Agentic)\n const response = await client.complete(request);\n \n return {\n ...response,\n metrics: {\n iterations: 1,\n toolCallsExecuted: response.toolCalls?.length ?? 0,\n totalDuration: response.duration ?? 0,\n tokensUsed: response.usage?.totalTokens ?? 0,\n },\n };\n },\n \n isReasoningModel: client.isReasoningModel,\n getModelFamily: client.getModelFamily,\n getRecommendedStrategy: Strategy.getRecommendedStrategy,\n };\n};\n\n// Re-export types\nexport * from './types';\nexport type { TranscriptionStrategy, StrategyConfig } from './strategy';\n\n"],"names":["create","config","client","Client","complete","request","executeWithStrategy","strategyType","response","Strategy","type","maxIterations","metrics","iterations","toolCallsExecuted","toolCalls","length","totalDuration","duration","tokensUsed","usage","totalTokens","isReasoningModel","getModelFamily","getRecommendedStrategy"],"mappings":";;;AAkCO,MAAMA,SAAS,CAACC,MAAAA,GAAAA;IACnB,MAAMC,MAAAA,GAASC,QAAa,CAACF,MAAAA,CAAAA;IAE7B,OAAO;AACHG,QAAAA,QAAAA,EAAU,CAACC,OAAAA,GAAYH,MAAAA,CAAOE,QAAQ,CAACC,OAAAA,CAAAA;AAEvCC,QAAAA,mBAAAA,EAAqB,OAAOD,OAAAA,EAASE,YAAAA,GAAAA;AAgBVC,YAAAA,IAAAA,IAAAA,EAAAA,kBAAAA,EAAAA,KAAAA;gBADIA,mBAAAA,EAEPA,eAAAA;;AAfpBC,YAAAA,cAAuB,CAAC;gBACpBC,IAAAA,EAAMH,YAAAA;AACNI,gBAAAA,aAAAA,EAAeN,QAAQM;AAC3B,aAAA,CAAA;;;AAIA,YAAA,MAAMH,QAAAA,GAAW,MAAMN,MAAAA,CAAOE,QAAQ,CAACC,OAAAA,CAAAA;YAEvC,OAAO;AACH,gBAAA,GAAGG,QAAQ;gBACXI,OAAAA,EAAS;oBACLC,UAAAA,EAAY,CAAA;oBACZC,iBAAiB,EAAA,CAAA,IAAA,GAAA,CAAEN,sBAAAA,QAAAA,CAASO,SAAS,cAAlBP,mBAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,mBAAAA,CAAoBQ,MAAM,MAAA,IAAA,IAAA,IAAA,KAAA,MAAA,GAAA,IAAA,GAAI,CAAA;AACjDC,oBAAAA,aAAa,GAAET,kBAAAA,GAAAA,QAAAA,CAASU,QAAQ,MAAA,IAAA,IAAjBV,gCAAAA,kBAAAA,GAAqB,CAAA;oBACpCW,UAAU,EAAA,CAAA,KAAA,GAAA,CAAEX,kBAAAA,QAAAA,CAASY,KAAK,cAAdZ,eAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,eAAAA,CAAgBa,WAAW,MAAA,IAAA,IAAA,KAAA,KAAA,MAAA,GAAA,KAAA,GAAI;AAC/C;AACJ,aAAA;AACJ,QAAA,CAAA;AAEAC,QAAAA,gBAAAA,EAAkBpB,OAAOoB,gBAAgB;AACzCC,QAAAA,cAAAA,EAAgBrB,OAAOqB,cAAc;AACrCC,QAAAA,sBAAAA,EAAwBf;AAC5B,KAAA;AACJ;;;;"}
@@ -0,0 +1,60 @@
1
+ import { IterationStrategyFactory } from '@riotprompt/riotprompt';
2
+
3
+ const createStrategy = (config)=>{
4
+ var _config_maxIterations;
5
+ const maxIterations = (_config_maxIterations = config.maxIterations) !== null && _config_maxIterations !== void 0 ? _config_maxIterations : getDefaultIterations(config.type);
6
+ switch(config.type){
7
+ case 'simple':
8
+ return IterationStrategyFactory.simple({
9
+ maxIterations,
10
+ allowTools: false
11
+ });
12
+ case 'investigate-then-respond':
13
+ var _config_requireMinimumTools;
14
+ return IterationStrategyFactory.investigateThenRespond({
15
+ maxInvestigationSteps: Math.floor(maxIterations * 0.8),
16
+ requireMinimumTools: (_config_requireMinimumTools = config.requireMinimumTools) !== null && _config_requireMinimumTools !== void 0 ? _config_requireMinimumTools : 2,
17
+ finalSynthesis: true
18
+ });
19
+ case 'multi-pass':
20
+ return IterationStrategyFactory.multiPassRefinement({
21
+ passes: 3,
22
+ critiqueBetweenPasses: true
23
+ });
24
+ case 'adaptive':
25
+ return IterationStrategyFactory.adaptive({});
26
+ default:
27
+ return IterationStrategyFactory.simple({
28
+ maxIterations
29
+ });
30
+ }
31
+ };
32
+ const getDefaultIterations = (type)=>{
33
+ switch(type){
34
+ case 'simple':
35
+ return 1;
36
+ case 'investigate-then-respond':
37
+ return 15;
38
+ case 'multi-pass':
39
+ return 6;
40
+ case 'adaptive':
41
+ return 20;
42
+ default:
43
+ return 10;
44
+ }
45
+ };
46
+ const getRecommendedStrategy = (transcriptLength, hasUnknownNames, complexity)=>{
47
+ // Short, simple transcripts
48
+ if (transcriptLength < 500 && !hasUnknownNames && complexity === 'low') {
49
+ return 'simple';
50
+ }
51
+ // Complex or with unknowns - need investigation
52
+ if (hasUnknownNames || complexity === 'high') {
53
+ return 'investigate-then-respond';
54
+ }
55
+ // Medium complexity - adaptive is good
56
+ return 'adaptive';
57
+ };
58
+
59
+ export { createStrategy, getRecommendedStrategy };
60
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sources":["../../src/reasoning/strategy.ts"],"sourcesContent":["/**\n * Reasoning Strategy\n * \n * Strategy factory for different transcription processing approaches.\n * Uses riotprompt's IterationStrategyFactory for complex workflows.\n */\n\nimport { IterationStrategy, IterationStrategyFactory } from '@riotprompt/riotprompt';\nimport { ReasoningLevel } from './types';\n\nexport type TranscriptionStrategy = \n | 'simple' // Basic completion\n | 'investigate-then-respond' // Use tools to gather info, then respond\n | 'multi-pass' // Multiple refinement passes\n | 'adaptive'; // Changes based on complexity\n\nexport interface StrategyConfig {\n type: TranscriptionStrategy;\n maxIterations?: number;\n requireMinimumTools?: number;\n reasoningLevel?: ReasoningLevel;\n}\n\nexport const createStrategy = (config: StrategyConfig): IterationStrategy => {\n const maxIterations = config.maxIterations ?? getDefaultIterations(config.type);\n \n switch (config.type) {\n case 'simple':\n return IterationStrategyFactory.simple({\n maxIterations,\n allowTools: false,\n });\n \n case 'investigate-then-respond':\n return IterationStrategyFactory.investigateThenRespond({\n maxInvestigationSteps: Math.floor(maxIterations * 0.8),\n requireMinimumTools: config.requireMinimumTools ?? 2,\n finalSynthesis: true,\n });\n \n case 'multi-pass':\n return IterationStrategyFactory.multiPassRefinement({\n passes: 3,\n critiqueBetweenPasses: true,\n });\n \n case 'adaptive':\n return IterationStrategyFactory.adaptive({});\n \n default:\n return IterationStrategyFactory.simple({ maxIterations });\n }\n};\n\nconst getDefaultIterations = (type: TranscriptionStrategy): number => {\n switch (type) {\n case 'simple': return 1;\n case 'investigate-then-respond': return 15;\n case 'multi-pass': return 6;\n case 'adaptive': return 20;\n default: return 10;\n }\n};\n\nexport const getRecommendedStrategy = (\n transcriptLength: number,\n hasUnknownNames: boolean,\n complexity: 'low' | 'medium' | 'high'\n): TranscriptionStrategy => {\n // Short, simple transcripts\n if (transcriptLength < 500 && !hasUnknownNames && complexity === 'low') {\n return 'simple';\n }\n \n // Complex or with unknowns - need investigation\n if (hasUnknownNames || complexity === 'high') {\n return 'investigate-then-respond';\n }\n \n // Medium complexity - adaptive is good\n return 'adaptive';\n};\n\n"],"names":["createStrategy","config","maxIterations","getDefaultIterations","type","IterationStrategyFactory","simple","allowTools","investigateThenRespond","maxInvestigationSteps","Math","floor","requireMinimumTools","finalSynthesis","multiPassRefinement","passes","critiqueBetweenPasses","adaptive","getRecommendedStrategy","transcriptLength","hasUnknownNames","complexity"],"mappings":";;AAuBO,MAAMA,iBAAiB,CAACC,MAAAA,GAAAA;AACLA,IAAAA,IAAAA,qBAAAA;IAAtB,MAAMC,aAAAA,GAAAA,CAAgBD,wBAAAA,MAAAA,CAAOC,aAAa,cAApBD,qBAAAA,KAAAA,MAAAA,GAAAA,qBAAAA,GAAwBE,oBAAAA,CAAqBF,MAAAA,CAAOG,IAAI,CAAA;AAE9E,IAAA,OAAQH,OAAOG,IAAI;QACf,KAAK,QAAA;YACD,OAAOC,wBAAAA,CAAyBC,MAAM,CAAC;AACnCJ,gBAAAA,aAAAA;gBACAK,UAAAA,EAAY;AAChB,aAAA,CAAA;QAEJ,KAAK,0BAAA;AAGwBN,YAAAA,IAAAA,2BAAAA;YAFzB,OAAOI,wBAAAA,CAAyBG,sBAAsB,CAAC;gBACnDC,qBAAAA,EAAuBC,IAAAA,CAAKC,KAAK,CAACT,aAAAA,GAAgB,GAAA,CAAA;AAClDU,gBAAAA,mBAAmB,GAAEX,2BAAAA,GAAAA,MAAAA,CAAOW,mBAAmB,MAAA,IAAA,IAA1BX,yCAAAA,2BAAAA,GAA8B,CAAA;gBACnDY,cAAAA,EAAgB;AACpB,aAAA,CAAA;QAEJ,KAAK,YAAA;YACD,OAAOR,wBAAAA,CAAyBS,mBAAmB,CAAC;gBAChDC,MAAAA,EAAQ,CAAA;gBACRC,qBAAAA,EAAuB;AAC3B,aAAA,CAAA;QAEJ,KAAK,UAAA;YACD,OAAOX,wBAAAA,CAAyBY,QAAQ,CAAC,EAAC,CAAA;AAE9C,QAAA;YACI,OAAOZ,wBAAAA,CAAyBC,MAAM,CAAC;AAAEJ,gBAAAA;AAAc,aAAA,CAAA;AAC/D;AACJ;AAEA,MAAMC,uBAAuB,CAACC,IAAAA,GAAAA;IAC1B,OAAQA,IAAAA;QACJ,KAAK,QAAA;YAAU,OAAO,CAAA;QACtB,KAAK,0BAAA;YAA4B,OAAO,EAAA;QACxC,KAAK,YAAA;YAAc,OAAO,CAAA;QAC1B,KAAK,UAAA;YAAY,OAAO,EAAA;AACxB,QAAA;YAAS,OAAO,EAAA;AACpB;AACJ,CAAA;AAEO,MAAMc,sBAAAA,GAAyB,CAClCC,gBAAAA,EACAC,eAAAA,EACAC,UAAAA,GAAAA;;AAGA,IAAA,IAAIF,gBAAAA,GAAmB,GAAA,IAAO,CAACC,eAAAA,IAAmBC,eAAe,KAAA,EAAO;QACpE,OAAO,QAAA;AACX,IAAA;;IAGA,IAAID,eAAAA,IAAmBC,eAAe,MAAA,EAAQ;QAC1C,OAAO,0BAAA;AACX,IAAA;;IAGA,OAAO,UAAA;AACX;;;;"}