@steipete/summarize-core 0.7.1 → 0.8.1

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 (175) hide show
  1. package/dist/esm/content/cache/types.js +2 -0
  2. package/dist/esm/content/cache/types.js.map +1 -0
  3. package/dist/esm/content/index.js +1 -0
  4. package/dist/esm/content/index.js.map +1 -1
  5. package/dist/esm/content/link-preview/client.js +3 -0
  6. package/dist/esm/content/link-preview/client.js.map +1 -1
  7. package/dist/esm/content/link-preview/content/fetcher.js +1 -1
  8. package/dist/esm/content/link-preview/content/fetcher.js.map +1 -1
  9. package/dist/esm/content/link-preview/content/html.js +1 -1
  10. package/dist/esm/content/link-preview/content/html.js.map +1 -1
  11. package/dist/esm/content/link-preview/content/index.js +22 -3
  12. package/dist/esm/content/link-preview/content/index.js.map +1 -1
  13. package/dist/esm/content/link-preview/deps.js.map +1 -1
  14. package/dist/esm/content/transcript/index.js +1 -0
  15. package/dist/esm/content/transcript/index.js.map +1 -1
  16. package/dist/esm/content/transcript/providers/generic.js +84 -4
  17. package/dist/esm/content/transcript/providers/generic.js.map +1 -1
  18. package/dist/esm/content/transcript/providers/podcast.js +1 -0
  19. package/dist/esm/content/transcript/providers/podcast.js.map +1 -1
  20. package/dist/esm/content/transcript/providers/youtube/captions.js +35 -14
  21. package/dist/esm/content/transcript/providers/youtube/captions.js.map +1 -1
  22. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js +84 -12
  23. package/dist/esm/content/transcript/providers/youtube/yt-dlp.js.map +1 -1
  24. package/dist/esm/content/transcript/providers/youtube.js +38 -2
  25. package/dist/esm/content/transcript/providers/youtube.js.map +1 -1
  26. package/dist/esm/content/transcript/utils.js +25 -69
  27. package/dist/esm/content/transcript/utils.js.map +1 -1
  28. package/dist/esm/content/url.js +76 -0
  29. package/dist/esm/content/url.js.map +1 -0
  30. package/dist/esm/prompts/cli.js +25 -5
  31. package/dist/esm/prompts/cli.js.map +1 -1
  32. package/dist/esm/prompts/file.js +51 -12
  33. package/dist/esm/prompts/file.js.map +1 -1
  34. package/dist/esm/prompts/format.js +26 -0
  35. package/dist/esm/prompts/format.js.map +1 -0
  36. package/dist/esm/prompts/link-summary.js +51 -22
  37. package/dist/esm/prompts/link-summary.js.map +1 -1
  38. package/dist/types/content/cache/types.d.ts +25 -0
  39. package/dist/types/content/index.d.ts +3 -1
  40. package/dist/types/content/link-preview/client.d.ts +6 -1
  41. package/dist/types/content/link-preview/content/types.d.ts +1 -1
  42. package/dist/types/content/link-preview/deps.d.ts +11 -20
  43. package/dist/types/content/transcript/cache.d.ts +1 -1
  44. package/dist/types/content/transcript/providers/generic.d.ts +1 -1
  45. package/dist/types/content/transcript/providers/youtube/captions.d.ts +3 -1
  46. package/dist/types/content/transcript/providers/youtube/yt-dlp.d.ts +3 -1
  47. package/dist/types/content/transcript/types.d.ts +2 -1
  48. package/dist/types/content/transcript/utils.d.ts +1 -3
  49. package/dist/types/content/url.d.ts +8 -0
  50. package/dist/types/prompts/cli.d.ts +4 -1
  51. package/dist/types/prompts/file.d.ts +9 -2
  52. package/dist/types/prompts/format.d.ts +14 -0
  53. package/dist/types/prompts/link-summary.d.ts +4 -1
  54. package/package.json +10 -10
  55. package/dist/cjs/content/index.js +0 -14
  56. package/dist/cjs/content/index.js.map +0 -1
  57. package/dist/cjs/content/link-preview/client.js +0 -31
  58. package/dist/cjs/content/link-preview/client.js.map +0 -1
  59. package/dist/cjs/content/link-preview/content/article.js +0 -164
  60. package/dist/cjs/content/link-preview/content/article.js.map +0 -1
  61. package/dist/cjs/content/link-preview/content/cleaner.js +0 -63
  62. package/dist/cjs/content/link-preview/content/cleaner.js.map +0 -1
  63. package/dist/cjs/content/link-preview/content/constants.js +0 -10
  64. package/dist/cjs/content/link-preview/content/constants.js.map +0 -1
  65. package/dist/cjs/content/link-preview/content/fetcher.js +0 -128
  66. package/dist/cjs/content/link-preview/content/fetcher.js.map +0 -1
  67. package/dist/cjs/content/link-preview/content/firecrawl.js +0 -90
  68. package/dist/cjs/content/link-preview/content/firecrawl.js.map +0 -1
  69. package/dist/cjs/content/link-preview/content/html.js +0 -165
  70. package/dist/cjs/content/link-preview/content/html.js.map +0 -1
  71. package/dist/cjs/content/link-preview/content/index.js +0 -348
  72. package/dist/cjs/content/link-preview/content/index.js.map +0 -1
  73. package/dist/cjs/content/link-preview/content/jsonld.js +0 -80
  74. package/dist/cjs/content/link-preview/content/jsonld.js.map +0 -1
  75. package/dist/cjs/content/link-preview/content/parsers.js +0 -81
  76. package/dist/cjs/content/link-preview/content/parsers.js.map +0 -1
  77. package/dist/cjs/content/link-preview/content/podcast-utils.js +0 -85
  78. package/dist/cjs/content/link-preview/content/podcast-utils.js.map +0 -1
  79. package/dist/cjs/content/link-preview/content/readability.js +0 -90
  80. package/dist/cjs/content/link-preview/content/readability.js.map +0 -1
  81. package/dist/cjs/content/link-preview/content/twitter-utils.js +0 -74
  82. package/dist/cjs/content/link-preview/content/twitter-utils.js.map +0 -1
  83. package/dist/cjs/content/link-preview/content/types.js +0 -7
  84. package/dist/cjs/content/link-preview/content/types.js.map +0 -1
  85. package/dist/cjs/content/link-preview/content/utils.js +0 -177
  86. package/dist/cjs/content/link-preview/content/utils.js.map +0 -1
  87. package/dist/cjs/content/link-preview/content/video.js +0 -99
  88. package/dist/cjs/content/link-preview/content/video.js.map +0 -1
  89. package/dist/cjs/content/link-preview/content/youtube.js +0 -85
  90. package/dist/cjs/content/link-preview/content/youtube.js.map +0 -1
  91. package/dist/cjs/content/link-preview/deps.js +0 -23
  92. package/dist/cjs/content/link-preview/deps.js.map +0 -1
  93. package/dist/cjs/content/link-preview/fetch-with-timeout.js +0 -38
  94. package/dist/cjs/content/link-preview/fetch-with-timeout.js.map +0 -1
  95. package/dist/cjs/content/link-preview/types.js +0 -5
  96. package/dist/cjs/content/link-preview/types.js.map +0 -1
  97. package/dist/cjs/content/transcript/cache.js +0 -85
  98. package/dist/cjs/content/transcript/cache.js.map +0 -1
  99. package/dist/cjs/content/transcript/index.js +0 -134
  100. package/dist/cjs/content/transcript/index.js.map +0 -1
  101. package/dist/cjs/content/transcript/normalize.js +0 -49
  102. package/dist/cjs/content/transcript/normalize.js.map +0 -1
  103. package/dist/cjs/content/transcript/providers/generic.js +0 -16
  104. package/dist/cjs/content/transcript/providers/generic.js.map +0 -1
  105. package/dist/cjs/content/transcript/providers/podcast/apple-flow.js +0 -226
  106. package/dist/cjs/content/transcript/providers/podcast/apple-flow.js.map +0 -1
  107. package/dist/cjs/content/transcript/providers/podcast/apple.js +0 -43
  108. package/dist/cjs/content/transcript/providers/podcast/apple.js.map +0 -1
  109. package/dist/cjs/content/transcript/providers/podcast/constants.js +0 -11
  110. package/dist/cjs/content/transcript/providers/podcast/constants.js.map +0 -1
  111. package/dist/cjs/content/transcript/providers/podcast/flow-context.js +0 -3
  112. package/dist/cjs/content/transcript/providers/podcast/flow-context.js.map +0 -1
  113. package/dist/cjs/content/transcript/providers/podcast/itunes.js +0 -139
  114. package/dist/cjs/content/transcript/providers/podcast/itunes.js.map +0 -1
  115. package/dist/cjs/content/transcript/providers/podcast/json.js +0 -43
  116. package/dist/cjs/content/transcript/providers/podcast/json.js.map +0 -1
  117. package/dist/cjs/content/transcript/providers/podcast/media.js +0 -355
  118. package/dist/cjs/content/transcript/providers/podcast/media.js.map +0 -1
  119. package/dist/cjs/content/transcript/providers/podcast/results.js +0 -32
  120. package/dist/cjs/content/transcript/providers/podcast/results.js.map +0 -1
  121. package/dist/cjs/content/transcript/providers/podcast/rss.js +0 -262
  122. package/dist/cjs/content/transcript/providers/podcast/rss.js.map +0 -1
  123. package/dist/cjs/content/transcript/providers/podcast/spotify-flow.js +0 -221
  124. package/dist/cjs/content/transcript/providers/podcast/spotify-flow.js.map +0 -1
  125. package/dist/cjs/content/transcript/providers/podcast/spotify.js +0 -119
  126. package/dist/cjs/content/transcript/providers/podcast/spotify.js.map +0 -1
  127. package/dist/cjs/content/transcript/providers/podcast.js +0 -260
  128. package/dist/cjs/content/transcript/providers/podcast.js.map +0 -1
  129. package/dist/cjs/content/transcript/providers/youtube/api.js +0 -264
  130. package/dist/cjs/content/transcript/providers/youtube/api.js.map +0 -1
  131. package/dist/cjs/content/transcript/providers/youtube/apify.js +0 -59
  132. package/dist/cjs/content/transcript/providers/youtube/apify.js.map +0 -1
  133. package/dist/cjs/content/transcript/providers/youtube/captions.js +0 -413
  134. package/dist/cjs/content/transcript/providers/youtube/captions.js.map +0 -1
  135. package/dist/cjs/content/transcript/providers/youtube/yt-dlp.js +0 -170
  136. package/dist/cjs/content/transcript/providers/youtube/yt-dlp.js.map +0 -1
  137. package/dist/cjs/content/transcript/providers/youtube.js +0 -178
  138. package/dist/cjs/content/transcript/providers/youtube.js.map +0 -1
  139. package/dist/cjs/content/transcript/types.js +0 -3
  140. package/dist/cjs/content/transcript/types.js.map +0 -1
  141. package/dist/cjs/content/transcript/utils.js +0 -303
  142. package/dist/cjs/content/transcript/utils.js.map +0 -1
  143. package/dist/cjs/index.js +0 -22
  144. package/dist/cjs/index.js.map +0 -1
  145. package/dist/cjs/language.js +0 -132
  146. package/dist/cjs/language.js.map +0 -1
  147. package/dist/cjs/package.json +0 -3
  148. package/dist/cjs/prompts/cli.js +0 -23
  149. package/dist/cjs/prompts/cli.js.map +0 -1
  150. package/dist/cjs/prompts/file.js +0 -52
  151. package/dist/cjs/prompts/file.js.map +0 -1
  152. package/dist/cjs/prompts/index.js +0 -14
  153. package/dist/cjs/prompts/index.js.map +0 -1
  154. package/dist/cjs/prompts/link-summary.js +0 -122
  155. package/dist/cjs/prompts/link-summary.js.map +0 -1
  156. package/dist/cjs/shared/contracts.js +0 -5
  157. package/dist/cjs/shared/contracts.js.map +0 -1
  158. package/dist/cjs/transcription/whisper/constants.js +0 -11
  159. package/dist/cjs/transcription/whisper/constants.js.map +0 -1
  160. package/dist/cjs/transcription/whisper/core.js +0 -307
  161. package/dist/cjs/transcription/whisper/core.js.map +0 -1
  162. package/dist/cjs/transcription/whisper/fal.js +0 -44
  163. package/dist/cjs/transcription/whisper/fal.js.map +0 -1
  164. package/dist/cjs/transcription/whisper/ffmpeg.js +0 -187
  165. package/dist/cjs/transcription/whisper/ffmpeg.js.map +0 -1
  166. package/dist/cjs/transcription/whisper/openai.js +0 -51
  167. package/dist/cjs/transcription/whisper/openai.js.map +0 -1
  168. package/dist/cjs/transcription/whisper/types.js +0 -3
  169. package/dist/cjs/transcription/whisper/types.js.map +0 -1
  170. package/dist/cjs/transcription/whisper/utils.js +0 -70
  171. package/dist/cjs/transcription/whisper/utils.js.map +0 -1
  172. package/dist/cjs/transcription/whisper/whisper-cpp.js +0 -232
  173. package/dist/cjs/transcription/whisper/whisper-cpp.js.map +0 -1
  174. package/dist/cjs/transcription/whisper.js +0 -15
  175. package/dist/cjs/transcription/whisper.js.map +0 -1
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseOutputLanguage = parseOutputLanguage;
4
- exports.resolveOutputLanguage = resolveOutputLanguage;
5
- exports.formatOutputLanguageInstruction = formatOutputLanguageInstruction;
6
- exports.formatOutputLanguageForJson = formatOutputLanguageForJson;
7
- const NORMALIZE_PATTERN = /[^a-z0-9-]+/g;
8
- const LANGUAGE_ALIASES = {
9
- en: { tag: 'en', label: 'English' },
10
- 'en-us': { tag: 'en-US', label: 'English' },
11
- 'en-gb': { tag: 'en-GB', label: 'English' },
12
- english: { tag: 'en', label: 'English' },
13
- de: { tag: 'de', label: 'German' },
14
- 'de-de': { tag: 'de-DE', label: 'German' },
15
- german: { tag: 'de', label: 'German' },
16
- deutsch: { tag: 'de', label: 'German' },
17
- es: { tag: 'es', label: 'Spanish' },
18
- 'es-es': { tag: 'es-ES', label: 'Spanish' },
19
- 'es-mx': { tag: 'es-MX', label: 'Spanish' },
20
- spanish: { tag: 'es', label: 'Spanish' },
21
- espanol: { tag: 'es', label: 'Spanish' },
22
- fr: { tag: 'fr', label: 'French' },
23
- french: { tag: 'fr', label: 'French' },
24
- it: { tag: 'it', label: 'Italian' },
25
- italian: { tag: 'it', label: 'Italian' },
26
- pt: { tag: 'pt', label: 'Portuguese' },
27
- 'pt-br': { tag: 'pt-BR', label: 'Portuguese (Brazil)' },
28
- 'pt-pt': { tag: 'pt-PT', label: 'Portuguese (Portugal)' },
29
- portuguese: { tag: 'pt', label: 'Portuguese' },
30
- nl: { tag: 'nl', label: 'Dutch' },
31
- dutch: { tag: 'nl', label: 'Dutch' },
32
- sv: { tag: 'sv', label: 'Swedish' },
33
- swedish: { tag: 'sv', label: 'Swedish' },
34
- no: { tag: 'no', label: 'Norwegian' },
35
- norwegian: { tag: 'no', label: 'Norwegian' },
36
- da: { tag: 'da', label: 'Danish' },
37
- danish: { tag: 'da', label: 'Danish' },
38
- fi: { tag: 'fi', label: 'Finnish' },
39
- finnish: { tag: 'fi', label: 'Finnish' },
40
- pl: { tag: 'pl', label: 'Polish' },
41
- polish: { tag: 'pl', label: 'Polish' },
42
- cs: { tag: 'cs', label: 'Czech' },
43
- czech: { tag: 'cs', label: 'Czech' },
44
- tr: { tag: 'tr', label: 'Turkish' },
45
- turkish: { tag: 'tr', label: 'Turkish' },
46
- ru: { tag: 'ru', label: 'Russian' },
47
- russian: { tag: 'ru', label: 'Russian' },
48
- uk: { tag: 'uk', label: 'Ukrainian' },
49
- ukrainian: { tag: 'uk', label: 'Ukrainian' },
50
- zh: { tag: 'zh', label: 'Chinese' },
51
- 'zh-cn': { tag: 'zh-CN', label: 'Chinese (Simplified)' },
52
- 'zh-hans': { tag: 'zh-Hans', label: 'Chinese (Simplified)' },
53
- 'zh-tw': { tag: 'zh-TW', label: 'Chinese (Traditional)' },
54
- 'zh-hant': { tag: 'zh-Hant', label: 'Chinese (Traditional)' },
55
- chinese: { tag: 'zh', label: 'Chinese' },
56
- ja: { tag: 'ja', label: 'Japanese' },
57
- japanese: { tag: 'ja', label: 'Japanese' },
58
- ko: { tag: 'ko', label: 'Korean' },
59
- korean: { tag: 'ko', label: 'Korean' },
60
- ar: { tag: 'ar', label: 'Arabic' },
61
- arabic: { tag: 'ar', label: 'Arabic' },
62
- hi: { tag: 'hi', label: 'Hindi' },
63
- hindi: { tag: 'hi', label: 'Hindi' },
64
- };
65
- const looksLikeLanguageTag = (value) =>
66
- // Keep this loose: the model can handle tags like "en-US" or "pt-BR".
67
- /^[a-zA-Z]{2,3}([_-][a-zA-Z0-9]{2,8})*$/.test(value);
68
- function normalizeLanguageTag(value) {
69
- const parts = value
70
- .replaceAll('_', '-')
71
- .split('-')
72
- .map((p) => p.trim())
73
- .filter(Boolean);
74
- if (parts.length === 0)
75
- return value;
76
- const [headRaw, ...rest] = parts;
77
- const head = headRaw.toLowerCase();
78
- const tail = rest.map((p) => p.length === 2 ? p.toUpperCase() : p.slice(0, 1).toUpperCase() + p.slice(1));
79
- return [head, ...tail].join('-');
80
- }
81
- function sanitizeFreeForm(value) {
82
- const trimmed = value.trim();
83
- if (!trimmed)
84
- return '';
85
- return trimmed.replaceAll(/\s+/g, ' ').slice(0, 64);
86
- }
87
- function parseOutputLanguage(raw) {
88
- const trimmed = raw.trim();
89
- if (!trimmed) {
90
- throw new Error('Invalid --language: must not be empty.');
91
- }
92
- const compact = trimmed
93
- .toLowerCase()
94
- .replaceAll('_', '-')
95
- .replaceAll(NORMALIZE_PATTERN, '-')
96
- .replaceAll(/-+/g, '-')
97
- .replaceAll(/^-|-$/g, '');
98
- if (compact === 'auto')
99
- return { kind: 'auto' };
100
- const alias = LANGUAGE_ALIASES[compact];
101
- if (alias)
102
- return { kind: 'fixed', tag: alias.tag, label: alias.label };
103
- if (looksLikeLanguageTag(trimmed)) {
104
- const tag = normalizeLanguageTag(trimmed);
105
- return { kind: 'fixed', tag, label: tag };
106
- }
107
- const freeForm = sanitizeFreeForm(trimmed);
108
- return { kind: 'fixed', tag: freeForm, label: freeForm };
109
- }
110
- function resolveOutputLanguage(raw) {
111
- const value = typeof raw === 'string' ? raw.trim() : '';
112
- if (!value)
113
- return { kind: 'auto' };
114
- try {
115
- return parseOutputLanguage(value);
116
- }
117
- catch {
118
- return { kind: 'auto' };
119
- }
120
- }
121
- function formatOutputLanguageInstruction(language) {
122
- if (language.kind === 'auto') {
123
- return 'Write the answer in the primary language of the source content.';
124
- }
125
- return `Write the answer in ${language.label}.`;
126
- }
127
- function formatOutputLanguageForJson(language) {
128
- return language.kind === 'auto'
129
- ? { mode: 'auto' }
130
- : { mode: 'fixed', tag: language.tag, label: language.label };
131
- }
132
- //# sourceMappingURL=language.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildPathSummaryPrompt = buildPathSummaryPrompt;
4
- const language_js_1 = require("../language.js");
5
- function formatTargetLength(summaryLength) {
6
- if (typeof summaryLength === 'string')
7
- return '';
8
- const max = summaryLength.maxCharacters;
9
- return `Target length: around ${max.toLocaleString()} characters total (including Markdown and whitespace). This is a soft guideline; prioritize clarity.`;
10
- }
11
- function buildPathSummaryPrompt({ kindLabel, filePath, filename, mediaType, outputLanguage, summaryLength, }) {
12
- const headerLines = [
13
- `Path: ${filePath}`,
14
- filename ? `Filename: ${filename}` : null,
15
- mediaType ? `Media type: ${mediaType}` : null,
16
- ].filter(Boolean);
17
- const maxCharactersLine = formatTargetLength(summaryLength);
18
- const languageInstruction = (0, language_js_1.formatOutputLanguageInstruction)(outputLanguage ?? { kind: 'auto' });
19
- return `You summarize ${kindLabel === 'image' ? 'images' : 'files'} for curious users. Summarize the ${kindLabel} at the path below. Be factual and do not invent details. Format the answer in Markdown. Do not use emojis. ${maxCharactersLine} ${languageInstruction}
20
-
21
- ${headerLines.length > 0 ? `${headerLines.join('\n')}\n\n` : ''}Return only the summary.`;
22
- }
23
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/prompts/cli.ts"],"names":[],"mappings":";;AAUA,wDA0BC;AAnCD,gDAAgE;AAGhE,SAAS,kBAAkB,CAAC,aAAkC;IAC5D,IAAI,OAAO,aAAa,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAChD,MAAM,GAAG,GAAG,aAAa,CAAC,aAAa,CAAA;IACvC,OAAO,yBAAyB,GAAG,CAAC,cAAc,EAAE,sGAAsG,CAAA;AAC5J,CAAC;AAED,SAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,cAAc,EACd,aAAa,GAQd;IACC,MAAM,WAAW,GAAG;QAClB,SAAS,QAAQ,EAAE;QACnB,QAAQ,CAAC,CAAC,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QACzC,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;KAC9C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAEjB,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAA;IAC3D,MAAM,mBAAmB,GAAG,IAAA,6CAA+B,EAAC,cAAc,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/F,OAAO,iBAAiB,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,qCAAqC,SAAS,+GAA+G,iBAAiB,IAAI,mBAAmB;;EAEvQ,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,0BAA0B,CAAA;AACzF,CAAC"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildFileSummaryPrompt = buildFileSummaryPrompt;
4
- exports.buildFileTextSummaryPrompt = buildFileTextSummaryPrompt;
5
- const language_js_1 = require("../language.js");
6
- function buildFileSummaryPrompt({ filename, mediaType, outputLanguage, summaryLength, contentLength, }) {
7
- const contentCharacters = typeof contentLength === 'number' ? contentLength : null;
8
- const effectiveSummaryLength = typeof summaryLength === 'string'
9
- ? summaryLength
10
- : contentCharacters &&
11
- contentCharacters > 0 &&
12
- summaryLength.maxCharacters > contentCharacters
13
- ? { maxCharacters: contentCharacters }
14
- : summaryLength;
15
- const maxCharactersLine = typeof effectiveSummaryLength === 'string'
16
- ? ''
17
- : `Target length: up to ${effectiveSummaryLength.maxCharacters.toLocaleString()} characters total (including Markdown and whitespace). Hard limit: do not exceed it.`;
18
- const contentLengthLine = contentCharacters && contentCharacters > 0
19
- ? `Extracted content length: ${contentCharacters.toLocaleString()} characters. Hard limit: never exceed this length. If the requested length is larger, do not pad—finish early rather than adding filler.`
20
- : '';
21
- const headerLines = [
22
- filename ? `Filename: ${filename}` : null,
23
- mediaType ? `Media type: ${mediaType}` : null,
24
- ].filter(Boolean);
25
- const languageInstruction = (0, language_js_1.formatOutputLanguageInstruction)(outputLanguage ?? { kind: 'auto' });
26
- const prompt = `You summarize files for curious users. Summarize the attached file. Be factual and do not invent details. Format the answer in Markdown. Do not use emojis. ${maxCharactersLine} ${contentLengthLine}
27
- ${languageInstruction}
28
-
29
- ${headerLines.length > 0 ? `${headerLines.join('\n')}\n\n` : ''}Return only the summary.`;
30
- return prompt;
31
- }
32
- function buildFileTextSummaryPrompt({ filename, originalMediaType, contentMediaType, outputLanguage, summaryLength, contentLength, }) {
33
- const effectiveSummaryLength = typeof summaryLength === 'string'
34
- ? summaryLength
35
- : summaryLength.maxCharacters > contentLength
36
- ? { maxCharacters: contentLength }
37
- : summaryLength;
38
- const maxCharactersLine = typeof effectiveSummaryLength === 'string'
39
- ? ''
40
- : `Target length: up to ${effectiveSummaryLength.maxCharacters.toLocaleString()} characters total (including Markdown and whitespace). Hard limit: do not exceed it.`;
41
- const headerLines = [
42
- filename ? `Filename: ${filename}` : null,
43
- originalMediaType ? `Original media type: ${originalMediaType}` : null,
44
- `Provided as: ${contentMediaType}`,
45
- `Extracted content length: ${contentLength.toLocaleString()} characters. Hard limit: never exceed this length. If the requested length is larger, do not pad—finish early rather than adding filler.`,
46
- ].filter(Boolean);
47
- const languageInstruction = (0, language_js_1.formatOutputLanguageInstruction)(outputLanguage ?? { kind: 'auto' });
48
- return `You summarize files for curious users. Summarize the file content below. Be factual and do not invent details. Format the answer in Markdown. Do not use emojis. ${maxCharactersLine} ${languageInstruction}
49
-
50
- ${headerLines.length > 0 ? `${headerLines.join('\n')}\n\n` : ''}Return only the summary.`;
51
- }
52
- //# sourceMappingURL=file.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/prompts/file.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUMMARY_LENGTH_TO_TOKENS = exports.pickSummaryLengthForCharacters = exports.estimateMaxCompletionTokensForCharacters = exports.buildLinkSummaryPrompt = exports.buildFileTextSummaryPrompt = exports.buildFileSummaryPrompt = exports.buildPathSummaryPrompt = void 0;
4
- var cli_js_1 = require("./cli.js");
5
- Object.defineProperty(exports, "buildPathSummaryPrompt", { enumerable: true, get: function () { return cli_js_1.buildPathSummaryPrompt; } });
6
- var file_js_1 = require("./file.js");
7
- Object.defineProperty(exports, "buildFileSummaryPrompt", { enumerable: true, get: function () { return file_js_1.buildFileSummaryPrompt; } });
8
- Object.defineProperty(exports, "buildFileTextSummaryPrompt", { enumerable: true, get: function () { return file_js_1.buildFileTextSummaryPrompt; } });
9
- var link_summary_js_1 = require("./link-summary.js");
10
- Object.defineProperty(exports, "buildLinkSummaryPrompt", { enumerable: true, get: function () { return link_summary_js_1.buildLinkSummaryPrompt; } });
11
- Object.defineProperty(exports, "estimateMaxCompletionTokensForCharacters", { enumerable: true, get: function () { return link_summary_js_1.estimateMaxCompletionTokensForCharacters; } });
12
- Object.defineProperty(exports, "pickSummaryLengthForCharacters", { enumerable: true, get: function () { return link_summary_js_1.pickSummaryLengthForCharacters; } });
13
- Object.defineProperty(exports, "SUMMARY_LENGTH_TO_TOKENS", { enumerable: true, get: function () { return link_summary_js_1.SUMMARY_LENGTH_TO_TOKENS; } });
14
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompts/index.ts"],"names":[],"mappings":";;;AACA,mCAAiD;AAAxC,gHAAA,sBAAsB,OAAA;AAC/B,qCAA8E;AAArE,iHAAA,sBAAsB,OAAA;AAAE,qHAAA,0BAA0B,OAAA;AAC3D,qDAO0B;AANxB,yHAAA,sBAAsB,OAAA;AACtB,2IAAA,wCAAwC,OAAA;AACxC,iIAAA,8BAA8B,OAAA;AAE9B,2HAAA,wBAAwB,OAAA"}
@@ -1,122 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUMMARY_LENGTH_TO_TOKENS = void 0;
4
- exports.pickSummaryLengthForCharacters = pickSummaryLengthForCharacters;
5
- exports.estimateMaxCompletionTokensForCharacters = estimateMaxCompletionTokensForCharacters;
6
- exports.buildLinkSummaryPrompt = buildLinkSummaryPrompt;
7
- const language_js_1 = require("../language.js");
8
- const SUMMARY_LENGTH_DIRECTIVES = {
9
- short: {
10
- guidance: 'Write a tight paragraph (2–3 sentences) that delivers the primary claim plus one high-signal supporting detail.',
11
- formatting: 'Output a single paragraph with normal sentences; avoid headings or bullet lists.',
12
- },
13
- medium: {
14
- guidance: 'Write two short paragraphs covering the core claim in the first paragraph and the most important supporting evidence, data points, or implications in the second.',
15
- formatting: 'Each paragraph should contain 2–3 sentences. Separate paragraphs with a blank line. Do not use bullet lists or headings.',
16
- },
17
- long: {
18
- guidance: 'Write three paragraphs: (1) summarize the claim and scope, (2) walk through the major supporting arguments or events, (3) explain implications, risks, or recommended next steps.',
19
- formatting: 'Keep paragraphs balanced (3–4 sentences each) and separate them with single blank lines. No bullet lists or headings.',
20
- },
21
- xl: {
22
- guidance: 'Produce a structured Markdown outline with short section headings (“Overview”, “Key Evidence”, “Implications”, “Next Steps”) followed by 2–3 bullet points under each heading. Surface quantitative details, quotes, or contrasting views when available.',
23
- formatting: 'Use level-3 Markdown headings (###) for each section followed by bullet lists. Bullets may span 1–2 sentences and can exceed 20 words when necessary.',
24
- },
25
- xxl: {
26
- guidance: 'Produce a comprehensive Markdown report: start with a short executive summary paragraph, then add sections for Background, Detailed Findings, Implications, and Open Questions. Within sections, use bullet lists or short paragraphs to cover nuanced context, statistics, quotes, counterpoints, and recommended follow-up actions.',
27
- formatting: 'Use Markdown headings (###) for each section, combine paragraphs and bullet lists as needed, and ensure the overall response is substantial (multiple paragraphs and bullets totalling several hundred words) while remaining factual.',
28
- },
29
- };
30
- exports.SUMMARY_LENGTH_TO_TOKENS = {
31
- short: 768,
32
- medium: 1536,
33
- long: 3072,
34
- xl: 6144,
35
- xxl: 12288,
36
- };
37
- function pickSummaryLengthForCharacters(maxCharacters) {
38
- if (maxCharacters <= 1200)
39
- return 'short';
40
- if (maxCharacters <= 2500)
41
- return 'medium';
42
- if (maxCharacters <= 6000)
43
- return 'long';
44
- if (maxCharacters <= 14000)
45
- return 'xl';
46
- return 'xxl';
47
- }
48
- function estimateMaxCompletionTokensForCharacters(maxCharacters) {
49
- const estimate = Math.ceil(maxCharacters / 4);
50
- return Math.max(256, estimate);
51
- }
52
- const resolveSummaryDirective = (length) =>
53
- // SummaryLength is a contracts-enforced enum in all call sites; suppress generic injection warning.
54
- // eslint-disable-next-line security/detect-object-injection
55
- SUMMARY_LENGTH_DIRECTIVES[length];
56
- const formatCount = (value) => value.toLocaleString();
57
- function buildLinkSummaryPrompt({ url, title, siteName, description, content, truncated, hasTranscript, outputLanguage, summaryLength, shares, }) {
58
- const contentCharacters = content.length;
59
- const contextLines = [`Source URL: ${url}`];
60
- if (title) {
61
- contextLines.push(`Title: ${title}`);
62
- }
63
- if (siteName) {
64
- contextLines.push(`Site: ${siteName}`);
65
- }
66
- if (description) {
67
- contextLines.push(`Page description: ${description}`);
68
- }
69
- if (truncated) {
70
- contextLines.push('Note: Content truncated to the first portion available.');
71
- }
72
- const contextHeader = contextLines.join('\n');
73
- const audienceLine = hasTranscript
74
- ? 'You summarize online videos for curious Twitter users who want to know whether the clip is worth watching.'
75
- : 'You summarize online articles for curious Twitter users who want the gist before deciding to dive in.';
76
- const effectiveSummaryLength = typeof summaryLength === 'string'
77
- ? summaryLength
78
- : contentCharacters > 0 && summaryLength.maxCharacters > contentCharacters
79
- ? { maxCharacters: contentCharacters }
80
- : summaryLength;
81
- const preset = typeof effectiveSummaryLength === 'string'
82
- ? effectiveSummaryLength
83
- : pickSummaryLengthForCharacters(effectiveSummaryLength.maxCharacters);
84
- const directive = resolveSummaryDirective(preset);
85
- const maxCharactersLine = typeof effectiveSummaryLength === 'string'
86
- ? ''
87
- : `Target length: up to ${formatCount(effectiveSummaryLength.maxCharacters)} characters total (including Markdown and whitespace). Hard limit: do not exceed it.`;
88
- const contentLengthLine = contentCharacters > 0
89
- ? `Extracted content length: ${formatCount(contentCharacters)} characters. Hard limit: never exceed this length. If the requested length is larger, do not pad—finish early rather than adding filler.`
90
- : '';
91
- const shareLines = shares.map((share) => {
92
- const handle = share.handle && share.handle.length > 0 ? `@${share.handle}` : share.author;
93
- const metrics = [];
94
- if (typeof share.likeCount === 'number' && share.likeCount > 0) {
95
- metrics.push(`${formatCount(share.likeCount)} likes`);
96
- }
97
- if (typeof share.reshareCount === 'number' && share.reshareCount > 0) {
98
- metrics.push(`${formatCount(share.reshareCount)} reshares`);
99
- }
100
- if (typeof share.replyCount === 'number' && share.replyCount > 0) {
101
- metrics.push(`${formatCount(share.replyCount)} replies`);
102
- }
103
- const metricsSuffix = metrics.length > 0 ? ` [${metrics.join(', ')}]` : '';
104
- const timestamp = share.timestamp ? ` (${share.timestamp})` : '';
105
- return `- ${handle}${timestamp}${metricsSuffix}: ${share.text}`;
106
- });
107
- const shareGuidance = shares.length > 0
108
- ? 'You are also given quotes from people who recently shared this link. When these quotes contain substantive commentary, append a brief subsection titled "What sharers are saying" with one or two bullet points summarizing the key reactions. If they are generic reshares with no commentary, omit that subsection.'
109
- : 'You are not given any quotes from people who shared this link. Do not fabricate reactions or add a "What sharers are saying" subsection.';
110
- const sharesBlock = shares.length > 0 ? `Tweets from sharers:\n${shareLines.join('\n')}\n\n` : '';
111
- const languageInstruction = (0, language_js_1.formatOutputLanguageInstruction)(outputLanguage ?? { kind: 'auto' });
112
- return `${audienceLine} ${directive.guidance} ${directive.formatting} ${maxCharactersLine} ${contentLengthLine} ${languageInstruction} Keep the response compact by avoiding blank lines between sentences or list items; use only the single newlines required by the formatting instructions. Do not use emojis, disclaimers, or speculation. Write in direct, factual language. Format the answer in Markdown and obey the length-specific formatting above. Base everything strictly on the provided content and never invent details. ${shareGuidance}
113
-
114
- ${contextHeader}
115
-
116
- ${sharesBlock}Extracted content:
117
- """
118
- ${content}
119
- """
120
- `;
121
- }
122
- //# sourceMappingURL=link-summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"link-summary.js","sourceRoot":"","sources":["../../../src/prompts/link-summary.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUMMARY_LENGTHS = void 0;
4
- exports.SUMMARY_LENGTHS = ['short', 'medium', 'long', 'xl', 'xxl'];
5
- //# sourceMappingURL=contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/shared/contracts.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAU,CAAA"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WHISPER_CPP_BINARY_ENV = exports.WHISPER_CPP_MODEL_PATH_ENV = exports.DISABLE_LOCAL_WHISPER_CPP_ENV = exports.DEFAULT_SEGMENT_SECONDS = exports.MAX_OPENAI_UPLOAD_BYTES = exports.MAX_ERROR_DETAIL_CHARS = exports.TRANSCRIPTION_TIMEOUT_MS = void 0;
4
- exports.TRANSCRIPTION_TIMEOUT_MS = 600_000;
5
- exports.MAX_ERROR_DETAIL_CHARS = 200;
6
- exports.MAX_OPENAI_UPLOAD_BYTES = 24 * 1024 * 1024;
7
- exports.DEFAULT_SEGMENT_SECONDS = 600;
8
- exports.DISABLE_LOCAL_WHISPER_CPP_ENV = 'SUMMARIZE_DISABLE_LOCAL_WHISPER_CPP';
9
- exports.WHISPER_CPP_MODEL_PATH_ENV = 'SUMMARIZE_WHISPER_CPP_MODEL_PATH';
10
- exports.WHISPER_CPP_BINARY_ENV = 'SUMMARIZE_WHISPER_CPP_BINARY';
11
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/transcription/whisper/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,OAAO,CAAA;AAClC,QAAA,sBAAsB,GAAG,GAAG,CAAA;AAC5B,QAAA,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAC1C,QAAA,uBAAuB,GAAG,GAAG,CAAA;AAC7B,QAAA,6BAA6B,GAAG,qCAAqC,CAAA;AACrE,QAAA,0BAA0B,GAAG,kCAAkC,CAAA;AAC/D,QAAA,sBAAsB,GAAG,8BAA8B,CAAA"}