@hasna/skills 0.1.62 → 0.1.64

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 (541) hide show
  1. package/README.md +38 -12
  2. package/bin/index.js +15743 -21709
  3. package/bin/mcp.js +3866 -11522
  4. package/bin/migrate.js +281 -35
  5. package/bin/server.js +5805 -2682
  6. package/bin/worker.js +5280 -2388
  7. package/dist/cli/commands/publish.d.ts +2 -0
  8. package/dist/cli/commands/registry-reconcile.d.ts +2 -0
  9. package/dist/cli/components/App.d.ts +2 -1
  10. package/dist/cli/components/CategorySelect.d.ts +2 -1
  11. package/dist/cli/components/Header.d.ts +2 -1
  12. package/dist/cli/components/InstallProgress.d.ts +2 -1
  13. package/dist/cli/components/SearchView.d.ts +2 -1
  14. package/dist/cli/components/SkillSelect.d.ts +2 -1
  15. package/dist/index.d.ts +5 -2
  16. package/dist/index.js +5386 -13739
  17. package/dist/lib/agent-sync.d.ts +61 -6
  18. package/dist/lib/auth-store.d.ts +37 -0
  19. package/dist/lib/config.d.ts +51 -0
  20. package/dist/lib/home-adoption.d.ts +91 -0
  21. package/dist/lib/home-census.d.ts +26 -0
  22. package/dist/lib/home-migration.d.ts +60 -0
  23. package/dist/lib/native-storage.d.ts +1 -1
  24. package/dist/lib/portable-skills-files.d.ts +21 -1
  25. package/dist/lib/portable-skills-types.d.ts +46 -0
  26. package/dist/lib/portable-skills.d.ts +35 -6
  27. package/dist/lib/pull.d.ts +97 -0
  28. package/dist/lib/registry-reconcile.d.ts +114 -0
  29. package/dist/lib/registry.d.ts +7 -4
  30. package/dist/lib/remote-client.d.ts +124 -1
  31. package/dist/lib/remote-registry.d.ts +26 -0
  32. package/dist/lib/revision.d.ts +29 -0
  33. package/dist/lib/run-state.d.ts +5 -0
  34. package/dist/lib/skill-bundles.d.ts +54 -0
  35. package/dist/lib/skill-contract.d.ts +35 -0
  36. package/dist/lib/skill-hash.d.ts +77 -0
  37. package/dist/sdk/cancel.d.ts +30 -0
  38. package/dist/sdk/dispatcher.d.ts +40 -0
  39. package/dist/sdk/event-sink.d.ts +2 -0
  40. package/dist/sdk/events.d.ts +79 -0
  41. package/dist/sdk/execution/admission.d.ts +44 -0
  42. package/dist/sdk/execution/dispatchers/e2b.d.ts +17 -0
  43. package/dist/sdk/execution/dispatchers/ecs.d.ts +151 -0
  44. package/dist/sdk/execution/image-profile.d.ts +73 -0
  45. package/dist/sdk/execution/index.d.ts +15 -0
  46. package/dist/sdk/execution/receipts.d.ts +44 -0
  47. package/dist/sdk/execution/state-machine.d.ts +38 -0
  48. package/dist/sdk/execution/storage.d.ts +158 -0
  49. package/dist/sdk/execution/types.d.ts +130 -0
  50. package/dist/sdk/executor.d.ts +17 -0
  51. package/dist/sdk/governance-store.d.ts +156 -0
  52. package/dist/sdk/governance.d.ts +92 -0
  53. package/dist/sdk/index.d.ts +26 -0
  54. package/dist/sdk/index.js +49728 -0
  55. package/dist/sdk/offline.d.ts +16 -0
  56. package/dist/sdk/outputs.d.ts +71 -0
  57. package/dist/sdk/registry.d.ts +28 -0
  58. package/dist/sdk/runs.d.ts +229 -0
  59. package/dist/sdk/server.d.ts +35 -0
  60. package/dist/sdk/spend.d.ts +36 -0
  61. package/dist/sdk/storage.d.ts +25 -0
  62. package/dist/server/app.d.ts +42 -0
  63. package/dist/server/artifact-storage.d.ts +102 -0
  64. package/dist/server/auth.d.ts +5 -0
  65. package/dist/server/config.d.ts +50 -0
  66. package/dist/server/database-url.d.ts +42 -0
  67. package/dist/server/handlers.d.ts +3 -0
  68. package/dist/server/index.d.ts +2 -0
  69. package/dist/server/migrate.d.ts +13 -0
  70. package/dist/server/migrations-dir.d.ts +18 -0
  71. package/dist/server/redaction.d.ts +1 -0
  72. package/dist/server/registry.d.ts +5 -0
  73. package/dist/server/rows.d.ts +24 -0
  74. package/dist/server/skills-api.d.ts +170 -0
  75. package/dist/server/sqlite-store.d.ts +131 -0
  76. package/dist/server/store-fixtures.d.ts +25 -0
  77. package/dist/server/store.d.ts +170 -0
  78. package/dist/server/types.d.ts +337 -0
  79. package/dist/server/worker.d.ts +4 -0
  80. package/dist/storage.js +39 -2
  81. package/docs/skill-standard.md +211 -39
  82. package/migrations/postgres/0003_run_outputs_governance.sql +83 -0
  83. package/migrations/postgres/0004_hosted_pins.sql +28 -0
  84. package/migrations/postgres/0005_revision_tombstone_registry.sql +37 -0
  85. package/migrations/postgres/0005_tag_projection.sql +36 -0
  86. package/migrations/sqlite/0003_run_outputs_governance.sql +58 -0
  87. package/migrations/sqlite/0004_hosted_pins.sql +21 -0
  88. package/migrations/sqlite/0005_revision_tombstone_registry.sql +18 -0
  89. package/migrations/sqlite/0005_tag_projection.sql +25 -0
  90. package/package.json +12 -8
  91. package/schemas/skill.schema.json +181 -0
  92. package/agent-skills/README.md +0 -41
  93. package/agent-skills/fleet-package-rollout/SKILL.md +0 -169
  94. package/agent-skills/inbox/SKILL.md +0 -25
  95. package/agent-skills/inbox/scripts/inbox +0 -109
  96. package/agent-skills/inbox/tests/test_registered_sender_id.sh +0 -92
  97. package/agent-skills/inbox-monitor/SKILL.md +0 -41
  98. package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +0 -91
  99. package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +0 -71
  100. package/agent-skills/merge-pr/SKILL.md +0 -85
  101. package/agent-skills/merge-pr/references/merge-safety.md +0 -82
  102. package/agent-skills/merge-pr/scripts/merge_pr_guard.py +0 -694
  103. package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +0 -647
  104. package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +0 -28
  105. package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +0 -28
  106. package/agent-skills/skill-goal-execute/SKILL.md +0 -115
  107. package/agent-skills/skill-login/SKILL.md +0 -109
  108. package/agent-skills/skill-project-create/SKILL.md +0 -91
  109. package/agent-skills/skill-publish/SKILL.md +0 -254
  110. package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
  111. package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
  112. package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
  113. package/skills/_common/auth.ts +0 -45
  114. package/skills/_common/http-client.ts +0 -143
  115. package/skills/_common/index.ts +0 -26
  116. package/skills/_common/install.sh +0 -7
  117. package/skills/_common/installer.ts +0 -72
  118. package/skills/_common/skill-install.ts +0 -37
  119. package/skills/_common/vision.ts +0 -374
  120. package/skills/ad-creative-pack/SKILL.md +0 -55
  121. package/skills/ad-creative-pack/package.json +0 -10
  122. package/skills/analyze-data/CLAUDE.md +0 -16
  123. package/skills/analyze-data/SKILL.md +0 -112
  124. package/skills/analyze-data/package.json +0 -23
  125. package/skills/analyze-data/src/analysis.ts +0 -401
  126. package/skills/analyze-data/src/cli.ts +0 -66
  127. package/skills/analyze-data/src/formatters.ts +0 -235
  128. package/skills/analyze-data/src/index.ts +0 -74
  129. package/skills/analyze-data/src/logger.ts +0 -36
  130. package/skills/analyze-data/src/parsers.ts +0 -57
  131. package/skills/analyze-data/src/stats.ts +0 -151
  132. package/skills/analyze-data/src/types.ts +0 -85
  133. package/skills/analyze-data/tsconfig.json +0 -19
  134. package/skills/api-docs-portal/SKILL.md +0 -84
  135. package/skills/api-docs-portal/package.json +0 -35
  136. package/skills/api-docs-portal/src/index.ts +0 -919
  137. package/skills/api-docs-portal/tsconfig.json +0 -17
  138. package/skills/api-test-suite/CLAUDE.md +0 -19
  139. package/skills/api-test-suite/package.json +0 -27
  140. package/skills/api-test-suite/src/index.ts +0 -381
  141. package/skills/api-test-suite/tsconfig.json +0 -10
  142. package/skills/audio-extract/CLAUDE.md +0 -9
  143. package/skills/audio-extract/SKILL.md +0 -73
  144. package/skills/audio-extract/package.json +0 -23
  145. package/skills/audio-extract/src/index.ts +0 -323
  146. package/skills/audio-extract/tsconfig.json +0 -11
  147. package/skills/bio-sequence-tool/CLAUDE.md +0 -19
  148. package/skills/bio-sequence-tool/package.json +0 -27
  149. package/skills/bio-sequence-tool/src/index.ts +0 -85
  150. package/skills/bio-sequence-tool/tsconfig.json +0 -10
  151. package/skills/blog-article/CLAUDE.md +0 -12
  152. package/skills/blog-article/SKILL.md +0 -55
  153. package/skills/blog-article/package.json +0 -10
  154. package/skills/blog-article/tsconfig.json +0 -10
  155. package/skills/brand-assets/SKILL.md +0 -118
  156. package/skills/brand-assets/package.json +0 -35
  157. package/skills/brand-assets/src/cli.ts +0 -155
  158. package/skills/brand-assets/src/constants.ts +0 -8
  159. package/skills/brand-assets/src/extract.ts +0 -236
  160. package/skills/brand-assets/src/index.ts +0 -668
  161. package/skills/brand-assets/src/types.ts +0 -59
  162. package/skills/brand-assets/tsconfig.json +0 -17
  163. package/skills/brand-kit/SKILL.md +0 -54
  164. package/skills/brand-kit/package.json +0 -10
  165. package/skills/businessactivity/CLAUDE.md +0 -176
  166. package/skills/businessactivity/LICENSE +0 -192
  167. package/skills/businessactivity/README.md +0 -287
  168. package/skills/businessactivity/package.json +0 -25
  169. package/skills/businessactivity/scripts/publish.ts +0 -210
  170. package/skills/businessactivity/src/commands/activity.ts +0 -211
  171. package/skills/businessactivity/src/commands/function.ts +0 -227
  172. package/skills/businessactivity/src/commands/owner.ts +0 -193
  173. package/skills/businessactivity/src/commands/profile.ts +0 -121
  174. package/skills/businessactivity/src/commands/responsibility.ts +0 -264
  175. package/skills/businessactivity/src/commands/team.ts +0 -244
  176. package/skills/businessactivity/src/commands/workflow.ts +0 -359
  177. package/skills/businessactivity/src/index.ts +0 -3
  178. package/skills/businessactivity/src/lib/config.ts +0 -167
  179. package/skills/businessactivity/src/lib/output.ts +0 -76
  180. package/skills/businessactivity/src/lib/paths.ts +0 -79
  181. package/skills/businessactivity/src/lib/storage.ts +0 -95
  182. package/skills/businessactivity/src/types/index.ts +0 -86
  183. package/skills/businessactivity/tsconfig.json +0 -29
  184. package/skills/codefix/LICENSE +0 -192
  185. package/skills/codefix/README.md +0 -232
  186. package/skills/codefix/SKILL.md +0 -94
  187. package/skills/codefix/package.json +0 -21
  188. package/skills/codefix/src/fixers/batch.ts +0 -213
  189. package/skills/codefix/src/fixers/detector.ts +0 -160
  190. package/skills/codefix/src/fixers/index.ts +0 -7
  191. package/skills/codefix/src/fixers/runner.ts +0 -522
  192. package/skills/codefix/src/index-local.ts +0 -431
  193. package/skills/codefix/src/index.ts +0 -4
  194. package/skills/codefix/src/types.ts +0 -211
  195. package/skills/codefix/tsconfig.json +0 -15
  196. package/skills/commitpush/SKILL.md +0 -57
  197. package/skills/commitpush/package.json +0 -33
  198. package/skills/commitpush/src/index.ts +0 -34
  199. package/skills/commitpush/tsconfig.json +0 -17
  200. package/skills/commitpushpr/SKILL.md +0 -55
  201. package/skills/commitpushpr/package.json +0 -33
  202. package/skills/commitpushpr/src/index.ts +0 -34
  203. package/skills/commitpushpr/tsconfig.json +0 -17
  204. package/skills/compress-video/CLAUDE.md +0 -9
  205. package/skills/compress-video/SKILL.md +0 -79
  206. package/skills/compress-video/package.json +0 -23
  207. package/skills/compress-video/src/index.ts +0 -473
  208. package/skills/compress-video/tsconfig.json +0 -11
  209. package/skills/contract-review-report/SKILL.md +0 -52
  210. package/skills/contract-review-report/package.json +0 -10
  211. package/skills/customer-feedback-report/SKILL.md +0 -52
  212. package/skills/customer-feedback-report/package.json +0 -10
  213. package/skills/dashboard-builder/CLAUDE.md +0 -19
  214. package/skills/dashboard-builder/package.json +0 -29
  215. package/skills/dashboard-builder/src/index.ts +0 -150
  216. package/skills/dashboard-builder/tsconfig.json +0 -10
  217. package/skills/data-anonymizer/CLAUDE.md +0 -19
  218. package/skills/data-anonymizer/package.json +0 -27
  219. package/skills/data-anonymizer/src/index.ts +0 -183
  220. package/skills/data-anonymizer/tsconfig.json +0 -10
  221. package/skills/database-explorer/CLAUDE.md +0 -19
  222. package/skills/database-explorer/package.json +0 -29
  223. package/skills/database-explorer/src/index.ts +0 -95
  224. package/skills/database-explorer/tsconfig.json +0 -10
  225. package/skills/diff-viewer/CLAUDE.md +0 -19
  226. package/skills/diff-viewer/package.json +0 -30
  227. package/skills/diff-viewer/src/index.ts +0 -164
  228. package/skills/diff-viewer/tsconfig.json +0 -10
  229. package/skills/doc-read/SKILL.md +0 -45
  230. package/skills/doc-read/package.json +0 -29
  231. package/skills/doc-read/src/index.ts +0 -324
  232. package/skills/doc-read/tsconfig.json +0 -8
  233. package/skills/domainpurchase/LICENSE +0 -192
  234. package/skills/domainpurchase/SKILL.md +0 -29
  235. package/skills/domainpurchase/package.json +0 -30
  236. package/skills/domainpurchase/src/index.ts +0 -3
  237. package/skills/domainpurchase/tsconfig.json +0 -21
  238. package/skills/email-sequence/SKILL.md +0 -53
  239. package/skills/email-sequence/package.json +0 -10
  240. package/skills/experiment-power-calculator/CLAUDE.md +0 -19
  241. package/skills/experiment-power-calculator/package.json +0 -29
  242. package/skills/experiment-power-calculator/src/index.ts +0 -86
  243. package/skills/experiment-power-calculator/tsconfig.json +0 -10
  244. package/skills/extract-frames/CLAUDE.md +0 -19
  245. package/skills/extract-frames/package.json +0 -27
  246. package/skills/extract-frames/src/index.ts +0 -616
  247. package/skills/extract-frames/tsconfig.json +0 -10
  248. package/skills/file-organizer/CLAUDE.md +0 -19
  249. package/skills/file-organizer/package.json +0 -27
  250. package/skills/file-organizer/src/index.ts +0 -91
  251. package/skills/file-organizer/tsconfig.json +0 -10
  252. package/skills/folder-tree/CLAUDE.md +0 -19
  253. package/skills/folder-tree/package.json +0 -29
  254. package/skills/folder-tree/src/index.ts +0 -568
  255. package/skills/folder-tree/tsconfig.json +0 -10
  256. package/skills/form-filler/CLAUDE.md +0 -19
  257. package/skills/form-filler/package.json +0 -29
  258. package/skills/form-filler/src/index.ts +0 -81
  259. package/skills/form-filler/tsconfig.json +0 -10
  260. package/skills/generate-api-client/CLAUDE.md +0 -19
  261. package/skills/generate-api-client/package.json +0 -29
  262. package/skills/generate-api-client/src/generator.ts +0 -47
  263. package/skills/generate-api-client/src/index.ts +0 -92
  264. package/skills/generate-api-client/src/logger.ts +0 -34
  265. package/skills/generate-api-client/src/python-generator.ts +0 -245
  266. package/skills/generate-api-client/src/spec-loader.ts +0 -48
  267. package/skills/generate-api-client/src/type-mappers.ts +0 -79
  268. package/skills/generate-api-client/src/types.ts +0 -76
  269. package/skills/generate-api-client/src/typescript-generator.ts +0 -247
  270. package/skills/generate-api-client/tsconfig.json +0 -10
  271. package/skills/generate-chart/CLAUDE.md +0 -19
  272. package/skills/generate-chart/package.json +0 -27
  273. package/skills/generate-chart/src/index.ts +0 -510
  274. package/skills/generate-chart/tsconfig.json +0 -10
  275. package/skills/generate-dockerfile/CLAUDE.md +0 -19
  276. package/skills/generate-dockerfile/package.json +0 -27
  277. package/skills/generate-dockerfile/src/cli.ts +0 -78
  278. package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
  279. package/skills/generate-dockerfile/src/index.ts +0 -81
  280. package/skills/generate-dockerfile/src/logger.ts +0 -30
  281. package/skills/generate-dockerfile/src/project-detection.ts +0 -68
  282. package/skills/generate-dockerfile/src/support-files.ts +0 -171
  283. package/skills/generate-dockerfile/src/types.ts +0 -29
  284. package/skills/generate-dockerfile/tsconfig.json +0 -10
  285. package/skills/generate-env/CLAUDE.md +0 -19
  286. package/skills/generate-env/package.json +0 -29
  287. package/skills/generate-env/src/cli.ts +0 -85
  288. package/skills/generate-env/src/detection.ts +0 -161
  289. package/skills/generate-env/src/env-data.ts +0 -66
  290. package/skills/generate-env/src/generators.ts +0 -240
  291. package/skills/generate-env/src/index.ts +0 -120
  292. package/skills/generate-env/src/runtime.ts +0 -30
  293. package/skills/generate-env/src/types.ts +0 -32
  294. package/skills/generate-env/tsconfig.json +0 -10
  295. package/skills/generate-favicon/CLAUDE.md +0 -19
  296. package/skills/generate-favicon/package.json +0 -29
  297. package/skills/generate-favicon/src/index.ts +0 -421
  298. package/skills/generate-favicon/tsconfig.json +0 -10
  299. package/skills/generate-qrcode/CLAUDE.md +0 -19
  300. package/skills/generate-qrcode/package.json +0 -30
  301. package/skills/generate-qrcode/src/index.ts +0 -584
  302. package/skills/generate-qrcode/tsconfig.json +0 -10
  303. package/skills/generate-resume/CLAUDE.md +0 -19
  304. package/skills/generate-resume/package.json +0 -27
  305. package/skills/generate-resume/src/cli.ts +0 -157
  306. package/skills/generate-resume/src/index.ts +0 -178
  307. package/skills/generate-resume/src/parsers.ts +0 -95
  308. package/skills/generate-resume/src/renderers.ts +0 -538
  309. package/skills/generate-resume/src/security.ts +0 -39
  310. package/skills/generate-resume/src/types.ts +0 -86
  311. package/skills/generate-resume/tsconfig.json +0 -10
  312. package/skills/generate-sitemap/CLAUDE.md +0 -19
  313. package/skills/generate-sitemap/package.json +0 -27
  314. package/skills/generate-sitemap/src/index.ts +0 -626
  315. package/skills/generate-sitemap/tsconfig.json +0 -10
  316. package/skills/gif-maker/CLAUDE.md +0 -19
  317. package/skills/gif-maker/package.json +0 -30
  318. package/skills/gif-maker/src/index.ts +0 -600
  319. package/skills/gif-maker/tsconfig.json +0 -10
  320. package/skills/hook/LICENSE +0 -192
  321. package/skills/hook/README.md +0 -74
  322. package/skills/hook/SKILL.md +0 -85
  323. package/skills/hook/bunfig.toml +0 -5
  324. package/skills/hook/package.json +0 -28
  325. package/skills/hook/src/commands/create.ts +0 -112
  326. package/skills/hook/src/commands/events.ts +0 -37
  327. package/skills/hook/src/commands/validate.ts +0 -117
  328. package/skills/hook/src/index.ts +0 -118
  329. package/skills/hook/src/templates/root.ts +0 -196
  330. package/skills/hook/src/templates/source.ts +0 -647
  331. package/skills/hook/tsconfig.json +0 -18
  332. package/skills/http-server/CLAUDE.md +0 -19
  333. package/skills/http-server/package.json +0 -29
  334. package/skills/http-server/src/index.ts +0 -51
  335. package/skills/http-server/tsconfig.json +0 -10
  336. package/skills/implementation/LICENSE +0 -192
  337. package/skills/implementation/README.md +0 -53
  338. package/skills/implementation/SKILL.md +0 -57
  339. package/skills/implementation/bunfig.toml +0 -5
  340. package/skills/implementation/package.json +0 -28
  341. package/skills/implementation/src/commands/create.ts +0 -187
  342. package/skills/implementation/src/index.ts +0 -62
  343. package/skills/implementation/tsconfig.json +0 -18
  344. package/skills/implementation-plan/CLAUDE.md +0 -19
  345. package/skills/implementation-plan/package.json +0 -29
  346. package/skills/implementation-plan/src/index.ts +0 -520
  347. package/skills/implementation-plan/tsconfig.json +0 -10
  348. package/skills/implementation-todo/CLAUDE.md +0 -19
  349. package/skills/implementation-todo/package.json +0 -29
  350. package/skills/implementation-todo/src/index.ts +0 -429
  351. package/skills/implementation-todo/tsconfig.json +0 -10
  352. package/skills/invoice/.env.example +0 -3
  353. package/skills/invoice/CLAUDE.md +0 -31
  354. package/skills/invoice/LICENSE +0 -192
  355. package/skills/invoice/README.md +0 -70
  356. package/skills/invoice/package.json +0 -26
  357. package/skills/invoice/src/commands/companies.ts +0 -202
  358. package/skills/invoice/src/commands/config.ts +0 -132
  359. package/skills/invoice/src/commands/generate.ts +0 -177
  360. package/skills/invoice/src/commands/invoices.ts +0 -218
  361. package/skills/invoice/src/index.ts +0 -3
  362. package/skills/invoice/src/lib/api.ts +0 -124
  363. package/skills/invoice/src/lib/storage.ts +0 -171
  364. package/skills/invoice/src/types/index.ts +0 -86
  365. package/skills/invoice/src/utils/logger.ts +0 -33
  366. package/skills/invoice/src/utils/paths.ts +0 -25
  367. package/skills/invoice/tsconfig.json +0 -23
  368. package/skills/invoice-reconciliation/SKILL.md +0 -98
  369. package/skills/invoice-reconciliation/package.json +0 -36
  370. package/skills/invoice-reconciliation/src/index.ts +0 -743
  371. package/skills/invoice-reconciliation/tsconfig.json +0 -17
  372. package/skills/landing-page-pack/SKILL.md +0 -55
  373. package/skills/landing-page-pack/package.json +0 -10
  374. package/skills/latex-table-generator/CLAUDE.md +0 -19
  375. package/skills/latex-table-generator/package.json +0 -29
  376. package/skills/latex-table-generator/src/index.ts +0 -113
  377. package/skills/latex-table-generator/tsconfig.json +0 -10
  378. package/skills/logo-design/SKILL.md +0 -94
  379. package/skills/logo-design/package.json +0 -35
  380. package/skills/logo-design/src/cli.ts +0 -132
  381. package/skills/logo-design/src/constants.ts +0 -5
  382. package/skills/logo-design/src/docs.ts +0 -102
  383. package/skills/logo-design/src/geometry.ts +0 -324
  384. package/skills/logo-design/src/index.ts +0 -212
  385. package/skills/logo-design/src/palette.ts +0 -258
  386. package/skills/logo-design/src/types.ts +0 -50
  387. package/skills/logo-design/tsconfig.json +0 -17
  388. package/skills/lorem-generator/CLAUDE.md +0 -19
  389. package/skills/lorem-generator/package.json +0 -29
  390. package/skills/lorem-generator/src/index.ts +0 -59
  391. package/skills/lorem-generator/tsconfig.json +0 -10
  392. package/skills/managemcp/CLAUDE.md +0 -14
  393. package/skills/managemcp/README.md +0 -24
  394. package/skills/managemcp/package.json +0 -16
  395. package/skills/managemcp/src/index.ts +0 -3
  396. package/skills/managemcp/tsconfig.json +0 -27
  397. package/skills/markdown-validator/CLAUDE.md +0 -19
  398. package/skills/markdown-validator/package.json +0 -29
  399. package/skills/markdown-validator/src/index.ts +0 -92
  400. package/skills/markdown-validator/tsconfig.json +0 -10
  401. package/skills/market-research-report/SKILL.md +0 -51
  402. package/skills/market-research-report/package.json +0 -10
  403. package/skills/meeting-pack/SKILL.md +0 -52
  404. package/skills/meeting-pack/package.json +0 -10
  405. package/skills/merge-pdfs/CLAUDE.md +0 -19
  406. package/skills/merge-pdfs/package.json +0 -31
  407. package/skills/merge-pdfs/src/index.ts +0 -427
  408. package/skills/merge-pdfs/tsconfig.json +0 -10
  409. package/skills/migration-plan-pack/SKILL.md +0 -56
  410. package/skills/migration-plan-pack/package.json +0 -10
  411. package/skills/monitor/SKILL.md +0 -69
  412. package/skills/monitor/package.json +0 -33
  413. package/skills/monitor/src/index.ts +0 -34
  414. package/skills/monitor/tsconfig.json +0 -17
  415. package/skills/one-page-website/SKILL.md +0 -128
  416. package/skills/one-page-website/package.json +0 -34
  417. package/skills/one-page-website/src/design.ts +0 -336
  418. package/skills/one-page-website/src/docs.ts +0 -159
  419. package/skills/one-page-website/src/index.ts +0 -357
  420. package/skills/one-page-website/src/page.ts +0 -340
  421. package/skills/one-page-website/src/styles.ts +0 -508
  422. package/skills/one-page-website/src/types.ts +0 -78
  423. package/skills/one-page-website/tsconfig.json +0 -17
  424. package/skills/pdf-generate/CLAUDE.md +0 -19
  425. package/skills/pdf-generate/SKILL.md +0 -86
  426. package/skills/pdf-generate/package.json +0 -21
  427. package/skills/pdf-generate/src/cli.ts +0 -162
  428. package/skills/pdf-generate/src/html.ts +0 -84
  429. package/skills/pdf-generate/src/index.ts +0 -62
  430. package/skills/pdf-generate/src/markdown.ts +0 -27
  431. package/skills/pdf-generate/src/pdf-writer.ts +0 -78
  432. package/skills/pdf-generate/src/runtime.ts +0 -34
  433. package/skills/pdf-generate/src/security.ts +0 -37
  434. package/skills/pdf-generate/src/templates.ts +0 -311
  435. package/skills/pdf-generate/src/types.ts +0 -28
  436. package/skills/pdf-generate/tsconfig.json +0 -16
  437. package/skills/pdf-to-dataset/SKILL.md +0 -88
  438. package/skills/pdf-to-dataset/package.json +0 -37
  439. package/skills/pdf-to-dataset/src/index.ts +0 -790
  440. package/skills/pdf-to-dataset/tsconfig.json +0 -17
  441. package/skills/pdf-to-markdown/SKILL.md +0 -81
  442. package/skills/pdf-to-markdown/package.json +0 -35
  443. package/skills/pdf-to-markdown/src/index.ts +0 -694
  444. package/skills/pdf-to-markdown/tsconfig.json +0 -17
  445. package/skills/performance-audit-report/SKILL.md +0 -49
  446. package/skills/performance-audit-report/package.json +0 -10
  447. package/skills/pitch-deck/SKILL.md +0 -51
  448. package/skills/pitch-deck/package.json +0 -10
  449. package/skills/product-mockup/SKILL.md +0 -107
  450. package/skills/product-mockup/package.json +0 -32
  451. package/skills/product-mockup/src/cli.ts +0 -150
  452. package/skills/product-mockup/src/design.ts +0 -151
  453. package/skills/product-mockup/src/docs.ts +0 -134
  454. package/skills/product-mockup/src/index.ts +0 -182
  455. package/skills/product-mockup/src/render.ts +0 -407
  456. package/skills/product-mockup/src/types.ts +0 -66
  457. package/skills/product-mockup/tsconfig.json +0 -17
  458. package/skills/proposal-pack/SKILL.md +0 -53
  459. package/skills/proposal-pack/package.json +0 -10
  460. package/skills/read-csv/SKILL.md +0 -62
  461. package/skills/read-csv/package.json +0 -37
  462. package/skills/read-csv/src/index.ts +0 -356
  463. package/skills/read-csv/tsconfig.json +0 -17
  464. package/skills/read-excel/SKILL.md +0 -64
  465. package/skills/read-excel/package.json +0 -36
  466. package/skills/read-excel/src/index.ts +0 -266
  467. package/skills/read-excel/tsconfig.json +0 -17
  468. package/skills/regex-tester/CLAUDE.md +0 -19
  469. package/skills/regex-tester/package.json +0 -27
  470. package/skills/regex-tester/src/index.ts +0 -183
  471. package/skills/regex-tester/tsconfig.json +0 -10
  472. package/skills/repo-onboarding-report/SKILL.md +0 -52
  473. package/skills/repo-onboarding-report/package.json +0 -10
  474. package/skills/scancommitpr/SKILL.md +0 -178
  475. package/skills/scancommitpr/package.json +0 -34
  476. package/skills/scancommitpr/src/index.ts +0 -44
  477. package/skills/scancommitpr/tsconfig.json +0 -13
  478. package/skills/scancommitpush/SKILL.md +0 -174
  479. package/skills/scancommitpush/package.json +0 -32
  480. package/skills/scancommitpush/src/index.ts +0 -44
  481. package/skills/scancommitpush/tsconfig.json +0 -13
  482. package/skills/scientific-figure-check/CLAUDE.md +0 -19
  483. package/skills/scientific-figure-check/package.json +0 -29
  484. package/skills/scientific-figure-check/src/index.ts +0 -83
  485. package/skills/scientific-figure-check/tsconfig.json +0 -10
  486. package/skills/security-audit/CLAUDE.md +0 -19
  487. package/skills/security-audit/package.json +0 -27
  488. package/skills/security-audit/src/index.ts +0 -145
  489. package/skills/security-audit/tsconfig.json +0 -10
  490. package/skills/security-audit-report/SKILL.md +0 -52
  491. package/skills/security-audit-report/package.json +0 -10
  492. package/skills/seo-content-pack/SKILL.md +0 -54
  493. package/skills/seo-content-pack/package.json +0 -10
  494. package/skills/siteanalyze/SKILL.md +0 -25
  495. package/skills/siteanalyze/package.json +0 -27
  496. package/skills/siteanalyze/src/index.ts +0 -592
  497. package/skills/slide-deck-generator/SKILL.md +0 -93
  498. package/skills/slide-deck-generator/package.json +0 -38
  499. package/skills/slide-deck-generator/src/cli.ts +0 -133
  500. package/skills/slide-deck-generator/src/index.ts +0 -148
  501. package/skills/slide-deck-generator/src/model.ts +0 -307
  502. package/skills/slide-deck-generator/src/pptx.ts +0 -143
  503. package/skills/slide-deck-generator/src/render.ts +0 -248
  504. package/skills/slide-deck-generator/src/types.ts +0 -114
  505. package/skills/slide-deck-generator/src/utils.ts +0 -53
  506. package/skills/slide-deck-generator/tsconfig.json +0 -17
  507. package/skills/social-content-calendar/SKILL.md +0 -54
  508. package/skills/social-content-calendar/package.json +0 -10
  509. package/skills/split-pdf/CLAUDE.md +0 -19
  510. package/skills/split-pdf/package.json +0 -30
  511. package/skills/split-pdf/src/index.ts +0 -301
  512. package/skills/split-pdf/tsconfig.json +0 -10
  513. package/skills/statistical-test-selector/CLAUDE.md +0 -19
  514. package/skills/statistical-test-selector/package.json +0 -27
  515. package/skills/statistical-test-selector/src/index.ts +0 -75
  516. package/skills/statistical-test-selector/tsconfig.json +0 -10
  517. package/skills/test-suite-generator/SKILL.md +0 -51
  518. package/skills/test-suite-generator/package.json +0 -10
  519. package/skills/tmux-session/SKILL.md +0 -109
  520. package/skills/tmux-session/package.json +0 -33
  521. package/skills/tmux-session/src/index.ts +0 -34
  522. package/skills/tmux-session/tsconfig.json +0 -17
  523. package/skills/todos-plan/SKILL.md +0 -363
  524. package/skills/todos-plan/agents/openai.yaml +0 -4
  525. package/skills/todos-plan/package.json +0 -9
  526. package/skills/todos-plan/src/index.ts +0 -68
  527. package/skills/tsconfig.base.json +0 -12
  528. package/skills/validate-config/CLAUDE.md +0 -19
  529. package/skills/validate-config/package.json +0 -29
  530. package/skills/validate-config/src/index.ts +0 -56
  531. package/skills/validate-config/tsconfig.json +0 -10
  532. package/skills/video-downloader/CLAUDE.md +0 -19
  533. package/skills/video-downloader/package.json +0 -29
  534. package/skills/video-downloader/src/index.ts +0 -561
  535. package/skills/video-downloader/tsconfig.json +0 -10
  536. package/skills/video-highlight-pack/SKILL.md +0 -54
  537. package/skills/video-highlight-pack/package.json +0 -10
  538. package/skills/watermark/CLAUDE.md +0 -19
  539. package/skills/watermark/package.json +0 -32
  540. package/skills/watermark/src/index.ts +0 -587
  541. package/skills/watermark/tsconfig.json +0 -10
@@ -0,0 +1,337 @@
1
+ import type { OwnedBytes } from "../lib/skill-bundle.js";
2
+ export declare const SERVER_RUN_STATUSES: readonly ["queued", "waiting_for_approval", "running", "succeeded", "failed", "cancel_requested", "cancelled", "retrying", "expired", "refunded"];
3
+ export type ServerRunStatus = (typeof SERVER_RUN_STATUSES)[number];
4
+ /**
5
+ * A fenced transition was refused because the run's lease_generation moved on.
6
+ *
7
+ * The worker that throws this is writing against a run it no longer owns: a
8
+ * newer claim took it, or a cancellation fenced it. The run is not missing -
9
+ * that is the null return - it has simply left the writer behind.
10
+ */
11
+ export declare class StaleLeaseGenerationError extends Error {
12
+ readonly runId: string;
13
+ readonly expectedGeneration: number;
14
+ readonly currentGeneration: number;
15
+ readonly status: ServerRunStatus;
16
+ constructor(runId: string, expectedGeneration: number, currentGeneration: number, status: ServerRunStatus);
17
+ }
18
+ /**
19
+ * A publish or update was refused because it would silently overwrite a newer revision.
20
+ *
21
+ * The optimistic-concurrency guard (todos d061fcda): a write to an existing, live row
22
+ * must carry If-Match naming the current revision_id (the ETag the server issued). A
23
+ * missing guard, or one naming a different revision, is refused with this error instead
24
+ * of being applied. `currentRevisionId` is null when the row is absent or tombstoned —
25
+ * those are the two cases where the guard does not apply — and carries the live
26
+ * revision otherwise, so the caller can name what the writer was racing against.
27
+ */
28
+ export declare class SkillRevisionConflictError extends Error {
29
+ readonly slug: string;
30
+ readonly expectedRevisionId: string | null | undefined;
31
+ readonly currentRevisionId: string | null;
32
+ constructor(slug: string, expectedRevisionId: string | null | undefined, currentRevisionId: string | null);
33
+ }
34
+ export interface ApiPrincipal {
35
+ apiKeyId: string;
36
+ orgId: string;
37
+ orgSlug: string;
38
+ orgName: string;
39
+ userId: string;
40
+ email: string;
41
+ role: string;
42
+ scopes: string[];
43
+ }
44
+ export interface ServerRunRecord {
45
+ id: string;
46
+ orgId: string;
47
+ userId: string;
48
+ skill: string;
49
+ requestedSlug: string;
50
+ status: ServerRunStatus;
51
+ input: Record<string, unknown>;
52
+ args: string[];
53
+ idempotencyKey?: string;
54
+ correlationId: string;
55
+ costCents: number;
56
+ /**
57
+ * The cancellation fence. Bumped by every claim and by every cancellation; a
58
+ * worker that transitions a run while carrying an older generation is writing
59
+ * against a run it no longer owns and is rejected (see transitionRun).
60
+ */
61
+ leaseGeneration: number;
62
+ outputType?: string;
63
+ outputPreview?: string;
64
+ errorCode?: string;
65
+ errorMessage?: string;
66
+ createdAt: string;
67
+ startedAt?: string;
68
+ completedAt?: string;
69
+ }
70
+ export interface ServerRunLog {
71
+ runId: string;
72
+ sequence: number;
73
+ level: "debug" | "info" | "warn" | "error";
74
+ message: string;
75
+ createdAt: string;
76
+ }
77
+ export interface ServerArtifact {
78
+ id: string;
79
+ runId: string;
80
+ orgId: string;
81
+ fileName: string;
82
+ relativePath: string;
83
+ contentType: string;
84
+ byteSize: number;
85
+ sha256: string;
86
+ storageKind: "db" | "s3";
87
+ storageKey?: string;
88
+ bodyText?: string;
89
+ /**
90
+ * Output visibility. Runs' outputs are PRIVATE by default: the value is set at
91
+ * write time from the governance default and persisted, never inferred at read
92
+ * time. "public" is the explicit opt-in for artifacts the tenant intends to
93
+ * share; it is not a default on any path.
94
+ */
95
+ visibility: "private" | "public";
96
+ /**
97
+ * Finite retention, set at write time as createdAt + configured TTL. Absent
98
+ * only when the writing path opted out explicitly; the expiry sweep deletes
99
+ * artifacts whose expiresAt is in the past and records a deletion receipt.
100
+ */
101
+ expiresAt?: string;
102
+ createdAt: string;
103
+ }
104
+ /** Where bytes actually live. Same vocabulary as ServerArtifact, same meaning. */
105
+ export type BlobStorageKind = "db" | "s3";
106
+ /**
107
+ * A skill published to this instance by one organization.
108
+ *
109
+ * Distinct from `SkillMeta` (src/lib/registry-types.ts), which describes a skill the CLI
110
+ * knows about from any source. This is the row: it always belongs to an org, and it
111
+ * always carries the provenance of who put it there.
112
+ */
113
+ export interface ServerSkillRecord {
114
+ orgId: string;
115
+ slug: string;
116
+ displayName: string;
117
+ description: string;
118
+ category: string;
119
+ tags: string[];
120
+ source: string;
121
+ kind: "executable" | "instruction";
122
+ version?: string;
123
+ /** The agent-facing document, served verbatim by GET /skills/:slug/skill.md. */
124
+ skillMd?: string;
125
+ /** Digest of the stored bundle. Absent for a metadata-only publish. */
126
+ bundleSha256?: string;
127
+ bundleByteSize?: number;
128
+ publishedByUserId?: string;
129
+ createdAt: string;
130
+ updatedAt: string;
131
+ /**
132
+ * Immutable content-addressed revision identity (sha-256 over the published content,
133
+ * computed in server/revision.ts). Same content -> same id; any content change mints
134
+ * a new one. This is the ETag every read issues and every guarded write must match.
135
+ */
136
+ revisionId: string;
137
+ /**
138
+ * Monotonic per-slug write counter. Every publish and every metadata update bumps it,
139
+ * even when the content hash is unchanged, so "how many writes happened to this slug"
140
+ * is a number, not a digest comparison.
141
+ */
142
+ revisionNumber: number;
143
+ /**
144
+ * Present when the slug was deleted within the tombstone window (todos d061fcda).
145
+ * Reads must answer 410 with the marker so a client's pull can reconcile; the row and
146
+ * its bundle are purged once tombstonePurgeAfter passes. A re-publish clears both
147
+ * fields and revives the slug as a fresh revision.
148
+ */
149
+ tombstonedAt?: string;
150
+ tombstonePurgeAfter?: string;
151
+ }
152
+ /**
153
+ * Bundle bytes, addressed by their own digest.
154
+ *
155
+ * `bytes` is present only when the bundle is stored in the database (`storageKind: "db"`).
156
+ * For S3 the row is a pointer and SkillBundleStorage.read() fetches the object - the same
157
+ * split ServerArtifact makes between `bodyText` and `storageKey`, except that a bundle is
158
+ * a gzipped tar and so cannot be a string at any layer.
159
+ */
160
+ /**
161
+ * A skill the principal pinned on the hosted instance.
162
+ *
163
+ * The cloud-side twin of the local `.skills/project.json` pin: metadata-only,
164
+ * never content. `principal` is the api_keys.id of the API key that pinned
165
+ * (ApiPrincipal.apiKeyId) - a pin is a fact about a specific principal's
166
+ * selection, and two API keys in one org each have their own pin set.
167
+ */
168
+ export interface ServerPin {
169
+ orgId: string;
170
+ principal: string;
171
+ slug: string;
172
+ pinnedAt: string;
173
+ metadata: Record<string, unknown>;
174
+ }
175
+ export interface ServerSkillBundle {
176
+ orgId: string;
177
+ sha256: string;
178
+ byteSize: number;
179
+ contentType: string;
180
+ storageKind: BlobStorageKind;
181
+ storageKey?: string;
182
+ bytes?: OwnedBytes;
183
+ createdAt: string;
184
+ }
185
+ export interface PublishSkillInput {
186
+ principal: ApiPrincipal;
187
+ slug: string;
188
+ displayName: string;
189
+ description: string;
190
+ category: string;
191
+ tags: string[];
192
+ source: string;
193
+ kind: ServerSkillRecord["kind"];
194
+ version?: string;
195
+ skillMd?: string;
196
+ /** Omitted for a metadata-only publish or update. */
197
+ bundle?: Omit<ServerSkillBundle, "orgId" | "createdAt">;
198
+ /**
199
+ * Optimistic-concurrency guard (todos d061fcda): the revision_id (ETag) the writer
200
+ * read. A publish against an existing, LIVE row requires the guard to name that row's
201
+ * current revision_id; missing or mismatched is a SkillRevisionConflictError, never a
202
+ * silent overwrite. The guard is not required for a first publish (no row exists) or
203
+ * against a tombstoned row (nothing live to overwrite - the publish revives the slug
204
+ * as a fresh revision).
205
+ */
206
+ expectedRevisionId?: string;
207
+ }
208
+ /** Metadata-only patch. Never touches the bundle; republish to change bytes. */
209
+ export type UpdateSkillPatch = Partial<Pick<ServerSkillRecord, "displayName" | "description" | "category" | "tags" | "version" | "kind" | "skillMd">>;
210
+ export interface CreateRunInput {
211
+ principal: ApiPrincipal;
212
+ slug: string;
213
+ input: Record<string, unknown>;
214
+ args: string[];
215
+ idempotencyKey?: string;
216
+ }
217
+ export interface ClaimRunInput {
218
+ workerId: string;
219
+ }
220
+ /**
221
+ * Fields a fenced transition may write, plus the lease_generation the fence
222
+ * itself bumps on cancellation. Everything updateRun can write plus the
223
+ * generation counter; the worker never patches the generation, the cancel
224
+ * service does.
225
+ */
226
+ export type RunTransitionPatch = Partial<Pick<ServerRunRecord, "status" | "outputType" | "outputPreview" | "errorCode" | "errorMessage" | "startedAt" | "completedAt" | "leaseGeneration">>;
227
+ /**
228
+ * What a store is, in the only two dimensions the server needs at boot: which backend
229
+ * it is (for logs and diagnostics) and whether it survives a restart.
230
+ *
231
+ * `durable` exists because the server used to boot onto an in-process Map, report
232
+ * `ok: true` at /health, and lose every run on restart with no warning at any point. A
233
+ * store that knows it is non-durable can now say so, and startSkillsServer() refuses it
234
+ * unless the operator explicitly opted in.
235
+ */
236
+ export interface StoreBackendInfo {
237
+ /**
238
+ * The three bundled backends are named for autocomplete; the open `string` arm is
239
+ * deliberate. This interface is a published seam, and a third-party store must be able
240
+ * to declare what it is - "mysql", "dynamodb" - without either a type error or having
241
+ * to misreport itself as one of ours. A closed union would make the seam implementable
242
+ * only by us, which is the test R3 sets for it.
243
+ */
244
+ kind: "postgres" | "sqlite" | "memory" | (string & {});
245
+ /** False when the data does not survive process exit. */
246
+ durable: boolean;
247
+ /** Credential-free description, safe to put in logs and error messages. */
248
+ label: string;
249
+ }
250
+ export interface SkillsProductStore {
251
+ /**
252
+ * Optional so a third-party store implementing this seam keeps compiling. An
253
+ * undeclared backend is treated as durable: we can refuse what a store tells us is
254
+ * ephemeral, and cannot infer it about somebody else's implementation. The hazard
255
+ * actually being closed is our own default, which is now SQLite on disk.
256
+ */
257
+ readonly backend?: StoreBackendInfo;
258
+ /** Release connections and file handles. Optional; not every backend holds any. */
259
+ close?(): Promise<void>;
260
+ /**
261
+ * Prove the backend is actually reachable, throwing if it is not.
262
+ *
263
+ * Called once at startup. Bun's SQL client connects lazily, so without this a
264
+ * Postgres URL pointing at a dead host produced a server that started happily and
265
+ * then 500ed on the first request.
266
+ */
267
+ verifyConnectivity?(): Promise<void>;
268
+ authenticateApiKeyHash(hash: string): Promise<ApiPrincipal | null>;
269
+ ensureBootstrapApiKey?(token: string, principal?: Partial<ApiPrincipal>): Promise<void>;
270
+ createRun(input: CreateRunInput): Promise<ServerRunRecord>;
271
+ listRuns(principal: ApiPrincipal, limit: number): Promise<ServerRunRecord[]>;
272
+ getRun(principal: ApiPrincipal, runId: string): Promise<ServerRunRecord | null>;
273
+ claimNextRun(input: ClaimRunInput): Promise<ServerRunRecord | null>;
274
+ updateRun(runId: string, patch: Partial<Pick<ServerRunRecord, "status" | "outputType" | "outputPreview" | "errorCode" | "errorMessage" | "startedAt" | "completedAt">>): Promise<ServerRunRecord | null>;
275
+ /**
276
+ * Generation-fenced transition, the cancellation gate.
277
+ *
278
+ * Optional so a third-party store implementing this seam keeps compiling; the
279
+ * cancel service requires it and refuses to run without it (FENCING_UNSUPPORTED)
280
+ * rather than cancelling unfenced. When present it is the ONLY transition the
281
+ * worker paths use: the UPDATE re-asserts `lease_generation = <expected>` and
282
+ * reports zero rows when the generation moved on (a newer claim, or a
283
+ * cancellation), so a late write from a stale worker never lands.
284
+ *
285
+ * Returns null when the run does not exist; throws StaleLeaseGenerationError
286
+ * when the generation no longer matches. The distinction matters: "nothing
287
+ * there" and "you lost the fence" are different facts.
288
+ */
289
+ transitionRun?(runId: string, patch: RunTransitionPatch, expectedGeneration: number): Promise<ServerRunRecord | null>;
290
+ appendLog(runId: string, orgId: string, level: ServerRunLog["level"], message: string): Promise<ServerRunLog>;
291
+ listLogs(principal: ApiPrincipal, runId: string): Promise<ServerRunLog[]>;
292
+ addArtifact(artifact: Omit<ServerArtifact, "createdAt">): Promise<ServerArtifact>;
293
+ listArtifacts(principal: ApiPrincipal, runId: string): Promise<ServerArtifact[]>;
294
+ getArtifact(principal: ApiPrincipal, runId: string, artifactId: string): Promise<ServerArtifact | null>;
295
+ publishSkill(input: PublishSkillInput): Promise<ServerSkillRecord>;
296
+ listSkills(principal: ApiPrincipal): Promise<ServerSkillRecord[]>;
297
+ getSkill(principal: ApiPrincipal, slug: string): Promise<ServerSkillRecord | null>;
298
+ /**
299
+ * Metadata-only patch, guarded by the same optimistic concurrency as publish: the
300
+ * row's current revision_id must match `expectedRevisionId` or
301
+ * SkillRevisionConflictError is thrown (409), never a silent overwrite. The revision
302
+ * advances on every successful update (new content sha, number + 1). Returns null
303
+ * when the org has no skill by that slug, or when the row is tombstoned.
304
+ */
305
+ updateSkill(principal: ApiPrincipal, slug: string, patch: UpdateSkillPatch, expectedRevisionId?: string): Promise<ServerSkillRecord | null>;
306
+ /**
307
+ * Tombstone a skill instead of hard-deleting it (todos d061fcda): the row is stamped
308
+ * tombstoned_at + tombstone_purge_after (now + tombstoneWindowMs) and kept, so reads
309
+ * can answer 410 with the marker and a pulling client can reconcile, and the bundle
310
+ * survives until the purge. Returns the tombstoned record, or null when the org has
311
+ * no row by that slug. A second delete of an already-tombstoned slug returns the
312
+ * existing tombstone (idempotent; the window is not extended).
313
+ */
314
+ deleteSkill(principal: ApiPrincipal, slug: string, tombstoneWindowMs: number): Promise<ServerSkillRecord | null>;
315
+ /**
316
+ * Drop every tombstoned row whose window has expired, collecting the bundles nothing
317
+ * (live or tombstoned) references. Called on the read paths and by listSkills so the
318
+ * purge is lazy but does not wait for a slug to be read. Returns the purged records so
319
+ * the caller can discard their stored objects (S3).
320
+ */
321
+ purgeExpiredTombstones(principal: ApiPrincipal): Promise<ServerSkillRecord[]>;
322
+ getSkillBundle(principal: ApiPrincipal, sha256: string): Promise<ServerSkillBundle | null>;
323
+ pinSkill(principal: ApiPrincipal, slug: string, metadata?: Record<string, unknown>): Promise<ServerPin>;
324
+ /** False when this principal has no pin by that slug. */
325
+ unpinSkill(principal: ApiPrincipal, slug: string): Promise<boolean>;
326
+ listPins(principal: ApiPrincipal): Promise<ServerPin[]>;
327
+ listTags(principal: ApiPrincipal): Promise<string[]>;
328
+ listSkillsByTag(principal: ApiPrincipal, tag: string): Promise<ServerSkillRecord[]>;
329
+ listPinsByTag(principal: ApiPrincipal, tag: string): Promise<ServerPin[]>;
330
+ /**
331
+ * The slugs of the org's live (non-tombstoned) published skills. The tag
332
+ * routes use this to resolve merged-view precedence: a bundled skill whose
333
+ * slug a published row occupies must not resurface under a tag filter or in
334
+ * the tag list. A single-column scan of the (org_id, slug) primary key.
335
+ */
336
+ listPublishedSlugs(principal: ApiPrincipal): Promise<string[]>;
337
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env bun
2
+ import { ArtifactStorage } from "../sdk/storage.js";
3
+ import type { SkillsProductStore } from "../sdk/storage.js";
4
+ export declare function runWorkerOnce(store: SkillsProductStore, workerId?: string, storage?: ArtifactStorage): Promise<boolean>;
package/dist/storage.js CHANGED
@@ -1,5 +1,35 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
2
4
  var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
12
+ var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
20
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
21
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
+ for (let key of __getOwnPropNames(mod))
23
+ if (!__hasOwnProp.call(to, key))
24
+ __defProp(to, key, {
25
+ get: __accessProp.bind(mod, key),
26
+ enumerable: true
27
+ });
28
+ if (canCache)
29
+ cache.set(mod, to);
30
+ return to;
31
+ };
32
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
3
33
  var __returnValue = (v) => v;
4
34
  function __exportSetter(name, newValue) {
5
35
  this[name] = __returnValue.bind(null, newValue);
@@ -13,6 +43,8 @@ var __export = (target, all) => {
13
43
  set: __exportSetter.bind(all, name)
14
44
  });
15
45
  };
46
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
47
+ var __require = import.meta.require;
16
48
 
17
49
  // src/lib/native-storage.ts
18
50
  import { createHash, createHmac } from "crypto";
@@ -130,6 +162,11 @@ function normalizeConfigValue(key, value) {
130
162
  }
131
163
  var DATA_DIR_ENV = "HASNA_SKILLS_DIR";
132
164
  var INSTALLED_SKILLS_DIRNAME = "installed";
165
+ var SKILLS_CACHE_DIRNAME = "skills";
166
+ var LAYOUT_MIGRATION_RECORD = ".layout-migration.json";
167
+ function isOwnerLayoutMigrated(appDir) {
168
+ return existsSync(join(appDir, SKILLS_CACHE_DIRNAME, LAYOUT_MIGRATION_RECORD));
169
+ }
133
170
  function getDataDir() {
134
171
  const override = process.env[DATA_DIR_ENV];
135
172
  if (override) {
@@ -466,7 +503,7 @@ function getSkillsNativeStorageStatus(options = {}) {
466
503
  const s3BucketEnv = readStorageEnv(env, "s3Bucket");
467
504
  const targetDir = options.targetDir ?? process.cwd();
468
505
  return {
469
- package: "open-skills",
506
+ package: "skills",
470
507
  tables: [...SKILLS_STORAGE_TABLES],
471
508
  env: {
472
509
  databaseUrl: SKILLS_NATIVE_STORAGE_ENV.databaseUrl,
@@ -638,7 +675,7 @@ function createSkillsSnapshotSyncRecord(snapshot, options = {}) {
638
675
  kind: "local-snapshot",
639
676
  id: options.id ?? "project-state",
640
677
  updatedAt: snapshot.exportedAt,
641
- source: options.source ?? "open-skills",
678
+ source: options.source ?? "skills",
642
679
  payload: snapshot
643
680
  };
644
681
  }