@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.
- package/README.md +38 -12
- package/bin/index.js +15743 -21709
- package/bin/mcp.js +3866 -11522
- package/bin/migrate.js +281 -35
- package/bin/server.js +5805 -2682
- package/bin/worker.js +5280 -2388
- package/dist/cli/commands/publish.d.ts +2 -0
- package/dist/cli/commands/registry-reconcile.d.ts +2 -0
- package/dist/cli/components/App.d.ts +2 -1
- package/dist/cli/components/CategorySelect.d.ts +2 -1
- package/dist/cli/components/Header.d.ts +2 -1
- package/dist/cli/components/InstallProgress.d.ts +2 -1
- package/dist/cli/components/SearchView.d.ts +2 -1
- package/dist/cli/components/SkillSelect.d.ts +2 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5386 -13739
- package/dist/lib/agent-sync.d.ts +61 -6
- package/dist/lib/auth-store.d.ts +37 -0
- package/dist/lib/config.d.ts +51 -0
- package/dist/lib/home-adoption.d.ts +91 -0
- package/dist/lib/home-census.d.ts +26 -0
- package/dist/lib/home-migration.d.ts +60 -0
- package/dist/lib/native-storage.d.ts +1 -1
- package/dist/lib/portable-skills-files.d.ts +21 -1
- package/dist/lib/portable-skills-types.d.ts +46 -0
- package/dist/lib/portable-skills.d.ts +35 -6
- package/dist/lib/pull.d.ts +97 -0
- package/dist/lib/registry-reconcile.d.ts +114 -0
- package/dist/lib/registry.d.ts +7 -4
- package/dist/lib/remote-client.d.ts +124 -1
- package/dist/lib/remote-registry.d.ts +26 -0
- package/dist/lib/revision.d.ts +29 -0
- package/dist/lib/run-state.d.ts +5 -0
- package/dist/lib/skill-bundles.d.ts +54 -0
- package/dist/lib/skill-contract.d.ts +35 -0
- package/dist/lib/skill-hash.d.ts +77 -0
- package/dist/sdk/cancel.d.ts +30 -0
- package/dist/sdk/dispatcher.d.ts +40 -0
- package/dist/sdk/event-sink.d.ts +2 -0
- package/dist/sdk/events.d.ts +79 -0
- package/dist/sdk/execution/admission.d.ts +44 -0
- package/dist/sdk/execution/dispatchers/e2b.d.ts +17 -0
- package/dist/sdk/execution/dispatchers/ecs.d.ts +151 -0
- package/dist/sdk/execution/image-profile.d.ts +73 -0
- package/dist/sdk/execution/index.d.ts +15 -0
- package/dist/sdk/execution/receipts.d.ts +44 -0
- package/dist/sdk/execution/state-machine.d.ts +38 -0
- package/dist/sdk/execution/storage.d.ts +158 -0
- package/dist/sdk/execution/types.d.ts +130 -0
- package/dist/sdk/executor.d.ts +17 -0
- package/dist/sdk/governance-store.d.ts +156 -0
- package/dist/sdk/governance.d.ts +92 -0
- package/dist/sdk/index.d.ts +26 -0
- package/dist/sdk/index.js +49728 -0
- package/dist/sdk/offline.d.ts +16 -0
- package/dist/sdk/outputs.d.ts +71 -0
- package/dist/sdk/registry.d.ts +28 -0
- package/dist/sdk/runs.d.ts +229 -0
- package/dist/sdk/server.d.ts +35 -0
- package/dist/sdk/spend.d.ts +36 -0
- package/dist/sdk/storage.d.ts +25 -0
- package/dist/server/app.d.ts +42 -0
- package/dist/server/artifact-storage.d.ts +102 -0
- package/dist/server/auth.d.ts +5 -0
- package/dist/server/config.d.ts +50 -0
- package/dist/server/database-url.d.ts +42 -0
- package/dist/server/handlers.d.ts +3 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/migrate.d.ts +13 -0
- package/dist/server/migrations-dir.d.ts +18 -0
- package/dist/server/redaction.d.ts +1 -0
- package/dist/server/registry.d.ts +5 -0
- package/dist/server/rows.d.ts +24 -0
- package/dist/server/skills-api.d.ts +170 -0
- package/dist/server/sqlite-store.d.ts +131 -0
- package/dist/server/store-fixtures.d.ts +25 -0
- package/dist/server/store.d.ts +170 -0
- package/dist/server/types.d.ts +337 -0
- package/dist/server/worker.d.ts +4 -0
- package/dist/storage.js +39 -2
- package/docs/skill-standard.md +211 -39
- package/migrations/postgres/0003_run_outputs_governance.sql +83 -0
- package/migrations/postgres/0004_hosted_pins.sql +28 -0
- package/migrations/postgres/0005_revision_tombstone_registry.sql +37 -0
- package/migrations/postgres/0005_tag_projection.sql +36 -0
- package/migrations/sqlite/0003_run_outputs_governance.sql +58 -0
- package/migrations/sqlite/0004_hosted_pins.sql +21 -0
- package/migrations/sqlite/0005_revision_tombstone_registry.sql +18 -0
- package/migrations/sqlite/0005_tag_projection.sql +25 -0
- package/package.json +12 -8
- package/schemas/skill.schema.json +181 -0
- package/agent-skills/README.md +0 -41
- package/agent-skills/fleet-package-rollout/SKILL.md +0 -169
- package/agent-skills/inbox/SKILL.md +0 -25
- package/agent-skills/inbox/scripts/inbox +0 -109
- package/agent-skills/inbox/tests/test_registered_sender_id.sh +0 -92
- package/agent-skills/inbox-monitor/SKILL.md +0 -41
- package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +0 -91
- package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +0 -71
- package/agent-skills/merge-pr/SKILL.md +0 -85
- package/agent-skills/merge-pr/references/merge-safety.md +0 -82
- package/agent-skills/merge-pr/scripts/merge_pr_guard.py +0 -694
- package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +0 -647
- package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +0 -28
- package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +0 -28
- package/agent-skills/skill-goal-execute/SKILL.md +0 -115
- package/agent-skills/skill-login/SKILL.md +0 -109
- package/agent-skills/skill-project-create/SKILL.md +0 -91
- package/agent-skills/skill-publish/SKILL.md +0 -254
- package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
- package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
- package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
- package/skills/_common/auth.ts +0 -45
- package/skills/_common/http-client.ts +0 -143
- package/skills/_common/index.ts +0 -26
- package/skills/_common/install.sh +0 -7
- package/skills/_common/installer.ts +0 -72
- package/skills/_common/skill-install.ts +0 -37
- package/skills/_common/vision.ts +0 -374
- package/skills/ad-creative-pack/SKILL.md +0 -55
- package/skills/ad-creative-pack/package.json +0 -10
- package/skills/analyze-data/CLAUDE.md +0 -16
- package/skills/analyze-data/SKILL.md +0 -112
- package/skills/analyze-data/package.json +0 -23
- package/skills/analyze-data/src/analysis.ts +0 -401
- package/skills/analyze-data/src/cli.ts +0 -66
- package/skills/analyze-data/src/formatters.ts +0 -235
- package/skills/analyze-data/src/index.ts +0 -74
- package/skills/analyze-data/src/logger.ts +0 -36
- package/skills/analyze-data/src/parsers.ts +0 -57
- package/skills/analyze-data/src/stats.ts +0 -151
- package/skills/analyze-data/src/types.ts +0 -85
- package/skills/analyze-data/tsconfig.json +0 -19
- package/skills/api-docs-portal/SKILL.md +0 -84
- package/skills/api-docs-portal/package.json +0 -35
- package/skills/api-docs-portal/src/index.ts +0 -919
- package/skills/api-docs-portal/tsconfig.json +0 -17
- package/skills/api-test-suite/CLAUDE.md +0 -19
- package/skills/api-test-suite/package.json +0 -27
- package/skills/api-test-suite/src/index.ts +0 -381
- package/skills/api-test-suite/tsconfig.json +0 -10
- package/skills/audio-extract/CLAUDE.md +0 -9
- package/skills/audio-extract/SKILL.md +0 -73
- package/skills/audio-extract/package.json +0 -23
- package/skills/audio-extract/src/index.ts +0 -323
- package/skills/audio-extract/tsconfig.json +0 -11
- package/skills/bio-sequence-tool/CLAUDE.md +0 -19
- package/skills/bio-sequence-tool/package.json +0 -27
- package/skills/bio-sequence-tool/src/index.ts +0 -85
- package/skills/bio-sequence-tool/tsconfig.json +0 -10
- package/skills/blog-article/CLAUDE.md +0 -12
- package/skills/blog-article/SKILL.md +0 -55
- package/skills/blog-article/package.json +0 -10
- package/skills/blog-article/tsconfig.json +0 -10
- package/skills/brand-assets/SKILL.md +0 -118
- package/skills/brand-assets/package.json +0 -35
- package/skills/brand-assets/src/cli.ts +0 -155
- package/skills/brand-assets/src/constants.ts +0 -8
- package/skills/brand-assets/src/extract.ts +0 -236
- package/skills/brand-assets/src/index.ts +0 -668
- package/skills/brand-assets/src/types.ts +0 -59
- package/skills/brand-assets/tsconfig.json +0 -17
- package/skills/brand-kit/SKILL.md +0 -54
- package/skills/brand-kit/package.json +0 -10
- package/skills/businessactivity/CLAUDE.md +0 -176
- package/skills/businessactivity/LICENSE +0 -192
- package/skills/businessactivity/README.md +0 -287
- package/skills/businessactivity/package.json +0 -25
- package/skills/businessactivity/scripts/publish.ts +0 -210
- package/skills/businessactivity/src/commands/activity.ts +0 -211
- package/skills/businessactivity/src/commands/function.ts +0 -227
- package/skills/businessactivity/src/commands/owner.ts +0 -193
- package/skills/businessactivity/src/commands/profile.ts +0 -121
- package/skills/businessactivity/src/commands/responsibility.ts +0 -264
- package/skills/businessactivity/src/commands/team.ts +0 -244
- package/skills/businessactivity/src/commands/workflow.ts +0 -359
- package/skills/businessactivity/src/index.ts +0 -3
- package/skills/businessactivity/src/lib/config.ts +0 -167
- package/skills/businessactivity/src/lib/output.ts +0 -76
- package/skills/businessactivity/src/lib/paths.ts +0 -79
- package/skills/businessactivity/src/lib/storage.ts +0 -95
- package/skills/businessactivity/src/types/index.ts +0 -86
- package/skills/businessactivity/tsconfig.json +0 -29
- package/skills/codefix/LICENSE +0 -192
- package/skills/codefix/README.md +0 -232
- package/skills/codefix/SKILL.md +0 -94
- package/skills/codefix/package.json +0 -21
- package/skills/codefix/src/fixers/batch.ts +0 -213
- package/skills/codefix/src/fixers/detector.ts +0 -160
- package/skills/codefix/src/fixers/index.ts +0 -7
- package/skills/codefix/src/fixers/runner.ts +0 -522
- package/skills/codefix/src/index-local.ts +0 -431
- package/skills/codefix/src/index.ts +0 -4
- package/skills/codefix/src/types.ts +0 -211
- package/skills/codefix/tsconfig.json +0 -15
- package/skills/commitpush/SKILL.md +0 -57
- package/skills/commitpush/package.json +0 -33
- package/skills/commitpush/src/index.ts +0 -34
- package/skills/commitpush/tsconfig.json +0 -17
- package/skills/commitpushpr/SKILL.md +0 -55
- package/skills/commitpushpr/package.json +0 -33
- package/skills/commitpushpr/src/index.ts +0 -34
- package/skills/commitpushpr/tsconfig.json +0 -17
- package/skills/compress-video/CLAUDE.md +0 -9
- package/skills/compress-video/SKILL.md +0 -79
- package/skills/compress-video/package.json +0 -23
- package/skills/compress-video/src/index.ts +0 -473
- package/skills/compress-video/tsconfig.json +0 -11
- package/skills/contract-review-report/SKILL.md +0 -52
- package/skills/contract-review-report/package.json +0 -10
- package/skills/customer-feedback-report/SKILL.md +0 -52
- package/skills/customer-feedback-report/package.json +0 -10
- package/skills/dashboard-builder/CLAUDE.md +0 -19
- package/skills/dashboard-builder/package.json +0 -29
- package/skills/dashboard-builder/src/index.ts +0 -150
- package/skills/dashboard-builder/tsconfig.json +0 -10
- package/skills/data-anonymizer/CLAUDE.md +0 -19
- package/skills/data-anonymizer/package.json +0 -27
- package/skills/data-anonymizer/src/index.ts +0 -183
- package/skills/data-anonymizer/tsconfig.json +0 -10
- package/skills/database-explorer/CLAUDE.md +0 -19
- package/skills/database-explorer/package.json +0 -29
- package/skills/database-explorer/src/index.ts +0 -95
- package/skills/database-explorer/tsconfig.json +0 -10
- package/skills/diff-viewer/CLAUDE.md +0 -19
- package/skills/diff-viewer/package.json +0 -30
- package/skills/diff-viewer/src/index.ts +0 -164
- package/skills/diff-viewer/tsconfig.json +0 -10
- package/skills/doc-read/SKILL.md +0 -45
- package/skills/doc-read/package.json +0 -29
- package/skills/doc-read/src/index.ts +0 -324
- package/skills/doc-read/tsconfig.json +0 -8
- package/skills/domainpurchase/LICENSE +0 -192
- package/skills/domainpurchase/SKILL.md +0 -29
- package/skills/domainpurchase/package.json +0 -30
- package/skills/domainpurchase/src/index.ts +0 -3
- package/skills/domainpurchase/tsconfig.json +0 -21
- package/skills/email-sequence/SKILL.md +0 -53
- package/skills/email-sequence/package.json +0 -10
- package/skills/experiment-power-calculator/CLAUDE.md +0 -19
- package/skills/experiment-power-calculator/package.json +0 -29
- package/skills/experiment-power-calculator/src/index.ts +0 -86
- package/skills/experiment-power-calculator/tsconfig.json +0 -10
- package/skills/extract-frames/CLAUDE.md +0 -19
- package/skills/extract-frames/package.json +0 -27
- package/skills/extract-frames/src/index.ts +0 -616
- package/skills/extract-frames/tsconfig.json +0 -10
- package/skills/file-organizer/CLAUDE.md +0 -19
- package/skills/file-organizer/package.json +0 -27
- package/skills/file-organizer/src/index.ts +0 -91
- package/skills/file-organizer/tsconfig.json +0 -10
- package/skills/folder-tree/CLAUDE.md +0 -19
- package/skills/folder-tree/package.json +0 -29
- package/skills/folder-tree/src/index.ts +0 -568
- package/skills/folder-tree/tsconfig.json +0 -10
- package/skills/form-filler/CLAUDE.md +0 -19
- package/skills/form-filler/package.json +0 -29
- package/skills/form-filler/src/index.ts +0 -81
- package/skills/form-filler/tsconfig.json +0 -10
- package/skills/generate-api-client/CLAUDE.md +0 -19
- package/skills/generate-api-client/package.json +0 -29
- package/skills/generate-api-client/src/generator.ts +0 -47
- package/skills/generate-api-client/src/index.ts +0 -92
- package/skills/generate-api-client/src/logger.ts +0 -34
- package/skills/generate-api-client/src/python-generator.ts +0 -245
- package/skills/generate-api-client/src/spec-loader.ts +0 -48
- package/skills/generate-api-client/src/type-mappers.ts +0 -79
- package/skills/generate-api-client/src/types.ts +0 -76
- package/skills/generate-api-client/src/typescript-generator.ts +0 -247
- package/skills/generate-api-client/tsconfig.json +0 -10
- package/skills/generate-chart/CLAUDE.md +0 -19
- package/skills/generate-chart/package.json +0 -27
- package/skills/generate-chart/src/index.ts +0 -510
- package/skills/generate-chart/tsconfig.json +0 -10
- package/skills/generate-dockerfile/CLAUDE.md +0 -19
- package/skills/generate-dockerfile/package.json +0 -27
- package/skills/generate-dockerfile/src/cli.ts +0 -78
- package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
- package/skills/generate-dockerfile/src/index.ts +0 -81
- package/skills/generate-dockerfile/src/logger.ts +0 -30
- package/skills/generate-dockerfile/src/project-detection.ts +0 -68
- package/skills/generate-dockerfile/src/support-files.ts +0 -171
- package/skills/generate-dockerfile/src/types.ts +0 -29
- package/skills/generate-dockerfile/tsconfig.json +0 -10
- package/skills/generate-env/CLAUDE.md +0 -19
- package/skills/generate-env/package.json +0 -29
- package/skills/generate-env/src/cli.ts +0 -85
- package/skills/generate-env/src/detection.ts +0 -161
- package/skills/generate-env/src/env-data.ts +0 -66
- package/skills/generate-env/src/generators.ts +0 -240
- package/skills/generate-env/src/index.ts +0 -120
- package/skills/generate-env/src/runtime.ts +0 -30
- package/skills/generate-env/src/types.ts +0 -32
- package/skills/generate-env/tsconfig.json +0 -10
- package/skills/generate-favicon/CLAUDE.md +0 -19
- package/skills/generate-favicon/package.json +0 -29
- package/skills/generate-favicon/src/index.ts +0 -421
- package/skills/generate-favicon/tsconfig.json +0 -10
- package/skills/generate-qrcode/CLAUDE.md +0 -19
- package/skills/generate-qrcode/package.json +0 -30
- package/skills/generate-qrcode/src/index.ts +0 -584
- package/skills/generate-qrcode/tsconfig.json +0 -10
- package/skills/generate-resume/CLAUDE.md +0 -19
- package/skills/generate-resume/package.json +0 -27
- package/skills/generate-resume/src/cli.ts +0 -157
- package/skills/generate-resume/src/index.ts +0 -178
- package/skills/generate-resume/src/parsers.ts +0 -95
- package/skills/generate-resume/src/renderers.ts +0 -538
- package/skills/generate-resume/src/security.ts +0 -39
- package/skills/generate-resume/src/types.ts +0 -86
- package/skills/generate-resume/tsconfig.json +0 -10
- package/skills/generate-sitemap/CLAUDE.md +0 -19
- package/skills/generate-sitemap/package.json +0 -27
- package/skills/generate-sitemap/src/index.ts +0 -626
- package/skills/generate-sitemap/tsconfig.json +0 -10
- package/skills/gif-maker/CLAUDE.md +0 -19
- package/skills/gif-maker/package.json +0 -30
- package/skills/gif-maker/src/index.ts +0 -600
- package/skills/gif-maker/tsconfig.json +0 -10
- package/skills/hook/LICENSE +0 -192
- package/skills/hook/README.md +0 -74
- package/skills/hook/SKILL.md +0 -85
- package/skills/hook/bunfig.toml +0 -5
- package/skills/hook/package.json +0 -28
- package/skills/hook/src/commands/create.ts +0 -112
- package/skills/hook/src/commands/events.ts +0 -37
- package/skills/hook/src/commands/validate.ts +0 -117
- package/skills/hook/src/index.ts +0 -118
- package/skills/hook/src/templates/root.ts +0 -196
- package/skills/hook/src/templates/source.ts +0 -647
- package/skills/hook/tsconfig.json +0 -18
- package/skills/http-server/CLAUDE.md +0 -19
- package/skills/http-server/package.json +0 -29
- package/skills/http-server/src/index.ts +0 -51
- package/skills/http-server/tsconfig.json +0 -10
- package/skills/implementation/LICENSE +0 -192
- package/skills/implementation/README.md +0 -53
- package/skills/implementation/SKILL.md +0 -57
- package/skills/implementation/bunfig.toml +0 -5
- package/skills/implementation/package.json +0 -28
- package/skills/implementation/src/commands/create.ts +0 -187
- package/skills/implementation/src/index.ts +0 -62
- package/skills/implementation/tsconfig.json +0 -18
- package/skills/implementation-plan/CLAUDE.md +0 -19
- package/skills/implementation-plan/package.json +0 -29
- package/skills/implementation-plan/src/index.ts +0 -520
- package/skills/implementation-plan/tsconfig.json +0 -10
- package/skills/implementation-todo/CLAUDE.md +0 -19
- package/skills/implementation-todo/package.json +0 -29
- package/skills/implementation-todo/src/index.ts +0 -429
- package/skills/implementation-todo/tsconfig.json +0 -10
- package/skills/invoice/.env.example +0 -3
- package/skills/invoice/CLAUDE.md +0 -31
- package/skills/invoice/LICENSE +0 -192
- package/skills/invoice/README.md +0 -70
- package/skills/invoice/package.json +0 -26
- package/skills/invoice/src/commands/companies.ts +0 -202
- package/skills/invoice/src/commands/config.ts +0 -132
- package/skills/invoice/src/commands/generate.ts +0 -177
- package/skills/invoice/src/commands/invoices.ts +0 -218
- package/skills/invoice/src/index.ts +0 -3
- package/skills/invoice/src/lib/api.ts +0 -124
- package/skills/invoice/src/lib/storage.ts +0 -171
- package/skills/invoice/src/types/index.ts +0 -86
- package/skills/invoice/src/utils/logger.ts +0 -33
- package/skills/invoice/src/utils/paths.ts +0 -25
- package/skills/invoice/tsconfig.json +0 -23
- package/skills/invoice-reconciliation/SKILL.md +0 -98
- package/skills/invoice-reconciliation/package.json +0 -36
- package/skills/invoice-reconciliation/src/index.ts +0 -743
- package/skills/invoice-reconciliation/tsconfig.json +0 -17
- package/skills/landing-page-pack/SKILL.md +0 -55
- package/skills/landing-page-pack/package.json +0 -10
- package/skills/latex-table-generator/CLAUDE.md +0 -19
- package/skills/latex-table-generator/package.json +0 -29
- package/skills/latex-table-generator/src/index.ts +0 -113
- package/skills/latex-table-generator/tsconfig.json +0 -10
- package/skills/logo-design/SKILL.md +0 -94
- package/skills/logo-design/package.json +0 -35
- package/skills/logo-design/src/cli.ts +0 -132
- package/skills/logo-design/src/constants.ts +0 -5
- package/skills/logo-design/src/docs.ts +0 -102
- package/skills/logo-design/src/geometry.ts +0 -324
- package/skills/logo-design/src/index.ts +0 -212
- package/skills/logo-design/src/palette.ts +0 -258
- package/skills/logo-design/src/types.ts +0 -50
- package/skills/logo-design/tsconfig.json +0 -17
- package/skills/lorem-generator/CLAUDE.md +0 -19
- package/skills/lorem-generator/package.json +0 -29
- package/skills/lorem-generator/src/index.ts +0 -59
- package/skills/lorem-generator/tsconfig.json +0 -10
- package/skills/managemcp/CLAUDE.md +0 -14
- package/skills/managemcp/README.md +0 -24
- package/skills/managemcp/package.json +0 -16
- package/skills/managemcp/src/index.ts +0 -3
- package/skills/managemcp/tsconfig.json +0 -27
- package/skills/markdown-validator/CLAUDE.md +0 -19
- package/skills/markdown-validator/package.json +0 -29
- package/skills/markdown-validator/src/index.ts +0 -92
- package/skills/markdown-validator/tsconfig.json +0 -10
- package/skills/market-research-report/SKILL.md +0 -51
- package/skills/market-research-report/package.json +0 -10
- package/skills/meeting-pack/SKILL.md +0 -52
- package/skills/meeting-pack/package.json +0 -10
- package/skills/merge-pdfs/CLAUDE.md +0 -19
- package/skills/merge-pdfs/package.json +0 -31
- package/skills/merge-pdfs/src/index.ts +0 -427
- package/skills/merge-pdfs/tsconfig.json +0 -10
- package/skills/migration-plan-pack/SKILL.md +0 -56
- package/skills/migration-plan-pack/package.json +0 -10
- package/skills/monitor/SKILL.md +0 -69
- package/skills/monitor/package.json +0 -33
- package/skills/monitor/src/index.ts +0 -34
- package/skills/monitor/tsconfig.json +0 -17
- package/skills/one-page-website/SKILL.md +0 -128
- package/skills/one-page-website/package.json +0 -34
- package/skills/one-page-website/src/design.ts +0 -336
- package/skills/one-page-website/src/docs.ts +0 -159
- package/skills/one-page-website/src/index.ts +0 -357
- package/skills/one-page-website/src/page.ts +0 -340
- package/skills/one-page-website/src/styles.ts +0 -508
- package/skills/one-page-website/src/types.ts +0 -78
- package/skills/one-page-website/tsconfig.json +0 -17
- package/skills/pdf-generate/CLAUDE.md +0 -19
- package/skills/pdf-generate/SKILL.md +0 -86
- package/skills/pdf-generate/package.json +0 -21
- package/skills/pdf-generate/src/cli.ts +0 -162
- package/skills/pdf-generate/src/html.ts +0 -84
- package/skills/pdf-generate/src/index.ts +0 -62
- package/skills/pdf-generate/src/markdown.ts +0 -27
- package/skills/pdf-generate/src/pdf-writer.ts +0 -78
- package/skills/pdf-generate/src/runtime.ts +0 -34
- package/skills/pdf-generate/src/security.ts +0 -37
- package/skills/pdf-generate/src/templates.ts +0 -311
- package/skills/pdf-generate/src/types.ts +0 -28
- package/skills/pdf-generate/tsconfig.json +0 -16
- package/skills/pdf-to-dataset/SKILL.md +0 -88
- package/skills/pdf-to-dataset/package.json +0 -37
- package/skills/pdf-to-dataset/src/index.ts +0 -790
- package/skills/pdf-to-dataset/tsconfig.json +0 -17
- package/skills/pdf-to-markdown/SKILL.md +0 -81
- package/skills/pdf-to-markdown/package.json +0 -35
- package/skills/pdf-to-markdown/src/index.ts +0 -694
- package/skills/pdf-to-markdown/tsconfig.json +0 -17
- package/skills/performance-audit-report/SKILL.md +0 -49
- package/skills/performance-audit-report/package.json +0 -10
- package/skills/pitch-deck/SKILL.md +0 -51
- package/skills/pitch-deck/package.json +0 -10
- package/skills/product-mockup/SKILL.md +0 -107
- package/skills/product-mockup/package.json +0 -32
- package/skills/product-mockup/src/cli.ts +0 -150
- package/skills/product-mockup/src/design.ts +0 -151
- package/skills/product-mockup/src/docs.ts +0 -134
- package/skills/product-mockup/src/index.ts +0 -182
- package/skills/product-mockup/src/render.ts +0 -407
- package/skills/product-mockup/src/types.ts +0 -66
- package/skills/product-mockup/tsconfig.json +0 -17
- package/skills/proposal-pack/SKILL.md +0 -53
- package/skills/proposal-pack/package.json +0 -10
- package/skills/read-csv/SKILL.md +0 -62
- package/skills/read-csv/package.json +0 -37
- package/skills/read-csv/src/index.ts +0 -356
- package/skills/read-csv/tsconfig.json +0 -17
- package/skills/read-excel/SKILL.md +0 -64
- package/skills/read-excel/package.json +0 -36
- package/skills/read-excel/src/index.ts +0 -266
- package/skills/read-excel/tsconfig.json +0 -17
- package/skills/regex-tester/CLAUDE.md +0 -19
- package/skills/regex-tester/package.json +0 -27
- package/skills/regex-tester/src/index.ts +0 -183
- package/skills/regex-tester/tsconfig.json +0 -10
- package/skills/repo-onboarding-report/SKILL.md +0 -52
- package/skills/repo-onboarding-report/package.json +0 -10
- package/skills/scancommitpr/SKILL.md +0 -178
- package/skills/scancommitpr/package.json +0 -34
- package/skills/scancommitpr/src/index.ts +0 -44
- package/skills/scancommitpr/tsconfig.json +0 -13
- package/skills/scancommitpush/SKILL.md +0 -174
- package/skills/scancommitpush/package.json +0 -32
- package/skills/scancommitpush/src/index.ts +0 -44
- package/skills/scancommitpush/tsconfig.json +0 -13
- package/skills/scientific-figure-check/CLAUDE.md +0 -19
- package/skills/scientific-figure-check/package.json +0 -29
- package/skills/scientific-figure-check/src/index.ts +0 -83
- package/skills/scientific-figure-check/tsconfig.json +0 -10
- package/skills/security-audit/CLAUDE.md +0 -19
- package/skills/security-audit/package.json +0 -27
- package/skills/security-audit/src/index.ts +0 -145
- package/skills/security-audit/tsconfig.json +0 -10
- package/skills/security-audit-report/SKILL.md +0 -52
- package/skills/security-audit-report/package.json +0 -10
- package/skills/seo-content-pack/SKILL.md +0 -54
- package/skills/seo-content-pack/package.json +0 -10
- package/skills/siteanalyze/SKILL.md +0 -25
- package/skills/siteanalyze/package.json +0 -27
- package/skills/siteanalyze/src/index.ts +0 -592
- package/skills/slide-deck-generator/SKILL.md +0 -93
- package/skills/slide-deck-generator/package.json +0 -38
- package/skills/slide-deck-generator/src/cli.ts +0 -133
- package/skills/slide-deck-generator/src/index.ts +0 -148
- package/skills/slide-deck-generator/src/model.ts +0 -307
- package/skills/slide-deck-generator/src/pptx.ts +0 -143
- package/skills/slide-deck-generator/src/render.ts +0 -248
- package/skills/slide-deck-generator/src/types.ts +0 -114
- package/skills/slide-deck-generator/src/utils.ts +0 -53
- package/skills/slide-deck-generator/tsconfig.json +0 -17
- package/skills/social-content-calendar/SKILL.md +0 -54
- package/skills/social-content-calendar/package.json +0 -10
- package/skills/split-pdf/CLAUDE.md +0 -19
- package/skills/split-pdf/package.json +0 -30
- package/skills/split-pdf/src/index.ts +0 -301
- package/skills/split-pdf/tsconfig.json +0 -10
- package/skills/statistical-test-selector/CLAUDE.md +0 -19
- package/skills/statistical-test-selector/package.json +0 -27
- package/skills/statistical-test-selector/src/index.ts +0 -75
- package/skills/statistical-test-selector/tsconfig.json +0 -10
- package/skills/test-suite-generator/SKILL.md +0 -51
- package/skills/test-suite-generator/package.json +0 -10
- package/skills/tmux-session/SKILL.md +0 -109
- package/skills/tmux-session/package.json +0 -33
- package/skills/tmux-session/src/index.ts +0 -34
- package/skills/tmux-session/tsconfig.json +0 -17
- package/skills/todos-plan/SKILL.md +0 -363
- package/skills/todos-plan/agents/openai.yaml +0 -4
- package/skills/todos-plan/package.json +0 -9
- package/skills/todos-plan/src/index.ts +0 -68
- package/skills/tsconfig.base.json +0 -12
- package/skills/validate-config/CLAUDE.md +0 -19
- package/skills/validate-config/package.json +0 -29
- package/skills/validate-config/src/index.ts +0 -56
- package/skills/validate-config/tsconfig.json +0 -10
- package/skills/video-downloader/CLAUDE.md +0 -19
- package/skills/video-downloader/package.json +0 -29
- package/skills/video-downloader/src/index.ts +0 -561
- package/skills/video-downloader/tsconfig.json +0 -10
- package/skills/video-highlight-pack/SKILL.md +0 -54
- package/skills/video-highlight-pack/package.json +0 -10
- package/skills/watermark/CLAUDE.md +0 -19
- package/skills/watermark/package.json +0 -32
- package/skills/watermark/src/index.ts +0 -587
- 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
|
+
}
|
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: "
|
|
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 ?? "
|
|
678
|
+
source: options.source ?? "skills",
|
|
642
679
|
payload: snapshot
|
|
643
680
|
};
|
|
644
681
|
}
|