midnight-mcp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +136 -0
- package/dist/db/index.d.ts +3 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +2 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/vectorStore.d.ts +66 -0
- package/dist/db/vectorStore.d.ts.map +1 -0
- package/dist/db/vectorStore.js +196 -0
- package/dist/db/vectorStore.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/embeddings.d.ts +25 -0
- package/dist/pipeline/embeddings.d.ts.map +1 -0
- package/dist/pipeline/embeddings.js +103 -0
- package/dist/pipeline/embeddings.js.map +1 -0
- package/dist/pipeline/github.d.ts +67 -0
- package/dist/pipeline/github.d.ts.map +1 -0
- package/dist/pipeline/github.js +287 -0
- package/dist/pipeline/github.js.map +1 -0
- package/dist/pipeline/index.d.ts +11 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +6 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/indexer.d.ts +38 -0
- package/dist/pipeline/indexer.d.ts.map +1 -0
- package/dist/pipeline/indexer.js +222 -0
- package/dist/pipeline/indexer.js.map +1 -0
- package/dist/pipeline/parser.d.ts +46 -0
- package/dist/pipeline/parser.d.ts.map +1 -0
- package/dist/pipeline/parser.js +436 -0
- package/dist/pipeline/parser.js.map +1 -0
- package/dist/pipeline/releases.d.ts +112 -0
- package/dist/pipeline/releases.d.ts.map +1 -0
- package/dist/pipeline/releases.js +298 -0
- package/dist/pipeline/releases.js.map +1 -0
- package/dist/pipeline/repository.d.ts +372 -0
- package/dist/pipeline/repository.d.ts.map +1 -0
- package/dist/pipeline/repository.js +517 -0
- package/dist/pipeline/repository.js.map +1 -0
- package/dist/prompts/index.d.ts +3 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +2 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/templates.d.ts +26 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +353 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/resources/code.d.ts +16 -0
- package/dist/resources/code.d.ts.map +1 -0
- package/dist/resources/code.js +630 -0
- package/dist/resources/code.js.map +1 -0
- package/dist/resources/docs.d.ts +16 -0
- package/dist/resources/docs.d.ts.map +1 -0
- package/dist/resources/docs.js +989 -0
- package/dist/resources/docs.js.map +1 -0
- package/dist/resources/index.d.ts +6 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +13 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/schemas.d.ts +16 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +407 -0
- package/dist/resources/schemas.js.map +1 -0
- package/dist/scripts/index-repos.d.ts +12 -0
- package/dist/scripts/index-repos.d.ts.map +1 -0
- package/dist/scripts/index-repos.js +53 -0
- package/dist/scripts/index-repos.js.map +1 -0
- package/dist/server.d.ts +14 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +231 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/analyze.d.ts +140 -0
- package/dist/tools/analyze.d.ts.map +1 -0
- package/dist/tools/analyze.js +270 -0
- package/dist/tools/analyze.js.map +1 -0
- package/dist/tools/index.d.ts +392 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +9 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/repository.d.ts +537 -0
- package/dist/tools/repository.d.ts.map +1 -0
- package/dist/tools/repository.js +654 -0
- package/dist/tools/repository.js.map +1 -0
- package/dist/tools/search.d.ts +204 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +210 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/utils/config.d.ts +66 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +161 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { githubClient } from "../pipeline/index.js";
|
|
3
|
+
import { releaseTracker } from "../pipeline/releases.js";
|
|
4
|
+
import { logger, DEFAULT_REPOSITORIES } from "../utils/index.js";
|
|
5
|
+
// Schema definitions
|
|
6
|
+
export const GetFileInputSchema = z.object({
|
|
7
|
+
repo: z
|
|
8
|
+
.string()
|
|
9
|
+
.describe("Repository name (e.g., 'compact', 'midnight-js', 'example-counter')"),
|
|
10
|
+
path: z.string().describe("File path within repository"),
|
|
11
|
+
ref: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("Branch, tag, or commit SHA (default: main)"),
|
|
15
|
+
});
|
|
16
|
+
export const ListExamplesInputSchema = z.object({
|
|
17
|
+
category: z
|
|
18
|
+
.enum(["counter", "bboard", "token", "voting", "all"])
|
|
19
|
+
.optional()
|
|
20
|
+
.default("all")
|
|
21
|
+
.describe("Filter by example type"),
|
|
22
|
+
});
|
|
23
|
+
export const GetLatestUpdatesInputSchema = z.object({
|
|
24
|
+
since: z
|
|
25
|
+
.string()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("ISO date to fetch updates from (default: last 7 days)"),
|
|
28
|
+
repos: z
|
|
29
|
+
.array(z.string())
|
|
30
|
+
.optional()
|
|
31
|
+
.describe("Specific repos to check (default: all configured repos)"),
|
|
32
|
+
});
|
|
33
|
+
export const GetVersionInfoInputSchema = z.object({
|
|
34
|
+
repo: z.string().describe("Repository name (e.g., 'compact', 'midnight-js')"),
|
|
35
|
+
});
|
|
36
|
+
export const CheckBreakingChangesInputSchema = z.object({
|
|
37
|
+
repo: z.string().describe("Repository name (e.g., 'compact', 'midnight-js')"),
|
|
38
|
+
currentVersion: z
|
|
39
|
+
.string()
|
|
40
|
+
.describe("Version you're currently using (e.g., 'v1.0.0', '0.5.2')"),
|
|
41
|
+
});
|
|
42
|
+
export const GetMigrationGuideInputSchema = z.object({
|
|
43
|
+
repo: z.string().describe("Repository name (e.g., 'compact', 'midnight-js')"),
|
|
44
|
+
fromVersion: z.string().describe("Version you're migrating from"),
|
|
45
|
+
toVersion: z
|
|
46
|
+
.string()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Target version (default: latest stable)"),
|
|
49
|
+
});
|
|
50
|
+
// Repository name mapping
|
|
51
|
+
// Repository name mapping
|
|
52
|
+
const REPO_ALIASES = {
|
|
53
|
+
// Core Language & SDK
|
|
54
|
+
compact: { owner: "midnightntwrk", repo: "compact" },
|
|
55
|
+
"midnight-js": { owner: "midnightntwrk", repo: "midnight-js" },
|
|
56
|
+
js: { owner: "midnightntwrk", repo: "midnight-js" },
|
|
57
|
+
sdk: { owner: "midnightntwrk", repo: "midnight-js" },
|
|
58
|
+
// Documentation
|
|
59
|
+
docs: { owner: "midnightntwrk", repo: "midnight-docs" },
|
|
60
|
+
"midnight-docs": { owner: "midnightntwrk", repo: "midnight-docs" },
|
|
61
|
+
// Example DApps
|
|
62
|
+
"example-counter": { owner: "midnightntwrk", repo: "example-counter" },
|
|
63
|
+
counter: { owner: "midnightntwrk", repo: "example-counter" },
|
|
64
|
+
"example-bboard": { owner: "midnightntwrk", repo: "example-bboard" },
|
|
65
|
+
bboard: { owner: "midnightntwrk", repo: "example-bboard" },
|
|
66
|
+
"example-dex": { owner: "midnightntwrk", repo: "example-dex" },
|
|
67
|
+
dex: { owner: "midnightntwrk", repo: "example-dex" },
|
|
68
|
+
// Developer Tools
|
|
69
|
+
"create-mn-app": { owner: "midnightntwrk", repo: "create-mn-app" },
|
|
70
|
+
"midnight-wallet": { owner: "midnightntwrk", repo: "midnight-wallet" },
|
|
71
|
+
wallet: { owner: "midnightntwrk", repo: "midnight-wallet" },
|
|
72
|
+
// Infrastructure
|
|
73
|
+
"midnight-indexer": { owner: "midnightntwrk", repo: "midnight-indexer" },
|
|
74
|
+
indexer: { owner: "midnightntwrk", repo: "midnight-indexer" },
|
|
75
|
+
"midnight-node-docker": {
|
|
76
|
+
owner: "midnightntwrk",
|
|
77
|
+
repo: "midnight-node-docker",
|
|
78
|
+
},
|
|
79
|
+
node: { owner: "midnightntwrk", repo: "midnight-node-docker" },
|
|
80
|
+
// APIs & Connectors
|
|
81
|
+
"midnight-dapp-connector-api": {
|
|
82
|
+
owner: "midnightntwrk",
|
|
83
|
+
repo: "midnight-dapp-connector-api",
|
|
84
|
+
},
|
|
85
|
+
connector: { owner: "midnightntwrk", repo: "midnight-dapp-connector-api" },
|
|
86
|
+
// Tooling
|
|
87
|
+
"compact-tree-sitter": {
|
|
88
|
+
owner: "midnightntwrk",
|
|
89
|
+
repo: "compact-tree-sitter",
|
|
90
|
+
},
|
|
91
|
+
// Community
|
|
92
|
+
"midnight-awesome-dapps": {
|
|
93
|
+
owner: "midnightntwrk",
|
|
94
|
+
repo: "midnight-awesome-dapps",
|
|
95
|
+
},
|
|
96
|
+
awesome: { owner: "midnightntwrk", repo: "midnight-awesome-dapps" },
|
|
97
|
+
"contributor-hub": { owner: "midnightntwrk", repo: "contributor-hub" },
|
|
98
|
+
};
|
|
99
|
+
const EXAMPLES = [
|
|
100
|
+
{
|
|
101
|
+
name: "Counter",
|
|
102
|
+
repository: "midnightntwrk/example-counter",
|
|
103
|
+
description: "Simple counter contract demonstrating basic Compact concepts. Perfect for learning ledger state, circuits, and witnesses.",
|
|
104
|
+
category: "counter",
|
|
105
|
+
complexity: "beginner",
|
|
106
|
+
mainFile: "contract/src/counter.compact",
|
|
107
|
+
features: [
|
|
108
|
+
"Ledger state management",
|
|
109
|
+
"Basic circuit definition",
|
|
110
|
+
"Counter increment/decrement",
|
|
111
|
+
"TypeScript integration",
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: "Bulletin Board",
|
|
116
|
+
repository: "midnightntwrk/example-bboard",
|
|
117
|
+
description: "Full DApp example with CLI and React UI. Demonstrates posting messages with privacy features.",
|
|
118
|
+
category: "bboard",
|
|
119
|
+
complexity: "intermediate",
|
|
120
|
+
mainFile: "contract/src/bboard.compact",
|
|
121
|
+
features: [
|
|
122
|
+
"Private messaging",
|
|
123
|
+
"Private messaging",
|
|
124
|
+
"React frontend",
|
|
125
|
+
"CLI interface",
|
|
126
|
+
"Wallet integration",
|
|
127
|
+
"Disclose operations",
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: "DEX (Decentralized Exchange)",
|
|
132
|
+
repository: "midnightntwrk/example-dex",
|
|
133
|
+
description: "Advanced DApp example showing token swaps and liquidity pools with privacy-preserving transactions.",
|
|
134
|
+
category: "dex",
|
|
135
|
+
complexity: "advanced",
|
|
136
|
+
mainFile: "contract/src/dex.compact",
|
|
137
|
+
features: [
|
|
138
|
+
"Token swaps",
|
|
139
|
+
"Liquidity pools",
|
|
140
|
+
"Privacy-preserving trades",
|
|
141
|
+
"Price calculations",
|
|
142
|
+
"Advanced state management",
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
/**
|
|
147
|
+
* Resolve repository name alias to owner/repo
|
|
148
|
+
*/
|
|
149
|
+
function resolveRepo(repoName) {
|
|
150
|
+
const normalized = repoName.toLowerCase().replace(/^midnightntwrk\//, "");
|
|
151
|
+
const alias = REPO_ALIASES[normalized];
|
|
152
|
+
if (alias)
|
|
153
|
+
return alias;
|
|
154
|
+
// Try to find in configured repos
|
|
155
|
+
for (const config of DEFAULT_REPOSITORIES) {
|
|
156
|
+
if (config.repo.toLowerCase() === normalized) {
|
|
157
|
+
return { owner: config.owner, repo: config.repo };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Assume it's a full org/repo name
|
|
161
|
+
if (repoName.includes("/")) {
|
|
162
|
+
const [owner, repo] = repoName.split("/");
|
|
163
|
+
return { owner, repo };
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Retrieve a specific file from Midnight repositories
|
|
169
|
+
*/
|
|
170
|
+
export async function getFile(input) {
|
|
171
|
+
logger.debug("Getting file", { repo: input.repo, path: input.path });
|
|
172
|
+
const repoInfo = resolveRepo(input.repo);
|
|
173
|
+
if (!repoInfo) {
|
|
174
|
+
return {
|
|
175
|
+
error: `Unknown repository: ${input.repo}`,
|
|
176
|
+
suggestion: `Valid repositories: ${Object.keys(REPO_ALIASES).join(", ")}`,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const file = await githubClient.getFileContent(repoInfo.owner, repoInfo.repo, input.path, input.ref);
|
|
180
|
+
if (!file) {
|
|
181
|
+
return {
|
|
182
|
+
error: `File not found: ${input.path}`,
|
|
183
|
+
repository: `${repoInfo.owner}/${repoInfo.repo}`,
|
|
184
|
+
suggestion: "Check the file path and try again. Use midnight:list-examples to see available example files.",
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
content: file.content,
|
|
189
|
+
path: file.path,
|
|
190
|
+
repository: `${repoInfo.owner}/${repoInfo.repo}`,
|
|
191
|
+
sha: file.sha,
|
|
192
|
+
size: file.size,
|
|
193
|
+
url: `https://github.com/${repoInfo.owner}/${repoInfo.repo}/blob/${input.ref || "main"}/${file.path}`,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* List available example contracts and DApps
|
|
198
|
+
*/
|
|
199
|
+
export async function listExamples(input) {
|
|
200
|
+
logger.debug("Listing examples", { category: input.category });
|
|
201
|
+
let filteredExamples = EXAMPLES;
|
|
202
|
+
if (input.category !== "all") {
|
|
203
|
+
filteredExamples = EXAMPLES.filter((e) => e.category === input.category);
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
examples: filteredExamples.map((e) => ({
|
|
207
|
+
name: e.name,
|
|
208
|
+
repository: e.repository,
|
|
209
|
+
description: e.description,
|
|
210
|
+
complexity: e.complexity,
|
|
211
|
+
mainFile: e.mainFile,
|
|
212
|
+
features: e.features,
|
|
213
|
+
githubUrl: `https://github.com/${e.repository}`,
|
|
214
|
+
})),
|
|
215
|
+
totalCount: filteredExamples.length,
|
|
216
|
+
categories: [...new Set(EXAMPLES.map((e) => e.category))],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Retrieve recent changes across Midnight repositories
|
|
221
|
+
*/
|
|
222
|
+
export async function getLatestUpdates(input) {
|
|
223
|
+
logger.debug("Getting latest updates", input);
|
|
224
|
+
// Default to last 7 days
|
|
225
|
+
const since = input.since || new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
|
|
226
|
+
const repos = input.repos?.map(resolveRepo).filter(Boolean) ||
|
|
227
|
+
DEFAULT_REPOSITORIES.map((r) => ({ owner: r.owner, repo: r.repo }));
|
|
228
|
+
const updates = [];
|
|
229
|
+
for (const repo of repos) {
|
|
230
|
+
if (!repo)
|
|
231
|
+
continue;
|
|
232
|
+
const commits = await githubClient.getRecentCommits(repo.owner, repo.repo, since, 10);
|
|
233
|
+
if (commits.length > 0) {
|
|
234
|
+
updates.push({
|
|
235
|
+
repository: `${repo.owner}/${repo.repo}`,
|
|
236
|
+
commits,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Sort by most recent commit
|
|
241
|
+
updates.sort((a, b) => {
|
|
242
|
+
const aDate = a.commits[0]?.date || "";
|
|
243
|
+
const bDate = b.commits[0]?.date || "";
|
|
244
|
+
return bDate.localeCompare(aDate);
|
|
245
|
+
});
|
|
246
|
+
// Generate summary
|
|
247
|
+
const totalCommits = updates.reduce((sum, u) => sum + u.commits.length, 0);
|
|
248
|
+
const activeRepos = updates.filter((u) => u.commits.length > 0).length;
|
|
249
|
+
return {
|
|
250
|
+
summary: {
|
|
251
|
+
since,
|
|
252
|
+
totalCommits,
|
|
253
|
+
activeRepositories: activeRepos,
|
|
254
|
+
checkedRepositories: repos.length,
|
|
255
|
+
},
|
|
256
|
+
updates: updates.map((u) => ({
|
|
257
|
+
repository: u.repository,
|
|
258
|
+
commitCount: u.commits.length,
|
|
259
|
+
latestCommit: u.commits[0]
|
|
260
|
+
? {
|
|
261
|
+
message: u.commits[0].message.split("\n")[0], // First line only
|
|
262
|
+
date: u.commits[0].date,
|
|
263
|
+
author: u.commits[0].author,
|
|
264
|
+
url: u.commits[0].url,
|
|
265
|
+
}
|
|
266
|
+
: null,
|
|
267
|
+
recentCommits: u.commits.slice(0, 5).map((c) => ({
|
|
268
|
+
message: c.message.split("\n")[0],
|
|
269
|
+
date: c.date,
|
|
270
|
+
sha: c.sha.substring(0, 7),
|
|
271
|
+
})),
|
|
272
|
+
})),
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Get version and release info for a repository
|
|
277
|
+
*/
|
|
278
|
+
export async function getVersionInfo(input) {
|
|
279
|
+
logger.debug("Getting version info", input);
|
|
280
|
+
// Special handling for "midnight-examples" - redirect to listing examples
|
|
281
|
+
const normalizedRepo = input.repo.toLowerCase();
|
|
282
|
+
if (normalizedRepo === "midnight-examples" || normalizedRepo === "examples") {
|
|
283
|
+
const exampleRepos = ["example-counter", "example-bboard", "example-dex"];
|
|
284
|
+
const versions = await Promise.all(exampleRepos.map(async (repoName) => {
|
|
285
|
+
const resolved = resolveRepo(repoName);
|
|
286
|
+
if (!resolved)
|
|
287
|
+
return null;
|
|
288
|
+
try {
|
|
289
|
+
const versionInfo = await releaseTracker.getVersionInfo(resolved.owner, resolved.repo);
|
|
290
|
+
return {
|
|
291
|
+
name: repoName,
|
|
292
|
+
repository: `${resolved.owner}/${resolved.repo}`,
|
|
293
|
+
latestVersion: versionInfo.latestRelease?.tag || "No releases",
|
|
294
|
+
publishedAt: versionInfo.latestRelease?.publishedAt || null,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
return {
|
|
299
|
+
name: repoName,
|
|
300
|
+
repository: `${resolved.owner}/${resolved.repo}`,
|
|
301
|
+
latestVersion: "Unable to fetch",
|
|
302
|
+
publishedAt: null,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}));
|
|
306
|
+
return {
|
|
307
|
+
note: "There is no single 'midnight-examples' repository. Examples are split across multiple repos:",
|
|
308
|
+
examples: versions.filter(Boolean),
|
|
309
|
+
availableExamples: EXAMPLES.map((e) => ({
|
|
310
|
+
name: e.name,
|
|
311
|
+
repository: e.repository,
|
|
312
|
+
description: e.description,
|
|
313
|
+
complexity: e.complexity,
|
|
314
|
+
})),
|
|
315
|
+
hint: "Use 'counter', 'bboard', or 'dex' as repo aliases to get specific example info.",
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
const resolved = resolveRepo(input.repo);
|
|
319
|
+
if (!resolved) {
|
|
320
|
+
throw new Error(`Unknown repository: ${input.repo}. Available: ${Object.keys(REPO_ALIASES).join(", ")}`);
|
|
321
|
+
}
|
|
322
|
+
const versionInfo = await releaseTracker.getVersionInfo(resolved.owner, resolved.repo);
|
|
323
|
+
return {
|
|
324
|
+
repository: `${resolved.owner}/${resolved.repo}`,
|
|
325
|
+
latestVersion: versionInfo.latestRelease?.tag || "No releases found",
|
|
326
|
+
latestStableVersion: versionInfo.latestStableRelease?.tag || "No stable releases",
|
|
327
|
+
publishedAt: versionInfo.latestRelease?.publishedAt || null,
|
|
328
|
+
releaseNotes: versionInfo.latestRelease?.body || null,
|
|
329
|
+
recentReleases: versionInfo.recentReleases.slice(0, 5).map((r) => ({
|
|
330
|
+
version: r.tag,
|
|
331
|
+
date: r.publishedAt.split("T")[0],
|
|
332
|
+
isPrerelease: r.isPrerelease,
|
|
333
|
+
url: r.url,
|
|
334
|
+
})),
|
|
335
|
+
recentBreakingChanges: versionInfo.changelog
|
|
336
|
+
.slice(0, 3)
|
|
337
|
+
.flatMap((c) => c.changes.breaking)
|
|
338
|
+
.slice(0, 10),
|
|
339
|
+
versionContext: releaseTracker.getVersionContext(versionInfo),
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Check for breaking changes since a specific version
|
|
344
|
+
*/
|
|
345
|
+
export async function checkBreakingChanges(input) {
|
|
346
|
+
logger.debug("Checking breaking changes", input);
|
|
347
|
+
const resolved = resolveRepo(input.repo);
|
|
348
|
+
if (!resolved) {
|
|
349
|
+
throw new Error(`Unknown repository: ${input.repo}. Available: ${Object.keys(REPO_ALIASES).join(", ")}`);
|
|
350
|
+
}
|
|
351
|
+
const outdatedInfo = await releaseTracker.isOutdated(resolved.owner, resolved.repo, input.currentVersion);
|
|
352
|
+
const breakingChanges = await releaseTracker.getBreakingChangesSince(resolved.owner, resolved.repo, input.currentVersion);
|
|
353
|
+
return {
|
|
354
|
+
repository: `${resolved.owner}/${resolved.repo}`,
|
|
355
|
+
currentVersion: input.currentVersion,
|
|
356
|
+
latestVersion: outdatedInfo.latestVersion,
|
|
357
|
+
isOutdated: outdatedInfo.isOutdated,
|
|
358
|
+
versionsBehind: outdatedInfo.versionsBehind,
|
|
359
|
+
hasBreakingChanges: outdatedInfo.hasBreakingChanges,
|
|
360
|
+
breakingChanges: breakingChanges,
|
|
361
|
+
recommendation: outdatedInfo.hasBreakingChanges
|
|
362
|
+
? `⚠️ Breaking changes detected! Review the ${breakingChanges.length} breaking change(s) before upgrading.`
|
|
363
|
+
: outdatedInfo.isOutdated
|
|
364
|
+
? `✅ Safe to upgrade. No breaking changes detected since ${input.currentVersion}.`
|
|
365
|
+
: `✅ You're on the latest version.`,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Get migration guide between versions
|
|
370
|
+
*/
|
|
371
|
+
export async function getMigrationGuide(input) {
|
|
372
|
+
logger.debug("Getting migration guide", input);
|
|
373
|
+
const resolved = resolveRepo(input.repo);
|
|
374
|
+
if (!resolved) {
|
|
375
|
+
throw new Error(`Unknown repository: ${input.repo}. Available: ${Object.keys(REPO_ALIASES).join(", ")}`);
|
|
376
|
+
}
|
|
377
|
+
const guide = await releaseTracker.getMigrationGuide(resolved.owner, resolved.repo, input.fromVersion, input.toVersion);
|
|
378
|
+
return {
|
|
379
|
+
repository: `${resolved.owner}/${resolved.repo}`,
|
|
380
|
+
from: guide.from,
|
|
381
|
+
to: guide.to,
|
|
382
|
+
summary: {
|
|
383
|
+
breakingChangesCount: guide.breakingChanges.length,
|
|
384
|
+
deprecationsCount: guide.deprecations.length,
|
|
385
|
+
newFeaturesCount: guide.newFeatures.length,
|
|
386
|
+
},
|
|
387
|
+
breakingChanges: guide.breakingChanges,
|
|
388
|
+
deprecations: guide.deprecations,
|
|
389
|
+
newFeatures: guide.newFeatures,
|
|
390
|
+
migrationSteps: guide.migrationSteps,
|
|
391
|
+
migrationDifficulty: guide.breakingChanges.length === 0
|
|
392
|
+
? "Easy - No breaking changes"
|
|
393
|
+
: guide.breakingChanges.length <= 3
|
|
394
|
+
? "Moderate - Few breaking changes"
|
|
395
|
+
: "Complex - Multiple breaking changes, plan carefully",
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
// Tool definitions for MCP
|
|
399
|
+
export const repositoryTools = [
|
|
400
|
+
{
|
|
401
|
+
name: "midnight:get-file",
|
|
402
|
+
description: "Retrieve a specific file from Midnight repositories. Use repository aliases like 'compact', 'midnight-js', 'counter', or 'bboard' for convenience.",
|
|
403
|
+
inputSchema: {
|
|
404
|
+
type: "object",
|
|
405
|
+
properties: {
|
|
406
|
+
repo: {
|
|
407
|
+
type: "string",
|
|
408
|
+
description: "Repository name (e.g., 'compact', 'midnight-js', 'example-counter')",
|
|
409
|
+
},
|
|
410
|
+
path: {
|
|
411
|
+
type: "string",
|
|
412
|
+
description: "File path within repository",
|
|
413
|
+
},
|
|
414
|
+
ref: {
|
|
415
|
+
type: "string",
|
|
416
|
+
description: "Branch, tag, or commit SHA (default: main)",
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
required: ["repo", "path"],
|
|
420
|
+
},
|
|
421
|
+
handler: getFile,
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: "midnight:list-examples",
|
|
425
|
+
description: "List available Midnight example contracts and DApps with descriptions, complexity ratings, and key features.",
|
|
426
|
+
inputSchema: {
|
|
427
|
+
type: "object",
|
|
428
|
+
properties: {
|
|
429
|
+
category: {
|
|
430
|
+
type: "string",
|
|
431
|
+
enum: ["counter", "bboard", "token", "voting", "all"],
|
|
432
|
+
description: "Filter by example type (default: all)",
|
|
433
|
+
},
|
|
434
|
+
},
|
|
435
|
+
required: [],
|
|
436
|
+
},
|
|
437
|
+
handler: listExamples,
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: "midnight:get-latest-updates",
|
|
441
|
+
description: "Retrieve recent changes and commits across Midnight repositories. Useful for staying up-to-date with the latest developments.",
|
|
442
|
+
inputSchema: {
|
|
443
|
+
type: "object",
|
|
444
|
+
properties: {
|
|
445
|
+
since: {
|
|
446
|
+
type: "string",
|
|
447
|
+
description: "ISO date to fetch updates from (default: last 7 days)",
|
|
448
|
+
},
|
|
449
|
+
repos: {
|
|
450
|
+
type: "array",
|
|
451
|
+
items: { type: "string" },
|
|
452
|
+
description: "Specific repos to check (default: all configured repos)",
|
|
453
|
+
},
|
|
454
|
+
},
|
|
455
|
+
required: [],
|
|
456
|
+
},
|
|
457
|
+
handler: getLatestUpdates,
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
name: "midnight:get-version-info",
|
|
461
|
+
description: "Get the latest version, release notes, and recent breaking changes for a Midnight repository. Use this to ensure you're working with the latest implementation.",
|
|
462
|
+
inputSchema: {
|
|
463
|
+
type: "object",
|
|
464
|
+
properties: {
|
|
465
|
+
repo: {
|
|
466
|
+
type: "string",
|
|
467
|
+
description: "Repository name (e.g., 'compact', 'midnight-js', 'sdk')",
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
required: ["repo"],
|
|
471
|
+
},
|
|
472
|
+
handler: getVersionInfo,
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
name: "midnight:check-breaking-changes",
|
|
476
|
+
description: "Check if there are breaking changes between your current version and the latest release. Essential before upgrading dependencies.",
|
|
477
|
+
inputSchema: {
|
|
478
|
+
type: "object",
|
|
479
|
+
properties: {
|
|
480
|
+
repo: {
|
|
481
|
+
type: "string",
|
|
482
|
+
description: "Repository name (e.g., 'compact', 'midnight-js')",
|
|
483
|
+
},
|
|
484
|
+
currentVersion: {
|
|
485
|
+
type: "string",
|
|
486
|
+
description: "Version you're currently using (e.g., 'v1.0.0', '0.5.2')",
|
|
487
|
+
},
|
|
488
|
+
},
|
|
489
|
+
required: ["repo", "currentVersion"],
|
|
490
|
+
},
|
|
491
|
+
handler: checkBreakingChanges,
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: "midnight:get-migration-guide",
|
|
495
|
+
description: "Get a detailed migration guide for upgrading between versions, including all breaking changes, deprecations, and recommended steps.",
|
|
496
|
+
inputSchema: {
|
|
497
|
+
type: "object",
|
|
498
|
+
properties: {
|
|
499
|
+
repo: {
|
|
500
|
+
type: "string",
|
|
501
|
+
description: "Repository name (e.g., 'compact', 'midnight-js')",
|
|
502
|
+
},
|
|
503
|
+
fromVersion: {
|
|
504
|
+
type: "string",
|
|
505
|
+
description: "Version you're migrating from",
|
|
506
|
+
},
|
|
507
|
+
toVersion: {
|
|
508
|
+
type: "string",
|
|
509
|
+
description: "Target version (default: latest stable)",
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
required: ["repo", "fromVersion"],
|
|
513
|
+
},
|
|
514
|
+
handler: getMigrationGuide,
|
|
515
|
+
},
|
|
516
|
+
];
|
|
517
|
+
//# sourceMappingURL=repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/pipeline/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface PromptDefinition {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
arguments: Array<{
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export interface PromptMessage {
|
|
11
|
+
role: "user" | "assistant";
|
|
12
|
+
content: {
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare const promptDefinitions: PromptDefinition[];
|
|
18
|
+
/**
|
|
19
|
+
* Generate prompt messages based on template and arguments
|
|
20
|
+
*/
|
|
21
|
+
export declare function generatePrompt(name: string, args: Record<string, string>): PromptMessage[];
|
|
22
|
+
/**
|
|
23
|
+
* List all available prompts
|
|
24
|
+
*/
|
|
25
|
+
export declare function listPrompts(): PromptDefinition[];
|
|
26
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/prompts/templates.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAGD,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,EAyF/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,aAAa,EAAE,CAuBjB;AAiQD;;GAEG;AACH,wBAAgB,WAAW,IAAI,gBAAgB,EAAE,CAEhD"}
|