@skillsmith/core 0.12.0 → 0.12.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/CHANGELOG.md +166 -1
- package/README.md +7 -8
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/api/client.d.ts +5 -3
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +23 -33
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/client.registry-sync.d.ts +28 -0
- package/dist/src/api/client.registry-sync.d.ts.map +1 -0
- package/dist/src/api/client.registry-sync.js +36 -0
- package/dist/src/api/client.registry-sync.js.map +1 -0
- package/dist/src/api/client.test.js +185 -0
- package/dist/src/api/client.test.js.map +1 -1
- package/dist/src/api/client.toSkill.d.ts +16 -0
- package/dist/src/api/client.toSkill.d.ts.map +1 -0
- package/dist/src/api/client.toSkill.js +46 -0
- package/dist/src/api/client.toSkill.js.map +1 -0
- package/dist/src/api/client.types.d.ts +22 -0
- package/dist/src/api/client.types.d.ts.map +1 -1
- package/dist/src/api/index.d.ts +1 -1
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/schemas.d.ts +28 -0
- package/dist/src/api/schemas.d.ts.map +1 -1
- package/dist/src/api/schemas.js +13 -0
- package/dist/src/api/schemas.js.map +1 -1
- package/dist/src/audit/remote-audit.d.ts +85 -0
- package/dist/src/audit/remote-audit.d.ts.map +1 -1
- package/dist/src/audit/remote-audit.js +126 -3
- package/dist/src/audit/remote-audit.js.map +1 -1
- package/dist/src/audit/remote-audit.test.js +217 -1
- package/dist/src/audit/remote-audit.test.js.map +1 -1
- package/dist/src/config/index.d.ts +1 -0
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/token-credentials.d.ts +20 -0
- package/dist/src/config/token-credentials.d.ts.map +1 -1
- package/dist/src/config/token-credentials.js +59 -0
- package/dist/src/config/token-credentials.js.map +1 -1
- package/dist/src/config/token-credentials.test.d.ts +3 -0
- package/dist/src/config/token-credentials.test.d.ts.map +1 -1
- package/dist/src/config/token-credentials.test.js +68 -0
- package/dist/src/config/token-credentials.test.js.map +1 -1
- package/dist/src/db/migration-runner.d.ts.map +1 -1
- package/dist/src/db/migration-runner.js +6 -0
- package/dist/src/db/migration-runner.js.map +1 -1
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts +36 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.d.ts.map +1 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js +38 -0
- package/dist/src/db/migrations/v18-skill-versions-real-content-hash.js.map +1 -0
- package/dist/src/db/schema.d.ts +1 -1
- package/dist/src/db/schema.d.ts.map +1 -1
- package/dist/src/db/schema.js +3 -1
- package/dist/src/db/schema.js.map +1 -1
- package/dist/src/exports/services.d.ts +3 -7
- package/dist/src/exports/services.d.ts.map +1 -1
- package/dist/src/exports/services.install.d.ts +18 -0
- package/dist/src/exports/services.install.d.ts.map +1 -0
- package/dist/src/exports/services.install.js +62 -0
- package/dist/src/exports/services.install.js.map +1 -0
- package/dist/src/exports/services.js +12 -32
- package/dist/src/exports/services.js.map +1 -1
- package/dist/src/exports/types.d.ts +1 -1
- package/dist/src/exports/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/agent-config-merge.json.d.ts +5 -4
- package/dist/src/install/agent-config-merge.json.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.json.js +10 -9
- package/dist/src/install/agent-config-merge.json.js.map +1 -1
- package/dist/src/install/agent-config-merge.types.d.ts +11 -1
- package/dist/src/install/agent-config-merge.types.d.ts.map +1 -1
- package/dist/src/install/agent-config-merge.types.js.map +1 -1
- package/dist/src/install/agent-harness-targets.d.ts +30 -2
- package/dist/src/install/agent-harness-targets.d.ts.map +1 -1
- package/dist/src/install/agent-harness-targets.js +17 -0
- package/dist/src/install/agent-harness-targets.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.d.ts +28 -3
- package/dist/src/install/agent-manifest-path-guard.d.ts.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.js +59 -3
- package/dist/src/install/agent-manifest-path-guard.js.map +1 -1
- package/dist/src/install/agent-manifest-path-guard.test.js +27 -1
- package/dist/src/install/agent-manifest-path-guard.test.js.map +1 -1
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts +74 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js +106 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js +157 -0
- package/dist/src/install/agent-pack-installer.antigravity-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts +53 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js +207 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.js.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js +285 -0
- package/dist/src/install/agent-pack-installer.cursor-mcp.test.js.map +1 -0
- package/dist/src/install/agent-pack-installer.d.ts +8 -0
- package/dist/src/install/agent-pack-installer.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.d.ts +120 -3
- package/dist/src/install/agent-pack-installer.entry.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.entry.js +166 -3
- package/dist/src/install/agent-pack-installer.entry.js.map +1 -1
- package/dist/src/install/agent-pack-installer.js +97 -3
- package/dist/src/install/agent-pack-installer.js.map +1 -1
- package/dist/src/install/agent-pack-installer.types.d.ts +27 -0
- package/dist/src/install/agent-pack-installer.types.d.ts.map +1 -1
- package/dist/src/install/agent-pack-installer.types.js +6 -0
- package/dist/src/install/agent-pack-installer.types.js.map +1 -1
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts +2 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js +148 -0
- package/dist/src/install/agent-pack-installer.workspace-scope.test.js.map +1 -0
- package/dist/src/install/agent-pack-uninstaller.d.ts +18 -7
- package/dist/src/install/agent-pack-uninstaller.d.ts.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.js +59 -9
- package/dist/src/install/agent-pack-uninstaller.js.map +1 -1
- package/dist/src/install/agent-pack-uninstaller.test.js +74 -1
- package/dist/src/install/agent-pack-uninstaller.test.js.map +1 -1
- package/dist/src/install/fan-out.d.ts.map +1 -1
- package/dist/src/install/fan-out.js +6 -0
- package/dist/src/install/fan-out.js.map +1 -1
- package/dist/src/install/index.d.ts +2 -0
- package/dist/src/install/index.d.ts.map +1 -1
- package/dist/src/install/index.js +2 -0
- package/dist/src/install/index.js.map +1 -1
- package/dist/src/install/workspace-scope.d.ts +207 -0
- package/dist/src/install/workspace-scope.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.js +275 -0
- package/dist/src/install/workspace-scope.js.map +1 -0
- package/dist/src/install/workspace-scope.test.d.ts +2 -0
- package/dist/src/install/workspace-scope.test.d.ts.map +1 -0
- package/dist/src/install/workspace-scope.test.js +378 -0
- package/dist/src/install/workspace-scope.test.js.map +1 -0
- package/dist/src/security/__tests__/pathValidation.test.js +30 -1
- package/dist/src/security/__tests__/pathValidation.test.js.map +1 -1
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts +258 -0
- package/dist/src/services/SubagentGenerator.client-profiles.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js +260 -0
- package/dist/src/services/SubagentGenerator.client-profiles.js.map +1 -0
- package/dist/src/services/SubagentGenerator.d.ts +19 -41
- package/dist/src/services/SubagentGenerator.d.ts.map +1 -1
- package/dist/src/services/SubagentGenerator.helpers.d.ts +64 -0
- package/dist/src/services/SubagentGenerator.helpers.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.helpers.js +228 -0
- package/dist/src/services/SubagentGenerator.helpers.js.map +1 -0
- package/dist/src/services/SubagentGenerator.js +66 -208
- package/dist/src/services/SubagentGenerator.js.map +1 -1
- package/dist/src/services/SubagentGenerator.types.d.ts +45 -0
- package/dist/src/services/SubagentGenerator.types.d.ts.map +1 -0
- package/dist/src/services/SubagentGenerator.types.js +14 -0
- package/dist/src/services/SubagentGenerator.types.js.map +1 -0
- package/dist/src/services/TransformationService.d.ts +18 -61
- package/dist/src/services/TransformationService.d.ts.map +1 -1
- package/dist/src/services/TransformationService.js +29 -17
- package/dist/src/services/TransformationService.js.map +1 -1
- package/dist/src/services/TransformationService.types.d.ts +74 -0
- package/dist/src/services/TransformationService.types.d.ts.map +1 -0
- package/dist/src/services/TransformationService.types.js +8 -0
- package/dist/src/services/TransformationService.types.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts +5 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js +72 -0
- package/dist/src/services/__tests__/SubagentGenerator.client-profiles.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts +2 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.d.ts.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js +61 -0
- package/dist/src/services/__tests__/SubagentGenerator.helpers.test.js.map +1 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js +155 -0
- package/dist/src/services/__tests__/SubagentGenerator.test.js.map +1 -1
- package/dist/src/services/__tests__/TransformationService.test.js +48 -0
- package/dist/src/services/__tests__/TransformationService.test.js.map +1 -1
- package/dist/src/services/agent-pack/agent-pack.test.js +1 -0
- package/dist/src/services/agent-pack/agent-pack.test.js.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts +1 -1
- package/dist/src/services/agent-pack/prompt-source.d.ts.map +1 -1
- package/dist/src/services/agent-pack/prompt-source.js +10 -3
- package/dist/src/services/agent-pack/prompt-source.js.map +1 -1
- package/dist/src/services/agent-pack/types.d.ts +26 -2
- package/dist/src/services/agent-pack/types.d.ts.map +1 -1
- package/dist/src/services/agent-pack/types.js +13 -0
- package/dist/src/services/agent-pack/types.js.map +1 -1
- package/dist/src/services/agent-tool-profile.d.ts.map +1 -1
- package/dist/src/services/agent-tool-profile.js +7 -0
- package/dist/src/services/agent-tool-profile.js.map +1 -1
- package/dist/src/services/agent-tool-profile.test.js +2 -2
- package/dist/src/services/skill-content-comparison.d.ts +71 -0
- package/dist/src/services/skill-content-comparison.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.js +90 -0
- package/dist/src/services/skill-content-comparison.js.map +1 -0
- package/dist/src/services/skill-content-comparison.test.d.ts +6 -0
- package/dist/src/services/skill-content-comparison.test.d.ts.map +1 -0
- package/dist/src/services/skill-content-comparison.test.js +83 -0
- package/dist/src/services/skill-content-comparison.test.js.map +1 -0
- package/dist/src/services/skill-identity-classification.d.ts +202 -0
- package/dist/src/services/skill-identity-classification.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.js +295 -0
- package/dist/src/services/skill-identity-classification.js.map +1 -0
- package/dist/src/services/skill-identity-classification.test.d.ts +6 -0
- package/dist/src/services/skill-identity-classification.test.d.ts.map +1 -0
- package/dist/src/services/skill-identity-classification.test.js +314 -0
- package/dist/src/services/skill-identity-classification.test.js.map +1 -0
- package/dist/src/services/skill-installation.content.d.ts.map +1 -1
- package/dist/src/services/skill-installation.content.js +6 -1
- package/dist/src/services/skill-installation.content.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.d.ts +8 -15
- package/dist/src/services/skill-installation.helpers.d.ts.map +1 -1
- package/dist/src/services/skill-installation.helpers.js +11 -105
- package/dist/src/services/skill-installation.helpers.js.map +1 -1
- package/dist/src/services/skill-installation.helpers.test.js +106 -1
- package/dist/src/services/skill-installation.helpers.test.js.map +1 -1
- package/dist/src/services/skill-installation.service.js +1 -1
- package/dist/src/services/skill-installation.service.js.map +1 -1
- package/dist/src/services/skill-installation.types.d.ts +33 -0
- package/dist/src/services/skill-installation.types.d.ts.map +1 -1
- package/dist/src/services/skill-installation.types.js.map +1 -1
- package/dist/src/services/skill-installation.uninstall.d.ts +84 -0
- package/dist/src/services/skill-installation.uninstall.d.ts.map +1 -0
- package/dist/src/services/skill-installation.uninstall.js +252 -0
- package/dist/src/services/skill-installation.uninstall.js.map +1 -0
- package/dist/src/services/skill-manifest.d.ts +41 -0
- package/dist/src/services/skill-manifest.d.ts.map +1 -1
- package/dist/src/services/skill-manifest.js +93 -0
- package/dist/src/services/skill-manifest.js.map +1 -1
- package/dist/src/services/skill-manifest.test.js +27 -0
- package/dist/src/services/skill-manifest.test.js.map +1 -1
- package/dist/src/sync/SyncEngine.d.ts.map +1 -1
- package/dist/src/sync/SyncEngine.js +69 -77
- package/dist/src/sync/SyncEngine.js.map +1 -1
- package/dist/src/telemetry/agent-marker.d.ts +8 -0
- package/dist/src/telemetry/agent-marker.d.ts.map +1 -1
- package/dist/src/telemetry/agent-marker.js +7 -0
- package/dist/src/telemetry/agent-marker.js.map +1 -1
- package/dist/src/telemetry/agent-marker.test.js +7 -1
- package/dist/src/telemetry/agent-marker.test.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +1 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/wrap.d.ts +6 -0
- package/dist/src/telemetry/wrap.d.ts.map +1 -1
- package/dist/src/telemetry/wrap.js +65 -10
- package/dist/src/telemetry/wrap.js.map +1 -1
- package/dist/src/telemetry/wrap.test.js +81 -1
- package/dist/src/telemetry/wrap.test.js.map +1 -1
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts +26 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.d.ts.map +1 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js +162 -0
- package/dist/src/telemetry/wrap.tool-call-sink.test.js.map +1 -0
- package/dist/src/types/skill.d.ts +9 -1
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/version-check.d.ts +61 -0
- package/dist/src/utils/version-check.d.ts.map +1 -1
- package/dist/src/utils/version-check.js +78 -1
- package/dist/src/utils/version-check.js.map +1 -1
- package/dist/src/utils/version-check.test.js +130 -1
- package/dist/src/utils/version-check.test.js.map +1 -1
- package/dist/tests/db/migration-runner-race.test.js +19 -9
- package/dist/tests/db/migration-runner-race.test.js.map +1 -1
- package/dist/tests/install/fan-out.test.js +27 -0
- package/dist/tests/install/fan-out.test.js.map +1 -1
- package/dist/tests/skill-scanner/allowlist.test.js +7 -1
- package/dist/tests/skill-scanner/allowlist.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.abort.test.js +15 -11
- package/dist/tests/sync/SyncEngine.abort.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js +1 -1
- package/dist/tests/sync/SyncEngine.status.test.js.map +1 -1
- package/dist/tests/sync/SyncEngine.test.d.ts +11 -2
- package/dist/tests/sync/SyncEngine.test.d.ts.map +1 -1
- package/dist/tests/sync/SyncEngine.test.js +164 -13
- package/dist/tests/sync/SyncEngine.test.js.map +1 -1
- package/dist/tests/unit/migrations/migration-v18.test.d.ts +16 -0
- package/dist/tests/unit/migrations/migration-v18.test.d.ts.map +1 -0
- package/dist/tests/unit/migrations/migration-v18.test.js +192 -0
- package/dist/tests/unit/migrations/migration-v18.test.js.map +1 -0
- package/dist/tests/unit/services/skill-installation.content.test.js +65 -1
- package/dist/tests/unit/services/skill-installation.content.test.js.map +1 -1
- package/dist/tests/unit/services/skill-installation.service.test.js +9 -8
- package/dist/tests/unit/services/skill-installation.service.test.js.map +1 -1
- package/dist/tests/unit/sync-engine.source-aware.test.js +5 -5
- package/dist/tests/unit/sync-engine.source-aware.test.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - per-request framework (H4 — not memoised)
|
|
12
12
|
*/
|
|
13
13
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
14
|
-
import { withTelemetry, isTelemetered, setEmissionGate } from './wrap.js';
|
|
14
|
+
import { withTelemetry, isTelemetered, setEmissionGate, runWithToolNameContext } from './wrap.js';
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
16
|
// Mock trackSkillInvoke so tests run without a live PostHog instance
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
@@ -28,7 +28,20 @@ vi.mock('./posthog.js', () => ({
|
|
|
28
28
|
vi.mock('../logging/redact.js', () => ({
|
|
29
29
|
redactSensitiveData: (s) => s,
|
|
30
30
|
}));
|
|
31
|
+
// SMI-6362 §1: `emitToolCallEvent` (the second sink) is deliberately NOT
|
|
32
|
+
// mocked at the module level below — the AC-11 p99 gate at the bottom of this
|
|
33
|
+
// file (§8) engages the REAL `remote-audit.js` so it proves the actual
|
|
34
|
+
// wiring on the hot path, not a stand-in. Full functional coverage of the
|
|
35
|
+
// second sink itself (gate-off/on, identity-null, transport-rejection
|
|
36
|
+
// swallowing) lives in the sibling `wrap.tool-call-sink.test.ts`. Only
|
|
37
|
+
// `getOrCreateInstallId` (real implementation reads/writes
|
|
38
|
+
// `~/.skillsmith/config.json` under a file lock — unwanted disk I/O in a unit
|
|
39
|
+
// test) is mocked, matching remote-audit.test.ts's own convention exactly.
|
|
40
|
+
vi.mock('../config/device-identity.js', () => ({
|
|
41
|
+
getOrCreateInstallId: vi.fn(() => 'a'.repeat(64)),
|
|
42
|
+
}));
|
|
31
43
|
import { trackSkillInvoke } from './posthog.js';
|
|
44
|
+
import { setTelemetryIdentityProvider, _resetTelemetryEmitStatsForTests, } from '../audit/remote-audit.js';
|
|
32
45
|
const mockTrack = vi.mocked(trackSkillInvoke);
|
|
33
46
|
beforeEach(() => {
|
|
34
47
|
mockTrack.mockReset();
|
|
@@ -189,6 +202,14 @@ describe('per-request framework', () => {
|
|
|
189
202
|
// ---------------------------------------------------------------------------
|
|
190
203
|
// 8. Overhead gate (Risk #7 — p99 < 1ms per wrapped call)
|
|
191
204
|
// ---------------------------------------------------------------------------
|
|
205
|
+
//
|
|
206
|
+
// SMI-6362 §1's second sink (`emitToolCallEvent` — a `tool_call` event
|
|
207
|
+
// dispatched to `search_metrics` alongside this sink's pre-existing
|
|
208
|
+
// `trackSkillInvoke` PostHog event) has its own functional coverage in the
|
|
209
|
+
// sibling `wrap.tool-call-sink.test.ts` (500-line file gate). The p99 gate
|
|
210
|
+
// below is re-run with that second sink genuinely engaged (see the second
|
|
211
|
+
// `it` block) to satisfy AC-11 — re-asserting the SAME latency thresholds,
|
|
212
|
+
// not new ones, now that a second network-dispatching sink sits on this path.
|
|
192
213
|
describe('overhead gate (risk #7)', () => {
|
|
193
214
|
it('p99 per-call overhead is < 1ms over 10 000 iterations', async () => {
|
|
194
215
|
const ITERATIONS = 10_000;
|
|
@@ -217,6 +238,65 @@ describe('overhead gate (risk #7)', () => {
|
|
|
217
238
|
expect(mean).toBeLessThan(0.5);
|
|
218
239
|
expect(mockTrack).toHaveBeenCalledTimes(ITERATIONS);
|
|
219
240
|
});
|
|
241
|
+
// SMI-6362 AC-11: the pre-existing gate above predates the second sink and
|
|
242
|
+
// never installs `runWithToolNameContext`, so `emitToolCallEvent` was never
|
|
243
|
+
// actually reached during that measurement — it would have passed trivially
|
|
244
|
+
// even if the second sink were arbitrarily slow. This case re-runs the same
|
|
245
|
+
// gate with the second sink genuinely engaged on every iteration (tool-name
|
|
246
|
+
// context + a valid identity provider installed, so `emitToolCallEvent`
|
|
247
|
+
// builds its metadata object and dispatches `fetch` each time) to prove the
|
|
248
|
+
// p99/mean thresholds still hold with BOTH sinks live, per the plan's "the
|
|
249
|
+
// p99 overhead gate ... still passes with the second sink installed."
|
|
250
|
+
it('p99 per-call overhead is < 1ms over 10 000 iterations with the second sink engaged', async () => {
|
|
251
|
+
// `X-Skillsmith-Telemetry-Accepted: '1'` matters here beyond realism: an
|
|
252
|
+
// unclassified-as-accepted response makes `classifyResponse` log a
|
|
253
|
+
// once-per-process console.debug line, which is noise this test doesn't
|
|
254
|
+
// need (and doesn't assert on `getTelemetryEmitStats()` — this gate is
|
|
255
|
+
// about latency, not durability classification; that's the sibling
|
|
256
|
+
// file's job).
|
|
257
|
+
const fetchSpy = vi
|
|
258
|
+
.fn()
|
|
259
|
+
.mockResolvedValue(new Response(null, { status: 200, headers: { 'X-Skillsmith-Telemetry-Accepted': '1' } }));
|
|
260
|
+
vi.stubGlobal('fetch', fetchSpy);
|
|
261
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
262
|
+
try {
|
|
263
|
+
const ITERATIONS = 10_000;
|
|
264
|
+
const noopHandler = async () => 42;
|
|
265
|
+
const wrappedNoop = withTelemetry(noopHandler, {
|
|
266
|
+
source: 'mcp-tool',
|
|
267
|
+
extractSkillId: () => 'bench/skill',
|
|
268
|
+
});
|
|
269
|
+
const run = () => runWithToolNameContext('bench-tool', () => wrappedNoop());
|
|
270
|
+
// JIT warm-up — stabilise before measuring
|
|
271
|
+
for (let i = 0; i < 100; i++) {
|
|
272
|
+
await run();
|
|
273
|
+
}
|
|
274
|
+
mockTrack.mockReset();
|
|
275
|
+
fetchSpy.mockClear();
|
|
276
|
+
const elapsed = [];
|
|
277
|
+
for (let i = 0; i < ITERATIONS; i++) {
|
|
278
|
+
const t0 = performance.now();
|
|
279
|
+
await run();
|
|
280
|
+
elapsed.push(performance.now() - t0);
|
|
281
|
+
}
|
|
282
|
+
elapsed.sort((a, b) => a - b);
|
|
283
|
+
const p99 = elapsed[Math.ceil(ITERATIONS * 0.99) - 1];
|
|
284
|
+
const mean = elapsed.reduce((s, v) => s + v, 0) / ITERATIONS;
|
|
285
|
+
// AC-11: same thresholds as the single-sink gate above, now with the
|
|
286
|
+
// second sink genuinely on the hot path.
|
|
287
|
+
expect(p99).toBeLessThan(1);
|
|
288
|
+
expect(mean).toBeLessThan(0.5);
|
|
289
|
+
expect(mockTrack).toHaveBeenCalledTimes(ITERATIONS);
|
|
290
|
+
// Confirms the second sink really was reached on every iteration —
|
|
291
|
+
// otherwise this test would be exactly as trivial as the one above.
|
|
292
|
+
expect(fetchSpy).toHaveBeenCalledTimes(ITERATIONS);
|
|
293
|
+
}
|
|
294
|
+
finally {
|
|
295
|
+
vi.unstubAllGlobals();
|
|
296
|
+
setTelemetryIdentityProvider(null);
|
|
297
|
+
_resetTelemetryEmitStatsForTests();
|
|
298
|
+
}
|
|
299
|
+
});
|
|
220
300
|
});
|
|
221
301
|
// ---------------------------------------------------------------------------
|
|
222
302
|
// 9. Emission gate (SMI-5019 wire-in)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap.test.js","sourceRoot":"","sources":["../../../src/telemetry/wrap.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wrap.test.js","sourceRoot":"","sources":["../../../src/telemetry/wrap.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-6362 §1: `withTelemetry`'s second sink — a `tool_call` event dispatched
|
|
3
|
+
* through `emitToolCallEvent` (`../audit/remote-audit.js`) alongside the
|
|
4
|
+
* pre-existing `trackSkillInvoke` (PostHog `skill_invoke`) sink. Sibling to
|
|
5
|
+
* `wrap.test.ts` (500-line file gate), matching the existing
|
|
6
|
+
* `wrap.gate.test.ts` / `wrap.marker.test.ts` split convention for this file.
|
|
7
|
+
*
|
|
8
|
+
* The plan's AC-11 test-coverage row for "`wrap.ts` second sink" requires
|
|
9
|
+
* proving, at the `withTelemetry` integration level (not re-testing
|
|
10
|
+
* `emitToolCallEvent`'s own unit behaviour, already covered exhaustively by
|
|
11
|
+
* `remote-audit.test.ts`):
|
|
12
|
+
* - gate-off ⇒ BOTH sinks stay silent, not just the legacy one (the D-1
|
|
13
|
+
* client-side invariant, asserted at the single enforcement point)
|
|
14
|
+
* - gate-on (with tool-name context installed) ⇒ both sinks fire
|
|
15
|
+
* - a transport-layer rejection from the second sink does not change the
|
|
16
|
+
* wrapped function's own return value or thrown errors
|
|
17
|
+
* - an identity provider returning `null` ⇒ no POST is attempted and
|
|
18
|
+
* `skippedNoIdentity` increments
|
|
19
|
+
*
|
|
20
|
+
* These tests exercise the REAL `remote-audit.js` (only `getOrCreateInstallId`
|
|
21
|
+
* and global `fetch` are stubbed, matching `remote-audit.test.ts`'s own
|
|
22
|
+
* convention) so they prove the actual wiring `wrap.ts` performs, not a
|
|
23
|
+
* stand-in that could silently drift from it.
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=wrap.tool-call-sink.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.tool-call-sink.test.d.ts","sourceRoot":"","sources":["../../../src/telemetry/wrap.tool-call-sink.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-6362 §1: `withTelemetry`'s second sink — a `tool_call` event dispatched
|
|
3
|
+
* through `emitToolCallEvent` (`../audit/remote-audit.js`) alongside the
|
|
4
|
+
* pre-existing `trackSkillInvoke` (PostHog `skill_invoke`) sink. Sibling to
|
|
5
|
+
* `wrap.test.ts` (500-line file gate), matching the existing
|
|
6
|
+
* `wrap.gate.test.ts` / `wrap.marker.test.ts` split convention for this file.
|
|
7
|
+
*
|
|
8
|
+
* The plan's AC-11 test-coverage row for "`wrap.ts` second sink" requires
|
|
9
|
+
* proving, at the `withTelemetry` integration level (not re-testing
|
|
10
|
+
* `emitToolCallEvent`'s own unit behaviour, already covered exhaustively by
|
|
11
|
+
* `remote-audit.test.ts`):
|
|
12
|
+
* - gate-off ⇒ BOTH sinks stay silent, not just the legacy one (the D-1
|
|
13
|
+
* client-side invariant, asserted at the single enforcement point)
|
|
14
|
+
* - gate-on (with tool-name context installed) ⇒ both sinks fire
|
|
15
|
+
* - a transport-layer rejection from the second sink does not change the
|
|
16
|
+
* wrapped function's own return value or thrown errors
|
|
17
|
+
* - an identity provider returning `null` ⇒ no POST is attempted and
|
|
18
|
+
* `skippedNoIdentity` increments
|
|
19
|
+
*
|
|
20
|
+
* These tests exercise the REAL `remote-audit.js` (only `getOrCreateInstallId`
|
|
21
|
+
* and global `fetch` are stubbed, matching `remote-audit.test.ts`'s own
|
|
22
|
+
* convention) so they prove the actual wiring `wrap.ts` performs, not a
|
|
23
|
+
* stand-in that could silently drift from it.
|
|
24
|
+
*/
|
|
25
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
26
|
+
import { withTelemetry, setEmissionGate, runWithToolNameContext } from './wrap.js';
|
|
27
|
+
vi.mock('./posthog.js', () => ({
|
|
28
|
+
trackSkillInvoke: vi.fn(),
|
|
29
|
+
}));
|
|
30
|
+
// SMI-5615: test seam for the Wave-2 `logging/redact.ts` module — see
|
|
31
|
+
// wrap.test.ts for rationale.
|
|
32
|
+
vi.mock('../logging/redact.js', () => ({
|
|
33
|
+
redactSensitiveData: (s) => s,
|
|
34
|
+
}));
|
|
35
|
+
// The real implementation reads/writes `~/.skillsmith/config.json` under a
|
|
36
|
+
// file lock — unwanted disk I/O in a unit test. Matches
|
|
37
|
+
// remote-audit.test.ts's own convention exactly.
|
|
38
|
+
vi.mock('../config/device-identity.js', () => ({
|
|
39
|
+
getOrCreateInstallId: vi.fn(() => 'a'.repeat(64)),
|
|
40
|
+
}));
|
|
41
|
+
import { trackSkillInvoke } from './posthog.js';
|
|
42
|
+
import { setTelemetryIdentityProvider, getTelemetryEmitStats, _resetTelemetryEmitStatsForTests, } from '../audit/remote-audit.js';
|
|
43
|
+
const mockTrack = vi.mocked(trackSkillInvoke);
|
|
44
|
+
const TOOL_OPTS = {
|
|
45
|
+
source: 'mcp-tool',
|
|
46
|
+
extractSkillId: () => 'test/skill',
|
|
47
|
+
};
|
|
48
|
+
const fetchSpy = vi.fn();
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
mockTrack.mockReset();
|
|
51
|
+
vi.stubGlobal('fetch', fetchSpy);
|
|
52
|
+
fetchSpy.mockReset();
|
|
53
|
+
fetchSpy.mockResolvedValue(new Response(null, { status: 200, headers: { 'X-Skillsmith-Telemetry-Accepted': '1' } }));
|
|
54
|
+
_resetTelemetryEmitStatsForTests();
|
|
55
|
+
});
|
|
56
|
+
afterEach(() => {
|
|
57
|
+
vi.unstubAllGlobals();
|
|
58
|
+
setEmissionGate(undefined);
|
|
59
|
+
setTelemetryIdentityProvider(null);
|
|
60
|
+
_resetTelemetryEmitStatsForTests();
|
|
61
|
+
});
|
|
62
|
+
// Allow the fire-and-forget `void postTelemetryEvent(...).then(...)` chain
|
|
63
|
+
// inside `emitToolCallEvent` to actually run — it is not awaited by
|
|
64
|
+
// `wrap.ts` by design (fire-and-forget), so assertions on `fetchSpy` /
|
|
65
|
+
// `getTelemetryEmitStats()` need one microtask flush first.
|
|
66
|
+
const flush = () => new Promise((resolve) => setImmediate(resolve));
|
|
67
|
+
describe('second sink (tool_call via emitToolCallEvent, SMI-6362 §1)', () => {
|
|
68
|
+
it('gate-off ⇒ both sinks stay silent, not just the legacy one', async () => {
|
|
69
|
+
setEmissionGate(undefined); // default-suppress — no gate installed
|
|
70
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
71
|
+
const handler = () => 'ok';
|
|
72
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
73
|
+
await runWithToolNameContext('search', () => wrapped());
|
|
74
|
+
await flush();
|
|
75
|
+
expect(mockTrack).not.toHaveBeenCalled();
|
|
76
|
+
expect(fetchSpy).not.toHaveBeenCalled();
|
|
77
|
+
});
|
|
78
|
+
it('gate-on with tool-name context installed ⇒ both sinks fire', async () => {
|
|
79
|
+
setEmissionGate(() => true);
|
|
80
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
81
|
+
const handler = () => 'ok';
|
|
82
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
83
|
+
await runWithToolNameContext('search', () => wrapped());
|
|
84
|
+
await flush();
|
|
85
|
+
expect(mockTrack).toHaveBeenCalledOnce();
|
|
86
|
+
expect(fetchSpy).toHaveBeenCalledOnce();
|
|
87
|
+
const body = JSON.parse(fetchSpy.mock.calls[0]?.[1]?.body);
|
|
88
|
+
expect(body.event).toBe('tool_call');
|
|
89
|
+
expect(body.metadata).toMatchObject({ tool_name: 'search', success: true });
|
|
90
|
+
expect(getTelemetryEmitStats().accepted).toBe(1);
|
|
91
|
+
});
|
|
92
|
+
it('no tool-name context installed ⇒ second sink never fires, legacy sink still does', async () => {
|
|
93
|
+
// Guards the source-gating precondition itself: a `mcp-tool` call whose
|
|
94
|
+
// dispatcher never installed `runWithToolNameContext` (e.g. a code path
|
|
95
|
+
// reached outside `call-tool-handler.ts`) must not emit a `tool_call`
|
|
96
|
+
// with an undefined tool name.
|
|
97
|
+
setEmissionGate(() => true);
|
|
98
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
99
|
+
const handler = () => 'ok';
|
|
100
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
101
|
+
await wrapped();
|
|
102
|
+
await flush();
|
|
103
|
+
expect(mockTrack).toHaveBeenCalledOnce();
|
|
104
|
+
expect(fetchSpy).not.toHaveBeenCalled();
|
|
105
|
+
});
|
|
106
|
+
it('identity provider returns null ⇒ no POST is attempted and skippedNoIdentity increments', async () => {
|
|
107
|
+
setEmissionGate(() => true);
|
|
108
|
+
setTelemetryIdentityProvider(() => null);
|
|
109
|
+
const handler = () => 'ok';
|
|
110
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
111
|
+
await runWithToolNameContext('search', () => wrapped());
|
|
112
|
+
await flush();
|
|
113
|
+
// The legacy PostHog sink is unaffected by the second sink's identity gate.
|
|
114
|
+
expect(mockTrack).toHaveBeenCalledOnce();
|
|
115
|
+
expect(fetchSpy).not.toHaveBeenCalled();
|
|
116
|
+
expect(getTelemetryEmitStats().skippedNoIdentity).toBe(1);
|
|
117
|
+
});
|
|
118
|
+
it("a transport-layer rejection from the second sink does not change the wrapped fn's return value", async () => {
|
|
119
|
+
setEmissionGate(() => true);
|
|
120
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
121
|
+
fetchSpy.mockRejectedValueOnce(new Error('network down'));
|
|
122
|
+
const handler = () => 'still works';
|
|
123
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
124
|
+
const result = await runWithToolNameContext('search', () => wrapped());
|
|
125
|
+
await flush();
|
|
126
|
+
expect(result).toBe('still works');
|
|
127
|
+
// postTelemetryEvent swallows the rejection internally and classifies it
|
|
128
|
+
// as `failed` — it never surfaces to the caller.
|
|
129
|
+
expect(getTelemetryEmitStats().failed).toBe(1);
|
|
130
|
+
});
|
|
131
|
+
it('a transport-layer rejection from the second sink does not change a thrown error', async () => {
|
|
132
|
+
setEmissionGate(() => true);
|
|
133
|
+
setTelemetryIdentityProvider(() => ({ accessToken: 'jwt-abc' }));
|
|
134
|
+
fetchSpy.mockRejectedValueOnce(new Error('network down'));
|
|
135
|
+
const boom = () => {
|
|
136
|
+
throw new Error('handler exploded');
|
|
137
|
+
};
|
|
138
|
+
const wrappedBoom = withTelemetry(boom, TOOL_OPTS);
|
|
139
|
+
await expect(runWithToolNameContext('search', () => wrappedBoom())).rejects.toThrow('handler exploded');
|
|
140
|
+
await flush();
|
|
141
|
+
expect(mockTrack).toHaveBeenCalledWith(expect.objectContaining({ success: false }));
|
|
142
|
+
expect(getTelemetryEmitStats().failed).toBe(1);
|
|
143
|
+
});
|
|
144
|
+
it('emitToolCallEvent throwing synchronously is swallowed by the same boundary that protects trackSkillInvoke', async () => {
|
|
145
|
+
// A harder case than a rejected fetch: the sink itself throws
|
|
146
|
+
// synchronously (e.g. a future refactor that reads something unguarded).
|
|
147
|
+
// wrap.ts's outer try/catch around the whole `if (gateOn)` block must
|
|
148
|
+
// swallow it identically to the existing `trackSkillInvoke`-throws case
|
|
149
|
+
// (see wrap.test.ts's "emit-failure survival" case).
|
|
150
|
+
setEmissionGate(() => true);
|
|
151
|
+
setTelemetryIdentityProvider(() => {
|
|
152
|
+
throw new Error('identity provider blew up');
|
|
153
|
+
});
|
|
154
|
+
const handler = () => 'still works';
|
|
155
|
+
const wrapped = withTelemetry(handler, TOOL_OPTS);
|
|
156
|
+
const result = await runWithToolNameContext('search', () => wrapped());
|
|
157
|
+
expect(result).toBe('still works');
|
|
158
|
+
// The legacy sink, evaluated first in the same finally block, still fired.
|
|
159
|
+
expect(mockTrack).toHaveBeenCalledOnce();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=wrap.tool-call-sink.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap.tool-call-sink.test.js","sourceRoot":"","sources":["../../../src/telemetry/wrap.tool-call-sink.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,15 @@ export interface Skill {
|
|
|
60
60
|
license?: string | null;
|
|
61
61
|
createdAt: string;
|
|
62
62
|
updatedAt: string;
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* SHA-256 hex of the most-recently-synced `skill_versions.content_hash`
|
|
65
|
+
* row for this skill — as of SMI-6343 Wave 2, a real hash of the
|
|
66
|
+
* registry's SKILL.md content at index time, never a metadata proxy (the
|
|
67
|
+
* original meaning this comment described). Currently declared but not
|
|
68
|
+
* populated anywhere in the codebase (no writer/reader references it) —
|
|
69
|
+
* a future consumer should source it via `SkillVersionRepository`, not
|
|
70
|
+
* assume it is already wired up.
|
|
71
|
+
*/
|
|
64
72
|
latestContentHash?: string;
|
|
65
73
|
/** Number of distinct content hashes recorded for this skill */
|
|
66
74
|
versionCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D;;;;;;;;GAQG;AAEH,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,UAAU,GACV,SAAS,GACT,WAAW,GACX,cAAc,GACd,SAAS,GACT,YAAY,GACZ,OAAO,CAAA;AAEX;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,SAAS,GACT,eAAe,GACf,UAAU,GACV,UAAU,GACV,qBAAqB,CAAA;AAEzB;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAOlC,CAAA;AAEV;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AAE9C,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IAEpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,kDAAkD;IAClD,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAEjB
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/types/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { logger, createLogger, silentLogger, type Logger } from './logger.js';
|
|
5
5
|
export { withRetry, fetchWithRetry, isTransientError, isRetryableStatus, parseRetryAfter, RetryExhaustedError, DEFAULT_RETRY_CONFIG, type RetryConfig, } from './retry.js';
|
|
6
|
-
export { checkForUpdates, formatUpdateNotification, type VersionCheckResult, } from './version-check.js';
|
|
6
|
+
export { checkForUpdates, formatUpdateNotification, agentInstallRemediationCommand, checkCursorMcpArtifact, type VersionCheckResult, type CursorMcpArtifactCheck, } from './version-check.js';
|
|
7
7
|
export { parseRepoUrl, isGitHubUrl, type ParsedRepoUrl } from './github-url.js';
|
|
8
8
|
export { safeWriteFile, SymlinkError, HardlinkError } from './safe-fs.js';
|
|
9
9
|
export { isQuietModeEnabled } from './quiet-mode.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAKzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { logger, createLogger, silentLogger } from './logger.js';
|
|
5
5
|
export { withRetry, fetchWithRetry, isTransientError, isRetryableStatus, parseRetryAfter, RetryExhaustedError, DEFAULT_RETRY_CONFIG, } from './retry.js';
|
|
6
6
|
// SMI-1952: Version check for auto-update notifications
|
|
7
|
-
export { checkForUpdates, formatUpdateNotification, } from './version-check.js';
|
|
7
|
+
export { checkForUpdates, formatUpdateNotification, agentInstallRemediationCommand, checkCursorMcpArtifact, } from './version-check.js';
|
|
8
8
|
// SMI-2171: GitHub URL parsing utilities
|
|
9
9
|
export { parseRepoUrl, isGitHubUrl } from './github-url.js';
|
|
10
10
|
// SMI-2274: Safe filesystem operations (symlink protection)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,YAAY,CAAA;AAEnB,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,aAAa,CAAA;AAC7E,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,YAAY,CAAA;AAEnB,wDAAwD;AACxD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,sBAAsB,GAGvB,MAAM,oBAAoB,CAAA;AAE3B,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAA;AAE/E,4DAA4D;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEzE,4EAA4E;AAC5E,sEAAsE;AACtE,6EAA6E;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -65,6 +65,18 @@ export declare function checkForUpdates(packageName: string, currentVersion: str
|
|
|
65
65
|
* @returns Formatted message string
|
|
66
66
|
*/
|
|
67
67
|
export declare function formatUpdateNotification(result: VersionCheckResult, client?: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Canonical "refresh hooks/MCP registration" remediation command — the
|
|
70
|
+
* single source of truth for this exact string, shared by
|
|
71
|
+
* {@link formatUpdateNotification} (version-bump-triggered, fires only
|
|
72
|
+
* inside a running MCP server — structurally unreachable when the server
|
|
73
|
+
* never spawns at all, e.g. GH#2368 V3's "zero MCP tools" report) and
|
|
74
|
+
* {@link checkCursorMcpArtifact} (on-disk-content-triggered, SMI-6279
|
|
75
|
+
* Wave 9 — reachable from `skillsmith diagnose` even when no server is
|
|
76
|
+
* running) so the two never drift into differently-worded instructions for
|
|
77
|
+
* the same underlying fix.
|
|
78
|
+
*/
|
|
79
|
+
export declare function agentInstallRemediationCommand(): string;
|
|
68
80
|
/**
|
|
69
81
|
* Resolve `SKILLSMITH_CLIENT` for {@link formatUpdateNotification}'s
|
|
70
82
|
* optional `client` parameter, without ever throwing (code-review finding,
|
|
@@ -91,4 +103,53 @@ export declare function formatUpdateNotification(result: VersionCheckResult, cli
|
|
|
91
103
|
* or does not resolve to a known client.
|
|
92
104
|
*/
|
|
93
105
|
export declare function resolveUpdateNotificationClient(raw: string | undefined): string | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Result of inspecting one `.cursor/mcp.json` file for the GH#2368 V3
|
|
108
|
+
* staleness signature (SMI-6279 Wave 9).
|
|
109
|
+
*/
|
|
110
|
+
export interface CursorMcpArtifactCheck {
|
|
111
|
+
/** Absolute path checked. */
|
|
112
|
+
path: string;
|
|
113
|
+
/** Whether the file exists on disk at all. */
|
|
114
|
+
exists: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* A Skillsmith MCP server entry was found under either the current key
|
|
117
|
+
* (`CURSOR_MCP_ENTRY_KEY`) or the pre-SMI-6279 legacy key
|
|
118
|
+
* (`LEGACY_MCP_ENTRY_KEY`) — see `agent-pack-installer.entry.ts`.
|
|
119
|
+
*/
|
|
120
|
+
entryFound: boolean;
|
|
121
|
+
/** The JSON key the entry was found under, when `entryFound` is true. */
|
|
122
|
+
entryKey?: string;
|
|
123
|
+
/**
|
|
124
|
+
* True when the entry's `command` is the broken `npx` form
|
|
125
|
+
* (`buildAgentMcpEntryValue()`'s shape) — two independent live UAT passes
|
|
126
|
+
* proved this ENOENTs inside Cursor's bundled Node (GH#2368 C-01).
|
|
127
|
+
*/
|
|
128
|
+
usesNpxForm: boolean;
|
|
129
|
+
/** True when `env.SKILLSMITH_CLIENT === 'cursor'` is present on the entry. */
|
|
130
|
+
hasClientEnv: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* True when this artifact needs a `agent install` refresh — an entry was
|
|
133
|
+
* found and either `usesNpxForm` or NOT `hasClientEnv` (or both; the
|
|
134
|
+
* GH#2368 V3 repro found the real broken installer output had both
|
|
135
|
+
* problems at once). `false` when no entry was found at all — Cursor
|
|
136
|
+
* simply not being configured yet is not a staleness signal.
|
|
137
|
+
*/
|
|
138
|
+
stale: boolean;
|
|
139
|
+
/** Present only when `stale` is true — the exact remediation command. */
|
|
140
|
+
remediation?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Inspect one `.cursor/mcp.json` file (global `~/.cursor/mcp.json` or a
|
|
144
|
+
* project-scoped `<workspace>/.cursor/mcp.json` — the GH#2368 V3 tester's
|
|
145
|
+
* actual broken config was project-scoped, and nothing before this checked
|
|
146
|
+
* that location at all) for the exact staleness signature
|
|
147
|
+
* {@link agentInstallRemediationCommand} fixes: the `npx` command form, and/or
|
|
148
|
+
* a missing `SKILLSMITH_CLIENT` env var.
|
|
149
|
+
*
|
|
150
|
+
* Read-only, never throws — an unreadable or unparsable file is reported as
|
|
151
|
+
* "not found" (nothing we can confidently flag) rather than surfaced as an
|
|
152
|
+
* error; `skillsmith diagnose` is a best-effort diagnostic, not a validator.
|
|
153
|
+
*/
|
|
154
|
+
export declare function checkCursorMcpArtifact(path: string): CursorMcpArtifactCheck;
|
|
94
155
|
//# sourceMappingURL=version-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/utils/version-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../../src/utils/version-check.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,eAAe,EAAE,OAAO,CAAA;IACxB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA8BpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO3F;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,MAAM,EAAE,OAAO,CAAA;IACf;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB,8EAA8E;IAC9E,YAAY,EAAE,OAAO,CAAA;IACrB;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,CAAA;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAgD3E"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Version check utility for auto-update notifications
|
|
3
3
|
* @see SMI-1952: Add auto-update check to MCP server startup
|
|
4
4
|
*/
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
5
6
|
import { resolveClientId } from '../install/paths.js';
|
|
7
|
+
import { CURSOR_MCP_ENTRY_KEY, LEGACY_MCP_ENTRY_KEY, } from '../install/agent-pack-installer.entry.js';
|
|
6
8
|
/** Default timeout for npm registry requests (3 seconds) */
|
|
7
9
|
const VERSION_CHECK_TIMEOUT_MS = 3000;
|
|
8
10
|
/**
|
|
@@ -91,7 +93,21 @@ export function formatUpdateNotification(result, client) {
|
|
|
91
93
|
`Run \`${result.updateCommand}\` to use the new version.\n` +
|
|
92
94
|
`Note: upgrading does not refresh onboarding artifacts already on disk —\n` +
|
|
93
95
|
`run \`skillsmith setup --force${clientFlag}\` to refresh the bundled skill, and\n` +
|
|
94
|
-
|
|
96
|
+
`\`${agentInstallRemediationCommand()}\` to refresh hooks/MCP registration.`);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Canonical "refresh hooks/MCP registration" remediation command — the
|
|
100
|
+
* single source of truth for this exact string, shared by
|
|
101
|
+
* {@link formatUpdateNotification} (version-bump-triggered, fires only
|
|
102
|
+
* inside a running MCP server — structurally unreachable when the server
|
|
103
|
+
* never spawns at all, e.g. GH#2368 V3's "zero MCP tools" report) and
|
|
104
|
+
* {@link checkCursorMcpArtifact} (on-disk-content-triggered, SMI-6279
|
|
105
|
+
* Wave 9 — reachable from `skillsmith diagnose` even when no server is
|
|
106
|
+
* running) so the two never drift into differently-worded instructions for
|
|
107
|
+
* the same underlying fix.
|
|
108
|
+
*/
|
|
109
|
+
export function agentInstallRemediationCommand() {
|
|
110
|
+
return 'skillsmith agent install';
|
|
95
111
|
}
|
|
96
112
|
/**
|
|
97
113
|
* Resolve `SKILLSMITH_CLIENT` for {@link formatUpdateNotification}'s
|
|
@@ -128,4 +144,65 @@ export function resolveUpdateNotificationClient(raw) {
|
|
|
128
144
|
return undefined;
|
|
129
145
|
}
|
|
130
146
|
}
|
|
147
|
+
function notFoundResult(path, exists) {
|
|
148
|
+
return { path, exists, entryFound: false, usesNpxForm: false, hasClientEnv: false, stale: false };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Inspect one `.cursor/mcp.json` file (global `~/.cursor/mcp.json` or a
|
|
152
|
+
* project-scoped `<workspace>/.cursor/mcp.json` — the GH#2368 V3 tester's
|
|
153
|
+
* actual broken config was project-scoped, and nothing before this checked
|
|
154
|
+
* that location at all) for the exact staleness signature
|
|
155
|
+
* {@link agentInstallRemediationCommand} fixes: the `npx` command form, and/or
|
|
156
|
+
* a missing `SKILLSMITH_CLIENT` env var.
|
|
157
|
+
*
|
|
158
|
+
* Read-only, never throws — an unreadable or unparsable file is reported as
|
|
159
|
+
* "not found" (nothing we can confidently flag) rather than surfaced as an
|
|
160
|
+
* error; `skillsmith diagnose` is a best-effort diagnostic, not a validator.
|
|
161
|
+
*/
|
|
162
|
+
export function checkCursorMcpArtifact(path) {
|
|
163
|
+
if (!existsSync(path))
|
|
164
|
+
return notFoundResult(path, false);
|
|
165
|
+
let doc;
|
|
166
|
+
try {
|
|
167
|
+
doc = JSON.parse(readFileSync(path, 'utf-8'));
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return notFoundResult(path, true);
|
|
171
|
+
}
|
|
172
|
+
if (!doc || typeof doc !== 'object' || Array.isArray(doc))
|
|
173
|
+
return notFoundResult(path, true);
|
|
174
|
+
const servers = doc.mcpServers;
|
|
175
|
+
if (!servers || typeof servers !== 'object' || Array.isArray(servers)) {
|
|
176
|
+
return notFoundResult(path, true);
|
|
177
|
+
}
|
|
178
|
+
const serversObj = servers;
|
|
179
|
+
const entryKey = CURSOR_MCP_ENTRY_KEY in serversObj
|
|
180
|
+
? CURSOR_MCP_ENTRY_KEY
|
|
181
|
+
: LEGACY_MCP_ENTRY_KEY in serversObj
|
|
182
|
+
? LEGACY_MCP_ENTRY_KEY
|
|
183
|
+
: undefined;
|
|
184
|
+
if (!entryKey)
|
|
185
|
+
return notFoundResult(path, true);
|
|
186
|
+
const entry = serversObj[entryKey];
|
|
187
|
+
if (!entry || typeof entry !== 'object' || Array.isArray(entry))
|
|
188
|
+
return notFoundResult(path, true);
|
|
189
|
+
const entryObj = entry;
|
|
190
|
+
const usesNpxForm = entryObj.command === 'npx';
|
|
191
|
+
const env = entryObj.env;
|
|
192
|
+
const hasClientEnv = !!env &&
|
|
193
|
+
typeof env === 'object' &&
|
|
194
|
+
!Array.isArray(env) &&
|
|
195
|
+
env.SKILLSMITH_CLIENT === 'cursor';
|
|
196
|
+
const stale = usesNpxForm || !hasClientEnv;
|
|
197
|
+
return {
|
|
198
|
+
path,
|
|
199
|
+
exists: true,
|
|
200
|
+
entryFound: true,
|
|
201
|
+
entryKey,
|
|
202
|
+
usesNpxForm,
|
|
203
|
+
hasClientEnv,
|
|
204
|
+
stale,
|
|
205
|
+
remediation: stale ? agentInstallRemediationCommand() : undefined,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
131
208
|
//# sourceMappingURL=version-check.js.map
|