wikimem 0.3.0 → 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 (228) hide show
  1. package/CHANGELOG.md +138 -29
  2. package/README.md +171 -309
  3. package/dist/cli/commands/ask.d.ts +3 -0
  4. package/dist/cli/commands/ask.d.ts.map +1 -0
  5. package/dist/cli/commands/ask.js +63 -0
  6. package/dist/cli/commands/ask.js.map +1 -0
  7. package/dist/cli/commands/export.d.ts +3 -0
  8. package/dist/cli/commands/export.d.ts.map +1 -0
  9. package/dist/cli/commands/export.js +108 -0
  10. package/dist/cli/commands/export.js.map +1 -0
  11. package/dist/cli/commands/history.d.ts +3 -0
  12. package/dist/cli/commands/history.d.ts.map +1 -0
  13. package/dist/cli/commands/history.js +61 -0
  14. package/dist/cli/commands/history.js.map +1 -0
  15. package/dist/cli/commands/improve.d.ts.map +1 -1
  16. package/dist/cli/commands/improve.js +4 -3
  17. package/dist/cli/commands/improve.js.map +1 -1
  18. package/dist/cli/commands/ingest.d.ts.map +1 -1
  19. package/dist/cli/commands/ingest.js +5 -4
  20. package/dist/cli/commands/ingest.js.map +1 -1
  21. package/dist/cli/commands/init.d.ts.map +1 -1
  22. package/dist/cli/commands/init.js +337 -81
  23. package/dist/cli/commands/init.js.map +1 -1
  24. package/dist/cli/commands/lint.d.ts.map +1 -1
  25. package/dist/cli/commands/lint.js +4 -3
  26. package/dist/cli/commands/lint.js.map +1 -1
  27. package/dist/cli/commands/mcp.d.ts +3 -0
  28. package/dist/cli/commands/mcp.d.ts.map +1 -0
  29. package/dist/cli/commands/mcp.js +11 -0
  30. package/dist/cli/commands/mcp.js.map +1 -0
  31. package/dist/cli/commands/open.d.ts +3 -0
  32. package/dist/cli/commands/open.d.ts.map +1 -0
  33. package/dist/cli/commands/open.js +36 -0
  34. package/dist/cli/commands/open.js.map +1 -0
  35. package/dist/cli/commands/query.d.ts.map +1 -1
  36. package/dist/cli/commands/query.js +5 -4
  37. package/dist/cli/commands/query.js.map +1 -1
  38. package/dist/cli/commands/search.d.ts +3 -0
  39. package/dist/cli/commands/search.d.ts.map +1 -0
  40. package/dist/cli/commands/search.js +61 -0
  41. package/dist/cli/commands/search.js.map +1 -0
  42. package/dist/cli/commands/serve.d.ts.map +1 -1
  43. package/dist/cli/commands/serve.js +41 -2
  44. package/dist/cli/commands/serve.js.map +1 -1
  45. package/dist/cli/commands/watch.d.ts.map +1 -1
  46. package/dist/cli/commands/watch.js +4 -3
  47. package/dist/cli/commands/watch.js.map +1 -1
  48. package/dist/cli/index.d.ts.map +1 -1
  49. package/dist/cli/index.js +27 -1
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/core/audit-trail.d.ts +15 -0
  52. package/dist/core/audit-trail.d.ts.map +1 -0
  53. package/dist/core/audit-trail.js +43 -0
  54. package/dist/core/audit-trail.js.map +1 -0
  55. package/dist/core/claude-code.d.ts +10 -0
  56. package/dist/core/claude-code.d.ts.map +1 -0
  57. package/dist/core/claude-code.js +81 -0
  58. package/dist/core/claude-code.js.map +1 -0
  59. package/dist/core/config.d.ts +23 -0
  60. package/dist/core/config.d.ts.map +1 -1
  61. package/dist/core/config.js.map +1 -1
  62. package/dist/core/connectors.d.ts +58 -0
  63. package/dist/core/connectors.d.ts.map +1 -0
  64. package/dist/core/connectors.js +189 -0
  65. package/dist/core/connectors.js.map +1 -0
  66. package/dist/core/folder-scanner.d.ts +10 -0
  67. package/dist/core/folder-scanner.d.ts.map +1 -0
  68. package/dist/core/folder-scanner.js +84 -0
  69. package/dist/core/folder-scanner.js.map +1 -0
  70. package/dist/core/git.d.ts +137 -0
  71. package/dist/core/git.d.ts.map +1 -0
  72. package/dist/core/git.js +520 -0
  73. package/dist/core/git.js.map +1 -0
  74. package/dist/core/history.d.ts +21 -0
  75. package/dist/core/history.d.ts.map +1 -0
  76. package/dist/core/history.js +107 -0
  77. package/dist/core/history.js.map +1 -0
  78. package/dist/core/improve.d.ts.map +1 -1
  79. package/dist/core/improve.js +9 -0
  80. package/dist/core/improve.js.map +1 -1
  81. package/dist/core/ingest.d.ts +1 -0
  82. package/dist/core/ingest.d.ts.map +1 -1
  83. package/dist/core/ingest.js +151 -7
  84. package/dist/core/ingest.js.map +1 -1
  85. package/dist/core/lint.d.ts.map +1 -1
  86. package/dist/core/lint.js +23 -4
  87. package/dist/core/lint.js.map +1 -1
  88. package/dist/core/oauth-defaults.d.ts +31 -0
  89. package/dist/core/oauth-defaults.d.ts.map +1 -0
  90. package/dist/core/oauth-defaults.js +77 -0
  91. package/dist/core/oauth-defaults.js.map +1 -0
  92. package/dist/core/observer.d.ts +94 -0
  93. package/dist/core/observer.d.ts.map +1 -0
  94. package/dist/core/observer.js +492 -0
  95. package/dist/core/observer.js.map +1 -0
  96. package/dist/core/pipeline-events.d.ts +63 -0
  97. package/dist/core/pipeline-events.d.ts.map +1 -0
  98. package/dist/core/pipeline-events.js +109 -0
  99. package/dist/core/pipeline-events.js.map +1 -0
  100. package/dist/core/query.d.ts.map +1 -1
  101. package/dist/core/query.js +16 -8
  102. package/dist/core/query.js.map +1 -1
  103. package/dist/core/scraper.d.ts +41 -0
  104. package/dist/core/scraper.d.ts.map +1 -0
  105. package/dist/core/scraper.js +277 -0
  106. package/dist/core/scraper.js.map +1 -0
  107. package/dist/core/sync/gdrive.d.ts +14 -0
  108. package/dist/core/sync/gdrive.d.ts.map +1 -0
  109. package/dist/core/sync/gdrive.js +205 -0
  110. package/dist/core/sync/gdrive.js.map +1 -0
  111. package/dist/core/sync/github.d.ts +20 -0
  112. package/dist/core/sync/github.d.ts.map +1 -0
  113. package/dist/core/sync/github.js +206 -0
  114. package/dist/core/sync/github.js.map +1 -0
  115. package/dist/core/sync/gmail.d.ts +15 -0
  116. package/dist/core/sync/gmail.d.ts.map +1 -0
  117. package/dist/core/sync/gmail.js +159 -0
  118. package/dist/core/sync/gmail.js.map +1 -0
  119. package/dist/core/sync/index.d.ts +47 -0
  120. package/dist/core/sync/index.d.ts.map +1 -0
  121. package/dist/core/sync/index.js +100 -0
  122. package/dist/core/sync/index.js.map +1 -0
  123. package/dist/core/sync/jira.d.ts +15 -0
  124. package/dist/core/sync/jira.d.ts.map +1 -0
  125. package/dist/core/sync/jira.js +176 -0
  126. package/dist/core/sync/jira.js.map +1 -0
  127. package/dist/core/sync/linear.d.ts +15 -0
  128. package/dist/core/sync/linear.d.ts.map +1 -0
  129. package/dist/core/sync/linear.js +111 -0
  130. package/dist/core/sync/linear.js.map +1 -0
  131. package/dist/core/sync/notion.d.ts +14 -0
  132. package/dist/core/sync/notion.d.ts.map +1 -0
  133. package/dist/core/sync/notion.js +168 -0
  134. package/dist/core/sync/notion.js.map +1 -0
  135. package/dist/core/sync/rss.d.ts +20 -0
  136. package/dist/core/sync/rss.d.ts.map +1 -0
  137. package/dist/core/sync/rss.js +165 -0
  138. package/dist/core/sync/rss.js.map +1 -0
  139. package/dist/core/sync/scheduler.d.ts +31 -0
  140. package/dist/core/sync/scheduler.d.ts.map +1 -0
  141. package/dist/core/sync/scheduler.js +129 -0
  142. package/dist/core/sync/scheduler.js.map +1 -0
  143. package/dist/core/sync/slack.d.ts +16 -0
  144. package/dist/core/sync/slack.d.ts.map +1 -0
  145. package/dist/core/sync/slack.js +173 -0
  146. package/dist/core/sync/slack.js.map +1 -0
  147. package/dist/core/vault.d.ts +22 -0
  148. package/dist/core/vault.d.ts.map +1 -1
  149. package/dist/core/vault.js +65 -0
  150. package/dist/core/vault.js.map +1 -1
  151. package/dist/core/webhooks.d.ts +13 -0
  152. package/dist/core/webhooks.d.ts.map +1 -0
  153. package/dist/core/webhooks.js +206 -0
  154. package/dist/core/webhooks.js.map +1 -0
  155. package/dist/index.js +3 -2
  156. package/dist/index.js.map +1 -1
  157. package/dist/mcp-entry.d.ts +10 -0
  158. package/dist/mcp-entry.d.ts.map +1 -0
  159. package/dist/mcp-entry.js +21 -0
  160. package/dist/mcp-entry.js.map +1 -0
  161. package/dist/mcp-server.d.ts +20 -0
  162. package/dist/mcp-server.d.ts.map +1 -0
  163. package/dist/mcp-server.js +483 -0
  164. package/dist/mcp-server.js.map +1 -0
  165. package/dist/mcp-tools-extended.d.ts +15 -0
  166. package/dist/mcp-tools-extended.d.ts.map +1 -0
  167. package/dist/mcp-tools-extended.js +277 -0
  168. package/dist/mcp-tools-extended.js.map +1 -0
  169. package/dist/processors/audio.d.ts.map +1 -1
  170. package/dist/processors/audio.js +42 -4
  171. package/dist/processors/audio.js.map +1 -1
  172. package/dist/processors/csv.d.ts +18 -0
  173. package/dist/processors/csv.d.ts.map +1 -0
  174. package/dist/processors/csv.js +230 -0
  175. package/dist/processors/csv.js.map +1 -0
  176. package/dist/processors/image.d.ts.map +1 -1
  177. package/dist/processors/image.js +55 -27
  178. package/dist/processors/image.js.map +1 -1
  179. package/dist/processors/pdf.d.ts.map +1 -1
  180. package/dist/processors/pdf.js +6 -3
  181. package/dist/processors/pdf.js.map +1 -1
  182. package/dist/processors/pptx.d.ts +3 -1
  183. package/dist/processors/pptx.d.ts.map +1 -1
  184. package/dist/processors/pptx.js +236 -95
  185. package/dist/processors/pptx.js.map +1 -1
  186. package/dist/processors/url.js +4 -1
  187. package/dist/processors/url.js.map +1 -1
  188. package/dist/processors/xlsx.d.ts +2 -0
  189. package/dist/processors/xlsx.d.ts.map +1 -1
  190. package/dist/processors/xlsx.js +182 -46
  191. package/dist/processors/xlsx.js.map +1 -1
  192. package/dist/providers/claude.d.ts +1 -0
  193. package/dist/providers/claude.d.ts.map +1 -1
  194. package/dist/providers/claude.js +5 -3
  195. package/dist/providers/claude.js.map +1 -1
  196. package/dist/providers/index.d.ts +17 -1
  197. package/dist/providers/index.d.ts.map +1 -1
  198. package/dist/providers/index.js +144 -0
  199. package/dist/providers/index.js.map +1 -1
  200. package/dist/providers/openai.d.ts +1 -0
  201. package/dist/providers/openai.d.ts.map +1 -1
  202. package/dist/providers/openai.js +5 -3
  203. package/dist/providers/openai.js.map +1 -1
  204. package/dist/providers/types.d.ts +18 -0
  205. package/dist/providers/types.d.ts.map +1 -1
  206. package/dist/templates/config-yaml.d.ts.map +1 -1
  207. package/dist/templates/config-yaml.js +12 -1
  208. package/dist/templates/config-yaml.js.map +1 -1
  209. package/dist/templates/source-types.d.ts +33 -0
  210. package/dist/templates/source-types.d.ts.map +1 -0
  211. package/dist/templates/source-types.js +178 -0
  212. package/dist/templates/source-types.js.map +1 -0
  213. package/dist/web/public/index.html +9836 -742
  214. package/dist/web/server.d.ts.map +1 -1
  215. package/dist/web/server.js +2823 -43
  216. package/dist/web/server.js.map +1 -1
  217. package/package.json +10 -4
  218. package/scripts/install.sh +54 -0
  219. package/src/web/public/index.html +9836 -742
  220. package/templates/mcp-config.json +9 -0
  221. package/templates/source-types/article.md +21 -0
  222. package/templates/source-types/book.md +21 -0
  223. package/templates/source-types/paper.md +23 -0
  224. package/templates/source-types/podcast.md +21 -0
  225. package/templates/source-types/raw-notes.md +17 -0
  226. package/templates/source-types/tweet-thread.md +19 -0
  227. package/templates/source-types/video.md +21 -0
  228. package/dist/web/public/public/index.html +0 -946
@@ -3,14 +3,16 @@ export class OpenAIProvider {
3
3
  name = 'openai';
4
4
  client;
5
5
  defaultModel;
6
+ resolvedApiKey;
6
7
  constructor(model, apiKey) {
8
+ this.resolvedApiKey = apiKey ?? process.env['OPENAI_API_KEY'];
7
9
  this.client = new OpenAI({
8
- apiKey: apiKey ?? process.env['OPENAI_API_KEY'],
10
+ apiKey: this.resolvedApiKey,
9
11
  });
10
12
  this.defaultModel = model ?? 'gpt-4o';
11
13
  }
12
14
  async chat(messages, options) {
13
- if (!process.env['OPENAI_API_KEY'] && !this.client.apiKey) {
15
+ if (!this.resolvedApiKey) {
14
16
  throw new Error('OpenAI API key not found.\n' +
15
17
  'Set it via: export OPENAI_API_KEY=sk-...\n' +
16
18
  'Or add to config.yaml: api_key: sk-...\n' +
@@ -57,7 +59,7 @@ export class OpenAIProvider {
57
59
  }
58
60
  }
59
61
  async isAvailable() {
60
- return !!process.env['OPENAI_API_KEY'];
62
+ return !!this.resolvedApiKey;
61
63
  }
62
64
  }
63
65
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -30,4 +30,22 @@ export interface ProviderConfig {
30
30
  apiKey?: string;
31
31
  baseUrl?: string;
32
32
  }
33
+ /** Canonical IDs used in fallback chains */
34
+ export type ProviderChainId = 'claude' | 'openai' | 'ollama';
35
+ export interface ProviderChainKeys {
36
+ anthropic?: string;
37
+ openai?: string;
38
+ /** Base URL for Ollama (e.g. http://localhost:11434) */
39
+ ollama_url?: string;
40
+ }
41
+ /**
42
+ * Config for createProviderChain — primary + fallbacks with optional per-provider keys.
43
+ */
44
+ export interface ProviderChainConfig {
45
+ primary: ProviderChainId;
46
+ fallback: ProviderChainId[];
47
+ keys?: ProviderChainKeys;
48
+ /** Default model passed to each concrete provider */
49
+ model?: string;
50
+ }
33
51
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/templates/config-yaml.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4EzD"}
1
+ {"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/templates/config-yaml.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuFzD"}
@@ -2,11 +2,22 @@ export function getDefaultConfig(template) {
2
2
  return `# wikimem configuration
3
3
  # Docs: https://github.com/naman10parikh/wikimem
4
4
 
5
- # LLM Provider
5
+ # LLM Provider (legacy single provider — ignored when a providers block is set)
6
6
  provider: claude # claude | openai | ollama
7
7
  model: ~ # Leave empty for provider default
8
8
  # api_key: ~ # Set via ANTHROPIC_API_KEY or OPENAI_API_KEY env var
9
9
 
10
+ # Optional: fallback chain (SUP-003) — try primary, then each fallback on failure
11
+ # providers:
12
+ # primary: claude
13
+ # fallback:
14
+ # - openai
15
+ # - ollama
16
+ # keys:
17
+ # anthropic: sk-ant-...
18
+ # openai: sk-...
19
+ # ollama_url: http://localhost:11434
20
+
10
21
  # Embeddings (for semantic search)
11
22
  embeddings:
12
23
  provider: auto # gemini | openai | local | auto (auto-detect from env)
@@ -1 +1 @@
1
- {"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/templates/config-yaml.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO;;;;;;;;;;;;;;;;;cAiBK,UAAU,CAAC,QAAQ,CAAC;cACpB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDrB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/templates/config-yaml.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BK,UAAU,CAAC,QAAQ,CAAC;cACpB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDrB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Source-type templates for wiki page generation.
3
+ * Each template defines how a specific type of source should be
4
+ * structured when compiled into wiki pages.
5
+ *
6
+ * Used by ingest.ts to generate appropriately structured content.
7
+ */
8
+ export interface SourceTypeTemplate {
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ /** Keywords that help detect this source type from content */
13
+ detectionKeywords: string[];
14
+ /** MIME type patterns */
15
+ mimePatterns?: string[];
16
+ /** System prompt addition for LLM compilation */
17
+ systemPromptAddition: string;
18
+ /** Suggested frontmatter fields beyond the defaults */
19
+ extraFrontmatterFields: string[];
20
+ /** Suggested page structure (headings) */
21
+ suggestedStructure: string[];
22
+ }
23
+ export declare const SOURCE_TYPE_TEMPLATES: SourceTypeTemplate[];
24
+ /**
25
+ * Detect source type from content and metadata.
26
+ * Returns the best-matching template or null for generic.
27
+ */
28
+ export declare function detectSourceType(content: string, filename?: string, mimeType?: string): SourceTypeTemplate | null;
29
+ /**
30
+ * Get the system prompt addition for a detected source type.
31
+ */
32
+ export declare function getSourceTypePrompt(template: SourceTypeTemplate | null): string;
33
+ //# sourceMappingURL=source-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-types.d.ts","sourceRoot":"","sources":["../../src/templates/source-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iDAAiD;IACjD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAqHrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CAyC3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,GAAG,MAAM,CAG/E"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Source-type templates for wiki page generation.
3
+ * Each template defines how a specific type of source should be
4
+ * structured when compiled into wiki pages.
5
+ *
6
+ * Used by ingest.ts to generate appropriately structured content.
7
+ */
8
+ export const SOURCE_TYPE_TEMPLATES = [
9
+ {
10
+ id: 'article',
11
+ name: 'Article / Blog Post',
12
+ description: 'Web articles, blog posts, news pieces',
13
+ detectionKeywords: ['article', 'blog', 'post', 'published', 'author', 'byline'],
14
+ mimePatterns: ['text/html'],
15
+ systemPromptAddition: `This source is a web article or blog post. Structure the wiki pages to capture:
16
+ - The core thesis or argument
17
+ - Key claims with supporting evidence
18
+ - Author's perspective and potential biases
19
+ - Practical takeaways and implications
20
+ - How this connects to other knowledge in the wiki
21
+ Use citation-style references when quoting the original.`,
22
+ extraFrontmatterFields: ['author', 'publication', 'publish_date', 'url'],
23
+ suggestedStructure: ['Summary', 'Key Arguments', 'Evidence & Claims', 'Implications', 'Related Concepts'],
24
+ },
25
+ {
26
+ id: 'paper',
27
+ name: 'Academic Paper / Research',
28
+ description: 'Research papers, whitepapers, academic publications',
29
+ detectionKeywords: ['abstract', 'methodology', 'findings', 'conclusion', 'references', 'doi', 'arxiv', 'et al'],
30
+ mimePatterns: ['application/pdf'],
31
+ systemPromptAddition: `This source is an academic paper or research document. Structure the wiki pages to capture:
32
+ - Abstract / TL;DR in accessible language
33
+ - Research question and hypothesis
34
+ - Methodology overview (non-technical summary)
35
+ - Key findings and results
36
+ - Limitations acknowledged by authors
37
+ - Practical implications and applications
38
+ - How this advances the field
39
+ Translate academic jargon into plain language while preserving accuracy.`,
40
+ extraFrontmatterFields: ['authors', 'institution', 'year', 'doi', 'conference', 'citation_count'],
41
+ suggestedStructure: ['Abstract', 'Research Question', 'Methodology', 'Key Findings', 'Limitations', 'Implications', 'References'],
42
+ },
43
+ {
44
+ id: 'tweet-thread',
45
+ name: 'Tweet Thread / Social Post',
46
+ description: 'Twitter/X threads, social media discussions',
47
+ detectionKeywords: ['thread', 'tweet', '🧵', '1/', 'RT', '@', 'x.com', 'twitter.com'],
48
+ systemPromptAddition: `This source is a social media thread (likely Twitter/X). Structure the wiki pages to capture:
49
+ - The main argument condensed from the thread
50
+ - Key insights (numbered, one per point)
51
+ - Any data, links, or evidence shared
52
+ - Community reactions or counter-arguments if visible
53
+ - The author's credibility and context
54
+ Threads are informal — extract the substance while noting the conversational tone.`,
55
+ extraFrontmatterFields: ['author_handle', 'platform', 'post_date', 'engagement'],
56
+ suggestedStructure: ['Main Argument', 'Key Points', 'Evidence Shared', 'Context & Credibility'],
57
+ },
58
+ {
59
+ id: 'podcast',
60
+ name: 'Podcast / Audio Content',
61
+ description: 'Podcast episodes, audio interviews, lectures',
62
+ detectionKeywords: ['podcast', 'episode', 'interview', 'host', 'guest', 'transcript', 'listen'],
63
+ mimePatterns: ['audio/'],
64
+ systemPromptAddition: `This source is a podcast episode or audio content (likely transcribed). Structure the wiki pages to capture:
65
+ - Episode summary (who, what, why it matters)
66
+ - Key quotes from each speaker (attributed)
67
+ - Main topics discussed (as separate sections)
68
+ - Actionable advice or takeaways
69
+ - Disagreements or debates between speakers
70
+ - Resources/links mentioned
71
+ Attribute quotes to speakers. Separate opinion from fact.`,
72
+ extraFrontmatterFields: ['host', 'guests', 'podcast_name', 'episode_number', 'duration', 'air_date'],
73
+ suggestedStructure: ['Episode Overview', 'Speakers', 'Key Topics', 'Notable Quotes', 'Takeaways', 'Resources Mentioned'],
74
+ },
75
+ {
76
+ id: 'video',
77
+ name: 'Video / Lecture',
78
+ description: 'YouTube videos, lectures, presentations, tutorials',
79
+ detectionKeywords: ['video', 'youtube', 'lecture', 'presentation', 'tutorial', 'watch', 'timestamp'],
80
+ mimePatterns: ['video/'],
81
+ systemPromptAddition: `This source is a video or lecture (likely transcribed). Structure the wiki pages to capture:
82
+ - Video summary with key timestamps
83
+ - Main concepts taught or discussed
84
+ - Visual elements described (diagrams, demos, code shown)
85
+ - Step-by-step instructions if tutorial
86
+ - Speaker's key arguments
87
+ - Q&A highlights if present
88
+ Note: visual content may be lost in transcription — flag where visuals were important.`,
89
+ extraFrontmatterFields: ['creator', 'channel', 'duration', 'publish_date', 'url', 'platform'],
90
+ suggestedStructure: ['Overview', 'Key Concepts', 'Timestamps', 'Visual Notes', 'Takeaways'],
91
+ },
92
+ {
93
+ id: 'book',
94
+ name: 'Book / Long-form',
95
+ description: 'Books, book chapters, long-form essays, reports',
96
+ detectionKeywords: ['chapter', 'book', 'isbn', 'publisher', 'edition', 'foreword', 'preface'],
97
+ systemPromptAddition: `This source is a book or long-form document. Structure the wiki pages to capture:
98
+ - Book summary (thesis, scope, intended audience)
99
+ - Chapter-by-chapter key takeaways
100
+ - Core frameworks or models introduced
101
+ - Memorable examples and case studies
102
+ - Practical applications
103
+ - Author's background and perspective
104
+ - How this connects to other books/ideas in the wiki
105
+ Create separate wiki pages for major concepts introduced by the book.`,
106
+ extraFrontmatterFields: ['author', 'publisher', 'year', 'isbn', 'genre', 'pages'],
107
+ suggestedStructure: ['Book Summary', 'Core Thesis', 'Key Frameworks', 'Chapter Notes', 'Practical Applications', 'Related Works'],
108
+ },
109
+ {
110
+ id: 'notes',
111
+ name: 'Raw Notes / Meeting Notes',
112
+ description: 'Personal notes, meeting notes, brainstorms, voice memos',
113
+ detectionKeywords: ['notes', 'meeting', 'action items', 'TODO', 'decision', 'brainstorm', 'idea'],
114
+ systemPromptAddition: `This source is raw notes (meeting notes, personal notes, brainstorm). Structure the wiki pages to capture:
115
+ - Clean summary of what was discussed/noted
116
+ - Action items extracted (with owners if mentioned)
117
+ - Decisions made
118
+ - Open questions or unresolved items
119
+ - Key ideas worth developing further
120
+ - Connections to existing wiki topics
121
+ Raw notes are messy — your job is to extract structure and meaning. Link to existing wiki pages where concepts overlap.`,
122
+ extraFrontmatterFields: ['meeting_date', 'participants', 'context'],
123
+ suggestedStructure: ['Summary', 'Key Points', 'Action Items', 'Decisions', 'Open Questions', 'Related Topics'],
124
+ },
125
+ ];
126
+ /**
127
+ * Detect source type from content and metadata.
128
+ * Returns the best-matching template or null for generic.
129
+ */
130
+ export function detectSourceType(content, filename, mimeType) {
131
+ const lowerContent = content.toLowerCase().slice(0, 2000); // Only check first 2K chars
132
+ const lowerFilename = (filename ?? '').toLowerCase();
133
+ let bestMatch = null;
134
+ let bestScore = 0;
135
+ for (const template of SOURCE_TYPE_TEMPLATES) {
136
+ let score = 0;
137
+ // Check keywords in content
138
+ for (const keyword of template.detectionKeywords) {
139
+ if (lowerContent.includes(keyword.toLowerCase()))
140
+ score += 1;
141
+ }
142
+ // Check MIME type
143
+ if (mimeType && template.mimePatterns) {
144
+ for (const pattern of template.mimePatterns) {
145
+ if (mimeType.startsWith(pattern))
146
+ score += 3;
147
+ }
148
+ }
149
+ // Check filename hints
150
+ if (lowerFilename.includes('paper') || lowerFilename.includes('arxiv')) {
151
+ if (template.id === 'paper')
152
+ score += 2;
153
+ }
154
+ if (lowerFilename.includes('notes') || lowerFilename.includes('meeting')) {
155
+ if (template.id === 'notes')
156
+ score += 2;
157
+ }
158
+ if (lowerFilename.includes('transcript') || lowerFilename.includes('podcast')) {
159
+ if (template.id === 'podcast')
160
+ score += 2;
161
+ }
162
+ if (score > bestScore) {
163
+ bestScore = score;
164
+ bestMatch = template;
165
+ }
166
+ }
167
+ // Require minimum confidence (at least 2 keyword matches)
168
+ return bestScore >= 2 ? bestMatch : null;
169
+ }
170
+ /**
171
+ * Get the system prompt addition for a detected source type.
172
+ */
173
+ export function getSourceTypePrompt(template) {
174
+ if (!template)
175
+ return '';
176
+ return `\n\nSOURCE TYPE DETECTED: ${template.name}\n${template.systemPromptAddition}`;
177
+ }
178
+ //# sourceMappingURL=source-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-types.js","sourceRoot":"","sources":["../../src/templates/source-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uCAAuC;QACpD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC/E,YAAY,EAAE,CAAC,WAAW,CAAC;QAC3B,oBAAoB,EAAE;;;;;;yDAM+B;QACrD,sBAAsB,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC;QACxE,kBAAkB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,CAAC;KAC1G;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,qDAAqD;QAClE,iBAAiB,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/G,YAAY,EAAE,CAAC,iBAAiB,CAAC;QACjC,oBAAoB,EAAE;;;;;;;;yEAQ+C;QACrE,sBAAsB,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,CAAC;QACjG,kBAAkB,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC;KAClI;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,6CAA6C;QAC1D,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC;QACrF,oBAAoB,EAAE;;;;;;mFAMyD;QAC/E,sBAAsB,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC;QAChF,kBAAkB,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,CAAC;KAChG;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,8CAA8C;QAC3D,iBAAiB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;QAC/F,YAAY,EAAE,CAAC,QAAQ,CAAC;QACxB,oBAAoB,EAAE;;;;;;;0DAOgC;QACtD,sBAAsB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC;QACpG,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,CAAC;KACzH;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,oDAAoD;QACjE,iBAAiB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;QACpG,YAAY,EAAE,CAAC,QAAQ,CAAC;QACxB,oBAAoB,EAAE;;;;;;;uFAO6D;QACnF,sBAAsB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC;QAC7F,kBAAkB,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,CAAC;KAC5F;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,iDAAiD;QAC9D,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;QAC7F,oBAAoB,EAAE;;;;;;;;sEAQ4C;QAClE,sBAAsB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QACjF,kBAAkB,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,CAAC;KAClI;IACD;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE,yDAAyD;QACtE,iBAAiB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;QACjG,oBAAoB,EAAE;;;;;;;wHAO8F;QACpH,sBAAsB,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC;QACnE,kBAAkB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;KAC/G;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,QAAiB,EACjB,QAAiB;IAEjB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B;IACvF,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAErD,IAAI,SAAS,GAA8B,IAAI,CAAC;IAChD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,4BAA4B;QAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YACjD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,kBAAkB;QAClB,IAAI,QAAQ,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YACtC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAC5C,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,KAAK,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,IAAI,QAAQ,CAAC,EAAE,KAAK,OAAO;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9E,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACtB,SAAS,GAAG,KAAK,CAAC;YAClB,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAmC;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,OAAO,6BAA6B,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AACxF,CAAC"}