@skillsmith/mcp-server 0.4.13 → 0.5.1
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 +37 -4
- package/README.md +89 -13
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/__tests__/compare.test.js +5 -5
- package/dist/src/__tests__/compare.test.js.map +1 -1
- package/dist/src/__tests__/context-listeners.test.d.ts +12 -0
- package/dist/src/__tests__/context-listeners.test.d.ts.map +1 -0
- package/dist/src/__tests__/context-listeners.test.js +87 -0
- package/dist/src/__tests__/context-listeners.test.js.map +1 -0
- package/dist/src/__tests__/context.test.js +84 -82
- package/dist/src/__tests__/context.test.js.map +1 -1
- package/dist/src/__tests__/get-skill.api-path.test.js +21 -14
- package/dist/src/__tests__/get-skill.api-path.test.js.map +1 -1
- package/dist/src/__tests__/get-skill.test.js +5 -5
- package/dist/src/__tests__/get-skill.test.js.map +1 -1
- package/dist/src/__tests__/index-local.test.js +5 -5
- package/dist/src/__tests__/index-local.test.js.map +1 -1
- package/dist/src/__tests__/recommend-online-path.test.js +5 -5
- package/dist/src/__tests__/recommend-online-path.test.js.map +1 -1
- package/dist/src/__tests__/recommend.test.js +9 -9
- package/dist/src/__tests__/recommend.test.js.map +1 -1
- package/dist/src/__tests__/search-compatible-with.test.d.ts +10 -0
- package/dist/src/__tests__/search-compatible-with.test.d.ts.map +1 -0
- package/dist/src/__tests__/search-compatible-with.test.js +96 -0
- package/dist/src/__tests__/search-compatible-with.test.js.map +1 -0
- package/dist/src/__tests__/search-online-path.test.js +5 -5
- package/dist/src/__tests__/search-online-path.test.js.map +1 -1
- package/dist/src/__tests__/search.test.js +16 -101
- package/dist/src/__tests__/search.test.js.map +1 -1
- package/dist/src/__tests__/test-utils.d.ts +18 -3
- package/dist/src/__tests__/test-utils.d.ts.map +1 -1
- package/dist/src/__tests__/test-utils.js +24 -7
- package/dist/src/__tests__/test-utils.js.map +1 -1
- package/dist/src/audit/audit-history.d.ts +77 -0
- package/dist/src/audit/audit-history.d.ts.map +1 -0
- package/dist/src/audit/audit-history.js +98 -0
- package/dist/src/audit/audit-history.js.map +1 -0
- package/dist/src/audit/audit-report-writer.d.ts +82 -0
- package/dist/src/audit/audit-report-writer.d.ts.map +1 -0
- package/dist/src/audit/audit-report-writer.js +241 -0
- package/dist/src/audit/audit-report-writer.js.map +1 -0
- package/dist/src/audit/audit-suggestions.d.ts +52 -0
- package/dist/src/audit/audit-suggestions.d.ts.map +1 -0
- package/dist/src/audit/audit-suggestions.js +90 -0
- package/dist/src/audit/audit-suggestions.js.map +1 -0
- package/dist/src/audit/bootstrap-unmanaged.d.ts +66 -0
- package/dist/src/audit/bootstrap-unmanaged.d.ts.map +1 -0
- package/dist/src/audit/bootstrap-unmanaged.js +91 -0
- package/dist/src/audit/bootstrap-unmanaged.js.map +1 -0
- package/dist/src/audit/collision-detector.d.ts +72 -0
- package/dist/src/audit/collision-detector.d.ts.map +1 -0
- package/dist/src/audit/collision-detector.helpers.d.ts +63 -0
- package/dist/src/audit/collision-detector.helpers.d.ts.map +1 -0
- package/dist/src/audit/collision-detector.helpers.js +141 -0
- package/dist/src/audit/collision-detector.helpers.js.map +1 -0
- package/dist/src/audit/collision-detector.js +172 -0
- package/dist/src/audit/collision-detector.js.map +1 -0
- package/dist/src/audit/collision-detector.semantic.helpers.d.ts +49 -0
- package/dist/src/audit/collision-detector.semantic.helpers.d.ts.map +1 -0
- package/dist/src/audit/collision-detector.semantic.helpers.js +121 -0
- package/dist/src/audit/collision-detector.semantic.helpers.js.map +1 -0
- package/dist/src/audit/collision-detector.types.d.ts +70 -0
- package/dist/src/audit/collision-detector.types.d.ts.map +1 -0
- package/dist/src/audit/collision-detector.types.js +9 -0
- package/dist/src/audit/collision-detector.types.js.map +1 -0
- package/dist/src/audit/edit-applier.d.ts +64 -0
- package/dist/src/audit/edit-applier.d.ts.map +1 -0
- package/dist/src/audit/edit-applier.js +233 -0
- package/dist/src/audit/edit-applier.js.map +1 -0
- package/dist/src/audit/edit-applier.types.d.ts +72 -0
- package/dist/src/audit/edit-applier.types.d.ts.map +1 -0
- package/dist/src/audit/edit-applier.types.js +13 -0
- package/dist/src/audit/edit-applier.types.js.map +1 -0
- package/dist/src/audit/edit-suggester.d.ts +63 -0
- package/dist/src/audit/edit-suggester.d.ts.map +1 -0
- package/dist/src/audit/edit-suggester.js +326 -0
- package/dist/src/audit/edit-suggester.js.map +1 -0
- package/dist/src/audit/edit-suggester.types.d.ts +148 -0
- package/dist/src/audit/edit-suggester.types.d.ts.map +1 -0
- package/dist/src/audit/edit-suggester.types.js +17 -0
- package/dist/src/audit/edit-suggester.types.js.map +1 -0
- package/dist/src/audit/framework-adapter.d.ts +54 -0
- package/dist/src/audit/framework-adapter.d.ts.map +1 -0
- package/dist/src/audit/framework-adapter.js +251 -0
- package/dist/src/audit/framework-adapter.js.map +1 -0
- package/dist/src/audit/framework-adapter.types.d.ts +162 -0
- package/dist/src/audit/framework-adapter.types.d.ts.map +1 -0
- package/dist/src/audit/framework-adapter.types.js +31 -0
- package/dist/src/audit/framework-adapter.types.js.map +1 -0
- package/dist/src/audit/index.d.ts +46 -0
- package/dist/src/audit/index.d.ts.map +1 -0
- package/dist/src/audit/index.js +44 -0
- package/dist/src/audit/index.js.map +1 -0
- package/dist/src/audit/install-preflight.d.ts +99 -0
- package/dist/src/audit/install-preflight.d.ts.map +1 -0
- package/dist/src/audit/install-preflight.js +320 -0
- package/dist/src/audit/install-preflight.js.map +1 -0
- package/dist/src/audit/namespace-audit.types.d.ts +100 -0
- package/dist/src/audit/namespace-audit.types.d.ts.map +1 -0
- package/dist/src/audit/namespace-audit.types.js +20 -0
- package/dist/src/audit/namespace-audit.types.js.map +1 -0
- package/dist/src/audit/namespace-overrides.d.ts +79 -0
- package/dist/src/audit/namespace-overrides.d.ts.map +1 -0
- package/dist/src/audit/namespace-overrides.js +228 -0
- package/dist/src/audit/namespace-overrides.js.map +1 -0
- package/dist/src/audit/namespace-overrides.types.d.ts +115 -0
- package/dist/src/audit/namespace-overrides.types.d.ts.map +1 -0
- package/dist/src/audit/namespace-overrides.types.js +26 -0
- package/dist/src/audit/namespace-overrides.types.js.map +1 -0
- package/dist/src/audit/rename-engine.apply-paths.d.ts +54 -0
- package/dist/src/audit/rename-engine.apply-paths.d.ts.map +1 -0
- package/dist/src/audit/rename-engine.apply-paths.js +126 -0
- package/dist/src/audit/rename-engine.apply-paths.js.map +1 -0
- package/dist/src/audit/rename-engine.d.ts +59 -0
- package/dist/src/audit/rename-engine.d.ts.map +1 -0
- package/dist/src/audit/rename-engine.helpers.d.ts +63 -0
- package/dist/src/audit/rename-engine.helpers.d.ts.map +1 -0
- package/dist/src/audit/rename-engine.helpers.js +224 -0
- package/dist/src/audit/rename-engine.helpers.js.map +1 -0
- package/dist/src/audit/rename-engine.js +393 -0
- package/dist/src/audit/rename-engine.js.map +1 -0
- package/dist/src/audit/rename-engine.types.d.ts +157 -0
- package/dist/src/audit/rename-engine.types.d.ts.map +1 -0
- package/dist/src/audit/rename-engine.types.js +15 -0
- package/dist/src/audit/rename-engine.types.js.map +1 -0
- package/dist/src/audit/run-inventory-audit.d.ts +95 -0
- package/dist/src/audit/run-inventory-audit.d.ts.map +1 -0
- package/dist/src/audit/run-inventory-audit.js +245 -0
- package/dist/src/audit/run-inventory-audit.js.map +1 -0
- package/dist/src/audit/suggestion-chain.d.ts +89 -0
- package/dist/src/audit/suggestion-chain.d.ts.map +1 -0
- package/dist/src/audit/suggestion-chain.js +121 -0
- package/dist/src/audit/suggestion-chain.js.map +1 -0
- package/dist/src/audit-tool-dispatch.d.ts +61 -0
- package/dist/src/audit-tool-dispatch.d.ts.map +1 -0
- package/dist/src/audit-tool-dispatch.js +114 -0
- package/dist/src/audit-tool-dispatch.js.map +1 -0
- package/dist/src/index.js +34 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/indexer/LocalIndexer.d.ts +8 -1
- package/dist/src/indexer/LocalIndexer.d.ts.map +1 -1
- package/dist/src/indexer/LocalIndexer.js +42 -38
- package/dist/src/indexer/LocalIndexer.js.map +1 -1
- package/dist/src/middleware/__tests__/license.gate.test.js +21 -2
- package/dist/src/middleware/__tests__/license.gate.test.js.map +1 -1
- package/dist/src/middleware/license.gate.d.ts +14 -0
- package/dist/src/middleware/license.gate.d.ts.map +1 -1
- package/dist/src/middleware/license.gate.js +52 -1
- package/dist/src/middleware/license.gate.js.map +1 -1
- package/dist/src/onboarding/install-assets.d.ts.map +1 -1
- package/dist/src/onboarding/install-assets.js +11 -5
- package/dist/src/onboarding/install-assets.js.map +1 -1
- package/dist/src/tool-dispatch.d.ts.map +1 -1
- package/dist/src/tool-dispatch.js +6 -4
- package/dist/src/tool-dispatch.js.map +1 -1
- package/dist/src/tools/analytics.service.test.js +6 -4
- package/dist/src/tools/analytics.service.test.js.map +1 -1
- package/dist/src/tools/apply-namespace-rename.d.ts +71 -0
- package/dist/src/tools/apply-namespace-rename.d.ts.map +1 -0
- package/dist/src/tools/apply-namespace-rename.js +137 -0
- package/dist/src/tools/apply-namespace-rename.js.map +1 -0
- package/dist/src/tools/apply-namespace-rename.types.d.ts +46 -0
- package/dist/src/tools/apply-namespace-rename.types.d.ts.map +1 -0
- package/dist/src/tools/apply-namespace-rename.types.js +9 -0
- package/dist/src/tools/apply-namespace-rename.types.js.map +1 -0
- package/dist/src/tools/apply-recommended-edit.d.ts +50 -0
- package/dist/src/tools/apply-recommended-edit.d.ts.map +1 -0
- package/dist/src/tools/apply-recommended-edit.js +112 -0
- package/dist/src/tools/apply-recommended-edit.js.map +1 -0
- package/dist/src/tools/apply-recommended-edit.types.d.ts +49 -0
- package/dist/src/tools/apply-recommended-edit.types.d.ts.map +1 -0
- package/dist/src/tools/apply-recommended-edit.types.js +14 -0
- package/dist/src/tools/apply-recommended-edit.types.js.map +1 -0
- package/dist/src/tools/audit-tools.d.ts +4 -4
- package/dist/src/tools/compare.types.js +1 -1
- package/dist/src/tools/compare.types.js.map +1 -1
- package/dist/src/tools/compliance-tools.service.test.js +6 -4
- package/dist/src/tools/compliance-tools.service.test.js.map +1 -1
- package/dist/src/tools/get-skill.d.ts.map +1 -1
- package/dist/src/tools/get-skill.js +1 -1
- package/dist/src/tools/get-skill.js.map +1 -1
- package/dist/src/tools/install.backup-gc.d.ts +61 -0
- package/dist/src/tools/install.backup-gc.d.ts.map +1 -0
- package/dist/src/tools/install.backup-gc.js +166 -0
- package/dist/src/tools/install.backup-gc.js.map +1 -0
- package/dist/src/tools/install.conflict-helpers.d.ts +29 -2
- package/dist/src/tools/install.conflict-helpers.d.ts.map +1 -1
- package/dist/src/tools/install.conflict-helpers.js +37 -4
- package/dist/src/tools/install.conflict-helpers.js.map +1 -1
- package/dist/src/tools/install.d.ts +15 -1
- package/dist/src/tools/install.d.ts.map +1 -1
- package/dist/src/tools/install.js +168 -8
- package/dist/src/tools/install.js.map +1 -1
- package/dist/src/tools/install.ledger-replay.d.ts +52 -0
- package/dist/src/tools/install.ledger-replay.d.ts.map +1 -0
- package/dist/src/tools/install.ledger-replay.js +88 -0
- package/dist/src/tools/install.ledger-replay.js.map +1 -0
- package/dist/src/tools/install.namespace-gate.d.ts +68 -0
- package/dist/src/tools/install.namespace-gate.d.ts.map +1 -0
- package/dist/src/tools/install.namespace-gate.js +129 -0
- package/dist/src/tools/install.namespace-gate.js.map +1 -0
- package/dist/src/tools/install.test.js +136 -1
- package/dist/src/tools/install.test.js.map +1 -1
- package/dist/src/tools/install.tool.d.ts +17 -0
- package/dist/src/tools/install.tool.d.ts.map +1 -1
- package/dist/src/tools/install.tool.js +19 -1
- package/dist/src/tools/install.tool.js.map +1 -1
- package/dist/src/tools/install.types.d.ts +35 -1
- package/dist/src/tools/install.types.d.ts.map +1 -1
- package/dist/src/tools/install.types.js +24 -2
- package/dist/src/tools/install.types.js.map +1 -1
- package/dist/src/tools/namespace-audit/telemetry.d.ts +80 -0
- package/dist/src/tools/namespace-audit/telemetry.d.ts.map +1 -0
- package/dist/src/tools/namespace-audit/telemetry.js +129 -0
- package/dist/src/tools/namespace-audit/telemetry.js.map +1 -0
- package/dist/src/tools/outdated.test.js +2 -2
- package/dist/src/tools/outdated.test.js.map +1 -1
- package/dist/src/tools/publish-private.test.js +2 -2
- package/dist/src/tools/publish-private.test.js.map +1 -1
- package/dist/src/tools/recommend.types.d.ts +2 -2
- package/dist/src/tools/recommend.types.js +1 -1
- package/dist/src/tools/recommend.types.js.map +1 -1
- package/dist/src/tools/search.d.ts +2 -2
- package/dist/src/tools/search.d.ts.map +1 -1
- package/dist/src/tools/search.js +3 -3
- package/dist/src/tools/search.js.map +1 -1
- package/dist/src/tools/skill-audit.test.js +2 -2
- package/dist/src/tools/skill-audit.test.js.map +1 -1
- package/dist/src/tools/skill-diff.d.ts +1 -1
- package/dist/src/tools/skill-inventory-audit.d.ts +67 -0
- package/dist/src/tools/skill-inventory-audit.d.ts.map +1 -0
- package/dist/src/tools/skill-inventory-audit.js +112 -0
- package/dist/src/tools/skill-inventory-audit.js.map +1 -0
- package/dist/src/tools/skill-inventory-audit.types.d.ts +67 -0
- package/dist/src/tools/skill-inventory-audit.types.d.ts.map +1 -0
- package/dist/src/tools/skill-inventory-audit.types.js +14 -0
- package/dist/src/tools/skill-inventory-audit.types.js.map +1 -0
- package/dist/src/tools/skill-pack-audit.d.ts.map +1 -1
- package/dist/src/tools/skill-pack-audit.helpers.d.ts.map +1 -1
- package/dist/src/tools/skill-pack-audit.helpers.js +15 -2
- package/dist/src/tools/skill-pack-audit.helpers.js.map +1 -1
- package/dist/src/tools/skill-pack-audit.js +15 -1
- package/dist/src/tools/skill-pack-audit.js.map +1 -1
- package/dist/src/tools/skill-rescan.d.ts.map +1 -1
- package/dist/src/tools/skill-rescan.js +4 -2
- package/dist/src/tools/skill-rescan.js.map +1 -1
- package/dist/src/tools/suggest.d.ts +2 -2
- package/dist/src/tools/uninstall.d.ts +1 -1
- package/dist/src/tools/uninstall.d.ts.map +1 -1
- package/dist/src/tools/uninstall.js +17 -3
- package/dist/src/tools/uninstall.js.map +1 -1
- package/dist/src/tools/validate.types.d.ts +10 -1
- package/dist/src/tools/validate.types.d.ts.map +1 -1
- package/dist/src/tools/validate.types.js +11 -2
- package/dist/src/tools/validate.types.js.map +1 -1
- package/dist/src/utils/installed-skills.d.ts.map +1 -1
- package/dist/src/utils/installed-skills.js +8 -6
- package/dist/src/utils/installed-skills.js.map +1 -1
- package/dist/src/utils/local-inventory.d.ts +29 -0
- package/dist/src/utils/local-inventory.d.ts.map +1 -0
- package/dist/src/utils/local-inventory.helpers.d.ts +96 -0
- package/dist/src/utils/local-inventory.helpers.d.ts.map +1 -0
- package/dist/src/utils/local-inventory.helpers.js +279 -0
- package/dist/src/utils/local-inventory.helpers.js.map +1 -0
- package/dist/src/utils/local-inventory.js +202 -0
- package/dist/src/utils/local-inventory.js.map +1 -0
- package/dist/src/utils/local-inventory.types.d.ts +100 -0
- package/dist/src/utils/local-inventory.types.d.ts.map +1 -0
- package/dist/src/utils/local-inventory.types.js +9 -0
- package/dist/src/utils/local-inventory.types.js.map +1 -0
- package/dist/src/webhooks/stripe-webhook-endpoint.d.ts +12 -0
- package/dist/src/webhooks/stripe-webhook-endpoint.d.ts.map +1 -1
- package/dist/src/webhooks/stripe-webhook-endpoint.js +30 -9
- package/dist/src/webhooks/stripe-webhook-endpoint.js.map +1 -1
- package/dist/src/webhooks/webhook-endpoint.d.ts +13 -0
- package/dist/src/webhooks/webhook-endpoint.d.ts.map +1 -1
- package/dist/src/webhooks/webhook-endpoint.js +31 -9
- package/dist/src/webhooks/webhook-endpoint.js.map +1 -1
- package/dist/tests/compare.test.js +5 -5
- package/dist/tests/compare.test.js.map +1 -1
- package/dist/tests/context-async-listeners.test.d.ts +12 -0
- package/dist/tests/context-async-listeners.test.d.ts.map +1 -0
- package/dist/tests/context-async-listeners.test.js +62 -0
- package/dist/tests/context-async-listeners.test.js.map +1 -0
- package/dist/tests/e2e/compare.e2e.test.js +9 -3
- package/dist/tests/e2e/compare.e2e.test.js.map +1 -1
- package/dist/tests/e2e/install-flow.e2e.test.js +9 -3
- package/dist/tests/e2e/install-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/recommend.e2e.test.js +9 -3
- package/dist/tests/e2e/recommend.e2e.test.js.map +1 -1
- package/dist/tests/e2e/skill-flow.e2e.test.js +17 -5
- package/dist/tests/e2e/skill-flow.e2e.test.js.map +1 -1
- package/dist/tests/e2e/suggest.e2e.test.js +11 -3
- package/dist/tests/e2e/suggest.e2e.test.js.map +1 -1
- package/dist/tests/install-assets.test.d.ts +16 -0
- package/dist/tests/install-assets.test.d.ts.map +1 -0
- package/dist/tests/install-assets.test.js +72 -0
- package/dist/tests/install-assets.test.js.map +1 -0
- package/dist/tests/integration/audit-roundtrip.test.d.ts +29 -0
- package/dist/tests/integration/audit-roundtrip.test.d.ts.map +1 -0
- package/dist/tests/integration/audit-roundtrip.test.js +214 -0
- package/dist/tests/integration/audit-roundtrip.test.js.map +1 -0
- package/dist/tests/integration/install-namespace.integration.test.d.ts +14 -0
- package/dist/tests/integration/install-namespace.integration.test.d.ts.map +1 -0
- package/dist/tests/integration/install-namespace.integration.test.js +414 -0
- package/dist/tests/integration/install-namespace.integration.test.js.map +1 -0
- package/dist/tests/performance/search-performance.test.js +9 -3
- package/dist/tests/performance/search-performance.test.js.map +1 -1
- package/dist/tests/tool-descriptions.test.d.ts +16 -0
- package/dist/tests/tool-descriptions.test.d.ts.map +1 -0
- package/dist/tests/tool-descriptions.test.js +63 -0
- package/dist/tests/tool-descriptions.test.js.map +1 -0
- package/dist/tests/tools.test.js +5 -5
- package/dist/tests/tools.test.js.map +1 -1
- package/dist/tests/unit/apply-namespace-rename.test.d.ts +24 -0
- package/dist/tests/unit/apply-namespace-rename.test.d.ts.map +1 -0
- package/dist/tests/unit/apply-namespace-rename.test.js +205 -0
- package/dist/tests/unit/apply-namespace-rename.test.js.map +1 -0
- package/dist/tests/unit/apply-recommended-edit.test.d.ts +28 -0
- package/dist/tests/unit/apply-recommended-edit.test.d.ts.map +1 -0
- package/dist/tests/unit/apply-recommended-edit.test.js +229 -0
- package/dist/tests/unit/apply-recommended-edit.test.js.map +1 -0
- package/dist/tests/unit/audit-history.test.d.ts +11 -0
- package/dist/tests/unit/audit-history.test.d.ts.map +1 -0
- package/dist/tests/unit/audit-history.test.js +183 -0
- package/dist/tests/unit/audit-history.test.js.map +1 -0
- package/dist/tests/unit/audit-report-writer.test.d.ts +7 -0
- package/dist/tests/unit/audit-report-writer.test.d.ts.map +1 -0
- package/dist/tests/unit/audit-report-writer.test.js +249 -0
- package/dist/tests/unit/audit-report-writer.test.js.map +1 -0
- package/dist/tests/unit/audit-tool-dispatch.test.d.ts +17 -0
- package/dist/tests/unit/audit-tool-dispatch.test.d.ts.map +1 -0
- package/dist/tests/unit/audit-tool-dispatch.test.js +133 -0
- package/dist/tests/unit/audit-tool-dispatch.test.js.map +1 -0
- package/dist/tests/unit/collision-detector.semantic.test.d.ts +12 -0
- package/dist/tests/unit/collision-detector.semantic.test.d.ts.map +1 -0
- package/dist/tests/unit/collision-detector.semantic.test.js +281 -0
- package/dist/tests/unit/collision-detector.semantic.test.js.map +1 -0
- package/dist/tests/unit/collision-detector.test.d.ts +8 -0
- package/dist/tests/unit/collision-detector.test.d.ts.map +1 -0
- package/dist/tests/unit/collision-detector.test.js +266 -0
- package/dist/tests/unit/collision-detector.test.js.map +1 -0
- package/dist/tests/unit/edit-applier.test.d.ts +17 -0
- package/dist/tests/unit/edit-applier.test.d.ts.map +1 -0
- package/dist/tests/unit/edit-applier.test.js +165 -0
- package/dist/tests/unit/edit-applier.test.js.map +1 -0
- package/dist/tests/unit/edit-suggester.fixtures.d.ts +38 -0
- package/dist/tests/unit/edit-suggester.fixtures.d.ts.map +1 -0
- package/dist/tests/unit/edit-suggester.fixtures.js +84 -0
- package/dist/tests/unit/edit-suggester.fixtures.js.map +1 -0
- package/dist/tests/unit/edit-suggester.test.d.ts +17 -0
- package/dist/tests/unit/edit-suggester.test.d.ts.map +1 -0
- package/dist/tests/unit/edit-suggester.test.js +356 -0
- package/dist/tests/unit/edit-suggester.test.js.map +1 -0
- package/dist/tests/unit/framework-adapter.test.d.ts +30 -0
- package/dist/tests/unit/framework-adapter.test.d.ts.map +1 -0
- package/dist/tests/unit/framework-adapter.test.js +221 -0
- package/dist/tests/unit/framework-adapter.test.js.map +1 -0
- package/dist/tests/unit/install-preflight.test.d.ts +17 -0
- package/dist/tests/unit/install-preflight.test.d.ts.map +1 -0
- package/dist/tests/unit/install-preflight.test.js +270 -0
- package/dist/tests/unit/install-preflight.test.js.map +1 -0
- package/dist/tests/unit/install.backup-gc.test.d.ts +18 -0
- package/dist/tests/unit/install.backup-gc.test.d.ts.map +1 -0
- package/dist/tests/unit/install.backup-gc.test.js +177 -0
- package/dist/tests/unit/install.backup-gc.test.js.map +1 -0
- package/dist/tests/unit/install.ledger-replay.test.d.ts +12 -0
- package/dist/tests/unit/install.ledger-replay.test.d.ts.map +1 -0
- package/dist/tests/unit/install.ledger-replay.test.js +98 -0
- package/dist/tests/unit/install.ledger-replay.test.js.map +1 -0
- package/dist/tests/unit/local-inventory.test.d.ts +8 -0
- package/dist/tests/unit/local-inventory.test.d.ts.map +1 -0
- package/dist/tests/unit/local-inventory.test.js +165 -0
- package/dist/tests/unit/local-inventory.test.js.map +1 -0
- package/dist/tests/unit/namespace-audit-telemetry.test.d.ts +10 -0
- package/dist/tests/unit/namespace-audit-telemetry.test.d.ts.map +1 -0
- package/dist/tests/unit/namespace-audit-telemetry.test.js +215 -0
- package/dist/tests/unit/namespace-audit-telemetry.test.js.map +1 -0
- package/dist/tests/unit/namespace-overrides.test.d.ts +18 -0
- package/dist/tests/unit/namespace-overrides.test.d.ts.map +1 -0
- package/dist/tests/unit/namespace-overrides.test.js +210 -0
- package/dist/tests/unit/namespace-overrides.test.js.map +1 -0
- package/dist/tests/unit/rename-engine.test.d.ts +26 -0
- package/dist/tests/unit/rename-engine.test.d.ts.map +1 -0
- package/dist/tests/unit/rename-engine.test.js +367 -0
- package/dist/tests/unit/rename-engine.test.js.map +1 -0
- package/dist/tests/unit/skill-inventory-audit.test.d.ts +20 -0
- package/dist/tests/unit/skill-inventory-audit.test.d.ts.map +1 -0
- package/dist/tests/unit/skill-inventory-audit.test.js +299 -0
- package/dist/tests/unit/skill-inventory-audit.test.js.map +1 -0
- package/dist/tests/unit/skill-pack-audit.helpers.test.d.ts +11 -0
- package/dist/tests/unit/skill-pack-audit.helpers.test.d.ts.map +1 -0
- package/dist/tests/unit/skill-pack-audit.helpers.test.js +61 -0
- package/dist/tests/unit/skill-pack-audit.helpers.test.js.map +1 -0
- package/dist/tests/unit/skill-pack-audit.test.js +1 -1
- package/dist/tests/unit/skill-pack-audit.test.js.map +1 -1
- package/dist/tests/unit/suggestion-chain.test.d.ts +17 -0
- package/dist/tests/unit/suggestion-chain.test.d.ts.map +1 -0
- package/dist/tests/unit/suggestion-chain.test.js +191 -0
- package/dist/tests/unit/suggestion-chain.test.js.map +1 -0
- package/dist/tests/webhooks/standalone-shutdown.test.d.ts +12 -0
- package/dist/tests/webhooks/standalone-shutdown.test.d.ts.map +1 -0
- package/dist/tests/webhooks/standalone-shutdown.test.js +91 -0
- package/dist/tests/webhooks/standalone-shutdown.test.js.map +1 -0
- package/package.json +17 -4
- package/server.json +3 -3
- package/src/assets/skills/skillsmith/SKILL.md +109 -80
|
@@ -12,11 +12,13 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import * as fs from 'node:fs';
|
|
14
14
|
import * as path from 'node:path';
|
|
15
|
-
import
|
|
15
|
+
import { resolveClientPath } from '@skillsmith/core/install';
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Resolve the active skills directory from the `SKILLSMITH_CLIENT` env
|
|
18
|
+
* var (defaults to `claude-code` when unset). SMI-4578: computed at call
|
|
19
|
+
* time so a runtime override is picked up.
|
|
18
20
|
*/
|
|
19
|
-
const
|
|
21
|
+
const getDefaultSkillsDir = () => resolveClientPath();
|
|
20
22
|
/**
|
|
21
23
|
* Parse SKILL.md frontmatter to extract skill metadata.
|
|
22
24
|
*
|
|
@@ -114,7 +116,7 @@ export function getSkillIdFromDir(skillDir, dirName) {
|
|
|
114
116
|
* const skills = await getInstalledSkills('/path/to/custom/skills');
|
|
115
117
|
*/
|
|
116
118
|
export async function getInstalledSkills(skillsDir) {
|
|
117
|
-
const dir = skillsDir ||
|
|
119
|
+
const dir = skillsDir || getDefaultSkillsDir();
|
|
118
120
|
// Check if directory exists
|
|
119
121
|
if (!fs.existsSync(dir)) {
|
|
120
122
|
return [];
|
|
@@ -145,7 +147,7 @@ export async function getInstalledSkills(skillsDir) {
|
|
|
145
147
|
* @returns Array of skill IDs
|
|
146
148
|
*/
|
|
147
149
|
export function getInstalledSkillsSync(skillsDir) {
|
|
148
|
-
const dir = skillsDir ||
|
|
150
|
+
const dir = skillsDir || getDefaultSkillsDir();
|
|
149
151
|
// Check if directory exists
|
|
150
152
|
if (!fs.existsSync(dir)) {
|
|
151
153
|
return [];
|
|
@@ -170,7 +172,7 @@ export function getInstalledSkillsSync(skillsDir) {
|
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
export async function getInstalledSkillsDetailed(skillsDir) {
|
|
173
|
-
const dir = skillsDir ||
|
|
175
|
+
const dir = skillsDir || getDefaultSkillsDir();
|
|
174
176
|
// Check if directory exists
|
|
175
177
|
if (!fs.existsSync(dir)) {
|
|
176
178
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installed-skills.js","sourceRoot":"","sources":["../../../src/utils/installed-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"installed-skills.js","sourceRoot":"","sources":["../../../src/utils/installed-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Local-inventory scanner for the consumer namespace audit.
|
|
3
|
+
* @module @skillsmith/mcp-server/utils/local-inventory
|
|
4
|
+
* @see SMI-4587 Wave 1 Step 2 — scan ~/.claude/{skills,commands,agents} +
|
|
5
|
+
* CLAUDE.md trigger phrases into a unified InventoryEntry[].
|
|
6
|
+
*
|
|
7
|
+
* Each source is independent — failure in one does not fail the others.
|
|
8
|
+
* The scanner is read-only; bootstrapping unmanaged skills via `index_local`
|
|
9
|
+
* is wired in a subsequent PR (Step 6a).
|
|
10
|
+
*/
|
|
11
|
+
import type { ScanResult } from './local-inventory.types.js';
|
|
12
|
+
export interface ScanLocalInventoryOptions {
|
|
13
|
+
/** Defaults to `os.homedir()`. */
|
|
14
|
+
homeDir?: string;
|
|
15
|
+
/** Optional project CLAUDE.md to scan in addition to the user one. */
|
|
16
|
+
projectDir?: string;
|
|
17
|
+
/** Override path to `~/.skillsmith/manifest.json`. */
|
|
18
|
+
manifestPath?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Scan `~/.claude/{skills,commands,agents}` and CLAUDE.md trigger phrases.
|
|
22
|
+
*
|
|
23
|
+
* Returns `entries[]` sorted by `kind` then `identifier`, plus any soft
|
|
24
|
+
* `warnings[]` raised during scanning. `durationMs` measures wall-clock
|
|
25
|
+
* time for the whole scan (excluding the optional bootstrap step that
|
|
26
|
+
* lands in a subsequent PR).
|
|
27
|
+
*/
|
|
28
|
+
export declare function scanLocalInventory(opts?: ScanLocalInventoryOptions): Promise<ScanResult>;
|
|
29
|
+
//# sourceMappingURL=local-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-inventory.d.ts","sourceRoot":"","sources":["../../../src/utils/local-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAkB,UAAU,EAAe,MAAM,4BAA4B,CAAA;AAiBzF,MAAM,WAAW,yBAAyB;IACxC,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,UAAU,CAAC,CA+CrB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helpers for the local-inventory scanner (SMI-4587 Wave 1 Step 2).
|
|
3
|
+
* @module @skillsmith/mcp-server/utils/local-inventory.helpers
|
|
4
|
+
*
|
|
5
|
+
* Pure functions extracted to keep `local-inventory.ts` thin. CLAUDE.md
|
|
6
|
+
* regex extraction lives here so the regex behavior can be tested in
|
|
7
|
+
* isolation. Frontmatter helpers wrap the existing `parseYamlFrontmatter`.
|
|
8
|
+
*/
|
|
9
|
+
import type { InventoryEntry, ScanWarning } from './local-inventory.types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Stable warning code catalog. Keep this in sync with the writer; the audit
|
|
12
|
+
* report renders messages keyed off `code`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const WARNING_CODES: {
|
|
15
|
+
readonly TRIGGER_SURFACE_TRUNCATED: "namespace.inventory.trigger_surface_truncated";
|
|
16
|
+
readonly BOOTSTRAP_FAILED: "namespace.inventory.bootstrap_failed";
|
|
17
|
+
readonly CLAUDE_MD_RECALL_LOW: "namespace.inventory.claude_md_recall_low";
|
|
18
|
+
readonly REGEX_EXTRACTION_SKIPPED: "namespace.inventory.regex_extraction_skipped";
|
|
19
|
+
readonly UNMANAGED_SKILL_BOOTSTRAPPED: "namespace.inventory.unmanaged_skill_bootstrapped";
|
|
20
|
+
readonly PARSE_FAILED: "namespace.inventory.parse_failed";
|
|
21
|
+
};
|
|
22
|
+
/** Maximum trigger phrases retained per entry — matches `OverlapDetector.MAX_TRIGGER_PHRASES_PER_SKILL`. */
|
|
23
|
+
export declare const MAX_TRIGGER_PHRASES_PER_SKILL = 50;
|
|
24
|
+
/**
|
|
25
|
+
* Cap an array of trigger phrases at MAX_TRIGGER_PHRASES_PER_SKILL. When
|
|
26
|
+
* truncation occurs, append a warning of code `trigger_surface_truncated`
|
|
27
|
+
* with the dropped count so the user sees it in the audit report.
|
|
28
|
+
*/
|
|
29
|
+
export declare function capTriggerSurface(identifier: string, phrases: string[], warnings: ScanWarning[]): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Split a description into sentence-level trigger phrases. Empty or
|
|
32
|
+
* whitespace-only segments are filtered.
|
|
33
|
+
*/
|
|
34
|
+
export declare function splitDescriptionToPhrases(description: string | undefined): string[];
|
|
35
|
+
/**
|
|
36
|
+
* Read the YAML frontmatter from a `.md` file. Returns `{}` if no
|
|
37
|
+
* frontmatter or the file cannot be parsed.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readFrontmatter(filePath: string): Record<string, unknown>;
|
|
40
|
+
/**
|
|
41
|
+
* Extract the body of a `.md` file (everything after the closing
|
|
42
|
+
* frontmatter delimiter, or the full content if no frontmatter).
|
|
43
|
+
*/
|
|
44
|
+
export declare function readBody(filePath: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Pull the first non-empty line from a body string. Used as the fallback
|
|
47
|
+
* trigger surface for frontmatter-less command files.
|
|
48
|
+
*/
|
|
49
|
+
export declare function firstNonEmptyLine(body: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Stable identifier for a CLAUDE.md trigger line. The identifier doubles as
|
|
52
|
+
* dedup key — two scans of the same line produce the same id. Hashed
|
|
53
|
+
* because the line itself can be long; first 12 hex chars are sufficient.
|
|
54
|
+
*/
|
|
55
|
+
export declare function hashClaudeMdLine(claudeMdPath: string, line: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Best-effort regex extractor for CLAUDE.md trigger phrases.
|
|
58
|
+
*
|
|
59
|
+
* Two patterns are recognized (per Wave 0 spike goal #3):
|
|
60
|
+
*
|
|
61
|
+
* 1. Bullet items under headings matching
|
|
62
|
+
* `/^#{1,3}\s*(Trigger phrases|Use when|Skills)\b/i`. Recall is
|
|
63
|
+
* best-effort — false negatives expected for non-standard heading text.
|
|
64
|
+
* 2. Any line containing the high-confidence marker
|
|
65
|
+
* `<!-- skillsmith:trigger -->`. The full line is captured as a phrase.
|
|
66
|
+
*
|
|
67
|
+
* Returns one `InventoryEntry` per extracted line. Failures (file missing,
|
|
68
|
+
* unparseable) emit a `warnings[]` entry — never throw.
|
|
69
|
+
*/
|
|
70
|
+
export declare function extractClaudeMdTriggers(claudeMdPath: string, warnings: ScanWarning[]): InventoryEntry[];
|
|
71
|
+
/**
|
|
72
|
+
* Resolve `~/.skillsmith/manifest.json` and return the parsed object, or
|
|
73
|
+
* `null` if absent / unreadable. Scanner uses this to populate
|
|
74
|
+
* `entry.meta.author` for installed skills.
|
|
75
|
+
*/
|
|
76
|
+
export declare function loadManifest(manifestPath: string): Record<string, unknown> | null;
|
|
77
|
+
/**
|
|
78
|
+
* Look up an `author` (and `tags`) for a given skill identifier in the
|
|
79
|
+
* manifest. Manifest shape varies — be tolerant: walk the top-level keys
|
|
80
|
+
* and any obvious `skills` array/object.
|
|
81
|
+
*/
|
|
82
|
+
export declare function lookupAuthor(manifest: Record<string, unknown> | null, identifier: string): {
|
|
83
|
+
author?: string;
|
|
84
|
+
tags?: string[];
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Cross-platform mtime read. Returns `undefined` on stat failure rather
|
|
88
|
+
* than throwing — mtime is informational for ordering, not load-bearing.
|
|
89
|
+
*/
|
|
90
|
+
export declare function readMtime(filePath: string): number | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Resolve absolute path joining `dir + filename`. Centralized so future
|
|
93
|
+
* portability work (E-ANTI-1 v2) can swap in a relative-to-home derivation.
|
|
94
|
+
*/
|
|
95
|
+
export declare function joinPath(dir: string, filename: string): string;
|
|
96
|
+
//# sourceMappingURL=local-inventory.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-inventory.helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/local-inventory.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7E;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAA;AAEV,4GAA4G;AAC5G,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,WAAW,EAAE,GACtB,MAAM,EAAE,CAeV;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAQnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,WAAW,EAAE,GACtB,cAAc,EAAE,CAwElB;AAiBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACxC,UAAU,EAAE,MAAM,GACjB;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCtC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helpers for the local-inventory scanner (SMI-4587 Wave 1 Step 2).
|
|
3
|
+
* @module @skillsmith/mcp-server/utils/local-inventory.helpers
|
|
4
|
+
*
|
|
5
|
+
* Pure functions extracted to keep `local-inventory.ts` thin. CLAUDE.md
|
|
6
|
+
* regex extraction lives here so the regex behavior can be tested in
|
|
7
|
+
* isolation. Frontmatter helpers wrap the existing `parseYamlFrontmatter`.
|
|
8
|
+
*/
|
|
9
|
+
import * as crypto from 'node:crypto';
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import { parseYamlFrontmatter } from '../tools/validate.helpers.js';
|
|
13
|
+
/**
|
|
14
|
+
* Stable warning code catalog. Keep this in sync with the writer; the audit
|
|
15
|
+
* report renders messages keyed off `code`.
|
|
16
|
+
*/
|
|
17
|
+
export const WARNING_CODES = {
|
|
18
|
+
TRIGGER_SURFACE_TRUNCATED: 'namespace.inventory.trigger_surface_truncated',
|
|
19
|
+
BOOTSTRAP_FAILED: 'namespace.inventory.bootstrap_failed',
|
|
20
|
+
CLAUDE_MD_RECALL_LOW: 'namespace.inventory.claude_md_recall_low',
|
|
21
|
+
REGEX_EXTRACTION_SKIPPED: 'namespace.inventory.regex_extraction_skipped',
|
|
22
|
+
UNMANAGED_SKILL_BOOTSTRAPPED: 'namespace.inventory.unmanaged_skill_bootstrapped',
|
|
23
|
+
PARSE_FAILED: 'namespace.inventory.parse_failed',
|
|
24
|
+
};
|
|
25
|
+
/** Maximum trigger phrases retained per entry — matches `OverlapDetector.MAX_TRIGGER_PHRASES_PER_SKILL`. */
|
|
26
|
+
export const MAX_TRIGGER_PHRASES_PER_SKILL = 50;
|
|
27
|
+
/**
|
|
28
|
+
* Cap an array of trigger phrases at MAX_TRIGGER_PHRASES_PER_SKILL. When
|
|
29
|
+
* truncation occurs, append a warning of code `trigger_surface_truncated`
|
|
30
|
+
* with the dropped count so the user sees it in the audit report.
|
|
31
|
+
*/
|
|
32
|
+
export function capTriggerSurface(identifier, phrases, warnings) {
|
|
33
|
+
if (phrases.length <= MAX_TRIGGER_PHRASES_PER_SKILL) {
|
|
34
|
+
return phrases;
|
|
35
|
+
}
|
|
36
|
+
warnings.push({
|
|
37
|
+
code: WARNING_CODES.TRIGGER_SURFACE_TRUNCATED,
|
|
38
|
+
message: `triggerSurface for "${identifier}" was capped at ${MAX_TRIGGER_PHRASES_PER_SKILL} phrases (${phrases.length - MAX_TRIGGER_PHRASES_PER_SKILL} dropped)`,
|
|
39
|
+
context: {
|
|
40
|
+
entry_identifier: identifier,
|
|
41
|
+
dropped_count: phrases.length - MAX_TRIGGER_PHRASES_PER_SKILL,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
return phrases.slice(0, MAX_TRIGGER_PHRASES_PER_SKILL);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Split a description into sentence-level trigger phrases. Empty or
|
|
48
|
+
* whitespace-only segments are filtered.
|
|
49
|
+
*/
|
|
50
|
+
export function splitDescriptionToPhrases(description) {
|
|
51
|
+
if (!description)
|
|
52
|
+
return [];
|
|
53
|
+
// Split on sentence terminators; tolerate runs of whitespace and trailing
|
|
54
|
+
// punctuation. Not a strict NLP tokenizer — close-enough for trigger surface.
|
|
55
|
+
return description
|
|
56
|
+
.split(/[.!?\n]+/)
|
|
57
|
+
.map((s) => s.trim())
|
|
58
|
+
.filter((s) => s.length > 0);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Read the YAML frontmatter from a `.md` file. Returns `{}` if no
|
|
62
|
+
* frontmatter or the file cannot be parsed.
|
|
63
|
+
*/
|
|
64
|
+
export function readFrontmatter(filePath) {
|
|
65
|
+
try {
|
|
66
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
67
|
+
return parseYamlFrontmatter(content) ?? {};
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Extract the body of a `.md` file (everything after the closing
|
|
75
|
+
* frontmatter delimiter, or the full content if no frontmatter).
|
|
76
|
+
*/
|
|
77
|
+
export function readBody(filePath) {
|
|
78
|
+
try {
|
|
79
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
80
|
+
if (!content.startsWith('---'))
|
|
81
|
+
return content;
|
|
82
|
+
const end = content.indexOf('---', 3);
|
|
83
|
+
if (end === -1)
|
|
84
|
+
return content;
|
|
85
|
+
return content.slice(end + 3).trimStart();
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Pull the first non-empty line from a body string. Used as the fallback
|
|
93
|
+
* trigger surface for frontmatter-less command files.
|
|
94
|
+
*/
|
|
95
|
+
export function firstNonEmptyLine(body) {
|
|
96
|
+
for (const line of body.split('\n')) {
|
|
97
|
+
const trimmed = line.trim();
|
|
98
|
+
if (trimmed)
|
|
99
|
+
return trimmed;
|
|
100
|
+
}
|
|
101
|
+
return '';
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Stable identifier for a CLAUDE.md trigger line. The identifier doubles as
|
|
105
|
+
* dedup key — two scans of the same line produce the same id. Hashed
|
|
106
|
+
* because the line itself can be long; first 12 hex chars are sufficient.
|
|
107
|
+
*/
|
|
108
|
+
export function hashClaudeMdLine(claudeMdPath, line) {
|
|
109
|
+
const norm = line.trim().toLowerCase();
|
|
110
|
+
const hash = crypto
|
|
111
|
+
.createHash('sha256')
|
|
112
|
+
.update(`${claudeMdPath}:${norm}`)
|
|
113
|
+
.digest('hex')
|
|
114
|
+
.slice(0, 12);
|
|
115
|
+
return `claude_md:${hash}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Best-effort regex extractor for CLAUDE.md trigger phrases.
|
|
119
|
+
*
|
|
120
|
+
* Two patterns are recognized (per Wave 0 spike goal #3):
|
|
121
|
+
*
|
|
122
|
+
* 1. Bullet items under headings matching
|
|
123
|
+
* `/^#{1,3}\s*(Trigger phrases|Use when|Skills)\b/i`. Recall is
|
|
124
|
+
* best-effort — false negatives expected for non-standard heading text.
|
|
125
|
+
* 2. Any line containing the high-confidence marker
|
|
126
|
+
* `<!-- skillsmith:trigger -->`. The full line is captured as a phrase.
|
|
127
|
+
*
|
|
128
|
+
* Returns one `InventoryEntry` per extracted line. Failures (file missing,
|
|
129
|
+
* unparseable) emit a `warnings[]` entry — never throw.
|
|
130
|
+
*/
|
|
131
|
+
export function extractClaudeMdTriggers(claudeMdPath, warnings) {
|
|
132
|
+
let content;
|
|
133
|
+
try {
|
|
134
|
+
content = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Missing file is silent (no CLAUDE.md is a normal state).
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
const entries = [];
|
|
141
|
+
let stat;
|
|
142
|
+
try {
|
|
143
|
+
stat = fs.statSync(claudeMdPath);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
stat = undefined;
|
|
147
|
+
}
|
|
148
|
+
let captureMode = 'idle';
|
|
149
|
+
let lines;
|
|
150
|
+
try {
|
|
151
|
+
lines = content.split('\n');
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
warnings.push({
|
|
155
|
+
code: WARNING_CODES.REGEX_EXTRACTION_SKIPPED,
|
|
156
|
+
message: `CLAUDE.md at ${claudeMdPath} unparseable; trigger-phrase scan skipped`,
|
|
157
|
+
context: { path: claudeMdPath },
|
|
158
|
+
});
|
|
159
|
+
return [];
|
|
160
|
+
}
|
|
161
|
+
// Headings considered as trigger sections. Case-insensitive, allow up to
|
|
162
|
+
// three leading hashes (per spec line 104).
|
|
163
|
+
const headingRe = /^#{1,3}\s*(Trigger phrases|Use when|Skills)\b/i;
|
|
164
|
+
const otherHeadingRe = /^#{1,6}\s+/;
|
|
165
|
+
const bulletRe = /^[-*]\s+(.+)$/;
|
|
166
|
+
const markerRe = /<!--\s*skillsmith:trigger\s*-->/;
|
|
167
|
+
for (const rawLine of lines) {
|
|
168
|
+
const line = rawLine.trim();
|
|
169
|
+
if (markerRe.test(line)) {
|
|
170
|
+
// High-confidence marker line — capture the whole line minus the marker.
|
|
171
|
+
const phrase = line.replace(markerRe, '').trim();
|
|
172
|
+
if (phrase) {
|
|
173
|
+
entries.push(makeClaudeMdEntry(claudeMdPath, phrase, stat?.mtimeMs));
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (headingRe.test(line)) {
|
|
178
|
+
captureMode = 'heading';
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// Reset capture mode on any other heading.
|
|
182
|
+
if (otherHeadingRe.test(line)) {
|
|
183
|
+
captureMode = 'idle';
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (captureMode === 'heading') {
|
|
187
|
+
const m = bulletRe.exec(line);
|
|
188
|
+
if (m && m[1]) {
|
|
189
|
+
const phrase = m[1].trim();
|
|
190
|
+
if (phrase) {
|
|
191
|
+
entries.push(makeClaudeMdEntry(claudeMdPath, phrase, stat?.mtimeMs));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return entries;
|
|
197
|
+
}
|
|
198
|
+
function makeClaudeMdEntry(claudeMdPath, phrase, mtime) {
|
|
199
|
+
return {
|
|
200
|
+
kind: 'claude_md_rule',
|
|
201
|
+
source_path: claudeMdPath,
|
|
202
|
+
identifier: hashClaudeMdLine(claudeMdPath, phrase),
|
|
203
|
+
triggerSurface: [phrase],
|
|
204
|
+
mtime,
|
|
205
|
+
meta: { description: phrase },
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Resolve `~/.skillsmith/manifest.json` and return the parsed object, or
|
|
210
|
+
* `null` if absent / unreadable. Scanner uses this to populate
|
|
211
|
+
* `entry.meta.author` for installed skills.
|
|
212
|
+
*/
|
|
213
|
+
export function loadManifest(manifestPath) {
|
|
214
|
+
try {
|
|
215
|
+
if (!fs.existsSync(manifestPath))
|
|
216
|
+
return null;
|
|
217
|
+
const raw = fs.readFileSync(manifestPath, 'utf-8');
|
|
218
|
+
return JSON.parse(raw);
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return null;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Look up an `author` (and `tags`) for a given skill identifier in the
|
|
226
|
+
* manifest. Manifest shape varies — be tolerant: walk the top-level keys
|
|
227
|
+
* and any obvious `skills` array/object.
|
|
228
|
+
*/
|
|
229
|
+
export function lookupAuthor(manifest, identifier) {
|
|
230
|
+
if (!manifest)
|
|
231
|
+
return {};
|
|
232
|
+
// Many manifest shapes possible; check common ones.
|
|
233
|
+
const skills = (manifest.skills ?? manifest.installed);
|
|
234
|
+
if (Array.isArray(skills)) {
|
|
235
|
+
for (const s of skills) {
|
|
236
|
+
if (s &&
|
|
237
|
+
typeof s === 'object' &&
|
|
238
|
+
(s.id === identifier ||
|
|
239
|
+
s.name === identifier)) {
|
|
240
|
+
const rec = s;
|
|
241
|
+
return {
|
|
242
|
+
author: typeof rec.author === 'string' ? rec.author : undefined,
|
|
243
|
+
tags: Array.isArray(rec.tags) ? rec.tags : undefined,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (skills && typeof skills === 'object') {
|
|
249
|
+
const rec = skills[identifier];
|
|
250
|
+
if (rec && typeof rec === 'object') {
|
|
251
|
+
const r = rec;
|
|
252
|
+
return {
|
|
253
|
+
author: typeof r.author === 'string' ? r.author : undefined,
|
|
254
|
+
tags: Array.isArray(r.tags) ? r.tags : undefined,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return {};
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Cross-platform mtime read. Returns `undefined` on stat failure rather
|
|
262
|
+
* than throwing — mtime is informational for ordering, not load-bearing.
|
|
263
|
+
*/
|
|
264
|
+
export function readMtime(filePath) {
|
|
265
|
+
try {
|
|
266
|
+
return fs.statSync(filePath).mtimeMs;
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Resolve absolute path joining `dir + filename`. Centralized so future
|
|
274
|
+
* portability work (E-ANTI-1 v2) can swap in a relative-to-home derivation.
|
|
275
|
+
*/
|
|
276
|
+
export function joinPath(dir, filename) {
|
|
277
|
+
return path.join(dir, filename);
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=local-inventory.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-inventory.helpers.js","sourceRoot":"","sources":["../../../src/utils/local-inventory.helpers.ts"],"names":[],"mappings":"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"}
|