@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.
Files changed (195) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/__tests__/recommend-online-path.test.js +2 -0
  4. package/dist/src/__tests__/recommend-online-path.test.js.map +1 -1
  5. package/dist/src/__tests__/recommend.test.js +10 -2
  6. package/dist/src/__tests__/recommend.test.js.map +1 -1
  7. package/dist/src/__tests__/search-installable.test.js +5 -0
  8. package/dist/src/__tests__/search-installable.test.js.map +1 -1
  9. package/dist/src/__tests__/search-online-path.test.js +1 -0
  10. package/dist/src/__tests__/search-online-path.test.js.map +1 -1
  11. package/dist/src/__tests__/search.test.js +3 -0
  12. package/dist/src/__tests__/search.test.js.map +1 -1
  13. package/dist/src/index.js +9 -50
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/middleware/license.gate.d.ts +2 -2
  16. package/dist/src/middleware/license.gate.d.ts.map +1 -1
  17. package/dist/src/middleware/license.gate.js +43 -1
  18. package/dist/src/middleware/license.gate.js.map +1 -1
  19. package/dist/src/middleware/telemetry-consent.d.ts +88 -0
  20. package/dist/src/middleware/telemetry-consent.d.ts.map +1 -0
  21. package/dist/src/middleware/telemetry-consent.js +177 -0
  22. package/dist/src/middleware/telemetry-consent.js.map +1 -0
  23. package/dist/src/middleware/telemetry-consent.test.d.ts +12 -0
  24. package/dist/src/middleware/telemetry-consent.test.d.ts.map +1 -0
  25. package/dist/src/middleware/telemetry-consent.test.js +291 -0
  26. package/dist/src/middleware/telemetry-consent.test.js.map +1 -0
  27. package/dist/src/tools/__meta__/telemetry-coverage.test.d.ts +25 -0
  28. package/dist/src/tools/__meta__/telemetry-coverage.test.d.ts.map +1 -0
  29. package/dist/src/tools/__meta__/telemetry-coverage.test.js +210 -0
  30. package/dist/src/tools/__meta__/telemetry-coverage.test.js.map +1 -0
  31. package/dist/src/tools/analytics.d.ts +15 -28
  32. package/dist/src/tools/analytics.d.ts.map +1 -1
  33. package/dist/src/tools/analytics.js +26 -4
  34. package/dist/src/tools/analytics.js.map +1 -1
  35. package/dist/src/tools/analytics.supabase.service.d.ts +103 -0
  36. package/dist/src/tools/analytics.supabase.service.d.ts.map +1 -0
  37. package/dist/src/tools/analytics.supabase.service.js +171 -0
  38. package/dist/src/tools/analytics.supabase.service.js.map +1 -0
  39. package/dist/src/tools/analytics.supabase.service.test.d.ts +10 -0
  40. package/dist/src/tools/analytics.supabase.service.test.d.ts.map +1 -0
  41. package/dist/src/tools/analytics.supabase.service.test.js +375 -0
  42. package/dist/src/tools/analytics.supabase.service.test.js.map +1 -0
  43. package/dist/src/tools/analyze.d.ts +6 -19
  44. package/dist/src/tools/analyze.d.ts.map +1 -1
  45. package/dist/src/tools/analyze.js +8 -1
  46. package/dist/src/tools/analyze.js.map +1 -1
  47. package/dist/src/tools/apply-namespace-rename.d.ts +1 -8
  48. package/dist/src/tools/apply-namespace-rename.d.ts.map +1 -1
  49. package/dist/src/tools/apply-namespace-rename.js +8 -1
  50. package/dist/src/tools/apply-namespace-rename.js.map +1 -1
  51. package/dist/src/tools/apply-recommended-edit.d.ts +1 -6
  52. package/dist/src/tools/apply-recommended-edit.d.ts.map +1 -1
  53. package/dist/src/tools/apply-recommended-edit.js +8 -1
  54. package/dist/src/tools/apply-recommended-edit.js.map +1 -1
  55. package/dist/src/tools/audit-tools.d.ts +20 -3
  56. package/dist/src/tools/audit-tools.d.ts.map +1 -1
  57. package/dist/src/tools/audit-tools.js +20 -3
  58. package/dist/src/tools/audit-tools.js.map +1 -1
  59. package/dist/src/tools/compare.d.ts +5 -21
  60. package/dist/src/tools/compare.d.ts.map +1 -1
  61. package/dist/src/tools/compare.js +8 -1
  62. package/dist/src/tools/compare.js.map +1 -1
  63. package/dist/src/tools/compliance-tools.d.ts +5 -1
  64. package/dist/src/tools/compliance-tools.d.ts.map +1 -1
  65. package/dist/src/tools/compliance-tools.js +8 -1
  66. package/dist/src/tools/compliance-tools.js.map +1 -1
  67. package/dist/src/tools/get-skill.d.ts +1 -20
  68. package/dist/src/tools/get-skill.d.ts.map +1 -1
  69. package/dist/src/tools/get-skill.js +8 -1
  70. package/dist/src/tools/get-skill.js.map +1 -1
  71. package/dist/src/tools/index-local.d.ts +1 -15
  72. package/dist/src/tools/index-local.d.ts.map +1 -1
  73. package/dist/src/tools/index-local.js +8 -1
  74. package/dist/src/tools/index-local.js.map +1 -1
  75. package/dist/src/tools/install.d.ts +1 -17
  76. package/dist/src/tools/install.d.ts.map +1 -1
  77. package/dist/src/tools/install.js +8 -1
  78. package/dist/src/tools/install.js.map +1 -1
  79. package/dist/src/tools/integration-tools.d.ts +14 -2
  80. package/dist/src/tools/integration-tools.d.ts.map +1 -1
  81. package/dist/src/tools/integration-tools.js +14 -2
  82. package/dist/src/tools/integration-tools.js.map +1 -1
  83. package/dist/src/tools/outdated.d.ts +3 -14
  84. package/dist/src/tools/outdated.d.ts.map +1 -1
  85. package/dist/src/tools/outdated.js +8 -1
  86. package/dist/src/tools/outdated.js.map +1 -1
  87. package/dist/src/tools/outdated.test.js +3 -0
  88. package/dist/src/tools/outdated.test.js.map +1 -1
  89. package/dist/src/tools/publish-private.d.ts +4 -7
  90. package/dist/src/tools/publish-private.d.ts.map +1 -1
  91. package/dist/src/tools/publish-private.js +8 -1
  92. package/dist/src/tools/publish-private.js.map +1 -1
  93. package/dist/src/tools/publish.d.ts +9 -11
  94. package/dist/src/tools/publish.d.ts.map +1 -1
  95. package/dist/src/tools/publish.js +8 -1
  96. package/dist/src/tools/publish.js.map +1 -1
  97. package/dist/src/tools/rbac-tools.d.ts +20 -3
  98. package/dist/src/tools/rbac-tools.d.ts.map +1 -1
  99. package/dist/src/tools/rbac-tools.js +20 -3
  100. package/dist/src/tools/rbac-tools.js.map +1 -1
  101. package/dist/src/tools/rbac-tools.test.js +2 -0
  102. package/dist/src/tools/rbac-tools.test.js.map +1 -1
  103. package/dist/src/tools/recommend.d.ts +9 -9
  104. package/dist/src/tools/recommend.d.ts.map +1 -1
  105. package/dist/src/tools/recommend.js +8 -1
  106. package/dist/src/tools/recommend.js.map +1 -1
  107. package/dist/src/tools/registry-tools.d.ts +10 -8
  108. package/dist/src/tools/registry-tools.d.ts.map +1 -1
  109. package/dist/src/tools/registry-tools.js +14 -2
  110. package/dist/src/tools/registry-tools.js.map +1 -1
  111. package/dist/src/tools/search.d.ts +3 -42
  112. package/dist/src/tools/search.d.ts.map +1 -1
  113. package/dist/src/tools/search.js +10 -24
  114. package/dist/src/tools/search.js.map +1 -1
  115. package/dist/src/tools/skill-audit.d.ts +3 -13
  116. package/dist/src/tools/skill-audit.d.ts.map +1 -1
  117. package/dist/src/tools/skill-audit.js +8 -1
  118. package/dist/src/tools/skill-audit.js.map +1 -1
  119. package/dist/src/tools/skill-diff.d.ts +9 -11
  120. package/dist/src/tools/skill-diff.d.ts.map +1 -1
  121. package/dist/src/tools/skill-diff.js +8 -1
  122. package/dist/src/tools/skill-diff.js.map +1 -1
  123. package/dist/src/tools/skill-inventory-audit.d.ts +1 -6
  124. package/dist/src/tools/skill-inventory-audit.d.ts.map +1 -1
  125. package/dist/src/tools/skill-inventory-audit.js +8 -1
  126. package/dist/src/tools/skill-inventory-audit.js.map +1 -1
  127. package/dist/src/tools/skill-pack-audit.d.ts +4 -12
  128. package/dist/src/tools/skill-pack-audit.d.ts.map +1 -1
  129. package/dist/src/tools/skill-pack-audit.js +8 -1
  130. package/dist/src/tools/skill-pack-audit.js.map +1 -1
  131. package/dist/src/tools/skill-rescan.d.ts +3 -11
  132. package/dist/src/tools/skill-rescan.d.ts.map +1 -1
  133. package/dist/src/tools/skill-rescan.js +8 -1
  134. package/dist/src/tools/skill-rescan.js.map +1 -1
  135. package/dist/src/tools/skill-rescan.test.js +2 -0
  136. package/dist/src/tools/skill-rescan.test.js.map +1 -1
  137. package/dist/src/tools/skill-updates.d.ts +3 -12
  138. package/dist/src/tools/skill-updates.d.ts.map +1 -1
  139. package/dist/src/tools/skill-updates.js +8 -1
  140. package/dist/src/tools/skill-updates.js.map +1 -1
  141. package/dist/src/tools/sso-tools.d.ts +9 -8
  142. package/dist/src/tools/sso-tools.d.ts.map +1 -1
  143. package/dist/src/tools/sso-tools.js +14 -2
  144. package/dist/src/tools/sso-tools.js.map +1 -1
  145. package/dist/src/tools/suggest.d.ts +9 -17
  146. package/dist/src/tools/suggest.d.ts.map +1 -1
  147. package/dist/src/tools/suggest.js +8 -1
  148. package/dist/src/tools/suggest.js.map +1 -1
  149. package/dist/src/tools/team-workspace.d.ts +11 -16
  150. package/dist/src/tools/team-workspace.d.ts.map +1 -1
  151. package/dist/src/tools/team-workspace.js +14 -2
  152. package/dist/src/tools/team-workspace.js.map +1 -1
  153. package/dist/src/tools/uninstall.d.ts +4 -10
  154. package/dist/src/tools/uninstall.d.ts.map +1 -1
  155. package/dist/src/tools/uninstall.js +8 -1
  156. package/dist/src/tools/uninstall.js.map +1 -1
  157. package/dist/src/tools/validate.d.ts +5 -23
  158. package/dist/src/tools/validate.d.ts.map +1 -1
  159. package/dist/src/tools/validate.js +8 -1
  160. package/dist/src/tools/validate.js.map +1 -1
  161. package/dist/src/validation.d.ts +2 -2
  162. package/dist/src/validation.d.ts.map +1 -1
  163. package/dist/src/validation.js +6 -0
  164. package/dist/src/validation.js.map +1 -1
  165. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +24 -14
  166. package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -1
  167. package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -1
  168. package/dist/tests/compare.test.js +3 -0
  169. package/dist/tests/compare.test.js.map +1 -1
  170. package/dist/tests/e2e/compare.e2e.test.js +3 -1
  171. package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
  172. package/dist/tests/e2e/recommend.e2e.test.js +6 -1
  173. package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
  174. package/dist/tests/e2e/skill-flow.e2e.test.js +8 -0
  175. package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
  176. package/dist/tests/e2e/suggest.e2e.test.js +5 -1
  177. package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
  178. package/dist/tests/integration/analyze.integration.test.js +7 -0
  179. package/dist/tests/integration/analyze.integration.test.js.map +1 -1
  180. package/dist/tests/integration/recommend.integration.test.js +6 -0
  181. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  182. package/dist/tests/integration/validate.integration.test.js +7 -1
  183. package/dist/tests/integration/validate.integration.test.js.map +1 -1
  184. package/dist/tests/performance/search-performance.test.js +9 -1
  185. package/dist/tests/performance/search-performance.test.js.map +1 -1
  186. package/dist/tests/recommend.test.js +11 -2
  187. package/dist/tests/recommend.test.js.map +1 -1
  188. package/dist/tests/startup-probe.test.js +9 -4
  189. package/dist/tests/startup-probe.test.js.map +1 -1
  190. package/dist/tests/unit/skill-pack-audit.test.js +14 -1
  191. package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
  192. package/dist/tests/validate.test.js +28 -8
  193. package/dist/tests/validate.test.js.map +1 -1
  194. package/package.json +2 -2
  195. 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
- * Team analytics dashboard handler.
129
- * Returns per-user tool usage, top tools, and daily trend as markdown.
130
- *
131
- * Uses real service when db is available, falls back to stub
132
- */
133
- export declare function executeTeamAnalyticsDashboard(input: TeamAnalyticsDashboardInput, context: ToolContext): Promise<string>;
134
- /**
135
- * Team usage report handler.
136
- * Returns weekly/monthly summary with period comparison as markdown.
137
- *
138
- * Uses real service when db is available, falls back to stub
139
- */
140
- export declare function executeTeamUsageReport(input: TeamUsageReportInput, context: ToolContext): Promise<string>;
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;AAWhD,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;AAMD;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,2BAA2B,EAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAiDjB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CA0DjB"}
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
- export async function executeTeamAnalyticsDashboard(input, context) {
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
- export async function executeTeamUsageReport(input, context) {
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
- export async function executeAnalyticsDashboard(input, context) {
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
- export async function executeUsageReport(input, context) {
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":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,0BAA0B,EAAyB,MAAM,wBAAwB,CAAA;AAE1F,gDAAgD;AAChD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAEpE;;;GAGG;AACH,SAAS,uBAAuB,CAAC,OAAoB;IACnD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC3E,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AAClF,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AAEnG,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,yCAAyC,CAAC;CACzE,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACrE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CACtF,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACxE,sBAAsB,EAAE,CAAC;SACtB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,yCAAyC,CAAC;CACvD,CAAC,CAAA;AAIF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IACrE,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CACrC,4DAA4D,CAC7D;CACF,CAAC,CAAA;AAIF,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,IAAI,EAAE,0BAAmC;IACzC,WAAW,EACT,qFAAqF;QACrF,+CAA+C;IACjD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC1B,WAAW,EAAE,2BAA2B;aACzC;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,mBAA4B;IAClC,WAAW,EACT,8EAA8E;QAC9E,+CAA+C;IACjD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC1B,WAAW,EAAE,2BAA2B;aACzC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;gBAC7B,WAAW,EAAE,iCAAiC;aAC/C;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,qBAA8B;IACpC,WAAW,EACT,kFAAkF;QAClF,+EAA+E;IACjF,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC1B,WAAW,EAAE,2BAA2B;aACzC;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,yDAAyD;aACvE;SACF;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,cAAuB;IAC7B,WAAW,EACT,0DAA0D;QAC1D,wDAAwD;IAC1D,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC1B,WAAW,EAAE,2BAA2B;aACzC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC;gBACpC,WAAW,EAAE,iCAAiC;aAC/C;SACF;KACF;CACF,CAAA;AAED,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E;;;;;GAKG;AACH,KAAK,UAAU,iCAAiC,CAC9C,KAAkC,EAClC,OAAoB;IAEpB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAA;QACjC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9D,MAAM,KAAK,GAAG;YACZ,+BAA+B,KAAK,CAAC,MAAM,GAAG;YAC9C,EAAE;YACF,YAAY;YACZ,sBAAsB,IAAI,OAAO;YACjC,2BAA2B,KAAK,EAAE;YAClC,uBAAuB,IAAI,CAAC,WAAW,EAAE;YACzC,wBAAwB,SAAS,EAAE;YACnC,yBAAyB;YACzB,EAAE;YACF,cAAc;YACd,+BAA+B;YAC/B,+BAA+B;YAC/B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/D,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,GAAG,KAAK,CAAA;YAC/C,CAAC,CAAC;YACF,EAAE;YACF,sBAAsB;YACtB,kBAAkB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YACjD,mBAAmB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACnD,iBAAiB,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG;YAC7G,EAAE;YACF,8BAA8B;YAC9B,kBAAkB;YAClB,kBAAkB;YAClB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;SACtE,CAAA;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,0BAA0B,CACvC,KAA2B,EAC3B,OAAoB;IAEpB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;QAClE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAClE,MAAM,IAAI,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1C,MAAM,KAAK,GAAG;YACZ,wBAAwB,KAAK,CAAC,MAAM,GAAG;YACvC,EAAE;YACF,mBAAmB;YACnB,yBAAyB,OAAO,cAAc;YAC9C,0BAA0B,QAAQ,cAAc;YAChD,iBAAiB,IAAI,GAAG,aAAa,GAAG;YACxC,uBAAuB,IAAI,CAAC,WAAW,EAAE;YACzC,yBAAyB;YACzB,EAAE;YACF,cAAc;YACd,kBAAkB;YAClB,kBAAkB;YAClB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;SAC1D,CAAA;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAC1D,CAAA;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AACxD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,6BAA6B,CAC1C,KAA8B,EAC9B,OAAoB;IAEpB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAA;QAEjC,MAAM,KAAK,GAAG;YACZ,qCAAqC,KAAK,CAAC,MAAM,GAAG;YACpD,EAAE;YACF,yBAAyB;YACzB,sBAAsB,IAAI,OAAO;YACjC,2BAA2B,KAAK,EAAE;YAClC,uBAAuB,IAAI,CAAC,WAAW,EAAE;YACzC,yBAAyB;YACzB,EAAE;YACF,cAAc;YACd,+BAA+B;YAC/B,+BAA+B;YAC/B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/D,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,GAAG,KAAK,CAAA;YAC/C,CAAC,CAAC;YACF,EAAE;YACF,sBAAsB;YACtB,kBAAkB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YACjD,mBAAmB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACnD,iBAAiB,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG;YAC7G,EAAE;YACF,8BAA8B;YAC9B,kBAAkB;YAClB,kBAAkB;YAClB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;SACtE,CAAA;QAED,IAAI,KAAK,CAAC,sBAAsB,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4BAA4B,EAC5B,sDAAsD;gBACpD,oDAAoD,CACvD,CAAA;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,sBAAsB,CACnC,KAAuB,EACvB,OAAoB;IAEpB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAE5C,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;QAClE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAA;QAClE,MAAM,IAAI,GAAG,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1C,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG;gBACf,sDAAsD;gBACtD,eAAe,OAAO,IAAI,QAAQ,IAAI,aAAa,EAAE;gBACrD,gBAAgB,IAAI,CAAC,WAAW,KAAK;aACtC,CAAA;YACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAA;YAC/C,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,8BAA8B,KAAK,CAAC,MAAM,GAAG;YAC7C,EAAE;YACF,sBAAsB;YACtB,sBAAsB,IAAI,OAAO;YACjC,2BAA2B,OAAO,KAAK,IAAI,GAAG,aAAa,gBAAgB;YAC3E,uBAAuB,IAAI,CAAC,WAAW,EAAE;YACzC,yBAAyB;YACzB,EAAE;YACF,cAAc;YACd,+BAA+B;YAC/B,+BAA+B;YAC/B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACnE,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM,GAAG,KAAK,CAAA;YAC/C,CAAC,CAAC;YACF,EAAE;YACF,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;SACtE,CAAA;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAC1D,CAAA;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AACpD,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC,iCAAiC,EAAE;IAC5F,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,0BAA0B;IAChD,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;CAClC,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC,0BAA0B,EAAE;IAC9E,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,mBAAmB;IACzC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;CAClC,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC,6BAA6B,EAAE;IACpF,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,qBAAqB;IAC3C,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;CAClC,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,sBAAsB,EAAE;IACtE,MAAM,EAAE,UAAU;IAClB,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc;IACpC,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;CAClC,CAAC,CAAA"}
@@ -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"}