@namewta/speculo 2.0.6 → 2.1.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 (268) hide show
  1. package/README.md +3 -0
  2. package/THIRD-PARTY-NOTICES.md +4 -0
  3. package/dist/src/agent-skills.d.ts +5 -0
  4. package/dist/src/agent-skills.js +10 -7
  5. package/dist/src/agent-skills.js.map +1 -1
  6. package/dist/src/cli.js +17 -4
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/coordination.d.ts +3 -3
  9. package/dist/src/coordination.js +21 -4
  10. package/dist/src/coordination.js.map +1 -1
  11. package/dist/src/doctor.js +8 -1
  12. package/dist/src/doctor.js.map +1 -1
  13. package/dist/src/external-files.d.ts +4 -2
  14. package/dist/src/external-files.js +4 -4
  15. package/dist/src/external-files.js.map +1 -1
  16. package/dist/src/hub-catalog.d.ts +11 -0
  17. package/dist/src/hub-catalog.js +91 -0
  18. package/dist/src/hub-catalog.js.map +1 -0
  19. package/dist/src/hub-resources.json +1 -0
  20. package/dist/src/hub-skills.d.ts +53 -0
  21. package/dist/src/hub-skills.js +157 -0
  22. package/dist/src/hub-skills.js.map +1 -0
  23. package/dist/src/index.d.ts +6 -0
  24. package/dist/src/index.js +48 -47
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/install-ui.d.ts +16 -0
  27. package/dist/src/install-ui.js +67 -11
  28. package/dist/src/install-ui.js.map +1 -1
  29. package/dist/src/manifest.d.ts +2 -0
  30. package/dist/src/manifest.js +2 -0
  31. package/dist/src/manifest.js.map +1 -1
  32. package/dist/src/refresh.d.ts +1 -0
  33. package/dist/src/refresh.js +13 -10
  34. package/dist/src/refresh.js.map +1 -1
  35. package/dist/src/retained-workflows.d.ts +10 -0
  36. package/dist/src/retained-workflows.js +25 -0
  37. package/dist/src/retained-workflows.js.map +1 -0
  38. package/dist/src/runtime-entry.d.ts +1 -0
  39. package/dist/src/runtime-entry.js +1 -0
  40. package/dist/src/runtime-entry.js.map +1 -1
  41. package/dist/src/skill-trees.d.ts +27 -0
  42. package/dist/src/skill-trees.js +118 -0
  43. package/dist/src/skill-trees.js.map +1 -0
  44. package/dist/src/transaction.d.ts +3 -14
  45. package/dist/src/transaction.js +20 -36
  46. package/dist/src/transaction.js.map +1 -1
  47. package/dist/src/workflow-install.d.ts +15 -0
  48. package/dist/src/workflow-install.js +104 -0
  49. package/dist/src/workflow-install.js.map +1 -0
  50. package/package.json +4 -2
  51. package/skills-hub/automation/grok-bot-team-steward/CHEATSHEET.md +17 -0
  52. package/skills-hub/automation/grok-bot-team-steward/INSTALL.md +23 -0
  53. package/skills-hub/automation/grok-bot-team-steward/LICENSE +21 -0
  54. package/skills-hub/automation/grok-bot-team-steward/README.md +9 -0
  55. package/skills-hub/automation/grok-bot-team-steward/SKILL.md +52 -0
  56. package/skills-hub/automation/grok-bot-team-steward/agents/openai.yaml +4 -0
  57. package/skills-hub/automation/grok-bot-team-steward/references/00-hard-rules.md +50 -0
  58. package/skills-hub/automation/grok-bot-team-steward/references/01-snapshot-schema.md +84 -0
  59. package/skills-hub/automation/grok-bot-team-steward/references/02-export-protocol.md +57 -0
  60. package/skills-hub/automation/grok-bot-team-steward/references/03-restore-protocol.md +64 -0
  61. package/skills-hub/automation/grok-bot-team-steward/references/04-inventory.md +37 -0
  62. package/skills-hub/automation/grok-bot-team-steward/references/05-conversations.md +71 -0
  63. package/skills-hub/automation/grok-bot-team-steward/references/06-sanitizer.md +39 -0
  64. package/skills-hub/automation/grok-bot-team-steward/references/07-prompts.md +87 -0
  65. package/skills-hub/automation/grok-bot-team-steward/references/08-verification.md +30 -0
  66. package/skills-hub/automation/grok-bot-team-steward/references/09-sources.md +31 -0
  67. package/skills-hub/automation/grok-bot-team-steward/scripts/scrub.sh +17 -0
  68. package/skills-hub/automation/grok-bot-team-steward/scripts/snapshot-name.sh +18 -0
  69. package/skills-hub/automation/grok-bot-team-steward/scripts/validate-snapshot.sh +62 -0
  70. package/skills-hub/automation/grok-bot-team-steward/steward/ACTIVATE.md +58 -0
  71. package/skills-hub/automation/grok-bot-team-steward/steward/SETUP-INSTRUCTIONS.md +33 -0
  72. package/skills-hub/automation/grok-bot-team-steward/steward/STEWARD-PROFILE.md +28 -0
  73. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/CHANGELOG.md +3 -0
  74. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/CHARTER.md +27 -0
  75. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/DROP-LIST.md +10 -0
  76. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/GAPS.md +6 -0
  77. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/INIT.md +14 -0
  78. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/MANIFEST.md +30 -0
  79. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/MANIFEST.yaml +20 -0
  80. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/ORG.md +15 -0
  81. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/README.md +8 -0
  82. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/RESTORE.md +13 -0
  83. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/ROSTER.md +11 -0
  84. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/GAPS.md +7 -0
  85. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/MEMORY.md +9 -0
  86. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/PROFILE.md +27 -0
  87. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/agent-spec.md +9 -0
  88. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/conversations/INDEX.md +5 -0
  89. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/conversations/main.md +9 -0
  90. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/routines.md +5 -0
  91. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/skills.md +5 -0
  92. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/connectors.md +7 -0
  93. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/COMPLETED.md +6 -0
  94. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/CREATED.md +6 -0
  95. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/RESTORE-NOTES.md +13 -0
  96. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/SANITIZER.md +7 -0
  97. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/SOURCE.md +8 -0
  98. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/rooms/_ROOM.md +8 -0
  99. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/routines/_ROUTINE.md +12 -0
  100. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/shared/shared-memory.md +5 -0
  101. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/shared/workspace-map.md +5 -0
  102. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/skills/_SKILL/SKILL.md +18 -0
  103. package/skills-hub/automation/herdr/SKILL.md +246 -0
  104. package/skills-hub/automation/orca/SKILL.md +328 -0
  105. package/skills-hub/coding/gitea-repo/LICENSE +21 -0
  106. package/skills-hub/coding/gitea-repo/SKILL.md +50 -0
  107. package/skills-hub/coding/gitea-repo/agents/openai.yaml +4 -0
  108. package/skills-hub/coding/gitea-repo/references/auth-and-scopes.md +58 -0
  109. package/skills-hub/coding/gitea-repo/references/endpoint-map.md +80 -0
  110. package/skills-hub/coding/gitea-repo/references/pagination-and-errors.md +34 -0
  111. package/skills-hub/coding/gitea-repo/scripts/gitea_api.py +814 -0
  112. package/skills-hub/coding/github-repo-steward/LICENSE +21 -0
  113. package/skills-hub/coding/github-repo-steward/SKILL.md +48 -0
  114. package/skills-hub/coding/github-repo-steward/agents/openai.yaml +4 -0
  115. package/skills-hub/coding/github-repo-steward/references/00-auth-and-tokens.md +73 -0
  116. package/skills-hub/coding/github-repo-steward/references/01-inventory.md +55 -0
  117. package/skills-hub/coding/github-repo-steward/references/02-lifecycle.md +57 -0
  118. package/skills-hub/coding/github-repo-steward/references/03-stars.md +42 -0
  119. package/skills-hub/coding/github-repo-steward/references/04-hygiene.md +40 -0
  120. package/skills-hub/coding/github-repo-steward/references/05-sources.md +42 -0
  121. package/skills-hub/coding/github-repo-steward/scripts/inventory.sh +64 -0
  122. package/skills-hub/coding/vscode-fullstack/LICENSE +21 -0
  123. package/skills-hub/coding/vscode-fullstack/SKILL.md +47 -0
  124. package/skills-hub/coding/vscode-fullstack/agents/openai.yaml +4 -0
  125. package/skills-hub/coding/vscode-fullstack/references/extensions-and-settings.md +181 -0
  126. package/skills-hub/coding/vscode-fullstack/references/profiles-and-validation.md +62 -0
  127. package/skills-hub/coding/vscode-fullstack/references/runtime-reuse.md +52 -0
  128. package/skills-hub/design/photo-retouch/LICENSE +21 -0
  129. package/skills-hub/design/photo-retouch/SKILL.md +50 -0
  130. package/skills-hub/design/photo-retouch/agents/openai.yaml +4 -0
  131. package/skills-hub/design/photo-retouch/references/basic-retouch.md +58 -0
  132. package/skills-hub/design/photo-retouch/references/formal-portrait.md +57 -0
  133. package/skills-hub/design/photo-retouch/references/object-and-canvas.md +82 -0
  134. package/skills-hub/design/photo-retouch/references/product-photo.md +41 -0
  135. package/skills-hub/design/photo-retouch/references/repair-and-look.md +61 -0
  136. package/skills-hub/design/photo-retouch/references/social-effects.md +55 -0
  137. package/skills-hub/design/photo-retouch/references/travel-creative.md +79 -0
  138. package/skills-hub/system/clash-client-profile/LICENSE +21 -0
  139. package/skills-hub/system/clash-client-profile/SKILL.md +79 -0
  140. package/skills-hub/system/clash-client-profile/agents/openai.yaml +4 -0
  141. package/skills-hub/system/clash-client-profile/references/acceptance.md +81 -0
  142. package/skills-hub/system/clash-client-profile/references/browser-privacy.md +35 -0
  143. package/skills-hub/system/clash-client-profile/references/clash-verge.md +40 -0
  144. package/skills-hub/system/clash-client-profile/references/dns-workflow.md +147 -0
  145. package/skills-hub/system/clash-client-profile/references/flclash.md +24 -0
  146. package/skills-hub/system/clash-client-profile/references/network-performance.md +25 -0
  147. package/skills-hub/system/clash-client-profile/references/platform-dns.md +109 -0
  148. package/skills-hub/system/clash-client-profile/references/sources.md +46 -0
  149. package/skills-hub/system/clash-client-profile/references/troubleshooting.md +82 -0
  150. package/skills-hub/system/clash-client-profile/scripts/dns_guard.py +650 -0
  151. package/skills-hub/system/clash-client-profile/scripts/proxy_doctor.py +213 -0
  152. package/skills-hub/system/clash-client-profile/scripts/render_rules.py +34 -0
  153. package/skills-hub/system/clash-client-profile/templates/ai-rules.yaml +18 -0
  154. package/skills-hub/system/clash-client-profile/templates/dns-request.example.json +9 -0
  155. package/skills-hub/system/clash-client-profile/templates/dns.yaml +8 -0
  156. package/skills-hub/system/linux-dev-disk-cleanup/LICENSE +21 -0
  157. package/skills-hub/system/linux-dev-disk-cleanup/SKILL.md +42 -0
  158. package/skills-hub/system/linux-dev-disk-cleanup/agents/openai.yaml +4 -0
  159. package/skills-hub/system/linux-dev-disk-cleanup/references/linux-cleanup-workflow.md +145 -0
  160. package/skills-hub/system/optimize-codex-config/LICENSE +21 -0
  161. package/skills-hub/system/optimize-codex-config/SKILL.md +101 -0
  162. package/skills-hub/system/optimize-codex-config/agents/openai.yaml +4 -0
  163. package/skills-hub/system/optimize-codex-config/assets/capabilities.example.json +22 -0
  164. package/skills-hub/system/optimize-codex-config/references/cli.md +35 -0
  165. package/skills-hub/system/optimize-codex-config/references/configuration-contract.md +33 -0
  166. package/skills-hub/system/optimize-codex-config/references/optimization-method.md +38 -0
  167. package/skills-hub/system/optimize-codex-config/references/privacy.md +41 -0
  168. package/skills-hub/system/optimize-codex-config/references/sources.md +24 -0
  169. package/skills-hub/system/optimize-codex-config/references/statusline.md +31 -0
  170. package/skills-hub/system/optimize-codex-config/references/transactions.md +32 -0
  171. package/skills-hub/system/optimize-codex-config/references/troubleshooting.md +95 -0
  172. package/skills-hub/system/optimize-codex-config/scripts/adapters/claude.mjs +24 -0
  173. package/skills-hub/system/optimize-codex-config/scripts/adapters/codex.mjs +10 -0
  174. package/skills-hub/system/optimize-codex-config/scripts/ai-cli-config.mjs +67 -0
  175. package/skills-hub/system/optimize-codex-config/scripts/audit-codex-config.mjs +762 -0
  176. package/skills-hub/system/optimize-codex-config/scripts/lib/document.mjs +166 -0
  177. package/skills-hub/system/optimize-codex-config/scripts/lib/inspect.mjs +211 -0
  178. package/skills-hub/system/optimize-codex-config/scripts/lib/io.mjs +104 -0
  179. package/skills-hub/system/optimize-codex-config/scripts/lib/plan.mjs +79 -0
  180. package/skills-hub/system/optimize-codex-config/scripts/lib/transaction.mjs +205 -0
  181. package/skills-hub/system/optimize-codex-config/scripts/lib/writers.mjs +46 -0
  182. package/skills-hub/system/optimize-codex-config/scripts/statusline/claude-statusline.mjs +94 -0
  183. package/skills-hub/system/optimize-codex-config/scripts/vendor/THIRD-PARTY-NOTICES.txt +250 -0
  184. package/skills-hub/system/optimize-codex-config/scripts/vendor/build-package-lock.json +488 -0
  185. package/skills-hub/system/optimize-codex-config/scripts/vendor/manifest.json +14 -0
  186. package/skills-hub/system/optimize-codex-config/scripts/vendor/parsers.mjs +16 -0
  187. package/skills-hub/system/proxy-region-locale/LICENSE +21 -0
  188. package/skills-hub/system/proxy-region-locale/SKILL.md +42 -0
  189. package/skills-hub/system/proxy-region-locale/agents/openai.yaml +4 -0
  190. package/skills-hub/system/proxy-region-locale/references/linux.md +35 -0
  191. package/skills-hub/system/proxy-region-locale/references/macos.md +31 -0
  192. package/skills-hub/system/proxy-region-locale/references/windows.md +45 -0
  193. package/skills-hub/system/system-health-audit/LICENSE +21 -0
  194. package/skills-hub/system/system-health-audit/SKILL.md +41 -0
  195. package/skills-hub/system/system-health-audit/agents/openai.yaml +4 -0
  196. package/skills-hub/system/system-health-audit/references/platforms.md +37 -0
  197. package/skills-hub/system/system-health-audit/scripts/system_audit.py +41 -0
  198. package/skills-hub/system/windows-dev-disk-cleanup/LICENSE +21 -0
  199. package/skills-hub/system/windows-dev-disk-cleanup/SKILL.md +40 -0
  200. package/skills-hub/system/windows-dev-disk-cleanup/agents/openai.yaml +4 -0
  201. package/skills-hub/system/windows-dev-disk-cleanup/references/windows-cleanup-workflow.md +121 -0
  202. package/skills-hub/writing/.gitkeep +0 -0
  203. package/skills-hub/writing/job-application/LICENSE +21 -0
  204. package/skills-hub/writing/job-application/SKILL.md +160 -0
  205. package/skills-hub/writing/job-application/agents/openai.yaml +4 -0
  206. package/skills-hub/writing/job-application/assets/resume.css +10 -0
  207. package/skills-hub/writing/job-application/config.example.json +9 -0
  208. package/skills-hub/writing/job-application/references/company-research.md +7 -0
  209. package/skills-hub/writing/job-application/references/corpus-schema.md +33 -0
  210. package/skills-hub/writing/job-application/references/honesty-gate.md +29 -0
  211. package/skills-hub/writing/job-application/references/improvement-plan.md +15 -0
  212. package/skills-hub/writing/job-application/references/ingest-protocol.md +18 -0
  213. package/skills-hub/writing/job-application/references/interview-speech.md +16 -0
  214. package/skills-hub/writing/job-application/references/jd-parse.md +18 -0
  215. package/skills-hub/writing/job-application/references/persist-paths.md +34 -0
  216. package/skills-hub/writing/job-application/references/question-bank.md +19 -0
  217. package/skills-hub/writing/job-application/references/rendering.md +9 -0
  218. package/skills-hub/writing/job-application/references/resume-playbook.md +30 -0
  219. package/skills-hub/writing/job-application/scripts/README.md +12 -0
  220. package/skills-hub/writing/job-application/scripts/ingest_kb.py +188 -0
  221. package/skills-hub/writing/job-application/scripts/render_resume.py +144 -0
  222. package/skills-hub/writing/job-application/scripts/validate_claims.py +52 -0
  223. package/skills-hub/writing/job-application/scripts/write_config.py +72 -0
  224. package/skills-hub/writing/job-application/templates/application-index.md +10 -0
  225. package/skills-hub/writing/job-application/templates/brief.md +16 -0
  226. package/skills-hub/writing/job-application/templates/changelog.md +6 -0
  227. package/skills-hub/writing/job-application/templates/company-research.md +15 -0
  228. package/skills-hub/writing/job-application/templates/corpus.md +11 -0
  229. package/skills-hub/writing/job-application/templates/evidence-map.md +5 -0
  230. package/skills-hub/writing/job-application/templates/framings.md +6 -0
  231. package/skills-hub/writing/job-application/templates/improvement-plan.md +16 -0
  232. package/skills-hub/writing/job-application/templates/ingest-log.md +4 -0
  233. package/skills-hub/writing/job-application/templates/known-gaps.md +4 -0
  234. package/skills-hub/writing/job-application/templates/match-report.md +21 -0
  235. package/skills-hub/writing/job-application/templates/methodology-cache.md +10 -0
  236. package/skills-hub/writing/job-application/templates/persist-index.md +11 -0
  237. package/skills-hub/writing/job-application/templates/profile.md +21 -0
  238. package/skills-hub/writing/job-application/templates/questions.md +22 -0
  239. package/skills-hub/writing/job-application/templates/resume-original.md +10 -0
  240. package/skills-hub/writing/job-application/templates/resume-tailored.md +21 -0
  241. package/skills-hub/writing/job-application/templates/sources-index.md +6 -0
  242. package/skills-hub/writing/job-application/templates/speech.md +19 -0
  243. package/skills-hub/writing/job-application/templates/stories.md +9 -0
  244. package/skills-hub/writing/job-application/templates/story-bank.md +11 -0
  245. package/skills-hub/writing/job-application/templates/strengths.md +4 -0
  246. package/skills-hub/writing/job-application/templates/style-memory.md +7 -0
  247. package/skills-hub/writing/ste-zh/LICENSE +21 -0
  248. package/skills-hub/writing/ste-zh/NOTICE.md +9 -0
  249. package/skills-hub/writing/ste-zh/SKILL.md +130 -0
  250. package/skills-hub/writing/ste-zh/agents/openai.yaml +6 -0
  251. package/skills-hub/writing/ste-zh/examples/zh-report.md +23 -0
  252. package/skills-hub/writing/ste-zh/references/english-modes.md +13 -0
  253. package/skills-hub/writing/ste-zh/references/terminology.md +13 -0
  254. package/skills-hub/writing/ste-zh/references/zh-rules.md +29 -0
  255. package/template/.speculo/refresh-contract.json +2 -0
  256. package/template/canonical/canonical-specdev-goal-plan.md +33 -25
  257. package/template/canonical/canonical-specdev-grill-with-docs.md +214 -206
  258. package/template/canonical/canonical-specdev-spec.md +214 -206
  259. package/template/canonical/canonical-specdev-tickets.md +214 -206
  260. package/template/canonical/canonical-specdev-wayfinder.md +214 -206
  261. package/template/lib/speculo-runtime.mjs +183 -8
  262. package/template/references/coordination/coordination-contract.md +11 -3
  263. package/template/references/coordination/modes/cli.md +2 -2
  264. package/template/references/coordination/modes/herdr.md +9 -9
  265. package/template/references/coordination/modes/orca.md +11 -11
  266. package/template/references/coordination/project-facts.schema.json +1 -0
  267. package/template/workflows/specdev/specdev-i-init-setup/SKILL.md +7 -6
  268. package/template/workflows/specdev/specdev-i-init-setup/references/first-setup.md +30 -1
@@ -0,0 +1,91 @@
1
+ import { readFile, readdir } from "node:fs/promises";
2
+ import { join, posix } from "node:path";
3
+ import { parseFrontmatter, readAssetCatalog, validateSkill } from "./assets.js";
4
+ import { safeRelativePath } from "./paths.js";
5
+ import { snapshotSkillTree, validSkillNode } from "./skill-trees.js";
6
+ const SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
7
+ /** Only category/name is a public entry. Nested SKILL.md files are package resources. */
8
+ export async function discoverHubCatalog(packageRoot) {
9
+ const root = join(packageRoot, "skills-hub"), catalog = new Map();
10
+ // npm omits .gitignore and normalizes modes. The build snapshot preserves the
11
+ // complete source package; any shipped source bytes that differ are rejected.
12
+ let bundle;
13
+ try {
14
+ bundle = JSON.parse(await readFile(join(packageRoot, "dist/src/hub-resources.json"), "utf8"));
15
+ }
16
+ catch (e) {
17
+ if (e.code !== "ENOENT")
18
+ throw e;
19
+ }
20
+ if (bundle && (bundle.schema_version !== 1 || !Array.isArray(bundle.packages) || new Set(bundle.packages.map(p => p.id)).size !== bundle.packages.length))
21
+ throw new Error("invalid-hub-bundle");
22
+ const names = new Set((await readAssetCatalog(join(packageRoot, "template"))).assets.map(a => a.name));
23
+ const categories = await readdir(root, { withFileTypes: true }).catch((e) => { if (e.code === "ENOENT")
24
+ return []; throw e; });
25
+ for (const category of categories.sort((a, b) => a.name.localeCompare(b.name))) {
26
+ if (category.isSymbolicLink())
27
+ throw new Error("hub-source-symlink: " + category.name);
28
+ if (!category.isDirectory())
29
+ continue;
30
+ if (!SLUG.test(category.name))
31
+ throw new Error("invalid-hub-category: " + category.name);
32
+ for (const entry of (await readdir(join(root, category.name), { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name))) {
33
+ if (entry.isSymbolicLink())
34
+ throw new Error("hub-source-symlink: " + entry.name);
35
+ if (!entry.isDirectory())
36
+ continue;
37
+ const source = join(root, category.name, entry.name), content = await readFile(join(source, "SKILL.md"));
38
+ const errors = validateSkill(content, entry.name);
39
+ if (errors.length)
40
+ throw new Error(`invalid-hub-skill: ${category.name}/${entry.name}: ${errors.join("; ")}`);
41
+ if (names.has(entry.name))
42
+ throw new Error("duplicate-skill-name: " + entry.name);
43
+ names.add(entry.name);
44
+ const id = `${category.name}/${entry.name}`;
45
+ let tree = await snapshotSkillTree(source, { source: true });
46
+ if (bundle) {
47
+ const packaged = bundle.packages.find(p => p.id === id);
48
+ if (!packaged || !Array.isArray(packaged.nodes))
49
+ throw new Error("missing-hub-bundle-package: " + id);
50
+ const original = new Map();
51
+ for (const { path, node } of packaged.nodes) {
52
+ if (typeof path !== "string" || path && (!safeRelativePath(path) || path.endsWith("/")) || original.has(path) || !validSkillNode(node) || node.kind === "absent")
53
+ throw new Error("invalid-hub-bundle-node");
54
+ original.set(path, process.platform === "win32" ? { ...node, mode: node.kind === "directory" ? 0o755 : node.mode & 0o200 ? 0o666 : 0o444 } : node);
55
+ }
56
+ if (original.get("")?.kind !== "directory" || original.get("SKILL.md")?.kind !== "file")
57
+ throw new Error("invalid-hub-bundle-root");
58
+ for (const [path, node] of original)
59
+ if (path && original.get(posix.dirname(path) === "." ? "" : posix.dirname(path))?.kind !== "directory")
60
+ throw new Error("invalid-hub-bundle-parent");
61
+ for (const [path, node] of tree) {
62
+ const expected = original.get(path);
63
+ if (!expected || expected.kind !== node.kind || node.kind === "file" && (expected.kind !== "file" || expected.content !== node.content))
64
+ throw new Error(`stale-hub-bundle: ${id}/${path}; rebuild from skills-hub`);
65
+ }
66
+ tree = original;
67
+ }
68
+ // Markdown links to package resources must stay in this complete package.
69
+ for (const [path, node] of tree)
70
+ if (node.kind === "file" && path.endsWith(".md")) {
71
+ const text = Buffer.from(node.content, "base64").toString("utf8").replace(/```[^]*?```/g, "");
72
+ for (const match of text.matchAll(/\[[^\]]*\]\(([^\s)]+)(?:\s+"[^"]*")?\)/g)) {
73
+ const link = match[1];
74
+ if (/^(?:[a-z][a-z0-9+.-]*:|#|\/)/i.test(link) || /[<>${}]/.test(link))
75
+ continue;
76
+ const resource = decodeURIComponent(link.split("#")[0]);
77
+ if (!resource)
78
+ continue;
79
+ const resolved = posix.normalize(posix.join(posix.dirname(path), resource)).replace(/\/$/, "");
80
+ if (!safeRelativePath(resolved) || !tree.has(resolved))
81
+ throw new Error(`hub-resource-link: ${category.name}/${entry.name}/${path}: ${link}`);
82
+ }
83
+ }
84
+ catalog.set(id, { id, name: entry.name, description: String(parseFrontmatter(content).fields.description), root: source, tree });
85
+ }
86
+ }
87
+ if (bundle && bundle.packages.some(p => !catalog.has(p.id)))
88
+ throw new Error("hub-bundle-catalog-mismatch");
89
+ return catalog;
90
+ }
91
+ //# sourceMappingURL=hub-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-catalog.js","sourceRoot":"","sources":["../../src/hub-catalog.ts"],"names":[],"mappings":"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"}