wikimem 0.3.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +246 -79
- 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 +78 -5
- package/dist/core/ingest.js.map +1 -1
- package/dist/core/observer.d.ts +71 -0
- package/dist/core/observer.d.ts.map +1 -0
- package/dist/core/observer.js +350 -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/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 +15 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +390 -0
- package/dist/mcp-server.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/pdf.d.ts.map +1 -1
- package/dist/processors/pdf.js +2 -3
- package/dist/processors/pdf.js.map +1 -1
- package/dist/processors/url.js +4 -1
- package/dist/processors/url.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/web/public/index.html +8157 -745
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +2101 -29
- package/dist/web/server.js.map +1 -1
- package/package.json +7 -4
- package/scripts/install.sh +54 -0
- package/src/web/public/index.html +8157 -745
- package/templates/mcp-config.json +9 -0
- package/dist/web/public/public/index.html +0 -946
|
@@ -1,8 +1,46 @@
|
|
|
1
|
-
import { resolve } from 'node:path';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
1
|
+
import { resolve, join } from 'node:path';
|
|
2
|
+
import { existsSync, writeFileSync, readFileSync } from 'node:fs';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { getVaultConfig } from '../../core/vault.js';
|
|
5
5
|
import { createServer } from '../../web/server.js';
|
|
6
|
+
const REQUIRED_GITIGNORE_ENTRIES = ['raw/', 'config.yaml'];
|
|
7
|
+
const GITIGNORE_PRIVACY_BLOCK = `
|
|
8
|
+
# wikimem — safe to commit: wiki/ and AGENTS.md only
|
|
9
|
+
raw/
|
|
10
|
+
config.yaml
|
|
11
|
+
*.pdf
|
|
12
|
+
*.docx
|
|
13
|
+
*.xlsx
|
|
14
|
+
*.pptx
|
|
15
|
+
*.mp3
|
|
16
|
+
*.mp4
|
|
17
|
+
*.mov
|
|
18
|
+
*.wav
|
|
19
|
+
*.jpg
|
|
20
|
+
*.jpeg
|
|
21
|
+
*.png
|
|
22
|
+
*.gif
|
|
23
|
+
*.zip
|
|
24
|
+
.env
|
|
25
|
+
.env.*
|
|
26
|
+
.wikimem-cache/
|
|
27
|
+
.wikimem/
|
|
28
|
+
`;
|
|
29
|
+
function ensureGitignore(vaultRoot) {
|
|
30
|
+
const gitignorePath = join(vaultRoot, '.gitignore');
|
|
31
|
+
if (!existsSync(gitignorePath)) {
|
|
32
|
+
writeFileSync(gitignorePath, GITIGNORE_PRIVACY_BLOCK.trimStart(), 'utf-8');
|
|
33
|
+
console.log(chalk.yellow('⚠ Created .gitignore to protect raw/ from accidental commits.'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const existing = readFileSync(gitignorePath, 'utf-8');
|
|
37
|
+
const missing = REQUIRED_GITIGNORE_ENTRIES.filter((entry) => !existing.includes(entry));
|
|
38
|
+
if (missing.length > 0) {
|
|
39
|
+
const additions = missing.map((e) => e).join('\n');
|
|
40
|
+
writeFileSync(gitignorePath, `${existing}\n# Added by wikimem serve\n${additions}\n`, 'utf-8');
|
|
41
|
+
console.log(chalk.yellow(`⚠ Added missing .gitignore entries to protect private data: ${missing.join(', ')}`));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
6
44
|
export function registerServeCommand(program) {
|
|
7
45
|
program
|
|
8
46
|
.command('serve')
|
|
@@ -16,6 +54,7 @@ export function registerServeCommand(program) {
|
|
|
16
54
|
console.error(chalk.red('Not a wikimem vault. Run `wikimem init` first.'));
|
|
17
55
|
process.exit(1);
|
|
18
56
|
}
|
|
57
|
+
ensureGitignore(vaultRoot);
|
|
19
58
|
const port = parseInt(options.port ?? '3141', 10);
|
|
20
59
|
console.log(chalk.blue('Starting wikimem web UI...'));
|
|
21
60
|
createServer(vaultRoot, port);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE3D,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB/B,CAAC;AAEF,SAAS,eAAe,CAAC,SAAiB;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,aAAa,EAAE,uBAAuB,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;QAC3F,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAExF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,aAAa,CAAC,aAAa,EAAE,GAAG,QAAQ,+BAA+B,SAAS,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,+DAA+D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAClG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,CAAC;SAC1D,MAAM,CAAC,CAAC,OAAqB,EAAE,EAAE;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,eAAe,CAAC,SAAS,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACtD,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyB3D"}
|
|
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
3
|
import { existsSync } from 'node:fs';
|
|
4
4
|
import { getVaultConfig } from '../../core/vault.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createProviderFromUserConfig } from '../../providers/index.js';
|
|
6
6
|
import { loadConfig } from '../../core/config.js';
|
|
7
7
|
import { watchRawDirectory } from '../../core/watcher.js';
|
|
8
8
|
export function registerWatchCommand(program) {
|
|
@@ -19,8 +19,9 @@ export function registerWatchCommand(program) {
|
|
|
19
19
|
console.error(chalk.red('Not a wikimem vault. Run `wikimem init` first.'));
|
|
20
20
|
process.exit(1);
|
|
21
21
|
}
|
|
22
|
-
const
|
|
23
|
-
|
|
22
|
+
const provider = createProviderFromUserConfig(userConfig, {
|
|
23
|
+
providerOverride: options.provider,
|
|
24
|
+
});
|
|
24
25
|
console.log(chalk.blue(`Watching ${config.rawDir} for new files...`));
|
|
25
26
|
console.log(chalk.dim('Press Ctrl+C to stop.'));
|
|
26
27
|
await watchRawDirectory(config, provider);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACzD,MAAM,CAAC,2BAA2B,EAAE,cAAc,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,4BAA4B,CAAC,UAAU,EAAE;YACxD,gBAAgB,EAAE,OAAO,CAAC,QAAQ;SACnC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAEhD,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,aAAa,IAAI,OAAO,CA0BvC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { join, dirname } from 'node:path';
|
|
2
5
|
import { registerInitCommand } from './commands/init.js';
|
|
6
|
+
function getVersion() {
|
|
7
|
+
try {
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const pkgPath = join(dirname(__filename), '..', '..', 'package.json');
|
|
10
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
11
|
+
return pkg.version;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return '0.0.0';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
3
17
|
import { registerIngestCommand } from './commands/ingest.js';
|
|
4
18
|
import { registerQueryCommand } from './commands/query.js';
|
|
5
19
|
import { registerLintCommand } from './commands/lint.js';
|
|
@@ -9,15 +23,23 @@ import { registerScrapeCommand } from './commands/scrape.js';
|
|
|
9
23
|
import { registerImproveCommand } from './commands/improve.js';
|
|
10
24
|
import { registerDuplicatesCommand } from './commands/duplicates.js';
|
|
11
25
|
import { registerServeCommand } from './commands/serve.js';
|
|
26
|
+
import { registerHistoryCommand } from './commands/history.js';
|
|
27
|
+
import { registerMcpCommand } from './commands/mcp.js';
|
|
28
|
+
import { registerSearchCommand } from './commands/search.js';
|
|
29
|
+
import { registerAskCommand } from './commands/ask.js';
|
|
30
|
+
import { registerOpenCommand } from './commands/open.js';
|
|
31
|
+
import { registerExportCommand } from './commands/export.js';
|
|
12
32
|
export function createProgram() {
|
|
13
33
|
const program = new Command();
|
|
14
34
|
program
|
|
15
35
|
.name('wikimem')
|
|
16
36
|
.description('Build self-improving knowledge bases with LLMs. Ingest anything, query everything, auto-evolve.')
|
|
17
|
-
.version(
|
|
37
|
+
.version(getVersion());
|
|
18
38
|
registerInitCommand(program);
|
|
19
39
|
registerIngestCommand(program);
|
|
20
40
|
registerQueryCommand(program);
|
|
41
|
+
registerSearchCommand(program);
|
|
42
|
+
registerAskCommand(program);
|
|
21
43
|
registerLintCommand(program);
|
|
22
44
|
registerStatusCommand(program);
|
|
23
45
|
registerWatchCommand(program);
|
|
@@ -25,6 +47,10 @@ export function createProgram() {
|
|
|
25
47
|
registerImproveCommand(program);
|
|
26
48
|
registerDuplicatesCommand(program);
|
|
27
49
|
registerServeCommand(program);
|
|
50
|
+
registerOpenCommand(program);
|
|
51
|
+
registerExportCommand(program);
|
|
52
|
+
registerHistoryCommand(program);
|
|
53
|
+
registerMcpCommand(program);
|
|
28
54
|
return program;
|
|
29
55
|
}
|
|
30
56
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC9E,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AACD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,iGAAiG,CAAC;SAC9G,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEzB,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface AuditEntry {
|
|
2
|
+
id: string;
|
|
3
|
+
timestamp: string;
|
|
4
|
+
action: 'ingest' | 'scrape' | 'improve' | 'observe' | 'edit' | 'restore';
|
|
5
|
+
actor: 'human' | 'agent' | 'webhook' | 'observer';
|
|
6
|
+
source?: string;
|
|
7
|
+
summary: string;
|
|
8
|
+
pagesAffected: string[];
|
|
9
|
+
commitHash?: string;
|
|
10
|
+
duration?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function getAuditTrailPath(vaultRoot: string): string;
|
|
13
|
+
export declare function appendAuditEntry(vaultRoot: string, entry: Omit<AuditEntry, 'id' | 'timestamp'>): AuditEntry;
|
|
14
|
+
export declare function readAuditTrail(vaultRoot: string, limit?: number, actor?: string, action?: string, since?: string, before?: string): AuditEntry[];
|
|
15
|
+
//# sourceMappingURL=audit-trail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-trail.d.ts","sourceRoot":"","sources":["../../src/core/audit-trail.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IACzE,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAC1C,UAAU,CAUZ;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,SAAK,EACV,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,EAAE,CAsBd"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
export function getAuditTrailPath(vaultRoot) {
|
|
5
|
+
return join(vaultRoot, '.wikimem', 'audit-trail.jsonl');
|
|
6
|
+
}
|
|
7
|
+
export function appendAuditEntry(vaultRoot, entry) {
|
|
8
|
+
const dir = join(vaultRoot, '.wikimem');
|
|
9
|
+
mkdirSync(dir, { recursive: true });
|
|
10
|
+
const full = {
|
|
11
|
+
id: randomUUID(),
|
|
12
|
+
timestamp: new Date().toISOString(),
|
|
13
|
+
...entry,
|
|
14
|
+
};
|
|
15
|
+
appendFileSync(getAuditTrailPath(vaultRoot), JSON.stringify(full) + '\n', 'utf-8');
|
|
16
|
+
return full;
|
|
17
|
+
}
|
|
18
|
+
export function readAuditTrail(vaultRoot, limit = 50, actor, action, since, before) {
|
|
19
|
+
const trailPath = getAuditTrailPath(vaultRoot);
|
|
20
|
+
if (!existsSync(trailPath))
|
|
21
|
+
return [];
|
|
22
|
+
const lines = readFileSync(trailPath, 'utf-8').trim().split('\n').filter(Boolean);
|
|
23
|
+
let entries = [];
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
try {
|
|
26
|
+
entries.push(JSON.parse(line));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// skip malformed lines
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (actor && actor !== 'all')
|
|
33
|
+
entries = entries.filter((e) => e.actor === actor);
|
|
34
|
+
if (action && action !== 'all')
|
|
35
|
+
entries = entries.filter((e) => e.action === action);
|
|
36
|
+
if (since)
|
|
37
|
+
entries = entries.filter((e) => e.timestamp >= since);
|
|
38
|
+
if (before)
|
|
39
|
+
entries = entries.filter((e) => e.timestamp <= before);
|
|
40
|
+
// Most-recent first
|
|
41
|
+
return entries.reverse().slice(0, limit);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=audit-trail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-trail.js","sourceRoot":"","sources":["../../src/core/audit-trail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,KAA2C;IAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACxC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAe;QACvB,EAAE,EAAE,UAAU,EAAE;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC;IACF,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,KAAK,GAAG,EAAE,EACV,KAAc,EACd,MAAe,EACf,KAAc,EACd,MAAe;IAEf,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,IAAI,OAAO,GAAiB,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACjF,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACrF,IAAI,KAAK;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IACjE,IAAI,MAAM;QAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAEnE,oBAAoB;IACpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function isClaudeCodeAvailable(): boolean;
|
|
2
|
+
export declare function getClaudeCodePath(): string | null;
|
|
3
|
+
/**
|
|
4
|
+
* Run a prompt through the Claude Code CLI (`claude -p`).
|
|
5
|
+
* Uses the caller's existing Claude Code subscription — no API key needed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runClaudeCode(systemPrompt: string, userPrompt: string, options?: {
|
|
8
|
+
maxTokens?: number;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/core/claude-code.ts"],"names":[],"mappings":"AA+BA,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { execFileSync, spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
const CLAUDE_SEARCH_PATHS = [
|
|
4
|
+
'/usr/local/bin/claude',
|
|
5
|
+
'/opt/homebrew/bin/claude',
|
|
6
|
+
`${process.env['HOME']}/.claude/local/claude`,
|
|
7
|
+
`${process.env['HOME']}/.local/bin/claude`,
|
|
8
|
+
`${process.env['HOME']}/.npm-global/bin/claude`,
|
|
9
|
+
];
|
|
10
|
+
function findClaudeBinary() {
|
|
11
|
+
try {
|
|
12
|
+
const result = execFileSync('which', ['claude'], {
|
|
13
|
+
encoding: 'utf-8',
|
|
14
|
+
timeout: 5000,
|
|
15
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
16
|
+
});
|
|
17
|
+
const path = result.trim();
|
|
18
|
+
if (path)
|
|
19
|
+
return path;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// `which` failed — check known paths
|
|
23
|
+
}
|
|
24
|
+
for (const p of CLAUDE_SEARCH_PATHS) {
|
|
25
|
+
if (existsSync(p))
|
|
26
|
+
return p;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
export function isClaudeCodeAvailable() {
|
|
31
|
+
return findClaudeBinary() !== null;
|
|
32
|
+
}
|
|
33
|
+
export function getClaudeCodePath() {
|
|
34
|
+
return findClaudeBinary();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Run a prompt through the Claude Code CLI (`claude -p`).
|
|
38
|
+
* Uses the caller's existing Claude Code subscription — no API key needed.
|
|
39
|
+
*/
|
|
40
|
+
export async function runClaudeCode(systemPrompt, userPrompt, options) {
|
|
41
|
+
const binary = findClaudeBinary();
|
|
42
|
+
if (!binary) {
|
|
43
|
+
throw new Error('Claude Code CLI not found. Install it from https://docs.anthropic.com/en/docs/claude-code ' +
|
|
44
|
+
'or switch LLM mode to "Direct API" in settings.');
|
|
45
|
+
}
|
|
46
|
+
const args = [
|
|
47
|
+
'-p', userPrompt,
|
|
48
|
+
'--output-format', 'text',
|
|
49
|
+
'--system-prompt', systemPrompt,
|
|
50
|
+
];
|
|
51
|
+
if (options?.maxTokens) {
|
|
52
|
+
args.push('--max-tokens', String(options.maxTokens));
|
|
53
|
+
}
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
const proc = spawn(binary, args, {
|
|
56
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
57
|
+
env: { ...process.env },
|
|
58
|
+
timeout: 300_000,
|
|
59
|
+
});
|
|
60
|
+
let stdout = '';
|
|
61
|
+
let stderr = '';
|
|
62
|
+
proc.stdout.on('data', (chunk) => {
|
|
63
|
+
stdout += chunk.toString();
|
|
64
|
+
});
|
|
65
|
+
proc.stderr.on('data', (chunk) => {
|
|
66
|
+
stderr += chunk.toString();
|
|
67
|
+
});
|
|
68
|
+
proc.on('error', (err) => {
|
|
69
|
+
reject(new Error(`Failed to spawn claude CLI: ${err.message}`));
|
|
70
|
+
});
|
|
71
|
+
proc.on('close', (code) => {
|
|
72
|
+
if (code === 0) {
|
|
73
|
+
resolve(stdout.trim());
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
reject(new Error(`Claude Code CLI exited with code ${code}:\n${stderr || stdout}`));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/core/claude-code.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -5,10 +5,22 @@ export interface SourceConfig {
|
|
|
5
5
|
query?: string;
|
|
6
6
|
schedule?: string;
|
|
7
7
|
}
|
|
8
|
+
export interface ProvidersYamlConfig {
|
|
9
|
+
primary?: string;
|
|
10
|
+
fallback?: string[];
|
|
11
|
+
keys?: {
|
|
12
|
+
anthropic?: string;
|
|
13
|
+
openai?: string;
|
|
14
|
+
ollama_url?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
8
17
|
export interface UserConfig {
|
|
18
|
+
llm_mode?: 'api' | 'claude-code';
|
|
9
19
|
provider?: string;
|
|
10
20
|
model?: string;
|
|
11
21
|
api_key?: string;
|
|
22
|
+
/** Multi-provider fallback chain (SUP-003). When set, overrides single `provider` for LLM calls. */
|
|
23
|
+
providers?: ProvidersYamlConfig;
|
|
12
24
|
vault?: {
|
|
13
25
|
name?: string;
|
|
14
26
|
template?: string;
|
|
@@ -42,6 +54,17 @@ export interface UserConfig {
|
|
|
42
54
|
enabled?: boolean;
|
|
43
55
|
};
|
|
44
56
|
};
|
|
57
|
+
pipeline?: {
|
|
58
|
+
custom_steps?: Array<{
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
enabled: boolean;
|
|
62
|
+
system_prompt: string;
|
|
63
|
+
model?: string;
|
|
64
|
+
position?: number;
|
|
65
|
+
}>;
|
|
66
|
+
disabled_steps?: string[];
|
|
67
|
+
};
|
|
45
68
|
}
|
|
46
69
|
export declare function loadConfig(configPath: string): UserConfig;
|
|
47
70
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjD,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC9B,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC5B,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAQzD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oGAAoG;IACpG,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjD,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC9B,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC5B,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,KAAK,CAAC;YACnB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;YACtB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAQzD"}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAgE7B,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAsB,CAAC;IAC/C,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConnectorManager — manages folder and repo data source connections.
|
|
3
|
+
* Supports: local folders, git repos (local path or remote URL).
|
|
4
|
+
* Watches connected folders with chokidar, auto-triggers ingest on new/changed files.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'node:events';
|
|
7
|
+
export type ConnectorType = 'folder' | 'git-repo' | 'github' | 'slack' | 'linear' | 'jira' | 'gmail' | 'gdrive';
|
|
8
|
+
export interface ConnectorConfig {
|
|
9
|
+
id: string;
|
|
10
|
+
type: ConnectorType;
|
|
11
|
+
name: string;
|
|
12
|
+
path: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
includeGlobs?: string[];
|
|
15
|
+
excludeGlobs?: string[];
|
|
16
|
+
autoSync?: boolean;
|
|
17
|
+
syncSchedule?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
lastSyncAt?: string;
|
|
20
|
+
status: 'active' | 'error' | 'syncing' | 'idle';
|
|
21
|
+
errorMessage?: string;
|
|
22
|
+
totalFiles?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SyncResult {
|
|
25
|
+
connectorId: string;
|
|
26
|
+
filesFound: number;
|
|
27
|
+
filesIngested: number;
|
|
28
|
+
pagesCreated: number;
|
|
29
|
+
linksAdded: number;
|
|
30
|
+
errors: string[];
|
|
31
|
+
duration: number;
|
|
32
|
+
}
|
|
33
|
+
export declare class ConnectorManager extends EventEmitter {
|
|
34
|
+
private connectors;
|
|
35
|
+
private watchers;
|
|
36
|
+
private vaultRoot;
|
|
37
|
+
private configPath;
|
|
38
|
+
constructor(vaultRoot: string);
|
|
39
|
+
private loadConnectors;
|
|
40
|
+
private saveConnectors;
|
|
41
|
+
getAll(): ConnectorConfig[];
|
|
42
|
+
get(id: string): ConnectorConfig | undefined;
|
|
43
|
+
add(config: Omit<ConnectorConfig, 'id' | 'createdAt' | 'status'>): ConnectorConfig;
|
|
44
|
+
remove(id: string): boolean;
|
|
45
|
+
private stopWatcher;
|
|
46
|
+
startWatcher(connector: ConnectorConfig): void;
|
|
47
|
+
startAllWatchers(): void;
|
|
48
|
+
private shouldIngest;
|
|
49
|
+
scanFiles(connector: ConnectorConfig): Promise<string[]>;
|
|
50
|
+
/** Clone a remote git repo to the vault's connectors directory */
|
|
51
|
+
cloneRepo(url: string, targetPath: string): Promise<{
|
|
52
|
+
success: boolean;
|
|
53
|
+
error?: string;
|
|
54
|
+
}>;
|
|
55
|
+
updateStatus(id: string, status: ConnectorConfig['status'], extra?: Partial<ConnectorConfig>): void;
|
|
56
|
+
}
|
|
57
|
+
export declare function getConnectorManager(vaultRoot: string): ConnectorManager;
|
|
58
|
+
//# sourceMappingURL=connectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../../src/core/connectors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkB3C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,QAAQ,CAA6D;IAC7E,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,EAAE,MAAM;IAO7B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;IAItB,MAAM,IAAI,eAAe,EAAE;IAI3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI5C,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,CAAC,GAAG,eAAe;IAclF,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS3B,OAAO,CAAC,WAAW;IAKnB,YAAY,CAAC,SAAS,EAAE,eAAe;IA8BvC,gBAAgB;IAQhB,OAAO,CAAC,YAAY;IAgBd,SAAS,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA8B9D,kEAAkE;IAC5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAa/F,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;CAO7F;AAKD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAGvE"}
|