xtctx 0.3.2 → 0.11.3
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 +317 -122
- package/LICENSE +21 -21
- package/README.md +154 -121
- package/dist/src/cli/disconnect.d.ts +8 -0
- package/dist/src/cli/disconnect.d.ts.map +1 -0
- package/dist/src/cli/disconnect.js +42 -0
- package/dist/src/cli/disconnect.js.map +1 -0
- package/dist/src/cli/hook.d.ts +7 -0
- package/dist/src/cli/hook.d.ts.map +1 -0
- package/dist/src/cli/hook.js +32 -0
- package/dist/src/cli/hook.js.map +1 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +86 -33
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/setup.d.ts +8 -0
- package/dist/src/cli/setup.d.ts.map +1 -0
- package/dist/src/cli/setup.js +76 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/status.d.ts +7 -0
- package/dist/src/cli/status.d.ts.map +1 -0
- package/dist/src/cli/status.js +133 -0
- package/dist/src/cli/status.js.map +1 -0
- package/dist/src/config/disconnect.d.ts +34 -0
- package/dist/src/config/disconnect.d.ts.map +1 -0
- package/dist/src/config/disconnect.js +386 -0
- package/dist/src/config/disconnect.js.map +1 -0
- package/dist/src/config/managed-block.d.ts +29 -0
- package/dist/src/config/managed-block.d.ts.map +1 -0
- package/dist/src/config/managed-block.js +67 -0
- package/dist/src/config/managed-block.js.map +1 -0
- package/dist/src/config/mcp-config.d.ts +93 -0
- package/dist/src/config/mcp-config.d.ts.map +1 -0
- package/dist/src/config/mcp-config.js +556 -0
- package/dist/src/config/mcp-config.js.map +1 -0
- package/dist/src/config/setup.d.ts +39 -0
- package/dist/src/config/setup.d.ts.map +1 -0
- package/dist/src/config/setup.js +379 -0
- package/dist/src/config/setup.js.map +1 -0
- package/dist/src/config/skills.d.ts +73 -0
- package/dist/src/config/skills.d.ts.map +1 -0
- package/dist/src/config/skills.js +427 -0
- package/dist/src/config/skills.js.map +1 -0
- package/dist/src/handoff/embeddings.d.ts +26 -0
- package/dist/src/handoff/embeddings.d.ts.map +1 -0
- package/dist/src/handoff/embeddings.js +132 -0
- package/dist/src/handoff/embeddings.js.map +1 -0
- package/dist/src/handoff/sqlite-index.d.ts +52 -0
- package/dist/src/handoff/sqlite-index.d.ts.map +1 -0
- package/dist/src/handoff/sqlite-index.js +905 -0
- package/dist/src/handoff/sqlite-index.js.map +1 -0
- package/dist/src/handoff/types.d.ts +63 -0
- package/dist/src/handoff/types.d.ts.map +1 -0
- package/dist/src/handoff/types.js +2 -0
- package/dist/src/handoff/types.js.map +1 -0
- package/dist/src/handoff/vector.d.ts +4 -0
- package/dist/src/handoff/vector.d.ts.map +1 -0
- package/dist/src/handoff/vector.js +31 -0
- package/dist/src/handoff/vector.js.map +1 -0
- package/dist/src/mcp/server.d.ts +3 -20
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +90 -205
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/continuity.d.ts +21 -0
- package/dist/src/mcp/tools/continuity.d.ts.map +1 -0
- package/dist/src/mcp/tools/continuity.js +55 -0
- package/dist/src/mcp/tools/continuity.js.map +1 -0
- package/dist/src/mcp/tools/manifest.d.ts +40 -0
- package/dist/src/mcp/tools/manifest.d.ts.map +1 -0
- package/dist/src/mcp/tools/manifest.js +105 -0
- package/dist/src/mcp/tools/manifest.js.map +1 -0
- package/dist/src/mcp/tools/sessions.d.ts +18 -31
- package/dist/src/mcp/tools/sessions.d.ts.map +1 -1
- package/dist/src/mcp/tools/sessions.js +109 -16
- package/dist/src/mcp/tools/sessions.js.map +1 -1
- package/dist/src/runtime/services.d.ts +11 -38
- package/dist/src/runtime/services.d.ts.map +1 -1
- package/dist/src/runtime/services.js +61 -200
- package/dist/src/runtime/services.js.map +1 -1
- package/dist/src/scrapers/antigravity.d.ts +52 -0
- package/dist/src/scrapers/antigravity.d.ts.map +1 -0
- package/dist/src/scrapers/antigravity.js +869 -0
- package/dist/src/scrapers/antigravity.js.map +1 -0
- package/dist/src/scrapers/base.d.ts +53 -1
- package/dist/src/scrapers/base.d.ts.map +1 -1
- package/dist/src/scrapers/base.js +93 -4
- package/dist/src/scrapers/base.js.map +1 -1
- package/dist/src/scrapers/claude-code.d.ts +37 -6
- package/dist/src/scrapers/claude-code.d.ts.map +1 -1
- package/dist/src/scrapers/claude-code.js +214 -40
- package/dist/src/scrapers/claude-code.js.map +1 -1
- package/dist/src/scrapers/codex.d.ts +36 -6
- package/dist/src/scrapers/codex.d.ts.map +1 -1
- package/dist/src/scrapers/codex.js +283 -60
- package/dist/src/scrapers/codex.js.map +1 -1
- package/dist/src/scrapers/copilot-cli.d.ts +34 -0
- package/dist/src/scrapers/copilot-cli.d.ts.map +1 -0
- package/dist/src/scrapers/copilot-cli.js +342 -0
- package/dist/src/scrapers/copilot-cli.js.map +1 -0
- package/dist/src/scrapers/copilot.d.ts +41 -8
- package/dist/src/scrapers/copilot.d.ts.map +1 -1
- package/dist/src/scrapers/copilot.js +256 -118
- package/dist/src/scrapers/copilot.js.map +1 -1
- package/dist/src/scrapers/cursor.d.ts +24 -9
- package/dist/src/scrapers/cursor.d.ts.map +1 -1
- package/dist/src/scrapers/cursor.js +259 -152
- package/dist/src/scrapers/cursor.js.map +1 -1
- package/dist/src/scrapers/index.d.ts +23 -0
- package/dist/src/scrapers/index.d.ts.map +1 -0
- package/dist/src/scrapers/index.js +22 -0
- package/dist/src/scrapers/index.js.map +1 -0
- package/dist/src/scrapers/opencode.d.ts +37 -0
- package/dist/src/scrapers/opencode.d.ts.map +1 -0
- package/dist/src/scrapers/opencode.js +277 -0
- package/dist/src/scrapers/opencode.js.map +1 -0
- package/dist/src/scrapers/registry.d.ts +1 -0
- package/dist/src/scrapers/registry.d.ts.map +1 -1
- package/dist/src/scrapers/registry.js +3 -0
- package/dist/src/scrapers/registry.js.map +1 -1
- package/dist/src/tools/sources.d.ts +28 -0
- package/dist/src/tools/sources.d.ts.map +1 -0
- package/dist/src/tools/sources.js +149 -0
- package/dist/src/tools/sources.js.map +1 -0
- package/dist/src/types/config.d.ts +24 -37
- package/dist/src/types/config.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +0 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +0 -2
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/scraper.d.ts +34 -5
- package/dist/src/types/scraper.d.ts.map +1 -1
- package/dist/src/utils/atomic-file.d.ts +8 -0
- package/dist/src/utils/atomic-file.d.ts.map +1 -0
- package/dist/src/utils/atomic-file.js +15 -0
- package/dist/src/utils/atomic-file.js.map +1 -0
- package/dist/src/utils/errors.d.ts +7 -0
- package/dist/src/utils/errors.d.ts.map +1 -0
- package/dist/src/utils/errors.js +16 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/package-info.d.ts +11 -0
- package/dist/src/utils/package-info.d.ts.map +1 -0
- package/dist/src/utils/package-info.js +30 -0
- package/dist/src/utils/package-info.js.map +1 -0
- package/dist/src/utils/project-scope.d.ts +19 -0
- package/dist/src/utils/project-scope.d.ts.map +1 -0
- package/dist/src/utils/project-scope.js +61 -0
- package/dist/src/utils/project-scope.js.map +1 -0
- package/package.json +70 -66
- package/dist/src/api/routes/config.d.ts +0 -4
- package/dist/src/api/routes/config.d.ts.map +0 -1
- package/dist/src/api/routes/config.js +0 -61
- package/dist/src/api/routes/config.js.map +0 -1
- package/dist/src/api/routes/knowledge.d.ts +0 -4
- package/dist/src/api/routes/knowledge.d.ts.map +0 -1
- package/dist/src/api/routes/knowledge.js +0 -40
- package/dist/src/api/routes/knowledge.js.map +0 -1
- package/dist/src/api/routes/search.d.ts +0 -7
- package/dist/src/api/routes/search.d.ts.map +0 -1
- package/dist/src/api/routes/search.js +0 -108
- package/dist/src/api/routes/search.js.map +0 -1
- package/dist/src/api/routes/sources.d.ts +0 -12
- package/dist/src/api/routes/sources.d.ts.map +0 -1
- package/dist/src/api/routes/sources.js +0 -70
- package/dist/src/api/routes/sources.js.map +0 -1
- package/dist/src/api/server.d.ts +0 -26
- package/dist/src/api/server.d.ts.map +0 -1
- package/dist/src/api/server.js +0 -312
- package/dist/src/api/server.js.map +0 -1
- package/dist/src/cli/ingest.d.ts +0 -6
- package/dist/src/cli/ingest.d.ts.map +0 -1
- package/dist/src/cli/ingest.js +0 -11
- package/dist/src/cli/ingest.js.map +0 -1
- package/dist/src/cli/init.d.ts +0 -6
- package/dist/src/cli/init.d.ts.map +0 -1
- package/dist/src/cli/init.js +0 -105
- package/dist/src/cli/init.js.map +0 -1
- package/dist/src/cli/serve.d.ts +0 -7
- package/dist/src/cli/serve.d.ts.map +0 -1
- package/dist/src/cli/serve.js +0 -100
- package/dist/src/cli/serve.js.map +0 -1
- package/dist/src/cli/sync.d.ts +0 -5
- package/dist/src/cli/sync.d.ts.map +0 -1
- package/dist/src/cli/sync.js +0 -13
- package/dist/src/cli/sync.js.map +0 -1
- package/dist/src/compaction/pipeline.d.ts +0 -19
- package/dist/src/compaction/pipeline.d.ts.map +0 -1
- package/dist/src/compaction/pipeline.js +0 -37
- package/dist/src/compaction/pipeline.js.map +0 -1
- package/dist/src/compaction/providers/cli.d.ts +0 -13
- package/dist/src/compaction/providers/cli.d.ts.map +0 -1
- package/dist/src/compaction/providers/cli.js +0 -60
- package/dist/src/compaction/providers/cli.js.map +0 -1
- package/dist/src/compaction/rule-based.d.ts +0 -8
- package/dist/src/compaction/rule-based.d.ts.map +0 -1
- package/dist/src/compaction/rule-based.js +0 -120
- package/dist/src/compaction/rule-based.js.map +0 -1
- package/dist/src/config/loader.d.ts +0 -12
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -76
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/mappings/claude-code.d.ts +0 -3
- package/dist/src/config/mappings/claude-code.d.ts.map +0 -1
- package/dist/src/config/mappings/claude-code.js +0 -31
- package/dist/src/config/mappings/claude-code.js.map +0 -1
- package/dist/src/config/mappings/codex.d.ts +0 -3
- package/dist/src/config/mappings/codex.d.ts.map +0 -1
- package/dist/src/config/mappings/codex.js +0 -31
- package/dist/src/config/mappings/codex.js.map +0 -1
- package/dist/src/config/mappings/copilot.d.ts +0 -3
- package/dist/src/config/mappings/copilot.d.ts.map +0 -1
- package/dist/src/config/mappings/copilot.js +0 -33
- package/dist/src/config/mappings/copilot.js.map +0 -1
- package/dist/src/config/mappings/cursor.d.ts +0 -3
- package/dist/src/config/mappings/cursor.d.ts.map +0 -1
- package/dist/src/config/mappings/cursor.js +0 -29
- package/dist/src/config/mappings/cursor.js.map +0 -1
- package/dist/src/config/sync.d.ts +0 -13
- package/dist/src/config/sync.d.ts.map +0 -1
- package/dist/src/config/sync.js +0 -96
- package/dist/src/config/sync.js.map +0 -1
- package/dist/src/ingestion/coordinator.d.ts +0 -37
- package/dist/src/ingestion/coordinator.d.ts.map +0 -1
- package/dist/src/ingestion/coordinator.js +0 -127
- package/dist/src/ingestion/coordinator.js.map +0 -1
- package/dist/src/ingestion/daemon.d.ts +0 -17
- package/dist/src/ingestion/daemon.d.ts.map +0 -1
- package/dist/src/ingestion/daemon.js +0 -35
- package/dist/src/ingestion/daemon.js.map +0 -1
- package/dist/src/ingestion/watcher.d.ts +0 -19
- package/dist/src/ingestion/watcher.d.ts.map +0 -1
- package/dist/src/ingestion/watcher.js +0 -70
- package/dist/src/ingestion/watcher.js.map +0 -1
- package/dist/src/knowledge/autotag.d.ts +0 -3
- package/dist/src/knowledge/autotag.d.ts.map +0 -1
- package/dist/src/knowledge/autotag.js +0 -24
- package/dist/src/knowledge/autotag.js.map +0 -1
- package/dist/src/knowledge/dedup.d.ts +0 -7
- package/dist/src/knowledge/dedup.d.ts.map +0 -1
- package/dist/src/knowledge/dedup.js +0 -15
- package/dist/src/knowledge/dedup.js.map +0 -1
- package/dist/src/knowledge/repository.d.ts +0 -12
- package/dist/src/knowledge/repository.d.ts.map +0 -1
- package/dist/src/knowledge/repository.js +0 -74
- package/dist/src/knowledge/repository.js.map +0 -1
- package/dist/src/mcp/tools/config.d.ts +0 -36
- package/dist/src/mcp/tools/config.d.ts.map +0 -1
- package/dist/src/mcp/tools/config.js +0 -54
- package/dist/src/mcp/tools/config.js.map +0 -1
- package/dist/src/mcp/tools/knowledge.d.ts +0 -17
- package/dist/src/mcp/tools/knowledge.d.ts.map +0 -1
- package/dist/src/mcp/tools/knowledge.js +0 -46
- package/dist/src/mcp/tools/knowledge.js.map +0 -1
- package/dist/src/mcp/tools/search.d.ts +0 -22
- package/dist/src/mcp/tools/search.d.ts.map +0 -1
- package/dist/src/mcp/tools/search.js +0 -30
- package/dist/src/mcp/tools/search.js.map +0 -1
- package/dist/src/mcp/tools/write.d.ts +0 -38
- package/dist/src/mcp/tools/write.d.ts.map +0 -1
- package/dist/src/mcp/tools/write.js +0 -97
- package/dist/src/mcp/tools/write.js.map +0 -1
- package/dist/src/runtime/ingestion.d.ts +0 -17
- package/dist/src/runtime/ingestion.d.ts.map +0 -1
- package/dist/src/runtime/ingestion.js +0 -106
- package/dist/src/runtime/ingestion.js.map +0 -1
- package/dist/src/scrapers/gemini.d.ts +0 -17
- package/dist/src/scrapers/gemini.d.ts.map +0 -1
- package/dist/src/scrapers/gemini.js +0 -245
- package/dist/src/scrapers/gemini.js.map +0 -1
- package/dist/src/store/embeddings.d.ts +0 -9
- package/dist/src/store/embeddings.d.ts.map +0 -1
- package/dist/src/store/embeddings.js +0 -28
- package/dist/src/store/embeddings.js.map +0 -1
- package/dist/src/store/lance.d.ts +0 -25
- package/dist/src/store/lance.d.ts.map +0 -1
- package/dist/src/store/lance.js +0 -74
- package/dist/src/store/lance.js.map +0 -1
- package/dist/src/store/search.d.ts +0 -18
- package/dist/src/store/search.d.ts.map +0 -1
- package/dist/src/store/search.js +0 -55
- package/dist/src/store/search.js.map +0 -1
- package/dist/src/types/compaction.d.ts +0 -29
- package/dist/src/types/compaction.d.ts.map +0 -1
- package/dist/src/types/compaction.js +0 -2
- package/dist/src/types/compaction.js.map +0 -1
- package/dist/src/types/context.d.ts +0 -33
- package/dist/src/types/context.d.ts.map +0 -1
- package/dist/src/types/context.js +0 -18
- package/dist/src/types/context.js.map +0 -1
- package/dist/src/utils/retry.d.ts +0 -11
- package/dist/src/utils/retry.d.ts.map +0 -1
- package/dist/src/utils/retry.js +0 -46
- package/dist/src/utils/retry.js.map +0 -1
- package/dist/src/utils/shutdown.d.ts +0 -25
- package/dist/src/utils/shutdown.d.ts.map +0 -1
- package/dist/src/utils/shutdown.js +0 -56
- package/dist/src/utils/shutdown.js.map +0 -1
- package/dist/web/apple-touch-icon.png +0 -0
- package/dist/web/assets/index-Nuadr5ox.css +0 -1
- package/dist/web/assets/index-aA0u8eXA.js +0 -3504
- package/dist/web/assets/primeicons-C6QP2o4f.woff2 +0 -0
- package/dist/web/assets/primeicons-DMOk5skT.eot +0 -0
- package/dist/web/assets/primeicons-Dr5RGzOO.svg +0 -345
- package/dist/web/assets/primeicons-MpK4pl85.ttf +0 -0
- package/dist/web/assets/primeicons-WjwUDZjB.woff +0 -0
- package/dist/web/favicon.ico +0 -0
- package/dist/web/favicon.svg +0 -21
- package/dist/web/index.html +0 -21
- package/dist/web/site.webmanifest +0 -19
- package/dist/web/vite.svg +0 -1
|
@@ -2,6 +2,17 @@ export interface ChunkMetadata {
|
|
|
2
2
|
messageIndex: number;
|
|
3
3
|
tokenEstimate?: number;
|
|
4
4
|
referencedFiles?: string[];
|
|
5
|
+
/**
|
|
6
|
+
* Chunking layer indicating the abstraction level of the content.
|
|
7
|
+
*
|
|
8
|
+
* - 0 Direct conversation turn (user ↔ assistant message). Default.
|
|
9
|
+
* - 1 Compacted / summarized content (e.g. Codex compaction summaries,
|
|
10
|
+
* rule-based compaction output). Higher abstraction, fewer tokens.
|
|
11
|
+
*
|
|
12
|
+
* Consumers can prefer layer-0 for verbatim recall or layer-1 for
|
|
13
|
+
* condensed context that spans more conversational history.
|
|
14
|
+
*/
|
|
15
|
+
layer?: number;
|
|
5
16
|
}
|
|
6
17
|
export interface ConversationChunk {
|
|
7
18
|
tool: string;
|
|
@@ -23,7 +34,6 @@ export interface ConversationScraper<T extends ConversationChunk = ConversationC
|
|
|
23
34
|
getStorePaths(): string[];
|
|
24
35
|
scrape(since?: Date): AsyncIterable<T>;
|
|
25
36
|
fullSync(): AsyncIterable<T>;
|
|
26
|
-
parseRaw(raw: unknown): T;
|
|
27
37
|
getLastScrapedPosition(): Promise<ScraperState>;
|
|
28
38
|
saveScrapedPosition(state: ScraperState): Promise<void>;
|
|
29
39
|
}
|
|
@@ -50,6 +60,8 @@ export interface CodexChunk extends ConversationChunk {
|
|
|
50
60
|
metadata: ChunkMetadata & {
|
|
51
61
|
approvalMode: "suggest" | "auto-edit" | "full-auto";
|
|
52
62
|
sandboxed: boolean;
|
|
63
|
+
/** 0 = direct conversation turn; 1 = compacted/summary layer. */
|
|
64
|
+
layer: number;
|
|
53
65
|
};
|
|
54
66
|
}
|
|
55
67
|
export interface CopilotChunk extends ConversationChunk {
|
|
@@ -59,12 +71,29 @@ export interface CopilotChunk extends ConversationChunk {
|
|
|
59
71
|
completionType?: string;
|
|
60
72
|
};
|
|
61
73
|
}
|
|
62
|
-
export interface
|
|
63
|
-
tool: "
|
|
74
|
+
export interface AntigravityChunk extends ConversationChunk {
|
|
75
|
+
tool: "antigravity";
|
|
64
76
|
metadata: ChunkMetadata & {
|
|
77
|
+
artifactType?: string;
|
|
78
|
+
artifactName?: string;
|
|
79
|
+
summary?: string;
|
|
80
|
+
sourcePath?: string;
|
|
81
|
+
toolName?: string;
|
|
65
82
|
model?: string;
|
|
66
|
-
|
|
67
|
-
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export interface OpenCodeChunk extends ConversationChunk {
|
|
86
|
+
tool: "opencode";
|
|
87
|
+
metadata: ChunkMetadata & {
|
|
88
|
+
agent?: string;
|
|
89
|
+
model?: string;
|
|
90
|
+
providerID?: string;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface CopilotCliChunk extends ConversationChunk {
|
|
94
|
+
tool: "copilot-cli";
|
|
95
|
+
metadata: ChunkMetadata & {
|
|
96
|
+
eventType?: string;
|
|
68
97
|
};
|
|
69
98
|
}
|
|
70
99
|
//# sourceMappingURL=scraper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../../src/types/scraper.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"scraper.d.ts","sourceRoot":"","sources":["../../../src/types/scraper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write via a temp file + rename so an interrupted setup never leaves a
|
|
3
|
+
* truncated config file behind — these writes target files owned by other
|
|
4
|
+
* tools (.mcp.json, config.toml, CLAUDE.md, …), where a partial write is a
|
|
5
|
+
* corruption the owning tool has to recover from.
|
|
6
|
+
*/
|
|
7
|
+
export declare function writeFileAtomic(filePath: string, content: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=atomic-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file.d.ts","sourceRoot":"","sources":["../../../src/utils/atomic-file.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { mkdir, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Write via a temp file + rename so an interrupted setup never leaves a
|
|
5
|
+
* truncated config file behind — these writes target files owned by other
|
|
6
|
+
* tools (.mcp.json, config.toml, CLAUDE.md, …), where a partial write is a
|
|
7
|
+
* corruption the owning tool has to recover from.
|
|
8
|
+
*/
|
|
9
|
+
export async function writeFileAtomic(filePath, content) {
|
|
10
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
11
|
+
const tmpPath = `${filePath}.xtctx-tmp`;
|
|
12
|
+
await writeFile(tmpPath, content, "utf-8");
|
|
13
|
+
await rename(tmpPath, filePath);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=atomic-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file.js","sourceRoot":"","sources":["../../../src/utils/atomic-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAe;IACrE,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,GAAG,QAAQ,YAAY,CAAC;IACxC,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function errorMessage(error: unknown): string;
|
|
2
|
+
/**
|
|
3
|
+
* Replace absolute filesystem paths with a placeholder so error text can be
|
|
4
|
+
* returned to an MCP client without disclosing local machine layout.
|
|
5
|
+
*/
|
|
6
|
+
export declare function sanitizeErrorMessage(message: string): string;
|
|
7
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMnD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI5D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function errorMessage(error) {
|
|
2
|
+
if (error instanceof Error) {
|
|
3
|
+
return error.message;
|
|
4
|
+
}
|
|
5
|
+
return String(error);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Replace absolute filesystem paths with a placeholder so error text can be
|
|
9
|
+
* returned to an MCP client without disclosing local machine layout.
|
|
10
|
+
*/
|
|
11
|
+
export function sanitizeErrorMessage(message) {
|
|
12
|
+
return message
|
|
13
|
+
.replace(/[A-Za-z]:[\\/][^\s'"`]+/g, "<path>")
|
|
14
|
+
.replace(/(^|[\s'"`(])\/[^\s'"`):]+/g, "$1<path>");
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,OAAO;SACX,OAAO,CAAC,0BAA0B,EAAE,QAAQ,CAAC;SAC7C,OAAO,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the xtctx package.json by walking up from the caller's module URL
|
|
3
|
+
* until a package.json with name === "xtctx" is found. Works identically
|
|
4
|
+
* whether the caller lives in `src/...` (tsx dev mode), `dist/src/...`
|
|
5
|
+
* (post-build in-tree), or `node_modules/xtctx/dist/src/...` (installed).
|
|
6
|
+
*/
|
|
7
|
+
export declare function readXtctxPackage(callerUrl: string): {
|
|
8
|
+
version: string;
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=package-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-info.d.ts","sourceRoot":"","sources":["../../../src/utils/package-info.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBrF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the xtctx package.json by walking up from the caller's module URL
|
|
6
|
+
* until a package.json with name === "xtctx" is found. Works identically
|
|
7
|
+
* whether the caller lives in `src/...` (tsx dev mode), `dist/src/...`
|
|
8
|
+
* (post-build in-tree), or `node_modules/xtctx/dist/src/...` (installed).
|
|
9
|
+
*/
|
|
10
|
+
export function readXtctxPackage(callerUrl) {
|
|
11
|
+
let dir = dirname(fileURLToPath(callerUrl));
|
|
12
|
+
for (let depth = 0; depth < 8; depth++) {
|
|
13
|
+
try {
|
|
14
|
+
const raw = readFileSync(join(dir, "package.json"), "utf8");
|
|
15
|
+
const pkg = JSON.parse(raw);
|
|
16
|
+
if (pkg.name === "xtctx" && typeof pkg.version === "string") {
|
|
17
|
+
return { name: pkg.name, version: pkg.version };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// not here; keep walking
|
|
22
|
+
}
|
|
23
|
+
const parent = dirname(dir);
|
|
24
|
+
if (parent === dir)
|
|
25
|
+
break;
|
|
26
|
+
dir = parent;
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`Could not locate xtctx package.json from ${callerUrl}`);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=package-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-info.js","sourceRoot":"","sources":["../../../src/utils/package-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwC,CAAC;YACnE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when `candidatePath` is the project root or a path inside it.
|
|
3
|
+
*
|
|
4
|
+
* Only `/` separates a child from its parent. A previous `<root>--<suffix>`
|
|
5
|
+
* clause — borrowed from Claude Code's encoded *directory names*, where `--`
|
|
6
|
+
* is meaningful — leaked into real path comparison and made `.../app` match
|
|
7
|
+
* the sibling directory `.../app--secret`, indexing and serving another
|
|
8
|
+
* project's transcripts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function pathMatchesProject(candidatePath: string, projectRoot: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Encode a project root the way Claude Code names its store directories:
|
|
13
|
+
* every `:`, `\` and `/` becomes `-`. The leading separator is part of that
|
|
14
|
+
* encoding on POSIX (`/Users/me/app` -> `-Users-me-app`); stripping it meant
|
|
15
|
+
* the name never matched the directory on disk, so macOS and Linux projects
|
|
16
|
+
* scraped nothing. Windows paths start with a drive letter and are unaffected.
|
|
17
|
+
*/
|
|
18
|
+
export declare function encodePathForToolDirectory(projectRoot: string): string;
|
|
19
|
+
//# sourceMappingURL=project-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-scope.d.ts","sourceRoot":"","sources":["../../../src/utils/project-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAItF;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when `candidatePath` is the project root or a path inside it.
|
|
3
|
+
*
|
|
4
|
+
* Only `/` separates a child from its parent. A previous `<root>--<suffix>`
|
|
5
|
+
* clause — borrowed from Claude Code's encoded *directory names*, where `--`
|
|
6
|
+
* is meaningful — leaked into real path comparison and made `.../app` match
|
|
7
|
+
* the sibling directory `.../app--secret`, indexing and serving another
|
|
8
|
+
* project's transcripts.
|
|
9
|
+
*/
|
|
10
|
+
export function pathMatchesProject(candidatePath, projectRoot) {
|
|
11
|
+
const candidate = normalizeProjectPath(candidatePath);
|
|
12
|
+
const root = normalizeProjectPath(projectRoot);
|
|
13
|
+
return candidate === root || candidate.startsWith(`${root}/`);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Encode a project root the way Claude Code names its store directories:
|
|
17
|
+
* every `:`, `\` and `/` becomes `-`. The leading separator is part of that
|
|
18
|
+
* encoding on POSIX (`/Users/me/app` -> `-Users-me-app`); stripping it meant
|
|
19
|
+
* the name never matched the directory on disk, so macOS and Linux projects
|
|
20
|
+
* scraped nothing. Windows paths start with a drive letter and are unaffected.
|
|
21
|
+
*/
|
|
22
|
+
export function encodePathForToolDirectory(projectRoot) {
|
|
23
|
+
return projectRoot.replace(/[:\\/]/g, "-").replace(/-+$/g, "");
|
|
24
|
+
}
|
|
25
|
+
function normalizeProjectPath(value) {
|
|
26
|
+
let normalized = value.trim();
|
|
27
|
+
if (/^file:/i.test(normalized)) {
|
|
28
|
+
normalized = fileUrlToPathLike(normalized);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
normalized = decodePathLike(normalized);
|
|
32
|
+
}
|
|
33
|
+
return normalized
|
|
34
|
+
.replace(/\\/g, "/")
|
|
35
|
+
.replace(/^\/([a-zA-Z]:\/)/, "$1")
|
|
36
|
+
.replace(/\/+/g, "/")
|
|
37
|
+
.replace(/\/$/g, "")
|
|
38
|
+
.toLowerCase();
|
|
39
|
+
}
|
|
40
|
+
function fileUrlToPathLike(value) {
|
|
41
|
+
try {
|
|
42
|
+
const url = new URL(value);
|
|
43
|
+
if (url.protocol !== "file:") {
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
const path = decodePathLike(url.pathname);
|
|
47
|
+
return url.hostname ? `//${url.hostname}${path}` : path;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return decodePathLike(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function decodePathLike(value) {
|
|
54
|
+
try {
|
|
55
|
+
return decodeURIComponent(value);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=project-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-scope.js","sourceRoot":"","sources":["../../../src/utils/project-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,WAAmB;IAC3E,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAmB;IAC5D,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,UAAU;SACd,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;SACjC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,69 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "xtctx",
|
|
3
|
-
"version": "0.3
|
|
4
|
-
"description": "
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"xtctx": "dist/src/cli/index.js"
|
|
8
|
-
},
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
1
|
+
{
|
|
2
|
+
"name": "xtctx",
|
|
3
|
+
"version": "0.11.3",
|
|
4
|
+
"description": "Local cross-tool handoff for AI coding agents.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"xtctx": "dist/src/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
"./scrapers": {
|
|
11
|
+
"types": "./dist/src/scrapers/index.d.ts",
|
|
12
|
+
"import": "./dist/src/scrapers/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
17
|
+
"build": "npm run clean && tsc",
|
|
18
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
19
|
+
"test": "vitest run --exclude=tests/smoke/** --exclude=tests/drift/**",
|
|
20
|
+
"test:security": "vitest run tests/security",
|
|
21
|
+
"test:integration": "vitest run tests/integration",
|
|
22
|
+
"test:drift": "vitest run tests/drift",
|
|
23
|
+
"drift:update-snapshots": "node scripts/run-with-env.mjs XTCTX_UPDATE_SNAPSHOTS=1 -- vitest run tests/drift",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"security:checklist": "node scripts/verify-security-checklist.mjs",
|
|
26
|
+
"lint": "eslint src/ tests/ scripts/",
|
|
27
|
+
"demo:public": "node scripts/public-demo-smoke.mjs",
|
|
25
28
|
"landing:dev": "npm --prefix landing run dev",
|
|
26
29
|
"landing:build": "npm --prefix landing run build",
|
|
27
30
|
"landing:preview": "npm --prefix landing run preview",
|
|
28
|
-
"prepack": "npm run build
|
|
29
|
-
"smoke:cli": "node dist/src/cli/index.js --help",
|
|
30
|
-
"verify:release": "npm test && npm run test:security && npm run security:checklist && npm run
|
|
31
|
-
},
|
|
32
|
-
"dependencies": {
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
|
|
31
|
+
"prepack": "npm run build",
|
|
32
|
+
"smoke:cli": "node dist/src/cli/index.js --help",
|
|
33
|
+
"verify:release": "npm run lint && npm test && npm run test:security && npm run security:checklist && npm audit --omit=dev && npm --prefix landing audit && npm run test:drift && npm run build && npm pack --dry-run && npm run demo:public && npm run landing:build && npm run smoke:cli"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@huggingface/transformers": "^4.2.0",
|
|
37
|
+
"@iarna/toml": "^2.2.5",
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
39
|
+
"better-sqlite3": "^11.0.0",
|
|
40
|
+
"commander": "^13.0.0",
|
|
41
|
+
"glob": "^11.0.0",
|
|
42
|
+
"yaml": "^2.7.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
46
|
+
"@types/node": "^24.0.0",
|
|
47
|
+
"eslint": "^10.0.3",
|
|
48
|
+
"tsx": "^4.19.0",
|
|
49
|
+
"typescript": "^5.7.0",
|
|
50
|
+
"typescript-eslint": "^8.56.1",
|
|
51
|
+
"vitest": "^3.0.0"
|
|
52
|
+
},
|
|
53
|
+
"overrides": {
|
|
54
|
+
"protobufjs": "^7.5.5",
|
|
55
|
+
"sharp": "^0.35.3",
|
|
56
|
+
"adm-zip": "^0.6.0"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=24.0.0"
|
|
60
|
+
},
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+https://github.com/fstubner/xtctx.git"
|
|
64
|
+
},
|
|
65
|
+
"files": [
|
|
66
|
+
"dist",
|
|
67
|
+
"README.md",
|
|
68
|
+
"LICENSE",
|
|
69
|
+
"CHANGELOG.md"
|
|
70
|
+
],
|
|
71
|
+
"license": "MIT",
|
|
72
|
+
"homepage": "https://xtctx.com"
|
|
73
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAgD7D"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Router } from "express";
|
|
2
|
-
import { createGetConfigHandler, createListConfigsHandler, createToolPreferencesHandler, } from "../../mcp/tools/config.js";
|
|
3
|
-
export function createConfigRouter(store) {
|
|
4
|
-
const router = Router();
|
|
5
|
-
const listConfigs = createListConfigsHandler(store);
|
|
6
|
-
const getConfig = createGetConfigHandler(store);
|
|
7
|
-
const toolPreferences = createToolPreferencesHandler(store);
|
|
8
|
-
router.get("/list", async (req, res, next) => {
|
|
9
|
-
try {
|
|
10
|
-
const type = normalizeListType(req.query.type);
|
|
11
|
-
const result = await listConfigs({ type, format: "json" });
|
|
12
|
-
res.json(result);
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
next(error);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
router.get("/get", async (req, res, next) => {
|
|
19
|
-
try {
|
|
20
|
-
const type = normalizeConfigType(req.query.type);
|
|
21
|
-
const name = String(req.query.name ?? "");
|
|
22
|
-
if (!type || !name) {
|
|
23
|
-
res.status(400).json({ error: "type and name are required" });
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const result = await getConfig({ type, name, format: "json" });
|
|
27
|
-
res.json(result);
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
next(error);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
router.get("/preferences", async (req, res, next) => {
|
|
34
|
-
try {
|
|
35
|
-
const tool = String(req.query.tool ?? "");
|
|
36
|
-
if (!tool) {
|
|
37
|
-
res.status(400).json({ error: "tool is required" });
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const result = await toolPreferences({ tool, format: "json" });
|
|
41
|
-
res.json(result);
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
next(error);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
return router;
|
|
48
|
-
}
|
|
49
|
-
function normalizeListType(value) {
|
|
50
|
-
if (value === "skill" || value === "command" || value === "agent" || value === "all") {
|
|
51
|
-
return value;
|
|
52
|
-
}
|
|
53
|
-
return "all";
|
|
54
|
-
}
|
|
55
|
-
function normalizeConfigType(value) {
|
|
56
|
-
if (value === "skill" || value === "command" || value === "agent") {
|
|
57
|
-
return value;
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/api/routes/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAStC,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CA2BvE"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Router } from "express";
|
|
2
|
-
import { createProjectKnowledgeHandler, } from "../../mcp/tools/knowledge.js";
|
|
3
|
-
export function createKnowledgeRouter(knowledge) {
|
|
4
|
-
const router = Router();
|
|
5
|
-
const handler = createProjectKnowledgeHandler(knowledge);
|
|
6
|
-
router.get("/", async (req, res, next) => {
|
|
7
|
-
try {
|
|
8
|
-
const query = req.query;
|
|
9
|
-
const type = normalizeType(query.type);
|
|
10
|
-
const format = query.format === "markdown" ? "markdown" : "json";
|
|
11
|
-
const result = await handler({
|
|
12
|
-
type,
|
|
13
|
-
query: query.query,
|
|
14
|
-
format,
|
|
15
|
-
});
|
|
16
|
-
if (format === "markdown" && typeof result === "string") {
|
|
17
|
-
res.type("text/markdown").send(result);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
res.json(result);
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
next(error);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return router;
|
|
27
|
-
}
|
|
28
|
-
function normalizeType(value) {
|
|
29
|
-
if (value === "decision" ||
|
|
30
|
-
value === "error_solution" ||
|
|
31
|
-
value === "insight" ||
|
|
32
|
-
value === "convention" ||
|
|
33
|
-
value === "gotcha" ||
|
|
34
|
-
value === "faq" ||
|
|
35
|
-
value === "all") {
|
|
36
|
-
return value;
|
|
37
|
-
}
|
|
38
|
-
return "all";
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=knowledge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../../src/api/routes/knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EACL,6BAA6B,GAE9B,MAAM,8BAA8B,CAAC;AAStC,MAAM,UAAU,qBAAqB,CAAC,SAAyB;IAC7D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAuB,CAAC;YAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC3B,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxD,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IACE,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,gBAAgB;QAC1B,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,KAAK,EACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Router } from "express";
|
|
2
|
-
import type { ContextRecord } from "../../types/context.js";
|
|
3
|
-
export interface SearchRouteDependencies {
|
|
4
|
-
knowledgeRecords: () => Promise<ContextRecord[]>;
|
|
5
|
-
}
|
|
6
|
-
export declare function createSearchRouter(deps: SearchRouteDependencies): Router;
|
|
7
|
-
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAClD;AAkDD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAkCxE"}
|