@redaksjon/protokoll 0.0.12 → 0.0.13

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 (75) hide show
  1. package/.cursor/rules/definition-of-done.md +1 -0
  2. package/.cursor/rules/no-emoticons.md +26 -12
  3. package/README.md +483 -69
  4. package/dist/agentic/executor.js +473 -41
  5. package/dist/agentic/executor.js.map +1 -1
  6. package/dist/agentic/index.js.map +1 -1
  7. package/dist/agentic/tools/lookup-person.js +123 -4
  8. package/dist/agentic/tools/lookup-person.js.map +1 -1
  9. package/dist/agentic/tools/lookup-project.js +139 -22
  10. package/dist/agentic/tools/lookup-project.js.map +1 -1
  11. package/dist/agentic/tools/route-note.js +5 -1
  12. package/dist/agentic/tools/route-note.js.map +1 -1
  13. package/dist/arguments.js +6 -3
  14. package/dist/arguments.js.map +1 -1
  15. package/dist/cli/action.js +704 -0
  16. package/dist/cli/action.js.map +1 -0
  17. package/dist/cli/config.js +482 -0
  18. package/dist/cli/config.js.map +1 -0
  19. package/dist/cli/context.js +466 -0
  20. package/dist/cli/context.js.map +1 -0
  21. package/dist/cli/feedback.js +858 -0
  22. package/dist/cli/feedback.js.map +1 -0
  23. package/dist/cli/index.js +103 -0
  24. package/dist/cli/index.js.map +1 -0
  25. package/dist/cli/install.js +572 -0
  26. package/dist/cli/install.js.map +1 -0
  27. package/dist/cli/transcript.js +199 -0
  28. package/dist/cli/transcript.js.map +1 -0
  29. package/dist/constants.js +11 -4
  30. package/dist/constants.js.map +1 -1
  31. package/dist/context/index.js +25 -1
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/storage.js +56 -3
  34. package/dist/context/storage.js.map +1 -1
  35. package/dist/interactive/handler.js +310 -9
  36. package/dist/interactive/handler.js.map +1 -1
  37. package/dist/main.js +11 -1
  38. package/dist/main.js.map +1 -1
  39. package/dist/output/index.js.map +1 -1
  40. package/dist/output/manager.js +46 -1
  41. package/dist/output/manager.js.map +1 -1
  42. package/dist/phases/complete.js +37 -2
  43. package/dist/phases/complete.js.map +1 -1
  44. package/dist/pipeline/orchestrator.js +104 -31
  45. package/dist/pipeline/orchestrator.js.map +1 -1
  46. package/dist/protokoll.js +68 -2
  47. package/dist/protokoll.js.map +1 -1
  48. package/dist/reasoning/client.js +83 -0
  49. package/dist/reasoning/client.js.map +1 -1
  50. package/dist/reasoning/index.js +1 -0
  51. package/dist/reasoning/index.js.map +1 -1
  52. package/dist/util/metadata.js.map +1 -1
  53. package/dist/util/sound.js +116 -0
  54. package/dist/util/sound.js.map +1 -0
  55. package/docs/duplicate-question-prevention.md +117 -0
  56. package/docs/examples.md +152 -0
  57. package/docs/interactive-context-example.md +92 -0
  58. package/docs/package-lock.json +6 -0
  59. package/docs/package.json +3 -1
  60. package/guide/action.md +375 -0
  61. package/guide/config.md +207 -0
  62. package/guide/configuration.md +82 -67
  63. package/guide/context-commands.md +574 -0
  64. package/guide/context-system.md +20 -7
  65. package/guide/development.md +106 -4
  66. package/guide/feedback.md +335 -0
  67. package/guide/index.md +100 -4
  68. package/guide/interactive.md +15 -14
  69. package/guide/quickstart.md +21 -7
  70. package/guide/reasoning.md +18 -4
  71. package/guide/routing.md +192 -97
  72. package/package.json +1 -1
  73. package/scripts/coverage-priority.mjs +323 -0
  74. package/tsconfig.tsbuildinfo +1 -1
  75. package/vitest.config.ts +5 -1
@@ -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, 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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"}
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';\nimport { glob } from 'glob';\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 reasoningLevel?: 'low' | 'medium' | 'high';\n openaiApiKey?: string;\n overrides?: boolean;\n contextDirectories?: string[];\n maxAudioSize?: number | string;\n tempDirectory?: string;\n batch?: boolean; // --batch flag (disables interactive mode)\n selfReflection?: boolean;\n silent?: 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 reasoningLevel: z.enum(['low', 'medium', 'high']),\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 silent: 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 reasoningLevel: config.reasoningLevel,\n interactive: config.interactive,\n selfReflection: config.selfReflection,\n silent: config.silent,\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 // Get list of files to process for progress tracking\n // Build glob patterns from configured audio extensions\n const inputDir = config.inputDirectory || DEFAULT_INPUT_DIRECTORY;\n const extensions = config.extensions || DEFAULT_AUDIO_EXTENSIONS;\n const patterns = extensions.map(ext => `**/*${ext}`);\n \n // Count files before processing\n const matchedFiles = await glob(patterns, { \n cwd: inputDir, \n nodir: true,\n absolute: true,\n });\n const totalFiles = matchedFiles.length;\n \n if (totalFiles === 0) {\n logger.info('No files to process in %s', inputDir);\n return;\n }\n \n logger.info('Found %d file(s) to process in %s', totalFiles, inputDir);\n \n let currentFileIndex = 0;\n \n // Track processed files for summary\n const processedFiles: Array<{ input: string; output: string }> = [];\n \n await operator.process(async (file: string) => {\n currentFileIndex++;\n const progress = `[${currentFileIndex}/${totalFiles}]`;\n \n logger.info('%s Starting: %s', progress, file);\n \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 progress: { current: currentFileIndex, total: totalFiles },\n });\n \n logger.info('%s Completed: %s -> %s', progress, file, result.outputPath);\n \n // Track for summary\n processedFiles.push({ input: file, output: result.outputPath });\n });\n \n // Print summary of processed files\n if (processedFiles.length > 0) {\n // eslint-disable-next-line no-console\n console.info('\\n' + '='.repeat(60));\n // eslint-disable-next-line no-console\n console.info('TRANSCRIPTION SUMMARY');\n // eslint-disable-next-line no-console\n console.info('='.repeat(60));\n // eslint-disable-next-line no-console\n console.info(`Processed ${processedFiles.length} file(s)\\n`);\n \n // eslint-disable-next-line no-console\n console.info('Input Files:');\n for (const { input } of processedFiles) {\n // eslint-disable-next-line no-console\n console.info(input);\n }\n \n // eslint-disable-next-line no-console\n console.info('\\nOutput Files:');\n for (const { output } of processedFiles) {\n // eslint-disable-next-line no-console\n console.info(output);\n }\n \n // eslint-disable-next-line no-console\n console.info('\\n' + '='.repeat(60));\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","reasoningLevel","enum","contentTypes","array","overrides","contextDirectories","optional","maxAudioSize","number","tempDirectory","interactive","selfReflection","silent","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","inputDir","patterns","map","ext","matchedFiles","glob","cwd","nodir","absolute","totalFiles","length","currentFileIndex","processedFiles","process","file","progress","creationTime","hash","locate","result","audioFile","creation","current","total","outputPath","push","input","output","repeat","error","message","stack","exit"],"mappings":"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"}
@@ -139,8 +139,91 @@ const create = (config)=>{
139
139
  throw error;
140
140
  }
141
141
  };
142
+ const completeWithTools = async (request)=>{
143
+ logger.debug('Tool call request starting', {
144
+ model: config.model,
145
+ messageCount: request.messages.length
146
+ });
147
+ try {
148
+ var _message_tool_calls;
149
+ // Convert messages to OpenAI format
150
+ const messages = request.messages.map((msg)=>{
151
+ if (msg.role === 'tool') {
152
+ return {
153
+ role: 'tool',
154
+ content: msg.content,
155
+ tool_call_id: msg.tool_call_id || ''
156
+ };
157
+ }
158
+ if (msg.role === 'assistant' && msg.tool_calls) {
159
+ return {
160
+ role: 'assistant',
161
+ content: msg.content || null,
162
+ tool_calls: msg.tool_calls.map((tc)=>({
163
+ id: tc.id,
164
+ type: 'function',
165
+ function: tc.function
166
+ }))
167
+ };
168
+ }
169
+ return {
170
+ role: msg.role,
171
+ content: msg.content
172
+ };
173
+ });
174
+ // Build request options
175
+ const requestOptions = {
176
+ model: config.model,
177
+ messages,
178
+ tools: request.tools,
179
+ tool_choice: request.tools && request.tools.length > 0 ? 'auto' : undefined
180
+ };
181
+ // Add reasoning_effort for models that support it
182
+ if (supportsReasoningLevel(config.model)) {
183
+ requestOptions.reasoning_effort = config.reasoningLevel || 'medium';
184
+ }
185
+ const response = await getClient().chat.completions.create(requestOptions);
186
+ const choice = response.choices[0];
187
+ const message = choice.message;
188
+ // Extract tool calls if any
189
+ const toolCalls = (_message_tool_calls = message.tool_calls) === null || _message_tool_calls === void 0 ? void 0 : _message_tool_calls.map((tc)=>{
190
+ // Handle both standard and custom tool call formats
191
+ const fn = 'function' in tc ? tc.function : null;
192
+ if (!fn) {
193
+ return {
194
+ id: tc.id,
195
+ function: {
196
+ name: 'unknown',
197
+ arguments: '{}'
198
+ }
199
+ };
200
+ }
201
+ return {
202
+ id: tc.id,
203
+ function: {
204
+ name: fn.name,
205
+ arguments: fn.arguments
206
+ }
207
+ };
208
+ });
209
+ if (toolCalls && toolCalls.length > 0) {
210
+ logger.debug('Model requested %d tool calls: %s', toolCalls.length, toolCalls.map((t)=>t.function.name).join(', '));
211
+ }
212
+ return {
213
+ content: message.content || '',
214
+ tool_calls: toolCalls,
215
+ finish_reason: choice.finish_reason
216
+ };
217
+ } catch (error) {
218
+ logger.error('Tool call request failed', {
219
+ error
220
+ });
221
+ throw error;
222
+ }
223
+ };
142
224
  return {
143
225
  complete,
226
+ completeWithTools,
144
227
  isReasoningModel,
145
228
  getModelFamily
146
229
  };
@@ -1 +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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"}
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 ToolCallRequest {\n messages: Array<{\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string;\n tool_call_id?: string;\n tool_calls?: Array<{ id: string; function: { name: string; arguments: string } }>;\n }>;\n tools?: Array<{\n type: 'function';\n function: {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n };\n }>;\n}\n\nexport interface ToolCallResponse {\n content: string;\n tool_calls?: Array<{\n id: string;\n function: {\n name: string;\n arguments: string;\n };\n }>;\n finish_reason?: string;\n}\n\nexport interface ClientInstance {\n complete(request: ReasoningRequest): Promise<ReasoningResponse>;\n completeWithTools(request: ToolCallRequest): Promise<ToolCallResponse>;\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 const completeWithTools = async (request: ToolCallRequest): Promise<ToolCallResponse> => {\n logger.debug('Tool call request starting', { model: config.model, messageCount: request.messages.length });\n \n try {\n // Convert messages to OpenAI format\n const messages: Array<OpenAI.Chat.ChatCompletionMessageParam> = request.messages.map(msg => {\n if (msg.role === 'tool') {\n return {\n role: 'tool' as const,\n content: msg.content,\n tool_call_id: msg.tool_call_id || '',\n };\n }\n if (msg.role === 'assistant' && msg.tool_calls) {\n return {\n role: 'assistant' as const,\n content: msg.content || null,\n tool_calls: msg.tool_calls.map(tc => ({\n id: tc.id,\n type: 'function' as const,\n function: tc.function,\n })),\n };\n }\n return {\n role: msg.role as 'system' | 'user' | 'assistant',\n content: msg.content,\n };\n });\n \n // Build request options\n const requestOptions: Record<string, unknown> = {\n model: config.model,\n messages,\n tools: request.tools,\n tool_choice: request.tools && request.tools.length > 0 ? 'auto' : undefined,\n };\n \n // Add reasoning_effort for models that support it\n if (supportsReasoningLevel(config.model)) {\n requestOptions.reasoning_effort = config.reasoningLevel || 'medium';\n }\n \n const response = await getClient().chat.completions.create(\n requestOptions as unknown as OpenAI.Chat.ChatCompletionCreateParamsNonStreaming\n );\n \n const choice = response.choices[0];\n const message = choice.message;\n \n // Extract tool calls if any\n const toolCalls = 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, function: { name: 'unknown', arguments: '{}' } };\n }\n return {\n id: tc.id,\n function: {\n name: fn.name,\n arguments: fn.arguments,\n },\n };\n });\n \n if (toolCalls && toolCalls.length > 0) {\n logger.debug('Model requested %d tool calls: %s', toolCalls.length, toolCalls.map(t => t.function.name).join(', '));\n }\n \n return {\n content: message.content || '',\n tool_calls: toolCalls,\n finish_reason: choice.finish_reason,\n };\n } catch (error) {\n logger.error('Tool call request failed', { error });\n throw error;\n }\n };\n \n return {\n complete,\n completeWithTools,\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","completeWithTools","messageCount","msg","tool_call_id"],"mappings":"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"}
@@ -5,6 +5,7 @@ const create = (config)=>{
5
5
  const client = create$1(config);
6
6
  return {
7
7
  complete: (request)=>client.complete(request),
8
+ completeWithTools: (request)=>client.completeWithTools(request),
8
9
  executeWithStrategy: async (request, strategyType)=>{
9
10
  var _ref, _response_duration, _ref1;
10
11
  var _response_toolCalls, _response_usage;
@@ -1 +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;;;;"}
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 // Multi-turn tool calling\n completeWithTools(request: Client.ToolCallRequest): Promise<Client.ToolCallResponse>;\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 completeWithTools: (request) => client.completeWithTools(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","completeWithTools","executeWithStrategy","strategyType","response","Strategy","type","maxIterations","metrics","iterations","toolCallsExecuted","toolCalls","length","totalDuration","duration","tokensUsed","usage","totalTokens","isReasoningModel","getModelFamily","getRecommendedStrategy"],"mappings":";;;AAqCO,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;AACvCC,QAAAA,iBAAAA,EAAmB,CAACD,OAAAA,GAAYH,MAAAA,CAAOI,iBAAiB,CAACD,OAAAA,CAAAA;AAEzDE,QAAAA,mBAAAA,EAAqB,OAAOF,OAAAA,EAASG,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,EAAeP,QAAQO;AAC3B,aAAA,CAAA;;;AAIA,YAAA,MAAMH,QAAAA,GAAW,MAAMP,MAAAA,CAAOE,QAAQ,CAACC,OAAAA,CAAAA;YAEvC,OAAO;AACH,gBAAA,GAAGI,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,EAAkBrB,OAAOqB,gBAAgB;AACzCC,QAAAA,cAAAA,EAAgBtB,OAAOsB,cAAc;AACrCC,QAAAA,sBAAAA,EAAwBf;AAC5B,KAAA;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sources":["../../src/util/metadata.ts"],"sourcesContent":["import * as Routing from '@/routing';\n\nexport interface TranscriptMetadata {\n title?: string;\n project?: string;\n projectId?: string;\n routing?: RoutingMetadata;\n tags?: string[];\n date?: Date;\n recordingTime?: string;\n confidence?: number;\n duration?: string;\n}\n\nexport interface RoutingMetadata {\n destination: string;\n confidence: number;\n signals: Routing.ClassificationSignal[];\n reasoning: string;\n}\n\n/**\n * Format metadata as Markdown heading section\n */\nexport const formatMetadataMarkdown = (metadata: TranscriptMetadata): string => {\n const lines: string[] = [];\n \n // Title section\n if (metadata.title) {\n lines.push(`# ${metadata.title}`);\n lines.push('');\n }\n \n // Metadata frontmatter as readable markdown\n lines.push('## Metadata');\n lines.push('');\n \n // Date and Time\n if (metadata.date) {\n const dateStr = metadata.date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n lines.push(`**Date**: ${dateStr}`);\n \n if (metadata.recordingTime) {\n lines.push(`**Time**: ${metadata.recordingTime}`);\n } else {\n const timeStr = metadata.date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n lines.push(`**Time**: ${timeStr}`);\n }\n }\n \n lines.push('');\n \n // Project\n if (metadata.project) {\n lines.push(`**Project**: ${metadata.project}`);\n if (metadata.projectId) {\n lines.push(`**Project ID**: \\`${metadata.projectId}\\``);\n }\n lines.push('');\n }\n \n // Routing Information\n if (metadata.routing) {\n lines.push('### Routing');\n lines.push('');\n lines.push(`**Destination**: ${metadata.routing.destination}`);\n lines.push(`**Confidence**: ${(metadata.routing.confidence * 100).toFixed(1)}%`);\n lines.push('');\n \n if (metadata.routing.signals.length > 0) {\n lines.push('**Classification Signals**:');\n for (const signal of metadata.routing.signals) {\n const signalType = signal.type.replace(/_/g, ' ');\n const weight = (signal.weight * 100).toFixed(0);\n lines.push(`- ${signalType}: \"${signal.value}\" (${weight}% weight)`);\n }\n lines.push('');\n }\n \n if (metadata.routing.reasoning) {\n lines.push(`**Reasoning**: ${metadata.routing.reasoning}`);\n lines.push('');\n }\n }\n \n // Tags\n if (metadata.tags && metadata.tags.length > 0) {\n lines.push('**Tags**: ' + metadata.tags.map(tag => `\\`${tag}\\``).join(', '));\n lines.push('');\n }\n \n // Duration\n if (metadata.duration) {\n lines.push(`**Duration**: ${metadata.duration}`);\n lines.push('');\n }\n \n // Separator\n lines.push('---');\n lines.push('');\n \n return lines.join('\\n');\n};\n\n/**\n * Extract routing metadata from a RouteDecision\n */\nexport const createRoutingMetadata = (decision: Routing.RouteDecision): RoutingMetadata => {\n return {\n destination: decision.destination.path,\n confidence: decision.confidence,\n signals: decision.signals,\n reasoning: decision.reasoning,\n };\n};\n\n/**\n * Format duration in seconds to readable format (e.g., \"2m 30s\")\n */\nexport const formatDuration = (seconds: number): string => {\n const minutes = Math.floor(seconds / 60);\n const secs = Math.round(seconds % 60);\n \n if (minutes === 0) {\n return `${secs}s`;\n }\n \n if (secs === 0) {\n return `${minutes}m`;\n }\n \n return `${minutes}m ${secs}s`;\n};\n\n/**\n * Format time as HH:MM AM/PM\n */\nexport const formatTime = (date: Date): string => {\n return date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n};\n\n/**\n * Extract topic from routing signals\n */\nexport const extractTopicFromSignals = (signals: Routing.ClassificationSignal[]): string | undefined => {\n const topicSignal = signals.find(s => s.type === 'topic' || s.type === 'context_type');\n return topicSignal?.value;\n};\n\n/**\n * Extract all tags from routing signals\n */\nexport const extractTagsFromSignals = (signals: Routing.ClassificationSignal[]): string[] => {\n return signals\n .filter(s => s.type !== 'context_type') // Skip generic context type\n .map(s => s.value)\n .filter((v): v is string => typeof v === 'string');\n};\n\n"],"names":["formatMetadataMarkdown","metadata","lines","title","push","date","dateStr","toLocaleDateString","year","month","day","recordingTime","timeStr","toLocaleTimeString","hour","minute","hour12","project","projectId","routing","destination","confidence","toFixed","signals","length","signal","signalType","type","replace","weight","value","reasoning","tags","map","tag","join","duration","createRoutingMetadata","decision","path","extractTagsFromSignals","filter","s","v"],"mappings":"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"}
1
+ {"version":3,"file":"metadata.js","sources":["../../src/util/metadata.ts"],"sourcesContent":["import * as Routing from '@/routing';\n\nexport interface TranscriptMetadata {\n title?: string;\n project?: string;\n projectId?: string;\n routing?: RoutingMetadata;\n tags?: string[];\n date?: Date;\n recordingTime?: string;\n confidence?: number;\n duration?: string;\n}\n\nexport interface RoutingMetadata {\n destination: string;\n confidence: number;\n signals: Routing.ClassificationSignal[];\n reasoning: string;\n}\n\n/**\n * Format metadata as Markdown heading section\n */\nexport const formatMetadataMarkdown = (metadata: TranscriptMetadata): string => {\n const lines: string[] = [];\n \n // Title section\n if (metadata.title) {\n lines.push(`# ${metadata.title}`);\n lines.push('');\n }\n \n // Metadata frontmatter as readable markdown\n lines.push('## Metadata');\n lines.push('');\n \n // Date and Time\n if (metadata.date) {\n const dateStr = metadata.date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n lines.push(`**Date**: ${dateStr}`);\n \n if (metadata.recordingTime) {\n lines.push(`**Time**: ${metadata.recordingTime}`);\n } else {\n const timeStr = metadata.date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n lines.push(`**Time**: ${timeStr}`);\n }\n }\n \n lines.push('');\n \n // Project\n if (metadata.project) {\n lines.push(`**Project**: ${metadata.project}`);\n if (metadata.projectId) {\n lines.push(`**Project ID**: \\`${metadata.projectId}\\``);\n }\n lines.push('');\n }\n \n // Routing Information\n if (metadata.routing) {\n lines.push('### Routing');\n lines.push('');\n lines.push(`**Destination**: ${metadata.routing.destination}`);\n lines.push(`**Confidence**: ${(metadata.routing.confidence * 100).toFixed(1)}%`);\n lines.push('');\n \n if (metadata.routing.signals.length > 0) {\n lines.push('**Classification Signals**:');\n for (const signal of metadata.routing.signals) {\n const signalType = signal.type.replace(/_/g, ' ');\n const weight = (signal.weight * 100).toFixed(0);\n lines.push(`- ${signalType}: \"${signal.value}\" (${weight}% weight)`);\n }\n lines.push('');\n }\n \n if (metadata.routing.reasoning) {\n lines.push(`**Reasoning**: ${metadata.routing.reasoning}`);\n lines.push('');\n }\n }\n \n // Tags\n if (metadata.tags && metadata.tags.length > 0) {\n lines.push('**Tags**: ' + metadata.tags.map(tag => `\\`${tag}\\``).join(', '));\n lines.push('');\n }\n \n // Duration\n if (metadata.duration) {\n lines.push(`**Duration**: ${metadata.duration}`);\n lines.push('');\n }\n \n // Separator\n lines.push('---');\n lines.push('');\n \n return lines.join('\\n');\n};\n\n/**\n * Extract routing metadata from a RouteDecision\n */\nexport const createRoutingMetadata = (decision: Routing.RouteDecision): RoutingMetadata => {\n return {\n destination: decision.destination.path,\n confidence: decision.confidence,\n signals: decision.signals,\n reasoning: decision.reasoning,\n };\n};\n\n/**\n * Format duration in seconds to readable format (e.g., \"2m 30s\")\n */\nexport const formatDuration = (seconds: number): string => {\n const minutes = Math.floor(seconds / 60);\n const secs = Math.round(seconds % 60);\n \n if (minutes === 0) {\n return `${secs}s`;\n }\n \n if (secs === 0) {\n return `${minutes}m`;\n }\n \n return `${minutes}m ${secs}s`;\n};\n\n/**\n * Format time as HH:MM AM/PM\n */\nexport const formatTime = (date: Date): string => {\n return date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true\n });\n};\n\n/**\n * Extract topic from routing signals\n */\nexport const extractTopicFromSignals = (signals: Routing.ClassificationSignal[]): string | undefined => {\n const topicSignal = signals.find(s => s.type === 'topic' || s.type === 'context_type');\n return topicSignal?.value;\n};\n\n/**\n * Extract all tags from routing signals\n */\nexport const extractTagsFromSignals = (signals: Routing.ClassificationSignal[]): string[] => {\n return signals\n .filter(s => s.type !== 'context_type') // Skip generic context type\n .map(s => s.value)\n .filter((v): v is string => typeof v === 'string');\n};\n\n\n"],"names":["formatMetadataMarkdown","metadata","lines","title","push","date","dateStr","toLocaleDateString","year","month","day","recordingTime","timeStr","toLocaleTimeString","hour","minute","hour12","project","projectId","routing","destination","confidence","toFixed","signals","length","signal","signalType","type","replace","weight","value","reasoning","tags","map","tag","join","duration","createRoutingMetadata","decision","path","extractTagsFromSignals","filter","s","v"],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { spawn } from 'child_process';
2
+ import { getLogger } from '../logging.js';
3
+
4
+ // macOS system sounds that work well for notifications
5
+ const MACOS_NOTIFICATION_SOUNDS = [
6
+ '/System/Library/Sounds/Glass.aiff',
7
+ '/System/Library/Sounds/Ping.aiff',
8
+ '/System/Library/Sounds/Pop.aiff',
9
+ '/System/Library/Sounds/Tink.aiff'
10
+ ];
11
+ // Default sound to use (Glass is similar to Cursor's notification)
12
+ const DEFAULT_MACOS_SOUND = MACOS_NOTIFICATION_SOUNDS[0];
13
+ /**
14
+ * Play a sound file using afplay (macOS)
15
+ */ const playWithAfplay = (soundPath)=>{
16
+ return new Promise((resolve)=>{
17
+ const afplay = spawn('afplay', [
18
+ soundPath
19
+ ], {
20
+ stdio: 'ignore',
21
+ detached: true
22
+ });
23
+ afplay.on('error', ()=>{
24
+ resolve(false);
25
+ });
26
+ afplay.on('close', (code)=>{
27
+ resolve(code === 0);
28
+ });
29
+ // Don't wait for the sound to finish - just fire and forget
30
+ afplay.unref();
31
+ // Consider it successful if spawn didn't throw
32
+ setTimeout(()=>resolve(true), 50);
33
+ });
34
+ };
35
+ /**
36
+ * Play Windows system notification sound using PowerShell
37
+ * Uses SystemSounds.Asterisk which is a pleasant notification tone
38
+ */ const playWithPowerShell = ()=>{
39
+ return new Promise((resolve)=>{
40
+ // Use PowerShell to access .NET System.Media.SystemSounds
41
+ // Asterisk is a pleasant notification sound, similar to macOS Glass
42
+ const ps = spawn('powershell', [
43
+ '-NoProfile',
44
+ '-NonInteractive',
45
+ '-Command',
46
+ '[System.Media.SystemSounds]::Asterisk.Play()'
47
+ ], {
48
+ stdio: 'ignore',
49
+ detached: true,
50
+ // On Windows, use shell to ensure PowerShell is found
51
+ shell: true
52
+ });
53
+ ps.on('error', ()=>{
54
+ resolve(false);
55
+ });
56
+ ps.on('close', (code)=>{
57
+ resolve(code === 0);
58
+ });
59
+ ps.unref();
60
+ // Consider it successful if spawn didn't throw
61
+ setTimeout(()=>resolve(true), 50);
62
+ });
63
+ };
64
+ /**
65
+ * Play terminal bell as fallback for Linux and other platforms
66
+ */ const playTerminalBell = ()=>{
67
+ // Write ASCII bell character to stdout
68
+ process.stdout.write('\x07');
69
+ };
70
+ const create = (config)=>{
71
+ const logger = getLogger();
72
+ const playNotification = async ()=>{
73
+ if (config.silent) {
74
+ logger.debug('Sound notification skipped (silent mode)');
75
+ return;
76
+ }
77
+ try {
78
+ // macOS: use afplay with system sounds
79
+ if (process.platform === 'darwin') {
80
+ const success = await playWithAfplay(DEFAULT_MACOS_SOUND);
81
+ if (success) {
82
+ logger.debug('Played notification sound: %s', DEFAULT_MACOS_SOUND);
83
+ return;
84
+ }
85
+ }
86
+ // Windows: use PowerShell to play system sound
87
+ if (process.platform === 'win32') {
88
+ const success = await playWithPowerShell();
89
+ if (success) {
90
+ logger.debug('Played Windows notification sound via PowerShell');
91
+ return;
92
+ }
93
+ }
94
+ // Linux and others: fall back to terminal bell
95
+ playTerminalBell();
96
+ logger.debug('Played terminal bell notification');
97
+ } catch (error) {
98
+ // Sound failures should never interrupt the workflow
99
+ logger.debug('Failed to play notification sound: %s', error);
100
+ // Try terminal bell as last resort
101
+ try {
102
+ playTerminalBell();
103
+ } catch {
104
+ // Silently ignore - sound is not critical
105
+ }
106
+ }
107
+ };
108
+ const isEnabled = ()=>!config.silent;
109
+ return {
110
+ playNotification,
111
+ isEnabled
112
+ };
113
+ };
114
+
115
+ export { create };
116
+ //# sourceMappingURL=sound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sound.js","sources":["../../src/util/sound.ts"],"sourcesContent":["/**\n * Sound Notification Utility\n * \n * Plays system sounds to notify the user when interactive input is needed.\n * Similar to Cursor's notification behavior.\n * \n * Platform support:\n * - macOS: Uses afplay with system sounds (Glass.aiff)\n * - Windows: Uses PowerShell to play system notification sound\n * - Linux/Other: Falls back to terminal bell\n */\n\nimport { spawn } from 'child_process';\nimport * as Logging from '../logging';\n\nexport interface SoundConfig {\n /** Whether sounds are disabled (silent mode) */\n silent: boolean;\n}\n\nexport interface SoundInstance {\n /** Play a notification sound to get user's attention */\n playNotification(): Promise<void>;\n /** Check if sounds are enabled */\n isEnabled(): boolean;\n}\n\n// macOS system sounds that work well for notifications\nconst MACOS_NOTIFICATION_SOUNDS = [\n '/System/Library/Sounds/Glass.aiff',\n '/System/Library/Sounds/Ping.aiff', \n '/System/Library/Sounds/Pop.aiff',\n '/System/Library/Sounds/Tink.aiff',\n];\n\n// Default sound to use (Glass is similar to Cursor's notification)\nconst DEFAULT_MACOS_SOUND = MACOS_NOTIFICATION_SOUNDS[0];\n\n/**\n * Play a sound file using afplay (macOS)\n */\nconst playWithAfplay = (soundPath: string): Promise<boolean> => {\n return new Promise((resolve) => {\n const afplay = spawn('afplay', [soundPath], {\n stdio: 'ignore',\n detached: true,\n });\n\n afplay.on('error', () => {\n resolve(false);\n });\n\n afplay.on('close', (code) => {\n resolve(code === 0);\n });\n\n // Don't wait for the sound to finish - just fire and forget\n afplay.unref();\n \n // Consider it successful if spawn didn't throw\n setTimeout(() => resolve(true), 50);\n });\n};\n\n/**\n * Play Windows system notification sound using PowerShell\n * Uses SystemSounds.Asterisk which is a pleasant notification tone\n */\nconst playWithPowerShell = (): Promise<boolean> => {\n return new Promise((resolve) => {\n // Use PowerShell to access .NET System.Media.SystemSounds\n // Asterisk is a pleasant notification sound, similar to macOS Glass\n const ps = spawn('powershell', [\n '-NoProfile',\n '-NonInteractive', \n '-Command',\n '[System.Media.SystemSounds]::Asterisk.Play()'\n ], {\n stdio: 'ignore',\n detached: true,\n // On Windows, use shell to ensure PowerShell is found\n shell: true,\n });\n\n ps.on('error', () => {\n resolve(false);\n });\n\n ps.on('close', (code) => {\n resolve(code === 0);\n });\n\n ps.unref();\n \n // Consider it successful if spawn didn't throw\n setTimeout(() => resolve(true), 50);\n });\n};\n\n/**\n * Play terminal bell as fallback for Linux and other platforms\n */\nconst playTerminalBell = (): void => {\n // Write ASCII bell character to stdout\n process.stdout.write('\\x07');\n};\n\nexport const create = (config: SoundConfig): SoundInstance => {\n const logger = Logging.getLogger();\n \n const playNotification = async (): Promise<void> => {\n if (config.silent) {\n logger.debug('Sound notification skipped (silent mode)');\n return;\n }\n\n try {\n // macOS: use afplay with system sounds\n if (process.platform === 'darwin') {\n const success = await playWithAfplay(DEFAULT_MACOS_SOUND);\n if (success) {\n logger.debug('Played notification sound: %s', DEFAULT_MACOS_SOUND);\n return;\n }\n }\n \n // Windows: use PowerShell to play system sound\n if (process.platform === 'win32') {\n const success = await playWithPowerShell();\n if (success) {\n logger.debug('Played Windows notification sound via PowerShell');\n return;\n }\n }\n \n // Linux and others: fall back to terminal bell\n playTerminalBell();\n logger.debug('Played terminal bell notification');\n } catch (error) {\n // Sound failures should never interrupt the workflow\n logger.debug('Failed to play notification sound: %s', error);\n // Try terminal bell as last resort\n try {\n playTerminalBell();\n } catch {\n // Silently ignore - sound is not critical\n }\n }\n };\n\n const isEnabled = (): boolean => !config.silent;\n\n return {\n playNotification,\n isEnabled,\n };\n};\n\n"],"names":["MACOS_NOTIFICATION_SOUNDS","DEFAULT_MACOS_SOUND","playWithAfplay","soundPath","Promise","resolve","afplay","spawn","stdio","detached","on","code","unref","setTimeout","playWithPowerShell","ps","shell","playTerminalBell","process","stdout","write","create","config","logger","Logging","playNotification","silent","debug","platform","success","error","isEnabled"],"mappings":"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"}