@redaksjon/protokoll-engine 0.1.1-dev.0

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 (240) hide show
  1. package/README.md +47 -0
  2. package/dist/agentic/executor.d.ts +21 -0
  3. package/dist/agentic/executor.d.ts.map +1 -0
  4. package/dist/agentic/index.d.ts +27 -0
  5. package/dist/agentic/index.d.ts.map +1 -0
  6. package/dist/agentic/registry.d.ts +11 -0
  7. package/dist/agentic/registry.d.ts.map +1 -0
  8. package/dist/agentic/tools/lookup-person.d.ts +3 -0
  9. package/dist/agentic/tools/lookup-person.d.ts.map +1 -0
  10. package/dist/agentic/tools/lookup-project.d.ts +3 -0
  11. package/dist/agentic/tools/lookup-project.d.ts.map +1 -0
  12. package/dist/agentic/tools/route-note.d.ts +3 -0
  13. package/dist/agentic/tools/route-note.d.ts.map +1 -0
  14. package/dist/agentic/tools/store-context.d.ts +3 -0
  15. package/dist/agentic/tools/store-context.d.ts.map +1 -0
  16. package/dist/agentic/tools/verify-spelling.d.ts +3 -0
  17. package/dist/agentic/tools/verify-spelling.d.ts.map +1 -0
  18. package/dist/agentic/types.d.ts +110 -0
  19. package/dist/agentic/types.d.ts.map +1 -0
  20. package/dist/constants.d.ts +98 -0
  21. package/dist/constants.d.ts.map +1 -0
  22. package/dist/feedback/analyzer.d.ts +13 -0
  23. package/dist/feedback/analyzer.d.ts.map +1 -0
  24. package/dist/feedback/decision-tracker.d.ts +14 -0
  25. package/dist/feedback/decision-tracker.d.ts.map +1 -0
  26. package/dist/feedback/handler.d.ts +14 -0
  27. package/dist/feedback/handler.d.ts.map +1 -0
  28. package/dist/feedback/index.d.ts +12 -0
  29. package/dist/feedback/index.d.ts.map +1 -0
  30. package/dist/feedback/types.d.ts +72 -0
  31. package/dist/feedback/types.d.ts.map +1 -0
  32. package/dist/index.d.ts +24 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +32 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/index10.js +4 -0
  37. package/dist/index10.js.map +1 -0
  38. package/dist/index11.js +22 -0
  39. package/dist/index11.js.map +1 -0
  40. package/dist/index12.js +125 -0
  41. package/dist/index12.js.map +1 -0
  42. package/dist/index13.js +124 -0
  43. package/dist/index13.js.map +1 -0
  44. package/dist/index14.js +296 -0
  45. package/dist/index14.js.map +1 -0
  46. package/dist/index15.js +100 -0
  47. package/dist/index15.js.map +1 -0
  48. package/dist/index16.js +107 -0
  49. package/dist/index16.js.map +1 -0
  50. package/dist/index17.js +185 -0
  51. package/dist/index17.js.map +1 -0
  52. package/dist/index18.js +53 -0
  53. package/dist/index18.js.map +1 -0
  54. package/dist/index19.js +19 -0
  55. package/dist/index19.js.map +1 -0
  56. package/dist/index2.js +33 -0
  57. package/dist/index2.js.map +1 -0
  58. package/dist/index20.js +105 -0
  59. package/dist/index20.js.map +1 -0
  60. package/dist/index21.js +26 -0
  61. package/dist/index21.js.map +1 -0
  62. package/dist/index22.js +49 -0
  63. package/dist/index22.js.map +1 -0
  64. package/dist/index23.js +119 -0
  65. package/dist/index23.js.map +1 -0
  66. package/dist/index24.js +330 -0
  67. package/dist/index24.js.map +1 -0
  68. package/dist/index25.js +57 -0
  69. package/dist/index25.js.map +1 -0
  70. package/dist/index26.js +38 -0
  71. package/dist/index26.js.map +1 -0
  72. package/dist/index27.js +127 -0
  73. package/dist/index27.js.map +1 -0
  74. package/dist/index28.js +157 -0
  75. package/dist/index28.js.map +1 -0
  76. package/dist/index29.js +163 -0
  77. package/dist/index29.js.map +1 -0
  78. package/dist/index3.js +36 -0
  79. package/dist/index3.js.map +1 -0
  80. package/dist/index30.js +173 -0
  81. package/dist/index30.js.map +1 -0
  82. package/dist/index31.js +423 -0
  83. package/dist/index31.js.map +1 -0
  84. package/dist/index32.js +161 -0
  85. package/dist/index32.js.map +1 -0
  86. package/dist/index33.js +152 -0
  87. package/dist/index33.js.map +1 -0
  88. package/dist/index34.js +56 -0
  89. package/dist/index34.js.map +1 -0
  90. package/dist/index35.js +103 -0
  91. package/dist/index35.js.map +1 -0
  92. package/dist/index36.js +451 -0
  93. package/dist/index36.js.map +1 -0
  94. package/dist/index37.js +431 -0
  95. package/dist/index37.js.map +1 -0
  96. package/dist/index38.js +87 -0
  97. package/dist/index38.js.map +1 -0
  98. package/dist/index39.js +122 -0
  99. package/dist/index39.js.map +1 -0
  100. package/dist/index4.js +3 -0
  101. package/dist/index4.js.map +1 -0
  102. package/dist/index40.js +299 -0
  103. package/dist/index40.js.map +1 -0
  104. package/dist/index41.js +49 -0
  105. package/dist/index41.js.map +1 -0
  106. package/dist/index42.js +151 -0
  107. package/dist/index42.js.map +1 -0
  108. package/dist/index43.js +226 -0
  109. package/dist/index43.js.map +1 -0
  110. package/dist/index44.js +49 -0
  111. package/dist/index44.js.map +1 -0
  112. package/dist/index45.js +45 -0
  113. package/dist/index45.js.map +1 -0
  114. package/dist/index46.js +37 -0
  115. package/dist/index46.js.map +1 -0
  116. package/dist/index47.js +51 -0
  117. package/dist/index47.js.map +1 -0
  118. package/dist/index48.js +39 -0
  119. package/dist/index48.js.map +1 -0
  120. package/dist/index49.js +239 -0
  121. package/dist/index49.js.map +1 -0
  122. package/dist/index5.js +17 -0
  123. package/dist/index5.js.map +1 -0
  124. package/dist/index50.js +163 -0
  125. package/dist/index50.js.map +1 -0
  126. package/dist/index51.js +81 -0
  127. package/dist/index51.js.map +1 -0
  128. package/dist/index52.js +78 -0
  129. package/dist/index52.js.map +1 -0
  130. package/dist/index53.js +22 -0
  131. package/dist/index53.js.map +1 -0
  132. package/dist/index54.js +8 -0
  133. package/dist/index54.js.map +1 -0
  134. package/dist/index55.js +8 -0
  135. package/dist/index55.js.map +1 -0
  136. package/dist/index56.js +17 -0
  137. package/dist/index56.js.map +1 -0
  138. package/dist/index57.js +4 -0
  139. package/dist/index57.js.map +1 -0
  140. package/dist/index58.js +17 -0
  141. package/dist/index58.js.map +1 -0
  142. package/dist/index59.js +4 -0
  143. package/dist/index59.js.map +1 -0
  144. package/dist/index6.js +22 -0
  145. package/dist/index6.js.map +1 -0
  146. package/dist/index60.js +6 -0
  147. package/dist/index60.js.map +1 -0
  148. package/dist/index7.js +27 -0
  149. package/dist/index7.js.map +1 -0
  150. package/dist/index8.js +22 -0
  151. package/dist/index8.js.map +1 -0
  152. package/dist/index9.js +5 -0
  153. package/dist/index9.js.map +1 -0
  154. package/dist/logging.d.ts +7 -0
  155. package/dist/logging.d.ts.map +1 -0
  156. package/dist/output/index.d.ts +15 -0
  157. package/dist/output/index.d.ts.map +1 -0
  158. package/dist/phases/complete.d.ts +17 -0
  159. package/dist/phases/complete.d.ts.map +1 -0
  160. package/dist/phases/index.d.ts +5 -0
  161. package/dist/phases/index.d.ts.map +1 -0
  162. package/dist/phases/locate.d.ts +15 -0
  163. package/dist/phases/locate.d.ts.map +1 -0
  164. package/dist/phases/simple-replace.d.ts +72 -0
  165. package/dist/phases/simple-replace.d.ts.map +1 -0
  166. package/dist/phases/transcribe.d.ts +19 -0
  167. package/dist/phases/transcribe.d.ts.map +1 -0
  168. package/dist/pipeline/index.d.ts +10 -0
  169. package/dist/pipeline/index.d.ts.map +1 -0
  170. package/dist/pipeline/orchestrator.d.ts +13 -0
  171. package/dist/pipeline/orchestrator.d.ts.map +1 -0
  172. package/dist/pipeline/types.d.ts +58 -0
  173. package/dist/pipeline/types.d.ts.map +1 -0
  174. package/dist/prompt/index.d.ts +3 -0
  175. package/dist/prompt/index.d.ts.map +1 -0
  176. package/dist/prompt/templates.d.ts +40 -0
  177. package/dist/prompt/templates.d.ts.map +1 -0
  178. package/dist/prompt/transcribe.d.ts +42 -0
  179. package/dist/prompt/transcribe.d.ts.map +1 -0
  180. package/dist/reasoning/client.d.ts +42 -0
  181. package/dist/reasoning/client.d.ts.map +1 -0
  182. package/dist/reasoning/index.d.ts +17 -0
  183. package/dist/reasoning/index.d.ts.map +1 -0
  184. package/dist/reasoning/strategy.d.ts +12 -0
  185. package/dist/reasoning/strategy.d.ts.map +1 -0
  186. package/dist/reasoning/types.d.ts +58 -0
  187. package/dist/reasoning/types.d.ts.map +1 -0
  188. package/dist/reflection/collector.d.ts +18 -0
  189. package/dist/reflection/collector.d.ts.map +1 -0
  190. package/dist/reflection/index.d.ts +13 -0
  191. package/dist/reflection/index.d.ts.map +1 -0
  192. package/dist/reflection/reporter.d.ts +10 -0
  193. package/dist/reflection/reporter.d.ts.map +1 -0
  194. package/dist/reflection/types.d.ts +99 -0
  195. package/dist/reflection/types.d.ts.map +1 -0
  196. package/dist/routing/classifier.d.ts +8 -0
  197. package/dist/routing/classifier.d.ts.map +1 -0
  198. package/dist/routing/index.d.ts +12 -0
  199. package/dist/routing/index.d.ts.map +1 -0
  200. package/dist/routing/router.d.ts +8 -0
  201. package/dist/routing/router.d.ts.map +1 -0
  202. package/dist/routing/types.d.ts +68 -0
  203. package/dist/routing/types.d.ts.map +1 -0
  204. package/dist/transcript/feedback.d.ts +70 -0
  205. package/dist/transcript/feedback.d.ts.map +1 -0
  206. package/dist/transcript/index.d.ts +10 -0
  207. package/dist/transcript/index.d.ts.map +1 -0
  208. package/dist/transcript/operations.d.ts +152 -0
  209. package/dist/transcript/operations.d.ts.map +1 -0
  210. package/dist/transcript/pkl-utils.d.ts +66 -0
  211. package/dist/transcript/pkl-utils.d.ts.map +1 -0
  212. package/dist/transcription/index.d.ts +17 -0
  213. package/dist/transcription/index.d.ts.map +1 -0
  214. package/dist/transcription/service.d.ts +10 -0
  215. package/dist/transcription/service.d.ts.map +1 -0
  216. package/dist/transcription/types.d.ts +41 -0
  217. package/dist/transcription/types.d.ts.map +1 -0
  218. package/dist/types.d.ts +28 -0
  219. package/dist/types.d.ts.map +1 -0
  220. package/dist/util/collision-detector.d.ts +77 -0
  221. package/dist/util/collision-detector.d.ts.map +1 -0
  222. package/dist/util/dates.d.ts +57 -0
  223. package/dist/util/dates.d.ts.map +1 -0
  224. package/dist/util/general.d.ts +3 -0
  225. package/dist/util/general.d.ts.map +1 -0
  226. package/dist/util/media.d.ts +9 -0
  227. package/dist/util/media.d.ts.map +1 -0
  228. package/dist/util/metadata.d.ts +138 -0
  229. package/dist/util/metadata.d.ts.map +1 -0
  230. package/dist/util/openai.d.ts +22 -0
  231. package/dist/util/openai.d.ts.map +1 -0
  232. package/dist/util/sounds-like-database.d.ts +98 -0
  233. package/dist/util/sounds-like-database.d.ts.map +1 -0
  234. package/dist/util/storage.d.ts +35 -0
  235. package/dist/util/storage.d.ts.map +1 -0
  236. package/dist/util/text-replacer.d.ts +56 -0
  237. package/dist/util/text-replacer.d.ts.map +1 -0
  238. package/dist/utils/entityFinder.d.ts +29 -0
  239. package/dist/utils/entityFinder.d.ts.map +1 -0
  240. package/package.json +84 -0
@@ -0,0 +1,12 @@
1
+ import { RoutingConfig, RouteDecision, RoutingContext, RouteDestination, ProjectRoute } from './types';
2
+ import * as Context from '@redaksjon/context';
3
+ export interface RoutingInstance {
4
+ route(context: RoutingContext): RouteDecision;
5
+ buildOutputPath(decision: RouteDecision, context: RoutingContext): string;
6
+ addProject(project: ProjectRoute): void;
7
+ updateDefaultRoute(destination: RouteDestination): void;
8
+ getConfig(): RoutingConfig;
9
+ }
10
+ export declare const create: (config: RoutingConfig, context: Context.ContextInstance) => RoutingInstance;
11
+ export * from './types';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvG,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC;IAC9C,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC;IAC1E,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACxC,kBAAkB,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxD,SAAS,IAAI,aAAa,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,GACf,QAAQ,aAAa,EACrB,SAAS,OAAO,CAAC,eAAe,KACjC,eAqBF,CAAC;AAGF,cAAc,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { RoutingContext, RouteDecision, RoutingConfig } from './types';
2
+ import * as Classifier from './classifier';
3
+ export interface RouterInstance {
4
+ route(context: RoutingContext): RouteDecision;
5
+ buildOutputPath(decision: RouteDecision, context: RoutingContext): string;
6
+ }
7
+ export declare const create: (config: RoutingConfig, classifier: Classifier.ClassifierInstance) => RouterInstance;
8
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/routing/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACH,cAAc,EACd,aAAa,EACb,aAAa,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC;IAC9C,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC;CAC7E;AAED,eAAO,MAAM,MAAM,GACf,QAAQ,aAAa,EACrB,YAAY,UAAU,CAAC,kBAAkB,KAC1C,cA6DF,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Routing System Types
3
+ *
4
+ * Uses Dreadcabinet's FilesystemStructure and FilenameOption types
5
+ * for consistent directory/filename patterns.
6
+ *
7
+ * Design Note: This module is designed to be self-contained and may be
8
+ * extracted for use in other tools (kronologi, observasjon) in the future.
9
+ */
10
+ export type FilesystemStructure = 'none' | 'year' | 'month' | 'day';
11
+ export type FilenameOption = 'date' | 'time' | 'subject';
12
+ export interface RouteDestination {
13
+ path: string;
14
+ structure: FilesystemStructure;
15
+ filename_options: FilenameOption[];
16
+ createDirectories?: boolean;
17
+ }
18
+ export interface ClassificationSignal {
19
+ type: 'explicit_phrase' | 'associated_person' | 'associated_company' | 'topic' | 'context_type';
20
+ value: string;
21
+ weight: number;
22
+ }
23
+ export interface ClassificationResult {
24
+ projectId: string;
25
+ confidence: number;
26
+ signals: ClassificationSignal[];
27
+ reasoning: string;
28
+ }
29
+ export interface ProjectClassification {
30
+ context_type: 'work' | 'personal' | 'mixed';
31
+ associated_people?: string[];
32
+ associated_companies?: string[];
33
+ topics?: string[];
34
+ explicit_phrases?: string[];
35
+ }
36
+ export interface ProjectRoute {
37
+ projectId: string;
38
+ destination: RouteDestination;
39
+ classification: ProjectClassification;
40
+ priority?: number;
41
+ active?: boolean;
42
+ auto_tags?: string[];
43
+ }
44
+ export interface RoutingConfig {
45
+ default: RouteDestination;
46
+ projects: ProjectRoute[];
47
+ conflict_resolution: 'ask' | 'primary' | 'all';
48
+ priority_order?: string[];
49
+ }
50
+ export interface RouteDecision {
51
+ projectId: string | null;
52
+ destination: RouteDestination;
53
+ confidence: number;
54
+ signals: ClassificationSignal[];
55
+ reasoning: string;
56
+ auto_tags?: string[];
57
+ alternateMatches?: ClassificationResult[];
58
+ }
59
+ export interface RoutingContext {
60
+ transcriptText: string;
61
+ audioDate: Date;
62
+ sourceFile: string;
63
+ hash?: string;
64
+ detectedPeople?: string[];
65
+ detectedCompanies?: string[];
66
+ subjectOverride?: string;
67
+ }
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/routing/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,mBAAmB,CAAC;IAC/B,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,OAAO,GAAG,cAAc,CAAC;IAChG,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IAClC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,cAAc,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,mBAAmB,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Feedback Operations
3
+ *
4
+ * Core business logic for processing natural language feedback on transcripts.
5
+ * Extracted from CLI to provide reusable functions for MCP tools.
6
+ */
7
+ import * as Context from '@redaksjon/context';
8
+ import * as Reasoning from '../reasoning';
9
+ /**
10
+ * Tool definitions for feedback processor
11
+ */
12
+ export interface FeedbackTool {
13
+ name: string;
14
+ description: string;
15
+ parameters: Record<string, {
16
+ type: string;
17
+ description: string;
18
+ required?: boolean;
19
+ enum?: string[];
20
+ items?: {
21
+ type: string;
22
+ };
23
+ }>;
24
+ }
25
+ export declare const FEEDBACK_TOOLS: FeedbackTool[];
26
+ /**
27
+ * Tool execution result
28
+ */
29
+ export interface ToolResult {
30
+ success: boolean;
31
+ message: string;
32
+ data?: Record<string, unknown>;
33
+ }
34
+ /**
35
+ * Feedback processing context
36
+ */
37
+ export interface FeedbackContext {
38
+ transcriptPath: string;
39
+ transcriptContent: string;
40
+ originalContent: string;
41
+ context: Context.ContextInstance;
42
+ changes: FeedbackChange[];
43
+ verbose: boolean;
44
+ dryRun: boolean;
45
+ }
46
+ export interface FeedbackChange {
47
+ type: 'text_correction' | 'term_added' | 'person_added' | 'project_changed' | 'title_changed';
48
+ description: string;
49
+ details: Record<string, unknown>;
50
+ }
51
+ /**
52
+ * Execute a feedback tool
53
+ */
54
+ export declare const executeTool: (toolName: string, args: Record<string, unknown>, feedbackCtx: FeedbackContext) => Promise<ToolResult>;
55
+ /**
56
+ * Build system prompt for feedback agent
57
+ */
58
+ export declare const buildFeedbackSystemPrompt: (transcriptPreview: string, availableProjects: string[]) => string;
59
+ /**
60
+ * Process feedback using agentic model
61
+ */
62
+ export declare const processFeedback: (feedback: string, feedbackCtx: FeedbackContext, reasoning: Reasoning.ReasoningInstance) => Promise<void>;
63
+ /**
64
+ * Apply changes and save transcript
65
+ */
66
+ export declare const applyChanges: (feedbackCtx: FeedbackContext) => Promise<{
67
+ newPath: string;
68
+ moved: boolean;
69
+ }>;
70
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/transcript/feedback.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5B,CAAC,CAAC;CACN;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EA2DxC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,iBAAiB,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,eAAe,CAAC;IAC9F,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GACpB,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,eAAe,KAC7B,OAAO,CAAC,UAAU,CAmOpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAClC,mBAAmB,MAAM,EACzB,mBAAmB,MAAM,EAAE,KAC5B,MAqBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,EAChB,aAAa,eAAe,EAC5B,WAAW,SAAS,CAAC,iBAAiB,KACvC,OAAO,CAAC,IAAI,CAkGd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GACrB,aAAa,eAAe,KAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAyF7C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Transcript Module
3
+ *
4
+ * Core transcript operations for parsing, listing, editing, and combining transcripts.
5
+ * PKL-only implementation - all transcripts are stored in PKL format.
6
+ */
7
+ export * from './operations';
8
+ export * from './feedback';
9
+ export * from './pkl-utils';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transcript/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Transcript Operations
3
+ *
4
+ * Core business logic for transcript parsing, listing, editing, and combining.
5
+ * PKL-only implementation - all transcripts are stored in PKL format.
6
+ */
7
+ /**
8
+ * Parsed transcript structure
9
+ */
10
+ export interface ParsedTranscript {
11
+ filePath: string;
12
+ title?: string;
13
+ metadata: TranscriptMetadata;
14
+ content: string;
15
+ rawText: string;
16
+ }
17
+ export interface TranscriptMetadata {
18
+ date?: string;
19
+ time?: string;
20
+ project?: string;
21
+ projectId?: string;
22
+ destination?: string;
23
+ confidence?: string;
24
+ signals?: string[];
25
+ reasoning?: string;
26
+ tags?: string[];
27
+ duration?: string;
28
+ }
29
+ /**
30
+ * Check if input looks like a UUID (8+ hex chars)
31
+ */
32
+ export declare function isUuidInput(input: string): boolean;
33
+ /**
34
+ * Find transcript by UUID using glob scan
35
+ * TODO: Replace with index-based lookup for better performance with large collections
36
+ *
37
+ * @param uuid - Full UUID or 8-character prefix
38
+ * @param searchDirectories - Directories to search in
39
+ * @returns Absolute path to transcript file, or null if not found
40
+ */
41
+ export declare function findTranscriptByUuid(uuid: string, searchDirectories: string[]): Promise<string | null>;
42
+ /**
43
+ * Parse a transcript file into its components
44
+ * PKL-only implementation
45
+ *
46
+ * @param filePathOrUuid - File path or UUID to parse
47
+ * @param searchDirectories - Optional directories to search if UUID is provided
48
+ */
49
+ export declare const parseTranscript: (filePathOrUuid: string, searchDirectories?: string[]) => Promise<ParsedTranscript>;
50
+ /**
51
+ * Extract the timestamp from a transcript filename
52
+ */
53
+ export declare const extractTimestampFromFilename: (filePath: string) => {
54
+ day: number;
55
+ hour: number;
56
+ minute: number;
57
+ } | null;
58
+ /**
59
+ * Slugify a title for use in filenames
60
+ */
61
+ export declare const slugifyTitle: (title: string) => string;
62
+ /**
63
+ * Combine multiple transcripts into a single document
64
+ * PKL-only implementation
65
+ */
66
+ export declare const combineTranscripts: (filePaths: string[], options?: {
67
+ projectId?: string;
68
+ title?: string;
69
+ dryRun?: boolean;
70
+ verbose?: boolean;
71
+ contextDirectory?: string;
72
+ /** Explicit context directories (from protokoll-config.yaml) */
73
+ contextDirectories?: string[];
74
+ }) => Promise<{
75
+ outputPath: string;
76
+ content: string;
77
+ }>;
78
+ /**
79
+ * Edit transcript metadata and content
80
+ * PKL-only implementation
81
+ */
82
+ export declare const editTranscript: (filePath: string, options: {
83
+ title?: string;
84
+ projectId?: string;
85
+ tagsToAdd?: string[];
86
+ tagsToRemove?: string[];
87
+ dryRun?: boolean;
88
+ verbose?: boolean;
89
+ contextDirectory?: string;
90
+ /** Explicit context directories (from protokoll-config.yaml) */
91
+ contextDirectories?: string[];
92
+ }) => Promise<{
93
+ outputPath: string;
94
+ content: string;
95
+ }>;
96
+ /**
97
+ * Transcript list item
98
+ */
99
+ export interface TranscriptListItem {
100
+ path: string;
101
+ filename: string;
102
+ uuid: string;
103
+ date: string;
104
+ time?: string;
105
+ title: string;
106
+ hasRawTranscript: boolean;
107
+ createdAt: Date;
108
+ status?: 'initial' | 'enhanced' | 'reviewed' | 'in_progress' | 'closed' | 'archived';
109
+ openTasksCount?: number;
110
+ contentSize?: number;
111
+ entities?: {
112
+ people?: Array<{
113
+ id: string;
114
+ name: string;
115
+ }>;
116
+ projects?: Array<{
117
+ id: string;
118
+ name: string;
119
+ }>;
120
+ terms?: Array<{
121
+ id: string;
122
+ name: string;
123
+ }>;
124
+ companies?: Array<{
125
+ id: string;
126
+ name: string;
127
+ }>;
128
+ };
129
+ }
130
+ export interface ListTranscriptsOptions {
131
+ directory: string;
132
+ limit?: number;
133
+ offset?: number;
134
+ sortBy?: 'date' | 'filename' | 'title';
135
+ startDate?: string;
136
+ endDate?: string;
137
+ search?: string;
138
+ projectId?: string;
139
+ }
140
+ export interface ListTranscriptsResult {
141
+ transcripts: TranscriptListItem[];
142
+ total: number;
143
+ hasMore: boolean;
144
+ limit: number;
145
+ offset: number;
146
+ }
147
+ /**
148
+ * List transcripts with filtering and pagination
149
+ * Uses the protokoll-format storage API
150
+ */
151
+ export declare const listTranscripts: (options: ListTranscriptsOptions) => Promise<ListTranscriptsResult>;
152
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/transcript/operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { TranscriptMetadata as PklMetadata } from '@redaksjon/protokoll-format';
2
+ /**
3
+ * Check if a file is a .pkl transcript
4
+ */
5
+ export declare function isPklFile(filePath: string): boolean;
6
+ /**
7
+ * Get the glob pattern for finding transcript files (PKL only)
8
+ */
9
+ export declare function getTranscriptGlobPattern(): string;
10
+ /**
11
+ * Strip .pkl extension from a transcript path
12
+ * Used for creating extension-agnostic identifiers
13
+ */
14
+ export declare function stripTranscriptExtension(filePath: string): string;
15
+ /**
16
+ * Ensure a path has .pkl extension
17
+ */
18
+ export declare function ensurePklExtension(filePath: string): string;
19
+ /**
20
+ * Check if a transcript file exists
21
+ *
22
+ * If the path has .pkl extension, checks that file.
23
+ * If no extension, adds .pkl and checks.
24
+ */
25
+ export declare function transcriptExists(basePath: string): Promise<{
26
+ exists: boolean;
27
+ path: string | null;
28
+ }>;
29
+ /**
30
+ * Enhanced transcript existence check supporting UUID
31
+ *
32
+ * @param pathOrUuid - File path or UUID to check
33
+ * @param searchDirectories - Optional directories to search if UUID is provided
34
+ * @returns Existence info with path and UUID if found
35
+ */
36
+ export declare function transcriptExistsUuid(pathOrUuid: string, searchDirectories?: string[]): Promise<{
37
+ exists: boolean;
38
+ path?: string;
39
+ uuid?: string;
40
+ }>;
41
+ /**
42
+ * Resolve a transcript identifier to an actual file path
43
+ *
44
+ * @param identifier The transcript identifier (with or without extension)
45
+ * @param baseDirectory Optional base directory to resolve relative paths
46
+ * @returns The resolved file info
47
+ */
48
+ export declare function resolveTranscriptPath(identifier: string, baseDirectory?: string): Promise<{
49
+ exists: boolean;
50
+ path: string | null;
51
+ }>;
52
+ /**
53
+ * Read transcript content from a .pkl file
54
+ * Returns the content and metadata
55
+ */
56
+ export declare function readTranscriptContent(filePath: string): Promise<{
57
+ content: string;
58
+ mimeType: string;
59
+ metadata: Record<string, unknown>;
60
+ title?: string;
61
+ }>;
62
+ /**
63
+ * Convert PklTranscript metadata to a simpler format for legacy compatibility
64
+ */
65
+ export declare function convertPklMetadataToLegacy(pklMetadata: PklMetadata): Record<string, unknown>;
66
+ //# sourceMappingURL=pkl-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkl-utils.d.ts","sourceRoot":"","sources":["../../src/transcript/pkl-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,kBAAkB,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAErF;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAS1G;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5D;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACvC,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAOnD;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAeD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,WAAW,EAAE,WAAW,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBzB"}
@@ -0,0 +1,17 @@
1
+ import { default as OpenAI } from 'openai';
2
+ import { TranscriptionConfig, TranscriptionResult, TranscriptionModel } from './types';
3
+ export interface TranscriptionInstance {
4
+ transcribe(audioFile: string, options?: Partial<TranscriptionConfig>): Promise<TranscriptionResult>;
5
+ supportsStreaming(model: TranscriptionModel): boolean;
6
+ supportsDiarization(model: TranscriptionModel): boolean;
7
+ setDefaultModel(model: TranscriptionModel): void;
8
+ getDefaultModel(): TranscriptionModel;
9
+ }
10
+ export interface CreateOptions {
11
+ apiKey?: string;
12
+ defaultModel?: TranscriptionModel;
13
+ openaiClient?: OpenAI;
14
+ }
15
+ export declare const create: (options?: CreateOptions) => TranscriptionInstance;
16
+ export * from './types';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transcription/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGvF,MAAM,WAAW,qBAAqB;IAElC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAGpG,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IACtD,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAGxD,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjD,eAAe,IAAI,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,MAAM,GAAI,UAAS,aAAkB,KAAG,qBAiCpD,CAAC;AAGF,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { default as OpenAI } from 'openai';
2
+ import { TranscriptionRequest, TranscriptionResult, TranscriptionModel } from './types';
3
+ export interface ServiceInstance {
4
+ transcribe(request: TranscriptionRequest): Promise<TranscriptionResult>;
5
+ supportsStreaming(model: TranscriptionModel): boolean;
6
+ supportsDiarization(model: TranscriptionModel): boolean;
7
+ }
8
+ export type TranscriptionService = ServiceInstance;
9
+ export declare const create: (openai: OpenAI) => ServiceInstance;
10
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/transcription/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAErB,MAAM,SAAS,CAAC;AAKjB,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxE,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IACtD,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;CAC3D;AAGD,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEnD,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAAG,eAqIvC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Transcription System Types
3
+ *
4
+ * Supports multiple OpenAI transcription models with different capabilities.
5
+ * The transcription service produces raw phonetic output that will be
6
+ * corrected by the full reasoning pass.
7
+ */
8
+ export type TranscriptionModel = 'whisper-1' | 'gpt-4o-mini-transcribe' | 'gpt-4o-transcribe' | 'gpt-4o-transcribe-diarize';
9
+ export interface TranscriptionConfig {
10
+ model: TranscriptionModel;
11
+ language?: string;
12
+ prompt?: string;
13
+ response_format?: 'json' | 'text' | 'verbose_json' | 'srt' | 'vtt';
14
+ temperature?: number;
15
+ streaming?: boolean;
16
+ }
17
+ export interface TranscriptionRequest {
18
+ audioFile: string;
19
+ config: TranscriptionConfig;
20
+ contextPrompt?: string;
21
+ }
22
+ export interface TranscriptionSegment {
23
+ start: number;
24
+ end: number;
25
+ text: string;
26
+ speaker?: string;
27
+ }
28
+ export interface TranscriptionResult {
29
+ text: string;
30
+ model: string;
31
+ segments?: TranscriptionSegment[];
32
+ duration?: number;
33
+ language?: string;
34
+ }
35
+ export interface ModelCapabilities {
36
+ supportsStreaming: boolean;
37
+ supportsDiarization: boolean;
38
+ maxFileSize: number;
39
+ }
40
+ export declare const MODEL_CAPABILITIES: Record<TranscriptionModel, ModelCapabilities>;
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transcription/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GACxB,WAAW,GACX,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAqB5E,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Core Types
3
+ *
4
+ * Shared type definitions for the Protokoll library.
5
+ */
6
+ import * as Dreadcabinet from '@utilarium/dreadcabinet';
7
+ import * as Cardigantime from '@utilarium/cardigantime';
8
+ /**
9
+ * Configuration interface for Protokoll processing
10
+ */
11
+ export interface Config extends Dreadcabinet.Args, Cardigantime.Args {
12
+ dryRun?: boolean;
13
+ verbose?: boolean;
14
+ debug?: boolean;
15
+ transcriptionModel?: string;
16
+ model?: string;
17
+ reasoningLevel?: 'low' | 'medium' | 'high';
18
+ openaiApiKey?: string;
19
+ overrides?: boolean;
20
+ contextDirectories?: string[];
21
+ maxAudioSize?: number | string;
22
+ tempDirectory?: string;
23
+ batch?: boolean;
24
+ selfReflection?: boolean;
25
+ silent?: boolean;
26
+ processedDirectory?: string;
27
+ }
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
@@ -0,0 +1,77 @@
1
+ import { SoundsLikeMapping, Collision } from './sounds-like-database';
2
+ /**
3
+ * Classification result for an entity
4
+ */
5
+ export interface Classification {
6
+ /** Identified project ID */
7
+ project?: string;
8
+ /** Classification confidence (0-1) */
9
+ confidence?: number;
10
+ /** Additional classification metadata */
11
+ [key: string]: any;
12
+ }
13
+ /**
14
+ * Replacement decision
15
+ */
16
+ export interface ReplacementDecision {
17
+ /** Whether to apply the replacement */
18
+ shouldReplace: boolean;
19
+ /** The mapping to use (if shouldReplace is true) */
20
+ mapping?: SoundsLikeMapping;
21
+ /** Reason for the decision */
22
+ reason: string;
23
+ /** Confidence in this decision (0-1) */
24
+ confidence: number;
25
+ }
26
+ /**
27
+ * Context for collision resolution
28
+ */
29
+ export interface CollisionContext {
30
+ /** Classification of the transcription */
31
+ classification: Classification;
32
+ /** The sounds_like value being considered */
33
+ soundsLike: string;
34
+ /** Available mappings for this sounds_like */
35
+ availableMappings: SoundsLikeMapping[];
36
+ /** Surrounding text context (optional) */
37
+ surroundingText?: string;
38
+ }
39
+ /**
40
+ * Instance interface for collision detector
41
+ */
42
+ export interface Instance {
43
+ /**
44
+ * Decide whether to apply a replacement given a collision context
45
+ */
46
+ decideReplacement(context: CollisionContext): ReplacementDecision;
47
+ /**
48
+ * Check if a Tier 2 mapping should be applied given classification
49
+ */
50
+ shouldApplyTier2(mapping: SoundsLikeMapping, classification: Classification): boolean;
51
+ /**
52
+ * Resolve a collision by selecting the best mapping
53
+ */
54
+ resolveCollision(collision: Collision, classification: Classification): SoundsLikeMapping | null;
55
+ /**
56
+ * Detect capitalization hints in context
57
+ */
58
+ detectCapitalizationHint(soundsLike: string, surroundingText: string): 'proper-noun' | 'common-term' | 'unknown';
59
+ }
60
+ /**
61
+ * Configuration for collision detector
62
+ */
63
+ export interface CollisionDetectorConfig {
64
+ /** Minimum confidence for Tier 2 replacements (default: 0.6) */
65
+ tier2MinConfidence?: number;
66
+ /** High confidence threshold for aggressive replacement (default: 0.8) */
67
+ tier2HighConfidence?: number;
68
+ /** Enable capitalization hints (default: true) */
69
+ useCapitalizationHints?: boolean;
70
+ /** Enable surrounding text analysis (default: false, future feature) */
71
+ useSurroundingText?: boolean;
72
+ }
73
+ /**
74
+ * Create a collision detector instance
75
+ */
76
+ export declare const create: (config?: CollisionDetectorConfig) => Instance;
77
+ //# sourceMappingURL=collision-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collision-detector.d.ts","sourceRoot":"","sources":["../../src/util/collision-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yCAAyC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,uCAAuC;IACvC,aAAa,EAAE,OAAO,CAAC;IAEvB,oDAAoD;IACpD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAE5B,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,0CAA0C;IAC1C,cAAc,EAAE,cAAc,CAAC;IAE/B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IAEnB,8CAA8C;IAC9C,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IAEvC,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC;IAEtF;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAEjG;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;CACpH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,kDAAkD;IAClD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,uBAAuB,KAAG,QAqPzD,CAAC"}