@skillsmith/cli 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/commands/info.js +1 -1
- package/dist/src/commands/install.js +1 -1
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.helpers.d.ts +29 -0
- package/dist/src/commands/search.helpers.d.ts.map +1 -1
- package/dist/src/commands/search.helpers.js +39 -1
- package/dist/src/commands/search.helpers.js.map +1 -1
- package/dist/src/commands/search.js +15 -2
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/search.test.d.ts +10 -0
- package/dist/src/commands/search.test.d.ts.map +1 -0
- package/dist/src/commands/search.test.js +179 -0
- package/dist/src/commands/search.test.js.map +1 -0
- package/dist/src/commands/sync.d.ts.map +1 -1
- package/dist/src/commands/sync.helpers.d.ts +29 -1
- package/dist/src/commands/sync.helpers.d.ts.map +1 -1
- package/dist/src/commands/sync.helpers.js +38 -0
- package/dist/src/commands/sync.helpers.js.map +1 -1
- package/dist/src/commands/sync.js +20 -1
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/utils/open-database.d.ts.map +1 -1
- package/dist/src/utils/open-database.js +33 -4
- package/dist/src/utils/open-database.js.map +1 -1
- package/dist/tests/open-database.test.js +25 -0
- package/dist/tests/open-database.test.js.map +1 -1
- package/dist/tests/sync.auth-ux.test.d.ts +14 -0
- package/dist/tests/sync.auth-ux.test.d.ts.map +1 -0
- package/dist/tests/sync.auth-ux.test.js +148 -0
- package/dist/tests/sync.auth-ux.test.js.map +1 -0
- package/package.json +4 -4
|
@@ -23,7 +23,7 @@ function stripAnsiEscapes(text) {
|
|
|
23
23
|
export function createInfoCommand() {
|
|
24
24
|
return new Command('info')
|
|
25
25
|
.description('Show full details and SKILL.md content for a skill')
|
|
26
|
-
.argument('<skill-id>', 'Skill ID (e.g., "
|
|
26
|
+
.argument('<skill-id>', 'Skill ID (e.g., "getsentry/commit")')
|
|
27
27
|
.option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
|
|
28
28
|
.option('--raw', 'Output only SKILL.md content (no metadata)')
|
|
29
29
|
.option('--json', 'Output full JSON response')
|
|
@@ -177,7 +177,7 @@ export function createInstallCommand() {
|
|
|
177
177
|
if (!isValidSkillId(skillId)) {
|
|
178
178
|
const errorMsg = 'Invalid skill ID format. Expected "author/name" or a GitHub URL.\n' +
|
|
179
179
|
' Examples:\n' +
|
|
180
|
-
' skillsmith install
|
|
180
|
+
' skillsmith install getsentry/commit\n' +
|
|
181
181
|
' skillsmith install https://github.com/owner/repo';
|
|
182
182
|
if (jsonOutput) {
|
|
183
183
|
console.log(JSON.stringify({ success: false, skillId, error: errorMsg }, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,GAIZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAA;AACjG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,iBAAiB,GACrB,mGAAmG,CAAA;AAErG;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAuB,EAAE,aAAuB;IACrE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IACxC,MAAM,GAAG,GAAG,GAAG;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAY,CAAA;IAChC,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,CAAC,CAAA;QAClB,IAAI,EAAE,KAAK,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,iFAAiF,CAC3G,CAAA;QACH,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACZ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,WAAW,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,gFAAgF;IAChF,OAAO,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,SAA0B;IACxD,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAAe;YAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACzC,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAA;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YAE/B,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,uEAAuE;gBACvE,oEAAoE;gBACpE,kEAAkE;gBAClE,mEAAmE;gBACnE,WAAW,EAAE,KAAK;aACnB,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAyB;IACjD,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,EACD,IAAI,EACJ,CAAC,CACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAyB,EAAE,KAAc;IAC9D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAEvD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,YAAY,CAAC,qBAAqB,aAAa,CAAC,CAAC,CAAA;YAC9F,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAA;YACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iEAAiE,CAAC,CAAC,CAAA;QAC9F,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,0EAA0E;YAC1E,2EAA2E;YAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrD,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,EAAE,CAAA;gBACb,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAElE,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAA;YACnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CAAC,WAAW,EAAE,sCAAsC,CAAC;SAC7D,MAAM,CAAC,aAAa,EAAE,sCAAsC,CAAC;SAC7D,MAAM,CAAC,aAAa,EAAE,sCAAsC,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,iCAAiC,iBAAiB,GAAG,EAAE,aAAa,CAAC;SAC7F,MAAM,CACL,mBAAmB,EACnB,4GAA4G,EAC5G,EAAE,CACH;SACA,MAAM,CACL,WAAW,EACX,gHAAgH,EAChH,KAAK,CACN;SACA,MAAM,CACL,KAAK,EACH,OAAe,EACf,IAUC,EACD,EAAE;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAA;QAErC,IAAI,CAAC;YACH,+DAA+D;YAC/D,qDAAqD;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAA;YAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,gEAAgE,CACjH,CAAA;YACH,CAAC;YACD,cAAc,CAAC,SAAS,CAAC,CAAA;YACzB,MAAM,MAAM,GAAa,SAAS,CAAA;YAClC,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC5D,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;YAExC,2BAA2B;YAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GACZ,oEAAoE;oBACpE,eAAe;oBACf,2CAA2C;oBAC3C,sDAAsD,CAAA;gBAExD,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBACpF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACpC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACf,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,eAAe,CAAA;YACzC,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;YAExC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAA;YAEtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;gBACzC,MAAM,mBAAmB,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,CAAA;gBAE7D,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;oBAC3C,EAAE;oBACF,SAAS;oBACT,mBAAmB;oBACnB,SAAS;oBACT,YAAY,EAAE,qBAAqB;oBACnC,cAAc,EAAE,sBAAsB,CAAC,SAAS,CAAC;oBACjD,UAAU,EAAE,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;wBAC7C,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,GAAG,MAAM,CAAA;wBACvB,CAAC;oBACH,CAAC;iBACF,CAAC,CAAA;gBAEF,mFAAmF;gBACnF,MAAM,cAAc,GAA8C,EAAE,CAAA;gBACpE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC7B,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBACnC,CAAC;gBACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAChC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBACzC,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACpC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;gBACjD,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;gBAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;gBAE7D,2DAA2D;gBAC3D,+DAA+D;gBAC/D,+DAA+D;gBAC/D,0DAA0D;gBAC1D,KAAK,gBAAgB,CAAC;oBACpB,OAAO;oBACP,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;oBACrC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO;wBACjB,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;iBACrE,CAAC,CAAA;gBAEF,0DAA0D;gBAC1D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,yDAAyD;gBACzD,IAAI,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;wBACrC,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gCAC3B,OAAO;gCACP,UAAU,EAAE,MAAM;gCAClB,QAAQ,EAAE,MAAM;gCAChB,aAAa,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;gCACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;6BAC3B,CAAC,CAAA;4BACF,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gCAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAA;gCAChE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,iBAAiB,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CACrE,CAAA;4BACH,CAAC;wBACH,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,IAAI,CAAC,UAAU,EAAE,CAAC;gCAChB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,gCAAgC,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC,EAAE,CACpE,CACF,CAAA;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;oBACpC,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;oBACrC,CAAC;gBACH,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBAC9B,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACjB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAA;YACZ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAClF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YAClE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CACF,CAAA;AACL,CAAC;AAED,eAAe,oBAAoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsBnC,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAsBnC,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAoS/B;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAkJ7C;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type DatabaseType } from '@skillsmith/core';
|
|
2
|
+
/** Skip the auto-sync if a sync attempt started within this window. */
|
|
3
|
+
export declare const AUTO_SYNC_COOLDOWN_MS: number;
|
|
2
4
|
/**
|
|
3
5
|
* Bootstrap the local registry on a first-time `search` against an empty DB.
|
|
4
6
|
*
|
|
@@ -20,4 +22,31 @@ import { type DatabaseType } from '@skillsmith/core';
|
|
|
20
22
|
* @param db - An open, schema-initialized CLI database.
|
|
21
23
|
*/
|
|
22
24
|
export declare function autoSyncIfEmpty(db: DatabaseType): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the local `skills` table has no rows.
|
|
27
|
+
*
|
|
28
|
+
* SMI-4926: a 0-result search against an empty index is meaningfully different
|
|
29
|
+
* from a genuine no-match — the registry has not been synced locally yet.
|
|
30
|
+
* Reuses the same `SkillRepository.count()` that `autoSyncIfEmpty` relies on
|
|
31
|
+
* (no raw SQL).
|
|
32
|
+
*
|
|
33
|
+
* @param db - An open, schema-initialized CLI database.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isLocalIndexEmpty(db: DatabaseType): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Build a sync-state-aware hint for a 0-result search against an empty index.
|
|
38
|
+
*
|
|
39
|
+
* SMI-4926: `autoSyncIfEmpty` may legitimately skip the sync (anonymous user,
|
|
40
|
+
* or a sync attempted within `AUTO_SYNC_COOLDOWN_MS`), so the hint must not
|
|
41
|
+
* unconditionally claim a sync is running. If the most recent sync attempt
|
|
42
|
+
* started within the cooldown window, the user is told to retry shortly;
|
|
43
|
+
* otherwise they are told to run `skillsmith sync`.
|
|
44
|
+
*
|
|
45
|
+
* Both messages start with a literal `ℹ ` text marker so they remain
|
|
46
|
+
* distinguishable from the yellow no-match message under `NO_COLOR`, and carry
|
|
47
|
+
* leading/trailing newlines to match `displayResults` padding.
|
|
48
|
+
*
|
|
49
|
+
* @param db - An open, schema-initialized CLI database.
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatEmptyIndexHint(db: DatabaseType): string;
|
|
23
52
|
//# sourceMappingURL=search.helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/search.helpers.ts"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"search.helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/search.helpers.ts"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAA;AAGzB,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,QAAc,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAa7D"}
|
|
@@ -10,7 +10,7 @@ import ora from 'ora';
|
|
|
10
10
|
import { SkillRepository, SyncHistoryRepository, loadStoredAccessToken, } from '@skillsmith/core';
|
|
11
11
|
import { runRegistrySync } from './run-registry-sync.js';
|
|
12
12
|
/** Skip the auto-sync if a sync attempt started within this window. */
|
|
13
|
-
const AUTO_SYNC_COOLDOWN_MS = 15 * 60_000;
|
|
13
|
+
export const AUTO_SYNC_COOLDOWN_MS = 15 * 60_000;
|
|
14
14
|
/**
|
|
15
15
|
* Bootstrap the local registry on a first-time `search` against an empty DB.
|
|
16
16
|
*
|
|
@@ -54,4 +54,42 @@ export async function autoSyncIfEmpty(db) {
|
|
|
54
54
|
spinner.warn(chalk.yellow('Could not sync — showing local results only.'));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Whether the local `skills` table has no rows.
|
|
59
|
+
*
|
|
60
|
+
* SMI-4926: a 0-result search against an empty index is meaningfully different
|
|
61
|
+
* from a genuine no-match — the registry has not been synced locally yet.
|
|
62
|
+
* Reuses the same `SkillRepository.count()` that `autoSyncIfEmpty` relies on
|
|
63
|
+
* (no raw SQL).
|
|
64
|
+
*
|
|
65
|
+
* @param db - An open, schema-initialized CLI database.
|
|
66
|
+
*/
|
|
67
|
+
export function isLocalIndexEmpty(db) {
|
|
68
|
+
return new SkillRepository(db).count() === 0;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Build a sync-state-aware hint for a 0-result search against an empty index.
|
|
72
|
+
*
|
|
73
|
+
* SMI-4926: `autoSyncIfEmpty` may legitimately skip the sync (anonymous user,
|
|
74
|
+
* or a sync attempted within `AUTO_SYNC_COOLDOWN_MS`), so the hint must not
|
|
75
|
+
* unconditionally claim a sync is running. If the most recent sync attempt
|
|
76
|
+
* started within the cooldown window, the user is told to retry shortly;
|
|
77
|
+
* otherwise they are told to run `skillsmith sync`.
|
|
78
|
+
*
|
|
79
|
+
* Both messages start with a literal `ℹ ` text marker so they remain
|
|
80
|
+
* distinguishable from the yellow no-match message under `NO_COLOR`, and carry
|
|
81
|
+
* leading/trailing newlines to match `displayResults` padding.
|
|
82
|
+
*
|
|
83
|
+
* @param db - An open, schema-initialized CLI database.
|
|
84
|
+
*/
|
|
85
|
+
export function formatEmptyIndexHint(db) {
|
|
86
|
+
const lastAttempt = new SyncHistoryRepository(db).getHistory(1)[0];
|
|
87
|
+
if (lastAttempt) {
|
|
88
|
+
const startedMs = new Date(lastAttempt.startedAt).getTime();
|
|
89
|
+
if (!Number.isNaN(startedMs) && Date.now() - startedMs < AUTO_SYNC_COOLDOWN_MS) {
|
|
90
|
+
return chalk.yellow('\nℹ Your local skill index is still being populated — a sync is in progress. Try this search again shortly.\n');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return chalk.yellow('\nℹ Your local skill index is empty. Run `skillsmith sync` to populate it, then search again.\n');
|
|
94
|
+
}
|
|
57
95
|
//# sourceMappingURL=search.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.helpers.js","sourceRoot":"","sources":["../../../src/commands/search.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,uEAAuE;AACvE,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"search.helpers.js","sourceRoot":"","sources":["../../../src/commands/search.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAA;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAgB;IACpD,IAAI,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAM;IAE/C,qEAAqE;IACrE,IAAI,CAAC,CAAC,MAAM,qBAAqB,EAAE,CAAC;QAAE,OAAM;IAE5C,gEAAgE;IAChE,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,qBAAqB,EAAE,CAAC;YAC/E,OAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kDAAkD,CAAC,CAAC,KAAK,EAAE,CAAA;IAC/E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;QACxC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,cAAc,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAgB;IAChD,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC9C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAgB;IACnD,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,qBAAqB,EAAE,CAAC;YAC/E,OAAO,KAAK,CAAC,MAAM,CACjB,+GAA+G,CAChH,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CACjB,iGAAiG,CAClG,CAAA;AACH,CAAC"}
|
|
@@ -9,7 +9,7 @@ import chalk from 'chalk';
|
|
|
9
9
|
import ora from 'ora';
|
|
10
10
|
import { SearchService, SkillRepository, SkillDependencyRepository, SkillInstallationService, } from '@skillsmith/core';
|
|
11
11
|
import { openCliDatabase } from '../utils/open-database.js';
|
|
12
|
-
import { autoSyncIfEmpty } from './search.helpers.js';
|
|
12
|
+
import { autoSyncIfEmpty, isLocalIndexEmpty, formatEmptyIndexHint } from './search.helpers.js';
|
|
13
13
|
import { DEFAULT_DB_PATH } from '../config.js';
|
|
14
14
|
import { sanitizeError } from '../utils/sanitize.js';
|
|
15
15
|
import { PAGE_SIZE } from './search-types.js';
|
|
@@ -98,11 +98,18 @@ async function runInteractiveSearch(dbPath) {
|
|
|
98
98
|
if (trustTiersForFilter.length > 1) {
|
|
99
99
|
filteredItems = results.items.filter((r) => trustTiersForFilter.includes(r.skill.trustTier));
|
|
100
100
|
}
|
|
101
|
-
displayResults(filteredItems, results.total, state.offset, PAGE_SIZE);
|
|
102
101
|
if (results.items.length === 0) {
|
|
102
|
+
// SMI-4926: distinguish an empty/unsynced local index from a no-match.
|
|
103
|
+
if (isLocalIndexEmpty(db)) {
|
|
104
|
+
console.log(formatEmptyIndexHint(db));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
displayResults(filteredItems, results.total, state.offset, PAGE_SIZE);
|
|
108
|
+
}
|
|
103
109
|
phase = 'exit';
|
|
104
110
|
continue;
|
|
105
111
|
}
|
|
112
|
+
displayResults(filteredItems, results.total, state.offset, PAGE_SIZE);
|
|
106
113
|
// Build action choices
|
|
107
114
|
const choices = [];
|
|
108
115
|
// Add skill selection options
|
|
@@ -246,6 +253,12 @@ async function runSearch(query, options) {
|
|
|
246
253
|
searchOptions.maxRiskScore = options.maxRisk;
|
|
247
254
|
}
|
|
248
255
|
const results = searchService.search(searchOptions);
|
|
256
|
+
// SMI-4926: an empty local index produces 0 results that look like a
|
|
257
|
+
// genuine no-match — surface a sync-state-aware hint instead.
|
|
258
|
+
if (results.items.length === 0 && isLocalIndexEmpty(db)) {
|
|
259
|
+
console.log(formatEmptyIndexHint(db));
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
249
262
|
displayResults(results.items, results.total, 0, options.limit);
|
|
250
263
|
}
|
|
251
264
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unit tests for `skillsmith search` empty-index hinting.
|
|
3
|
+
* @see SMI-4926
|
|
4
|
+
*
|
|
5
|
+
* A 0-result search against an EMPTY local index (not yet synced) must surface
|
|
6
|
+
* an actionable, sync-state-aware hint instead of the bare "no skills found
|
|
7
|
+
* matching your criteria" message used for a genuine no-match.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=search.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.test.d.ts","sourceRoot":"","sources":["../../../src/commands/search.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unit tests for `skillsmith search` empty-index hinting.
|
|
3
|
+
* @see SMI-4926
|
|
4
|
+
*
|
|
5
|
+
* A 0-result search against an EMPTY local index (not yet synced) must surface
|
|
6
|
+
* an actionable, sync-state-aware hint instead of the bare "no skills found
|
|
7
|
+
* matching your criteria" message used for a genuine no-match.
|
|
8
|
+
*/
|
|
9
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
10
|
+
import { SearchService, SkillRepository, SyncHistoryRepository } from '@skillsmith/core';
|
|
11
|
+
import { createTestDatabase, closeDatabase } from '@skillsmith/core/testkit';
|
|
12
|
+
import { displayResults } from './search-formatters.js';
|
|
13
|
+
import { isLocalIndexEmpty, formatEmptyIndexHint, AUTO_SYNC_COOLDOWN_MS } from './search.helpers.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Helpers
|
|
16
|
+
// ============================================================================
|
|
17
|
+
const NO_MATCH_SUBSTRING = 'matching your criteria';
|
|
18
|
+
const HINT_MARKER = 'ℹ';
|
|
19
|
+
/** Strip ANSI color codes so newline-padding assertions are color-agnostic. */
|
|
20
|
+
const ANSI_RE = new RegExp(String.fromCharCode(27) + '\\[[0-9;]*m', 'g');
|
|
21
|
+
function stripAnsi(s) {
|
|
22
|
+
return s.replace(ANSI_RE, '');
|
|
23
|
+
}
|
|
24
|
+
/** Seed one skill so the local index is non-empty. */
|
|
25
|
+
function seedSkill(db) {
|
|
26
|
+
new SkillRepository(db).create({
|
|
27
|
+
id: 'community/auth-helper',
|
|
28
|
+
name: 'auth-helper',
|
|
29
|
+
description: 'Authentication helper skill',
|
|
30
|
+
author: 'community',
|
|
31
|
+
trustTier: 'community',
|
|
32
|
+
tags: ['authentication'],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Record a sync attempt and force its `started_at` to a given ISO timestamp,
|
|
37
|
+
* since SyncHistoryRepository.startRun() always stamps "now".
|
|
38
|
+
*/
|
|
39
|
+
function seedSyncAttempt(db, startedAt) {
|
|
40
|
+
const id = new SyncHistoryRepository(db).startRun();
|
|
41
|
+
db.prepare('UPDATE sync_history SET started_at = ? WHERE id = ?').run(startedAt, id);
|
|
42
|
+
}
|
|
43
|
+
/** Capture console.log output produced by `fn`. */
|
|
44
|
+
function captureOutput(fn) {
|
|
45
|
+
const lines = [];
|
|
46
|
+
const original = console.log;
|
|
47
|
+
console.log = (...args) => {
|
|
48
|
+
lines.push(args.map((a) => String(a)).join(' '));
|
|
49
|
+
};
|
|
50
|
+
try {
|
|
51
|
+
fn();
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
console.log = original;
|
|
55
|
+
}
|
|
56
|
+
return lines.join('\n');
|
|
57
|
+
}
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// Tests — search output: empty vs no-match vs match
|
|
60
|
+
// ============================================================================
|
|
61
|
+
describe('search — empty-index hinting (SMI-4926)', () => {
|
|
62
|
+
let db;
|
|
63
|
+
beforeEach(async () => {
|
|
64
|
+
db = await createTestDatabase();
|
|
65
|
+
});
|
|
66
|
+
afterEach(() => {
|
|
67
|
+
closeDatabase(db);
|
|
68
|
+
});
|
|
69
|
+
it('empty index + query → shows the hint, not the bare no-match message', () => {
|
|
70
|
+
const results = new SearchService(db).search({ query: 'anything', limit: 20 });
|
|
71
|
+
expect(results.items).toHaveLength(0);
|
|
72
|
+
expect(isLocalIndexEmpty(db)).toBe(true);
|
|
73
|
+
const output = captureOutput(() => {
|
|
74
|
+
if (results.items.length === 0 && isLocalIndexEmpty(db)) {
|
|
75
|
+
console.log(formatEmptyIndexHint(db));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
displayResults(results.items, results.total, 0, 20);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
expect(output).toContain(HINT_MARKER);
|
|
82
|
+
expect(output).not.toContain(NO_MATCH_SUBSTRING);
|
|
83
|
+
});
|
|
84
|
+
it('populated index + no-match query → shows the bare no-match message, not the hint', () => {
|
|
85
|
+
seedSkill(db);
|
|
86
|
+
const results = new SearchService(db).search({ query: 'zzz-nonexistent-zzz', limit: 20 });
|
|
87
|
+
expect(results.items).toHaveLength(0);
|
|
88
|
+
expect(isLocalIndexEmpty(db)).toBe(false);
|
|
89
|
+
const output = captureOutput(() => {
|
|
90
|
+
if (results.items.length === 0 && isLocalIndexEmpty(db)) {
|
|
91
|
+
console.log(formatEmptyIndexHint(db));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
displayResults(results.items, results.total, 0, 20);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
expect(output).toContain(NO_MATCH_SUBSTRING);
|
|
98
|
+
expect(output).not.toContain(HINT_MARKER);
|
|
99
|
+
});
|
|
100
|
+
it('populated index + matching query → renders results, no hint', () => {
|
|
101
|
+
seedSkill(db);
|
|
102
|
+
const results = new SearchService(db).search({ query: 'auth', limit: 20 });
|
|
103
|
+
expect(results.items.length).toBeGreaterThan(0);
|
|
104
|
+
const output = captureOutput(() => {
|
|
105
|
+
if (results.items.length === 0 && isLocalIndexEmpty(db)) {
|
|
106
|
+
console.log(formatEmptyIndexHint(db));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
displayResults(results.items, results.total, 0, 20);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
expect(output).toContain('auth-helper');
|
|
113
|
+
expect(output).not.toContain(HINT_MARKER);
|
|
114
|
+
expect(output).not.toContain(NO_MATCH_SUBSTRING);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Tests — isLocalIndexEmpty (pure given a db)
|
|
119
|
+
// ============================================================================
|
|
120
|
+
describe('isLocalIndexEmpty (SMI-4926)', () => {
|
|
121
|
+
let db;
|
|
122
|
+
beforeEach(async () => {
|
|
123
|
+
db = await createTestDatabase();
|
|
124
|
+
});
|
|
125
|
+
afterEach(() => {
|
|
126
|
+
closeDatabase(db);
|
|
127
|
+
});
|
|
128
|
+
it('returns true for a fresh DB with no skills', () => {
|
|
129
|
+
expect(isLocalIndexEmpty(db)).toBe(true);
|
|
130
|
+
});
|
|
131
|
+
it('returns false once a skill is present', () => {
|
|
132
|
+
seedSkill(db);
|
|
133
|
+
expect(isLocalIndexEmpty(db)).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Tests — formatEmptyIndexHint (sync-state aware)
|
|
138
|
+
// ============================================================================
|
|
139
|
+
describe('formatEmptyIndexHint (SMI-4926)', () => {
|
|
140
|
+
let db;
|
|
141
|
+
beforeEach(async () => {
|
|
142
|
+
db = await createTestDatabase();
|
|
143
|
+
});
|
|
144
|
+
afterEach(() => {
|
|
145
|
+
closeDatabase(db);
|
|
146
|
+
});
|
|
147
|
+
it('no recent sync attempt → "run `skillsmith sync`" wording with the ℹ prefix', () => {
|
|
148
|
+
const hint = formatEmptyIndexHint(db);
|
|
149
|
+
expect(hint).toContain(HINT_MARKER);
|
|
150
|
+
expect(hint).toContain('skillsmith sync');
|
|
151
|
+
expect(hint).not.toContain('in progress');
|
|
152
|
+
});
|
|
153
|
+
it('stale sync attempt (outside cooldown) → still "run `skillsmith sync`" wording', () => {
|
|
154
|
+
const stale = new Date(Date.now() - AUTO_SYNC_COOLDOWN_MS - 60_000).toISOString();
|
|
155
|
+
seedSyncAttempt(db, stale);
|
|
156
|
+
const hint = formatEmptyIndexHint(db);
|
|
157
|
+
expect(hint).toContain(HINT_MARKER);
|
|
158
|
+
expect(hint).toContain('skillsmith sync');
|
|
159
|
+
expect(hint).not.toContain('in progress');
|
|
160
|
+
});
|
|
161
|
+
it('recent sync attempt (within cooldown) → "in progress" wording with the ℹ prefix', () => {
|
|
162
|
+
const recent = new Date(Date.now() - 60_000).toISOString();
|
|
163
|
+
seedSyncAttempt(db, recent);
|
|
164
|
+
const hint = formatEmptyIndexHint(db);
|
|
165
|
+
expect(hint).toContain(HINT_MARKER);
|
|
166
|
+
expect(hint).toContain('in progress');
|
|
167
|
+
expect(hint).not.toContain('skillsmith sync');
|
|
168
|
+
});
|
|
169
|
+
it('both wordings carry leading and trailing newlines for displayResults padding', () => {
|
|
170
|
+
const noAttempt = stripAnsi(formatEmptyIndexHint(db));
|
|
171
|
+
expect(noAttempt.startsWith('\n')).toBe(true);
|
|
172
|
+
expect(noAttempt.endsWith('\n')).toBe(true);
|
|
173
|
+
seedSyncAttempt(db, new Date(Date.now() - 60_000).toISOString());
|
|
174
|
+
const recent = stripAnsi(formatEmptyIndexHint(db));
|
|
175
|
+
expect(recent.startsWith('\n')).toBe(true);
|
|
176
|
+
expect(recent.endsWith('\n')).toBe(true);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
//# sourceMappingURL=search.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.test.js","sourceRoot":"","sources":["../../../src/commands/search.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+bnC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAsB3C;AAED,eAAe,iBAAiB,CAAA"}
|
|
@@ -5,7 +5,35 @@
|
|
|
5
5
|
* governance ceiling. Covers local-skill adapter scanning and warning
|
|
6
6
|
* formatting for the `sync status` subcommand.
|
|
7
7
|
*/
|
|
8
|
-
import { type AdapterError } from '@skillsmith/core';
|
|
8
|
+
import { type AdapterError, type SyncResult } from '@skillsmith/core';
|
|
9
|
+
/**
|
|
10
|
+
* SMI-4482: Detect whether a failed sync was caused by exhausted/absent
|
|
11
|
+
* credentials rather than a transient network or server error.
|
|
12
|
+
*
|
|
13
|
+
* Root cause: on a fresh install (`skillsmith sync` before `skillsmith login`,
|
|
14
|
+
* no `SKILLSMITH_API_KEY`) the API client correctly falls back to the public
|
|
15
|
+
* Supabase anon key and reaches the anonymous IP-trial path. Once the per-IP
|
|
16
|
+
* free-trial limit is exhausted the `skills-search` edge function returns
|
|
17
|
+
* HTTP 401 with body `{"error":"Authentication required", ...}`. `SyncEngine`
|
|
18
|
+
* surfaces that raw string in `SyncResult.errors`, so the CLI used to print a
|
|
19
|
+
* bare `Authentication required` with `Σ Total: 0` and no next step.
|
|
20
|
+
*
|
|
21
|
+
* This matches the 401 auth signal so `sync.ts` can replace the bare error
|
|
22
|
+
* with actionable guidance.
|
|
23
|
+
*
|
|
24
|
+
* @param result - The `SyncResult` returned by the sync engine.
|
|
25
|
+
* @returns `true` when the sync failed solely because no usable credentials
|
|
26
|
+
* were available (anonymous trial exhausted or auth rejected).
|
|
27
|
+
*/
|
|
28
|
+
export declare function isAuthFailure(result: SyncResult): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* SMI-4482: Actionable, multi-line guidance shown when `sync` fails because
|
|
31
|
+
* no credentials are available. Replaces the previous bare
|
|
32
|
+
* `Error: Authentication required` so the user always has a clear next step.
|
|
33
|
+
*
|
|
34
|
+
* @returns Lines to print to stderr, in order.
|
|
35
|
+
*/
|
|
36
|
+
export declare function formatAuthGuidance(): string[];
|
|
9
37
|
/**
|
|
10
38
|
* Scan `~/.claude/skills` for non-fatal adapter warnings.
|
|
11
39
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"sync.helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/sync.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGnG;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAKzD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAK7C;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAiB1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAKxE"}
|
|
@@ -8,6 +8,44 @@
|
|
|
8
8
|
import chalk from 'chalk';
|
|
9
9
|
import { createLocalFilesystemAdapter } from '@skillsmith/core';
|
|
10
10
|
import { DEFAULT_SKILLS_DIR } from '../config.js';
|
|
11
|
+
/**
|
|
12
|
+
* SMI-4482: Detect whether a failed sync was caused by exhausted/absent
|
|
13
|
+
* credentials rather than a transient network or server error.
|
|
14
|
+
*
|
|
15
|
+
* Root cause: on a fresh install (`skillsmith sync` before `skillsmith login`,
|
|
16
|
+
* no `SKILLSMITH_API_KEY`) the API client correctly falls back to the public
|
|
17
|
+
* Supabase anon key and reaches the anonymous IP-trial path. Once the per-IP
|
|
18
|
+
* free-trial limit is exhausted the `skills-search` edge function returns
|
|
19
|
+
* HTTP 401 with body `{"error":"Authentication required", ...}`. `SyncEngine`
|
|
20
|
+
* surfaces that raw string in `SyncResult.errors`, so the CLI used to print a
|
|
21
|
+
* bare `Authentication required` with `Σ Total: 0` and no next step.
|
|
22
|
+
*
|
|
23
|
+
* This matches the 401 auth signal so `sync.ts` can replace the bare error
|
|
24
|
+
* with actionable guidance.
|
|
25
|
+
*
|
|
26
|
+
* @param result - The `SyncResult` returned by the sync engine.
|
|
27
|
+
* @returns `true` when the sync failed solely because no usable credentials
|
|
28
|
+
* were available (anonymous trial exhausted or auth rejected).
|
|
29
|
+
*/
|
|
30
|
+
export function isAuthFailure(result) {
|
|
31
|
+
if (result.success || result.totalProcessed > 0) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return result.errors.some((error) => /authentication required|unauthorized/i.test(error));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* SMI-4482: Actionable, multi-line guidance shown when `sync` fails because
|
|
38
|
+
* no credentials are available. Replaces the previous bare
|
|
39
|
+
* `Error: Authentication required` so the user always has a clear next step.
|
|
40
|
+
*
|
|
41
|
+
* @returns Lines to print to stderr, in order.
|
|
42
|
+
*/
|
|
43
|
+
export function formatAuthGuidance() {
|
|
44
|
+
return [
|
|
45
|
+
chalk.yellow('Sync requires authentication. Run: ') + chalk.cyan('skillsmith login'),
|
|
46
|
+
chalk.dim('Or set SKILLSMITH_API_KEY for headless/CI use.'),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
11
49
|
/**
|
|
12
50
|
* Scan `~/.claude/skills` for non-fatal adapter warnings.
|
|
13
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.helpers.js","sourceRoot":"","sources":["../../../src/commands/sync.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,4BAA4B,
|
|
1
|
+
{"version":3,"file":"sync.helpers.js","sourceRoot":"","sources":["../../../src/commands/sync.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,4BAA4B,EAAsC,MAAM,kBAAkB,CAAA;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACpF,KAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC;KAC5D,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAAC;YAC3C,EAAE,EAAE,mBAAmB;YACvB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,kBAAkB;YAC3B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAA;QACF,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACvC,OAAO,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;QACjF,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -22,7 +22,7 @@ import { runRegistrySync } from './run-registry-sync.js';
|
|
|
22
22
|
import { DEFAULT_DB_PATH } from '../config.js';
|
|
23
23
|
import { sanitizeError } from '../utils/sanitize.js';
|
|
24
24
|
import { formatDuration, formatDate, formatTimeUntil } from '../utils/formatters.js';
|
|
25
|
-
import { scanLocalSkillsForWarnings, formatAdapterWarnings } from './sync.helpers.js';
|
|
25
|
+
import { scanLocalSkillsForWarnings, formatAdapterWarnings, isAuthFailure, formatAuthGuidance, } from './sync.helpers.js';
|
|
26
26
|
/**
|
|
27
27
|
* Run sync operation
|
|
28
28
|
*/
|
|
@@ -60,6 +60,25 @@ async function runSync(options) {
|
|
|
60
60
|
if (options.json) {
|
|
61
61
|
spinner.stop();
|
|
62
62
|
console.log(JSON.stringify(result, null, 2));
|
|
63
|
+
// SMI-4482: signal auth failure via exit code so `--json` scripts can
|
|
64
|
+
// detect "needs login" without parsing the payload.
|
|
65
|
+
if (isAuthFailure(result)) {
|
|
66
|
+
process.exitCode = 1;
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// SMI-4482: When sync failed because no credentials were available
|
|
71
|
+
// (anonymous IP-trial exhausted, or auth rejected), replace the bare
|
|
72
|
+
// `Authentication required` error with actionable guidance and exit
|
|
73
|
+
// non-zero — instead of printing `Σ Total: 0` with no next step.
|
|
74
|
+
if (isAuthFailure(result)) {
|
|
75
|
+
spinner.fail(chalk.yellow('Sync requires authentication'));
|
|
76
|
+
console.log();
|
|
77
|
+
for (const line of formatAuthGuidance()) {
|
|
78
|
+
console.error(line);
|
|
79
|
+
}
|
|
80
|
+
// db.close() runs in the `finally` block below before process.exit.
|
|
81
|
+
process.exitCode = 1;
|
|
63
82
|
return;
|
|
64
83
|
}
|
|
65
84
|
if (result.success) {
|