@happyvertical/smrt-dev-mcp 0.40.70 → 0.41.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.
- package/AGENTS.md +12 -0
- package/dist/index.js +1 -1
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/{knowledge-L22wrifG.js → knowledge-CLGmlHl6.js} +65 -2
- package/dist/knowledge-CLGmlHl6.js.map +1 -0
- package/dist/knowledge.js +1 -1
- package/package.json +4 -4
- package/dist/knowledge-L22wrifG.js.map +0 -1
package/AGENTS.md
CHANGED
|
@@ -210,6 +210,18 @@ launcher or a small wrapper script with an absolute Node path.
|
|
|
210
210
|
agent would load the parent's and its own. Those two checks are skipped for it
|
|
211
211
|
and a `nested-agents-md` error fires if one reappears; the expertise belongs in
|
|
212
212
|
the parent's linked `agents/<module>.md`.
|
|
213
|
+
- **The money/rate lint reads source, not the manifest** (#2361): a manifest
|
|
214
|
+
records a column's type but not whether anyone chose it, so only the source
|
|
215
|
+
distinguishes `@field({ type: 'decimal' })` (a decision) from `= 0.0` (a
|
|
216
|
+
default nobody made). Severity is split by what the repo can satisfy today,
|
|
217
|
+
not by preference: `numeric-precision-rate` is an `error` on
|
|
218
|
+
`@happyvertical/smrt-*` (the framework has zero violations, so the gate holds
|
|
219
|
+
at zero), while `numeric-precision-money` only `warn`s — 21 framework fields
|
|
220
|
+
across commerce, projects, subscriptions, support and the conformance fixture
|
|
221
|
+
still declare money decimal, and converting them means changing live column
|
|
222
|
+
types (REAL→INTEGER is not a whitelisted upgrade) and rescaling stored values
|
|
223
|
+
by 100. Consumer packages always warn. A cheap textual pre-filter keeps the
|
|
224
|
+
check from parsing the whole workspace.
|
|
213
225
|
- **`maxChars` budgets the objects payload, not the whole response**: project
|
|
214
226
|
metadata and diagnostics are always returned in full, because a diagnostic is
|
|
215
227
|
how discovery reports that it found nothing (#2143). Budgeting it away would
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as checkKnowledgeFreshness, c as packageDocPaths, d as smrtArchitecture, f as smrtReview, i as buildReviewContext, m as TOOLS, n as buildKnowledgeIndex, o as checkKnowledgeFreshnessFromIndex, p as REVIEW_SKILL_NAME, r as buildPackageSpecialistContext, t as buildArchitectureContext } from "./knowledge-
|
|
2
|
+
import { a as checkKnowledgeFreshness, c as packageDocPaths, d as smrtArchitecture, f as smrtReview, i as buildReviewContext, m as TOOLS, n as buildKnowledgeIndex, o as checkKnowledgeFreshnessFromIndex, p as REVIEW_SKILL_NAME, r as buildPackageSpecialistContext, t as buildArchitectureContext } from "./knowledge-CLGmlHl6.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";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { execFileSync } from "node:child_process";
|
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { MODULE_DOC_HASH_PREFIX, readAgentModuleDocs } from "@happyvertical/smrt-core/knowledge";
|
|
6
6
|
import { toSnakeCase } from "@happyvertical/smrt-core/utils";
|
|
7
|
-
import { ManifestAdapter, OxcScanner } from "@happyvertical/smrt-scanner";
|
|
7
|
+
import { ManifestAdapter, OxcScanner, lintNumericPrecision, parseSource, sourceMayContainNumericPrecisionIssue } from "@happyvertical/smrt-scanner";
|
|
8
8
|
//#region src/tool-catalog.ts
|
|
9
9
|
var REVIEW_SKILL_NAME = "smrt-code-review";
|
|
10
10
|
var JSON_SCHEMA_2020_12 = "https://json-schema.org/draft/2020-12/schema";
|
|
@@ -1027,6 +1027,7 @@ async function checkKnowledgeFreshnessFromIndex(index, options = {}) {
|
|
|
1027
1027
|
const devMcpPackage = authoredPackages.find((pkg) => pkg.name === "@happyvertical/smrt-dev-mcp");
|
|
1028
1028
|
if (devMcpPackage) issues.push(...checkMcpToolDocumentation(index.rootDir, devMcpPackage.directory, TOOLS));
|
|
1029
1029
|
issues.push(...findStalePatternIssues(index.rootDir, changedFiles));
|
|
1030
|
+
issues.push(...findNumericPrecisionIssues(index, authoredPackages, changedFiles));
|
|
1030
1031
|
const effectiveIssues = issues.map((issue) => issue.code.startsWith("stale-") ? {
|
|
1031
1032
|
...issue,
|
|
1032
1033
|
severity: options.strict ? "error" : "warning"
|
|
@@ -2307,6 +2308,68 @@ function findStalePatternIssues(rootDir, changedFiles) {
|
|
|
2307
2308
|
}
|
|
2308
2309
|
return issues;
|
|
2309
2310
|
}
|
|
2311
|
+
/**
|
|
2312
|
+
* Flag fields whose declared numeric precision contradicts their name (#2361):
|
|
2313
|
+
* money declared decimal, or a rate declared integer.
|
|
2314
|
+
*
|
|
2315
|
+
* Both kinds fail closed on `@happyvertical/smrt-*`. The framework has zero
|
|
2316
|
+
* violations of either rule: the rates were already correct (#2361), and the
|
|
2317
|
+
* twenty-one money fields across commerce, projects, subscriptions, support and
|
|
2318
|
+
* the conformance fixture converted to integer minor units in #2401, along with
|
|
2319
|
+
* the data migration that rescales existing columns. The gate now holds both
|
|
2320
|
+
* lines at zero rather than watching money drift back.
|
|
2321
|
+
*
|
|
2322
|
+
* Consumer packages always warn: the framework cannot know a downstream
|
|
2323
|
+
* project's money convention, and a hard failure would make
|
|
2324
|
+
* `dev:knowledge-check` unpassable there.
|
|
2325
|
+
*
|
|
2326
|
+
* Source, not manifest, is the oracle: the manifest records the resulting
|
|
2327
|
+
* column type but not whether the author chose it, so only the source can tell
|
|
2328
|
+
* `@field({ type: 'decimal' })` (a decision) from `= 0.0` (a default nobody
|
|
2329
|
+
* made).
|
|
2330
|
+
*/
|
|
2331
|
+
function findNumericPrecisionIssues(index, authoredPackages, changedFiles) {
|
|
2332
|
+
const changedAbsolutePaths = changedFiles ? new Set(changedFiles.map((file) => resolve(index.rootDir, file))) : void 0;
|
|
2333
|
+
const issues = [];
|
|
2334
|
+
for (const pkg of authoredPackages) {
|
|
2335
|
+
if (pkg.kind === "sdk") continue;
|
|
2336
|
+
const srcDir = join(pkg.directory, "src");
|
|
2337
|
+
if (!existsSync(srcDir)) continue;
|
|
2338
|
+
const isFramework = pkg.kind === "smrt";
|
|
2339
|
+
for (const filePath of walkFiles(srcDir)) {
|
|
2340
|
+
if (!isLintableModelSource(filePath)) continue;
|
|
2341
|
+
if (changedAbsolutePaths && !changedAbsolutePaths.has(filePath)) continue;
|
|
2342
|
+
let sourceText;
|
|
2343
|
+
try {
|
|
2344
|
+
sourceText = readFileSync(filePath, "utf8");
|
|
2345
|
+
} catch {
|
|
2346
|
+
continue;
|
|
2347
|
+
}
|
|
2348
|
+
if (!sourceMayContainNumericPrecisionIssue(sourceText)) continue;
|
|
2349
|
+
const parsed = parseSource(sourceText, filePath);
|
|
2350
|
+
for (const finding of lintNumericPrecision(parsed.classes, sourceText)) {
|
|
2351
|
+
const location = finding.line > 0 ? `:${finding.line}` : "";
|
|
2352
|
+
const severity = isFramework ? "error" : "warning";
|
|
2353
|
+
issues.push({
|
|
2354
|
+
severity,
|
|
2355
|
+
code: `numeric-precision-${finding.kind}`,
|
|
2356
|
+
message: `${finding.message} ${finding.remedy}`,
|
|
2357
|
+
file: `${relative(index.rootDir, filePath)}${location}`,
|
|
2358
|
+
packageName: pkg.name
|
|
2359
|
+
});
|
|
2360
|
+
}
|
|
2361
|
+
}
|
|
2362
|
+
}
|
|
2363
|
+
return issues;
|
|
2364
|
+
}
|
|
2365
|
+
/** Only authored, non-generated TypeScript model sources are linted. */
|
|
2366
|
+
function isLintableModelSource(filePath) {
|
|
2367
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".tsx")) return false;
|
|
2368
|
+
if (filePath.endsWith(".d.ts")) return false;
|
|
2369
|
+
if (/\.(test|spec)\.tsx?$/.test(filePath)) return false;
|
|
2370
|
+
const parts = filePath.split(sep);
|
|
2371
|
+
return !parts.includes("__tests__") && !parts.includes("template");
|
|
2372
|
+
}
|
|
2310
2373
|
function shouldScanStalePatternFile(rootDir, filePath) {
|
|
2311
2374
|
const rel = relative(rootDir, filePath).replaceAll("\\", "/");
|
|
2312
2375
|
if (!rel || rel.startsWith("..")) return false;
|
|
@@ -2844,4 +2907,4 @@ function sortJson(value) {
|
|
|
2844
2907
|
//#endregion
|
|
2845
2908
|
export { checkKnowledgeFreshness as a, packageDocPaths as c, smrtArchitecture as d, smrtReview as f, buildReviewContext as i, renderFreshnessResult as l, TOOLS as m, buildKnowledgeIndex as n, checkKnowledgeFreshnessFromIndex as o, REVIEW_SKILL_NAME as p, buildPackageSpecialistContext as r, diffKnowledgeIndex as s, buildArchitectureContext as t, renderKnowledgeIndexMarkdown as u };
|
|
2846
2909
|
|
|
2847
|
-
//# sourceMappingURL=knowledge-
|
|
2910
|
+
//# sourceMappingURL=knowledge-CLGmlHl6.js.map
|