@modootoday/pmcp 0.9.0 → 0.9.2
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/README.md +10 -6
- package/dist/{chunk-PXNRZXL6.js → chunk-A5NOHVHN.js} +38 -29
- package/dist/{chunk-AKPSLZRJ.js → chunk-CMZ7OTQD.js} +2 -2
- package/dist/{chunk-PWEAKJZ3.js → chunk-D3OZVMHN.js} +2 -2
- package/dist/{chunk-Y7UX36AC.js → chunk-EIHMCKY5.js} +2 -2
- package/dist/{chunk-RYOLBTSW.js → chunk-KYW3VP3L.js} +2 -2
- package/dist/cli.js +6 -6
- package/dist/http.d.ts +1 -1
- package/dist/http.js +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{server-BBZDjzWZ.d.ts → server-C9eO6LMI.d.ts} +13 -13
- package/dist/stdio.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -142,21 +142,25 @@ breaks the specification is reported, and `pmcp validate [<skill-dir>...]` check
|
|
|
142
142
|
directories or every skill the catalog reaches (name rules and length, description and
|
|
143
143
|
compatibility length, field types, name matching the directory, duplicate names).
|
|
144
144
|
|
|
145
|
-
`metadata` keeps strings, string lists and maps of those one level down
|
|
146
|
-
`requires: {mcp,
|
|
147
|
-
nesting is dropped.
|
|
145
|
+
`metadata` keeps strings, string lists and maps of those one level down; `skill_describe`
|
|
146
|
+
reports a map as dotted keys, so `requires: {mcp, gpu-gb}` arrives as `requires.mcp` and
|
|
147
|
+
`requires.gpu-gb`. Deeper nesting is dropped.
|
|
148
|
+
|
|
149
|
+
Output schemas accept additional properties, so a field added later does not break a
|
|
150
|
+
client that cached an earlier tool list. An answer to a call without the newer inputs keeps
|
|
151
|
+
the earlier shape.
|
|
148
152
|
|
|
149
153
|
Since 0.9.0 a skill can list `metadata.verified-runtimes`, a list drawn from `claude-code`,
|
|
150
154
|
`codex-cli`, `gemini-cli`, `grok-cli` and `antigravity`, meaning its effect was verified on
|
|
151
|
-
that runtime. `skill_find` and `skill_catalog`
|
|
152
|
-
|
|
155
|
+
that runtime. `skill_find` and `skill_catalog` accept `runtime` and `verifiedOnly`; when either
|
|
156
|
+
is given, items carry `verifiedRuntimes` (omitted when empty). `runtime` never removes a skill: it marks
|
|
153
157
|
each item `verified` and lists verified ones first (within a package group in
|
|
154
158
|
`skill_catalog`). `verifiedOnly` drops the rest, keeping those verified on `runtime`, or on
|
|
155
159
|
any runtime when none is given. Without `runtime` the answer is ordered exactly as before.
|
|
156
160
|
A server can opt in with `rankByClientRuntime: true`: then, when `runtime` is not passed and
|
|
157
161
|
the MCP client's name is recognised (`claude-code`, `codex`, `gemini`, `grok`,
|
|
158
162
|
`antigravity`), that runtime is used for the ordering only, never for filtering.
|
|
159
|
-
`skill_find` answers with `runtime`, the one the ordering used, or `null`.
|
|
163
|
+
`skill_find` then answers with `runtime`, the one the ordering used, or `null`.
|
|
160
164
|
|
|
161
165
|
`pmcp serve --prompts` also offers one prompt per skill, for hosts that turn prompts into
|
|
162
166
|
commands; the prompt's text is the skill body and its file list, with an optional `task`.
|
|
@@ -1103,7 +1103,8 @@ function matches(entry, filters) {
|
|
|
1103
1103
|
}
|
|
1104
1104
|
return true;
|
|
1105
1105
|
}
|
|
1106
|
-
function verification(entry, runtime) {
|
|
1106
|
+
function verification(entry, runtime, asked) {
|
|
1107
|
+
if (!asked) return {};
|
|
1107
1108
|
const verifiedRuntimes = verifiedRuntimesOf(entry?.metadata);
|
|
1108
1109
|
return {
|
|
1109
1110
|
...verifiedRuntimes.length > 0 ? { verifiedRuntimes } : {},
|
|
@@ -1116,15 +1117,28 @@ function verifiedFirst(items) {
|
|
|
1116
1117
|
...items.filter((item) => item.verified !== true)
|
|
1117
1118
|
];
|
|
1118
1119
|
}
|
|
1119
|
-
function catalogItem(entry, runtime) {
|
|
1120
|
+
function catalogItem(entry, runtime, asked) {
|
|
1120
1121
|
return {
|
|
1121
1122
|
name: entry.name,
|
|
1122
1123
|
description: entry.description,
|
|
1123
1124
|
...entry.tier === void 0 ? {} : { tier: entry.tier },
|
|
1124
1125
|
...kindOf(entry) === "skill" ? {} : { kind: kindOf(entry) },
|
|
1125
|
-
...verification(entry, runtime)
|
|
1126
|
+
...verification(entry, runtime, asked)
|
|
1126
1127
|
};
|
|
1127
1128
|
}
|
|
1129
|
+
function flatMetadata(metadata) {
|
|
1130
|
+
const flat = {};
|
|
1131
|
+
for (const [key, value] of Object.entries(metadata ?? {})) {
|
|
1132
|
+
if (typeof value === "string" || Array.isArray(value)) {
|
|
1133
|
+
flat[key] = value;
|
|
1134
|
+
continue;
|
|
1135
|
+
}
|
|
1136
|
+
for (const [inner, leaf] of Object.entries(value ?? {})) {
|
|
1137
|
+
flat[`${key}.${inner}`] = leaf;
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
return flat;
|
|
1141
|
+
}
|
|
1128
1142
|
function createSkillTools(options) {
|
|
1129
1143
|
const load = options.loadCatalog ?? readCatalog;
|
|
1130
1144
|
let entries = null;
|
|
@@ -1149,6 +1163,7 @@ function createSkillTools(options) {
|
|
|
1149
1163
|
catalog(request = {}) {
|
|
1150
1164
|
const client = options.rankByClientRuntime ? request.clientRuntime : null;
|
|
1151
1165
|
const runtime = request.runtime ?? client ?? null;
|
|
1166
|
+
const asked = runtime !== null || request.verifiedOnly !== void 0;
|
|
1152
1167
|
const byPackage = /* @__PURE__ */ new Map();
|
|
1153
1168
|
let count = 0;
|
|
1154
1169
|
for (const entry of catalog()) {
|
|
@@ -1161,7 +1176,7 @@ function createSkillTools(options) {
|
|
|
1161
1176
|
continue;
|
|
1162
1177
|
count += 1;
|
|
1163
1178
|
const list = byPackage.get(entry.package) ?? [];
|
|
1164
|
-
list.push(catalogItem(entry, runtime));
|
|
1179
|
+
list.push(catalogItem(entry, runtime, asked));
|
|
1165
1180
|
byPackage.set(entry.package, list);
|
|
1166
1181
|
}
|
|
1167
1182
|
const groups = [...byPackage.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([pkg, skills]) => [
|
|
@@ -1186,6 +1201,7 @@ function createSkillTools(options) {
|
|
|
1186
1201
|
find(intent, limit, filters, clientRuntime) {
|
|
1187
1202
|
const client = options.rankByClientRuntime ? clientRuntime : null;
|
|
1188
1203
|
const runtime = filters?.runtime ?? client ?? null;
|
|
1204
|
+
const asked = runtime !== null || filters?.verifiedOnly !== void 0;
|
|
1189
1205
|
const scoped = catalog().filter((entry) => matches(entry, filters)).map(
|
|
1190
1206
|
(entry) => entry.keywords && entry.keywords.length > 0 ? {
|
|
1191
1207
|
...entry,
|
|
@@ -1205,13 +1221,13 @@ function createSkillTools(options) {
|
|
|
1205
1221
|
return {
|
|
1206
1222
|
...match,
|
|
1207
1223
|
description: entry?.description ?? match.description,
|
|
1208
|
-
...verification(entry, runtime)
|
|
1224
|
+
...verification(entry, runtime, asked)
|
|
1209
1225
|
};
|
|
1210
1226
|
});
|
|
1211
1227
|
const ordered = runtime === null ? marked : verifiedFirst(marked);
|
|
1212
1228
|
return {
|
|
1213
1229
|
...result,
|
|
1214
|
-
runtime,
|
|
1230
|
+
...asked ? { runtime } : {},
|
|
1215
1231
|
matches: runtime === null ? ordered : ordered.slice(0, limit ?? DEFAULT_FIND_LIMIT)
|
|
1216
1232
|
};
|
|
1217
1233
|
});
|
|
@@ -1228,9 +1244,9 @@ function createSkillTools(options) {
|
|
|
1228
1244
|
package: entry.package,
|
|
1229
1245
|
description: entry.description,
|
|
1230
1246
|
...entry.tier === void 0 ? {} : { tier: entry.tier },
|
|
1231
|
-
metadata: entry.metadata
|
|
1247
|
+
metadata: flatMetadata(entry.metadata),
|
|
1232
1248
|
frontmatter: readFrontmatterText(source),
|
|
1233
|
-
files:
|
|
1249
|
+
files: listing2.files.map((file) => ({ ...file })),
|
|
1234
1250
|
filesTruncated: listing2.truncated
|
|
1235
1251
|
};
|
|
1236
1252
|
},
|
|
@@ -1404,7 +1420,7 @@ function registerSkillsExtension(server, skills, options = {}) {
|
|
|
1404
1420
|
import { z as z3 } from "zod";
|
|
1405
1421
|
var kind = z3.enum(ASSET_KINDS);
|
|
1406
1422
|
var runtimeSchema = z3.enum(RUNTIMES);
|
|
1407
|
-
var catalogItemSchema = z3.
|
|
1423
|
+
var catalogItemSchema = z3.looseObject({
|
|
1408
1424
|
name: z3.string(),
|
|
1409
1425
|
description: z3.string(),
|
|
1410
1426
|
tier: z3.string().optional(),
|
|
@@ -1412,20 +1428,20 @@ var catalogItemSchema = z3.object({
|
|
|
1412
1428
|
verifiedRuntimes: z3.array(runtimeSchema).optional(),
|
|
1413
1429
|
verified: z3.boolean().optional()
|
|
1414
1430
|
});
|
|
1415
|
-
var catalogResponseSchema = z3.
|
|
1431
|
+
var catalogResponseSchema = z3.looseObject({
|
|
1416
1432
|
count: z3.number().int(),
|
|
1417
1433
|
page: z3.number().int(),
|
|
1418
1434
|
totalPages: z3.number().int(),
|
|
1419
1435
|
hasNext: z3.boolean(),
|
|
1420
1436
|
packages: z3.array(
|
|
1421
|
-
z3.
|
|
1437
|
+
z3.looseObject({ package: z3.string(), skills: z3.array(catalogItemSchema) })
|
|
1422
1438
|
)
|
|
1423
1439
|
});
|
|
1424
|
-
var findResultSchema = z3.
|
|
1440
|
+
var findResultSchema = z3.looseObject({
|
|
1425
1441
|
ranking: z3.enum(["semantic", "lexical"]),
|
|
1426
|
-
runtime: runtimeSchema.nullable(),
|
|
1442
|
+
runtime: runtimeSchema.nullable().optional(),
|
|
1427
1443
|
matches: z3.array(
|
|
1428
|
-
z3.
|
|
1444
|
+
z3.looseObject({
|
|
1429
1445
|
name: z3.string(),
|
|
1430
1446
|
package: z3.string(),
|
|
1431
1447
|
description: z3.string(),
|
|
@@ -1435,16 +1451,12 @@ var findResultSchema = z3.object({
|
|
|
1435
1451
|
})
|
|
1436
1452
|
)
|
|
1437
1453
|
});
|
|
1438
|
-
var skillFileSchema = z3.
|
|
1454
|
+
var skillFileSchema = z3.looseObject({
|
|
1439
1455
|
path: z3.string(),
|
|
1440
1456
|
bytes: z3.number().int(),
|
|
1441
1457
|
sha256: z3.string()
|
|
1442
1458
|
});
|
|
1443
|
-
var
|
|
1444
|
-
z3.string(),
|
|
1445
|
-
z3.array(z3.string()).readonly()
|
|
1446
|
-
]);
|
|
1447
|
-
var describeResponseSchema = z3.object({
|
|
1459
|
+
var describeResponseSchema = z3.looseObject({
|
|
1448
1460
|
name: z3.string(),
|
|
1449
1461
|
kind,
|
|
1450
1462
|
package: z3.string(),
|
|
@@ -1452,16 +1464,13 @@ var describeResponseSchema = z3.object({
|
|
|
1452
1464
|
tier: z3.string().optional(),
|
|
1453
1465
|
metadata: z3.record(
|
|
1454
1466
|
z3.string(),
|
|
1455
|
-
z3.union([
|
|
1456
|
-
metadataLeafSchema,
|
|
1457
|
-
z3.record(z3.string(), metadataLeafSchema).readonly()
|
|
1458
|
-
])
|
|
1467
|
+
z3.union([z3.string(), z3.array(z3.string()).readonly()])
|
|
1459
1468
|
),
|
|
1460
1469
|
frontmatter: z3.string(),
|
|
1461
1470
|
files: z3.array(skillFileSchema),
|
|
1462
1471
|
filesTruncated: z3.boolean()
|
|
1463
1472
|
});
|
|
1464
|
-
var bundleResponseSchema = z3.
|
|
1473
|
+
var bundleResponseSchema = z3.looseObject({
|
|
1465
1474
|
name: z3.string(),
|
|
1466
1475
|
truncated: z3.boolean(),
|
|
1467
1476
|
files: z3.array(
|
|
@@ -1521,7 +1530,7 @@ var kindInput = z4.enum(["skill", "agent", "hook", "mcp", "any"]).optional().des
|
|
|
1521
1530
|
);
|
|
1522
1531
|
var tierInput = z4.enum(["open", "free", "paid", "internal"]).optional();
|
|
1523
1532
|
var runtimeInput = runtimeSchema.optional().describe(
|
|
1524
|
-
"A runtime (claude-code, codex-cli, gemini-cli, grok-cli, antigravity). Skills whose metadata.verified-runtimes lists it are marked verified and listed first; the rest are kept. Without it, the
|
|
1533
|
+
"A runtime (claude-code, codex-cli, gemini-cli, grok-cli, antigravity). Skills whose metadata.verified-runtimes lists it are marked verified and listed first; the rest are kept. Without it, the order is the same as without verification data."
|
|
1525
1534
|
);
|
|
1526
1535
|
var verifiedOnlyInput = z4.boolean().optional().describe(
|
|
1527
1536
|
"Drop skills that are not verified: on the given runtime, or on any runtime when none is given. The detected client runtime never filters."
|
|
@@ -1641,7 +1650,7 @@ function registerDescribeTool(server, tools) {
|
|
|
1641
1650
|
"skill_describe",
|
|
1642
1651
|
{
|
|
1643
1652
|
...readOnlyTool("Describe a skill"),
|
|
1644
|
-
description: "One skill's frontmatter, metadata (tier, level, requirements as
|
|
1653
|
+
description: "One skill's frontmatter, metadata (tier, level, requirements as requires.<name> entries, verified-runtimes, licence, approval), and the files it carries with sizes and sha256, without any body.",
|
|
1645
1654
|
inputSchema: z8.object({ name: skillNameInput }),
|
|
1646
1655
|
outputSchema: describeResponseSchema
|
|
1647
1656
|
},
|
|
@@ -1718,7 +1727,7 @@ function registerReadTool(server, tools) {
|
|
|
1718
1727
|
|
|
1719
1728
|
// src/mcp.ts
|
|
1720
1729
|
var SERVER_NAME = "pmcp";
|
|
1721
|
-
var SERVER_VERSION = "0.9.
|
|
1730
|
+
var SERVER_VERSION = "0.9.2";
|
|
1722
1731
|
function registerSkillTools(server, tools) {
|
|
1723
1732
|
registerCatalogTool(server, tools);
|
|
1724
1733
|
registerFindTool(server, tools);
|
|
@@ -1793,4 +1802,4 @@ export {
|
|
|
1793
1802
|
registerSkillTools,
|
|
1794
1803
|
createSkillServer
|
|
1795
1804
|
};
|
|
1796
|
-
//# sourceMappingURL=chunk-
|
|
1805
|
+
//# sourceMappingURL=chunk-A5NOHVHN.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normaliseIntent
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A5NOHVHN.js";
|
|
4
4
|
|
|
5
5
|
// src/cache.ts
|
|
6
6
|
async function openDatabase(path) {
|
|
@@ -131,4 +131,4 @@ export {
|
|
|
131
131
|
DEFAULT_INTENT_CACHE_LIMIT,
|
|
132
132
|
openIntentCache
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
134
|
+
//# sourceMappingURL=chunk-CMZ7OTQD.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
frontmatterObject,
|
|
3
3
|
readCatalog,
|
|
4
4
|
specProblems
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-A5NOHVHN.js";
|
|
6
6
|
|
|
7
7
|
// src/config.ts
|
|
8
8
|
import { existsSync, readFileSync } from "fs";
|
|
@@ -1139,4 +1139,4 @@ export {
|
|
|
1139
1139
|
validateSkillDir,
|
|
1140
1140
|
validateCatalog
|
|
1141
1141
|
};
|
|
1142
|
-
//# sourceMappingURL=chunk-
|
|
1142
|
+
//# sourceMappingURL=chunk-D3OZVMHN.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createSkillServer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A5NOHVHN.js";
|
|
4
4
|
|
|
5
5
|
// src/stdio.ts
|
|
6
6
|
import { serveStdio } from "@modelcontextprotocol/server/stdio";
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
serve,
|
|
39
39
|
main
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-EIHMCKY5.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
openDatabase
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CMZ7OTQD.js";
|
|
4
4
|
|
|
5
5
|
// src/embed.ts
|
|
6
6
|
var DEFAULT_MODEL_ID = "Xenova/multilingual-e5-small";
|
|
@@ -157,4 +157,4 @@ export {
|
|
|
157
157
|
encodeEntries,
|
|
158
158
|
openEntryVectors
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-KYW3VP3L.js.map
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
loadEmbedder,
|
|
4
4
|
openEntryVectors
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KYW3VP3L.js";
|
|
6
6
|
import {
|
|
7
7
|
ConfigError,
|
|
8
8
|
ProjectError,
|
|
@@ -17,15 +17,15 @@ import {
|
|
|
17
17
|
splitFrontmatter,
|
|
18
18
|
validateCatalog,
|
|
19
19
|
validateSkillDir
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-D3OZVMHN.js";
|
|
21
|
+
import "./chunk-CMZ7OTQD.js";
|
|
22
22
|
import {
|
|
23
23
|
serve
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-EIHMCKY5.js";
|
|
25
25
|
import {
|
|
26
26
|
kindOf,
|
|
27
27
|
readCatalog
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-A5NOHVHN.js";
|
|
29
29
|
|
|
30
30
|
// src/cli/command.ts
|
|
31
31
|
var ArgumentError = class extends Error {
|
|
@@ -2347,7 +2347,7 @@ function dispatch(argv, options = {}) {
|
|
|
2347
2347
|
}
|
|
2348
2348
|
return run(command, rest, { ui, env, cwd });
|
|
2349
2349
|
}
|
|
2350
|
-
var VERSION = "0.9.
|
|
2350
|
+
var VERSION = "0.9.2";
|
|
2351
2351
|
async function run(command, argv, context) {
|
|
2352
2352
|
try {
|
|
2353
2353
|
return await command.run({
|
package/dist/http.d.ts
CHANGED
package/dist/http.js
CHANGED
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
DEFAULT_MODEL_ID,
|
|
3
3
|
encodeEntries,
|
|
4
4
|
loadEmbedder
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-KYW3VP3L.js";
|
|
6
|
+
import "./chunk-CMZ7OTQD.js";
|
|
7
7
|
import {
|
|
8
8
|
createSkillServer,
|
|
9
9
|
readCatalog
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-A5NOHVHN.js";
|
|
11
11
|
|
|
12
12
|
// src/http.ts
|
|
13
13
|
import {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { I as IntentCache, S as SkillServerOptions, a as SkillTools } from './server-
|
|
2
|
-
export { B as BundleFile, C as CATALOG_PAGE_MAX, b as CATALOG_PAGE_SIZE, c as CallResponse, d as CatalogItem, e as CatalogResponse, f as Classified, D as DEFAULT_FIND_LIMIT, g as DESCRIBE_FILE_LIMIT, E as Embedder, F as FileKind, h as FindOptions, i as FindResult, j as IntentCacheStats, K as KindFilter, M as Match, R as READ_BUDGET_BYTES, k as RUNTIMES, l as Ranking, m as ReadResult, n as Runtime, o as SkillBundle, p as SkillFile, q as SkillFileContent, r as SkillFileListing, s as SkillFilters, t as bundleResponseSchema, u as bundleSkill, v as catalogResponseSchema, w as classify, x as cosine, y as createSkillTools, z as describeResponseSchema, A as detectRuntime, G as find, H as findResultSchema, J as isUtf8Text, L as lexicalScore, N as listSkillFiles, O as mimeOf, P as normaliseIntent, Q as readSkillFile, T as runtimeOfClient, U as verifiedRuntimesOf } from './server-
|
|
1
|
+
import { I as IntentCache, S as SkillServerOptions, a as SkillTools } from './server-C9eO6LMI.js';
|
|
2
|
+
export { B as BundleFile, C as CATALOG_PAGE_MAX, b as CATALOG_PAGE_SIZE, c as CallResponse, d as CatalogItem, e as CatalogResponse, f as Classified, D as DEFAULT_FIND_LIMIT, g as DESCRIBE_FILE_LIMIT, E as Embedder, F as FileKind, h as FindOptions, i as FindResult, j as IntentCacheStats, K as KindFilter, M as Match, R as READ_BUDGET_BYTES, k as RUNTIMES, l as Ranking, m as ReadResult, n as Runtime, o as SkillBundle, p as SkillFile, q as SkillFileContent, r as SkillFileListing, s as SkillFilters, t as bundleResponseSchema, u as bundleSkill, v as catalogResponseSchema, w as classify, x as cosine, y as createSkillTools, z as describeResponseSchema, A as detectRuntime, G as find, H as findResultSchema, J as isUtf8Text, L as lexicalScore, N as listSkillFiles, O as mimeOf, P as normaliseIntent, Q as readSkillFile, T as runtimeOfClient, U as verifiedRuntimesOf } from './server-C9eO6LMI.js';
|
|
3
3
|
import { S as SkillEntry, M as MetadataValue, C as CatalogOptions } from './catalog-BU5VLLyd.js';
|
|
4
4
|
export { a as ASSET_KINDS, A as AssetKind, b as COMPATIBILITY_MAX, D as DESCRIPTION_MAX, c as MAX_SKILL_DEPTH, d as MetadataLeaf, N as NAME_MAX, e as SKIPPED_DIRS, f as displayPath, k as kindOf, g as parseSkillFrontmatter, r as readBody, h as readCatalog, i as readFrontmatter, s as specProblems, w as withoutBody } from './catalog-BU5VLLyd.js';
|
|
5
5
|
import { McpServer } from '@modelcontextprotocol/server';
|
|
@@ -285,7 +285,7 @@ declare function resolveSkillFileUri(uri: string, entries: readonly SkillEntry[]
|
|
|
285
285
|
|
|
286
286
|
/** Reported to the host on connect. */
|
|
287
287
|
declare const SERVER_NAME = "pmcp";
|
|
288
|
-
declare const SERVER_VERSION = "0.9.
|
|
288
|
+
declare const SERVER_VERSION = "0.9.2";
|
|
289
289
|
/**
|
|
290
290
|
* Registers the skill_* tools on a server.
|
|
291
291
|
*
|
package/dist/index.js
CHANGED
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
readSpec,
|
|
15
15
|
validateCatalog,
|
|
16
16
|
validateSkillDir
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-D3OZVMHN.js";
|
|
18
18
|
import {
|
|
19
19
|
DEFAULT_INTENT_CACHE_LIMIT,
|
|
20
20
|
openIntentCache
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-CMZ7OTQD.js";
|
|
22
22
|
import {
|
|
23
23
|
ASSET_KINDS,
|
|
24
24
|
CATALOG_PAGE_MAX,
|
|
@@ -74,7 +74,7 @@ import {
|
|
|
74
74
|
specProblems,
|
|
75
75
|
verifiedRuntimesOf,
|
|
76
76
|
withoutBody
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-A5NOHVHN.js";
|
|
78
78
|
export {
|
|
79
79
|
ASSET_KINDS,
|
|
80
80
|
CATALOG_PAGE_MAX,
|
|
@@ -233,7 +233,7 @@ declare const catalogItemSchema: z.ZodObject<{
|
|
|
233
233
|
antigravity: "antigravity";
|
|
234
234
|
}>>>;
|
|
235
235
|
verified: z.ZodOptional<z.ZodBoolean>;
|
|
236
|
-
}, z.core.$
|
|
236
|
+
}, z.core.$loose>;
|
|
237
237
|
declare const catalogResponseSchema: z.ZodObject<{
|
|
238
238
|
count: z.ZodNumber;
|
|
239
239
|
page: z.ZodNumber;
|
|
@@ -259,21 +259,21 @@ declare const catalogResponseSchema: z.ZodObject<{
|
|
|
259
259
|
antigravity: "antigravity";
|
|
260
260
|
}>>>;
|
|
261
261
|
verified: z.ZodOptional<z.ZodBoolean>;
|
|
262
|
-
}, z.core.$
|
|
263
|
-
}, z.core.$
|
|
264
|
-
}, z.core.$
|
|
262
|
+
}, z.core.$loose>>;
|
|
263
|
+
}, z.core.$loose>>;
|
|
264
|
+
}, z.core.$loose>;
|
|
265
265
|
declare const findResultSchema: z.ZodObject<{
|
|
266
266
|
ranking: z.ZodEnum<{
|
|
267
267
|
semantic: "semantic";
|
|
268
268
|
lexical: "lexical";
|
|
269
269
|
}>;
|
|
270
|
-
runtime: z.ZodNullable<z.ZodEnum<{
|
|
270
|
+
runtime: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
271
271
|
"claude-code": "claude-code";
|
|
272
272
|
"codex-cli": "codex-cli";
|
|
273
273
|
"gemini-cli": "gemini-cli";
|
|
274
274
|
"grok-cli": "grok-cli";
|
|
275
275
|
antigravity: "antigravity";
|
|
276
|
-
}
|
|
276
|
+
}>>>;
|
|
277
277
|
matches: z.ZodArray<z.ZodObject<{
|
|
278
278
|
name: z.ZodString;
|
|
279
279
|
package: z.ZodString;
|
|
@@ -287,8 +287,8 @@ declare const findResultSchema: z.ZodObject<{
|
|
|
287
287
|
antigravity: "antigravity";
|
|
288
288
|
}>>>;
|
|
289
289
|
verified: z.ZodOptional<z.ZodBoolean>;
|
|
290
|
-
}, z.core.$
|
|
291
|
-
}, z.core.$
|
|
290
|
+
}, z.core.$loose>>;
|
|
291
|
+
}, z.core.$loose>;
|
|
292
292
|
declare const describeResponseSchema: z.ZodObject<{
|
|
293
293
|
name: z.ZodString;
|
|
294
294
|
kind: z.ZodEnum<{
|
|
@@ -300,15 +300,15 @@ declare const describeResponseSchema: z.ZodObject<{
|
|
|
300
300
|
package: z.ZodString;
|
|
301
301
|
description: z.ZodString;
|
|
302
302
|
tier: z.ZodOptional<z.ZodString>;
|
|
303
|
-
metadata: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.
|
|
303
|
+
metadata: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString>>]>>;
|
|
304
304
|
frontmatter: z.ZodString;
|
|
305
305
|
files: z.ZodArray<z.ZodObject<{
|
|
306
306
|
path: z.ZodString;
|
|
307
307
|
bytes: z.ZodNumber;
|
|
308
308
|
sha256: z.ZodString;
|
|
309
|
-
}, z.core.$
|
|
309
|
+
}, z.core.$loose>>;
|
|
310
310
|
filesTruncated: z.ZodBoolean;
|
|
311
|
-
}, z.core.$
|
|
311
|
+
}, z.core.$loose>;
|
|
312
312
|
declare const bundleResponseSchema: z.ZodObject<{
|
|
313
313
|
name: z.ZodString;
|
|
314
314
|
truncated: z.ZodBoolean;
|
|
@@ -318,8 +318,8 @@ declare const bundleResponseSchema: z.ZodObject<{
|
|
|
318
318
|
sha256: z.ZodString;
|
|
319
319
|
uri: z.ZodString;
|
|
320
320
|
mimeType: z.ZodString;
|
|
321
|
-
}, z.core.$
|
|
322
|
-
}, z.core.$
|
|
321
|
+
}, z.core.$loose>>;
|
|
322
|
+
}, z.core.$loose>;
|
|
323
323
|
type CatalogItem = z.infer<typeof catalogItemSchema>;
|
|
324
324
|
type CatalogResponse = z.infer<typeof catalogResponseSchema>;
|
|
325
325
|
type FindResponse = z.infer<typeof findResultSchema>;
|
package/dist/stdio.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modootoday/pmcp",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"license": "Elastic-2.0",
|
|
5
5
|
"author": "modootoday",
|
|
6
6
|
"description": "An MCP server that finds the skills your installed packages already ship. Reads SKILL.md out of node_modules by shape rather than by path, so it sees the skills, .agent, .claude, .gemini and .codex conventions alike, and keeps session startup flat as the number of installed skills grows.",
|