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.
- package/CHANGELOG.md +138 -29
- package/README.md +171 -309
- package/dist/cli/commands/ask.d.ts +3 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +63 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/commands/export.d.ts +3 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +108 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/history.d.ts +3 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +61 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/improve.d.ts.map +1 -1
- package/dist/cli/commands/improve.js +4 -3
- package/dist/cli/commands/improve.js.map +1 -1
- package/dist/cli/commands/ingest.d.ts.map +1 -1
- package/dist/cli/commands/ingest.js +5 -4
- package/dist/cli/commands/ingest.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +337 -81
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +4 -3
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +11 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/open.d.ts +3 -0
- package/dist/cli/commands/open.d.ts.map +1 -0
- package/dist/cli/commands/open.js +36 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +5 -4
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +61 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +41 -2
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +4 -3
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +27 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit-trail.d.ts +15 -0
- package/dist/core/audit-trail.d.ts.map +1 -0
- package/dist/core/audit-trail.js +43 -0
- package/dist/core/audit-trail.js.map +1 -0
- package/dist/core/claude-code.d.ts +10 -0
- package/dist/core/claude-code.d.ts.map +1 -0
- package/dist/core/claude-code.js +81 -0
- package/dist/core/claude-code.js.map +1 -0
- package/dist/core/config.d.ts +23 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/connectors.d.ts +58 -0
- package/dist/core/connectors.d.ts.map +1 -0
- package/dist/core/connectors.js +189 -0
- package/dist/core/connectors.js.map +1 -0
- package/dist/core/folder-scanner.d.ts +10 -0
- package/dist/core/folder-scanner.d.ts.map +1 -0
- package/dist/core/folder-scanner.js +84 -0
- package/dist/core/folder-scanner.js.map +1 -0
- package/dist/core/git.d.ts +137 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +520 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/history.d.ts +21 -0
- package/dist/core/history.d.ts.map +1 -0
- package/dist/core/history.js +107 -0
- package/dist/core/history.js.map +1 -0
- package/dist/core/improve.d.ts.map +1 -1
- package/dist/core/improve.js +9 -0
- package/dist/core/improve.js.map +1 -1
- package/dist/core/ingest.d.ts +1 -0
- package/dist/core/ingest.d.ts.map +1 -1
- package/dist/core/ingest.js +151 -7
- package/dist/core/ingest.js.map +1 -1
- package/dist/core/lint.d.ts.map +1 -1
- package/dist/core/lint.js +23 -4
- package/dist/core/lint.js.map +1 -1
- package/dist/core/oauth-defaults.d.ts +31 -0
- package/dist/core/oauth-defaults.d.ts.map +1 -0
- package/dist/core/oauth-defaults.js +77 -0
- package/dist/core/oauth-defaults.js.map +1 -0
- package/dist/core/observer.d.ts +94 -0
- package/dist/core/observer.d.ts.map +1 -0
- package/dist/core/observer.js +492 -0
- package/dist/core/observer.js.map +1 -0
- package/dist/core/pipeline-events.d.ts +63 -0
- package/dist/core/pipeline-events.d.ts.map +1 -0
- package/dist/core/pipeline-events.js +109 -0
- package/dist/core/pipeline-events.js.map +1 -0
- package/dist/core/query.d.ts.map +1 -1
- package/dist/core/query.js +16 -8
- package/dist/core/query.js.map +1 -1
- package/dist/core/scraper.d.ts +41 -0
- package/dist/core/scraper.d.ts.map +1 -0
- package/dist/core/scraper.js +277 -0
- package/dist/core/scraper.js.map +1 -0
- package/dist/core/sync/gdrive.d.ts +14 -0
- package/dist/core/sync/gdrive.d.ts.map +1 -0
- package/dist/core/sync/gdrive.js +205 -0
- package/dist/core/sync/gdrive.js.map +1 -0
- package/dist/core/sync/github.d.ts +20 -0
- package/dist/core/sync/github.d.ts.map +1 -0
- package/dist/core/sync/github.js +206 -0
- package/dist/core/sync/github.js.map +1 -0
- package/dist/core/sync/gmail.d.ts +15 -0
- package/dist/core/sync/gmail.d.ts.map +1 -0
- package/dist/core/sync/gmail.js +159 -0
- package/dist/core/sync/gmail.js.map +1 -0
- package/dist/core/sync/index.d.ts +47 -0
- package/dist/core/sync/index.d.ts.map +1 -0
- package/dist/core/sync/index.js +100 -0
- package/dist/core/sync/index.js.map +1 -0
- package/dist/core/sync/jira.d.ts +15 -0
- package/dist/core/sync/jira.d.ts.map +1 -0
- package/dist/core/sync/jira.js +176 -0
- package/dist/core/sync/jira.js.map +1 -0
- package/dist/core/sync/linear.d.ts +15 -0
- package/dist/core/sync/linear.d.ts.map +1 -0
- package/dist/core/sync/linear.js +111 -0
- package/dist/core/sync/linear.js.map +1 -0
- package/dist/core/sync/notion.d.ts +14 -0
- package/dist/core/sync/notion.d.ts.map +1 -0
- package/dist/core/sync/notion.js +168 -0
- package/dist/core/sync/notion.js.map +1 -0
- package/dist/core/sync/rss.d.ts +20 -0
- package/dist/core/sync/rss.d.ts.map +1 -0
- package/dist/core/sync/rss.js +165 -0
- package/dist/core/sync/rss.js.map +1 -0
- package/dist/core/sync/scheduler.d.ts +31 -0
- package/dist/core/sync/scheduler.d.ts.map +1 -0
- package/dist/core/sync/scheduler.js +129 -0
- package/dist/core/sync/scheduler.js.map +1 -0
- package/dist/core/sync/slack.d.ts +16 -0
- package/dist/core/sync/slack.d.ts.map +1 -0
- package/dist/core/sync/slack.js +173 -0
- package/dist/core/sync/slack.js.map +1 -0
- package/dist/core/vault.d.ts +22 -0
- package/dist/core/vault.d.ts.map +1 -1
- package/dist/core/vault.js +65 -0
- package/dist/core/vault.js.map +1 -1
- package/dist/core/webhooks.d.ts +13 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +206 -0
- package/dist/core/webhooks.js.map +1 -0
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.d.ts +10 -0
- package/dist/mcp-entry.d.ts.map +1 -0
- package/dist/mcp-entry.js +21 -0
- package/dist/mcp-entry.js.map +1 -0
- package/dist/mcp-server.d.ts +20 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +483 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-tools-extended.d.ts +15 -0
- package/dist/mcp-tools-extended.d.ts.map +1 -0
- package/dist/mcp-tools-extended.js +277 -0
- package/dist/mcp-tools-extended.js.map +1 -0
- package/dist/processors/audio.d.ts.map +1 -1
- package/dist/processors/audio.js +42 -4
- package/dist/processors/audio.js.map +1 -1
- package/dist/processors/csv.d.ts +18 -0
- package/dist/processors/csv.d.ts.map +1 -0
- package/dist/processors/csv.js +230 -0
- package/dist/processors/csv.js.map +1 -0
- package/dist/processors/image.d.ts.map +1 -1
- package/dist/processors/image.js +55 -27
- package/dist/processors/image.js.map +1 -1
- package/dist/processors/pdf.d.ts.map +1 -1
- package/dist/processors/pdf.js +6 -3
- package/dist/processors/pdf.js.map +1 -1
- package/dist/processors/pptx.d.ts +3 -1
- package/dist/processors/pptx.d.ts.map +1 -1
- package/dist/processors/pptx.js +236 -95
- package/dist/processors/pptx.js.map +1 -1
- package/dist/processors/url.js +4 -1
- package/dist/processors/url.js.map +1 -1
- package/dist/processors/xlsx.d.ts +2 -0
- package/dist/processors/xlsx.d.ts.map +1 -1
- package/dist/processors/xlsx.js +182 -46
- package/dist/processors/xlsx.js.map +1 -1
- package/dist/providers/claude.d.ts +1 -0
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +5 -3
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/index.d.ts +17 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +144 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts +1 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +5 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/types.d.ts +18 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/templates/config-yaml.d.ts.map +1 -1
- package/dist/templates/config-yaml.js +12 -1
- package/dist/templates/config-yaml.js.map +1 -1
- package/dist/templates/source-types.d.ts +33 -0
- package/dist/templates/source-types.d.ts.map +1 -0
- package/dist/templates/source-types.js +178 -0
- package/dist/templates/source-types.js.map +1 -0
- package/dist/web/public/index.html +9836 -742
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +2823 -43
- package/dist/web/server.js.map +1 -1
- package/package.json +10 -4
- package/scripts/install.sh +54 -0
- package/src/web/public/index.html +9836 -742
- package/templates/mcp-config.json +9 -0
- package/templates/source-types/article.md +21 -0
- package/templates/source-types/book.md +21 -0
- package/templates/source-types/paper.md +23 -0
- package/templates/source-types/podcast.md +21 -0
- package/templates/source-types/raw-notes.md +17 -0
- package/templates/source-types/tweet-thread.md +19 -0
- package/templates/source-types/video.md +21 -0
- package/dist/web/public/public/index.html +0 -946
package/dist/providers/openai.js
CHANGED
|
@@ -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:
|
|
10
|
+
apiKey: this.resolvedApiKey,
|
|
9
11
|
});
|
|
10
12
|
this.defaultModel = model ?? 'gpt-4o';
|
|
11
13
|
}
|
|
12
14
|
async chat(messages, options) {
|
|
13
|
-
if (!
|
|
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 !!
|
|
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":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAC;IACR,MAAM,CAAS;IACf,YAAY,CAAS;
|
|
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,
|
|
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
|
|
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"}
|