coolhand-cli 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +11 -2
  2. package/dist/api/last-sync.d.ts.map +1 -1
  3. package/dist/api/last-sync.js +2 -1
  4. package/dist/api/last-sync.js.map +1 -1
  5. package/dist/api/llm-reference-client.d.ts +25 -0
  6. package/dist/api/llm-reference-client.d.ts.map +1 -0
  7. package/dist/api/llm-reference-client.js +49 -0
  8. package/dist/api/llm-reference-client.js.map +1 -0
  9. package/dist/api/template-client.d.ts +19 -0
  10. package/dist/api/template-client.d.ts.map +1 -0
  11. package/dist/api/template-client.js +47 -0
  12. package/dist/api/template-client.js.map +1 -0
  13. package/dist/auth/open-browser.d.ts.map +1 -1
  14. package/dist/auth/open-browser.js +3 -1
  15. package/dist/auth/open-browser.js.map +1 -1
  16. package/dist/base-url.d.ts +7 -0
  17. package/dist/base-url.d.ts.map +1 -0
  18. package/dist/base-url.js +14 -0
  19. package/dist/base-url.js.map +1 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +325 -4
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands/analyze-claude-sessions.d.ts.map +1 -1
  24. package/dist/commands/analyze-claude-sessions.js +10 -21
  25. package/dist/commands/analyze-claude-sessions.js.map +1 -1
  26. package/dist/commands/get-template.d.ts +3 -0
  27. package/dist/commands/get-template.d.ts.map +1 -0
  28. package/dist/commands/get-template.js +66 -0
  29. package/dist/commands/get-template.js.map +1 -0
  30. package/dist/commands/list-referenced-file-sessions.d.ts +3 -0
  31. package/dist/commands/list-referenced-file-sessions.d.ts.map +1 -0
  32. package/dist/commands/list-referenced-file-sessions.js +44 -0
  33. package/dist/commands/list-referenced-file-sessions.js.map +1 -0
  34. package/dist/commands/login.d.ts.map +1 -1
  35. package/dist/commands/login.js +3 -2
  36. package/dist/commands/login.js.map +1 -1
  37. package/dist/commands/map-claude-projects.d.ts +22 -0
  38. package/dist/commands/map-claude-projects.d.ts.map +1 -0
  39. package/dist/commands/map-claude-projects.js +302 -0
  40. package/dist/commands/map-claude-projects.js.map +1 -0
  41. package/dist/commands/search-referenced-files.d.ts +3 -0
  42. package/dist/commands/search-referenced-files.d.ts.map +1 -0
  43. package/dist/commands/search-referenced-files.js +53 -0
  44. package/dist/commands/search-referenced-files.js.map +1 -0
  45. package/dist/commands/search-templates.d.ts +3 -0
  46. package/dist/commands/search-templates.d.ts.map +1 -0
  47. package/dist/commands/search-templates.js +63 -0
  48. package/dist/commands/search-templates.js.map +1 -0
  49. package/dist/commands/sync-skills.d.ts +18 -0
  50. package/dist/commands/sync-skills.d.ts.map +1 -0
  51. package/dist/commands/sync-skills.js +222 -0
  52. package/dist/commands/sync-skills.js.map +1 -0
  53. package/dist/commands/upload-client-file.d.ts +3 -0
  54. package/dist/commands/upload-client-file.d.ts.map +1 -0
  55. package/dist/commands/upload-client-file.js +43 -0
  56. package/dist/commands/upload-client-file.js.map +1 -0
  57. package/dist/commands/wildcard.d.ts +6 -6
  58. package/dist/commands/wildcard.d.ts.map +1 -1
  59. package/dist/commands/wildcard.js +14 -11
  60. package/dist/commands/wildcard.js.map +1 -1
  61. package/dist/config.d.ts +11 -0
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +31 -8
  64. package/dist/config.js.map +1 -1
  65. package/dist/errors.d.ts +1 -1
  66. package/dist/errors.d.ts.map +1 -1
  67. package/dist/errors.js.map +1 -1
  68. package/dist/log-request.d.ts +4 -0
  69. package/dist/log-request.d.ts.map +1 -1
  70. package/dist/log-request.js +8 -1
  71. package/dist/log-request.js.map +1 -1
  72. package/dist/logger.d.ts +1 -0
  73. package/dist/logger.d.ts.map +1 -1
  74. package/dist/logger.js +30 -1
  75. package/dist/logger.js.map +1 -1
  76. package/dist/proxy/certs.d.ts.map +1 -1
  77. package/dist/proxy/certs.js +145 -5
  78. package/dist/proxy/certs.js.map +1 -1
  79. package/dist/proxy/interceptor.d.ts +8 -1
  80. package/dist/proxy/interceptor.d.ts.map +1 -1
  81. package/dist/proxy/interceptor.js +36 -3
  82. package/dist/proxy/interceptor.js.map +1 -1
  83. package/dist/proxy/proxy.d.ts.map +1 -1
  84. package/dist/proxy/proxy.js +75 -6
  85. package/dist/proxy/proxy.js.map +1 -1
  86. package/dist/proxy/wrap-runner.d.ts +2 -17
  87. package/dist/proxy/wrap-runner.d.ts.map +1 -1
  88. package/dist/proxy/wrap-runner.js +13 -29
  89. package/dist/proxy/wrap-runner.js.map +1 -1
  90. package/dist/sessions/claude-scanner.d.ts +3 -0
  91. package/dist/sessions/claude-scanner.d.ts.map +1 -1
  92. package/dist/sessions/claude-scanner.js +8 -0
  93. package/dist/sessions/claude-scanner.js.map +1 -1
  94. package/dist/sessions/cowork-scanner.d.ts.map +1 -1
  95. package/dist/sessions/cowork-scanner.js +6 -1
  96. package/dist/sessions/cowork-scanner.js.map +1 -1
  97. package/dist/sessions/redact-secrets.d.ts.map +1 -1
  98. package/dist/sessions/redact-secrets.js +13 -2
  99. package/dist/sessions/redact-secrets.js.map +1 -1
  100. package/dist/sessions/session-filter.d.ts +3 -1
  101. package/dist/sessions/session-filter.d.ts.map +1 -1
  102. package/dist/sessions/session-filter.js +9 -3
  103. package/dist/sessions/session-filter.js.map +1 -1
  104. package/dist/skills/skill-scanner.d.ts +55 -0
  105. package/dist/skills/skill-scanner.d.ts.map +1 -0
  106. package/dist/skills/skill-scanner.js +132 -0
  107. package/dist/skills/skill-scanner.js.map +1 -0
  108. package/dist/skills/skill-state.d.ts +29 -0
  109. package/dist/skills/skill-state.d.ts.map +1 -0
  110. package/dist/skills/skill-state.js +111 -0
  111. package/dist/skills/skill-state.js.map +1 -0
  112. package/dist/types.d.ts +77 -0
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/types.js.map +1 -1
  115. package/dist/upload-client-file.d.ts +31 -0
  116. package/dist/upload-client-file.d.ts.map +1 -0
  117. package/dist/upload-client-file.js +81 -0
  118. package/dist/upload-client-file.js.map +1 -0
  119. package/dist/version.d.ts +2 -2
  120. package/dist/version.d.ts.map +1 -1
  121. package/dist/version.js +1 -1
  122. package/dist/version.js.map +1 -1
  123. package/dist/win-spawn.d.ts +6 -0
  124. package/dist/win-spawn.d.ts.map +1 -0
  125. package/dist/win-spawn.js +32 -0
  126. package/dist/win-spawn.js.map +1 -0
  127. package/package.json +7 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-claude-projects.js","sourceRoot":"","sources":["../../src/commands/map-claude-projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAO5D;;qGAEqG;AACrG,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzC,uFAAuF;QACvF,yFAAyF;QACzF,4FAA4F;QAC5F,yFAAyF;QACzF,0FAA0F;QAC1F,6FAA6F;QAC7F,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,UAAU,IAAI,CAAC,GAAW;QAC7B,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;oBAClC,mFAAmF;oBACnF,gFAAgF;oBAChF,8EAA8E;oBAC9E,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC7D,IAAI,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;wBAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,SAAS,CAAC,iFAAiF;YAC7F,CAAC;YAED,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnD,SAAS,CAAC,yDAAyD;YACrE,CAAC;YACD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,UAAU,IAAI,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,GAAG,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAc;IAC5D,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QACnC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;KACtC,CAAC,CAAC;IACH,IAAI,QAAQ,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,UAAU,CAAC,KAAe,EAAE,GAAW,EAAE,KAAa;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,qBAAsB,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,qFAAqF;YACrF,uFAAuF;YACvF,qEAAqE;YACrE,IAAI,UAAU,CAAC;YACf,IAAI,CAAC;gBACH,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAsB,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjG,SAAS;YACX,CAAC;YACD,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBACrG,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YACjD,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,QAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,IAAI;gBACxE,WAAW,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAC9F,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;YAC7F,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,YAAY,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACrG,MAAM,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,0FAA0F;YAC1F,wFAAwF;YACxF,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACrG,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACjD,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,QAAQ,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;YAC9D,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CAAC,UAAkB;IACtD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,4BAA4B,UAAU,KAAK,EAAE,iBAAiB,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,kBAAkB,CAC7G,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAChB,eAAe,EACf,0CAA0C,UAAU,mCAAmC,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA8B,EAAE,OAA8B,EAAE;IACxF,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,yCAAyC,IAAI,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,sBAAsB;YACtB,EAAE;YACF,aAAa,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,4CAA4C,YAAY,CAAC,IAAI,CAAC,GAAG;YAC1H,EAAE;SACH,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,kFAAkF;YAClF,yFAAyF;YACzF,uFAAuF;YACvF,KAAK,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAE5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE3F,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CACR,8DAA8D;oBAC5D,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC,CAAC;oBACpG,2FAA2F,CAC9F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,oFAAoF;YACpF,0FAA0F;YAC1F,mCAAmC;YACnC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,uBAAuB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnG,0FAA0F;QAC1F,4FAA4F;QAC5F,uFAAuF;QACvF,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,oBAAoB,OAAO,CAAC,MAAM,mCAAmC,IAAI,gDAAgD;gBACtI,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;aAC9E,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACjD,CAAC;YAEF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC;oBACV,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;oBACnC,OAAO,EAAE,OAAO,CAAC,MAAM;oBACvB,YAAY,EAAE,OAAO;oBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC/C,MAAM,EAAE,MAAM,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CACT,kBAAkB,OAAO,CAAC,MAAM,sBAAsB,EAAE,mBAAmB;oBACzE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,qBAAqB,OAAO,CAAC,MAAM,eAAe,EAAE,qBAAqB;oBACvE,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,UAAU,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI;oBAC1D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SearchReferencedFilesOptions } from '../types.js';
2
+ export declare function run(opts: SearchReferencedFilesOptions): Promise<number>;
3
+ //# sourceMappingURL=search-referenced-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-referenced-files.d.ts","sourceRoot":"","sources":["../../src/commands/search-referenced-files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAEhE,wBAAsB,GAAG,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,MAAM,CAAC,CAiD7E"}
@@ -0,0 +1,53 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getLlmReferenceClient, mapLlmReferenceHttpError } from '../api/llm-reference-client.js';
4
+ export async function run(opts) {
5
+ try {
6
+ const coolhand = await getLlmReferenceClient({ clientId: opts.clientId });
7
+ const params = {};
8
+ if (opts.filePathContains !== undefined) {
9
+ params.filePathContains = opts.filePathContains;
10
+ }
11
+ if (opts.createdAtGteq !== undefined) {
12
+ params.createdAtGteq = opts.createdAtGteq;
13
+ }
14
+ if (opts.createdAtLteq !== undefined) {
15
+ params.createdAtLteq = opts.createdAtLteq;
16
+ }
17
+ if (opts.page !== undefined) {
18
+ params.page = opts.page;
19
+ }
20
+ if (opts.perPage !== undefined) {
21
+ params.per = opts.perPage;
22
+ }
23
+ let result;
24
+ try {
25
+ result = await coolhand.searchReferencedFiles(params);
26
+ }
27
+ catch (err) {
28
+ throw mapLlmReferenceHttpError(err, 'narrow --file-path-contains or lower --per-page and try again');
29
+ }
30
+ if (opts.json) {
31
+ logger.json({ ok: true, result });
32
+ }
33
+ else {
34
+ const { pagination } = result;
35
+ logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
36
+ logger.info(JSON.stringify(result, null, 2));
37
+ }
38
+ return ExitCode.OK;
39
+ }
40
+ catch (err) {
41
+ if (err instanceof CliError) {
42
+ if (opts.json) {
43
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
44
+ }
45
+ else {
46
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
47
+ }
48
+ return err.exitCode;
49
+ }
50
+ throw err;
51
+ }
52
+ }
53
+ //# sourceMappingURL=search-referenced-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-referenced-files.js","sourceRoot":"","sources":["../../src/commands/search-referenced-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAGjG,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAkC;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAgC,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,CAAC;QAED,IAAI,MAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,wBAAwB,CAAC,GAAG,EAAE,+DAA+D,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;YAC9B,MAAM,CAAC,IAAI,CACT,QAAQ,UAAU,CAAC,YAAY,OAAO,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,WAAW,oCAAoC,CAC5H,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SearchTemplatesOptions } from '../types.js';
2
+ export declare function run(opts: SearchTemplatesOptions): Promise<number>;
3
+ //# sourceMappingURL=search-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-templates.d.ts","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK1D,wBAAsB,GAAG,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4DvE"}
@@ -0,0 +1,63 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { getTemplateClient, mapTemplateHttpError } from '../api/template-client.js';
4
+ const TIMEOUT_HINT = 'Narrow it with --workload-id, --search, or a smaller --per-page, then retry.';
5
+ export async function run(opts) {
6
+ try {
7
+ const coolhand = await getTemplateClient({ clientId: opts.clientId });
8
+ const params = {};
9
+ if (opts.search !== undefined) {
10
+ params.search = opts.search;
11
+ }
12
+ if (opts.workloadId !== undefined) {
13
+ params.workloadId = opts.workloadId;
14
+ }
15
+ if (opts.status !== undefined) {
16
+ params.status = opts.status;
17
+ }
18
+ if (opts.includeDeprecated) {
19
+ params.includeDeprecated = true;
20
+ }
21
+ if (opts.includeSystem) {
22
+ params.includeSystem = true;
23
+ }
24
+ if (opts.page !== undefined) {
25
+ params.page = opts.page;
26
+ }
27
+ if (opts.perPage !== undefined) {
28
+ params.per = opts.perPage;
29
+ }
30
+ let result;
31
+ try {
32
+ result = await coolhand.searchTemplates(params);
33
+ }
34
+ catch (err) {
35
+ throw mapTemplateHttpError(err, 'Template search failed.', TIMEOUT_HINT);
36
+ }
37
+ if (opts.json) {
38
+ logger.json({ ok: true, result });
39
+ }
40
+ else {
41
+ const { pagination } = result;
42
+ logger.info(`Page ${pagination.current_page} of ${pagination.total_pages} (${pagination.total_count} total) — use --page N to navigate`);
43
+ if (result.templates.length === 0 && !opts.includeSystem) {
44
+ logger.info('No templates matched. The Unmatched and Ignored API Calls system buckets are hidden by default — pass --include-system to include them.');
45
+ }
46
+ logger.info(JSON.stringify(result, null, 2));
47
+ }
48
+ return ExitCode.OK;
49
+ }
50
+ catch (err) {
51
+ if (err instanceof CliError) {
52
+ if (opts.json) {
53
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
54
+ }
55
+ else {
56
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
57
+ }
58
+ return err.exitCode;
59
+ }
60
+ throw err;
61
+ }
62
+ }
63
+ //# sourceMappingURL=search-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-templates.js","sourceRoot":"","sources":["../../src/commands/search-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type SkillRoot } from '../skills/skill-scanner.js';
2
+ import type { SyncSkillsOptions } from '../types.js';
3
+ export interface SyncSkillsDeps {
4
+ /** Overrides `os.homedir()` for the `authored` and `claude-code` default roots only. The
5
+ * `installed` root always comes from the canonical `defaultCoworkSessionsDir()` (reused as-is
6
+ * from cowork-scanner.ts, deliberately not re-derived here to avoid drift) — that function has
7
+ * no override parameter of its own and always reads the real `os.homedir()`, so it does NOT
8
+ * move with this override. Note that mutating `process.env.HOME` in a test is not a substitute
9
+ * for this: Node's `os.homedir()` native binding does not reliably observe a `HOME` mutated
10
+ * after process start under Jest, which is why this injection point exists at all. */
11
+ homedir?: () => string;
12
+ /** Override the roots to scan, bypassing the default 3-root/--root/--source resolution
13
+ * entirely (including the `installed` root) — used by tests that need every root, including
14
+ * `installed`, pointed at a temp directory. */
15
+ roots?: SkillRoot[];
16
+ }
17
+ export declare function run(opts: SyncSkillsOptions, deps?: SyncSkillsDeps): Promise<number>;
18
+ //# sourceMappingURL=sync-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-skills.d.ts","sourceRoot":"","sources":["../../src/commands/sync-skills.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B;;;;;;2FAMuF;IACvF,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB;;oDAEgD;IAChD,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAqED,wBAAsB,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4J7F"}
@@ -0,0 +1,222 @@
1
+ import * as os from 'os';
2
+ import * as path from 'path';
3
+ import { CliError, ExitCode } from '../errors.js';
4
+ import { logger, redact } from '../logger.js';
5
+ import { loadConfig, resolveClientForDryRun } from '../config.js';
6
+ import { uploadClientFile } from '../upload-client-file.js';
7
+ import { defaultCoworkSessionsDir } from '../sessions/cowork-scanner.js';
8
+ import { sanitizeProjectKey } from '../sessions/session-filter.js';
9
+ import { findSkillFiles, dedupeSkillFiles, } from '../skills/skill-scanner.js';
10
+ import { loadSkillState, getUploadRecord, recordUpload, saveSkillState } from '../skills/skill-state.js';
11
+ /** Errors that apply to every candidate (auth/config), so the run should abort rather than fail
12
+ * identically for each remaining upload. Deliberately narrower than analyze-claude-sessions'
13
+ * FATAL_CODES: INVALID_ARGS from uploadClientFile here is a per-FILE condition (unreadable file,
14
+ * over the size cap) that can easily succeed for the next candidate, so it must NOT be fatal —
15
+ * unlike analyze-claude-sessions, where INVALID_ARGS comes from a malformed envelope shape that
16
+ * would fail identically for every session. NO_PRIVATE_KEY, absent from analyze-claude-sessions'
17
+ * set (logRequest uses the public-key tier), is fatal here because uploadClientFile always
18
+ * requires a private key — identical for every candidate, so retrying per-item is pointless. */
19
+ const FATAL_CODES = new Set(['NOT_CONFIGURED', 'CLIENT_NOT_FOUND', 'INVALID_BASE_URL', 'NO_PRIVATE_KEY']);
20
+ const VALID_SOURCE_KINDS = ['authored', 'installed', 'claude-code'];
21
+ function defaultRoots(homedir) {
22
+ return [
23
+ { root: path.join(homedir(), 'Documents', 'Claude'), sourceKind: 'authored' },
24
+ { root: defaultCoworkSessionsDir(), sourceKind: 'installed' },
25
+ { root: path.join(homedir(), '.claude', 'skills'), sourceKind: 'claude-code' },
26
+ ];
27
+ }
28
+ function resolveRoots(opts, homedir) {
29
+ if (opts.root) {
30
+ return [{ root: opts.root, sourceKind: 'custom' }];
31
+ }
32
+ const roots = defaultRoots(homedir);
33
+ if (!opts.sources || opts.sources.length === 0) {
34
+ return roots;
35
+ }
36
+ const wanted = new Set(opts.sources.map((s) => s.toLowerCase()));
37
+ for (const s of wanted) {
38
+ if (!VALID_SOURCE_KINDS.includes(s)) {
39
+ throw new CliError('INVALID_ARGS', `--source must be one of: ${VALID_SOURCE_KINDS.join(', ')} (got "${s}")`);
40
+ }
41
+ }
42
+ return roots.filter((r) => wanted.has(r.sourceKind));
43
+ }
44
+ /** Substring/case-insensitive match on skill name, using the same normalization
45
+ * (`sanitizeProjectKey`) as --project/--exclude-project so filter semantics stay consistent
46
+ * across commands. */
47
+ function matchesFilter(skillName, needles) {
48
+ const key = sanitizeProjectKey(skillName);
49
+ return needles.some((needle) => key.includes(sanitizeProjectKey(needle)));
50
+ }
51
+ function applyNameFilters(candidates, opts) {
52
+ let result = candidates;
53
+ const includeNeedles = opts.skills;
54
+ if (includeNeedles && includeNeedles.length > 0) {
55
+ result = result.filter((c) => matchesFilter(c.skillName, includeNeedles));
56
+ }
57
+ const excludeNeedles = opts.excludeSkills;
58
+ if (excludeNeedles && excludeNeedles.length > 0) {
59
+ result = result.filter((c) => !matchesFilter(c.skillName, excludeNeedles));
60
+ }
61
+ return result;
62
+ }
63
+ function describeCandidate(candidate) {
64
+ if (candidate.description) {
65
+ return candidate.description;
66
+ }
67
+ const extraCopies = candidate.duplicateCount - 1;
68
+ const copiesNote = extraCopies > 0 ? `, ${extraCopies} duplicate cop${extraCopies === 1 ? 'y' : 'ies'} found on this machine` : '';
69
+ return `Claude skill "${candidate.skillName}" (source: ${candidate.sourceKind}${copiesNote})`;
70
+ }
71
+ export async function run(opts, deps = {}) {
72
+ try {
73
+ const cfg = await loadConfig();
74
+ const client = await resolveClientForDryRun(cfg, opts.clientId);
75
+ const stateClientId = client?.client_id ?? '_default';
76
+ // Pass the already-resolved client_id downstream (not opts.clientId) so each per-skill
77
+ // uploadClientFile() call takes the fast "explicit clientId" branch of its own internal
78
+ // resolveClientForDryRun/resolveClient call instead of re-running the full priority chain —
79
+ // in particular, never re-prompting interactively over a TTY once per skill upload. That
80
+ // inner call still re-reads config.json and re-prints "Client: <name> (<id>)" to stderr once
81
+ // per upload (resolveClient always does, with no silent/quiet option) — a known, accepted
82
+ // cost of reusing uploadClientFile()'s shared core as-is rather than duplicating its
83
+ // auth/dry-run/size-cap logic in a separate lower-level upload path.
84
+ const resolvedClientId = client?.client_id;
85
+ // Fail fast on a fully logged-out, non-dry-run invocation — mirrors the same guard inside
86
+ // uploadClientFile() itself, but checked here too so a real run doesn't waste time scanning
87
+ // and SHA-256-hashing every SKILL.md across all default roots only to fail on the very first
88
+ // upload attempt.
89
+ if (!client && !opts.dryRun) {
90
+ throw new CliError('NOT_CONFIGURED', 'Not logged in. Run `coolhand login` to authenticate.');
91
+ }
92
+ const roots = deps.roots ?? resolveRoots(opts, deps.homedir ?? os.homedir);
93
+ // Captured once, before the scan, so every candidate uploaded from this run reports the same
94
+ // discoveredAt — stamping it per-candidate inside the upload loop instead would both misname
95
+ // the field (it'd reflect upload time, not discovery time) and drift across a large batch.
96
+ const discoveredAt = new Date().toISOString();
97
+ const warnings = [];
98
+ const discovered = await findSkillFiles(roots, (message) => warnings.push(message));
99
+ for (const message of warnings) {
100
+ logger.warn(message);
101
+ }
102
+ const allCandidates = dedupeSkillFiles(discovered);
103
+ const candidates = applyNameFilters(allCandidates, opts);
104
+ const duplicatesSkipped = discovered.length - allCandidates.length;
105
+ const filteredOut = allCandidates.length - candidates.length;
106
+ const state = await loadSkillState();
107
+ const toUpload = [];
108
+ let unchangedCount = 0;
109
+ for (const candidate of candidates) {
110
+ // The state key already embeds contentHash (see skill-state.ts's stateKey), so a hit here
111
+ // means this exact content was already uploaded under this name — no separate hash
112
+ // comparison needed.
113
+ const record = getUploadRecord(state, stateClientId, candidate.skillName, candidate.contentHash);
114
+ if (record && !opts.force) {
115
+ unchangedCount += 1;
116
+ }
117
+ else {
118
+ toUpload.push(candidate);
119
+ }
120
+ }
121
+ if (opts.dryRun) {
122
+ if (opts.json) {
123
+ logger.json({
124
+ ok: true,
125
+ dryRun: true,
126
+ found: discovered.length,
127
+ duplicatesSkipped,
128
+ filteredOut,
129
+ new: toUpload.length,
130
+ unchanged: unchangedCount,
131
+ });
132
+ }
133
+ else {
134
+ logger.info(`Dry run: found ${discovered.length} skill file(s), ${duplicatesSkipped} duplicate(s) skipped` +
135
+ (filteredOut > 0 ? `, ${filteredOut} filtered out` : '') +
136
+ ` — would upload ${toUpload.length}, ${unchangedCount} unchanged. Nothing sent.`);
137
+ }
138
+ return ExitCode.OK;
139
+ }
140
+ let uploaded = 0;
141
+ let failed = 0;
142
+ try {
143
+ for (const candidate of toUpload) {
144
+ try {
145
+ const result = await uploadClientFile({
146
+ filePath: candidate.filePath,
147
+ name: candidate.skillName,
148
+ fileType: 'document',
149
+ description: describeCandidate(candidate),
150
+ metadata: {
151
+ source: 'sync-skills',
152
+ skillName: candidate.skillName,
153
+ sourceKind: candidate.sourceKind,
154
+ sourcePath: candidate.filePath,
155
+ contentHash: candidate.contentHash,
156
+ discoveredAt,
157
+ duplicateCount: candidate.duplicateCount,
158
+ root: candidate.root,
159
+ },
160
+ },
161
+ // dryRun is deliberately omitted here (unlike map-claude-projects' single call) —
162
+ // this loop is only ever reached after the opts.dryRun early-return above, so it
163
+ // would always be false; sync-skills has its own independent dry-run short-circuit.
164
+ { clientId: resolvedClientId });
165
+ recordUpload(state, stateClientId, candidate.skillName, candidate.contentHash, {
166
+ contentHash: candidate.contentHash,
167
+ uploadedAt: new Date().toISOString(),
168
+ ...(result.response?.id && { clientFileId: result.response.id }),
169
+ });
170
+ uploaded += 1;
171
+ }
172
+ catch (err) {
173
+ if (err instanceof CliError && FATAL_CODES.has(err.code)) {
174
+ throw err;
175
+ }
176
+ failed += 1;
177
+ logger.warn(`Failed to upload skill "${candidate.skillName}": ${redact(err.message)}`);
178
+ }
179
+ }
180
+ }
181
+ finally {
182
+ try {
183
+ await saveSkillState(state);
184
+ }
185
+ catch (err) {
186
+ logger.warn(`Failed to save skill state: ${redact(err.message)}`);
187
+ }
188
+ }
189
+ if (opts.json) {
190
+ logger.json({
191
+ ok: failed === 0,
192
+ found: discovered.length,
193
+ duplicatesSkipped,
194
+ filteredOut,
195
+ uploaded,
196
+ unchanged: unchangedCount,
197
+ failed,
198
+ });
199
+ }
200
+ else {
201
+ const failureNote = failed > 0 ? `, ${failed} failed` : '';
202
+ logger.info(`Uploaded ${uploaded} skill(s), ${unchangedCount} unchanged` +
203
+ (duplicatesSkipped > 0 ? `, ${duplicatesSkipped} duplicate(s) skipped` : '') +
204
+ (filteredOut > 0 ? `, ${filteredOut} filtered out` : '') +
205
+ `${failureNote}.`);
206
+ }
207
+ return failed === 0 ? ExitCode.OK : ExitCode.USER_ERROR;
208
+ }
209
+ catch (err) {
210
+ if (err instanceof CliError) {
211
+ if (opts.json) {
212
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
213
+ }
214
+ else {
215
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
216
+ }
217
+ return err.exitCode;
218
+ }
219
+ throw err;
220
+ }
221
+ }
222
+ //# sourceMappingURL=sync-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-skills.js","sourceRoot":"","sources":["../../src/commands/sync-skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { UploadClientFileOptions } from '../types.js';
2
+ export declare function run(opts: UploadClientFileOptions): Promise<number>;
3
+ //# sourceMappingURL=upload-client-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-client-file.d.ts","sourceRoot":"","sources":["../../src/commands/upload-client-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,wBAAsB,GAAG,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyCxE"}
@@ -0,0 +1,43 @@
1
+ import { CliError, ExitCode } from '../errors.js';
2
+ import { logger, redact } from '../logger.js';
3
+ import { uploadClientFile } from '../upload-client-file.js';
4
+ export async function run(opts) {
5
+ try {
6
+ const result = await uploadClientFile({
7
+ filePath: opts.filePath,
8
+ name: opts.name,
9
+ fileType: opts.fileType,
10
+ description: opts.description,
11
+ }, { clientId: opts.clientId, dryRun: opts.dryRun });
12
+ const mb = (result.sizeBytes / (1024 * 1024)).toFixed(2);
13
+ if (opts.json) {
14
+ logger.json({
15
+ ok: true,
16
+ dryRun: result.status === 'dry-run',
17
+ sizeBytes: result.sizeBytes,
18
+ result: result.response,
19
+ });
20
+ }
21
+ else if (result.status === 'dry-run') {
22
+ logger.info(`Dry run: would upload "${opts.filePath}" (${mb}MB). Nothing sent.`);
23
+ }
24
+ else {
25
+ logger.info(`Uploaded "${opts.filePath}" (${mb}MB) as client file "${result.response?.name}" ` +
26
+ `(id: ${result.response?.id}, status: ${result.response?.status}).`);
27
+ }
28
+ return ExitCode.OK;
29
+ }
30
+ catch (err) {
31
+ if (err instanceof CliError) {
32
+ if (opts.json) {
33
+ logger.json({ ok: false, error: err.code, message: redact(err.message) });
34
+ }
35
+ else {
36
+ logger.info(`Error: ${redact(err.message)} [${err.code}]`);
37
+ }
38
+ return err.exitCode;
39
+ }
40
+ throw err;
41
+ }
42
+ }
43
+ //# sourceMappingURL=upload-client-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-client-file.js","sourceRoot":"","sources":["../../src/commands/upload-client-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAA6B;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC;YACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACjD,CAAC;QAEF,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,SAAS;gBACnC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,QAAQ,MAAM,EAAE,oBAAoB,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CACT,aAAa,IAAI,CAAC,QAAQ,MAAM,EAAE,uBAAuB,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI;gBAChF,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,aAAa,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { type ComplaintBoxOptions } from '../types.js';
2
2
  /**
3
- * Records an agent's free-form "I am blocked, this capability does not exist"
4
- * complaint as feedback (tagged creator_type: "agent"), then prints a terminal
5
- * de-loop message and exits 0 so the agent stops and moves on. The de-loop ALWAYS
6
- * fires — even when the feedback could not be recorded — because the missing
7
- * capability is real regardless of server state (and a logged-out agent in a
8
- * sandbox is exactly who this command is for). When recording fails it says so
3
+ * Records an agent's free-form "I am blocked — a capability doesn't exist, or this
4
+ * task would take too long" complaint as feedback (tagged creator_type: "agent"),
5
+ * then prints a terminal de-loop message and exits 0 so the agent stops and moves
6
+ * on. The de-loop ALWAYS fires — even when the feedback could not be recorded —
7
+ * because the blocker is real regardless of server state (and a logged-out agent in
8
+ * a sandbox is exactly who this command is for). When recording fails it says so
9
9
  * plainly and logs a warning, so the failure still surfaces without trapping the
10
10
  * agent in the retry loop the command exists to break.
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wildcard.d.ts","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6BzE;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsIpE"}
1
+ {"version":3,"file":"wildcard.d.ts","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgCzE;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsIpE"}
@@ -9,28 +9,31 @@ import { DEFAULT_BASE_URL } from '../types.js';
9
9
  // capability is real regardless of whether we could reach the Coolhand server, so
10
10
  // the de-loop is the agent's decision to make, not the server's.
11
11
  const STOP_GUIDANCE = 'Do not retry this action or attempt alternative ways to perform it; continue with the rest of your task.';
12
+ // Shared opening clause: the blocker is either a capability that genuinely doesn't
13
+ // exist, or a task that would take too long to complete in this environment.
14
+ const BLOCKER_CLAUSE = 'This capability is not available, or the task would take too long to complete, in this environment.';
12
15
  // Printed when the blocker was successfully recorded server-side.
13
- const DELOOP_RECORDED = 'This capability is not available in this environment. Your feedback has been recorded. ' + STOP_GUIDANCE;
16
+ const DELOOP_RECORDED = `${BLOCKER_CLAUSE} Your feedback has been recorded. ` + STOP_GUIDANCE;
14
17
  // Printed when the blocker could NOT be recorded (e.g. the server did not confirm).
15
18
  // We still de-loop the agent, but stay honest: we never claim a recording happened,
16
19
  // and a warning is logged separately so the failure surfaces.
17
- const DELOOP_UNRECORDED = 'This capability is not available in this environment. Your feedback could not be recorded ' +
20
+ const DELOOP_UNRECORDED = `${BLOCKER_CLAUSE} Your feedback could not be recorded ` +
18
21
  '(the server did not confirm — run `coolhand login` to enable reporting). ' +
19
22
  STOP_GUIDANCE;
20
23
  // Printed when the blocker was saved locally because the API key is unavailable
21
24
  // (not logged in, no default client set, or private-only login). The data is not
22
25
  // lost: it uploads when credentials are available. The specific reason is already
23
26
  // in the logger.warn() call above, so this message stays generic.
24
- const DELOOP_SAVED = 'This capability is not available in this environment. Your feedback was saved locally ' +
27
+ const DELOOP_SAVED = `${BLOCKER_CLAUSE} Your feedback was saved locally ` +
25
28
  'and will be uploaded once a Coolhand account with a public API key is configured. ' +
26
29
  STOP_GUIDANCE;
27
30
  /**
28
- * Records an agent's free-form "I am blocked, this capability does not exist"
29
- * complaint as feedback (tagged creator_type: "agent"), then prints a terminal
30
- * de-loop message and exits 0 so the agent stops and moves on. The de-loop ALWAYS
31
- * fires — even when the feedback could not be recorded — because the missing
32
- * capability is real regardless of server state (and a logged-out agent in a
33
- * sandbox is exactly who this command is for). When recording fails it says so
31
+ * Records an agent's free-form "I am blocked — a capability doesn't exist, or this
32
+ * task would take too long" complaint as feedback (tagged creator_type: "agent"),
33
+ * then prints a terminal de-loop message and exits 0 so the agent stops and moves
34
+ * on. The de-loop ALWAYS fires — even when the feedback could not be recorded —
35
+ * because the blocker is real regardless of server state (and a logged-out agent in
36
+ * a sandbox is exactly who this command is for). When recording fails it says so
34
37
  * plainly and logs a warning, so the failure still surfaces without trapping the
35
38
  * agent in the retry loop the command exists to break.
36
39
  */
@@ -131,14 +134,14 @@ export async function run(opts) {
131
134
  if (err instanceof CliError && err.code === 'CLIENT_NOT_FOUND') {
132
135
  // Bad --client-id value — not a server or auth failure; give actionable guidance.
133
136
  deloopFallback =
134
- 'This capability is not available in this environment. The specified client was not found ' +
137
+ `${BLOCKER_CLAUSE} The specified client was not found ` +
135
138
  '(pass --client-id with a valid client ID, or run `coolhand clients` to list configured clients). ' +
136
139
  STOP_GUIDANCE;
137
140
  }
138
141
  else if (err instanceof CliError && err.code === 'INVALID_ARGS') {
139
142
  // Client selection prompt timed out or received invalid input — not a server failure.
140
143
  deloopFallback =
141
- 'This capability is not available in this environment. Client selection was not completed ' +
144
+ `${BLOCKER_CLAUSE} Client selection was not completed ` +
142
145
  '(prompt timed out or received invalid input — pass --client-id to select a client directly). ' +
143
146
  STOP_GUIDANCE;
144
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../src/commands/wildcard.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -24,4 +24,15 @@ export declare function setDefault(clientId: string): Promise<ConfigFile>;
24
24
  * knows which account's data they are looking at.
25
25
  */
26
26
  export declare function resolveClient(cfg: ConfigFile, clientId?: string): Promise<ClientEntry>;
27
+ /**
28
+ * `resolveClient`, but tolerant of "no clients configured at all" — returns `undefined` in that
29
+ * one case instead of throwing, so a `--dry-run` caller can still run fully unauthenticated. Any
30
+ * other resolution error (a bad --client-id, multiple clients with no default set, etc.)
31
+ * propagates exactly as `resolveClient` would throw it.
32
+ *
33
+ * Shared by every command whose `--dry-run` mode should work without any stored credentials
34
+ * (`analyze-claude-sessions`, `map-claude-projects`, `upload-client-file`, and anything built on
35
+ * `uploadClientFile`'s shared core).
36
+ */
37
+ export declare function resolveClientForDryRun(cfg: ConfigFile, clientId?: string): Promise<ClientEntry | undefined>;
27
38
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM1D,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAMD,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAyBtD;AAWD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAMrF;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAY9F;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB/E;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQtE;AA2CD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE5F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM1D,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAMD,wBAAsB,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAyBtD;AAWD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAMrF;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAY9F;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB/E;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQtE;AA2CD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE5F;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAajH"}