@happyvertical/smrt-dev-mcp 0.40.62 → 0.40.64

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/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as checkKnowledgeFreshnessFromIndex, d as smrtReview, i as checkKnowledgeFreshness, n as buildKnowledgeIndex, r as buildReviewContext, s as packageDocPaths, t as buildArchitectureContext, u as smrtArchitecture } from "./knowledge-DUUhTM5u.js";
2
+ import { a as checkKnowledgeFreshnessFromIndex, d as smrtReview, f as REVIEW_SKILL_NAME, i as checkKnowledgeFreshness, n as buildKnowledgeIndex, p as TOOLS, r as buildReviewContext, s as packageDocPaths, t as buildArchitectureContext, u as smrtArchitecture } from "./knowledge-A7-gIjW4.js";
3
3
  import { existsSync, readFileSync, realpathSync } from "node:fs";
4
4
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
5
5
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -1061,7 +1061,6 @@ function pathExistsSyncHint(path) {
1061
1061
  var SERVER_NAME = "smrt-dev-mcp";
1062
1062
  var SERVER_VERSION = readPackageVersion();
1063
1063
  var DEBUG = process.env.DEBUG === "true";
1064
- var REVIEW_SKILL_NAME = "smrt-code-review";
1065
1064
  var REVIEW_SKILL_URI = `smrt-dev-mcp://agent-skills/${REVIEW_SKILL_NAME}`;
1066
1065
  var DOMAIN_CODE_REVIEW_PROMPT = "domain-code-review";
1067
1066
  var DOMAIN_ARCHITECTURE_PROMPT = "domain-architecture";
@@ -1075,500 +1074,6 @@ var LIVE_KNOWLEDGE_CACHE_HINT = {
1075
1074
  ttlMs: 0,
1076
1075
  cacheScope: "private"
1077
1076
  };
1078
- var JSON_SCHEMA_2020_12 = "https://json-schema.org/draft/2020-12/schema";
1079
- function compareToolNames(left, right) {
1080
- return left < right ? -1 : left > right ? 1 : 0;
1081
- }
1082
- /**
1083
- * Stable success/error envelope for development tools. `data` preserves each
1084
- * tool's existing payload exactly; coverage/diagnostics are promoted only when
1085
- * the underlying result actually reports them.
1086
- */
1087
- var DEV_MCP_OUTPUT_SCHEMA = {
1088
- $schema: JSON_SCHEMA_2020_12,
1089
- type: "object",
1090
- additionalProperties: false,
1091
- required: [
1092
- "ok",
1093
- "coverage",
1094
- "diagnostics",
1095
- "data"
1096
- ],
1097
- properties: {
1098
- ok: { type: "boolean" },
1099
- coverage: {
1100
- type: ["object", "null"],
1101
- additionalProperties: true
1102
- },
1103
- diagnostics: {
1104
- type: "array",
1105
- items: {
1106
- type: "object",
1107
- additionalProperties: true
1108
- }
1109
- },
1110
- data: {}
1111
- }
1112
- };
1113
- var TOOLS = [
1114
- {
1115
- name: "generate-smrt-class",
1116
- description: "Generate a complete SMRT class with @smrt() decorator",
1117
- inputSchema: {
1118
- type: "object",
1119
- properties: {
1120
- className: {
1121
- type: "string",
1122
- description: "Name of the class (PascalCase)"
1123
- },
1124
- properties: {
1125
- type: "array",
1126
- description: "Array of property definitions",
1127
- items: {
1128
- type: "object",
1129
- properties: {
1130
- name: { type: "string" },
1131
- type: {
1132
- type: "string",
1133
- enum: [
1134
- "text",
1135
- "integer",
1136
- "decimal",
1137
- "boolean",
1138
- "datetime",
1139
- "json"
1140
- ]
1141
- },
1142
- required: { type: "boolean" },
1143
- nullable: { type: "boolean" },
1144
- description: { type: "string" },
1145
- defaultValue: { oneOf: [
1146
- { type: "string" },
1147
- { type: "number" },
1148
- { type: "boolean" },
1149
- { type: "object" },
1150
- { type: "null" }
1151
- ] }
1152
- },
1153
- required: ["name", "type"]
1154
- }
1155
- },
1156
- baseClass: {
1157
- type: "string",
1158
- enum: ["SmrtObject", "SmrtCollection"],
1159
- default: "SmrtObject"
1160
- },
1161
- template: {
1162
- type: "string",
1163
- enum: [
1164
- "basic",
1165
- "global-catalog",
1166
- "optional-catalog",
1167
- "tenant-project-object",
1168
- "tenant-event-log-object",
1169
- "cross-package-reference"
1170
- ],
1171
- default: "basic"
1172
- },
1173
- tableName: { type: "string" },
1174
- conflictColumns: {
1175
- type: "array",
1176
- items: { type: "string" }
1177
- },
1178
- tenantScoped: { oneOf: [{ type: "boolean" }, {
1179
- type: "object",
1180
- properties: {
1181
- mode: {
1182
- type: "string",
1183
- enum: ["required", "optional"]
1184
- },
1185
- field: { type: "string" },
1186
- autoFilter: { type: "boolean" },
1187
- autoPopulate: { type: "boolean" },
1188
- allowSuperAdminBypass: { type: "boolean" }
1189
- }
1190
- }] },
1191
- includeTenantIdField: { type: "boolean" },
1192
- relationships: {
1193
- type: "array",
1194
- items: {
1195
- type: "object",
1196
- properties: {
1197
- name: { type: "string" },
1198
- type: {
1199
- type: "string",
1200
- enum: [
1201
- "foreignKey",
1202
- "crossPackageRef",
1203
- "oneToMany",
1204
- "manyToMany"
1205
- ]
1206
- },
1207
- related: { type: "string" },
1208
- required: { type: "boolean" },
1209
- nullable: { type: "boolean" },
1210
- description: { type: "string" },
1211
- validate: { type: "boolean" },
1212
- foreignKey: { type: "string" },
1213
- through: { type: "string" },
1214
- sourceKey: { type: "string" },
1215
- targetKey: { type: "string" }
1216
- },
1217
- required: [
1218
- "name",
1219
- "type",
1220
- "related"
1221
- ]
1222
- }
1223
- },
1224
- includeCompanionSnippets: {
1225
- type: "boolean",
1226
- default: false
1227
- },
1228
- includeApiConfig: {
1229
- type: "boolean",
1230
- default: true
1231
- },
1232
- includeMcpConfig: {
1233
- type: "boolean",
1234
- default: true
1235
- },
1236
- includeCliConfig: {
1237
- type: "boolean",
1238
- default: true
1239
- }
1240
- },
1241
- required: ["className", "properties"]
1242
- }
1243
- },
1244
- {
1245
- name: "introspect-project",
1246
- description: "Scan a directory for SMRT objects. Returns a compact summary by default; pass detail: \"full\" for field, schema, and method details.",
1247
- inputSchema: {
1248
- type: "object",
1249
- properties: {
1250
- directory: {
1251
- type: "string",
1252
- description: "Project directory (default: cwd)"
1253
- },
1254
- manifestPath: {
1255
- type: "string",
1256
- description: "Optional manifest path. Defaults to .smrt/manifest.json, dist/manifest.json, then source scanning."
1257
- },
1258
- detail: {
1259
- type: "string",
1260
- enum: ["summary", "full"],
1261
- default: "summary",
1262
- description: "summary: one compact record per object. full: complete field/schema/method detail (large)."
1263
- },
1264
- maxChars: {
1265
- type: "number",
1266
- description: "Character budget for the `objects` payload. Objects past the budget are omitted and reported under `truncated`. Project metadata and diagnostics are always returned in full, so the serialized response is somewhat larger than this budget."
1267
- },
1268
- includeFields: {
1269
- type: "boolean",
1270
- description: "Include field details (detail: \"full\" only)"
1271
- },
1272
- includeRelationships: {
1273
- type: "boolean",
1274
- description: "Analyze relationships (detail: \"full\" only)"
1275
- },
1276
- includeMethods: {
1277
- type: "boolean",
1278
- description: "Include public method details (detail: \"full\" only)"
1279
- }
1280
- }
1281
- }
1282
- },
1283
- {
1284
- name: "review-smrt-project",
1285
- description: "Advisory ecosystem alignment review for downstream SMRT projects",
1286
- inputSchema: {
1287
- type: "object",
1288
- properties: {
1289
- directory: {
1290
- type: "string",
1291
- description: "Project directory (default: cwd)"
1292
- },
1293
- rootDir: {
1294
- type: "string",
1295
- description: "Compatibility alias for directory"
1296
- },
1297
- includeSourceEvidence: {
1298
- type: "boolean",
1299
- description: "Include file and line evidence in findings",
1300
- default: true
1301
- },
1302
- maxFindings: {
1303
- type: "number",
1304
- description: "Optional maximum number of findings to return"
1305
- }
1306
- }
1307
- }
1308
- },
1309
- {
1310
- name: "reflect-knowledge",
1311
- description: "Report deterministic SMRT + HappyVertical SDK knowledge coverage and freshness",
1312
- inputSchema: {
1313
- type: "object",
1314
- properties: { rootDir: {
1315
- type: "string",
1316
- description: "Project root directory (default: cwd)"
1317
- } }
1318
- }
1319
- },
1320
- {
1321
- name: "reflect-domain-knowledge",
1322
- description: "Report domain-scoped SMRT knowledge artifacts, SDK packages, and freshness",
1323
- inputSchema: {
1324
- type: "object",
1325
- properties: {
1326
- rootDir: { type: "string" },
1327
- scope: {
1328
- type: "string",
1329
- enum: [
1330
- "project",
1331
- "local",
1332
- "package",
1333
- "sdk"
1334
- ],
1335
- default: "project"
1336
- },
1337
- package: { type: "string" }
1338
- }
1339
- }
1340
- },
1341
- {
1342
- name: "check-knowledge-freshness",
1343
- description: "Run deterministic freshness checks for SMRT agent knowledge",
1344
- inputSchema: {
1345
- type: "object",
1346
- properties: {
1347
- rootDir: { type: "string" },
1348
- changed: {
1349
- type: "boolean",
1350
- description: "Limit stale-pattern checks to changed files"
1351
- },
1352
- strict: {
1353
- type: "boolean",
1354
- description: "Treat stale-pattern findings as errors"
1355
- }
1356
- }
1357
- }
1358
- },
1359
- {
1360
- name: "check-domain-knowledge",
1361
- description: "Run deterministic freshness checks for domain knowledge artifacts",
1362
- inputSchema: {
1363
- type: "object",
1364
- properties: {
1365
- rootDir: { type: "string" },
1366
- changed: { type: "boolean" },
1367
- strict: { type: "boolean" },
1368
- scope: {
1369
- type: "string",
1370
- enum: [
1371
- "project",
1372
- "local",
1373
- "package",
1374
- "sdk"
1375
- ],
1376
- default: "project"
1377
- },
1378
- package: { type: "string" }
1379
- }
1380
- }
1381
- },
1382
- {
1383
- name: "build-review-context",
1384
- description: "Build model-ready SMRT review context from changed files and optional focus text",
1385
- inputSchema: {
1386
- type: "object",
1387
- properties: {
1388
- rootDir: { type: "string" },
1389
- changedFiles: {
1390
- type: "array",
1391
- items: { type: "string" }
1392
- },
1393
- focus: { type: "string" },
1394
- documentation: { type: "string" },
1395
- detail: {
1396
- type: "string",
1397
- enum: ["summary", "full"],
1398
- default: "summary",
1399
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1400
- }
1401
- }
1402
- }
1403
- },
1404
- {
1405
- name: "build-domain-review-context",
1406
- description: "Build domain-scoped model-ready SMRT review context and prompt bundle",
1407
- inputSchema: {
1408
- type: "object",
1409
- properties: {
1410
- rootDir: { type: "string" },
1411
- changedFiles: {
1412
- type: "array",
1413
- items: { type: "string" }
1414
- },
1415
- focus: { type: "string" },
1416
- documentation: { type: "string" },
1417
- scope: {
1418
- type: "string",
1419
- enum: [
1420
- "project",
1421
- "local",
1422
- "package",
1423
- "sdk"
1424
- ],
1425
- default: "project"
1426
- },
1427
- package: { type: "string" },
1428
- detail: {
1429
- type: "string",
1430
- enum: ["summary", "full"],
1431
- default: "summary",
1432
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1433
- }
1434
- }
1435
- }
1436
- },
1437
- {
1438
- name: "smrt-review",
1439
- description: "Return deterministic review findings and/or a reusable model prompt bundle. For a formal downstream review, first call get-agent-skill with { \"name\": \"smrt-code-review\" } or load the smrt-code-review MCP prompt/resource.",
1440
- inputSchema: {
1441
- type: "object",
1442
- properties: {
1443
- rootDir: { type: "string" },
1444
- changedFiles: {
1445
- type: "array",
1446
- items: { type: "string" }
1447
- },
1448
- focus: { type: "string" },
1449
- documentation: { type: "string" },
1450
- mode: {
1451
- type: "string",
1452
- enum: [
1453
- "findings",
1454
- "prompt-bundle",
1455
- "both"
1456
- ],
1457
- default: "both"
1458
- },
1459
- detail: {
1460
- type: "string",
1461
- enum: ["summary", "full"],
1462
- default: "summary",
1463
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1464
- }
1465
- }
1466
- }
1467
- },
1468
- {
1469
- name: "build-architecture-context",
1470
- description: "Build model-ready SMRT architecture context from an idea or documentation",
1471
- inputSchema: {
1472
- type: "object",
1473
- properties: {
1474
- rootDir: { type: "string" },
1475
- idea: { type: "string" },
1476
- documentation: { type: "string" },
1477
- focus: { type: "string" },
1478
- detail: {
1479
- type: "string",
1480
- enum: ["summary", "full"],
1481
- default: "summary",
1482
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1483
- }
1484
- }
1485
- }
1486
- },
1487
- {
1488
- name: "build-domain-architecture-context",
1489
- description: "Build domain-scoped model-ready SMRT architecture context and prompt bundle",
1490
- inputSchema: {
1491
- type: "object",
1492
- properties: {
1493
- rootDir: { type: "string" },
1494
- idea: { type: "string" },
1495
- documentation: { type: "string" },
1496
- focus: { type: "string" },
1497
- scope: {
1498
- type: "string",
1499
- enum: [
1500
- "project",
1501
- "local",
1502
- "package",
1503
- "sdk"
1504
- ],
1505
- default: "project"
1506
- },
1507
- package: { type: "string" },
1508
- detail: {
1509
- type: "string",
1510
- enum: ["summary", "full"],
1511
- default: "summary",
1512
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1513
- }
1514
- }
1515
- }
1516
- },
1517
- {
1518
- name: "smrt-architecture",
1519
- description: "Suggest SMRT and HappyVertical SDK packages and return an architecture prompt bundle",
1520
- inputSchema: {
1521
- type: "object",
1522
- properties: {
1523
- rootDir: { type: "string" },
1524
- idea: { type: "string" },
1525
- documentation: { type: "string" },
1526
- focus: { type: "string" },
1527
- detail: {
1528
- type: "string",
1529
- enum: ["summary", "full"],
1530
- default: "summary",
1531
- description: "summary: authored package docs are listed by path to stay inside tool-result budgets. full: embed them."
1532
- }
1533
- }
1534
- }
1535
- },
1536
- {
1537
- name: "list-agent-skills",
1538
- description: "List bundled harness-agnostic agent skills shipped with smrt-dev-mcp",
1539
- inputSchema: {
1540
- type: "object",
1541
- properties: {}
1542
- }
1543
- },
1544
- {
1545
- name: "get-agent-skill",
1546
- description: "Return a bundled harness-agnostic agent skill as Markdown plus optional references",
1547
- inputSchema: {
1548
- type: "object",
1549
- properties: {
1550
- name: {
1551
- type: "string",
1552
- enum: [REVIEW_SKILL_NAME],
1553
- description: "Bundled agent skill name"
1554
- },
1555
- includeReferences: {
1556
- type: "boolean",
1557
- default: true,
1558
- description: "Include referenced files with the skill bundle"
1559
- }
1560
- },
1561
- required: ["name"]
1562
- }
1563
- }
1564
- ].map((tool) => ({
1565
- ...tool,
1566
- inputSchema: {
1567
- ...tool.inputSchema,
1568
- $schema: JSON_SCHEMA_2020_12
1569
- },
1570
- outputSchema: DEV_MCP_OUTPUT_SCHEMA
1571
- })).sort((left, right) => compareToolNames(left.name, right.name));
1572
1077
  function createServer() {
1573
1078
  if (DEBUG) console.error(`[${SERVER_NAME}] Starting server v${SERVER_VERSION}`);
1574
1079
  const server = new Server({
@@ -1625,7 +1130,7 @@ function createServer() {
1625
1130
  },
1626
1131
  {
1627
1132
  name: "scope",
1628
- description: "Knowledge scope: project, local, package, or sdk.",
1133
+ description: "Knowledge scope: project, local, package, sdk, or installed.",
1629
1134
  required: false
1630
1135
  },
1631
1136
  {
@@ -1662,7 +1167,7 @@ function createServer() {
1662
1167
  },
1663
1168
  {
1664
1169
  name: "scope",
1665
- description: "Knowledge scope: project, local, package, or sdk.",
1170
+ description: "Knowledge scope: project, local, package, sdk, or installed.",
1666
1171
  required: false
1667
1172
  },
1668
1173
  {
@@ -1676,7 +1181,7 @@ function createServer() {
1676
1181
  });
1677
1182
  server.setRequestHandler("prompts/get", async (request) => {
1678
1183
  const { name } = request.params;
1679
- if (name === REVIEW_SKILL_NAME) return {
1184
+ if (name === "smrt-code-review") return {
1680
1185
  description: "Use this procedure when reviewing downstream SMRT projects.",
1681
1186
  messages: [{
1682
1187
  role: "user",
@@ -1947,7 +1452,8 @@ function sanitizeKnowledgeIndex(index) {
1947
1452
  rootDir: ".",
1948
1453
  packages,
1949
1454
  smrtPackages: packages.filter((pkg) => pkg.kind === "smrt"),
1950
- sdkPackages: packages.filter((pkg) => pkg.kind === "sdk")
1455
+ sdkPackages: packages.filter((pkg) => pkg.kind === "sdk"),
1456
+ installedPackages: packages.filter((pkg) => pkg.isInstalledDependency)
1951
1457
  };
1952
1458
  }
1953
1459
  /**