wikimem 0.1.7 → 0.2.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/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +8 -1
- 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 -0
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +3 -0
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +19 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/core/index-manager.d.ts.map +1 -1
- package/dist/core/index-manager.js +2 -0
- package/dist/core/index-manager.js.map +1 -1
- package/dist/core/ingest.d.ts.map +1 -1
- package/dist/core/ingest.js +76 -7
- package/dist/core/ingest.js.map +1 -1
- package/dist/core/obsidian.d.ts +1 -1
- package/dist/core/obsidian.js +1 -1
- package/dist/core/scrape.js +9 -2
- package/dist/core/scrape.js.map +1 -1
- package/dist/index.js +46 -1
- package/dist/index.js.map +1 -1
- package/dist/processors/audio.js +1 -1
- package/dist/processors/video.js +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +46 -21
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/embeddings.d.ts +1 -1
- package/dist/providers/embeddings.js +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +29 -13
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +42 -17
- package/dist/providers/openai.js.map +1 -1
- package/dist/web/public/index.html +82 -8
- package/dist/web/public/public/index.html +81 -7
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +15 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +2 -2
- package/src/web/public/index.html +81 -7
package/dist/providers/claude.js
CHANGED
|
@@ -10,32 +10,57 @@ export class ClaudeProvider {
|
|
|
10
10
|
this.defaultModel = model ?? 'claude-sonnet-4-20250514';
|
|
11
11
|
}
|
|
12
12
|
async chat(messages, options) {
|
|
13
|
+
if (!process.env['ANTHROPIC_API_KEY'] && !this.client.apiKey) {
|
|
14
|
+
throw new Error('Anthropic API key not found.\n' +
|
|
15
|
+
'Set it via: export ANTHROPIC_API_KEY=sk-ant-...\n' +
|
|
16
|
+
'Or add to config.yaml: api_key: sk-ant-...\n' +
|
|
17
|
+
'Get a key at: https://console.anthropic.com/settings/keys');
|
|
18
|
+
}
|
|
13
19
|
const systemMessages = messages.filter((m) => m.role === 'system');
|
|
14
20
|
const nonSystemMessages = messages.filter((m) => m.role !== 'system');
|
|
15
21
|
const systemPrompt = options?.systemPrompt
|
|
16
22
|
?? systemMessages.map((m) => m.content).join('\n\n')
|
|
17
23
|
?? undefined;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
try {
|
|
25
|
+
const response = await this.client.messages.create({
|
|
26
|
+
model: options?.model ?? this.defaultModel,
|
|
27
|
+
max_tokens: options?.maxTokens ?? 4096,
|
|
28
|
+
...(systemPrompt ? { system: systemPrompt } : {}),
|
|
29
|
+
messages: nonSystemMessages.map((m) => ({
|
|
30
|
+
role: m.role,
|
|
31
|
+
content: m.content,
|
|
32
|
+
})),
|
|
33
|
+
});
|
|
34
|
+
const content = response.content
|
|
35
|
+
.filter((block) => block.type === 'text')
|
|
36
|
+
.map((block) => block.text)
|
|
37
|
+
.join('');
|
|
38
|
+
return {
|
|
39
|
+
content,
|
|
40
|
+
model: response.model,
|
|
41
|
+
tokensUsed: {
|
|
42
|
+
input: response.usage.input_tokens,
|
|
43
|
+
output: response.usage.output_tokens,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof Error) {
|
|
49
|
+
if (error.message.includes('401') || error.message.includes('authentication')) {
|
|
50
|
+
throw new Error('Anthropic API key is invalid or expired.\n' +
|
|
51
|
+
'Check your key at: https://console.anthropic.com/settings/keys');
|
|
52
|
+
}
|
|
53
|
+
if (error.message.includes('429')) {
|
|
54
|
+
throw new Error('Anthropic rate limit exceeded. Wait a moment and try again.\n' +
|
|
55
|
+
'Check your usage at: https://console.anthropic.com');
|
|
56
|
+
}
|
|
57
|
+
if (error.message.includes('ENOTFOUND') || error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed')) {
|
|
58
|
+
throw new Error('Network error: could not reach Anthropic API.\n' +
|
|
59
|
+
'Check your internet connection and try again.');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
39
64
|
}
|
|
40
65
|
async isAvailable() {
|
|
41
66
|
return !!process.env['ANTHROPIC_API_KEY'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAC;IACR,MAAM,CAAY;IAClB,YAAY,CAAS;IAE7B,YAAY,KAAc,EAAE,MAAe;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;SACnD,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,0BAA0B,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAoB;QACrD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAEtE,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY;eACrC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;eACjD,SAAS,CAAC;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAK1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAK1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,WAAW,CAqBb"}
|
package/dist/providers/index.js
CHANGED
|
@@ -13,7 +13,12 @@ export function createProvider(name, options) {
|
|
|
13
13
|
case 'local':
|
|
14
14
|
return new OllamaProvider(options?.model, options?.baseUrl);
|
|
15
15
|
default:
|
|
16
|
-
throw new Error(`Unknown provider: ${name}
|
|
16
|
+
throw new Error(`Unknown provider: "${name}".\n` +
|
|
17
|
+
'Supported providers:\n' +
|
|
18
|
+
' claude — Anthropic (requires ANTHROPIC_API_KEY)\n' +
|
|
19
|
+
' openai — OpenAI (requires OPENAI_API_KEY)\n' +
|
|
20
|
+
' ollama — Local models (requires Ollama running)\n' +
|
|
21
|
+
'Set in config.yaml: provider: claude');
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,OAA+D;IAE/D,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW;YACd,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D;YACE,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,OAA+D;IAE/D,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,QAAQ,CAAC;QACd,KAAK,WAAW;YACd,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D;YACE,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,MAAM;gBAChC,wBAAwB;gBACxB,uDAAuD;gBACvD,iDAAiD;gBACjD,uDAAuD;gBACvD,uCAAuC,CACxC,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,qBAAa,cAAe,YAAW,WAAW;IAChD,IAAI,SAAY;IAChB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKtC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,qBAAa,cAAe,YAAW,WAAW;IAChD,IAAI,SAAY;IAChB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAKtC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA0DxE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
|
package/dist/providers/ollama.js
CHANGED
|
@@ -10,20 +10,36 @@ export class OllamaProvider {
|
|
|
10
10
|
const allMessages = options?.systemPrompt
|
|
11
11
|
? [{ role: 'system', content: options.systemPrompt }, ...messages.filter((m) => m.role !== 'system')]
|
|
12
12
|
: messages;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
let response;
|
|
14
|
+
try {
|
|
15
|
+
response = await fetch(`${this.baseUrl}/api/chat`, {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
headers: { 'Content-Type': 'application/json' },
|
|
18
|
+
body: JSON.stringify({
|
|
19
|
+
model: options?.model ?? this.defaultModel,
|
|
20
|
+
messages: allMessages.map((m) => ({
|
|
21
|
+
role: m.role,
|
|
22
|
+
content: m.content,
|
|
23
|
+
})),
|
|
24
|
+
stream: false,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (error instanceof Error && (error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed'))) {
|
|
30
|
+
throw new Error(`Could not connect to Ollama at ${this.baseUrl}.\n` +
|
|
31
|
+
'Make sure Ollama is running: ollama serve\n' +
|
|
32
|
+
'Install Ollama: https://ollama.com/download');
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
25
36
|
if (!response.ok) {
|
|
26
|
-
|
|
37
|
+
const errorText = await response.text().catch(() => '');
|
|
38
|
+
if (response.status === 404 || errorText.includes('not found')) {
|
|
39
|
+
throw new Error(`Model "${options?.model ?? this.defaultModel}" not found in Ollama.\n` +
|
|
40
|
+
`Pull it first: ollama pull ${options?.model ?? this.defaultModel}`);
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Ollama API error: ${response.status} ${response.statusText}. ${errorText}`);
|
|
27
43
|
}
|
|
28
44
|
const data = (await response.json());
|
|
29
45
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAC;IACR,OAAO,CAAS;IAChB,YAAY,CAAS;IAE7B,YAAY,KAAc,EAAE,OAAgB;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,wBAAwB,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,UAAU,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAoB;QACrD,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY;YACvC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9G,CAAC,CAAC,QAAQ,CAAC;QAEb,
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/providers/ollama.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,qBAAa,cAAe,YAAW,WAAW;IAChD,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOrC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,qBAAa,cAAe,YAAW,WAAW;IAChD,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOrC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA2DxE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAGtC"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -10,26 +10,51 @@ export class OpenAIProvider {
|
|
|
10
10
|
this.defaultModel = model ?? 'gpt-4o';
|
|
11
11
|
}
|
|
12
12
|
async chat(messages, options) {
|
|
13
|
+
if (!process.env['OPENAI_API_KEY'] && !this.client.apiKey) {
|
|
14
|
+
throw new Error('OpenAI API key not found.\n' +
|
|
15
|
+
'Set it via: export OPENAI_API_KEY=sk-...\n' +
|
|
16
|
+
'Or add to config.yaml: api_key: sk-...\n' +
|
|
17
|
+
'Get a key at: https://platform.openai.com/api-keys');
|
|
18
|
+
}
|
|
13
19
|
const allMessages = options?.systemPrompt
|
|
14
20
|
? [{ role: 'system', content: options.systemPrompt }, ...messages.filter((m) => m.role !== 'system')]
|
|
15
21
|
: messages;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
try {
|
|
23
|
+
const response = await this.client.chat.completions.create({
|
|
24
|
+
model: options?.model ?? this.defaultModel,
|
|
25
|
+
max_tokens: options?.maxTokens ?? 4096,
|
|
26
|
+
messages: allMessages.map((m) => ({
|
|
27
|
+
role: m.role,
|
|
28
|
+
content: m.content,
|
|
29
|
+
})),
|
|
30
|
+
});
|
|
31
|
+
const content = response.choices[0]?.message?.content ?? '';
|
|
32
|
+
return {
|
|
33
|
+
content,
|
|
34
|
+
model: response.model,
|
|
35
|
+
tokensUsed: {
|
|
36
|
+
input: response.usage?.prompt_tokens ?? 0,
|
|
37
|
+
output: response.usage?.completion_tokens ?? 0,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof Error) {
|
|
43
|
+
if (error.message.includes('401') || error.message.includes('Incorrect API key')) {
|
|
44
|
+
throw new Error('OpenAI API key is invalid or expired.\n' +
|
|
45
|
+
'Check your key at: https://platform.openai.com/api-keys');
|
|
46
|
+
}
|
|
47
|
+
if (error.message.includes('429')) {
|
|
48
|
+
throw new Error('OpenAI rate limit exceeded. Wait a moment and try again.\n' +
|
|
49
|
+
'Check your usage at: https://platform.openai.com/usage');
|
|
50
|
+
}
|
|
51
|
+
if (error.message.includes('ENOTFOUND') || error.message.includes('ECONNREFUSED') || error.message.includes('fetch failed')) {
|
|
52
|
+
throw new Error('Network error: could not reach OpenAI API.\n' +
|
|
53
|
+
'Check your internet connection and try again.');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
33
58
|
}
|
|
34
59
|
async isAvailable() {
|
|
35
60
|
return !!process.env['OPENAI_API_KEY'];
|
|
@@ -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;IAE7B,YAAY,KAAc,EAAE,MAAe;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;SAChD,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,QAAQ,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE,OAAoB;QACrD,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY;YACvC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YAC9G,CAAC,CAAC,QAAQ,CAAC;QAEb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>
|
|
6
|
+
<title>wikimem — Mission Control</title>
|
|
7
7
|
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Instrument+Serif&display=swap" rel="stylesheet">
|
|
8
8
|
<script src="https://d3js.org/d3.v7.min.js"></script>
|
|
9
|
+
<!-- Markdown rendering is built-in, no external deps needed -->
|
|
9
10
|
<style>
|
|
10
11
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
11
12
|
|
|
@@ -424,16 +425,35 @@
|
|
|
424
425
|
.modal-body {
|
|
425
426
|
font-size: 14px;
|
|
426
427
|
line-height: 1.7;
|
|
427
|
-
|
|
428
|
-
color: var(--text-dim);
|
|
428
|
+
color: var(--text);
|
|
429
429
|
}
|
|
430
|
+
.modal-body h1 { font-family: 'Instrument Serif', serif; font-size: 24px; margin: 24px 0 12px; color: var(--text); border-bottom: 1px solid var(--border); padding-bottom: 8px; }
|
|
431
|
+
.modal-body h2 { font-family: 'Instrument Serif', serif; font-size: 20px; margin: 20px 0 10px; color: var(--text); }
|
|
432
|
+
.modal-body h3 { font-size: 16px; margin: 16px 0 8px; color: var(--text); }
|
|
433
|
+
.modal-body p { margin: 8px 0; color: var(--text-dim); }
|
|
434
|
+
.modal-body ul, .modal-body ol { margin: 8px 0 8px 24px; color: var(--text-dim); }
|
|
435
|
+
.modal-body li { margin: 4px 0; }
|
|
436
|
+
.modal-body code { background: var(--bg); padding: 2px 6px; border-radius: 4px; font-size: 13px; color: var(--purple-light); }
|
|
437
|
+
.modal-body pre { background: var(--bg); padding: 16px; border-radius: 8px; overflow-x: auto; margin: 12px 0; }
|
|
438
|
+
.modal-body pre code { padding: 0; background: none; }
|
|
439
|
+
.modal-body blockquote { border-left: 3px solid var(--purple); padding: 8px 16px; margin: 12px 0; background: var(--purple-glow); border-radius: 0 8px 8px 0; }
|
|
440
|
+
.modal-body a { color: var(--purple-light); text-decoration: none; }
|
|
441
|
+
.modal-body a:hover { text-decoration: underline; }
|
|
442
|
+
.modal-body strong { color: var(--text); }
|
|
443
|
+
.wikilink { color: var(--purple-light); cursor: pointer; border-bottom: 1px dashed var(--purple-light); }
|
|
444
|
+
.wikilink:hover { color: #a78bfa; }
|
|
445
|
+
.tag { background: var(--purple-glow); color: var(--purple-light); padding: 2px 8px; border-radius: 12px; font-size: 11px; }
|
|
446
|
+
.type-badge { background: var(--bg); color: var(--amber); padding: 2px 8px; border-radius: 12px; font-size: 11px; border: 1px solid var(--border); }
|
|
447
|
+
.source-badge { color: var(--text-muted); font-size: 11px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; }
|
|
430
448
|
|
|
431
449
|
.modal-meta {
|
|
432
450
|
display: flex;
|
|
433
|
-
|
|
451
|
+
flex-wrap: wrap;
|
|
452
|
+
gap: 8px;
|
|
434
453
|
margin-bottom: 16px;
|
|
435
454
|
font-size: 12px;
|
|
436
455
|
color: var(--text-muted);
|
|
456
|
+
align-items: center;
|
|
437
457
|
}
|
|
438
458
|
|
|
439
459
|
/* Loading spinner */
|
|
@@ -460,7 +480,7 @@
|
|
|
460
480
|
</head>
|
|
461
481
|
<body>
|
|
462
482
|
<div class="header">
|
|
463
|
-
<h1>
|
|
483
|
+
<h1>wiki<span>mem</span></h1>
|
|
464
484
|
<div class="header-status">
|
|
465
485
|
<div class="status-dot"></div>
|
|
466
486
|
<span id="header-page-count">Loading...</span>
|
|
@@ -647,15 +667,69 @@
|
|
|
647
667
|
|
|
648
668
|
function esc(s) { return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); }
|
|
649
669
|
|
|
650
|
-
// ──
|
|
670
|
+
// ── Simple Markdown Renderer (no external deps) ──
|
|
671
|
+
function renderMarkdown(md) {
|
|
672
|
+
let html = esc(md);
|
|
673
|
+
// Code blocks (fenced)
|
|
674
|
+
html = html.replace(/```(\w*)\n([\s\S]*?)```/g, '<pre><code class="lang-$1">$2</code></pre>');
|
|
675
|
+
// Headings
|
|
676
|
+
html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');
|
|
677
|
+
html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');
|
|
678
|
+
html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');
|
|
679
|
+
// Bold + italic
|
|
680
|
+
html = html.replace(/\*\*\*(.+?)\*\*\*/g, '<strong><em>$1</em></strong>');
|
|
681
|
+
html = html.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
|
|
682
|
+
html = html.replace(/\*(.+?)\*/g, '<em>$1</em>');
|
|
683
|
+
// Inline code
|
|
684
|
+
html = html.replace(/`([^`]+)`/g, '<code>$1</code>');
|
|
685
|
+
// Blockquotes
|
|
686
|
+
html = html.replace(/^> (.+)$/gm, '<blockquote>$1</blockquote>');
|
|
687
|
+
// Unordered lists
|
|
688
|
+
html = html.replace(/^- (.+)$/gm, '<li>$1</li>');
|
|
689
|
+
html = html.replace(/(<li>.*<\/li>\n?)+/g, '<ul>$&</ul>');
|
|
690
|
+
// Ordered lists
|
|
691
|
+
html = html.replace(/^\d+\. (.+)$/gm, '<li>$1</li>');
|
|
692
|
+
// Links
|
|
693
|
+
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
|
|
694
|
+
// Horizontal rules
|
|
695
|
+
html = html.replace(/^---$/gm, '<hr>');
|
|
696
|
+
// Paragraphs (double newline)
|
|
697
|
+
html = html.replace(/\n\n/g, '</p><p>');
|
|
698
|
+
html = '<p>' + html + '</p>';
|
|
699
|
+
// Clean up empty paragraphs
|
|
700
|
+
html = html.replace(/<p>\s*<\/p>/g, '');
|
|
701
|
+
html = html.replace(/<p>\s*(<h[123]>)/g, '$1');
|
|
702
|
+
html = html.replace(/(<\/h[123]>)\s*<\/p>/g, '$1');
|
|
703
|
+
html = html.replace(/<p>\s*(<ul>)/g, '$1');
|
|
704
|
+
html = html.replace(/(<\/ul>)\s*<\/p>/g, '$1');
|
|
705
|
+
html = html.replace(/<p>\s*(<blockquote>)/g, '$1');
|
|
706
|
+
html = html.replace(/<p>\s*(<pre>)/g, '$1');
|
|
707
|
+
html = html.replace(/<p>\s*(<hr>)/g, '$1');
|
|
708
|
+
return html;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
function renderWikilinks(html) {
|
|
712
|
+
return html.replace(/\[\[([^\]]+)\]\]/g, (_, name) => {
|
|
713
|
+
return `<a href="#" class="wikilink" onclick="event.preventDefault(); openPage('${esc(name)}')">${esc(name)}</a>`;
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
|
|
651
717
|
async function openPage(title) {
|
|
652
718
|
const page = await api('/api/pages/' + encodeURIComponent(title));
|
|
653
719
|
document.getElementById('modal-title').textContent = page.title;
|
|
720
|
+
|
|
721
|
+
// Show frontmatter as badges
|
|
722
|
+
const tags = (page.frontmatter.tags || []).map(t => `<span class="tag">${esc(t)}</span>`).join('');
|
|
654
723
|
document.getElementById('modal-meta').innerHTML =
|
|
655
724
|
`<span>${page.wordCount} words</span>` +
|
|
656
725
|
`<span>${page.wikilinks.length} links</span>` +
|
|
657
|
-
(page.frontmatter.
|
|
658
|
-
|
|
726
|
+
(page.frontmatter.type ? `<span class="type-badge">${page.frontmatter.type}</span>` : '') +
|
|
727
|
+
(page.frontmatter.created ? `<span>${page.frontmatter.created}</span>` : '') +
|
|
728
|
+
tags;
|
|
729
|
+
|
|
730
|
+
// Render markdown + wikilinks
|
|
731
|
+
const rendered = renderMarkdown(page.content);
|
|
732
|
+
document.getElementById('modal-body').innerHTML = renderWikilinks(rendered);
|
|
659
733
|
document.getElementById('page-modal').classList.add('visible');
|
|
660
734
|
}
|
|
661
735
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
<title>wikimem — Mission Control</title>
|
|
7
7
|
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Instrument+Serif&display=swap" rel="stylesheet">
|
|
8
8
|
<script src="https://d3js.org/d3.v7.min.js"></script>
|
|
9
|
+
<!-- Markdown rendering is built-in, no external deps needed -->
|
|
9
10
|
<style>
|
|
10
11
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
11
12
|
|
|
@@ -424,16 +425,35 @@
|
|
|
424
425
|
.modal-body {
|
|
425
426
|
font-size: 14px;
|
|
426
427
|
line-height: 1.7;
|
|
427
|
-
|
|
428
|
-
color: var(--text-dim);
|
|
428
|
+
color: var(--text);
|
|
429
429
|
}
|
|
430
|
+
.modal-body h1 { font-family: 'Instrument Serif', serif; font-size: 24px; margin: 24px 0 12px; color: var(--text); border-bottom: 1px solid var(--border); padding-bottom: 8px; }
|
|
431
|
+
.modal-body h2 { font-family: 'Instrument Serif', serif; font-size: 20px; margin: 20px 0 10px; color: var(--text); }
|
|
432
|
+
.modal-body h3 { font-size: 16px; margin: 16px 0 8px; color: var(--text); }
|
|
433
|
+
.modal-body p { margin: 8px 0; color: var(--text-dim); }
|
|
434
|
+
.modal-body ul, .modal-body ol { margin: 8px 0 8px 24px; color: var(--text-dim); }
|
|
435
|
+
.modal-body li { margin: 4px 0; }
|
|
436
|
+
.modal-body code { background: var(--bg); padding: 2px 6px; border-radius: 4px; font-size: 13px; color: var(--purple-light); }
|
|
437
|
+
.modal-body pre { background: var(--bg); padding: 16px; border-radius: 8px; overflow-x: auto; margin: 12px 0; }
|
|
438
|
+
.modal-body pre code { padding: 0; background: none; }
|
|
439
|
+
.modal-body blockquote { border-left: 3px solid var(--purple); padding: 8px 16px; margin: 12px 0; background: var(--purple-glow); border-radius: 0 8px 8px 0; }
|
|
440
|
+
.modal-body a { color: var(--purple-light); text-decoration: none; }
|
|
441
|
+
.modal-body a:hover { text-decoration: underline; }
|
|
442
|
+
.modal-body strong { color: var(--text); }
|
|
443
|
+
.wikilink { color: var(--purple-light); cursor: pointer; border-bottom: 1px dashed var(--purple-light); }
|
|
444
|
+
.wikilink:hover { color: #a78bfa; }
|
|
445
|
+
.tag { background: var(--purple-glow); color: var(--purple-light); padding: 2px 8px; border-radius: 12px; font-size: 11px; }
|
|
446
|
+
.type-badge { background: var(--bg); color: var(--amber); padding: 2px 8px; border-radius: 12px; font-size: 11px; border: 1px solid var(--border); }
|
|
447
|
+
.source-badge { color: var(--text-muted); font-size: 11px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; }
|
|
430
448
|
|
|
431
449
|
.modal-meta {
|
|
432
450
|
display: flex;
|
|
433
|
-
|
|
451
|
+
flex-wrap: wrap;
|
|
452
|
+
gap: 8px;
|
|
434
453
|
margin-bottom: 16px;
|
|
435
454
|
font-size: 12px;
|
|
436
455
|
color: var(--text-muted);
|
|
456
|
+
align-items: center;
|
|
437
457
|
}
|
|
438
458
|
|
|
439
459
|
/* Loading spinner */
|
|
@@ -460,7 +480,7 @@
|
|
|
460
480
|
</head>
|
|
461
481
|
<body>
|
|
462
482
|
<div class="header">
|
|
463
|
-
<h1>
|
|
483
|
+
<h1>wiki<span>mem</span></h1>
|
|
464
484
|
<div class="header-status">
|
|
465
485
|
<div class="status-dot"></div>
|
|
466
486
|
<span id="header-page-count">Loading...</span>
|
|
@@ -647,15 +667,69 @@
|
|
|
647
667
|
|
|
648
668
|
function esc(s) { return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); }
|
|
649
669
|
|
|
650
|
-
// ──
|
|
670
|
+
// ── Simple Markdown Renderer (no external deps) ──
|
|
671
|
+
function renderMarkdown(md) {
|
|
672
|
+
let html = esc(md);
|
|
673
|
+
// Code blocks (fenced)
|
|
674
|
+
html = html.replace(/```(\w*)\n([\s\S]*?)```/g, '<pre><code class="lang-$1">$2</code></pre>');
|
|
675
|
+
// Headings
|
|
676
|
+
html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');
|
|
677
|
+
html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');
|
|
678
|
+
html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');
|
|
679
|
+
// Bold + italic
|
|
680
|
+
html = html.replace(/\*\*\*(.+?)\*\*\*/g, '<strong><em>$1</em></strong>');
|
|
681
|
+
html = html.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
|
|
682
|
+
html = html.replace(/\*(.+?)\*/g, '<em>$1</em>');
|
|
683
|
+
// Inline code
|
|
684
|
+
html = html.replace(/`([^`]+)`/g, '<code>$1</code>');
|
|
685
|
+
// Blockquotes
|
|
686
|
+
html = html.replace(/^> (.+)$/gm, '<blockquote>$1</blockquote>');
|
|
687
|
+
// Unordered lists
|
|
688
|
+
html = html.replace(/^- (.+)$/gm, '<li>$1</li>');
|
|
689
|
+
html = html.replace(/(<li>.*<\/li>\n?)+/g, '<ul>$&</ul>');
|
|
690
|
+
// Ordered lists
|
|
691
|
+
html = html.replace(/^\d+\. (.+)$/gm, '<li>$1</li>');
|
|
692
|
+
// Links
|
|
693
|
+
html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank">$1</a>');
|
|
694
|
+
// Horizontal rules
|
|
695
|
+
html = html.replace(/^---$/gm, '<hr>');
|
|
696
|
+
// Paragraphs (double newline)
|
|
697
|
+
html = html.replace(/\n\n/g, '</p><p>');
|
|
698
|
+
html = '<p>' + html + '</p>';
|
|
699
|
+
// Clean up empty paragraphs
|
|
700
|
+
html = html.replace(/<p>\s*<\/p>/g, '');
|
|
701
|
+
html = html.replace(/<p>\s*(<h[123]>)/g, '$1');
|
|
702
|
+
html = html.replace(/(<\/h[123]>)\s*<\/p>/g, '$1');
|
|
703
|
+
html = html.replace(/<p>\s*(<ul>)/g, '$1');
|
|
704
|
+
html = html.replace(/(<\/ul>)\s*<\/p>/g, '$1');
|
|
705
|
+
html = html.replace(/<p>\s*(<blockquote>)/g, '$1');
|
|
706
|
+
html = html.replace(/<p>\s*(<pre>)/g, '$1');
|
|
707
|
+
html = html.replace(/<p>\s*(<hr>)/g, '$1');
|
|
708
|
+
return html;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
function renderWikilinks(html) {
|
|
712
|
+
return html.replace(/\[\[([^\]]+)\]\]/g, (_, name) => {
|
|
713
|
+
return `<a href="#" class="wikilink" onclick="event.preventDefault(); openPage('${esc(name)}')">${esc(name)}</a>`;
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
|
|
651
717
|
async function openPage(title) {
|
|
652
718
|
const page = await api('/api/pages/' + encodeURIComponent(title));
|
|
653
719
|
document.getElementById('modal-title').textContent = page.title;
|
|
720
|
+
|
|
721
|
+
// Show frontmatter as badges
|
|
722
|
+
const tags = (page.frontmatter.tags || []).map(t => `<span class="tag">${esc(t)}</span>`).join('');
|
|
654
723
|
document.getElementById('modal-meta').innerHTML =
|
|
655
724
|
`<span>${page.wordCount} words</span>` +
|
|
656
725
|
`<span>${page.wikilinks.length} links</span>` +
|
|
657
|
-
(page.frontmatter.
|
|
658
|
-
|
|
726
|
+
(page.frontmatter.type ? `<span class="type-badge">${page.frontmatter.type}</span>` : '') +
|
|
727
|
+
(page.frontmatter.created ? `<span>${page.frontmatter.created}</span>` : '') +
|
|
728
|
+
tags;
|
|
729
|
+
|
|
730
|
+
// Render markdown + wikilinks
|
|
731
|
+
const rendered = renderMarkdown(page.content);
|
|
732
|
+
document.getElementById('modal-body').innerHTML = renderWikilinks(rendered);
|
|
659
733
|
document.getElementById('page-modal').classList.add('visible');
|
|
660
734
|
}
|
|
661
735
|
|
package/dist/web/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AA2GA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"AA2GA,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiIlE"}
|
package/dist/web/server.js
CHANGED
|
@@ -107,7 +107,21 @@ export function createServer(vaultRoot, port) {
|
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
109
|
const pages = listWikiPages(config.wikiDir);
|
|
110
|
-
|
|
110
|
+
// Match by slug OR by frontmatter title (case-insensitive)
|
|
111
|
+
const titleLower = title.toLowerCase();
|
|
112
|
+
const slugified = titleLower.replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
|
|
113
|
+
const match = pages.find((p) => {
|
|
114
|
+
const fileSlug = basename(p, '.md');
|
|
115
|
+
if (fileSlug === title || fileSlug === slugified)
|
|
116
|
+
return true;
|
|
117
|
+
try {
|
|
118
|
+
const page = readWikiPage(p);
|
|
119
|
+
return page.title.toLowerCase() === titleLower;
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
111
125
|
if (!match) {
|
|
112
126
|
res.status(404).json({ error: 'Page not found' });
|
|
113
127
|
return;
|
package/dist/web/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
|