@reposkein/mcp 0.3.0 → 0.5.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.
Files changed (117) hide show
  1. package/README.md +76 -1
  2. package/binary-digests.json +4 -4
  3. package/dist/SKILL.md +19 -0
  4. package/dist/cli/agentAdapters.d.ts +68 -0
  5. package/dist/cli/agentAdapters.js +223 -0
  6. package/dist/cli/agentAdapters.js.map +1 -0
  7. package/dist/cli/ansi.d.ts +24 -0
  8. package/dist/cli/ansi.js +40 -0
  9. package/dist/cli/ansi.js.map +1 -0
  10. package/dist/cli/doctor.d.ts +34 -2
  11. package/dist/cli/doctor.js +51 -6
  12. package/dist/cli/doctor.js.map +1 -1
  13. package/dist/cli/doctorFreshness.d.ts +43 -0
  14. package/dist/cli/doctorFreshness.js +111 -0
  15. package/dist/cli/doctorFreshness.js.map +1 -0
  16. package/dist/cli/doctorSummaries.d.ts +2 -0
  17. package/dist/cli/doctorSummaries.js +95 -0
  18. package/dist/cli/doctorSummaries.js.map +1 -0
  19. package/dist/cli/federatedDiscovery.d.ts +16 -0
  20. package/dist/cli/federatedDiscovery.js +75 -0
  21. package/dist/cli/federatedDiscovery.js.map +1 -0
  22. package/dist/cli/init.d.ts +69 -6
  23. package/dist/cli/init.js +194 -28
  24. package/dist/cli/init.js.map +1 -1
  25. package/dist/cli/sourceSlices.d.ts +17 -0
  26. package/dist/cli/sourceSlices.js +59 -0
  27. package/dist/cli/sourceSlices.js.map +1 -0
  28. package/dist/cli/stats.d.ts +29 -0
  29. package/dist/cli/stats.js +180 -0
  30. package/dist/cli/stats.js.map +1 -0
  31. package/dist/cli/view.d.ts +71 -3
  32. package/dist/cli/view.js +170 -14
  33. package/dist/cli/view.js.map +1 -1
  34. package/dist/index.d.ts +8 -48
  35. package/dist/index.js +94 -295
  36. package/dist/index.js.map +1 -1
  37. package/dist/indexer/fetchBinary.d.ts +14 -0
  38. package/dist/indexer/fetchBinary.js +81 -40
  39. package/dist/indexer/fetchBinary.js.map +1 -1
  40. package/dist/indexer/indexLock.d.ts +13 -0
  41. package/dist/indexer/indexLock.js +66 -0
  42. package/dist/indexer/indexLock.js.map +1 -0
  43. package/dist/indexer/runIndexer.d.ts +8 -2
  44. package/dist/indexer/runIndexer.js +20 -4
  45. package/dist/indexer/runIndexer.js.map +1 -1
  46. package/dist/serve/serve.d.ts +95 -0
  47. package/dist/serve/serve.js +581 -0
  48. package/dist/serve/serve.js.map +1 -0
  49. package/dist/serve/tokens.d.ts +49 -0
  50. package/dist/serve/tokens.js +108 -0
  51. package/dist/serve/tokens.js.map +1 -0
  52. package/dist/serve/watch.d.ts +73 -0
  53. package/dist/serve/watch.js +135 -0
  54. package/dist/serve/watch.js.map +1 -0
  55. package/dist/server/createMcpServer.d.ts +129 -0
  56. package/dist/server/createMcpServer.js +464 -0
  57. package/dist/server/createMcpServer.js.map +1 -0
  58. package/dist/store/JsonlGraphStore.d.ts +18 -4
  59. package/dist/store/JsonlGraphStore.js +61 -19
  60. package/dist/store/JsonlGraphStore.js.map +1 -1
  61. package/dist/store/decisions.d.ts +20 -2
  62. package/dist/store/decisions.js +35 -2
  63. package/dist/store/decisions.js.map +1 -1
  64. package/dist/store/indexedAt.d.ts +18 -0
  65. package/dist/store/indexedAt.js +56 -0
  66. package/dist/store/indexedAt.js.map +1 -0
  67. package/dist/store/instrumentTool.d.ts +40 -0
  68. package/dist/store/instrumentTool.js +82 -0
  69. package/dist/store/instrumentTool.js.map +1 -0
  70. package/dist/store/repoContextCache.d.ts +15 -0
  71. package/dist/store/repoContextCache.js +26 -0
  72. package/dist/store/repoContextCache.js.map +1 -0
  73. package/dist/store/repoSession.d.ts +63 -0
  74. package/dist/store/repoSession.js +123 -0
  75. package/dist/store/repoSession.js.map +1 -0
  76. package/dist/store/resolveRepoPath.d.ts +31 -0
  77. package/dist/store/resolveRepoPath.js +85 -0
  78. package/dist/store/resolveRepoPath.js.map +1 -0
  79. package/dist/store/sessionLog.d.ts +98 -0
  80. package/dist/store/sessionLog.js +216 -0
  81. package/dist/store/sessionLog.js.map +1 -0
  82. package/dist/store/sessionStats.d.ts +55 -0
  83. package/dist/store/sessionStats.js +140 -0
  84. package/dist/store/sessionStats.js.map +1 -0
  85. package/dist/store/sidecar.d.ts +39 -3
  86. package/dist/store/sidecar.js +89 -5
  87. package/dist/store/sidecar.js.map +1 -1
  88. package/dist/store/summaryShards.d.ts +117 -0
  89. package/dist/store/summaryShards.js +291 -0
  90. package/dist/store/summaryShards.js.map +1 -0
  91. package/dist/store/teamConfig.d.ts +17 -0
  92. package/dist/store/teamConfig.js +55 -0
  93. package/dist/store/teamConfig.js.map +1 -0
  94. package/dist/tools/indexerTools.d.ts +14 -2
  95. package/dist/tools/indexerTools.js +17 -5
  96. package/dist/tools/indexerTools.js.map +1 -1
  97. package/dist/tools/recordDecision.d.ts +3 -0
  98. package/dist/tools/recordDecision.js +7 -2
  99. package/dist/tools/recordDecision.js.map +1 -1
  100. package/dist/tools/writeSemanticSummary.d.ts +4 -1
  101. package/dist/tools/writeSemanticSummary.js +5 -2
  102. package/dist/tools/writeSemanticSummary.js.map +1 -1
  103. package/dist/viz/assets/{graph.worker-CC7BeE-8.js → graph.worker-DkH6-lMU.js} +1 -1
  104. package/dist/viz/assets/index-BnqIVYFE.css +1 -0
  105. package/dist/viz/assets/index-IhtszTp0.js +5 -0
  106. package/dist/viz/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  107. package/dist/viz/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  108. package/dist/viz/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
  109. package/dist/viz/assets/r3f-Bn9htB92.js +336 -0
  110. package/dist/viz/assets/tanstack-CSzx6NDA.js +62 -0
  111. package/dist/viz/assets/three-Cpu5RUEM.js +4116 -0
  112. package/dist/viz/index.html +5 -4
  113. package/package.json +5 -4
  114. package/dist/viz/assets/index-C_8UkiJ8.js +0 -9
  115. package/dist/viz/assets/r3f-Cku1OhB-.js +0 -277
  116. package/dist/viz/assets/tanstack-DyXcNRWk.js +0 -77
  117. package/dist/viz/assets/three-Z8XaLGmf.js +0 -3839
package/dist/index.js CHANGED
@@ -1,303 +1,60 @@
1
1
  #!/usr/bin/env node
2
2
  import { pathToFileURL } from "node:url";
3
3
  import { runInit, runIndex } from "./cli/init.js";
4
- import { runDoctor } from "./cli/doctor.js";
4
+ import { parseAgentsFlag } from "./cli/agentAdapters.js";
5
+ import { runDoctor, resolveDoctorRepoPath } from "./cli/doctor.js";
5
6
  import { runAdr } from "./cli/adr.js";
6
7
  import { runView, runExport, parseViewArgs } from "./cli/view.js";
7
- import { existsSync, realpathSync } from "node:fs";
8
- import { join } from "node:path";
9
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+ import { runStats } from "./cli/stats.js";
9
+ import { runServe, parseServeArgs } from "./serve/serve.js";
10
+ import { realpathSync } from "node:fs";
10
11
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
11
- import { z } from "zod";
12
- import { Neo4jGraphStore } from "./store/Neo4jGraphStore.js";
13
- import { UnconfiguredStore } from "./store/UnconfiguredStore.js";
14
- import { JsonlGraphStore } from "./store/JsonlGraphStore.js";
15
- import { makeReadCypher } from "./tools/readCypher.js";
16
- import { makeGetContextProfile } from "./tools/getContextProfile.js";
17
- import { makeWriteSemanticSummary } from "./tools/writeSemanticSummary.js";
18
- import { makeInitCpgSkeleton, makeReindexFile } from "./tools/indexerTools.js";
19
- import { makeSemanticFind } from "./tools/semanticFind.js";
20
- import { makeTemporalContext } from "./tools/temporalContext.js";
21
- import { makeImpact } from "./tools/impact.js";
22
- import { makeRecordDecision } from "./tools/recordDecision.js";
23
- import { makeSetDecisionStatus } from "./tools/setDecisionStatus.js";
24
- import { makeReaffirmDecision } from "./tools/reaffirmDecision.js";
25
- import { makeListDecisions } from "./tools/listDecisions.js";
26
- import { makeGetDecision } from "./tools/getDecision.js";
27
12
  import { resolveRepoId } from "./store/repoId.js";
28
- import { ensureGraph } from "./indexer/ensureGraph.js";
29
- import { ensureIndexerBinary } from "./indexer/fetchBinary.js";
30
- import { spawnIndexer } from "./indexer/runIndexer.js";
31
- /** Selects the store backend.
32
- * REPOSKEIN_STORE = "jsonl" | "neo4j" | "auto" (default "auto").
33
- * - auto: JSONL if <repoPath>/.reposkein/nodes.jsonl exists, else Neo4j if
34
- * NEO4J_PASSWORD is set, else Unconfigured.
35
- * - jsonl: JSONL if available, else Unconfigured.
36
- * - neo4j: Neo4j if configured, else Unconfigured. */
37
- function buildStore(repoPath, repoId) {
38
- const mode = (process.env.REPOSKEIN_STORE ?? "auto").toLowerCase();
39
- const jsonlReady = !!repoPath && !!repoId && existsSync(join(repoPath, ".reposkein", "nodes.jsonl"));
40
- const neo4j = () => {
41
- try {
42
- return Neo4jGraphStore.fromEnv();
43
- }
44
- catch {
45
- return new UnconfiguredStore();
46
- }
47
- };
48
- if (mode === "jsonl") {
49
- return jsonlReady ? new JsonlGraphStore(repoPath, repoId) : new UnconfiguredStore();
50
- }
51
- if (mode === "neo4j") {
52
- return neo4j();
53
- }
54
- // auto
55
- if (jsonlReady)
56
- return new JsonlGraphStore(repoPath, repoId);
57
- return neo4j();
58
- }
59
- const REPO_REQUIRED_MSG = "REPOSKEIN_REPO_PATH (or REPOSKEIN_REPO_ID) must be set to use this tool. " +
60
- "Set REPOSKEIN_REPO_PATH to the root of the repository you want to work with.";
61
- // Exported for the regression test. `hops` MUST stay a bounded integer: a literal union
62
- // (z.union([z.literal(1), z.literal(2)])) serialises to JSON-Schema `anyOf:[{const:1},{const:2}]`,
63
- // which Gemini's tool-schema validator 400-rejects — and one bad tool declaration fails the
64
- // whole request, breaking every Gemini model whenever a reposkein tool is in the payload.
65
- export const getContextProfileInputSchema = {
66
- node_id: z.string().optional(),
67
- file_path: z.string().optional(),
68
- name: z.string().optional(),
69
- hops: z.number().int().min(1).max(2).optional(),
70
- federated: z.boolean().optional(),
71
- };
72
- // Exported for the schema regression test (no anyOf/oneOf — see the hops note
73
- // above; z.enum serialises to a plain `enum`, which every provider accepts).
74
- export const recordDecisionInputSchema = {
75
- title: z.string(),
76
- context: z.string(),
77
- decision: z.string(),
78
- consequences: z.string().optional(),
79
- alternatives: z.string().optional(),
80
- status: z.enum(["proposed", "accepted"]).optional(),
81
- anchor_node_ids: z.array(z.string()).max(20).optional(),
82
- anchor_paths: z.array(z.string()).max(20).optional(),
83
- supersedes: z.array(z.string()).max(5).optional(),
84
- };
85
- export const setDecisionStatusInputSchema = {
86
- decision_id: z.string(),
87
- status: z.enum(["accepted", "rejected", "deprecated"]),
88
- };
89
- export const reaffirmDecisionInputSchema = {
90
- decision_id: z.string(),
91
- };
92
- export const listDecisionsInputSchema = {
93
- status: z.enum(["proposed", "accepted", "rejected", "deprecated", "superseded"]).optional(),
94
- anchor: z.string().optional(),
95
- q: z.string().optional(),
96
- limit: z.number().int().min(1).max(50).optional(),
97
- };
98
- export const getDecisionInputSchema = {
99
- decision_id: z.string(),
100
- };
13
+ import { createMcpServer } from "./server/createMcpServer.js";
14
+ import { packageVersion } from "./indexer/fetchBinary.js";
15
+ /** Re-exported from `server/createMcpServer.ts`, where the tool registration
16
+ * now lives (REP-17 extracted it so `serve --http` can build one server PER
17
+ * CONNECTION). Kept here because these are this module's public surface. */
18
+ export { repoRequiredMessage, repoUnindexedMessage, getContextProfileInputSchema, recordDecisionInputSchema, setDecisionStatusInputSchema, reaffirmDecisionInputSchema, listDecisionsInputSchema, getDecisionInputSchema, createMcpServer, buildStore, WRITE_TOOLS, } from "./server/createMcpServer.js";
19
+ const HELP_TEXT = `reposkein-mcp deterministic code-graph MCP server
20
+
21
+ Usage:
22
+ reposkein-mcp start the MCP server (stdio transport)
23
+ reposkein-mcp init [path] set up a repo (indexer, git hooks, skill, graph); --no-index skips the initial index, --ci also writes a GitHub Pages publish workflow (see docs/HOSTING.md). On a repo joined from a committed .reposkein/meta.json, also auto-writes local agent MCP config (--agents claude,opencode,cursor to override detection, --dry-run to preview)
24
+ reposkein-mcp index [path] (re)build the committed graph
25
+ reposkein-mcp doctor [path] health check (indexer binary, index, repo id, hooks, graph freshness); --json for machine output, --ci additionally fails on stale graph / missing hooks / unsplit legacy summaries
26
+ reposkein-mcp adr <sub> ... decision-log utilities
27
+ reposkein-mcp stats [path] session usage report (calls, tokens saved vs grep)
28
+ reposkein-mcp view [path] open the constellation viewer (--export <dir> for a static site)
29
+ reposkein-mcp serve --http ADVANCED, OPTIONAL: shared remote server — MCP over Streamable HTTP + the viewer/API in one process, bearer-token auth, read-only by default (see docs/REMOTE.md)
30
+ reposkein-mcp --help show this help
31
+ reposkein-mcp --version print the package version
32
+
33
+ Repo resolution (used by the server and by [path]-less CLI commands):
34
+ 1. an explicit path argument, if given
35
+ 2. REPOSKEIN_REPO_PATH, if set
36
+ 3. the nearest ancestor of the current directory containing .reposkein/
37
+ 4. a single .reposkein/ found while scanning subdirectories (2 levels deep,
38
+ skipping node_modules/.git/target/dist/.worktrees/.claude)
39
+ If step 4 finds more than one .reposkein/, resolution fails with an error
40
+ naming the candidates — set REPOSKEIN_REPO_PATH (or pass a path) to pick one.
41
+
42
+ Docs: https://github.com/reposkein/reposkein/tree/main/mcp#readme`;
43
+ /** Starts the MCP server on the stdio transport — the default and only
44
+ * transport for a single developer. One `createMcpServer` per process, with
45
+ * full write capability and the historical REPOSKEIN_AGENT identity
46
+ * fallback: unchanged by REP-17. */
101
47
  export async function main() {
102
- const repoPath = process.env.REPOSKEIN_REPO_PATH;
103
- const repoId = resolveRepoId(repoPath, process.env.REPOSKEIN_REPO_ID);
104
- // Build the graph if the repo has none yet. Derived JSONL is git-ignored, so a
105
- // fresh clone arrives without it; without this the first query would fail on a
106
- // repo that indexes fine in a couple of seconds.
107
- await ensureGraph(repoPath, repoId, {
108
- mode: (process.env.REPOSKEIN_STORE ?? "auto").toLowerCase(),
109
- neo4jConfigured: !!process.env.NEO4J_PASSWORD,
110
- });
111
- const store = buildStore(repoPath, repoId);
112
- const server = new McpServer({ name: "@reposkein/mcp", version: "0.0.0" });
113
- const readCypher = makeReadCypher(store, repoId);
114
- server.registerTool("read_cypher", {
115
- title: "Read-only Cypher query",
116
- description: "Run a read-only Cypher query against the RepoSkein graph. Writes are rejected. Filter by `n.repo_id = $repo_id` (or `n.repo_id IN $repo_ids`); pass `federated: true` to span this repo and its nested repos via `$repo_ids`. Results are capped (200 rows / 64KB).",
117
- inputSchema: {
118
- query: z.string(),
119
- params: z.record(z.string(), z.unknown()).optional(),
120
- federated: z.boolean().optional(),
121
- },
122
- }, async (args) => readCypher(args));
123
- // Repo-scoped tools are always registered; they check repoId at call time.
124
- // Handlers are constructed with a real repoId only if it's available.
125
- const getContextProfile = repoId ? makeGetContextProfile(store, repoId, repoPath) : null;
126
- server.registerTool("get_context_profile", {
127
- title: "Get context profile",
128
- description: "Resolve a function/class (by node_id, file_path+name, or name) and return its caller/callee neighborhood (hops 1-2) with inlined prose and an enrichment_needed list. Never guesses — returns candidates if a name is ambiguous. Pass federated:true to resolve and traverse across nested repos.",
129
- inputSchema: getContextProfileInputSchema,
130
- }, async (args) => {
131
- if (!getContextProfile) {
132
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
133
- }
134
- return getContextProfile(args);
135
- });
136
- const writeSummary = repoId ? makeWriteSemanticSummary(store, repoId) : null;
137
- server.registerTool("write_semantic_summary", {
138
- title: "Write semantic summary",
139
- description: "Attach a 1-3 sentence plain-text business-logic summary to a node, stamped with its current content hash for staleness tracking. Plain text only (no markdown links or code fences), max 1000 chars.",
140
- inputSchema: {
141
- node_id: z.string(),
142
- summary: z.string(),
143
- model: z.string().optional(),
144
- },
145
- }, async (args) => {
146
- if (!writeSummary) {
147
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
148
- }
149
- return writeSummary(args);
150
- });
151
- const initSkeleton = repoId ? makeInitCpgSkeleton(repoId) : null;
152
- server.registerTool("init_cpg_skeleton", {
153
- title: "Build the code graph",
154
- description: "Index the repository with the native indexer and load it into the graph database. Run once on a fresh repo (or to rebuild). Returns node/edge counts.",
155
- inputSchema: {
156
- path: z.string().optional(),
157
- full: z.boolean().optional(),
158
- },
159
- }, async (args) => {
160
- if (!initSkeleton) {
161
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
162
- }
163
- return initSkeleton(args);
164
- });
165
- const reindexFile = repoId ? makeReindexFile(repoId) : null;
166
- server.registerTool("reindex_file", {
167
- title: "Reindex after editing",
168
- description: "Refresh the graph after editing a source file (pass its path). v1 performs a full reindex.",
169
- inputSchema: { path: z.string() },
170
- }, async (args) => {
171
- if (!reindexFile) {
172
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
173
- }
174
- return reindexFile(args);
175
- });
176
- const semanticFind = repoId
177
- ? makeSemanticFind(store, repoId, repoPath ?? ".", undefined, { decisions: !!repoPath })
178
- : null;
179
- server.registerTool("semantic_find", {
180
- title: "Find code by meaning",
181
- description: "Rank functions/classes by a lexical match over their qualified names, signatures, and agent-written summaries — the entry point to seed get_context_profile when you don't know where to start. Returns ranked node_ids. Architecture decisions are part of the corpus: \"why\" questions (why don't we X, what did we decide about Y) surface Decision rows — follow up with get_decision. federated:true spans nested repos.",
182
- inputSchema: {
183
- query: z.string(),
184
- limit: z.number().int().min(1).max(25).optional(),
185
- kind: z.enum(["Function", "Class", "Interface", "Enum", "Decision"]).optional(),
186
- federated: z.boolean().optional(),
187
- },
188
- }, async (args) => {
189
- if (!semanticFind) {
190
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
191
- }
192
- return semanticFind(args);
48
+ const server = createMcpServer({
49
+ cwd: process.cwd(),
50
+ envRepoPath: process.env.REPOSKEIN_REPO_PATH,
193
51
  });
194
- // get_temporal_context is gated on repoPath (not the store — it reads from .git directly).
195
- const temporalContext = repoPath ? makeTemporalContext(repoPath) : null;
196
- server.registerTool("get_temporal_context", {
197
- title: "Git temporal context",
198
- description: "Git-derived signals for a file: how often/recently it changes, who owns it, and which files most often change together with it (co-change) — answers \"what else should I touch?\". Advisory (derived from git history, not the committed graph). Before a cross-cutting change, use this to find files that historically change together.",
199
- inputSchema: { path: z.string() },
200
- }, async (args) => {
201
- if (!temporalContext) {
202
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
203
- }
204
- return temporalContext(args);
205
- });
206
- const impact = repoId ? makeImpact(store, repoId, repoPath) : null;
207
- server.registerTool("impact", {
208
- title: "Change impact + covering tests",
209
- description: "Given a function/class, return its transitive callers (what could break if you change it) split into impacted code vs the tests that cover it (what to run). Resolves by node_id, file_path+name, or name. federated:true spans nested repos.",
210
- inputSchema: {
211
- node_id: z.string().optional(),
212
- file_path: z.string().optional(),
213
- name: z.string().optional(),
214
- depth: z.number().int().min(1).max(5).optional(),
215
- federated: z.boolean().optional(),
216
- },
217
- }, async (args) => {
218
- if (!impact) {
219
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
220
- }
221
- return impact(args);
222
- });
223
- // Decision tools are gated on repoPath + repoId: records live as committed
224
- // files under <repoPath>/.reposkein/decisions/, the graph is used only for
225
- // anchor resolution and hash stamping (Phase 1 — no GraphStore changes).
226
- const decisionsReady = !!repoPath && !!repoId;
227
- // Best-effort reindex before stamping anchors so a decision recorded right
228
- // after an edit reflects the working tree, not the last index snapshot.
229
- const decisionRefresh = async () => {
230
- const bin = await ensureIndexerBinary();
231
- await spawnIndexer(bin, ["index", "--json", "--repo-id", repoId, repoPath]);
232
- };
233
- const recordDecision = decisionsReady
234
- ? makeRecordDecision(store, repoId, repoPath, { refresh: decisionRefresh })
235
- : null;
236
- server.registerTool("record_decision", {
237
- title: "Record an architecture decision",
238
- description: "Record an Architecture Decision Record (ADR): why a significant design choice was made, anchored to the graph nodes and paths it governs. Use for decisions that affect structure, dependencies, interfaces, or construction techniques — not renames, formatting, or routine fixes. Records land as status \"proposed\" (the user ratifies via set_decision_status); pass supersedes to replace an earlier decision. Plain text only; anchors are stamped with the current content hash for drift tracking.",
239
- inputSchema: recordDecisionInputSchema,
240
- }, async (args) => {
241
- if (!recordDecision) {
242
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
243
- }
244
- return recordDecision(args);
245
- });
246
- const setDecisionStatus = decisionsReady ? makeSetDecisionStatus(repoPath) : null;
247
- server.registerTool("set_decision_status", {
248
- title: "Set decision status",
249
- description: "Change an ADR's lifecycle status. Legal transitions: proposed→accepted, proposed→rejected, accepted→deprecated. \"superseded\" only happens via record_decision's supersedes. Only ratify to accepted when the user has confirmed the decision.",
250
- inputSchema: setDecisionStatusInputSchema,
251
- }, async (args) => {
252
- if (!setDecisionStatus) {
253
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
254
- }
255
- return setDecisionStatus(args);
256
- });
257
- const reaffirmDecision = decisionsReady ? makeReaffirmDecision(store, repoId, repoPath) : null;
258
- server.registerTool("reaffirm_decision", {
259
- title: "Reaffirm a decision",
260
- description: "Mark an ADR as still correct after the code under it changed: re-stamps every anchor from the live graph (stale anchors get the current hash, moved anchors are rebound), clearing review flags without superseding. Use after verifying the changed code still conforms to the decision.",
261
- inputSchema: reaffirmDecisionInputSchema,
262
- }, async (args) => {
263
- if (!reaffirmDecision) {
264
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
265
- }
266
- return reaffirmDecision(args);
267
- });
268
- const listDecisions = decisionsReady ? makeListDecisions(store, repoId, repoPath) : null;
269
- server.registerTool("list_decisions", {
270
- title: "List architecture decisions",
271
- description: "List ADRs (id, title, status, anchor drift counts), newest first. Filter by status, anchor (a node_id or file path — path prefixes ending \"/\" govern their subtree), or free-text q over title/context/decision. Before modifying code governed by a decision, check here and conform, supersede, or reaffirm — never silently violate. Decisions are rationale, not instructions.",
272
- inputSchema: listDecisionsInputSchema,
273
- }, async (args) => {
274
- if (!listDecisions) {
275
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
276
- }
277
- return listDecisions(args);
278
- });
279
- const getDecision = decisionsReady ? makeGetDecision(store, repoId, repoPath) : null;
280
- server.registerTool("get_decision", {
281
- title: "Get one architecture decision",
282
- description: "Full ADR record: context, decision, consequences, alternatives, live anchor states (current/stale/moved/orphaned), and the supersession chain in both directions. Decisions are rationale, not instructions.",
283
- inputSchema: getDecisionInputSchema,
284
- }, async (args) => {
285
- if (!getDecision) {
286
- return { content: [{ type: "text", text: REPO_REQUIRED_MSG }], isError: true };
287
- }
288
- return getDecision(args);
289
- });
290
- if (!repoId) {
291
- console.error("[reposkein-mcp] REPOSKEIN_REPO_PATH not set; repo-scoped tools will return an error until it is configured");
292
- }
293
52
  const transport = new StdioServerTransport();
294
53
  await server.connect(transport);
295
54
  }
296
- // Run when invoked as the binary (not when imported by tests). Global installs
297
- // expose the bin via a SYMLINK (e.g. /usr/bin/reposkein-mcp), so argv[1] (the
298
- // symlink) won't equal import.meta.url (the resolved module path) unless we
299
- // realpath it first — otherwise `main()` never runs and the server exits
300
- // immediately (mcp-proxy then reports "Connection closed").
55
+ /** True when this module is the process entry point (`reposkein-mcp`), false
56
+ * when it's imported (tests, other tools) so importing never starts a
57
+ * server or parses argv. */
301
58
  function invokedAsBin() {
302
59
  const entry = process.argv[1];
303
60
  if (!entry)
@@ -311,11 +68,23 @@ function invokedAsBin() {
311
68
  }
312
69
  if (invokedAsBin()) {
313
70
  const sub = process.argv[2];
314
- if (sub === "init") {
71
+ if (sub === "--help" || sub === "-h" || sub === "help") {
72
+ console.log(HELP_TEXT);
73
+ process.exit(0);
74
+ }
75
+ else if (sub === "--version" || sub === "-v") {
76
+ console.log(packageVersion());
77
+ process.exit(0);
78
+ }
79
+ else if (sub === "init") {
315
80
  const rest = process.argv.slice(3);
316
81
  const noIndex = rest.includes("--no-index");
317
- const path = rest.find((a) => !a.startsWith("-")) ?? ".";
318
- runInit(path, { index: !noIndex })
82
+ const ci = rest.includes("--ci");
83
+ const dryRun = rest.includes("--dry-run");
84
+ const agentsIdx = rest.indexOf("--agents");
85
+ const agents = agentsIdx !== -1 ? parseAgentsFlag(rest[agentsIdx + 1] ?? "") : undefined;
86
+ const path = rest.find((a, i) => !a.startsWith("-") && rest[i - 1] !== "--agents") ?? ".";
87
+ runInit(path, { index: !noIndex, ci, dryRun, agents })
319
88
  .then((code) => process.exit(code))
320
89
  .catch((err) => { console.error(err); process.exit(1); });
321
90
  }
@@ -328,11 +97,20 @@ if (invokedAsBin()) {
328
97
  else if (sub === "doctor") {
329
98
  const rest = process.argv.slice(3);
330
99
  const json = rest.includes("--json");
331
- const path = rest.find((a) => !a.startsWith("-")) ?? process.env.REPOSKEIN_REPO_PATH ?? ".";
332
- runDoctor(path, json)
100
+ const ci = rest.includes("--ci");
101
+ const explicitPath = rest.find((a) => !a.startsWith("-"));
102
+ const { path, error } = resolveDoctorRepoPath(explicitPath, process.cwd(), process.env.REPOSKEIN_REPO_PATH);
103
+ if (error) {
104
+ console.error(`reposkein doctor: ${error}`);
105
+ process.exit(1);
106
+ }
107
+ runDoctor(path, { json, ci })
333
108
  .then((code) => process.exit(code))
334
109
  .catch((err) => { console.error(err); process.exit(1); });
335
110
  }
111
+ else if (sub === "stats") {
112
+ process.exit(runStats(process.argv.slice(3), process.cwd(), process.env.REPOSKEIN_REPO_PATH));
113
+ }
336
114
  else if (sub === "adr") {
337
115
  const rest = process.argv.slice(3);
338
116
  const adrSub = rest[0];
@@ -342,19 +120,40 @@ if (invokedAsBin()) {
342
120
  process.exit(runAdr(adrSub, path, dir));
343
121
  }
344
122
  else if (sub === "view") {
345
- const { repoPath, opts, exportDir } = parseViewArgs(process.argv.slice(3));
123
+ const { repoPath, opts, exportDir, exportOpts } = parseViewArgs(process.argv.slice(3));
346
124
  const resolvedViewRepoId = resolveRepoId(repoPath, process.env.REPOSKEIN_REPO_ID);
347
125
  if (!resolvedViewRepoId) {
348
126
  console.error(`reposkein view: could not resolve repo id (no meta.json / REPOSKEIN_REPO_ID); falling back to placeholder "repo"`);
349
127
  }
350
128
  const vRepoId = resolvedViewRepoId ?? "repo";
351
129
  const run = exportDir
352
- ? runExport(repoPath, vRepoId, exportDir)
130
+ ? runExport(repoPath, vRepoId, exportDir, exportOpts)
353
131
  : runView(repoPath, vRepoId, opts);
354
132
  run
355
133
  .then((code) => process.exit(code))
356
134
  .catch((err) => { console.error(err); process.exit(1); });
357
135
  }
136
+ else if (sub === "serve") {
137
+ // OPTIONAL remote mode (REP-17). `--http` is required and explicit: no
138
+ // subcommand of this CLI opens a socket by accident.
139
+ const { repoPath, opts, http } = parseServeArgs(process.argv.slice(3));
140
+ if (!http) {
141
+ console.error("reposkein serve: --http is required (it is the only transport this subcommand serves).\n" +
142
+ " Usage: reposkein-mcp serve --http [path] [--port N] [--host H] [--watch-interval SECONDS]\n" +
143
+ " This is an advanced, optional deployment — see docs/REMOTE.md. For normal use, run\n" +
144
+ " `reposkein-mcp` with no subcommand (stdio).");
145
+ process.exit(1);
146
+ }
147
+ const serveRepoId = resolveRepoId(repoPath, process.env.REPOSKEIN_REPO_ID);
148
+ if (!serveRepoId) {
149
+ console.error(`reposkein serve: could not resolve a repo id for ${repoPath} (no .reposkein/meta.json, no REPOSKEIN_REPO_ID).\n` +
150
+ " Run `reposkein-mcp init` there first.");
151
+ process.exit(1);
152
+ }
153
+ runServe(repoPath, serveRepoId, opts)
154
+ .then((code) => process.exit(code))
155
+ .catch((err) => { console.error(err); process.exit(1); });
156
+ }
358
157
  else {
359
158
  main().catch((err) => { console.error(err); process.exit(1); });
360
159
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;;;uDAKuD;AACvD,SAAS,UAAU,CAAC,QAA4B,EAAE,MAA0B;IAC1E,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACnE,MAAM,UAAU,GACd,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpF,MAAM,KAAK,GAAG,GAAe,EAAE;QAC7B,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,QAAS,EAAE,MAAO,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;IACxF,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,OAAO;IACP,IAAI,UAAU;QAAE,OAAO,IAAI,eAAe,CAAC,QAAS,EAAE,MAAO,CAAC,CAAC;IAC/D,OAAO,KAAK,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,iBAAiB,GACrB,2EAA2E;IAC3E,8EAA8E,CAAC;AAEjF,wFAAwF;AACxF,mGAAmG;AACnG,4FAA4F;AAC5F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;AAEF,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACtE,+EAA+E;IAC/E,+EAA+E;IAC/E,iDAAiD;IACjD,MAAM,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;QAClC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE;QAC3D,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;KAC9C,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,qQAAqQ;QACvQ,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;YACpD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAClC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CACjC,CAAC;IAEF,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,mSAAmS;QACrS,WAAW,EAAE,4BAA4B;KAC1C,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,sMAAsM;QACxM,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,4FAA4F;QAC9F,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM;QACzB,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,gaAAga;QACla,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;YACjD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC/E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAClC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CACF,CAAC;IAEF,2FAA2F;IAC3F,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,4UAA4U;QAC9U,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;KAClC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,+OAA+O;QACjP,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChD,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAClC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9C,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;QAChD,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACxC,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAO,EAAE,QAAS,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,cAAc;QACnC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAO,EAAE,QAAS,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7E,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,8eAA8e;QAChf,WAAW,EAAE,yBAAyB;KACvC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;IAEF,MAAM,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,iPAAiP;QACnP,WAAW,EAAE,4BAA4B;KAC1C,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CACF,CAAC;IAEF,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAO,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,2RAA2R;QAC7R,WAAW,EAAE,2BAA2B;KACzC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CACF,CAAC;IAEF,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAO,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,sXAAsX;QACxX,WAAW,EAAE,wBAAwB;KACtC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,MAAO,EAAE,QAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,8MAA8M;QAChN,WAAW,EAAE,sBAAsB;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CACF,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,yEAAyE;AACzE,4DAA4D;AAC5D,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AACD,IAAI,YAAY,EAAE,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QACzD,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;aAC/B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC;QAC7G,QAAQ,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC;QAC5F,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;aAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC;QACrE,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,kHAAkH,CAAC,CAAC;QACpI,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,IAAI,MAAM,CAAC;QAC7C,MAAM,GAAG,GAAG,SAAS;YACnB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,GAAG;aACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type Dispatcher } from "undici";
1
2
  /** Custom error class for integrity check failures. */
2
3
  export declare class IntegrityError extends Error {
3
4
  constructor(message: string);
@@ -5,6 +6,19 @@ export declare class IntegrityError extends Error {
5
6
  /** `<platform>-<arch>` for the current host, or null if unsupported. */
6
7
  export declare function platformKey(platform?: string, arch?: string): string | null;
7
8
  export declare function isWindows(platform?: string): boolean;
9
+ /** Whether this host has a prebuilt indexer release asset. Convenience
10
+ * wrapper over `platformKey()` for call sites that just need a boolean
11
+ * (e.g. `init`'s pre-flight check, before attempting any fetch). */
12
+ export declare function isSupportedPlatform(platform?: string, arch?: string): boolean;
13
+ /** Printed when a host has no prebuilt indexer (darwin-x64, win32-arm64, …):
14
+ * the from-source fallback plus the offline override env var, so `init` can
15
+ * continue (write agent config, skip only the binary-dependent steps)
16
+ * instead of crashing. See docs/INSTALL.md §2 "Platform support". */
17
+ export declare function cargoInstallFallbackMessage(platform?: string, arch?: string): string;
18
+ export declare function proxyDispatcher(): Dispatcher | undefined;
19
+ /** For testing only: reset the cached proxy dispatcher so env var changes
20
+ * take effect on the next call. */
21
+ export declare function _resetProxyDispatcherCache(): void;
8
22
  /** Release asset name for a platform key, e.g. reposkein-indexer-darwin-arm64. */
9
23
  export declare function assetName(key: string): string;
10
24
  /** GitHub Release download URL for the given version + platform key. */