@opensip-cli/fitness 0.1.6 → 0.1.7

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 (119) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/fit-execute-opts.test.js +2 -2
  3. package/dist/__tests__/fit-execute-opts.test.js.map +1 -1
  4. package/dist/__tests__/public-api.test.js +2 -1
  5. package/dist/__tests__/public-api.test.js.map +1 -1
  6. package/dist/__tests__/tool.test.js +24 -13
  7. package/dist/__tests__/tool.test.js.map +1 -1
  8. package/dist/cli/__tests__/fit-gate-mode.test.js +1 -1
  9. package/dist/cli/__tests__/fit-gate-mode.test.js.map +1 -1
  10. package/dist/cli/__tests__/fit-modes-live.test.d.ts +1 -1
  11. package/dist/cli/__tests__/fit-modes-live.test.js +13 -6
  12. package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -1
  13. package/dist/cli/__tests__/report-data.test.js +3 -3
  14. package/dist/cli/__tests__/report-data.test.js.map +1 -1
  15. package/dist/cli/fit/__tests__/display-fold.test.js +2 -2
  16. package/dist/cli/fit/__tests__/display-fold.test.js.map +1 -1
  17. package/dist/cli/fit/__tests__/fit-export-command-spec.test.d.ts +9 -0
  18. package/dist/cli/fit/__tests__/fit-export-command-spec.test.d.ts.map +1 -0
  19. package/dist/cli/fit/__tests__/fit-export-command-spec.test.js +75 -0
  20. package/dist/cli/fit/__tests__/fit-export-command-spec.test.js.map +1 -0
  21. package/dist/cli/fit/check-loader.d.ts +1 -1
  22. package/dist/cli/fit/check-loader.js +1 -1
  23. package/dist/cli/fit/config-loader.d.ts +1 -1
  24. package/dist/cli/fit/config-loader.js +1 -1
  25. package/dist/cli/fit/envelope-view.d.ts.map +1 -1
  26. package/dist/cli/fit/envelope-view.js +2 -14
  27. package/dist/cli/fit/envelope-view.js.map +1 -1
  28. package/dist/cli/fit/fit-aux-command-specs.d.ts +27 -17
  29. package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -1
  30. package/dist/cli/fit/fit-aux-command-specs.js +91 -53
  31. package/dist/cli/fit/fit-aux-command-specs.js.map +1 -1
  32. package/dist/cli/fit/recipe-selector.test.js +2 -2
  33. package/dist/cli/fit/recipe-selector.test.js.map +1 -1
  34. package/dist/cli/fit/result-builders.d.ts +29 -19
  35. package/dist/cli/fit/result-builders.d.ts.map +1 -1
  36. package/dist/cli/fit/result-builders.js +29 -24
  37. package/dist/cli/fit/result-builders.js.map +1 -1
  38. package/dist/cli/fit-modes.d.ts.map +1 -1
  39. package/dist/cli/fit-modes.js +7 -4
  40. package/dist/cli/fit-modes.js.map +1 -1
  41. package/dist/cli/fit-runner-views.d.ts +1 -1
  42. package/dist/cli/fit-runner-views.js +1 -1
  43. package/dist/cli/fit-runner.d.ts.map +1 -1
  44. package/dist/cli/fit-runner.js +18 -12
  45. package/dist/cli/fit-runner.js.map +1 -1
  46. package/dist/cli/fit-worker.d.ts.map +1 -1
  47. package/dist/cli/fit-worker.js +1 -0
  48. package/dist/cli/fit-worker.js.map +1 -1
  49. package/dist/cli/fit.d.ts +5 -3
  50. package/dist/cli/fit.d.ts.map +1 -1
  51. package/dist/cli/fit.js +6 -4
  52. package/dist/cli/fit.js.map +1 -1
  53. package/dist/framework/__tests__/concurrent-file-cache.test.d.ts +24 -0
  54. package/dist/framework/__tests__/concurrent-file-cache.test.d.ts.map +1 -0
  55. package/dist/framework/__tests__/concurrent-file-cache.test.js +151 -0
  56. package/dist/framework/__tests__/concurrent-file-cache.test.js.map +1 -0
  57. package/dist/framework/__tests__/define-check.test.js +38 -1
  58. package/dist/framework/__tests__/define-check.test.js.map +1 -1
  59. package/dist/framework/__tests__/define-regex-list-check.test.js +5 -1
  60. package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -1
  61. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js +3 -1
  62. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js.map +1 -1
  63. package/dist/framework/__tests__/execution-context.test.js +32 -9
  64. package/dist/framework/__tests__/execution-context.test.js.map +1 -1
  65. package/dist/framework/__tests__/file-accessor.test.js +7 -4
  66. package/dist/framework/__tests__/file-accessor.test.js.map +1 -1
  67. package/dist/framework/__tests__/file-cache-autoclear.test.d.ts +25 -0
  68. package/dist/framework/__tests__/file-cache-autoclear.test.d.ts.map +1 -0
  69. package/dist/framework/__tests__/file-cache-autoclear.test.js +116 -0
  70. package/dist/framework/__tests__/file-cache-autoclear.test.js.map +1 -0
  71. package/dist/framework/__tests__/register-helpers.test.js +2 -2
  72. package/dist/framework/__tests__/register-helpers.test.js.map +1 -1
  73. package/dist/framework/__tests__/scope-registry.test.js +2 -2
  74. package/dist/framework/__tests__/scope-registry.test.js.map +1 -1
  75. package/dist/framework/define-check.d.ts.map +1 -1
  76. package/dist/framework/define-check.js +9 -0
  77. package/dist/framework/define-check.js.map +1 -1
  78. package/dist/framework/execution-context.d.ts +9 -2
  79. package/dist/framework/execution-context.d.ts.map +1 -1
  80. package/dist/framework/execution-context.js +20 -6
  81. package/dist/framework/execution-context.js.map +1 -1
  82. package/dist/framework/file-accessor.d.ts +12 -0
  83. package/dist/framework/file-accessor.d.ts.map +1 -1
  84. package/dist/framework/file-accessor.js +8 -3
  85. package/dist/framework/file-accessor.js.map +1 -1
  86. package/dist/framework/file-cache.d.ts +11 -1
  87. package/dist/framework/file-cache.d.ts.map +1 -1
  88. package/dist/framework/file-cache.js +11 -1
  89. package/dist/framework/file-cache.js.map +1 -1
  90. package/dist/framework/ignore-processing.d.ts.map +1 -1
  91. package/dist/framework/ignore-processing.js +26 -11
  92. package/dist/framework/ignore-processing.js.map +1 -1
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +4 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/persistence/session-replay.d.ts +8 -3
  98. package/dist/persistence/session-replay.d.ts.map +1 -1
  99. package/dist/persistence/session-replay.js +7 -8
  100. package/dist/persistence/session-replay.js.map +1 -1
  101. package/dist/persistence/session-replay.test.js +9 -7
  102. package/dist/persistence/session-replay.test.js.map +1 -1
  103. package/dist/plugins/__tests__/loader.test.js +2 -2
  104. package/dist/plugins/__tests__/loader.test.js.map +1 -1
  105. package/dist/recipes/__tests__/run-one-check.test.js +16 -1
  106. package/dist/recipes/__tests__/run-one-check.test.js.map +1 -1
  107. package/dist/recipes/__tests__/service.test.js +46 -3
  108. package/dist/recipes/__tests__/service.test.js.map +1 -1
  109. package/dist/recipes/service.d.ts +8 -1
  110. package/dist/recipes/service.d.ts.map +1 -1
  111. package/dist/recipes/service.js +33 -4
  112. package/dist/recipes/service.js.map +1 -1
  113. package/dist/scope-augmentation.d.ts +7 -1
  114. package/dist/scope-augmentation.d.ts.map +1 -1
  115. package/dist/tool.d.ts +4 -3
  116. package/dist/tool.d.ts.map +1 -1
  117. package/dist/tool.js +58 -85
  118. package/dist/tool.js.map +1 -1
  119. package/package.json +14 -14
package/dist/tool.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * fitnessTool — fitness as a Tool plugin.
3
3
  *
4
- * Owns the `fit`, `fit-list`, `fit-recipes`, and `fit-baseline-export`
5
- * subcommands. Since release 2.11.0 (Phase 4) the Commander wiring is no longer
4
+ * Owns the `fit` primary plus its nested `fit list`, `fit recipes`, and
5
+ * `fit export` subcommands. Since release 2.11.0 (Phase 4) the Commander wiring is no longer
6
6
  * hand-rolled: the tool exports declarative {@link CommandSpec}s
7
7
  * (`commandSpecs`) and the host's `mountCommandSpec` mounts them
8
8
  * (name/description/aliases, the ADR-0021 common flags, each command's options)
@@ -43,17 +43,19 @@
43
43
  * -------------
44
44
  * - This file owns the command-spec assembly + the tool descriptor.
45
45
  * - `cli/fit/fit-command-spec.ts` owns the primary `fit` command spec + handler.
46
- * - `cli/fit/fit-aux-command-specs.ts` owns the aux command specs.
46
+ * - `cli/fit/fit-aux-command-specs.ts` owns the nested `fit list` / `fit recipes`
47
+ * / `fit export` command specs.
47
48
  * - `cli/fit-modes.ts` owns the dispatch branches (gate/list/recipes/json/live).
48
49
  */
49
- import { readPackageVersion } from '@opensip-cli/core';
50
+ import { defineTool, readPackageVersion } from '@opensip-cli/core';
50
51
  import { fitnessFingerprintStrategy } from './baseline-strategy.js';
51
- import { fitBaselineExportCommandSpec, fitListCommandSpec, fitRecipesCommandSpec, } from './cli/fit/fit-aux-command-specs.js';
52
+ import { fitExportCommandSpec, fitListGroupedCommandSpec, fitRecipesGroupedCommandSpec, } from './cli/fit/fit-aux-command-specs.js';
52
53
  import { buildFitCommandSpec, FIT_LIVE_VIEW_KEY } from './cli/fit/fit-command-spec.js';
53
54
  import { renderFitLive } from './cli/fit-runner.js';
54
55
  import { fitRunWorkerCommandSpec } from './cli/fit-worker.js';
55
56
  import { collectFitnessReportData } from './cli/report-data.js';
56
57
  import { fitnessConfigDeclaration } from './config/fitness-config-schema.js';
58
+ import { FileCache } from './framework/file-cache.js';
57
59
  import { createCheckRegistry, createFitnessLoadState, createRecipeRegistry, currentCheckRegistry, currentRecipeRegistry, } from './framework/scope-registry.js';
58
60
  import { fitReplayFromSession } from './persistence/session-replay.js';
59
61
  import { FIT_PLUGIN_LAYOUT } from './plugins/loader.js';
@@ -63,29 +65,6 @@ import { fitScaffoldExamples, fitStableExampleIds } from './scaffold/examples.js
63
65
  // `scope.fitness` is the correctly-typed slot here.
64
66
  import './scope-augmentation.js';
65
67
  // =============================================================================
66
- // COMMAND DESCRIPTORS — used by --help listings and conflict detection.
67
- // =============================================================================
68
- const FIT = {
69
- name: 'fit',
70
- description: 'Run fitness checks',
71
- };
72
- const FIT_LIST = {
73
- name: 'fit-list',
74
- description: 'List available fitness checks',
75
- };
76
- const FIT_RECIPES = {
77
- name: 'fit-recipes',
78
- description: 'List available fitness recipes',
79
- };
80
- const FIT_BASELINE_EXPORT = {
81
- name: 'fit-baseline-export',
82
- description: 'Export the fit gate baseline (SARIF) from the datastore to a file',
83
- };
84
- const FIT_RUN_WORKER = {
85
- name: 'fit-run-worker',
86
- description: '[internal] Run fit headless and stream progress + result over IPC (forked by the live view)',
87
- };
88
- // =============================================================================
89
68
  // LIVE-VIEW SETUP + COMMAND-SPEC ASSEMBLY
90
69
  // =============================================================================
91
70
  /**
@@ -138,9 +117,14 @@ function setUpFitLiveView(cli) {
138
117
  */
139
118
  const fitCommandSpecs = [
140
119
  buildFitCommandSpec(setUpFitLiveView),
141
- fitListCommandSpec,
142
- fitRecipesCommandSpec,
143
- fitBaselineExportCommandSpec,
120
+ // Grouped Tier-2 children — `fit list` / `fit recipes` nest under the `fit`
121
+ // primary via the nested-mount capability (the canonical `<tool> <verb>`
122
+ // grammar; the legacy flat aliases were removed).
123
+ fitListGroupedCommandSpec,
124
+ fitRecipesGroupedCommandSpec,
125
+ // Canonical nested export — mounts as `fit export` under the `fit` primary via
126
+ // the nested-mount capability.
127
+ fitExportCommandSpec,
144
128
  fitRunWorkerCommandSpec,
145
129
  ];
146
130
  /**
@@ -172,17 +156,28 @@ const registerFitRecipe = (contribution) => {
172
156
  /**
173
157
  * Per-run subscope contribution (D7). Called by the CLI's pre-action-hook
174
158
  * after constructing the scope and before entering it; the kernel installs
175
- * the returned `fitness` slot. Fresh check + recipe registries (and an empty
176
- * `ensureChecksLoaded` lifecycle slot) per run so concurrent scopes carry
177
- * independent fitness state.
159
+ * the returned `fitness` slot. Fresh check + recipe registries, an empty
160
+ * `ensureChecksLoaded` lifecycle slot, and a fresh per-run `FileCache` so
161
+ * concurrent scopes carry independent fitness state.
162
+ *
163
+ * Returns the {@link ScopeContributionWithDisposer} wrapper: the SAME
164
+ * `fileCache` instance is placed on `scope.fitness.fileCache` and closed over by
165
+ * the `onDispose` disposer, so `RunScope.dispose()` clears the cache + cancels
166
+ * its auto-clear timer. The kernel install loop registers the disposer via
167
+ * `scope.onDispose(...)`; core never names `FileCache` (layering-clean).
178
168
  */
179
169
  function contributeScope() {
170
+ const fileCache = new FileCache();
180
171
  return {
181
- fitness: {
182
- checks: createCheckRegistry(),
183
- recipes: createRecipeRegistry(),
184
- load: createFitnessLoadState(),
172
+ contribution: {
173
+ fitness: {
174
+ checks: createCheckRegistry(),
175
+ recipes: createRecipeRegistry(),
176
+ load: createFitnessLoadState(),
177
+ fileCache,
178
+ },
185
179
  },
180
+ onDispose: () => fileCache.clear(),
186
181
  };
187
182
  }
188
183
  // =============================================================================
@@ -200,61 +195,39 @@ export const FITNESS_CONTRACT_VERSION = '1.0.0';
200
195
  // EXPORT
201
196
  // =============================================================================
202
197
  export const FITNESS_STABLE_ID = 'afd68bd3-ff3c-4935-a5b6-76d8fc7a5224';
203
- export const fitnessTool = {
198
+ export const fitnessTool = defineTool({
204
199
  metadata: {
205
200
  id: FITNESS_STABLE_ID, // stable UUID (per ADR-0048; matches Checks `id` naming)
206
- name: 'fitness', // human key (previously the value in `id`)
201
+ // tool-command-surface-taxonomy Task 2.4 (Q1): metadata.name == the command
202
+ // verb (`fit`). The config namespace key stays `fitness:` — it keys off the
203
+ // DECOUPLED `fitnessConfigDeclaration.namespace = 'fitness'` literal, NOT
204
+ // metadata.name, so existing `fitness:` config blocks keep validating. The
205
+ // session `tool` column is already `'fit'` (sessionReplay.tool + the session
206
+ // contributions), so aligning the name REDUCES mismatch. Q6 (flipping the
207
+ // namespace literal to `fit:`) stays open — no `fit:` config alias is added.
208
+ name: 'fit', // command verb + human key (was 'fitness')
207
209
  version: readPackageVersion(import.meta.url),
208
210
  description: 'Run fitness checks against a codebase',
209
211
  },
210
- commands: [FIT, FIT_LIST, FIT_RECIPES, FIT_BASELINE_EXPORT, FIT_RUN_WORKER],
211
212
  pluginLayout: FIT_PLUGIN_LAYOUT,
212
- // Release 2.11.0 Phase 4: fitness declares its command surface; the host
213
- // mounts each spec via mountCommandSpec. The deprecated `register()` fallback
214
- // is gone — fitness no longer touches Commander.
215
213
  commandSpecs: fitCommandSpecs,
216
- contributeScope,
217
- collectReportData: collectFitnessReportData,
218
- sessionReplay: {
219
- tool: 'fit',
220
- replaySession: fitReplayFromSession,
221
- },
222
- // ADR-0023 Phase 4: fitness contributes its namespaced `fitness:` Zod schema
223
- // (gate thresholds, disabledChecks, recipe) so the host composes +
224
- // strict-validates the whole config document before dispatch. Shared
225
- // targeting (targets/globalExcludes/checkOverrides) stays with
226
- // SignalersConfigSchema because the fit hot path consumes target registries
227
- // through that loader.
228
- config: fitnessConfigDeclaration,
229
- // §5.3 Phase 4: fitness owns the `fit-pack` capability domain (declared in
230
- // its manifest). It supplies the REAL registrar so the host can replace the
231
- // manifest-time deferred placeholder once fitness's module loads.
232
- capabilityRegistrars: { 'fit-pack': registerFitCheck, 'fit-recipe': registerFitRecipe },
233
- // ADR-0036: fitness's message-hash baseline identity (sha256(filePath\nruleId\n
234
- // message)), read by the host baseline/ratchet seams when fit stamps its gate
235
- // envelope. Excludes line/col so unrelated line-shifts don't flap the ratchet.
236
- fingerprintStrategy: fitnessFingerprintStrategy,
237
- // ADR-0038: fitness owns its `init` example bytes + the pinned check-id universe.
238
- // The host writes each returned file under userPluginDir('fit', file.kind).
239
- scaffoldExamples: fitScaffoldExamples,
240
- stableExampleIds: fitStableExampleIds,
241
- // ADR-0038 Decision 2: fitness owns its `fitness:` config block (inline guidance
242
- // comments the bare ToolConfigDeclaration.defaults can't express → the hook route).
243
- scaffoldConfigBlock: fitScaffoldConfigBlock,
244
- initialize: async () => {
245
- // ensureChecksLoaded() is called inside the executeFit / listChecks
246
- // / listRecipes paths, so a separate initialize() pass is not
247
- // strictly needed today. Left as a no-op so fitness has somewhere
248
- // to hang future tool-startup work (eager check-pack discovery,
249
- // catalog warming, etc.) without requiring a contract change.
250
- },
251
- // ADR-0047: per-tool contract version for the fitness-specific surface
252
- // (defineCheck, analysis modes, check packs, recipes, etc.). This is
253
- // independent of the core TOOL_CONTRACT_VERSION (the generic Tool bus).
254
- // Declared here so agent-catalog, compatibility logic, and external
255
- // fitness pack authors can see the exact surface this tool was written against.
256
214
  extensionPoints: {
257
215
  fitnessContractVersion: FITNESS_CONTRACT_VERSION,
216
+ contributeScope,
217
+ collectReportData: collectFitnessReportData,
218
+ sessionReplay: {
219
+ tool: 'fit',
220
+ replaySession: fitReplayFromSession,
221
+ },
222
+ config: fitnessConfigDeclaration,
223
+ capabilityRegistrars: { 'fit-pack': registerFitCheck, 'fit-recipe': registerFitRecipe },
224
+ fingerprintStrategy: fitnessFingerprintStrategy,
225
+ scaffoldExamples: fitScaffoldExamples,
226
+ stableExampleIds: fitStableExampleIds,
227
+ scaffoldConfigBlock: fitScaffoldConfigBlock,
228
+ initialize: async () => {
229
+ // ensureChecksLoaded() runs inside executeFit / listChecks / listRecipes.
230
+ },
258
231
  },
259
- };
232
+ });
260
233
  //# sourceMappingURL=tool.js.map
package/dist/tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensip-cli/fitness",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Fitness checks engine for OpenSIP CLI",
6
6
  "keywords": [
@@ -34,7 +34,7 @@
34
34
  ],
35
35
  "opensipTools": {
36
36
  "kind": "tool",
37
- "id": "fitness",
37
+ "id": "fit",
38
38
  "stableId": "afd68bd3-ff3c-4935-a5b6-76d8fc7a5224",
39
39
  "apiVersion": 1,
40
40
  "commands": [
@@ -43,16 +43,16 @@
43
43
  "description": "Run fitness checks"
44
44
  },
45
45
  {
46
- "name": "fit-list",
46
+ "name": "list",
47
47
  "description": "List available fitness checks"
48
48
  },
49
49
  {
50
- "name": "fit-recipes",
50
+ "name": "recipes",
51
51
  "description": "List available fitness recipes"
52
52
  },
53
53
  {
54
- "name": "fit-baseline-export",
55
- "description": "Export the fit gate baseline (SARIF) from the datastore to a file"
54
+ "name": "export",
55
+ "description": "Export fit artifacts (--format baseline)"
56
56
  },
57
57
  {
58
58
  "name": "fit-run-worker",
@@ -114,19 +114,19 @@
114
114
  "react": "^19.2.7",
115
115
  "typescript": "~6.0.3",
116
116
  "zod": "^4.4.3",
117
- "@opensip-cli/cli-ui": "0.1.6",
118
- "@opensip-cli/config": "0.1.6",
119
- "@opensip-cli/contracts": "0.1.6",
120
- "@opensip-cli/core": "0.1.6",
121
- "@opensip-cli/datastore": "0.1.6",
122
- "@opensip-cli/targeting": "0.1.6",
123
- "@opensip-cli/session-store": "0.1.6"
117
+ "@opensip-cli/contracts": "0.1.7",
118
+ "@opensip-cli/core": "0.1.7",
119
+ "@opensip-cli/cli-ui": "0.1.7",
120
+ "@opensip-cli/datastore": "0.1.7",
121
+ "@opensip-cli/config": "0.1.7",
122
+ "@opensip-cli/session-store": "0.1.7",
123
+ "@opensip-cli/targeting": "0.1.7"
124
124
  },
125
125
  "devDependencies": {
126
126
  "@types/node": "^24.13.2",
127
127
  "@types/react": "^19.2.17",
128
128
  "vitest": "^4.1.8",
129
- "@opensip-cli/lang-typescript": "0.1.6"
129
+ "@opensip-cli/lang-typescript": "0.1.7"
130
130
  },
131
131
  "scripts": {
132
132
  "build": "tsc",