@spikedpunch/mast 0.1.0 → 0.3.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 (84) hide show
  1. package/MAST_SPEC.md +196 -52
  2. package/README.md +86 -11
  3. package/assets/skill.md +49 -10
  4. package/dist/ast/types.d.ts +173 -1
  5. package/dist/ast/types.d.ts.map +1 -1
  6. package/dist/cli/query.d.ts +40 -1
  7. package/dist/cli/query.d.ts.map +1 -1
  8. package/dist/cli/query.js +36 -2
  9. package/dist/cli/query.js.map +1 -1
  10. package/dist/cli/search-cmd.d.ts +6 -1
  11. package/dist/cli/search-cmd.d.ts.map +1 -1
  12. package/dist/cli/search-cmd.js +9 -2
  13. package/dist/cli/search-cmd.js.map +1 -1
  14. package/dist/cli/serve.d.ts +6 -1
  15. package/dist/cli/serve.d.ts.map +1 -1
  16. package/dist/cli/serve.js +14 -4
  17. package/dist/cli/serve.js.map +1 -1
  18. package/dist/cli/status.d.ts +15 -0
  19. package/dist/cli/status.d.ts.map +1 -1
  20. package/dist/cli/status.js +32 -6
  21. package/dist/cli/status.js.map +1 -1
  22. package/dist/indexer/freshness.d.ts +10 -0
  23. package/dist/indexer/freshness.d.ts.map +1 -1
  24. package/dist/indexer/freshness.js +7 -1
  25. package/dist/indexer/freshness.js.map +1 -1
  26. package/dist/indexer/import-resolver.js +28 -16
  27. package/dist/indexer/import-resolver.js.map +1 -1
  28. package/dist/indexer/index.d.ts +38 -3
  29. package/dist/indexer/index.d.ts.map +1 -1
  30. package/dist/indexer/index.js +47 -4
  31. package/dist/indexer/index.js.map +1 -1
  32. package/dist/indexer/watcher.d.ts +16 -0
  33. package/dist/indexer/watcher.d.ts.map +1 -1
  34. package/dist/indexer/watcher.js +8 -0
  35. package/dist/indexer/watcher.js.map +1 -1
  36. package/dist/mcp/context.d.ts +16 -0
  37. package/dist/mcp/context.d.ts.map +1 -1
  38. package/dist/mcp/freshness-probe.d.ts +82 -0
  39. package/dist/mcp/freshness-probe.d.ts.map +1 -0
  40. package/dist/mcp/freshness-probe.js +111 -0
  41. package/dist/mcp/freshness-probe.js.map +1 -0
  42. package/dist/mcp/server.d.ts +46 -3
  43. package/dist/mcp/server.d.ts.map +1 -1
  44. package/dist/mcp/server.js +65 -3
  45. package/dist/mcp/server.js.map +1 -1
  46. package/dist/mcp/tools/_helpers.d.ts +42 -0
  47. package/dist/mcp/tools/_helpers.d.ts.map +1 -1
  48. package/dist/mcp/tools/_helpers.js +29 -0
  49. package/dist/mcp/tools/_helpers.js.map +1 -1
  50. package/dist/mcp/tools/callers.d.ts.map +1 -1
  51. package/dist/mcp/tools/callers.js +6 -1
  52. package/dist/mcp/tools/callers.js.map +1 -1
  53. package/dist/mcp/tools/dependencies.d.ts.map +1 -1
  54. package/dist/mcp/tools/dependencies.js +2 -1
  55. package/dist/mcp/tools/dependencies.js.map +1 -1
  56. package/dist/mcp/tools/exports.d.ts.map +1 -1
  57. package/dist/mcp/tools/exports.js +11 -2
  58. package/dist/mcp/tools/exports.js.map +1 -1
  59. package/dist/mcp/tools/implementors.d.ts.map +1 -1
  60. package/dist/mcp/tools/implementors.js +10 -2
  61. package/dist/mcp/tools/implementors.js.map +1 -1
  62. package/dist/mcp/tools/project-skeleton.d.ts.map +1 -1
  63. package/dist/mcp/tools/project-skeleton.js +2 -1
  64. package/dist/mcp/tools/project-skeleton.js.map +1 -1
  65. package/dist/mcp/tools/reindex.d.ts.map +1 -1
  66. package/dist/mcp/tools/reindex.js +3 -0
  67. package/dist/mcp/tools/reindex.js.map +1 -1
  68. package/dist/mcp/tools/rename-impact.d.ts.map +1 -1
  69. package/dist/mcp/tools/rename-impact.js +4 -1
  70. package/dist/mcp/tools/rename-impact.js.map +1 -1
  71. package/dist/mcp/tools/search.d.ts.map +1 -1
  72. package/dist/mcp/tools/search.js +13 -2
  73. package/dist/mcp/tools/search.js.map +1 -1
  74. package/dist/mcp/tools/signature.d.ts.map +1 -1
  75. package/dist/mcp/tools/signature.js +15 -2
  76. package/dist/mcp/tools/signature.js.map +1 -1
  77. package/dist/mcp/tools/status.d.ts.map +1 -1
  78. package/dist/mcp/tools/status.js +8 -2
  79. package/dist/mcp/tools/status.js.map +1 -1
  80. package/dist/search/potential-matches.d.ts +15 -0
  81. package/dist/search/potential-matches.d.ts.map +1 -1
  82. package/dist/search/potential-matches.js +17 -2
  83. package/dist/search/potential-matches.js.map +1 -1
  84. package/package.json +4 -2
@@ -1,11 +1,26 @@
1
1
  import { searchIdentifiers, countIdentifierMatches } from './fts.js';
2
2
  import { queryCheckerVerdicts } from '../graph/queries.js';
3
+ /**
4
+ * The page size every capped read tool uses — `mast_callers` / `mast_rename_impact`'s
5
+ * potential matches (F10, since 2026-08), and `mast_signature` / `mast_implementors` /
6
+ * `mast_exports` (D043, 2026-08-20).
7
+ *
8
+ * ONE constant, exported and re-exported rather than repeated, and that is the point. D043 was
9
+ * not "a tool had no cap" — it was a cap applied to the tool where the problem was noticed and
10
+ * to none of its three siblings. A second literal `50` elsewhere would be the same defect
11
+ * wearing the same number, and would drift the first time one of them was tuned.
12
+ *
13
+ * 50 is inherited from F10 rather than re-derived. It is a page size, not a limit on what
14
+ * exists: every tool reports the real uncapped total alongside a truncated page, so a caller can
15
+ * always tell a full answer from a first page.
16
+ */
17
+ export const DEFAULT_RESULT_LIMIT = 50;
3
18
  /**
4
19
  * Identifier-FTS hits for `symbolName` that are NOT already covered by a
5
20
  * verified caller — the raw candidate pool behind `potential_matches` (§9
6
21
  * mast_callers), before checker-verdict filtering.
7
22
  */
8
- export async function collectPotentialMatchCandidates(db, chunkSource, symbolName, verified, limit = 50) {
23
+ export async function collectPotentialMatchCandidates(db, chunkSource, symbolName, verified, limit = DEFAULT_RESULT_LIMIT) {
9
24
  const identRows = await searchIdentifiers(db, symbolName, limit);
10
25
  const chunks = await chunkSource.getChunksByIds(identRows.map((r) => r.chunk_id));
11
26
  // Exclude chunk IDs already covered by the verified set.
@@ -48,7 +63,7 @@ export async function collectPotentialMatchCandidates(db, chunkSource, symbolNam
48
63
  * verdict was recorded against). `unresolved` candidates are never persisted
49
64
  * as verdicts (see `checker_verdicts` in `graph/db.ts`) and always remain.
50
65
  */
51
- export async function collectPotentialMatches(db, chunkSource, symbolId, symbolName, verified, limit = 50) {
66
+ export async function collectPotentialMatches(db, chunkSource, symbolId, symbolName, verified, limit = DEFAULT_RESULT_LIMIT) {
52
67
  const { candidates, truncatedMatchCount } = await collectPotentialMatchCandidates(db, chunkSource, symbolName, verified, limit);
53
68
  const verdicts = await queryCheckerVerdicts(db, symbolId);
54
69
  const verdictByKey = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"potential-matches.js","sourceRoot":"","sources":["../../src/search/potential-matches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"potential-matches.js","sourceRoot":"","sources":["../../src/search/potential-matches.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spikedpunch/mast",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -58,12 +58,14 @@
58
58
  "zod": "^4.4.3"
59
59
  },
60
60
  "devDependencies": {
61
+ "@eslint/js": "^10.0.1",
61
62
  "@types/better-sqlite3": "^7.6.13",
62
63
  "@types/node": "^24.0.0",
63
64
  "@types/proper-lockfile": "^4.1.4",
64
65
  "@typescript-eslint/eslint-plugin": "^8.60.1",
65
66
  "@typescript-eslint/parser": "^8.60.1",
66
67
  "eslint": "^10.4.1",
68
+ "globals": "^17.12.0",
67
69
  "vitest": "^1.0.0"
68
70
  },
69
71
  "engines": {
@@ -75,7 +77,7 @@
75
77
  "typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
76
78
  "test": "vitest run",
77
79
  "test:watch": "vitest",
78
- "lint": "eslint src eval",
80
+ "lint": "eslint src eval integration",
79
81
  "format": "prettier --write src"
80
82
  }
81
83
  }