@skillsmith/cli 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli.js +44039 -0
- package/package.json +21 -11
- package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts +0 -20
- package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts.map +0 -1
- package/dist/src/commands/__meta__/telemetry-coverage.test.js +0 -118
- package/dist/src/commands/__meta__/telemetry-coverage.test.js.map +0 -1
- package/dist/src/commands/ab-test.d.ts +0 -29
- package/dist/src/commands/ab-test.d.ts.map +0 -1
- package/dist/src/commands/ab-test.js +0 -226
- package/dist/src/commands/ab-test.js.map +0 -1
- package/dist/src/commands/ab-test.test.d.ts +0 -7
- package/dist/src/commands/ab-test.test.d.ts.map +0 -1
- package/dist/src/commands/ab-test.test.js +0 -255
- package/dist/src/commands/ab-test.test.js.map +0 -1
- package/dist/src/commands/analyze.d.ts +0 -14
- package/dist/src/commands/analyze.d.ts.map +0 -1
- package/dist/src/commands/analyze.js +0 -191
- package/dist/src/commands/analyze.js.map +0 -1
- package/dist/src/commands/audit-collisions.d.ts +0 -68
- package/dist/src/commands/audit-collisions.d.ts.map +0 -1
- package/dist/src/commands/audit-collisions.js +0 -309
- package/dist/src/commands/audit-collisions.js.map +0 -1
- package/dist/src/commands/audit-sources.action.d.ts +0 -37
- package/dist/src/commands/audit-sources.action.d.ts.map +0 -1
- package/dist/src/commands/audit-sources.action.js +0 -321
- package/dist/src/commands/audit-sources.action.js.map +0 -1
- package/dist/src/commands/audit-sources.d.ts +0 -37
- package/dist/src/commands/audit-sources.d.ts.map +0 -1
- package/dist/src/commands/audit-sources.js +0 -55
- package/dist/src/commands/audit-sources.js.map +0 -1
- package/dist/src/commands/audit-sources.test.d.ts +0 -9
- package/dist/src/commands/audit-sources.test.d.ts.map +0 -1
- package/dist/src/commands/audit-sources.test.js +0 -228
- package/dist/src/commands/audit-sources.test.js.map +0 -1
- package/dist/src/commands/audit.d.ts +0 -40
- package/dist/src/commands/audit.d.ts.map +0 -1
- package/dist/src/commands/audit.js +0 -223
- package/dist/src/commands/audit.js.map +0 -1
- package/dist/src/commands/audit.test.d.ts +0 -8
- package/dist/src/commands/audit.test.d.ts.map +0 -1
- package/dist/src/commands/audit.test.js +0 -97
- package/dist/src/commands/audit.test.js.map +0 -1
- package/dist/src/commands/author/index.d.ts +0 -17
- package/dist/src/commands/author/index.d.ts.map +0 -1
- package/dist/src/commands/author/index.js +0 -21
- package/dist/src/commands/author/index.js.map +0 -1
- package/dist/src/commands/author/init.action.d.ts +0 -29
- package/dist/src/commands/author/init.action.d.ts.map +0 -1
- package/dist/src/commands/author/init.action.js +0 -131
- package/dist/src/commands/author/init.action.js.map +0 -1
- package/dist/src/commands/author/init.d.ts +0 -36
- package/dist/src/commands/author/init.d.ts.map +0 -1
- package/dist/src/commands/author/init.helpers.d.ts +0 -80
- package/dist/src/commands/author/init.helpers.d.ts.map +0 -1
- package/dist/src/commands/author/init.helpers.js +0 -107
- package/dist/src/commands/author/init.helpers.js.map +0 -1
- package/dist/src/commands/author/init.js +0 -320
- package/dist/src/commands/author/init.js.map +0 -1
- package/dist/src/commands/author/mcp-init.d.ts +0 -21
- package/dist/src/commands/author/mcp-init.d.ts.map +0 -1
- package/dist/src/commands/author/mcp-init.js +0 -202
- package/dist/src/commands/author/mcp-init.js.map +0 -1
- package/dist/src/commands/author/subagent.d.ts +0 -23
- package/dist/src/commands/author/subagent.d.ts.map +0 -1
- package/dist/src/commands/author/subagent.js +0 -174
- package/dist/src/commands/author/subagent.js.map +0 -1
- package/dist/src/commands/author/transform.d.ts +0 -23
- package/dist/src/commands/author/transform.d.ts.map +0 -1
- package/dist/src/commands/author/transform.js +0 -149
- package/dist/src/commands/author/transform.js.map +0 -1
- package/dist/src/commands/author/utils.d.ts +0 -27
- package/dist/src/commands/author/utils.d.ts.map +0 -1
- package/dist/src/commands/author/utils.js +0 -118
- package/dist/src/commands/author/utils.js.map +0 -1
- package/dist/src/commands/config.d.ts +0 -57
- package/dist/src/commands/config.d.ts.map +0 -1
- package/dist/src/commands/config.js +0 -226
- package/dist/src/commands/config.js.map +0 -1
- package/dist/src/commands/create.d.ts +0 -43
- package/dist/src/commands/create.d.ts.map +0 -1
- package/dist/src/commands/create.js +0 -336
- package/dist/src/commands/create.js.map +0 -1
- package/dist/src/commands/diff.d.ts +0 -21
- package/dist/src/commands/diff.d.ts.map +0 -1
- package/dist/src/commands/diff.js +0 -227
- package/dist/src/commands/diff.js.map +0 -1
- package/dist/src/commands/diff.test.d.ts +0 -6
- package/dist/src/commands/diff.test.d.ts.map +0 -1
- package/dist/src/commands/diff.test.js +0 -327
- package/dist/src/commands/diff.test.js.map +0 -1
- package/dist/src/commands/import-local.d.ts +0 -28
- package/dist/src/commands/import-local.d.ts.map +0 -1
- package/dist/src/commands/import-local.helpers.d.ts +0 -28
- package/dist/src/commands/import-local.helpers.d.ts.map +0 -1
- package/dist/src/commands/import-local.helpers.js +0 -166
- package/dist/src/commands/import-local.helpers.js.map +0 -1
- package/dist/src/commands/import-local.js +0 -273
- package/dist/src/commands/import-local.js.map +0 -1
- package/dist/src/commands/import-local.types.d.ts +0 -59
- package/dist/src/commands/import-local.types.d.ts.map +0 -1
- package/dist/src/commands/import-local.types.js +0 -2
- package/dist/src/commands/import-local.types.js.map +0 -1
- package/dist/src/commands/import.d.ts +0 -47
- package/dist/src/commands/import.d.ts.map +0 -1
- package/dist/src/commands/import.js +0 -314
- package/dist/src/commands/import.js.map +0 -1
- package/dist/src/commands/index.d.ts +0 -28
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js +0 -50
- package/dist/src/commands/index.js.map +0 -1
- package/dist/src/commands/info.d.ts +0 -19
- package/dist/src/commands/info.d.ts.map +0 -1
- package/dist/src/commands/info.js +0 -110
- package/dist/src/commands/info.js.map +0 -1
- package/dist/src/commands/install-skill.d.ts +0 -16
- package/dist/src/commands/install-skill.d.ts.map +0 -1
- package/dist/src/commands/install-skill.js +0 -155
- package/dist/src/commands/install-skill.js.map +0 -1
- package/dist/src/commands/install.d.ts +0 -34
- package/dist/src/commands/install.d.ts.map +0 -1
- package/dist/src/commands/install.js +0 -311
- package/dist/src/commands/install.js.map +0 -1
- package/dist/src/commands/inventory.action.d.ts +0 -55
- package/dist/src/commands/inventory.action.d.ts.map +0 -1
- package/dist/src/commands/inventory.action.js +0 -179
- package/dist/src/commands/inventory.action.js.map +0 -1
- package/dist/src/commands/inventory.action.test.d.ts +0 -19
- package/dist/src/commands/inventory.action.test.d.ts.map +0 -1
- package/dist/src/commands/inventory.action.test.js +0 -371
- package/dist/src/commands/inventory.action.test.js.map +0 -1
- package/dist/src/commands/inventory.d.ts +0 -21
- package/dist/src/commands/inventory.d.ts.map +0 -1
- package/dist/src/commands/inventory.js +0 -42
- package/dist/src/commands/inventory.js.map +0 -1
- package/dist/src/commands/login.d.ts +0 -7
- package/dist/src/commands/login.d.ts.map +0 -1
- package/dist/src/commands/login.js +0 -323
- package/dist/src/commands/login.js.map +0 -1
- package/dist/src/commands/login.test-helpers.d.ts +0 -7
- package/dist/src/commands/login.test-helpers.d.ts.map +0 -1
- package/dist/src/commands/login.test-helpers.js +0 -44
- package/dist/src/commands/login.test-helpers.js.map +0 -1
- package/dist/src/commands/login.test.d.ts +0 -2
- package/dist/src/commands/login.test.d.ts.map +0 -1
- package/dist/src/commands/login.test.js +0 -387
- package/dist/src/commands/login.test.js.map +0 -1
- package/dist/src/commands/logout.d.ts +0 -15
- package/dist/src/commands/logout.d.ts.map +0 -1
- package/dist/src/commands/logout.js +0 -54
- package/dist/src/commands/logout.js.map +0 -1
- package/dist/src/commands/logout.test.d.ts +0 -8
- package/dist/src/commands/logout.test.d.ts.map +0 -1
- package/dist/src/commands/logout.test.js +0 -137
- package/dist/src/commands/logout.test.js.map +0 -1
- package/dist/src/commands/manage.d.ts +0 -19
- package/dist/src/commands/manage.d.ts.map +0 -1
- package/dist/src/commands/manage.js +0 -346
- package/dist/src/commands/manage.js.map +0 -1
- package/dist/src/commands/merge.d.ts +0 -24
- package/dist/src/commands/merge.d.ts.map +0 -1
- package/dist/src/commands/merge.js +0 -168
- package/dist/src/commands/merge.js.map +0 -1
- package/dist/src/commands/pin.d.ts +0 -26
- package/dist/src/commands/pin.d.ts.map +0 -1
- package/dist/src/commands/pin.js +0 -138
- package/dist/src/commands/pin.js.map +0 -1
- package/dist/src/commands/pin.test.d.ts +0 -6
- package/dist/src/commands/pin.test.d.ts.map +0 -1
- package/dist/src/commands/pin.test.js +0 -206
- package/dist/src/commands/pin.test.js.map +0 -1
- package/dist/src/commands/recommend-scoring.d.ts +0 -29
- package/dist/src/commands/recommend-scoring.d.ts.map +0 -1
- package/dist/src/commands/recommend-scoring.js +0 -141
- package/dist/src/commands/recommend-scoring.js.map +0 -1
- package/dist/src/commands/recommend.d.ts +0 -15
- package/dist/src/commands/recommend.d.ts.map +0 -1
- package/dist/src/commands/recommend.helpers.d.ts +0 -44
- package/dist/src/commands/recommend.helpers.d.ts.map +0 -1
- package/dist/src/commands/recommend.helpers.js +0 -303
- package/dist/src/commands/recommend.helpers.js.map +0 -1
- package/dist/src/commands/recommend.js +0 -198
- package/dist/src/commands/recommend.js.map +0 -1
- package/dist/src/commands/recommend.types.d.ts +0 -66
- package/dist/src/commands/recommend.types.d.ts.map +0 -1
- package/dist/src/commands/recommend.types.js +0 -14
- package/dist/src/commands/recommend.types.js.map +0 -1
- package/dist/src/commands/run-registry-sync.d.ts +0 -31
- package/dist/src/commands/run-registry-sync.d.ts.map +0 -1
- package/dist/src/commands/run-registry-sync.js +0 -45
- package/dist/src/commands/run-registry-sync.js.map +0 -1
- package/dist/src/commands/search-formatters.d.ts +0 -36
- package/dist/src/commands/search-formatters.d.ts.map +0 -1
- package/dist/src/commands/search-formatters.js +0 -132
- package/dist/src/commands/search-formatters.js.map +0 -1
- package/dist/src/commands/search-types.d.ts +0 -46
- package/dist/src/commands/search-types.d.ts.map +0 -1
- package/dist/src/commands/search-types.js +0 -12
- package/dist/src/commands/search-types.js.map +0 -1
- package/dist/src/commands/search.action.d.ts +0 -16
- package/dist/src/commands/search.action.d.ts.map +0 -1
- package/dist/src/commands/search.action.js +0 -384
- package/dist/src/commands/search.action.js.map +0 -1
- package/dist/src/commands/search.d.ts +0 -18
- package/dist/src/commands/search.d.ts.map +0 -1
- package/dist/src/commands/search.helpers.d.ts +0 -52
- package/dist/src/commands/search.helpers.d.ts.map +0 -1
- package/dist/src/commands/search.helpers.js +0 -95
- package/dist/src/commands/search.helpers.js.map +0 -1
- package/dist/src/commands/search.js +0 -48
- package/dist/src/commands/search.js.map +0 -1
- package/dist/src/commands/search.test.d.ts +0 -10
- package/dist/src/commands/search.test.d.ts.map +0 -1
- package/dist/src/commands/search.test.js +0 -179
- package/dist/src/commands/search.test.js.map +0 -1
- package/dist/src/commands/sync.action.d.ts +0 -39
- package/dist/src/commands/sync.action.d.ts.map +0 -1
- package/dist/src/commands/sync.action.js +0 -353
- package/dist/src/commands/sync.action.js.map +0 -1
- package/dist/src/commands/sync.d.ts +0 -24
- package/dist/src/commands/sync.d.ts.map +0 -1
- package/dist/src/commands/sync.helpers.d.ts +0 -55
- package/dist/src/commands/sync.helpers.d.ts.map +0 -1
- package/dist/src/commands/sync.helpers.js +0 -90
- package/dist/src/commands/sync.helpers.js.map +0 -1
- package/dist/src/commands/sync.js +0 -101
- package/dist/src/commands/sync.js.map +0 -1
- package/dist/src/commands/telemetry.action.d.ts +0 -38
- package/dist/src/commands/telemetry.action.d.ts.map +0 -1
- package/dist/src/commands/telemetry.action.js +0 -350
- package/dist/src/commands/telemetry.action.js.map +0 -1
- package/dist/src/commands/telemetry.d.ts +0 -30
- package/dist/src/commands/telemetry.d.ts.map +0 -1
- package/dist/src/commands/telemetry.helpers.d.ts +0 -58
- package/dist/src/commands/telemetry.helpers.d.ts.map +0 -1
- package/dist/src/commands/telemetry.helpers.js +0 -173
- package/dist/src/commands/telemetry.helpers.js.map +0 -1
- package/dist/src/commands/telemetry.helpers.test.d.ts +0 -15
- package/dist/src/commands/telemetry.helpers.test.d.ts.map +0 -1
- package/dist/src/commands/telemetry.helpers.test.js +0 -240
- package/dist/src/commands/telemetry.helpers.test.js.map +0 -1
- package/dist/src/commands/telemetry.js +0 -65
- package/dist/src/commands/telemetry.js.map +0 -1
- package/dist/src/commands/telemetry.test.d.ts +0 -18
- package/dist/src/commands/telemetry.test.d.ts.map +0 -1
- package/dist/src/commands/telemetry.test.js +0 -401
- package/dist/src/commands/telemetry.test.js.map +0 -1
- package/dist/src/commands/whoami.d.ts +0 -15
- package/dist/src/commands/whoami.d.ts.map +0 -1
- package/dist/src/commands/whoami.js +0 -55
- package/dist/src/commands/whoami.js.map +0 -1
- package/dist/src/commands/whoami.test.d.ts +0 -8
- package/dist/src/commands/whoami.test.d.ts.map +0 -1
- package/dist/src/commands/whoami.test.js +0 -133
- package/dist/src/commands/whoami.test.js.map +0 -1
- package/dist/src/config.d.ts +0 -29
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -34
- package/dist/src/config.js.map +0 -1
- package/dist/src/index.d.ts +0 -22
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -117
- package/dist/src/index.js.map +0 -1
- package/dist/src/templates/changelog.md.template.d.ts +0 -8
- package/dist/src/templates/changelog.md.template.d.ts.map +0 -1
- package/dist/src/templates/changelog.md.template.js +0 -19
- package/dist/src/templates/changelog.md.template.js.map +0 -1
- package/dist/src/templates/index.d.ts +0 -11
- package/dist/src/templates/index.d.ts.map +0 -1
- package/dist/src/templates/index.js +0 -11
- package/dist/src/templates/index.js.map +0 -1
- package/dist/src/templates/mcp-server.template.d.ts +0 -82
- package/dist/src/templates/mcp-server.template.d.ts.map +0 -1
- package/dist/src/templates/mcp-server.template.js +0 -430
- package/dist/src/templates/mcp-server.template.js.map +0 -1
- package/dist/src/templates/mcp-server.template.snippets.d.ts +0 -51
- package/dist/src/templates/mcp-server.template.snippets.d.ts.map +0 -1
- package/dist/src/templates/mcp-server.template.snippets.js +0 -162
- package/dist/src/templates/mcp-server.template.snippets.js.map +0 -1
- package/dist/src/templates/mcp-template-handlers.d.ts +0 -33
- package/dist/src/templates/mcp-template-handlers.d.ts.map +0 -1
- package/dist/src/templates/mcp-template-handlers.js +0 -106
- package/dist/src/templates/mcp-template-handlers.js.map +0 -1
- package/dist/src/templates/mcp-template-types.d.ts +0 -48
- package/dist/src/templates/mcp-template-types.d.ts.map +0 -1
- package/dist/src/templates/mcp-template-types.js +0 -18
- package/dist/src/templates/mcp-template-types.js.map +0 -1
- package/dist/src/templates/readme.md.template.d.ts +0 -8
- package/dist/src/templates/readme.md.template.d.ts.map +0 -1
- package/dist/src/templates/readme.md.template.js +0 -86
- package/dist/src/templates/readme.md.template.js.map +0 -1
- package/dist/src/templates/skill.md.template.d.ts +0 -8
- package/dist/src/templates/skill.md.template.d.ts.map +0 -1
- package/dist/src/templates/skill.md.template.js +0 -97
- package/dist/src/templates/skill.md.template.js.map +0 -1
- package/dist/src/templates/subagent.md.template.d.ts +0 -38
- package/dist/src/templates/subagent.md.template.d.ts.map +0 -1
- package/dist/src/templates/subagent.md.template.js +0 -128
- package/dist/src/templates/subagent.md.template.js.map +0 -1
- package/dist/src/utils/errors.d.ts +0 -52
- package/dist/src/utils/errors.d.ts.map +0 -1
- package/dist/src/utils/errors.js +0 -58
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/formatters.d.ts +0 -39
- package/dist/src/utils/formatters.d.ts.map +0 -1
- package/dist/src/utils/formatters.js +0 -69
- package/dist/src/utils/formatters.js.map +0 -1
- package/dist/src/utils/license-types.d.ts +0 -88
- package/dist/src/utils/license-types.d.ts.map +0 -1
- package/dist/src/utils/license-types.js +0 -60
- package/dist/src/utils/license-types.js.map +0 -1
- package/dist/src/utils/license-validation.d.ts +0 -61
- package/dist/src/utils/license-validation.d.ts.map +0 -1
- package/dist/src/utils/license-validation.js +0 -198
- package/dist/src/utils/license-validation.js.map +0 -1
- package/dist/src/utils/license.d.ts +0 -56
- package/dist/src/utils/license.d.ts.map +0 -1
- package/dist/src/utils/license.js +0 -163
- package/dist/src/utils/license.js.map +0 -1
- package/dist/src/utils/license.test.d.ts +0 -7
- package/dist/src/utils/license.test.d.ts.map +0 -1
- package/dist/src/utils/license.test.js +0 -308
- package/dist/src/utils/license.test.js.map +0 -1
- package/dist/src/utils/manifest.d.ts +0 -121
- package/dist/src/utils/manifest.d.ts.map +0 -1
- package/dist/src/utils/manifest.js +0 -133
- package/dist/src/utils/manifest.js.map +0 -1
- package/dist/src/utils/manifest.test.d.ts +0 -20
- package/dist/src/utils/manifest.test.d.ts.map +0 -1
- package/dist/src/utils/manifest.test.js +0 -344
- package/dist/src/utils/manifest.test.js.map +0 -1
- package/dist/src/utils/node-version.d.ts +0 -41
- package/dist/src/utils/node-version.d.ts.map +0 -1
- package/dist/src/utils/node-version.js +0 -123
- package/dist/src/utils/node-version.js.map +0 -1
- package/dist/src/utils/open-database.d.ts +0 -35
- package/dist/src/utils/open-database.d.ts.map +0 -1
- package/dist/src/utils/open-database.js +0 -73
- package/dist/src/utils/open-database.js.map +0 -1
- package/dist/src/utils/require-tier.d.ts +0 -38
- package/dist/src/utils/require-tier.d.ts.map +0 -1
- package/dist/src/utils/require-tier.js +0 -74
- package/dist/src/utils/require-tier.js.map +0 -1
- package/dist/src/utils/sanitize.d.ts +0 -30
- package/dist/src/utils/sanitize.d.ts.map +0 -1
- package/dist/src/utils/sanitize.js +0 -45
- package/dist/src/utils/sanitize.js.map +0 -1
- package/dist/src/utils/skill-name.d.ts +0 -19
- package/dist/src/utils/skill-name.d.ts.map +0 -1
- package/dist/src/utils/skill-name.js +0 -26
- package/dist/src/utils/skill-name.js.map +0 -1
- package/dist/src/utils/skills-directory.d.ts +0 -95
- package/dist/src/utils/skills-directory.d.ts.map +0 -1
- package/dist/src/utils/skills-directory.js +0 -285
- package/dist/src/utils/skills-directory.js.map +0 -1
- package/dist/src/utils/startup-header-gate.d.ts +0 -29
- package/dist/src/utils/startup-header-gate.d.ts.map +0 -1
- package/dist/src/utils/startup-header-gate.js +0 -44
- package/dist/src/utils/startup-header-gate.js.map +0 -1
- package/dist/src/utils/startup-header-gate.test.d.ts +0 -2
- package/dist/src/utils/startup-header-gate.test.d.ts.map +0 -1
- package/dist/src/utils/startup-header-gate.test.js +0 -46
- package/dist/src/utils/startup-header-gate.test.js.map +0 -1
- package/dist/src/utils/tool-analyzer.d.ts +0 -54
- package/dist/src/utils/tool-analyzer.d.ts.map +0 -1
- package/dist/src/utils/tool-analyzer.js +0 -156
- package/dist/src/utils/tool-analyzer.js.map +0 -1
- package/dist/src/version.d.ts +0 -2
- package/dist/src/version.d.ts.map +0 -1
- package/dist/src/version.js +0 -24
- package/dist/src/version.js.map +0 -1
- package/dist/tests/audit-collisions.test.d.ts +0 -42
- package/dist/tests/audit-collisions.test.d.ts.map +0 -1
- package/dist/tests/audit-collisions.test.js +0 -370
- package/dist/tests/audit-collisions.test.js.map +0 -1
- package/dist/tests/audit-restructure.test.d.ts +0 -15
- package/dist/tests/audit-restructure.test.d.ts.map +0 -1
- package/dist/tests/audit-restructure.test.js +0 -151
- package/dist/tests/audit-restructure.test.js.map +0 -1
- package/dist/tests/author.test.d.ts +0 -5
- package/dist/tests/author.test.d.ts.map +0 -1
- package/dist/tests/author.test.js +0 -653
- package/dist/tests/author.test.js.map +0 -1
- package/dist/tests/config.test.d.ts +0 -33
- package/dist/tests/config.test.d.ts.map +0 -1
- package/dist/tests/config.test.js +0 -240
- package/dist/tests/config.test.js.map +0 -1
- package/dist/tests/create.test.d.ts +0 -5
- package/dist/tests/create.test.d.ts.map +0 -1
- package/dist/tests/create.test.js +0 -449
- package/dist/tests/create.test.js.map +0 -1
- package/dist/tests/e2e/audit-sources-affix.test.d.ts +0 -11
- package/dist/tests/e2e/audit-sources-affix.test.d.ts.map +0 -1
- package/dist/tests/e2e/audit-sources-affix.test.js +0 -121
- package/dist/tests/e2e/audit-sources-affix.test.js.map +0 -1
- package/dist/tests/e2e/audit-sources-apply.test.d.ts +0 -13
- package/dist/tests/e2e/audit-sources-apply.test.d.ts.map +0 -1
- package/dist/tests/e2e/audit-sources-apply.test.js +0 -166
- package/dist/tests/e2e/audit-sources-apply.test.js.map +0 -1
- package/dist/tests/e2e/audit-sources-recovery.test.d.ts +0 -15
- package/dist/tests/e2e/audit-sources-recovery.test.d.ts.map +0 -1
- package/dist/tests/e2e/audit-sources-recovery.test.js +0 -179
- package/dist/tests/e2e/audit-sources-recovery.test.js.map +0 -1
- package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts +0 -23
- package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts.map +0 -1
- package/dist/tests/e2e/audit-sources-roundtrip.test.js +0 -139
- package/dist/tests/e2e/audit-sources-roundtrip.test.js.map +0 -1
- package/dist/tests/e2e/author.e2e.test.d.ts +0 -9
- package/dist/tests/e2e/author.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/author.e2e.test.js +0 -666
- package/dist/tests/e2e/author.e2e.test.js.map +0 -1
- package/dist/tests/e2e/import.e2e.test.d.ts +0 -10
- package/dist/tests/e2e/import.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/import.e2e.test.js +0 -213
- package/dist/tests/e2e/import.e2e.test.js.map +0 -1
- package/dist/tests/e2e/manage.e2e.test.d.ts +0 -9
- package/dist/tests/e2e/manage.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/manage.e2e.test.js +0 -277
- package/dist/tests/e2e/manage.e2e.test.js.map +0 -1
- package/dist/tests/e2e/search.e2e.test.d.ts +0 -10
- package/dist/tests/e2e/search.e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/search.e2e.test.js +0 -324
- package/dist/tests/e2e/search.e2e.test.js.map +0 -1
- package/dist/tests/e2e/test-config.d.ts +0 -39
- package/dist/tests/e2e/test-config.d.ts.map +0 -1
- package/dist/tests/e2e/test-config.js +0 -44
- package/dist/tests/e2e/test-config.js.map +0 -1
- package/dist/tests/e2e/utils/baseline-collector.d.ts +0 -107
- package/dist/tests/e2e/utils/baseline-collector.d.ts.map +0 -1
- package/dist/tests/e2e/utils/baseline-collector.js +0 -211
- package/dist/tests/e2e/utils/baseline-collector.js.map +0 -1
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts +0 -46
- package/dist/tests/e2e/utils/hardcoded-detector.d.ts.map +0 -1
- package/dist/tests/e2e/utils/hardcoded-detector.js +0 -238
- package/dist/tests/e2e/utils/hardcoded-detector.js.map +0 -1
- package/dist/tests/e2e/utils/index.d.ts +0 -12
- package/dist/tests/e2e/utils/index.d.ts.map +0 -1
- package/dist/tests/e2e/utils/index.js +0 -12
- package/dist/tests/e2e/utils/index.js.map +0 -1
- package/dist/tests/e2e/utils/linear-reporter.d.ts +0 -60
- package/dist/tests/e2e/utils/linear-reporter.d.ts.map +0 -1
- package/dist/tests/e2e/utils/linear-reporter.js +0 -223
- package/dist/tests/e2e/utils/linear-reporter.js.map +0 -1
- package/dist/tests/e2e/utils/mock-github.d.ts +0 -23
- package/dist/tests/e2e/utils/mock-github.d.ts.map +0 -1
- package/dist/tests/e2e/utils/mock-github.js +0 -60
- package/dist/tests/e2e/utils/mock-github.js.map +0 -1
- package/dist/tests/e2e/utils/mock-prompts.d.ts +0 -19
- package/dist/tests/e2e/utils/mock-prompts.d.ts.map +0 -1
- package/dist/tests/e2e/utils/mock-prompts.js +0 -48
- package/dist/tests/e2e/utils/mock-prompts.js.map +0 -1
- package/dist/tests/e2e/utils/source-recovery-fixture.d.ts +0 -49
- package/dist/tests/e2e/utils/source-recovery-fixture.d.ts.map +0 -1
- package/dist/tests/e2e/utils/source-recovery-fixture.js +0 -106
- package/dist/tests/e2e/utils/source-recovery-fixture.js.map +0 -1
- package/dist/tests/embedding-probe-stdio.test.d.ts +0 -11
- package/dist/tests/embedding-probe-stdio.test.d.ts.map +0 -1
- package/dist/tests/embedding-probe-stdio.test.js +0 -58
- package/dist/tests/embedding-probe-stdio.test.js.map +0 -1
- package/dist/tests/import.test.d.ts +0 -5
- package/dist/tests/import.test.d.ts.map +0 -1
- package/dist/tests/import.test.js +0 -11
- package/dist/tests/import.test.js.map +0 -1
- package/dist/tests/init.test.d.ts +0 -30
- package/dist/tests/init.test.d.ts.map +0 -1
- package/dist/tests/init.test.js +0 -357
- package/dist/tests/init.test.js.map +0 -1
- package/dist/tests/install-multi-client.test.d.ts +0 -2
- package/dist/tests/install-multi-client.test.d.ts.map +0 -1
- package/dist/tests/install-multi-client.test.js +0 -202
- package/dist/tests/install-multi-client.test.js.map +0 -1
- package/dist/tests/install-quarantine.test.d.ts +0 -10
- package/dist/tests/install-quarantine.test.d.ts.map +0 -1
- package/dist/tests/install-quarantine.test.js +0 -86
- package/dist/tests/install-quarantine.test.js.map +0 -1
- package/dist/tests/install-skill.test.d.ts +0 -8
- package/dist/tests/install-skill.test.d.ts.map +0 -1
- package/dist/tests/install-skill.test.js +0 -414
- package/dist/tests/install-skill.test.js.map +0 -1
- package/dist/tests/integration/import-local.test.d.ts +0 -2
- package/dist/tests/integration/import-local.test.d.ts.map +0 -1
- package/dist/tests/integration/import-local.test.js +0 -158
- package/dist/tests/integration/import-local.test.js.map +0 -1
- package/dist/tests/license-validation.test.d.ts +0 -8
- package/dist/tests/license-validation.test.d.ts.map +0 -1
- package/dist/tests/license-validation.test.js +0 -186
- package/dist/tests/license-validation.test.js.map +0 -1
- package/dist/tests/manage.test.d.ts +0 -5
- package/dist/tests/manage.test.d.ts.map +0 -1
- package/dist/tests/manage.test.js +0 -495
- package/dist/tests/manage.test.js.map +0 -1
- package/dist/tests/mcp-server-template.test.d.ts +0 -7
- package/dist/tests/mcp-server-template.test.d.ts.map +0 -1
- package/dist/tests/mcp-server-template.test.js +0 -372
- package/dist/tests/mcp-server-template.test.js.map +0 -1
- package/dist/tests/node-version.test.d.ts +0 -8
- package/dist/tests/node-version.test.d.ts.map +0 -1
- package/dist/tests/node-version.test.js +0 -200
- package/dist/tests/node-version.test.js.map +0 -1
- package/dist/tests/open-database.test.d.ts +0 -2
- package/dist/tests/open-database.test.d.ts.map +0 -1
- package/dist/tests/open-database.test.js +0 -77
- package/dist/tests/open-database.test.js.map +0 -1
- package/dist/tests/recommend-helpers.test.d.ts +0 -9
- package/dist/tests/recommend-helpers.test.d.ts.map +0 -1
- package/dist/tests/recommend-helpers.test.js +0 -308
- package/dist/tests/recommend-helpers.test.js.map +0 -1
- package/dist/tests/recommend-scoring.test.d.ts +0 -8
- package/dist/tests/recommend-scoring.test.d.ts.map +0 -1
- package/dist/tests/recommend-scoring.test.js +0 -184
- package/dist/tests/recommend-scoring.test.js.map +0 -1
- package/dist/tests/recommend.errors.test.d.ts +0 -8
- package/dist/tests/recommend.errors.test.d.ts.map +0 -1
- package/dist/tests/recommend.errors.test.js +0 -232
- package/dist/tests/recommend.errors.test.js.map +0 -1
- package/dist/tests/recommend.filters.test.d.ts +0 -9
- package/dist/tests/recommend.filters.test.d.ts.map +0 -1
- package/dist/tests/recommend.filters.test.js +0 -235
- package/dist/tests/recommend.filters.test.js.map +0 -1
- package/dist/tests/recommend.test-helpers.d.ts +0 -66
- package/dist/tests/recommend.test-helpers.d.ts.map +0 -1
- package/dist/tests/recommend.test-helpers.js +0 -79
- package/dist/tests/recommend.test-helpers.js.map +0 -1
- package/dist/tests/recommend.test.d.ts +0 -11
- package/dist/tests/recommend.test.d.ts.map +0 -1
- package/dist/tests/recommend.test.js +0 -320
- package/dist/tests/recommend.test.js.map +0 -1
- package/dist/tests/search-helpers.test.d.ts +0 -2
- package/dist/tests/search-helpers.test.d.ts.map +0 -1
- package/dist/tests/search-helpers.test.js +0 -110
- package/dist/tests/search-helpers.test.js.map +0 -1
- package/dist/tests/search.test.d.ts +0 -5
- package/dist/tests/search.test.d.ts.map +0 -1
- package/dist/tests/search.test.js +0 -91
- package/dist/tests/search.test.js.map +0 -1
- package/dist/tests/skills-directory-per-harness.test.d.ts +0 -2
- package/dist/tests/skills-directory-per-harness.test.d.ts.map +0 -1
- package/dist/tests/skills-directory-per-harness.test.js +0 -116
- package/dist/tests/skills-directory-per-harness.test.js.map +0 -1
- package/dist/tests/skills-directory.test.d.ts +0 -2
- package/dist/tests/skills-directory.test.d.ts.map +0 -1
- package/dist/tests/skills-directory.test.js +0 -108
- package/dist/tests/skills-directory.test.js.map +0 -1
- package/dist/tests/sync.auth-ux.test.d.ts +0 -14
- package/dist/tests/sync.auth-ux.test.d.ts.map +0 -1
- package/dist/tests/sync.auth-ux.test.js +0 -148
- package/dist/tests/sync.auth-ux.test.js.map +0 -1
- package/dist/tests/tool-analyzer.test.d.ts +0 -8
- package/dist/tests/tool-analyzer.test.d.ts.map +0 -1
- package/dist/tests/tool-analyzer.test.js +0 -149
- package/dist/tests/tool-analyzer.test.js.map +0 -1
- package/dist/tests/unit/commands/install.test.d.ts +0 -7
- package/dist/tests/unit/commands/install.test.d.ts.map +0 -1
- package/dist/tests/unit/commands/install.test.js +0 -482
- package/dist/tests/unit/commands/install.test.js.map +0 -1
- package/dist/tests/unit/import-local.helpers.test.d.ts +0 -2
- package/dist/tests/unit/import-local.helpers.test.d.ts.map +0 -1
- package/dist/tests/unit/import-local.helpers.test.js +0 -96
- package/dist/tests/unit/import-local.helpers.test.js.map +0 -1
package/dist/src/utils/errors.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SMI-4314: Typed CLI error classes.
|
|
3
|
-
*
|
|
4
|
-
* Library-style command implementations (e.g. `initSkill`) must not call
|
|
5
|
-
* `process.exit` directly. Instead, they throw a typed error carrying the
|
|
6
|
-
* user-facing message and intended exit code. The command-action wrapper
|
|
7
|
-
* catches the typed error, prints the message exactly once, and exits with
|
|
8
|
-
* the requested code. Any other thrown `Error` is treated as an unexpected
|
|
9
|
-
* bug and routed through `sanitizeError` with exit code 1.
|
|
10
|
-
*
|
|
11
|
-
* Keeping the process.exit layer inside the wrapper — rather than inside the
|
|
12
|
-
* library function — prevents the "double-error-print" hazard that
|
|
13
|
-
* `init.helpers.ts` previously had to work around, and lets tests assert on
|
|
14
|
-
* `rejects.toBeInstanceOf(InitSkillError)` instead of monkey-patching
|
|
15
|
-
* `process.exit`.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* Error thrown by `initSkill` (and related author-init helpers) when an
|
|
19
|
-
* expected user-facing failure occurs — e.g. invalid skill name, invalid
|
|
20
|
-
* category, or filesystem setup failure.
|
|
21
|
-
*
|
|
22
|
-
* The `message` is intended to be user-facing: it is printed to stderr by
|
|
23
|
-
* the command-action wrapper and already carries any ANSI styling from the
|
|
24
|
-
* call site (e.g. `chalk.red(...)`). Callers should therefore not re-wrap
|
|
25
|
-
* the message with another `chalk.red`/"Error:" prefix.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* throw new InitSkillError(chalk.red(`Invalid skill name: ${name}`))
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* try {
|
|
32
|
-
* await initSkill(name, targetPath, opts)
|
|
33
|
-
* } catch (err) {
|
|
34
|
-
* if (err instanceof InitSkillError) {
|
|
35
|
-
* console.error(err.message)
|
|
36
|
-
* process.exit(err.exitCode)
|
|
37
|
-
* }
|
|
38
|
-
* // fall through to generic handling
|
|
39
|
-
* }
|
|
40
|
-
*/
|
|
41
|
-
export class InitSkillError extends Error {
|
|
42
|
-
/**
|
|
43
|
-
* Process exit code to use when this error reaches the command wrapper.
|
|
44
|
-
* Defaults to 1 (generic failure). Use other codes only when the caller
|
|
45
|
-
* needs to distinguish failure modes in scripted contexts.
|
|
46
|
-
*/
|
|
47
|
-
exitCode;
|
|
48
|
-
constructor(message, exitCode = 1, options) {
|
|
49
|
-
super(message, options);
|
|
50
|
-
this.name = 'InitSkillError';
|
|
51
|
-
this.exitCode = exitCode;
|
|
52
|
-
// Preserve `instanceof` across the transpiled class boundary. Without
|
|
53
|
-
// this, `err instanceof InitSkillError` can be false in some CJS/ESM
|
|
54
|
-
// interop scenarios.
|
|
55
|
-
Object.setPrototypeOf(this, InitSkillError.prototype);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;;;;OAIG;IACa,QAAQ,CAAQ;IAEhC,YAAY,OAAe,EAAE,WAAmB,CAAC,EAAE,OAA6B;QAC9E,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,sEAAsE;QACtE,qEAAqE;QACrE,qBAAqB;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;IACvD,CAAC;CACF"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Formatting Utilities
|
|
3
|
-
*
|
|
4
|
-
* Common formatting functions for CLI output including durations,
|
|
5
|
-
* dates, and time intervals.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Format a duration in milliseconds to a human-readable string.
|
|
9
|
-
*
|
|
10
|
-
* @param ms - Duration in milliseconds
|
|
11
|
-
* @returns Formatted string (e.g., "500ms", "2.5s", "1.5m")
|
|
12
|
-
* @example
|
|
13
|
-
* formatDuration(500) // "500ms"
|
|
14
|
-
* formatDuration(2500) // "2.5s"
|
|
15
|
-
* formatDuration(90000) // "1.5m"
|
|
16
|
-
*/
|
|
17
|
-
export declare function formatDuration(ms: number): string;
|
|
18
|
-
/**
|
|
19
|
-
* Format an ISO date string for display.
|
|
20
|
-
*
|
|
21
|
-
* @param isoString - ISO 8601 date string or null
|
|
22
|
-
* @returns Formatted locale string or "Never" if null
|
|
23
|
-
* @example
|
|
24
|
-
* formatDate("2024-01-15T10:30:00Z") // "1/15/2024, 10:30:00 AM"
|
|
25
|
-
* formatDate(null) // "Never" (dimmed)
|
|
26
|
-
*/
|
|
27
|
-
export declare function formatDate(isoString: string | null): string;
|
|
28
|
-
/**
|
|
29
|
-
* Format the time remaining until a target date.
|
|
30
|
-
*
|
|
31
|
-
* @param isoString - ISO 8601 target date string or null
|
|
32
|
-
* @returns Human-readable time remaining (e.g., "2h 30m", "1d 5h")
|
|
33
|
-
* @example
|
|
34
|
-
* formatTimeUntil("2024-01-15T12:00:00Z") // "2h 30m" (if ~2.5h away)
|
|
35
|
-
* formatTimeUntil(null) // "N/A" (dimmed)
|
|
36
|
-
* formatTimeUntil(pastDate) // "Due now" (yellow)
|
|
37
|
-
*/
|
|
38
|
-
export declare function formatTimeUntil(isoString: string | null): string;
|
|
39
|
-
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAmBhE"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Formatting Utilities
|
|
3
|
-
*
|
|
4
|
-
* Common formatting functions for CLI output including durations,
|
|
5
|
-
* dates, and time intervals.
|
|
6
|
-
*/
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
/**
|
|
9
|
-
* Format a duration in milliseconds to a human-readable string.
|
|
10
|
-
*
|
|
11
|
-
* @param ms - Duration in milliseconds
|
|
12
|
-
* @returns Formatted string (e.g., "500ms", "2.5s", "1.5m")
|
|
13
|
-
* @example
|
|
14
|
-
* formatDuration(500) // "500ms"
|
|
15
|
-
* formatDuration(2500) // "2.5s"
|
|
16
|
-
* formatDuration(90000) // "1.5m"
|
|
17
|
-
*/
|
|
18
|
-
export function formatDuration(ms) {
|
|
19
|
-
if (ms < 1000)
|
|
20
|
-
return `${ms}ms`;
|
|
21
|
-
if (ms < 60000)
|
|
22
|
-
return `${(ms / 1000).toFixed(1)}s`;
|
|
23
|
-
return `${(ms / 60000).toFixed(1)}m`;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Format an ISO date string for display.
|
|
27
|
-
*
|
|
28
|
-
* @param isoString - ISO 8601 date string or null
|
|
29
|
-
* @returns Formatted locale string or "Never" if null
|
|
30
|
-
* @example
|
|
31
|
-
* formatDate("2024-01-15T10:30:00Z") // "1/15/2024, 10:30:00 AM"
|
|
32
|
-
* formatDate(null) // "Never" (dimmed)
|
|
33
|
-
*/
|
|
34
|
-
export function formatDate(isoString) {
|
|
35
|
-
if (!isoString)
|
|
36
|
-
return chalk.dim('Never');
|
|
37
|
-
const date = new Date(isoString);
|
|
38
|
-
return date.toLocaleString();
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Format the time remaining until a target date.
|
|
42
|
-
*
|
|
43
|
-
* @param isoString - ISO 8601 target date string or null
|
|
44
|
-
* @returns Human-readable time remaining (e.g., "2h 30m", "1d 5h")
|
|
45
|
-
* @example
|
|
46
|
-
* formatTimeUntil("2024-01-15T12:00:00Z") // "2h 30m" (if ~2.5h away)
|
|
47
|
-
* formatTimeUntil(null) // "N/A" (dimmed)
|
|
48
|
-
* formatTimeUntil(pastDate) // "Due now" (yellow)
|
|
49
|
-
*/
|
|
50
|
-
export function formatTimeUntil(isoString) {
|
|
51
|
-
if (!isoString)
|
|
52
|
-
return chalk.dim('N/A');
|
|
53
|
-
const target = new Date(isoString);
|
|
54
|
-
const now = new Date();
|
|
55
|
-
const diffMs = target.getTime() - now.getTime();
|
|
56
|
-
if (diffMs <= 0)
|
|
57
|
-
return chalk.yellow('Due now');
|
|
58
|
-
const hours = Math.floor(diffMs / 3600000);
|
|
59
|
-
const minutes = Math.floor((diffMs % 3600000) / 60000);
|
|
60
|
-
if (hours > 24) {
|
|
61
|
-
const days = Math.floor(hours / 24);
|
|
62
|
-
return `${days}d ${hours % 24}h`;
|
|
63
|
-
}
|
|
64
|
-
if (hours > 0) {
|
|
65
|
-
return `${hours}h ${minutes}m`;
|
|
66
|
-
}
|
|
67
|
-
return `${minutes}m`;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=formatters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAA;IAC/B,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACnD,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,SAAwB;IACjD,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,SAAwB;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;IAE/C,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;IAEtD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA;QACnC,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,GAAG,CAAA;IAClC,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAA;IAChC,CAAC;IACD,OAAO,GAAG,OAAO,GAAG,CAAA;AACtB,CAAC"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* License Types for Skillsmith CLI
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for license validation and display.
|
|
5
|
-
*
|
|
6
|
-
* @module @skillsmith/cli/utils/license-types
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Available license tiers
|
|
10
|
-
* - community: Free tier (1,000 API calls/month)
|
|
11
|
-
* - individual: Solo developers ($9.99/mo, 10,000 API calls/month)
|
|
12
|
-
* - team: Teams ($25/user/mo, 100,000 API calls/month)
|
|
13
|
-
* - enterprise: Full enterprise ($55/user/mo, unlimited)
|
|
14
|
-
*/
|
|
15
|
-
export type LicenseTier = 'community' | 'individual' | 'team' | 'enterprise';
|
|
16
|
-
/**
|
|
17
|
-
* Quota information for display
|
|
18
|
-
*/
|
|
19
|
-
export interface QuotaInfo {
|
|
20
|
-
/** API calls used this period */
|
|
21
|
-
used: number;
|
|
22
|
-
/** API call limit (-1 for unlimited) */
|
|
23
|
-
limit: number;
|
|
24
|
-
/** Percentage used */
|
|
25
|
-
percentUsed: number;
|
|
26
|
-
/** When the quota resets */
|
|
27
|
-
resetAt: Date;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* License status information returned by license check
|
|
31
|
-
*/
|
|
32
|
-
export interface LicenseStatus {
|
|
33
|
-
/** Whether the license is valid */
|
|
34
|
-
valid: boolean;
|
|
35
|
-
/** License tier level */
|
|
36
|
-
tier: LicenseTier;
|
|
37
|
-
/** Expiration date for paid tiers */
|
|
38
|
-
expiresAt?: Date;
|
|
39
|
-
/** List of enabled features for this tier */
|
|
40
|
-
features: string[];
|
|
41
|
-
/** Error message if license validation failed */
|
|
42
|
-
error?: string;
|
|
43
|
-
/** Optional quota information */
|
|
44
|
-
quota?: QuotaInfo;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* License key payload structure (decoded from license key)
|
|
48
|
-
* @deprecated Used only for fallback when enterprise package unavailable
|
|
49
|
-
*/
|
|
50
|
-
export interface LicensePayload {
|
|
51
|
-
tier: LicenseTier;
|
|
52
|
-
expiresAt: string;
|
|
53
|
-
features: string[];
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Interface for enterprise LicenseValidator
|
|
57
|
-
* @see packages/enterprise/src/license/LicenseValidator.ts
|
|
58
|
-
*/
|
|
59
|
-
export interface EnterpriseLicenseValidator {
|
|
60
|
-
validate(key: string): Promise<{
|
|
61
|
-
valid: boolean;
|
|
62
|
-
license?: {
|
|
63
|
-
tier: LicenseTier;
|
|
64
|
-
features: string[];
|
|
65
|
-
expiresAt: Date;
|
|
66
|
-
};
|
|
67
|
-
error?: {
|
|
68
|
-
code: string;
|
|
69
|
-
message: string;
|
|
70
|
-
};
|
|
71
|
-
}>;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Default features by tier
|
|
75
|
-
*
|
|
76
|
-
* Note: Community tier uses CLI-specific display names for UI purposes.
|
|
77
|
-
* Individual, Team and Enterprise tiers use canonical feature names from @skillsmith/enterprise.
|
|
78
|
-
*
|
|
79
|
-
* @see packages/enterprise/src/license/types.ts for canonical feature definitions
|
|
80
|
-
*/
|
|
81
|
-
export declare const TIER_FEATURES: Record<LicenseTier, string[]>;
|
|
82
|
-
/**
|
|
83
|
-
* API call limits per tier (per month)
|
|
84
|
-
* Note: These are reference values matching the enterprise package quotas.
|
|
85
|
-
* Actual quota enforcement happens in the MCP server via QuotaEnforcementService.
|
|
86
|
-
*/
|
|
87
|
-
export declare const TIER_QUOTAS: Record<LicenseTier, number>;
|
|
88
|
-
//# sourceMappingURL=license-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license-types.d.ts","sourceRoot":"","sources":["../../../src/utils/license-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,YAAY,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,OAAO,EAAE,IAAI,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAA;IACd,yBAAyB;IACzB,IAAI,EAAE,WAAW,CAAA;IACjB,qCAAqC;IACrC,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B,KAAK,EAAE,OAAO,CAAA;QACd,OAAO,CAAC,EAAE;YACR,IAAI,EAAE,WAAW,CAAA;YACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;YAClB,SAAS,EAAE,IAAI,CAAA;SAChB,CAAA;QACD,KAAK,CAAC,EAAE;YACN,IAAI,EAAE,MAAM,CAAA;YACZ,OAAO,EAAE,MAAM,CAAA;SAChB,CAAA;KACF,CAAC,CAAA;CACH;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAgCvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAKnD,CAAA"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* License Types for Skillsmith CLI
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for license validation and display.
|
|
5
|
-
*
|
|
6
|
-
* @module @skillsmith/cli/utils/license-types
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Default features by tier
|
|
10
|
-
*
|
|
11
|
-
* Note: Community tier uses CLI-specific display names for UI purposes.
|
|
12
|
-
* Individual, Team and Enterprise tiers use canonical feature names from @skillsmith/enterprise.
|
|
13
|
-
*
|
|
14
|
-
* @see packages/enterprise/src/license/types.ts for canonical feature definitions
|
|
15
|
-
*/
|
|
16
|
-
export const TIER_FEATURES = {
|
|
17
|
-
community: ['basic_search', 'skill_install', 'local_validation'],
|
|
18
|
-
individual: ['basic_analytics', 'email_support'],
|
|
19
|
-
team: [
|
|
20
|
-
// Individual features (inherited)
|
|
21
|
-
'basic_analytics',
|
|
22
|
-
'email_support',
|
|
23
|
-
// Team features
|
|
24
|
-
'team_workspaces',
|
|
25
|
-
'private_skills',
|
|
26
|
-
'usage_analytics',
|
|
27
|
-
'priority_support',
|
|
28
|
-
],
|
|
29
|
-
enterprise: [
|
|
30
|
-
// Individual features (inherited)
|
|
31
|
-
'basic_analytics',
|
|
32
|
-
'email_support',
|
|
33
|
-
// Team features (inherited)
|
|
34
|
-
'team_workspaces',
|
|
35
|
-
'private_skills',
|
|
36
|
-
'usage_analytics',
|
|
37
|
-
'priority_support',
|
|
38
|
-
// Enterprise-only features (canonical names from enterprise package)
|
|
39
|
-
'sso_saml',
|
|
40
|
-
'rbac',
|
|
41
|
-
'audit_logging',
|
|
42
|
-
'siem_export',
|
|
43
|
-
'compliance_reports',
|
|
44
|
-
'private_registry',
|
|
45
|
-
'custom_integrations',
|
|
46
|
-
'advanced_analytics',
|
|
47
|
-
],
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* API call limits per tier (per month)
|
|
51
|
-
* Note: These are reference values matching the enterprise package quotas.
|
|
52
|
-
* Actual quota enforcement happens in the MCP server via QuotaEnforcementService.
|
|
53
|
-
*/
|
|
54
|
-
export const TIER_QUOTAS = {
|
|
55
|
-
community: 1_000,
|
|
56
|
-
individual: 10_000,
|
|
57
|
-
team: 100_000,
|
|
58
|
-
enterprise: -1, // Unlimited
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=license-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license-types.js","sourceRoot":"","sources":["../../../src/utils/license-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkC;IAC1D,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,kBAAkB,CAAC;IAChE,UAAU,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAChD,IAAI,EAAE;QACJ,kCAAkC;QAClC,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,iBAAiB;QACjB,kBAAkB;KACnB;IACD,UAAU,EAAE;QACV,kCAAkC;QAClC,iBAAiB;QACjB,eAAe;QACf,4BAA4B;QAC5B,iBAAiB;QACjB,gBAAgB;QAChB,iBAAiB;QACjB,kBAAkB;QAClB,qEAAqE;QACrE,UAAU;QACV,MAAM;QACN,eAAe;QACf,aAAa;QACb,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;KACrB;CACF,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgC;IACtD,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,MAAM;IAClB,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,CAAC,CAAC,EAAE,YAAY;CAC7B,CAAA"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* License Validation Helpers for Skillsmith CLI
|
|
3
|
-
*
|
|
4
|
-
* Handles license key decoding, validation, and enterprise package loading.
|
|
5
|
-
*
|
|
6
|
-
* @module @skillsmith/cli/utils/license-validation
|
|
7
|
-
*/
|
|
8
|
-
import type { LicensePayload, LicenseStatus, EnterpriseLicenseValidator } from './license-types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Attempt to load the enterprise license validator
|
|
11
|
-
* Returns null if the package is not installed (expected for community users)
|
|
12
|
-
*
|
|
13
|
-
* @returns Enterprise validator or null if not available
|
|
14
|
-
*/
|
|
15
|
-
export declare function tryLoadEnterpriseValidator(): Promise<EnterpriseLicenseValidator | null>;
|
|
16
|
-
/**
|
|
17
|
-
* Reset the enterprise validator cache (for testing purposes)
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
export declare function _resetEnterpriseValidatorCache(): void;
|
|
21
|
-
/**
|
|
22
|
-
* Decode and validate a license key using simple base64 JSON decoding
|
|
23
|
-
*
|
|
24
|
-
* @deprecated This function is used only when @skillsmith/enterprise is not available.
|
|
25
|
-
* For paid tiers, enterprise package with proper RS256 JWT validation should be used.
|
|
26
|
-
* Community users without a license key don't need validation.
|
|
27
|
-
*
|
|
28
|
-
* @param licenseKey - The license key to decode
|
|
29
|
-
* @returns Decoded payload or null if invalid
|
|
30
|
-
*/
|
|
31
|
-
export declare function decodeLicenseKey(licenseKey: string): LicensePayload | null;
|
|
32
|
-
/**
|
|
33
|
-
* Check if a license has expired
|
|
34
|
-
*
|
|
35
|
-
* @param expiresAt - Expiration date
|
|
36
|
-
* @returns True if expired
|
|
37
|
-
*/
|
|
38
|
-
export declare function isExpired(expiresAt: Date): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Get the current license status using legacy base64 decoding
|
|
41
|
-
*
|
|
42
|
-
* @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
|
|
43
|
-
* This function is preserved only for backwards compatibility in tests.
|
|
44
|
-
*
|
|
45
|
-
* @returns Promise resolving to license status
|
|
46
|
-
*/
|
|
47
|
-
export declare function getLicenseStatusLegacy(): Promise<LicenseStatus>;
|
|
48
|
-
/**
|
|
49
|
-
* Get the current license status
|
|
50
|
-
*
|
|
51
|
-
* Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
|
|
52
|
-
* If no key is set, returns community tier (not an error).
|
|
53
|
-
* If key is invalid or expired, returns status with error but continues.
|
|
54
|
-
*
|
|
55
|
-
* When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
|
|
56
|
-
* Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
|
|
57
|
-
*
|
|
58
|
-
* @returns Promise resolving to license status
|
|
59
|
-
*/
|
|
60
|
-
export declare function getLicenseStatus(): Promise<LicenseStatus>;
|
|
61
|
-
//# sourceMappingURL=license-validation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license-validation.d.ts","sourceRoot":"","sources":["../../../src/utils/license-validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAMnG;;;;;GAKG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CA4B7F;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoB1E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,aAAa,CAAC,CA4CrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CA0D/D"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* License Validation Helpers for Skillsmith CLI
|
|
3
|
-
*
|
|
4
|
-
* Handles license key decoding, validation, and enterprise package loading.
|
|
5
|
-
*
|
|
6
|
-
* @module @skillsmith/cli/utils/license-validation
|
|
7
|
-
*/
|
|
8
|
-
import { TIER_FEATURES } from './license-types.js';
|
|
9
|
-
// Cache for the enterprise validator to avoid repeated dynamic imports
|
|
10
|
-
let enterpriseValidatorCache = undefined;
|
|
11
|
-
/**
|
|
12
|
-
* Attempt to load the enterprise license validator
|
|
13
|
-
* Returns null if the package is not installed (expected for community users)
|
|
14
|
-
*
|
|
15
|
-
* @returns Enterprise validator or null if not available
|
|
16
|
-
*/
|
|
17
|
-
export async function tryLoadEnterpriseValidator() {
|
|
18
|
-
// Return cached result if already loaded
|
|
19
|
-
if (enterpriseValidatorCache !== undefined) {
|
|
20
|
-
return enterpriseValidatorCache;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
// Dynamic import with variable to prevent TypeScript from resolving at compile time
|
|
24
|
-
// This is an optional peer dependency that may not be installed
|
|
25
|
-
const packageName = '@skillsmith/enterprise';
|
|
26
|
-
const enterprise = (await import(/* webpackIgnore: true */ packageName));
|
|
27
|
-
if (enterprise['LicenseValidator']) {
|
|
28
|
-
const ValidatorClass = enterprise['LicenseValidator'];
|
|
29
|
-
enterpriseValidatorCache = new ValidatorClass();
|
|
30
|
-
return enterpriseValidatorCache;
|
|
31
|
-
}
|
|
32
|
-
enterpriseValidatorCache = null;
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// Enterprise package not installed - this is expected for community users
|
|
37
|
-
enterpriseValidatorCache = null;
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Reset the enterprise validator cache (for testing purposes)
|
|
43
|
-
* @internal
|
|
44
|
-
*/
|
|
45
|
-
export function _resetEnterpriseValidatorCache() {
|
|
46
|
-
enterpriseValidatorCache = undefined;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Decode and validate a license key using simple base64 JSON decoding
|
|
50
|
-
*
|
|
51
|
-
* @deprecated This function is used only when @skillsmith/enterprise is not available.
|
|
52
|
-
* For paid tiers, enterprise package with proper RS256 JWT validation should be used.
|
|
53
|
-
* Community users without a license key don't need validation.
|
|
54
|
-
*
|
|
55
|
-
* @param licenseKey - The license key to decode
|
|
56
|
-
* @returns Decoded payload or null if invalid
|
|
57
|
-
*/
|
|
58
|
-
export function decodeLicenseKey(licenseKey) {
|
|
59
|
-
try {
|
|
60
|
-
// License key format: base64 encoded JSON
|
|
61
|
-
// In production, this would include cryptographic signature verification
|
|
62
|
-
const decoded = Buffer.from(licenseKey, 'base64').toString('utf-8');
|
|
63
|
-
const payload = JSON.parse(decoded);
|
|
64
|
-
// Validate required fields
|
|
65
|
-
if (!payload.tier || !['individual', 'team', 'enterprise'].includes(payload.tier)) {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
if (!payload.expiresAt || isNaN(Date.parse(payload.expiresAt))) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
return payload;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Check if a license has expired
|
|
79
|
-
*
|
|
80
|
-
* @param expiresAt - Expiration date
|
|
81
|
-
* @returns True if expired
|
|
82
|
-
*/
|
|
83
|
-
export function isExpired(expiresAt) {
|
|
84
|
-
return expiresAt < new Date();
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get the current license status using legacy base64 decoding
|
|
88
|
-
*
|
|
89
|
-
* @deprecated Use getLicenseStatus() which properly uses enterprise JWT validation.
|
|
90
|
-
* This function is preserved only for backwards compatibility in tests.
|
|
91
|
-
*
|
|
92
|
-
* @returns Promise resolving to license status
|
|
93
|
-
*/
|
|
94
|
-
export async function getLicenseStatusLegacy() {
|
|
95
|
-
const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
|
|
96
|
-
// No license key = community tier (free, not an error)
|
|
97
|
-
if (!licenseKey) {
|
|
98
|
-
return {
|
|
99
|
-
valid: true,
|
|
100
|
-
tier: 'community',
|
|
101
|
-
features: TIER_FEATURES.community,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
// Decode the license key
|
|
105
|
-
const payload = decodeLicenseKey(licenseKey);
|
|
106
|
-
if (!payload) {
|
|
107
|
-
return {
|
|
108
|
-
valid: false,
|
|
109
|
-
tier: 'community',
|
|
110
|
-
features: TIER_FEATURES.community,
|
|
111
|
-
error: 'Invalid license key format',
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
const expiresAt = new Date(payload.expiresAt);
|
|
115
|
-
// Check expiration
|
|
116
|
-
if (isExpired(expiresAt)) {
|
|
117
|
-
return {
|
|
118
|
-
valid: false,
|
|
119
|
-
tier: 'community',
|
|
120
|
-
expiresAt,
|
|
121
|
-
features: TIER_FEATURES.community,
|
|
122
|
-
error: `License expired on ${expiresAt.toISOString().split('T')[0]}`,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
// Valid paid license
|
|
126
|
-
return {
|
|
127
|
-
valid: true,
|
|
128
|
-
tier: payload.tier,
|
|
129
|
-
expiresAt,
|
|
130
|
-
features: payload.features || TIER_FEATURES[payload.tier],
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Get the current license status
|
|
135
|
-
*
|
|
136
|
-
* Reads the license key from SKILLSMITH_LICENSE_KEY environment variable.
|
|
137
|
-
* If no key is set, returns community tier (not an error).
|
|
138
|
-
* If key is invalid or expired, returns status with error but continues.
|
|
139
|
-
*
|
|
140
|
-
* When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
|
|
141
|
-
* Otherwise, falls back to simple base64 JSON decoding (for development/testing only).
|
|
142
|
-
*
|
|
143
|
-
* @returns Promise resolving to license status
|
|
144
|
-
*/
|
|
145
|
-
export async function getLicenseStatus() {
|
|
146
|
-
const licenseKey = process.env['SKILLSMITH_LICENSE_KEY'];
|
|
147
|
-
// No license key = community tier (free, not an error)
|
|
148
|
-
if (!licenseKey) {
|
|
149
|
-
return {
|
|
150
|
-
valid: true,
|
|
151
|
-
tier: 'community',
|
|
152
|
-
features: TIER_FEATURES.community,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
// Try to use enterprise validator for proper JWT verification
|
|
156
|
-
const validator = await tryLoadEnterpriseValidator();
|
|
157
|
-
if (validator) {
|
|
158
|
-
// Enterprise package available - use proper RS256 JWT validation
|
|
159
|
-
try {
|
|
160
|
-
const result = await validator.validate(licenseKey);
|
|
161
|
-
if (result.valid && result.license) {
|
|
162
|
-
return {
|
|
163
|
-
valid: true,
|
|
164
|
-
tier: result.license.tier,
|
|
165
|
-
expiresAt: result.license.expiresAt,
|
|
166
|
-
features: result.license.features.length > 0
|
|
167
|
-
? result.license.features
|
|
168
|
-
: TIER_FEATURES[result.license.tier],
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
// Invalid license - return error with community fallback
|
|
172
|
-
return {
|
|
173
|
-
valid: false,
|
|
174
|
-
tier: 'community',
|
|
175
|
-
features: TIER_FEATURES.community,
|
|
176
|
-
error: result.error?.message || 'Invalid license key',
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
// Validation threw an error - treat as invalid
|
|
181
|
-
return {
|
|
182
|
-
valid: false,
|
|
183
|
-
tier: 'community',
|
|
184
|
-
features: TIER_FEATURES.community,
|
|
185
|
-
error: 'License validation failed',
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// Enterprise package not available - fall back to community tier
|
|
190
|
-
// Note: We don't attempt base64 decoding for paid tiers without proper validation
|
|
191
|
-
// This ensures security by requiring the enterprise package for paid features
|
|
192
|
-
return {
|
|
193
|
-
valid: true,
|
|
194
|
-
tier: 'community',
|
|
195
|
-
features: TIER_FEATURES.community,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=license-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license-validation.js","sourceRoot":"","sources":["../../../src/utils/license-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* License status utilities for Skillsmith CLI
|
|
3
|
-
*
|
|
4
|
-
* Handles license validation, status display, and tier formatting.
|
|
5
|
-
* Supports community (free), team, and enterprise license tiers.
|
|
6
|
-
*
|
|
7
|
-
* When @skillsmith/enterprise is available, uses proper RS256 JWT validation.
|
|
8
|
-
* Otherwise, falls back to community tier (no error).
|
|
9
|
-
*
|
|
10
|
-
* Environment variable: SKILLSMITH_LICENSE_KEY
|
|
11
|
-
*
|
|
12
|
-
* @see SMI-1090: CLI should use enterprise LicenseValidator when available
|
|
13
|
-
*/
|
|
14
|
-
export type { LicenseTier, QuotaInfo, LicenseStatus, LicensePayload } from './license-types.js';
|
|
15
|
-
export { TIER_FEATURES, TIER_QUOTAS } from './license-types.js';
|
|
16
|
-
export { tryLoadEnterpriseValidator, _resetEnterpriseValidatorCache, decodeLicenseKey, isExpired, getLicenseStatus, getLicenseStatusLegacy, } from './license-validation.js';
|
|
17
|
-
import type { LicenseTier, QuotaInfo, LicenseStatus } from './license-types.js';
|
|
18
|
-
/**
|
|
19
|
-
* Format a tier badge with color
|
|
20
|
-
*
|
|
21
|
-
* @param tier - License tier
|
|
22
|
-
* @returns Formatted tier badge string
|
|
23
|
-
*/
|
|
24
|
-
export declare function formatTierBadge(tier: LicenseTier): string;
|
|
25
|
-
/**
|
|
26
|
-
* Display a progress bar for quota usage
|
|
27
|
-
*
|
|
28
|
-
* @param used - API calls used
|
|
29
|
-
* @param limit - API call limit
|
|
30
|
-
* @returns Formatted progress bar string
|
|
31
|
-
*/
|
|
32
|
-
export declare function displayQuotaProgressBar(used: number, limit: number): string;
|
|
33
|
-
/**
|
|
34
|
-
* Display a quota warning box
|
|
35
|
-
*
|
|
36
|
-
* @param quota - Quota information
|
|
37
|
-
* @param tier - Current tier for upgrade suggestions
|
|
38
|
-
*/
|
|
39
|
-
export declare function displayQuotaWarning(quota: QuotaInfo, tier: LicenseTier): void;
|
|
40
|
-
/**
|
|
41
|
-
* Display license status on CLI startup
|
|
42
|
-
*
|
|
43
|
-
* Shows license tier, expiration (if applicable), features for paid tiers,
|
|
44
|
-
* and quota usage information.
|
|
45
|
-
* Uses colored output: green for valid, yellow for community, red for expired/invalid.
|
|
46
|
-
*
|
|
47
|
-
* @param status - License status to display
|
|
48
|
-
*/
|
|
49
|
-
export declare function displayLicenseStatus(status: LicenseStatus): void;
|
|
50
|
-
/**
|
|
51
|
-
* Display the full CLI header with version and license info
|
|
52
|
-
*
|
|
53
|
-
* @param version - CLI version string
|
|
54
|
-
*/
|
|
55
|
-
export declare function displayStartupHeader(version: string): Promise<void>;
|
|
56
|
-
//# sourceMappingURL=license.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAG/D,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAO/E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAYzD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAyC7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAuDhE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE"}
|