@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.
- package/.cursor/rules/definition-of-done.md +89 -0
- package/.cursor/rules/no-emoticons.md +43 -0
- package/LICENSE +1 -1
- package/README.md +928 -35
- package/dist/agentic/executor.js +315 -0
- package/dist/agentic/executor.js.map +1 -0
- package/dist/agentic/index.js +19 -0
- package/dist/agentic/index.js.map +1 -0
- package/dist/agentic/registry.js +41 -0
- package/dist/agentic/registry.js.map +1 -0
- package/dist/agentic/tools/lookup-person.js +66 -0
- package/dist/agentic/tools/lookup-person.js.map +1 -0
- package/dist/agentic/tools/lookup-project.js +93 -0
- package/dist/agentic/tools/lookup-project.js.map +1 -0
- package/dist/agentic/tools/route-note.js +45 -0
- package/dist/agentic/tools/route-note.js.map +1 -0
- package/dist/agentic/tools/store-context.js +51 -0
- package/dist/agentic/tools/store-context.js.map +1 -0
- package/dist/agentic/tools/verify-spelling.js +57 -0
- package/dist/agentic/tools/verify-spelling.js.map +1 -0
- package/dist/arguments.js +23 -6
- package/dist/arguments.js.map +1 -1
- package/dist/constants.js +13 -11
- package/dist/constants.js.map +1 -1
- package/dist/context/discovery.js +114 -0
- package/dist/context/discovery.js.map +1 -0
- package/dist/context/index.js +58 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/storage.js +131 -0
- package/dist/context/storage.js.map +1 -0
- package/dist/interactive/handler.js +223 -0
- package/dist/interactive/handler.js.map +1 -0
- package/dist/interactive/index.js +18 -0
- package/dist/interactive/index.js.map +1 -0
- package/dist/interactive/onboarding.js +28 -0
- package/dist/interactive/onboarding.js.map +1 -0
- package/dist/main.js +0 -0
- package/dist/output/index.js +8 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/manager.js +105 -0
- package/dist/output/manager.js.map +1 -0
- package/dist/phases/complete.js +107 -0
- package/dist/phases/complete.js.map +1 -0
- package/dist/phases/locate.js +14 -5
- package/dist/phases/locate.js.map +1 -1
- package/dist/pipeline/index.js +8 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/orchestrator.js +281 -0
- package/dist/pipeline/orchestrator.js.map +1 -0
- package/dist/prompt/instructions/transcribe.md +6 -6
- package/dist/prompt/personas/transcriber.md +5 -5
- package/dist/protokoll.js +38 -5
- package/dist/protokoll.js.map +1 -1
- package/dist/reasoning/client.js +150 -0
- package/dist/reasoning/client.js.map +1 -0
- package/dist/reasoning/index.js +36 -0
- package/dist/reasoning/index.js.map +1 -0
- package/dist/reasoning/strategy.js +60 -0
- package/dist/reasoning/strategy.js.map +1 -0
- package/dist/reflection/collector.js +124 -0
- package/dist/reflection/collector.js.map +1 -0
- package/dist/reflection/index.js +16 -0
- package/dist/reflection/index.js.map +1 -0
- package/dist/reflection/reporter.js +238 -0
- package/dist/reflection/reporter.js.map +1 -0
- package/dist/routing/classifier.js +201 -0
- package/dist/routing/classifier.js.map +1 -0
- package/dist/routing/index.js +27 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/router.js +153 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/transcription/index.js +41 -0
- package/dist/transcription/index.js.map +1 -0
- package/dist/transcription/service.js +64 -0
- package/dist/transcription/service.js.map +1 -0
- package/dist/transcription/types.js +31 -0
- package/dist/transcription/types.js.map +1 -0
- package/dist/util/media.js +4 -4
- package/dist/util/media.js.map +1 -1
- package/dist/util/metadata.js +95 -0
- package/dist/util/metadata.js.map +1 -0
- package/dist/util/storage.js +2 -2
- package/dist/util/storage.js.map +1 -1
- package/docs/examples.md +224 -0
- package/docs/index.html +5 -3
- package/docs/package-lock.json +639 -332
- package/docs/package.json +5 -4
- package/docs/troubleshooting.md +257 -0
- package/docs/vite.config.js +9 -3
- package/eslint.config.mjs +1 -0
- package/guide/architecture.md +217 -0
- package/guide/configuration.md +199 -0
- package/guide/context-system.md +215 -0
- package/guide/development.md +273 -0
- package/guide/index.md +91 -0
- package/guide/interactive.md +199 -0
- package/guide/quickstart.md +138 -0
- package/guide/reasoning.md +193 -0
- package/guide/routing.md +222 -0
- package/package.json +10 -7
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +27 -5
- package/dist/phases/transcribe.js +0 -149
- package/dist/phases/transcribe.js.map +0 -1
- package/dist/processor.js +0 -35
- package/dist/processor.js.map +0 -1
- package/dist/prompt/transcribe.js +0 -41
- package/dist/prompt/transcribe.js.map +0 -1
- package/dist/util/general.js +0 -39
- package/dist/util/general.js.map +0 -1
- package/dist/util/openai.js +0 -92
- package/dist/util/openai.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
##
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
42
|
+
### Do:
|
|
43
43
|
|
|
44
44
|
- Maintain all nuance.
|
|
45
45
|
- Correct mistranscribed words or names using context.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
##
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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
|
-
###
|
|
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 './
|
|
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
|
-
|
|
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
|
-
|
|
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);
|
package/dist/protokoll.js.map
CHANGED
|
@@ -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;;;;"}
|