@skillsmith/mcp-server 0.5.2 → 0.5.3
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 +24 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/recommend-online-path.test.js +2 -0
- package/dist/src/__tests__/recommend-online-path.test.js.map +1 -1
- package/dist/src/__tests__/recommend.test.js +10 -2
- package/dist/src/__tests__/recommend.test.js.map +1 -1
- package/dist/src/__tests__/search-installable.test.js +5 -0
- package/dist/src/__tests__/search-installable.test.js.map +1 -1
- package/dist/src/__tests__/search-online-path.test.js +1 -0
- package/dist/src/__tests__/search-online-path.test.js.map +1 -1
- package/dist/src/__tests__/search.test.js +3 -0
- package/dist/src/__tests__/search.test.js.map +1 -1
- package/dist/src/index.js +9 -50
- package/dist/src/index.js.map +1 -1
- package/dist/src/middleware/license.gate.d.ts +2 -2
- package/dist/src/middleware/license.gate.d.ts.map +1 -1
- package/dist/src/middleware/license.gate.js +43 -1
- package/dist/src/middleware/license.gate.js.map +1 -1
- package/dist/src/middleware/telemetry-consent.d.ts +88 -0
- package/dist/src/middleware/telemetry-consent.d.ts.map +1 -0
- package/dist/src/middleware/telemetry-consent.js +177 -0
- package/dist/src/middleware/telemetry-consent.js.map +1 -0
- package/dist/src/middleware/telemetry-consent.test.d.ts +12 -0
- package/dist/src/middleware/telemetry-consent.test.d.ts.map +1 -0
- package/dist/src/middleware/telemetry-consent.test.js +291 -0
- package/dist/src/middleware/telemetry-consent.test.js.map +1 -0
- package/dist/src/tools/__meta__/telemetry-coverage.test.d.ts +25 -0
- package/dist/src/tools/__meta__/telemetry-coverage.test.d.ts.map +1 -0
- package/dist/src/tools/__meta__/telemetry-coverage.test.js +210 -0
- package/dist/src/tools/__meta__/telemetry-coverage.test.js.map +1 -0
- package/dist/src/tools/analytics.d.ts +15 -28
- package/dist/src/tools/analytics.d.ts.map +1 -1
- package/dist/src/tools/analytics.js +26 -4
- package/dist/src/tools/analytics.js.map +1 -1
- package/dist/src/tools/analytics.supabase.service.d.ts +103 -0
- package/dist/src/tools/analytics.supabase.service.d.ts.map +1 -0
- package/dist/src/tools/analytics.supabase.service.js +171 -0
- package/dist/src/tools/analytics.supabase.service.js.map +1 -0
- package/dist/src/tools/analytics.supabase.service.test.d.ts +10 -0
- package/dist/src/tools/analytics.supabase.service.test.d.ts.map +1 -0
- package/dist/src/tools/analytics.supabase.service.test.js +375 -0
- package/dist/src/tools/analytics.supabase.service.test.js.map +1 -0
- package/dist/src/tools/analyze.d.ts +6 -19
- package/dist/src/tools/analyze.d.ts.map +1 -1
- package/dist/src/tools/analyze.js +8 -1
- package/dist/src/tools/analyze.js.map +1 -1
- package/dist/src/tools/apply-namespace-rename.d.ts +1 -8
- package/dist/src/tools/apply-namespace-rename.d.ts.map +1 -1
- package/dist/src/tools/apply-namespace-rename.js +8 -1
- package/dist/src/tools/apply-namespace-rename.js.map +1 -1
- package/dist/src/tools/apply-recommended-edit.d.ts +1 -6
- package/dist/src/tools/apply-recommended-edit.d.ts.map +1 -1
- package/dist/src/tools/apply-recommended-edit.js +8 -1
- package/dist/src/tools/apply-recommended-edit.js.map +1 -1
- package/dist/src/tools/audit-tools.d.ts +20 -3
- package/dist/src/tools/audit-tools.d.ts.map +1 -1
- package/dist/src/tools/audit-tools.js +20 -3
- package/dist/src/tools/audit-tools.js.map +1 -1
- package/dist/src/tools/compare.d.ts +5 -21
- package/dist/src/tools/compare.d.ts.map +1 -1
- package/dist/src/tools/compare.js +8 -1
- package/dist/src/tools/compare.js.map +1 -1
- package/dist/src/tools/compliance-tools.d.ts +5 -1
- package/dist/src/tools/compliance-tools.d.ts.map +1 -1
- package/dist/src/tools/compliance-tools.js +8 -1
- package/dist/src/tools/compliance-tools.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts +1 -20
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +8 -1
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/index-local.d.ts +1 -15
- package/dist/src/tools/index-local.d.ts.map +1 -1
- package/dist/src/tools/index-local.js +8 -1
- package/dist/src/tools/index-local.js.map +1 -1
- package/dist/src/tools/install.d.ts +1 -17
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.js +8 -1
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/integration-tools.d.ts +14 -2
- package/dist/src/tools/integration-tools.d.ts.map +1 -1
- package/dist/src/tools/integration-tools.js +14 -2
- package/dist/src/tools/integration-tools.js.map +1 -1
- package/dist/src/tools/outdated.d.ts +3 -14
- package/dist/src/tools/outdated.d.ts.map +1 -1
- package/dist/src/tools/outdated.js +8 -1
- package/dist/src/tools/outdated.js.map +1 -1
- package/dist/src/tools/outdated.test.js +3 -0
- package/dist/src/tools/outdated.test.js.map +1 -1
- package/dist/src/tools/publish-private.d.ts +4 -7
- package/dist/src/tools/publish-private.d.ts.map +1 -1
- package/dist/src/tools/publish-private.js +8 -1
- package/dist/src/tools/publish-private.js.map +1 -1
- package/dist/src/tools/publish.d.ts +9 -11
- package/dist/src/tools/publish.d.ts.map +1 -1
- package/dist/src/tools/publish.js +8 -1
- package/dist/src/tools/publish.js.map +1 -1
- package/dist/src/tools/rbac-tools.d.ts +20 -3
- package/dist/src/tools/rbac-tools.d.ts.map +1 -1
- package/dist/src/tools/rbac-tools.js +20 -3
- package/dist/src/tools/rbac-tools.js.map +1 -1
- package/dist/src/tools/rbac-tools.test.js +2 -0
- package/dist/src/tools/rbac-tools.test.js.map +1 -1
- package/dist/src/tools/recommend.d.ts +9 -9
- package/dist/src/tools/recommend.d.ts.map +1 -1
- package/dist/src/tools/recommend.js +8 -1
- package/dist/src/tools/recommend.js.map +1 -1
- package/dist/src/tools/registry-tools.d.ts +10 -8
- package/dist/src/tools/registry-tools.d.ts.map +1 -1
- package/dist/src/tools/registry-tools.js +14 -2
- package/dist/src/tools/registry-tools.js.map +1 -1
- package/dist/src/tools/search.d.ts +3 -42
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.js +10 -24
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/skill-audit.d.ts +3 -13
- package/dist/src/tools/skill-audit.d.ts.map +1 -1
- package/dist/src/tools/skill-audit.js +8 -1
- package/dist/src/tools/skill-audit.js.map +1 -1
- package/dist/src/tools/skill-diff.d.ts +9 -11
- package/dist/src/tools/skill-diff.d.ts.map +1 -1
- package/dist/src/tools/skill-diff.js +8 -1
- package/dist/src/tools/skill-diff.js.map +1 -1
- package/dist/src/tools/skill-inventory-audit.d.ts +1 -6
- package/dist/src/tools/skill-inventory-audit.d.ts.map +1 -1
- package/dist/src/tools/skill-inventory-audit.js +8 -1
- package/dist/src/tools/skill-inventory-audit.js.map +1 -1
- package/dist/src/tools/skill-pack-audit.d.ts +4 -12
- package/dist/src/tools/skill-pack-audit.d.ts.map +1 -1
- package/dist/src/tools/skill-pack-audit.js +8 -1
- package/dist/src/tools/skill-pack-audit.js.map +1 -1
- package/dist/src/tools/skill-rescan.d.ts +3 -11
- package/dist/src/tools/skill-rescan.d.ts.map +1 -1
- package/dist/src/tools/skill-rescan.js +8 -1
- package/dist/src/tools/skill-rescan.js.map +1 -1
- package/dist/src/tools/skill-rescan.test.js +2 -0
- package/dist/src/tools/skill-rescan.test.js.map +1 -1
- package/dist/src/tools/skill-updates.d.ts +3 -12
- package/dist/src/tools/skill-updates.d.ts.map +1 -1
- package/dist/src/tools/skill-updates.js +8 -1
- package/dist/src/tools/skill-updates.js.map +1 -1
- package/dist/src/tools/sso-tools.d.ts +9 -8
- package/dist/src/tools/sso-tools.d.ts.map +1 -1
- package/dist/src/tools/sso-tools.js +14 -2
- package/dist/src/tools/sso-tools.js.map +1 -1
- package/dist/src/tools/suggest.d.ts +9 -17
- package/dist/src/tools/suggest.d.ts.map +1 -1
- package/dist/src/tools/suggest.js +8 -1
- package/dist/src/tools/suggest.js.map +1 -1
- package/dist/src/tools/team-workspace.d.ts +11 -16
- package/dist/src/tools/team-workspace.d.ts.map +1 -1
- package/dist/src/tools/team-workspace.js +14 -2
- package/dist/src/tools/team-workspace.js.map +1 -1
- package/dist/src/tools/uninstall.d.ts +4 -10
- package/dist/src/tools/uninstall.d.ts.map +1 -1
- package/dist/src/tools/uninstall.js +8 -1
- package/dist/src/tools/uninstall.js.map +1 -1
- package/dist/src/tools/validate.d.ts +5 -23
- package/dist/src/tools/validate.d.ts.map +1 -1
- package/dist/src/tools/validate.js +8 -1
- package/dist/src/tools/validate.js.map +1 -1
- package/dist/src/validation.d.ts +2 -2
- package/dist/src/validation.d.ts.map +1 -1
- package/dist/src/validation.js +6 -0
- package/dist/src/validation.js.map +1 -1
- package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +24 -14
- package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -1
- package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -1
- package/dist/tests/compare.test.js +3 -0
- package/dist/tests/compare.test.js.map +1 -1
- package/dist/tests/e2e/compare.e2e.test.js +3 -1
- package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
- package/dist/tests/e2e/recommend.e2e.test.js +6 -1
- package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
- package/dist/tests/e2e/skill-flow.e2e.test.js +8 -0
- package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/suggest.e2e.test.js +5 -1
- package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
- package/dist/tests/integration/analyze.integration.test.js +7 -0
- package/dist/tests/integration/analyze.integration.test.js.map +1 -1
- package/dist/tests/integration/recommend.integration.test.js +6 -0
- package/dist/tests/integration/recommend.integration.test.js.map +1 -1
- package/dist/tests/integration/validate.integration.test.js +7 -1
- package/dist/tests/integration/validate.integration.test.js.map +1 -1
- package/dist/tests/performance/search-performance.test.js +9 -1
- package/dist/tests/performance/search-performance.test.js.map +1 -1
- package/dist/tests/recommend.test.js +11 -2
- package/dist/tests/recommend.test.js.map +1 -1
- package/dist/tests/startup-probe.test.js +9 -4
- package/dist/tests/startup-probe.test.js.map +1 -1
- package/dist/tests/unit/skill-pack-audit.test.js +14 -1
- package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
- package/dist/tests/validate.test.js +28 -8
- package/dist/tests/validate.test.js.map +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-5018 W2.S3 — MCP-tree telemetry coverage snapshot test.
|
|
3
|
+
*
|
|
4
|
+
* Scope: `packages/mcp-server/src/tools/` only (v1).
|
|
5
|
+
* CLI + VS Code trees are NOT checked here — they are blocked by SMI-5040
|
|
6
|
+
* (anonymous-closure incompatibility). When SMI-5040 lands this test will
|
|
7
|
+
* be extended to cover those trees.
|
|
8
|
+
*
|
|
9
|
+
* Risk guarded (plan line 798, risk #8):
|
|
10
|
+
* "A new dispatcher ships without a telemetry wrap."
|
|
11
|
+
*
|
|
12
|
+
* Strategy: explicit allowlist (40 entries) cross-checked against the live
|
|
13
|
+
* withTelemetry import-site count. Allowlist chosen over heuristic-walk
|
|
14
|
+
* because it is trivially auditable — each entry maps 1-to-1 to a
|
|
15
|
+
* `grep "= withTelemetry"` result, and the SOURCE_FILE_COUNT sentinel
|
|
16
|
+
* independently guards against drift in either direction.
|
|
17
|
+
*
|
|
18
|
+
* When you add a new dispatcher:
|
|
19
|
+
* 1. Wrap it with withTelemetry in its source file (as SMI-5017 did).
|
|
20
|
+
* 2. Add its export name to EXPECTED_DISPATCHERS below.
|
|
21
|
+
* 3. Update SOURCE_FILE_COUNT if the dispatcher lives in a new file.
|
|
22
|
+
* The test will fail in CI until all three steps are done.
|
|
23
|
+
*/
|
|
24
|
+
import { describe, it, expect } from 'vitest';
|
|
25
|
+
import { readdir } from 'node:fs/promises';
|
|
26
|
+
import { join } from 'node:path';
|
|
27
|
+
import { isTelemetered } from '@skillsmith/core/telemetry';
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Allowlist — every export that must be telemetry-wrapped (v1, MCP tree only)
|
|
30
|
+
// Derived by: grep -rn "^export const.*= withTelemetry" packages/mcp-server/src/tools/
|
|
31
|
+
// Count must equal SOURCE_FILE_COUNT's withTelemetry site total.
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Maps source-file base name (no extension) to the list of dispatcher export
|
|
35
|
+
* names that live in that file. Both the file and every listed export must be
|
|
36
|
+
* telemetry-wrapped.
|
|
37
|
+
*
|
|
38
|
+
* Files NOT in this map are skipped even if they live under tools/:
|
|
39
|
+
* *.types.ts, *.helpers.ts, *.test.ts, *.dep.test.ts — infrastructure only.
|
|
40
|
+
* *.stub.ts, *.service.ts, *.tool.ts, *.live.ts — helpers/services, not dispatchers.
|
|
41
|
+
* merge.ts, LocalSkillSearch.ts, team-resolver.ts — pure utilities.
|
|
42
|
+
* index.ts — barrel re-export, no dispatch logic.
|
|
43
|
+
* namespace-audit/ directory — telemetry helper, not a dispatcher.
|
|
44
|
+
*
|
|
45
|
+
* ADDING A NEW DISPATCHER: append to the correct inner array, or add a new
|
|
46
|
+
* key if the dispatcher lives in a new file. Increment EXPECTED_TOTAL.
|
|
47
|
+
*/
|
|
48
|
+
const DISPATCHER_MAP = {
|
|
49
|
+
analytics: [
|
|
50
|
+
'executeTeamAnalyticsDashboard',
|
|
51
|
+
'executeTeamUsageReport',
|
|
52
|
+
'executeAnalyticsDashboard',
|
|
53
|
+
'executeUsageReport',
|
|
54
|
+
],
|
|
55
|
+
analyze: ['executeAnalyze'],
|
|
56
|
+
'apply-namespace-rename': ['applyNamespaceRename'],
|
|
57
|
+
'apply-recommended-edit': ['applyRecommendedEditTool'],
|
|
58
|
+
'audit-tools': ['executeAuditExport', 'executeAuditQuery', 'executeSiemExport'],
|
|
59
|
+
compare: ['executeCompare'],
|
|
60
|
+
'compliance-tools': ['executeComplianceReport'],
|
|
61
|
+
'get-skill': ['executeGetSkill'],
|
|
62
|
+
'index-local': ['executeIndexLocal'],
|
|
63
|
+
install: ['installSkill'],
|
|
64
|
+
'integration-tools': ['executeWebhookConfigure', 'executeApiKeyManage'],
|
|
65
|
+
outdated: ['executeOutdated'],
|
|
66
|
+
publish: ['executePublish'],
|
|
67
|
+
'publish-private': ['executePublishPrivate'],
|
|
68
|
+
'rbac-tools': ['executeRbacManage', 'executeRbacAssignRole', 'executeRbacCreatePolicy'],
|
|
69
|
+
recommend: ['executeRecommend'],
|
|
70
|
+
'registry-tools': ['executePrivateRegistryPublish', 'executePrivateRegistryManage'],
|
|
71
|
+
search: ['executeSearch'],
|
|
72
|
+
'skill-audit': ['executeSkillAudit'],
|
|
73
|
+
'skill-diff': ['executeSkillDiff'],
|
|
74
|
+
'skill-inventory-audit': ['skillInventoryAudit'],
|
|
75
|
+
'skill-pack-audit': ['executeSkillPackAudit'],
|
|
76
|
+
'skill-rescan': ['executeSkillRescan'],
|
|
77
|
+
'skill-updates': ['executeSkillUpdates'],
|
|
78
|
+
'sso-tools': ['executeConfigureSso', 'executeSsoSettings'],
|
|
79
|
+
suggest: ['executeSuggest'],
|
|
80
|
+
'team-workspace': ['executeTeamWorkspace', 'executeShareSkill'],
|
|
81
|
+
uninstall: ['uninstallSkill'],
|
|
82
|
+
validate: ['executeValidate'],
|
|
83
|
+
};
|
|
84
|
+
/** Expected total dispatcher count. Must match sum of DISPATCHER_MAP values. */
|
|
85
|
+
const EXPECTED_TOTAL = Object.values(DISPATCHER_MAP).reduce((n, arr) => n + arr.length, 0);
|
|
86
|
+
// Resolve the absolute path to the tools directory using import.meta.url so
|
|
87
|
+
// the test works regardless of cwd (CI runner vs local Docker vs worktree).
|
|
88
|
+
const TOOLS_DIR = new URL('../', import.meta.url).pathname;
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Helpers
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
/**
|
|
93
|
+
* Returns the list of .ts source files directly under TOOLS_DIR (non-recursive
|
|
94
|
+
* for the flat layer, plus the namespace-audit sub-directory is intentionally
|
|
95
|
+
* excluded). Used only for the drift-sentinel assertion.
|
|
96
|
+
*/
|
|
97
|
+
async function listToolSourceFiles() {
|
|
98
|
+
const entries = await readdir(TOOLS_DIR, { withFileTypes: true });
|
|
99
|
+
return entries
|
|
100
|
+
.filter((e) => e.isFile() && e.name.endsWith('.ts') && !e.name.endsWith('.test.ts'))
|
|
101
|
+
.map((e) => e.name);
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
// Suite
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
describe('SMI-5018: MCP tool telemetry coverage (v1, MCP tree only)', () => {
|
|
107
|
+
/**
|
|
108
|
+
* Sentinel: the DISPATCHER_MAP covers the expected total.
|
|
109
|
+
* This catches a copy-paste error where an entry was added to one list but
|
|
110
|
+
* not the other.
|
|
111
|
+
*/
|
|
112
|
+
it('EXPECTED_TOTAL matches sum of DISPATCHER_MAP entries', () => {
|
|
113
|
+
const actualSum = Object.values(DISPATCHER_MAP).reduce((n, arr) => n + arr.length, 0);
|
|
114
|
+
expect(actualSum).toBe(EXPECTED_TOTAL);
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* Main coverage assertion: for every (file, exportName) pair in
|
|
118
|
+
* DISPATCHER_MAP, dynamically import the module and call isTelemetered on
|
|
119
|
+
* the exported value.
|
|
120
|
+
*
|
|
121
|
+
* Dynamic import is used (not static) so the test can iterate the allowlist
|
|
122
|
+
* without requiring explicit top-level imports for all 40 symbols.
|
|
123
|
+
*
|
|
124
|
+
* IMPORTANT: the dispatchers are NOT called — only imported and checked.
|
|
125
|
+
* This avoids the need for a live ToolContext.
|
|
126
|
+
*/
|
|
127
|
+
it('every listed dispatcher export is telemetry-wrapped', async () => {
|
|
128
|
+
const failures = [];
|
|
129
|
+
for (const [fileBase, exportNames] of Object.entries(DISPATCHER_MAP)) {
|
|
130
|
+
// Resolve to the .js extension as Vitest resolves ESM source via the
|
|
131
|
+
// package's TypeScript source map (ts files under src/ are importable
|
|
132
|
+
// directly in Vitest without pre-compilation).
|
|
133
|
+
const modulePath = join(TOOLS_DIR, `${fileBase}.ts`);
|
|
134
|
+
let mod;
|
|
135
|
+
try {
|
|
136
|
+
mod = (await import(modulePath));
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
// If the import itself throws (e.g. a service initializer crashes),
|
|
140
|
+
// record a failure with a clear message rather than letting the whole
|
|
141
|
+
// test throw an opaque error.
|
|
142
|
+
failures.push(`[IMPORT ERROR] ${fileBase}.ts — ${err instanceof Error ? err.message : String(err)}`);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
for (const exportName of exportNames) {
|
|
146
|
+
const exported = mod[exportName];
|
|
147
|
+
if (typeof exported !== 'function') {
|
|
148
|
+
failures.push(`${fileBase}.ts :: ${exportName} — not a function (got ${typeof exported})`);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// After `typeof === 'function'` narrow, TS infers `Function`; cast to
|
|
152
|
+
// the structural shape `isTelemetered` accepts (SMI-5076).
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
154
|
+
if (!isTelemetered(exported)) {
|
|
155
|
+
failures.push(`${fileBase}.ts :: ${exportName} — function exists but isTelemetered() returned false`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (failures.length > 0) {
|
|
160
|
+
throw new Error(`Telemetry coverage failures (${failures.length}):\n` +
|
|
161
|
+
failures.map((f) => ` • ${f}`).join('\n') +
|
|
162
|
+
'\n\nTo fix: wrap the dispatcher with withTelemetry(...) and add it to DISPATCHER_MAP.');
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
/**
|
|
166
|
+
* Drift sentinel: the DISPATCHER_MAP must have at least EXPECTED_TOTAL
|
|
167
|
+
* entries. This test catches the scenario where:
|
|
168
|
+
* - A developer adds a new withTelemetry wrap in a tool file (SMI-5017
|
|
169
|
+
* pattern), but forgets to add the export name to DISPATCHER_MAP.
|
|
170
|
+
*
|
|
171
|
+
* It works by counting the files listed in DISPATCHER_MAP against the actual
|
|
172
|
+
* tool source files on disk. A new file with dispatchers that is absent from
|
|
173
|
+
* the map will not be caught by the "every listed dispatcher" test above
|
|
174
|
+
* (which only checks known entries). This test surfaces that gap.
|
|
175
|
+
*
|
|
176
|
+
* Note: this is a lower-bound sentinel, not a strict equality check on file
|
|
177
|
+
* count — infrastructure files (*.types.ts, *.helpers.ts, etc.) are
|
|
178
|
+
* intentionally absent from DISPATCHER_MAP and will always outnumber it.
|
|
179
|
+
* The meaningful assertion is that no *dispatcher file* is silently absent.
|
|
180
|
+
*/
|
|
181
|
+
it('all files in DISPATCHER_MAP exist on disk', async () => {
|
|
182
|
+
const diskFiles = await listToolSourceFiles();
|
|
183
|
+
const diskBaseNames = new Set(diskFiles.map((f) => f.replace(/\.ts$/, '')));
|
|
184
|
+
const missingFromDisk = [];
|
|
185
|
+
for (const fileBase of Object.keys(DISPATCHER_MAP)) {
|
|
186
|
+
if (!diskBaseNames.has(fileBase)) {
|
|
187
|
+
missingFromDisk.push(`${fileBase}.ts`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (missingFromDisk.length > 0) {
|
|
191
|
+
throw new Error(`DISPATCHER_MAP references files that do not exist on disk:\n` +
|
|
192
|
+
missingFromDisk.map((f) => ` • ${f}`).join('\n') +
|
|
193
|
+
'\n\nEither the file was deleted (remove from DISPATCHER_MAP) or renamed (update the key).');
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
/**
|
|
197
|
+
* Completeness report: log the discovered dispatcher count so CI output
|
|
198
|
+
* makes it easy to see coverage at a glance without running a separate script.
|
|
199
|
+
* This test always passes — it is informational only.
|
|
200
|
+
*/
|
|
201
|
+
it('reports dispatcher coverage to CI output', () => {
|
|
202
|
+
const fileCount = Object.keys(DISPATCHER_MAP).length;
|
|
203
|
+
const dispatcherCount = EXPECTED_TOTAL;
|
|
204
|
+
// Using console.info so it appears in Vitest's verbose output.
|
|
205
|
+
console.info(`[SMI-5018] MCP telemetry coverage: ${dispatcherCount} dispatchers across ${fileCount} files.`);
|
|
206
|
+
console.info('[SMI-5018] Scope: MCP tree only (v1). CLI + VS Code: blocked by SMI-5040.');
|
|
207
|
+
expect(dispatcherCount).toBeGreaterThanOrEqual(40);
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=telemetry-coverage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-coverage.test.js","sourceRoot":"","sources":["../../../../src/tools/__meta__/telemetry-coverage.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -124,32 +124,19 @@ export declare const usageReportToolSchema: {
|
|
|
124
124
|
};
|
|
125
125
|
};
|
|
126
126
|
};
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
* Enterprise analytics dashboard handler.
|
|
143
|
-
* Returns recommendation accuracy, adoption curves, and team aggregation as markdown.
|
|
144
|
-
*
|
|
145
|
-
* Uses real service when db is available, falls back to stub
|
|
146
|
-
*/
|
|
147
|
-
export declare function executeAnalyticsDashboard(input: AnalyticsDashboardInput, context: ToolContext): Promise<string>;
|
|
148
|
-
/**
|
|
149
|
-
* Enterprise usage report handler.
|
|
150
|
-
* Returns comprehensive report with all metrics as markdown (or CSV).
|
|
151
|
-
*
|
|
152
|
-
* Uses real service when db is available, falls back to stub
|
|
153
|
-
*/
|
|
154
|
-
export declare function executeUsageReport(input: UsageReportInput, context: ToolContext): Promise<string>;
|
|
127
|
+
export declare const executeTeamAnalyticsDashboard: (input: {
|
|
128
|
+
period: "7d" | "90d" | "30d";
|
|
129
|
+
}, context: ToolContext) => Promise<string>;
|
|
130
|
+
export declare const executeTeamUsageReport: (input: {
|
|
131
|
+
format: "summary" | "detailed";
|
|
132
|
+
period: "7d" | "90d" | "30d";
|
|
133
|
+
}, context: ToolContext) => Promise<string>;
|
|
134
|
+
export declare const executeAnalyticsDashboard: (input: {
|
|
135
|
+
period: "7d" | "90d" | "30d";
|
|
136
|
+
includeRecommendations: boolean;
|
|
137
|
+
}, context: ToolContext) => Promise<string>;
|
|
138
|
+
export declare const executeUsageReport: (input: {
|
|
139
|
+
format: "summary" | "detailed" | "csv";
|
|
140
|
+
period: "7d" | "90d" | "30d";
|
|
141
|
+
}, context: ToolContext) => Promise<string>;
|
|
155
142
|
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/tools/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../src/tools/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAYhD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AA6BpE,eAAO,MAAM,iCAAiC;;;;;;EAE5C,CAAA;AAEF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAE3F,eAAO,MAAM,0BAA0B;;;;;;;;;EAGrC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAE7E,eAAO,MAAM,6BAA6B;;;;;;;;;EAOxC,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEnF,eAAO,MAAM,sBAAsB;;;;;;;;;EAKjC,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAMrE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;CAe5C,CAAA;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;CAoBrC,CAAA;AAED,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;CAmBxC,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;CAoBjC,CAAA;AA6OD,eAAO,MAAM,6BAA6B;;2CAIxC,CAAA;AACF,eAAO,MAAM,sBAAsB;;;2CAIjC,CAAA;AACF,eAAO,MAAM,yBAAyB;;;2CAIpC,CAAA;AACF,eAAO,MAAM,kBAAkB;;;2CAI7B,CAAA"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* falls back to stub mock data when no database is present.
|
|
12
12
|
*/
|
|
13
13
|
import { z } from 'zod';
|
|
14
|
+
import { withTelemetry } from '@skillsmith/core/telemetry';
|
|
14
15
|
import { periodDays, stubTeamAnalyticsDashboard, stubTeamUsageReport, stubAnalyticsDashboard, stubUsageReport, } from './analytics.stub.js';
|
|
15
16
|
import { createRealAnalyticsService } from './analytics.service.js';
|
|
16
17
|
// Re-export stub helpers for external consumers
|
|
@@ -144,7 +145,7 @@ export const usageReportToolSchema = {
|
|
|
144
145
|
*
|
|
145
146
|
* Uses real service when db is available, falls back to stub
|
|
146
147
|
*/
|
|
147
|
-
|
|
148
|
+
async function executeTeamAnalyticsDashboardImpl(input, context) {
|
|
148
149
|
const days = periodDays(input.period);
|
|
149
150
|
const svc = resolveAnalyticsService(context);
|
|
150
151
|
if (svc) {
|
|
@@ -189,7 +190,7 @@ export async function executeTeamAnalyticsDashboard(input, context) {
|
|
|
189
190
|
*
|
|
190
191
|
* Uses real service when db is available, falls back to stub
|
|
191
192
|
*/
|
|
192
|
-
|
|
193
|
+
async function executeTeamUsageReportImpl(input, context) {
|
|
193
194
|
const days = periodDays(input.period);
|
|
194
195
|
const svc = resolveAnalyticsService(context);
|
|
195
196
|
if (svc) {
|
|
@@ -224,7 +225,7 @@ export async function executeTeamUsageReport(input, context) {
|
|
|
224
225
|
*
|
|
225
226
|
* Uses real service when db is available, falls back to stub
|
|
226
227
|
*/
|
|
227
|
-
|
|
228
|
+
async function executeAnalyticsDashboardImpl(input, context) {
|
|
228
229
|
const days = periodDays(input.period);
|
|
229
230
|
const svc = resolveAnalyticsService(context);
|
|
230
231
|
if (svc) {
|
|
@@ -271,7 +272,7 @@ export async function executeAnalyticsDashboard(input, context) {
|
|
|
271
272
|
*
|
|
272
273
|
* Uses real service when db is available, falls back to stub
|
|
273
274
|
*/
|
|
274
|
-
|
|
275
|
+
async function executeUsageReportImpl(input, context) {
|
|
275
276
|
const days = periodDays(input.period);
|
|
276
277
|
const svc = resolveAnalyticsService(context);
|
|
277
278
|
if (svc) {
|
|
@@ -318,4 +319,25 @@ export async function executeUsageReport(input, context) {
|
|
|
318
319
|
}
|
|
319
320
|
return stubUsageReport(input.period, input.format);
|
|
320
321
|
}
|
|
322
|
+
// SMI-5017 W2.S2: wrap at export boundary
|
|
323
|
+
export const executeTeamAnalyticsDashboard = withTelemetry(executeTeamAnalyticsDashboardImpl, {
|
|
324
|
+
source: 'mcp-tool',
|
|
325
|
+
extractSkillId: () => 'team_analytics_dashboard',
|
|
326
|
+
extractFramework: () => 'unknown',
|
|
327
|
+
});
|
|
328
|
+
export const executeTeamUsageReport = withTelemetry(executeTeamUsageReportImpl, {
|
|
329
|
+
source: 'mcp-tool',
|
|
330
|
+
extractSkillId: () => 'team_usage_report',
|
|
331
|
+
extractFramework: () => 'unknown',
|
|
332
|
+
});
|
|
333
|
+
export const executeAnalyticsDashboard = withTelemetry(executeAnalyticsDashboardImpl, {
|
|
334
|
+
source: 'mcp-tool',
|
|
335
|
+
extractSkillId: () => 'analytics_dashboard',
|
|
336
|
+
extractFramework: () => 'unknown',
|
|
337
|
+
});
|
|
338
|
+
export const executeUsageReport = withTelemetry(executeUsageReportImpl, {
|
|
339
|
+
source: 'mcp-tool',
|
|
340
|
+
extractSkillId: () => 'usage_report',
|
|
341
|
+
extractFramework: () => 'unknown',
|
|
342
|
+
});
|
|
321
343
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/tools/analytics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/tools/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Supabase-backed analytics service — cloud read path for Team/Enterprise tiers
|
|
3
|
+
* @module @skillsmith/mcp-server/tools/analytics.supabase.service
|
|
4
|
+
* @see SMI-5015: W1.S3 — MCP read path for skill-invoke analytics RPCs
|
|
5
|
+
*
|
|
6
|
+
* Three RPCs are called against the cloud `search_metrics` table:
|
|
7
|
+
* - analytics_skill_top → topSkills panel
|
|
8
|
+
* - analytics_skill_stale → staleSkills panel
|
|
9
|
+
* - analytics_skill_cooccurrence → co-occurrence panel
|
|
10
|
+
*
|
|
11
|
+
* Error handling: methods NEVER throw — errors are returned as a typed
|
|
12
|
+
* error envelope `{ ok: false; error: string }` so callers can branch
|
|
13
|
+
* without try/catch. Success results carry `{ ok: true; data: <panel> }`.
|
|
14
|
+
*
|
|
15
|
+
* RPC params use PostgreSQL snake_case names (p_team_id, p_window_days,
|
|
16
|
+
* p_threshold) matching the function signatures in the migration.
|
|
17
|
+
*/
|
|
18
|
+
export interface TopSkillRow {
|
|
19
|
+
skill_name: string;
|
|
20
|
+
/** skill_name doubles as skill_id — RPCs don't return a separate id column */
|
|
21
|
+
skill_id: string;
|
|
22
|
+
invocation_count: number;
|
|
23
|
+
distinct_developers: number;
|
|
24
|
+
/** -1.0 to +Infinity; null when no prior window data */
|
|
25
|
+
week_over_week_delta: number | null;
|
|
26
|
+
framework_breakdown: Record<string, number>;
|
|
27
|
+
}
|
|
28
|
+
export interface TopSkillsPanel {
|
|
29
|
+
panel: 'topSkills';
|
|
30
|
+
window: '7d' | '30d' | '90d';
|
|
31
|
+
rows: TopSkillRow[];
|
|
32
|
+
/** total rows where framework_breakdown has an 'unknown' key */
|
|
33
|
+
unattributed_count: number;
|
|
34
|
+
coverage_note: string;
|
|
35
|
+
}
|
|
36
|
+
export interface StaleSkillRow {
|
|
37
|
+
skill_name: string;
|
|
38
|
+
/** skill_name doubles as skill_id — RPCs don't return a separate id column */
|
|
39
|
+
skill_id: string;
|
|
40
|
+
/** ISO timestamp — null when skill has never been invoked */
|
|
41
|
+
last_invoked: string | null;
|
|
42
|
+
invocation_count: number;
|
|
43
|
+
/** installed_at not returned by RPC; null in v1 */
|
|
44
|
+
installed_at: string | null;
|
|
45
|
+
recommend_action: 'uninstall' | 'review';
|
|
46
|
+
}
|
|
47
|
+
export interface StaleSkillsPanel {
|
|
48
|
+
panel: 'staleSkills';
|
|
49
|
+
window: '90d';
|
|
50
|
+
threshold: number;
|
|
51
|
+
rows: StaleSkillRow[];
|
|
52
|
+
}
|
|
53
|
+
export interface CooccurrenceRow {
|
|
54
|
+
skill_a: string;
|
|
55
|
+
skill_b: string;
|
|
56
|
+
cooccurrence_count: number;
|
|
57
|
+
}
|
|
58
|
+
export interface CooccurrencePanel {
|
|
59
|
+
panel: 'cooccurrence';
|
|
60
|
+
window_days: number;
|
|
61
|
+
rows: CooccurrenceRow[];
|
|
62
|
+
}
|
|
63
|
+
export type ServiceResult<T> = {
|
|
64
|
+
ok: true;
|
|
65
|
+
data: T;
|
|
66
|
+
} | {
|
|
67
|
+
ok: false;
|
|
68
|
+
error: string;
|
|
69
|
+
};
|
|
70
|
+
export interface GetTopSkillsOpts {
|
|
71
|
+
teamId: string;
|
|
72
|
+
window: '7d' | '30d' | '90d';
|
|
73
|
+
limit?: number;
|
|
74
|
+
}
|
|
75
|
+
export interface GetStaleSkillsOpts {
|
|
76
|
+
teamId: string;
|
|
77
|
+
thresholdInvocations: number;
|
|
78
|
+
windowDays: number;
|
|
79
|
+
}
|
|
80
|
+
export interface GetCooccurrenceOpts {
|
|
81
|
+
teamId: string;
|
|
82
|
+
windowDays: number;
|
|
83
|
+
minCount?: number;
|
|
84
|
+
}
|
|
85
|
+
export declare class SupabaseAnalyticsService {
|
|
86
|
+
/**
|
|
87
|
+
* Top skills by invocation count for a team within a rolling window.
|
|
88
|
+
* Calls `analytics_skill_top(p_team_id, p_window_days)`.
|
|
89
|
+
*/
|
|
90
|
+
getTopSkills(opts: GetTopSkillsOpts): Promise<ServiceResult<TopSkillsPanel>>;
|
|
91
|
+
/**
|
|
92
|
+
* Skills installed but invoked fewer than threshold times in the window.
|
|
93
|
+
* Calls `analytics_skill_stale(p_team_id, p_window_days, p_threshold)`.
|
|
94
|
+
*/
|
|
95
|
+
getStaleSkills(opts: GetStaleSkillsOpts): Promise<ServiceResult<StaleSkillsPanel>>;
|
|
96
|
+
/**
|
|
97
|
+
* Skill co-occurrence pairs invoked within the same session.
|
|
98
|
+
* Calls `analytics_skill_cooccurrence(p_team_id, p_window_days)`.
|
|
99
|
+
* Client-side `minCount` filter applied post-RPC (RPC has no threshold param).
|
|
100
|
+
*/
|
|
101
|
+
getCooccurrence(opts: GetCooccurrenceOpts): Promise<ServiceResult<CooccurrencePanel>>;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=analytics.supabase.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.supabase.service.d.ts","sourceRoot":"","sources":["../../../src/tools/analytics.supabase.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;IAC5B,IAAI,EAAE,WAAW,EAAE,CAAA;IACnB,gEAAgE;IAChE,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,WAAW,GAAG,QAAQ,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,EAAE,KAAK,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,aAAa,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,eAAe,EAAE,CAAA;CACxB;AAMD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AA8BnF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB,EAAE,MAAM,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAwBD,qBAAa,wBAAwB;IACnC;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IA4DlF;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAmDxF;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;CA4C5F"}
|