@namewta/speculo 2.0.6 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) 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 +25 -36
  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 -7
  27. package/dist/src/install-ui.js +143 -92
  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/terminal-ui.d.ts +30 -0
  45. package/dist/src/terminal-ui.js +148 -0
  46. package/dist/src/terminal-ui.js.map +1 -0
  47. package/dist/src/transaction.d.ts +3 -14
  48. package/dist/src/transaction.js +20 -36
  49. package/dist/src/transaction.js.map +1 -1
  50. package/dist/src/workflow-install.d.ts +15 -0
  51. package/dist/src/workflow-install.js +104 -0
  52. package/dist/src/workflow-install.js.map +1 -0
  53. package/dist/src/workflows.js +1 -1
  54. package/dist/src/workflows.js.map +1 -1
  55. package/package.json +6 -2
  56. package/skills-hub/automation/grok-bot-team-steward/CHEATSHEET.md +17 -0
  57. package/skills-hub/automation/grok-bot-team-steward/INSTALL.md +23 -0
  58. package/skills-hub/automation/grok-bot-team-steward/LICENSE +21 -0
  59. package/skills-hub/automation/grok-bot-team-steward/README.md +9 -0
  60. package/skills-hub/automation/grok-bot-team-steward/SKILL.md +52 -0
  61. package/skills-hub/automation/grok-bot-team-steward/agents/openai.yaml +4 -0
  62. package/skills-hub/automation/grok-bot-team-steward/references/00-hard-rules.md +50 -0
  63. package/skills-hub/automation/grok-bot-team-steward/references/01-snapshot-schema.md +84 -0
  64. package/skills-hub/automation/grok-bot-team-steward/references/02-export-protocol.md +57 -0
  65. package/skills-hub/automation/grok-bot-team-steward/references/03-restore-protocol.md +64 -0
  66. package/skills-hub/automation/grok-bot-team-steward/references/04-inventory.md +37 -0
  67. package/skills-hub/automation/grok-bot-team-steward/references/05-conversations.md +71 -0
  68. package/skills-hub/automation/grok-bot-team-steward/references/06-sanitizer.md +39 -0
  69. package/skills-hub/automation/grok-bot-team-steward/references/07-prompts.md +87 -0
  70. package/skills-hub/automation/grok-bot-team-steward/references/08-verification.md +30 -0
  71. package/skills-hub/automation/grok-bot-team-steward/references/09-sources.md +31 -0
  72. package/skills-hub/automation/grok-bot-team-steward/scripts/scrub.sh +17 -0
  73. package/skills-hub/automation/grok-bot-team-steward/scripts/snapshot-name.sh +18 -0
  74. package/skills-hub/automation/grok-bot-team-steward/scripts/validate-snapshot.sh +62 -0
  75. package/skills-hub/automation/grok-bot-team-steward/steward/ACTIVATE.md +58 -0
  76. package/skills-hub/automation/grok-bot-team-steward/steward/SETUP-INSTRUCTIONS.md +33 -0
  77. package/skills-hub/automation/grok-bot-team-steward/steward/STEWARD-PROFILE.md +28 -0
  78. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/CHANGELOG.md +3 -0
  79. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/CHARTER.md +27 -0
  80. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/DROP-LIST.md +10 -0
  81. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/GAPS.md +6 -0
  82. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/INIT.md +14 -0
  83. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/MANIFEST.md +30 -0
  84. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/MANIFEST.yaml +20 -0
  85. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/ORG.md +15 -0
  86. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/README.md +8 -0
  87. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/RESTORE.md +13 -0
  88. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/ROSTER.md +11 -0
  89. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/GAPS.md +7 -0
  90. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/MEMORY.md +9 -0
  91. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/PROFILE.md +27 -0
  92. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/agent-spec.md +9 -0
  93. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/conversations/INDEX.md +5 -0
  94. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/conversations/main.md +9 -0
  95. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/routines.md +5 -0
  96. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/bots/_SLUG/skills.md +5 -0
  97. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/connectors.md +7 -0
  98. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/COMPLETED.md +6 -0
  99. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/CREATED.md +6 -0
  100. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/RESTORE-NOTES.md +13 -0
  101. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/SANITIZER.md +7 -0
  102. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/meta/SOURCE.md +8 -0
  103. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/rooms/_ROOM.md +8 -0
  104. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/routines/_ROUTINE.md +12 -0
  105. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/shared/shared-memory.md +5 -0
  106. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/shared/workspace-map.md +5 -0
  107. package/skills-hub/automation/grok-bot-team-steward/templates/snapshot/skills/_SKILL/SKILL.md +18 -0
  108. package/skills-hub/automation/herdr/SKILL.md +246 -0
  109. package/skills-hub/automation/orca/SKILL.md +328 -0
  110. package/skills-hub/coding/gitea-repo/LICENSE +21 -0
  111. package/skills-hub/coding/gitea-repo/SKILL.md +50 -0
  112. package/skills-hub/coding/gitea-repo/agents/openai.yaml +4 -0
  113. package/skills-hub/coding/gitea-repo/references/auth-and-scopes.md +58 -0
  114. package/skills-hub/coding/gitea-repo/references/endpoint-map.md +80 -0
  115. package/skills-hub/coding/gitea-repo/references/pagination-and-errors.md +34 -0
  116. package/skills-hub/coding/gitea-repo/scripts/gitea_api.py +814 -0
  117. package/skills-hub/coding/github-repo-steward/LICENSE +21 -0
  118. package/skills-hub/coding/github-repo-steward/SKILL.md +48 -0
  119. package/skills-hub/coding/github-repo-steward/agents/openai.yaml +4 -0
  120. package/skills-hub/coding/github-repo-steward/references/00-auth-and-tokens.md +73 -0
  121. package/skills-hub/coding/github-repo-steward/references/01-inventory.md +55 -0
  122. package/skills-hub/coding/github-repo-steward/references/02-lifecycle.md +57 -0
  123. package/skills-hub/coding/github-repo-steward/references/03-stars.md +42 -0
  124. package/skills-hub/coding/github-repo-steward/references/04-hygiene.md +40 -0
  125. package/skills-hub/coding/github-repo-steward/references/05-sources.md +42 -0
  126. package/skills-hub/coding/github-repo-steward/scripts/inventory.sh +64 -0
  127. package/skills-hub/coding/vscode-fullstack/LICENSE +21 -0
  128. package/skills-hub/coding/vscode-fullstack/SKILL.md +47 -0
  129. package/skills-hub/coding/vscode-fullstack/agents/openai.yaml +4 -0
  130. package/skills-hub/coding/vscode-fullstack/references/extensions-and-settings.md +181 -0
  131. package/skills-hub/coding/vscode-fullstack/references/profiles-and-validation.md +62 -0
  132. package/skills-hub/coding/vscode-fullstack/references/runtime-reuse.md +52 -0
  133. package/skills-hub/design/photo-retouch/LICENSE +21 -0
  134. package/skills-hub/design/photo-retouch/SKILL.md +50 -0
  135. package/skills-hub/design/photo-retouch/agents/openai.yaml +4 -0
  136. package/skills-hub/design/photo-retouch/references/basic-retouch.md +58 -0
  137. package/skills-hub/design/photo-retouch/references/formal-portrait.md +57 -0
  138. package/skills-hub/design/photo-retouch/references/object-and-canvas.md +82 -0
  139. package/skills-hub/design/photo-retouch/references/product-photo.md +41 -0
  140. package/skills-hub/design/photo-retouch/references/repair-and-look.md +61 -0
  141. package/skills-hub/design/photo-retouch/references/social-effects.md +55 -0
  142. package/skills-hub/design/photo-retouch/references/travel-creative.md +79 -0
  143. package/skills-hub/system/clash-client-profile/LICENSE +21 -0
  144. package/skills-hub/system/clash-client-profile/SKILL.md +79 -0
  145. package/skills-hub/system/clash-client-profile/agents/openai.yaml +4 -0
  146. package/skills-hub/system/clash-client-profile/references/acceptance.md +81 -0
  147. package/skills-hub/system/clash-client-profile/references/browser-privacy.md +35 -0
  148. package/skills-hub/system/clash-client-profile/references/clash-verge.md +40 -0
  149. package/skills-hub/system/clash-client-profile/references/dns-workflow.md +147 -0
  150. package/skills-hub/system/clash-client-profile/references/flclash.md +24 -0
  151. package/skills-hub/system/clash-client-profile/references/network-performance.md +25 -0
  152. package/skills-hub/system/clash-client-profile/references/platform-dns.md +109 -0
  153. package/skills-hub/system/clash-client-profile/references/sources.md +46 -0
  154. package/skills-hub/system/clash-client-profile/references/troubleshooting.md +82 -0
  155. package/skills-hub/system/clash-client-profile/scripts/dns_guard.py +650 -0
  156. package/skills-hub/system/clash-client-profile/scripts/proxy_doctor.py +213 -0
  157. package/skills-hub/system/clash-client-profile/scripts/render_rules.py +34 -0
  158. package/skills-hub/system/clash-client-profile/templates/ai-rules.yaml +18 -0
  159. package/skills-hub/system/clash-client-profile/templates/dns-request.example.json +9 -0
  160. package/skills-hub/system/clash-client-profile/templates/dns.yaml +8 -0
  161. package/skills-hub/system/linux-dev-disk-cleanup/LICENSE +21 -0
  162. package/skills-hub/system/linux-dev-disk-cleanup/SKILL.md +42 -0
  163. package/skills-hub/system/linux-dev-disk-cleanup/agents/openai.yaml +4 -0
  164. package/skills-hub/system/linux-dev-disk-cleanup/references/linux-cleanup-workflow.md +145 -0
  165. package/skills-hub/system/optimize-codex-config/LICENSE +21 -0
  166. package/skills-hub/system/optimize-codex-config/SKILL.md +101 -0
  167. package/skills-hub/system/optimize-codex-config/agents/openai.yaml +4 -0
  168. package/skills-hub/system/optimize-codex-config/assets/capabilities.example.json +22 -0
  169. package/skills-hub/system/optimize-codex-config/references/cli.md +35 -0
  170. package/skills-hub/system/optimize-codex-config/references/configuration-contract.md +33 -0
  171. package/skills-hub/system/optimize-codex-config/references/optimization-method.md +38 -0
  172. package/skills-hub/system/optimize-codex-config/references/privacy.md +41 -0
  173. package/skills-hub/system/optimize-codex-config/references/sources.md +24 -0
  174. package/skills-hub/system/optimize-codex-config/references/statusline.md +31 -0
  175. package/skills-hub/system/optimize-codex-config/references/transactions.md +32 -0
  176. package/skills-hub/system/optimize-codex-config/references/troubleshooting.md +95 -0
  177. package/skills-hub/system/optimize-codex-config/scripts/adapters/claude.mjs +24 -0
  178. package/skills-hub/system/optimize-codex-config/scripts/adapters/codex.mjs +10 -0
  179. package/skills-hub/system/optimize-codex-config/scripts/ai-cli-config.mjs +67 -0
  180. package/skills-hub/system/optimize-codex-config/scripts/audit-codex-config.mjs +762 -0
  181. package/skills-hub/system/optimize-codex-config/scripts/lib/document.mjs +166 -0
  182. package/skills-hub/system/optimize-codex-config/scripts/lib/inspect.mjs +211 -0
  183. package/skills-hub/system/optimize-codex-config/scripts/lib/io.mjs +104 -0
  184. package/skills-hub/system/optimize-codex-config/scripts/lib/plan.mjs +79 -0
  185. package/skills-hub/system/optimize-codex-config/scripts/lib/transaction.mjs +205 -0
  186. package/skills-hub/system/optimize-codex-config/scripts/lib/writers.mjs +46 -0
  187. package/skills-hub/system/optimize-codex-config/scripts/statusline/claude-statusline.mjs +94 -0
  188. package/skills-hub/system/optimize-codex-config/scripts/vendor/THIRD-PARTY-NOTICES.txt +250 -0
  189. package/skills-hub/system/optimize-codex-config/scripts/vendor/build-package-lock.json +488 -0
  190. package/skills-hub/system/optimize-codex-config/scripts/vendor/manifest.json +14 -0
  191. package/skills-hub/system/optimize-codex-config/scripts/vendor/parsers.mjs +16 -0
  192. package/skills-hub/system/proxy-region-locale/LICENSE +21 -0
  193. package/skills-hub/system/proxy-region-locale/SKILL.md +42 -0
  194. package/skills-hub/system/proxy-region-locale/agents/openai.yaml +4 -0
  195. package/skills-hub/system/proxy-region-locale/references/linux.md +35 -0
  196. package/skills-hub/system/proxy-region-locale/references/macos.md +31 -0
  197. package/skills-hub/system/proxy-region-locale/references/windows.md +45 -0
  198. package/skills-hub/system/system-health-audit/LICENSE +21 -0
  199. package/skills-hub/system/system-health-audit/SKILL.md +41 -0
  200. package/skills-hub/system/system-health-audit/agents/openai.yaml +4 -0
  201. package/skills-hub/system/system-health-audit/references/platforms.md +37 -0
  202. package/skills-hub/system/system-health-audit/scripts/system_audit.py +41 -0
  203. package/skills-hub/system/windows-dev-disk-cleanup/LICENSE +21 -0
  204. package/skills-hub/system/windows-dev-disk-cleanup/SKILL.md +40 -0
  205. package/skills-hub/system/windows-dev-disk-cleanup/agents/openai.yaml +4 -0
  206. package/skills-hub/system/windows-dev-disk-cleanup/references/windows-cleanup-workflow.md +121 -0
  207. package/skills-hub/writing/.gitkeep +0 -0
  208. package/skills-hub/writing/job-application/LICENSE +21 -0
  209. package/skills-hub/writing/job-application/SKILL.md +160 -0
  210. package/skills-hub/writing/job-application/agents/openai.yaml +4 -0
  211. package/skills-hub/writing/job-application/assets/resume.css +10 -0
  212. package/skills-hub/writing/job-application/config.example.json +9 -0
  213. package/skills-hub/writing/job-application/references/company-research.md +7 -0
  214. package/skills-hub/writing/job-application/references/corpus-schema.md +33 -0
  215. package/skills-hub/writing/job-application/references/honesty-gate.md +29 -0
  216. package/skills-hub/writing/job-application/references/improvement-plan.md +15 -0
  217. package/skills-hub/writing/job-application/references/ingest-protocol.md +18 -0
  218. package/skills-hub/writing/job-application/references/interview-speech.md +16 -0
  219. package/skills-hub/writing/job-application/references/jd-parse.md +18 -0
  220. package/skills-hub/writing/job-application/references/persist-paths.md +34 -0
  221. package/skills-hub/writing/job-application/references/question-bank.md +19 -0
  222. package/skills-hub/writing/job-application/references/rendering.md +9 -0
  223. package/skills-hub/writing/job-application/references/resume-playbook.md +30 -0
  224. package/skills-hub/writing/job-application/scripts/README.md +12 -0
  225. package/skills-hub/writing/job-application/scripts/ingest_kb.py +188 -0
  226. package/skills-hub/writing/job-application/scripts/render_resume.py +144 -0
  227. package/skills-hub/writing/job-application/scripts/validate_claims.py +52 -0
  228. package/skills-hub/writing/job-application/scripts/write_config.py +72 -0
  229. package/skills-hub/writing/job-application/templates/application-index.md +10 -0
  230. package/skills-hub/writing/job-application/templates/brief.md +16 -0
  231. package/skills-hub/writing/job-application/templates/changelog.md +6 -0
  232. package/skills-hub/writing/job-application/templates/company-research.md +15 -0
  233. package/skills-hub/writing/job-application/templates/corpus.md +11 -0
  234. package/skills-hub/writing/job-application/templates/evidence-map.md +5 -0
  235. package/skills-hub/writing/job-application/templates/framings.md +6 -0
  236. package/skills-hub/writing/job-application/templates/improvement-plan.md +16 -0
  237. package/skills-hub/writing/job-application/templates/ingest-log.md +4 -0
  238. package/skills-hub/writing/job-application/templates/known-gaps.md +4 -0
  239. package/skills-hub/writing/job-application/templates/match-report.md +21 -0
  240. package/skills-hub/writing/job-application/templates/methodology-cache.md +10 -0
  241. package/skills-hub/writing/job-application/templates/persist-index.md +11 -0
  242. package/skills-hub/writing/job-application/templates/profile.md +21 -0
  243. package/skills-hub/writing/job-application/templates/questions.md +22 -0
  244. package/skills-hub/writing/job-application/templates/resume-original.md +10 -0
  245. package/skills-hub/writing/job-application/templates/resume-tailored.md +21 -0
  246. package/skills-hub/writing/job-application/templates/sources-index.md +6 -0
  247. package/skills-hub/writing/job-application/templates/speech.md +19 -0
  248. package/skills-hub/writing/job-application/templates/stories.md +9 -0
  249. package/skills-hub/writing/job-application/templates/story-bank.md +11 -0
  250. package/skills-hub/writing/job-application/templates/strengths.md +4 -0
  251. package/skills-hub/writing/job-application/templates/style-memory.md +7 -0
  252. package/skills-hub/writing/ste-zh/LICENSE +21 -0
  253. package/skills-hub/writing/ste-zh/NOTICE.md +9 -0
  254. package/skills-hub/writing/ste-zh/SKILL.md +130 -0
  255. package/skills-hub/writing/ste-zh/agents/openai.yaml +6 -0
  256. package/skills-hub/writing/ste-zh/examples/zh-report.md +23 -0
  257. package/skills-hub/writing/ste-zh/references/english-modes.md +13 -0
  258. package/skills-hub/writing/ste-zh/references/terminology.md +13 -0
  259. package/skills-hub/writing/ste-zh/references/zh-rules.md +29 -0
  260. package/template/.speculo/refresh-contract.json +2 -0
  261. package/template/canonical/canonical-specdev-goal-plan.md +33 -25
  262. package/template/canonical/canonical-specdev-grill-with-docs.md +214 -206
  263. package/template/canonical/canonical-specdev-spec.md +214 -206
  264. package/template/canonical/canonical-specdev-tickets.md +214 -206
  265. package/template/canonical/canonical-specdev-wayfinder.md +214 -206
  266. package/template/lib/speculo-runtime.mjs +183 -8
  267. package/template/references/coordination/coordination-contract.md +11 -3
  268. package/template/references/coordination/modes/cli.md +2 -2
  269. package/template/references/coordination/modes/herdr.md +9 -9
  270. package/template/references/coordination/modes/orca.md +11 -11
  271. package/template/references/coordination/project-facts.schema.json +1 -0
  272. package/template/workflows/specdev/specdev-i-init-setup/SKILL.md +7 -6
  273. package/template/workflows/specdev/specdev-i-init-setup/references/first-setup.md +30 -1
@@ -0,0 +1,53 @@
1
+ import type { HubCatalog } from "./hub-catalog.js";
2
+ export { discoverHubCatalog, type HubCatalog } from "./hub-catalog.js";
3
+ import { type ProjectionHost, type SkillRequest } from "./agent-skills.js";
4
+ import { type SkillRecord } from "./skill-trees.js";
5
+ type OwnedNode = {
6
+ path: string;
7
+ kind: "file" | "directory";
8
+ mode: number;
9
+ sha256?: string;
10
+ };
11
+ type OwnedPackage = {
12
+ id: string;
13
+ host: ProjectionHost;
14
+ name: string;
15
+ nodes: OwnedNode[];
16
+ };
17
+ export type HubManifest = {
18
+ schema_version: 1;
19
+ package_version: string;
20
+ targets: ProjectionHost[];
21
+ skill_ids: string[];
22
+ packages: OwnedPackage[];
23
+ };
24
+ export type HubSummary = {
25
+ selected: string[];
26
+ targets: ProjectionHost[];
27
+ installed: string[];
28
+ created: string[];
29
+ updated: string[];
30
+ removed: string[];
31
+ conflicts: string[];
32
+ };
33
+ export declare const HUB_MANIFEST = "hub-skills.json";
34
+ export declare function parseHubSkillSpec(spec: string): SkillRequest;
35
+ export declare function resolveHubIds(request: SkillRequest | undefined, catalog: HubCatalog, existing: string[]): string[];
36
+ export declare function readHubManifest(target: string): Promise<HubManifest | null>;
37
+ export declare function planHubSkills(options: {
38
+ target: string;
39
+ stagedRoot: string;
40
+ packageVersion: string;
41
+ catalog: HubCatalog;
42
+ ids: string[];
43
+ targets: ProjectionHost[];
44
+ }): Promise<{
45
+ records: SkillRecord[];
46
+ summary: HubSummary;
47
+ warnings: string[];
48
+ }>;
49
+ export declare function inspectHubSkills(target: string): Promise<Array<{
50
+ id: string;
51
+ ok: boolean;
52
+ message: string;
53
+ }>>;
@@ -0,0 +1,157 @@
1
+ import { readFile, readdir, writeFile } from "node:fs/promises";
2
+ import { join, posix } from "node:path";
3
+ export { discoverHubCatalog } from "./hub-catalog.js";
4
+ import { assertProjectionCasing, normalizeSkillTargets, parseSkillSpec, sha256Buffer } from "./agent-skills.js";
5
+ import { containedPath, INSTALL_ROOT } from "./paths.js";
6
+ import { absent, sameNode, snapshotSkillTree, validSkillPath } from "./skill-trees.js";
7
+ export const HUB_MANIFEST = "hub-skills.json";
8
+ const ID = /^[a-z0-9]+(?:-[a-z0-9]+)*\/[a-z0-9]+(?:-[a-z0-9]+)*$/;
9
+ export function parseHubSkillSpec(spec) {
10
+ try {
11
+ return parseSkillSpec(spec);
12
+ }
13
+ catch {
14
+ throw new Error("--hub-skills must be none|keep|all or comma-separated category/name ids");
15
+ }
16
+ }
17
+ export function resolveHubIds(request, catalog, existing) {
18
+ const ids = !request || request.mode === "keep" ? existing : request.mode === "none" ? [] : request.mode === "all" ? [...catalog.keys()] : request.mode === "set" ? request.assetIds : [];
19
+ for (const id of ids)
20
+ if (!catalog.has(id))
21
+ throw new Error("unavailable-hub-skill: " + id + "; explicitly select a new list or none");
22
+ return [...new Set(ids)].sort();
23
+ }
24
+ function ownedNodes(tree) {
25
+ return [...tree].map(([path, node]) => {
26
+ if (node.kind === "absent")
27
+ throw new Error("absent-owned-node");
28
+ return { path, kind: node.kind, mode: node.mode, ...(node.kind === "file" ? { sha256: sha256Buffer(Buffer.from(node.content, "base64")) } : {}) };
29
+ });
30
+ }
31
+ function matches(tree, nodes) {
32
+ const actual = new Map(ownedNodes(tree).map(n => [n.path, n]));
33
+ return actual.size === nodes.length && nodes.every(n => {
34
+ const a = actual.get(n.path);
35
+ return a?.kind === n.kind && a.mode === n.mode && a.sha256 === n.sha256;
36
+ });
37
+ }
38
+ export async function readHubManifest(target) {
39
+ let text;
40
+ try {
41
+ text = await readFile(await containedPath(target, `${INSTALL_ROOT}/.speculo/${HUB_MANIFEST}`), "utf8");
42
+ }
43
+ catch (e) {
44
+ if (e.code === "ENOENT")
45
+ return null;
46
+ throw e;
47
+ }
48
+ const m = JSON.parse(text);
49
+ if (!m || m.schema_version !== 1 || typeof m.package_version !== "string" || !Array.isArray(m.targets) ||
50
+ normalizeSkillTargets(m.targets).length !== m.targets.length || !Array.isArray(m.skill_ids) || m.skill_ids.some(id => !ID.test(id)) ||
51
+ new Set(m.skill_ids).size !== m.skill_ids.length || !Array.isArray(m.packages) || (!m.targets.length && m.skill_ids.length))
52
+ throw new Error("invalid-hub-manifest");
53
+ const destinations = new Set();
54
+ for (const p of m.packages) {
55
+ if (!p || !ID.test(p.id) || p.name !== p.id.split("/")[1] || !["agents", "claude"].includes(p.host) || !Array.isArray(p.nodes))
56
+ throw new Error("invalid-hub-package");
57
+ const root = `.${p.host}/skills/${p.name}`;
58
+ if (destinations.has(root))
59
+ throw new Error("duplicate-hub-destination");
60
+ destinations.add(root);
61
+ const paths = new Set();
62
+ for (const n of p.nodes) {
63
+ if (!n || typeof n.path !== "string" || !validSkillPath(root + (n.path ? "/" + n.path : "")) || paths.has(n.path) ||
64
+ !Number.isInteger(n.mode) || n.mode < 0 || n.mode > 0o777 || !["file", "directory"].includes(n.kind) ||
65
+ (n.kind === "file" ? !/^[a-f0-9]{64}$/.test(n.sha256 ?? "") : n.sha256 !== undefined))
66
+ throw new Error("invalid-hub-node");
67
+ if (process.platform === "win32")
68
+ n.mode = n.kind === "directory" ? 0o755 : n.mode & 0o200 ? 0o666 : 0o444;
69
+ paths.add(n.path);
70
+ }
71
+ if (!p.nodes.some(n => n.path === "" && n.kind === "directory") || !p.nodes.some(n => n.path === "SKILL.md" && n.kind === "file"))
72
+ throw new Error("invalid-hub-package-root");
73
+ for (const n of p.nodes)
74
+ if (n.path && !p.nodes.some(d => d.kind === "directory" && d.path === (posix.dirname(n.path) === "." ? "" : posix.dirname(n.path))))
75
+ throw new Error("invalid-hub-node-parent");
76
+ }
77
+ return m;
78
+ }
79
+ export async function planHubSkills(options) {
80
+ const old = await readHubManifest(options.target), targets = normalizeSkillTargets(options.targets);
81
+ if (options.ids.length && !targets.length)
82
+ throw new Error("--hub-skills requires at least one --skill-targets destination");
83
+ const next = { schema_version: 1, package_version: options.packageVersion, targets, skill_ids: options.ids, packages: [] };
84
+ const summary = { selected: options.ids, targets, installed: [], created: [], updated: [], removed: [], conflicts: [] };
85
+ const records = [], warnings = [];
86
+ for (const host of ["agents", "claude"]) {
87
+ const previous = old?.packages.filter(p => p.host === host) ?? [];
88
+ const desired = targets.includes(host) ? options.ids : [];
89
+ for (const id of new Set([...desired, ...previous.map(p => p.id)])) {
90
+ const prior = previous.find(p => p.id === id), skill = options.catalog.get(id), name = skill?.name ?? prior.name;
91
+ const root = `.${host}/skills/${name}`, label = `${host}:${id}`;
92
+ try {
93
+ await assertProjectionCasing(options.target, root);
94
+ const names = await readdir(await containedPath(options.target, `.${host}/skills`)).catch((e) => { if (e.code === "ENOENT")
95
+ return []; throw e; });
96
+ if (names.some(n => n.toLowerCase() === name.toLowerCase() && n !== name))
97
+ throw new Error("ambiguous Skill directory casing");
98
+ const before = await snapshotSkillTree(await containedPath(options.target, root));
99
+ if (prior ? !matches(before, prior.nodes) : before.size > 0)
100
+ throw new Error(prior ? "package content, mode or resource list differs from ownership" : "unmanaged same-name directory exists");
101
+ const after = desired.includes(id) ? skill.tree : new Map();
102
+ const pending = [];
103
+ for (const path of new Set([...before.keys(), ...after.keys()])) {
104
+ const a = before.get(path) ?? absent, b = after.get(path) ?? absent;
105
+ if (a.kind !== "absent" && b.kind !== "absent" && a.kind !== b.kind)
106
+ throw new Error("resource node type changed: " + path);
107
+ pending.push({ name: root + (path ? "/" + path : ""), before: a, after: b });
108
+ }
109
+ if (after.size) {
110
+ next.packages.push({ id, name, host, nodes: ownedNodes(after) });
111
+ summary.installed.push(label);
112
+ if (!prior)
113
+ summary.created.push(label);
114
+ else if (pending.some(r => !sameNode(r.before, r.after)))
115
+ summary.updated.push(label);
116
+ }
117
+ else if (prior)
118
+ summary.removed.push(label);
119
+ // Include unchanged nodes to detect extra files and recover partial package changes.
120
+ if (pending.some(r => !sameNode(r.before, r.after)))
121
+ records.push(...pending);
122
+ }
123
+ catch (e) {
124
+ summary.conflicts.push(label);
125
+ warnings.push(`hub-package-conflict ${root}: ${String(e)}; whole package retained`);
126
+ if (prior) {
127
+ next.packages.push(prior);
128
+ summary.installed.push(label);
129
+ }
130
+ }
131
+ }
132
+ }
133
+ await writeFile(join(options.stagedRoot, ".speculo", HUB_MANIFEST), JSON.stringify(next, null, 2) + "\n");
134
+ return { records, summary, warnings };
135
+ }
136
+ export async function inspectHubSkills(target) {
137
+ try {
138
+ const m = await readHubManifest(target);
139
+ if (!m)
140
+ return [];
141
+ const checks = [];
142
+ for (const p of m.packages) {
143
+ const tree = await snapshotSkillTree(await containedPath(target, `.${p.host}/skills/${p.name}`));
144
+ const ok = m.targets.includes(p.host) && m.skill_ids.includes(p.id) && matches(tree, p.nodes);
145
+ checks.push({ id: `hub:${p.host}:${p.id}`, ok, message: ok ? "complete owned package matches; host invocation not probed" : "package drifted or retained after conflict" });
146
+ }
147
+ for (const host of m.targets)
148
+ for (const id of m.skill_ids)
149
+ if (!m.packages.some(p => p.host === host && p.id === id))
150
+ checks.push({ id: `hub:${host}:${id}`, ok: false, message: "selected package not installed due to conflict" });
151
+ return checks;
152
+ }
153
+ catch (e) {
154
+ return [{ id: "hub-skills", ok: false, message: String(e) }];
155
+ }
156
+ }
157
+ //# sourceMappingURL=hub-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub-skills.js","sourceRoot":"","sources":["../../src/hub-skills.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type SkillRequest, type ProjectionHost, type ExposureSummary, type ProjectionSummaries } from "./agent-skills.js";
2
+ import { type HubSummary } from "./hub-skills.js";
2
3
  import { type TransactionHook } from "./transaction.js";
3
4
  import { type RefreshSummary } from "./refresh.js";
4
5
  import { type WorkflowSelection } from "./workflows.js";
@@ -12,6 +13,8 @@ export type SpeculoCommandResult = {
12
13
  };
13
14
  projections: ProjectionSummaries;
14
15
  warnings: string[];
16
+ hub: HubSummary;
17
+ removedWorkflowIds: string[];
15
18
  };
16
19
  export type InstallProgress = "staging" | "staged" | "committing" | "committed";
17
20
  export type InstallPreview = {
@@ -19,6 +22,8 @@ export type InstallPreview = {
19
22
  mode: "init" | "refresh";
20
23
  workflowIds: string[];
21
24
  retainedWorkflowIds: string[];
25
+ removedWorkflowIds?: string[];
26
+ hub?: HubSummary;
22
27
  exposure: ExposureSummary;
23
28
  projections: ProjectionSummaries;
24
29
  warnings: string[];
@@ -28,6 +33,7 @@ export type SpeculoOptions = {
28
33
  selection?: WorkflowSelection;
29
34
  skillTargets?: ProjectionHost[];
30
35
  skills?: SkillRequest;
36
+ hubSkills?: SkillRequest;
31
37
  /** Ask once for missing exposure options after staging; library calls default to non-interactive. */
32
38
  promptExposure?: boolean;
33
39
  /** Called after staging and validation, before any active installation changes. */
package/dist/src/index.js CHANGED
@@ -5,6 +5,8 @@ import { randomUUID } from "node:crypto";
5
5
  import { hostname } from "node:os";
6
6
  import { planExternalEdits, readPersistentKnowledge, writeDiscoveryAssets } from "./agent-files.js";
7
7
  import { planSkillProjection, resolveExposure, validateExposureRequest } from "./agent-skills.js";
8
+ import { discoverHubCatalog, readHubManifest, resolveHubIds, planHubSkills } from "./hub-skills.js";
9
+ import { planWorkflowRemoval, writeRemovalMetadata } from "./workflow-install.js";
8
10
  import { readAssetCatalog } from "./assets.js";
9
11
  import { InstallCancelled } from "./interaction.js";
10
12
  import { assertImage, snapshotExternalFiles, writeDurableJson } from "./external-files.js";
@@ -12,7 +14,7 @@ import { assertInstallDirectory, cleanEmptyTransactionsDirectory, commitInstall,
12
14
  import { fingerprintTree } from "./manifest.js";
13
15
  import { prepareRefresh, loadWorkflowContract, RefreshBlockedError } from "./refresh.js";
14
16
  import { pathExists } from "./utils.js";
15
- import { discoverWorkflowCatalog, isInteractive, promptWorkflowSelection, scanInstalledWorkflows, } from "./workflows.js";
17
+ import { discoverWorkflowCatalog, isInteractive, scanInstalledWorkflows, } from "./workflows.js";
16
18
  const CORE_ASSETS = [".speculo", "commands", "references", "lib", "config.json"];
17
19
  const INSTALL_SUBDIR = INSTALL_ROOT;
18
20
  const WORKFLOW_ENTRY = "SKILL.md";
@@ -41,22 +43,6 @@ async function copyCoreAssets(packageRoot, stagedRoot) {
41
43
  });
42
44
  }
43
45
  }
44
- async function resolveSelection(packageRoot, currentRoot, options) {
45
- const catalog = await discoverWorkflowCatalog(packageRoot);
46
- if (options.selection) {
47
- const ids = [...new Set(options.selection.workflowIds)].sort();
48
- for (const id of ids)
49
- if (!catalog.has(id))
50
- throw new Error("Unknown workflow package: " + id);
51
- return { workflowIds: ids };
52
- }
53
- const installed = new Set(await scanInstalledWorkflows(currentRoot));
54
- if (!isInteractive())
55
- return { workflowIds: [...installed].filter((id) => catalog.has(id)).sort() };
56
- return promptWorkflowSelection(catalog, {
57
- preSelectedWorkflowIds: new Set([...installed].filter((workflowId) => catalog.has(workflowId))),
58
- });
59
- }
60
46
  async function copySelectedWorkflow(packageRoot, stagedRoot, workflowId) {
61
47
  const source = join(assetRoot(packageRoot), "workflows", workflowId);
62
48
  if (!(await pathExists(join(source, WORKFLOW_ENTRY))))
@@ -76,35 +62,16 @@ async function copySelectedWorkflow(packageRoot, stagedRoot, workflowId) {
76
62
  const stagedState = join(stagedRoot, ".speculo", workflowId);
77
63
  await cp(stateSource, stagedState, { recursive: true, force: true });
78
64
  }
79
- async function copyUnselectedCurrentWorkflows(catalog, selection, previousRoot, stagedRoot) {
80
- const selected = new Set(selection.workflowIds);
81
- for (const workflowId of catalog.keys()) {
82
- if (selected.has(workflowId))
83
- continue;
84
- const previousWorkflow = join(previousRoot, "workflows", workflowId);
85
- if (await pathExists(previousWorkflow))
86
- await cp(previousWorkflow, join(stagedRoot, "workflows", workflowId), { recursive: true, force: true });
87
- }
88
- }
89
- async function installedUnselectedWorkflowIds(catalog, selection, previousRoot) {
90
- const selected = new Set(selection.workflowIds);
91
- const installed = [];
92
- for (const workflowId of catalog.keys()) {
93
- if (!selected.has(workflowId) && await pathExists(join(previousRoot, "workflows", workflowId, WORKFLOW_ENTRY)))
94
- installed.push(workflowId);
95
- }
96
- return installed.sort();
97
- }
98
- async function buildStagedInstall(packageRoot, target, previousRoot, catalog, selection, existed) {
65
+ async function buildStagedInstall(packageRoot, target, previousRoot, removal, selection, existed) {
99
66
  await mkdir(target, { recursive: true });
100
67
  await mkdir(join(target, TRANSACTIONS_ROOT), { recursive: true });
101
68
  const stagedRoot = await mkdtemp(join(target, TRANSACTIONS_ROOT, "stage-"));
102
69
  try {
103
70
  await copyCoreAssets(packageRoot, stagedRoot);
104
- await copyUnselectedCurrentWorkflows(catalog, selection, previousRoot, stagedRoot);
71
+ for (const id of removal.retained)
72
+ await cp(join(previousRoot, "workflows", id), join(stagedRoot, "workflows", id), { recursive: true, preserveTimestamps: true, verbatimSymlinks: true });
105
73
  for (const workflowId of selection.workflowIds)
106
74
  await copySelectedWorkflow(packageRoot, stagedRoot, workflowId);
107
- const unselectedWorkflowIds = await installedUnselectedWorkflowIds(catalog, selection, previousRoot);
108
75
  const workspace = { schema_version: 2, layout_version: "agents-v2", installation_id: existed ? (await readWorkspace(target)).installation_id : randomUUID(), path_base: "project-root", roots: DEFAULT_ROOTS };
109
76
  validateWorkspace(workspace);
110
77
  await writeFile(join(stagedRoot, ".speculo", "workspace.json"), JSON.stringify(workspace, null, 2) + "\n");
@@ -114,9 +81,14 @@ async function buildStagedInstall(packageRoot, target, previousRoot, catalog, se
114
81
  previousRoot,
115
82
  stagedRoot,
116
83
  selectedWorkflowIds: selection.workflowIds,
117
- installedWorkflowIds: [...new Set([...selection.workflowIds, ...unselectedWorkflowIds])].sort(),
84
+ retainedWorkflowIds: removal.retained,
85
+ installedWorkflowIds: [...new Set([...selection.workflowIds, ...removal.retained])].sort(),
118
86
  existed,
119
87
  });
88
+ await writeRemovalMetadata(stagedRoot, removal);
89
+ for (const id of removal.retained)
90
+ if (await fingerprintTree(join(previousRoot, "workflows", id)) !== await fingerprintTree(join(stagedRoot, "workflows", id)))
91
+ throw new Error("retained-workflow-drift: " + id);
120
92
  return { stagedRoot, refresh };
121
93
  }
122
94
  catch (error) {
@@ -130,6 +102,12 @@ export async function initSpeculo(targetArg = ".", options = {}) {
130
102
  const packageRoot = resolve(options.packageRoot ?? process.cwd());
131
103
  const root = installRoot(target);
132
104
  await assertInstallDirectory(target);
105
+ if (options.skillTargets?.length === 0) {
106
+ const currentHub = await readHubManifest(target);
107
+ const ids = resolveHubIds(options.hubSkills, await discoverHubCatalog(packageRoot), currentHub?.packages.map(p => p.id) ?? []);
108
+ if (ids.length)
109
+ throw new Error("--hub-skills requires at least one --skill-targets destination");
110
+ }
133
111
  const existed = await pathExists(root);
134
112
  // Reject unsafe handbook nodes before creating installation scaffolding.
135
113
  // The authoritative snapshot is still retaken after acquiring the lock.
@@ -152,11 +130,26 @@ export async function initSpeculo(targetArg = ".", options = {}) {
152
130
  await writeFile(join(lockRoot, ".gitignore"), "*\n", { mode: 0o600 });
153
131
  await writeDurableJson(join(lockRoot, "owner.json"), { schema_version: 1, id: randomUUID(), host: hostname(), pid: process.pid, started_at: new Date().toISOString() });
154
132
  const externalSnapshot = await snapshotExternalFiles(target);
155
- const catalog = await discoverWorkflowCatalog(packageRoot);
156
- const selection = await resolveSelection(packageRoot, root, options);
157
133
  const initialFingerprint = await fingerprintTree(root);
134
+ const catalog = await discoverWorkflowCatalog(packageRoot);
135
+ const hubCatalog = await discoverHubCatalog(packageRoot), hubManifest = await readHubManifest(target);
136
+ const installedBefore = await scanInstalledWorkflows(root);
137
+ let workflowIds = [...new Set(options.selection?.workflowIds ?? installedBefore)].sort();
138
+ for (const id of workflowIds)
139
+ if (!catalog.has(id))
140
+ throw new Error("Unavailable workflow: " + id + "; explicitly select a new list or none");
141
+ const priorHubIds = [...new Set(hubManifest?.packages.map(p => p.id) ?? [])];
142
+ let hubIds = resolveHubIds(options.hubSkills, hubCatalog, priorHubIds);
143
+ if (isInteractive() && options.promptExposure && (!options.selection || !options.hubSkills)) {
144
+ const { promptPackages } = await import("./install-ui.js");
145
+ ({ workflowIds, hubIds } = await promptPackages({ workflows: catalog, hub: hubCatalog, workflowIds, hubIds, chooseWorkflows: !options.selection, chooseHub: !options.hubSkills }));
146
+ }
147
+ if (hubIds.length && options.skillTargets?.length === 0)
148
+ throw new Error("--hub-skills requires at least one --skill-targets destination");
149
+ const selection = { workflowIds };
150
+ const removal = await planWorkflowRemoval(target, root, installedBefore, workflowIds);
158
151
  options.onProgress?.("staging");
159
- const staged = await buildStagedInstall(packageRoot, target, root, catalog, selection, existed);
152
+ const staged = await buildStagedInstall(packageRoot, target, root, removal, selection, existed);
160
153
  stagedRoot = staged.stagedRoot;
161
154
  refresh = staged.refresh;
162
155
  options.onProgress?.("staged");
@@ -178,25 +171,33 @@ export async function initSpeculo(targetArg = ".", options = {}) {
178
171
  const assetCatalog = await readAssetCatalog(stagedRoot);
179
172
  const exposure = await resolveExposure({
180
173
  target, catalog: assetCatalog, targets: options.skillTargets, request: options.skills, prompt: options.promptExposure === true,
174
+ removedAssetIds: removal.removedAssetIds, hubSelected: hubIds.length > 0, defaultTargets: hubManifest ? [...new Set([...hubManifest.targets, ...hubManifest.packages.filter(p => hubIds.includes(p.id)).map(p => p.host)])] : undefined,
181
175
  });
182
176
  const projection = await planSkillProjection({ target, stagedRoot, packageVersion: refresh.targetVersion, exposure });
183
177
  if (projection.blockers.length)
184
178
  throw new RefreshBlockedError(projection.blockers);
185
- const warnings = projection.warnings.map(w => `${w.code} ${w.path}: ${w.message}`);
179
+ const removalDrift = projection.warnings.filter(w => removal.removedAssetIds.some(id => w.path.endsWith(":" + id)));
180
+ if (removalDrift.length)
181
+ throw new RefreshBlockedError(removalDrift);
182
+ const hub = await planHubSkills({ target, stagedRoot, packageVersion: refresh.targetVersion, catalog: hubCatalog, ids: hubIds, targets: exposure.targets });
183
+ const warnings = [...removal.warnings, ...projection.warnings.map(w => `${w.code} ${w.path}: ${w.message}`), ...hub.warnings];
186
184
  if (options.confirmInstall && !await options.confirmInstall({
187
185
  target, mode: existed ? "refresh" : "init", workflowIds: selection.workflowIds,
188
186
  retainedWorkflowIds: installed.filter(id => !selection.workflowIds.includes(id)),
189
- exposure: projection.exposure, projections: projection.summaries, warnings,
187
+ exposure: projection.exposure, projections: projection.summaries, warnings, hub: hub.summary, removedWorkflowIds: removal.removed,
190
188
  }))
191
189
  throw new InstallCancelled(0);
192
190
  options.onProgress?.("committing");
193
- await commitInstall(target, stagedRoot, initialFingerprint, edits, options.transactionHook, projection.records);
191
+ const removedProjectionPaths = new Set(removal.projectionRecords.map(r => r.name));
192
+ await commitInstall(target, stagedRoot, initialFingerprint, edits, options.transactionHook, [
193
+ ...(projection.records ?? []).filter(r => !removedProjectionPaths.has(r.name)), ...removal.projectionRecords, ...hub.records,
194
+ ]);
194
195
  assets.push(...edits.map((edit) => edit.name + " (managed discovery/runtime references)"));
195
196
  stagedRoot = undefined;
196
197
  options.onProgress?.("committed");
197
198
  if (!refresh)
198
199
  throw new Error("Speculo refresh result was not produced");
199
- return { target, mode: existed ? "refresh" : "init", assets, refresh, exposure: { ...projection.exposure, projected: projection.count }, projections: projection.summaries, warnings };
200
+ return { target, mode: existed ? "refresh" : "init", assets, refresh, exposure: { ...projection.exposure, projected: projection.count }, projections: projection.summaries, warnings, hub: hub.summary, removedWorkflowIds: removal.removed };
200
201
  }
201
202
  catch (error) {
202
203
  failure = error;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,12 @@
1
+ import type { HubCatalog } from "./hub-skills.js";
1
2
  import type { Asset, AssetCatalog } from "./assets.js";
2
3
  import { type SkillRequest, type ProjectionHost, type ExposureSelection } from "./agent-skills.js";
3
4
  import type { InstallPreview, InstallProgress, SpeculoCommandResult } from "./index.js";
4
5
  import type { WorkflowCatalog, WorkflowSelection } from "./workflows.js";
5
6
  import type { VersionInfo } from "./version.js";
6
- type Choice = {
7
- value: string;
8
- label: string;
9
- hint?: string;
10
- };
11
- export declare function wrapTerminalText(text: string, width: number): string;
7
+ import { type TerminalChoice } from "./terminal-ui.js";
8
+ export { wrapTerminalText } from "./terminal-ui.js";
9
+ type Choice = TerminalChoice;
12
10
  export type PromptPort = {
13
11
  select(options: {
14
12
  message: string;
@@ -29,6 +27,17 @@ export type PromptPort = {
29
27
  }): Promise<boolean | symbol>;
30
28
  note(message: string, title: string): void;
31
29
  };
30
+ export declare function promptPackages(options: {
31
+ workflows: WorkflowCatalog;
32
+ hub: HubCatalog;
33
+ workflowIds: string[];
34
+ hubIds: string[];
35
+ chooseWorkflows: boolean;
36
+ chooseHub: boolean;
37
+ }, ui?: PromptPort): Promise<{
38
+ workflowIds: string[];
39
+ hubIds: string[];
40
+ }>;
32
41
  export declare function promptWorkflows(catalog: WorkflowCatalog, installed: Set<string>, ui?: PromptPort): Promise<WorkflowSelection>;
33
42
  export type ExposureGroup = {
34
43
  id: string;
@@ -42,6 +51,7 @@ export declare function promptExposureConfiguration(options: {
42
51
  hasHistory: boolean;
43
52
  targets?: ProjectionHost[];
44
53
  request?: SkillRequest;
54
+ hubSelected?: boolean;
45
55
  }, ui?: PromptPort): Promise<ExposureSelection>;
46
56
  export declare function promptExposure(options: {
47
57
  targets: ProjectionHost[];
@@ -58,4 +68,3 @@ export declare function createInstallUI(): {
58
68
  finish(result: SpeculoCommandResult): void;
59
69
  fail(error: unknown): void;
60
70
  };
61
- export {};