@zenalexa/unicli 0.213.0 → 0.213.3
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/AGENTS.md +10 -73
- package/README.md +4 -4
- package/README.zh-CN.md +3 -3
- package/dist/browser/bridge.d.ts.map +1 -1
- package/dist/browser/bridge.js +2 -3
- package/dist/browser/bridge.js.map +1 -1
- package/dist/browser/page.d.ts +2 -0
- package/dist/browser/page.d.ts.map +1 -1
- package/dist/browser/page.js +4 -4
- package/dist/browser/page.js.map +1 -1
- package/dist/browser/snapshot-helpers.d.ts +10 -0
- package/dist/browser/snapshot-helpers.d.ts.map +1 -0
- package/dist/browser/snapshot-helpers.js +21 -0
- package/dist/browser/snapshot-helpers.js.map +1 -0
- package/dist/browser/snapshot-identity.d.ts +71 -0
- package/dist/browser/snapshot-identity.d.ts.map +1 -0
- package/dist/browser/snapshot-identity.js +155 -0
- package/dist/browser/snapshot-identity.js.map +1 -0
- package/dist/browser/target-errors.d.ts +45 -0
- package/dist/browser/target-errors.d.ts.map +1 -0
- package/dist/browser/target-errors.js +61 -0
- package/dist/browser/target-errors.js.map +1 -0
- package/dist/cli.d.ts +0 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -31
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +90 -54
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +89 -59
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/describe.d.ts +26 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/describe.js +230 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/dispatch.d.ts +14 -3
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/dispatch.js +141 -147
- package/dist/commands/dispatch.js.map +1 -1
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +153 -142
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/explore.d.ts.map +1 -1
- package/dist/commands/explore.js +31 -24
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +54 -44
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +3 -6
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/hub.d.ts.map +1 -1
- package/dist/commands/hub.js +165 -59
- package/dist/commands/hub.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +34 -17
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +28 -22
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate-schema.d.ts.map +1 -1
- package/dist/commands/migrate-schema.js +46 -13
- package/dist/commands/migrate-schema.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +30 -7
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/operate.d.ts.map +1 -1
- package/dist/commands/operate.js +92 -47
- package/dist/commands/operate.js.map +1 -1
- package/dist/commands/repair.d.ts.map +1 -1
- package/dist/commands/repair.js +82 -27
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/research.d.ts.map +1 -1
- package/dist/commands/research.js +96 -86
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/schema.d.ts +2 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +44 -12
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +64 -46
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +3 -3
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +10 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/synthesize.d.ts.map +1 -1
- package/dist/commands/synthesize.js +123 -141
- package/dist/commands/synthesize.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/discovery/loader.d.ts +8 -0
- package/dist/discovery/loader.d.ts.map +1 -1
- package/dist/discovery/loader.js +22 -1
- package/dist/discovery/loader.js.map +1 -1
- package/dist/engine/args.d.ts +83 -0
- package/dist/engine/args.d.ts.map +1 -0
- package/dist/engine/args.js +260 -0
- package/dist/engine/args.js.map +1 -0
- package/dist/engine/executor.d.ts +23 -4
- package/dist/engine/executor.d.ts.map +1 -1
- package/dist/engine/executor.js +32 -2
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/harden.d.ts +48 -0
- package/dist/engine/harden.d.ts.map +1 -0
- package/dist/engine/harden.js +327 -0
- package/dist/engine/harden.js.map +1 -0
- package/dist/engine/invoke.d.ts +16 -0
- package/dist/engine/invoke.d.ts.map +1 -0
- package/dist/engine/invoke.js +15 -0
- package/dist/engine/invoke.js.map +1 -0
- package/dist/engine/kernel/compile.d.ts +30 -0
- package/dist/engine/kernel/compile.d.ts.map +1 -0
- package/dist/engine/kernel/compile.js +167 -0
- package/dist/engine/kernel/compile.js.map +1 -0
- package/dist/engine/kernel/execute.d.ts +35 -0
- package/dist/engine/kernel/execute.d.ts.map +1 -0
- package/dist/engine/kernel/execute.js +221 -0
- package/dist/engine/kernel/execute.js.map +1 -0
- package/dist/engine/kernel/types.d.ts +49 -0
- package/dist/engine/kernel/types.d.ts.map +1 -0
- package/dist/engine/kernel/types.js +9 -0
- package/dist/engine/kernel/types.js.map +1 -0
- package/dist/engine/kernel/ulid.d.ts +21 -0
- package/dist/engine/kernel/ulid.d.ts.map +1 -0
- package/dist/engine/kernel/ulid.js +76 -0
- package/dist/engine/kernel/ulid.js.map +1 -0
- package/dist/engine/steps/click.d.ts.map +1 -1
- package/dist/engine/steps/click.js +6 -0
- package/dist/engine/steps/click.js.map +1 -1
- package/dist/engine/steps/snapshot.d.ts.map +1 -1
- package/dist/engine/steps/snapshot.js +2 -0
- package/dist/engine/steps/snapshot.js.map +1 -1
- package/dist/engine/steps/type.d.ts.map +1 -1
- package/dist/engine/steps/type.js +2 -0
- package/dist/engine/steps/type.js.map +1 -1
- package/dist/engine/template.d.ts.map +1 -1
- package/dist/engine/template.js +11 -0
- package/dist/engine/template.js.map +1 -1
- package/dist/main.js +0 -0
- package/dist/manifest.json +1 -1
- package/dist/mcp/dispatch.d.ts +46 -0
- package/dist/mcp/dispatch.d.ts.map +1 -0
- package/dist/mcp/dispatch.js +109 -0
- package/dist/mcp/dispatch.js.map +1 -0
- package/dist/mcp/handler.d.ts +30 -0
- package/dist/mcp/handler.d.ts.map +1 -0
- package/dist/mcp/handler.js +293 -0
- package/dist/mcp/handler.js.map +1 -0
- package/dist/mcp/http-transport.d.ts +16 -0
- package/dist/mcp/http-transport.d.ts.map +1 -0
- package/dist/mcp/http-transport.js +124 -0
- package/dist/mcp/http-transport.js.map +1 -0
- package/dist/mcp/server.d.ts +17 -33
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +31 -742
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/sse-transport.js.map +1 -1
- package/dist/mcp/streamable-http/handle-post.d.ts +23 -0
- package/dist/mcp/streamable-http/handle-post.d.ts.map +1 -0
- package/dist/mcp/streamable-http/handle-post.js +357 -0
- package/dist/mcp/streamable-http/handle-post.js.map +1 -0
- package/dist/mcp/streamable-http/index.d.ts +45 -0
- package/dist/mcp/streamable-http/index.d.ts.map +1 -0
- package/dist/mcp/streamable-http/index.js +150 -0
- package/dist/mcp/streamable-http/index.js.map +1 -0
- package/dist/mcp/streamable-http/session.d.ts +85 -0
- package/dist/mcp/streamable-http/session.d.ts.map +1 -0
- package/dist/mcp/streamable-http/session.js +104 -0
- package/dist/mcp/streamable-http/session.js.map +1 -0
- package/dist/mcp/streamable-http.d.ts +7 -85
- package/dist/mcp/streamable-http.d.ts.map +1 -1
- package/dist/mcp/streamable-http.js +6 -568
- package/dist/mcp/streamable-http.js.map +1 -1
- package/dist/mcp/tools.d.ts +57 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +237 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/output/envelope.d.ts +94 -3
- package/dist/output/envelope.d.ts.map +1 -1
- package/dist/output/envelope.js +44 -2
- package/dist/output/envelope.js.map +1 -1
- package/dist/output/error-map.d.ts +45 -0
- package/dist/output/error-map.d.ts.map +1 -0
- package/dist/output/error-map.js +119 -0
- package/dist/output/error-map.js.map +1 -0
- package/dist/output/formatter.d.ts +12 -5
- package/dist/output/formatter.d.ts.map +1 -1
- package/dist/output/formatter.js +33 -15
- package/dist/output/formatter.js.map +1 -1
- package/dist/output/md.d.ts.map +1 -1
- package/dist/output/md.js +61 -2
- package/dist/output/md.js.map +1 -1
- package/dist/output/next-actions.d.ts +18 -0
- package/dist/output/next-actions.d.ts.map +1 -0
- package/dist/output/next-actions.js +64 -0
- package/dist/output/next-actions.js.map +1 -0
- package/dist/output/projection.d.ts +93 -0
- package/dist/output/projection.d.ts.map +1 -0
- package/dist/output/projection.js +255 -0
- package/dist/output/projection.js.map +1 -0
- package/dist/protocol/acp-helpers.d.ts +32 -0
- package/dist/protocol/acp-helpers.d.ts.map +1 -0
- package/dist/protocol/acp-helpers.js +175 -0
- package/dist/protocol/acp-helpers.js.map +1 -0
- package/dist/protocol/acp.d.ts +2 -27
- package/dist/protocol/acp.d.ts.map +1 -1
- package/dist/protocol/acp.js +7 -170
- package/dist/protocol/acp.js.map +1 -1
- package/dist/types.d.ts +33 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +14 -2
- package/src/adapters/1688/item.yaml +1 -2
- package/src/adapters/1688/search.yaml +0 -2
- package/src/adapters/1688/store.yaml +1 -2
- package/src/adapters/36kr/article.yaml +1 -2
- package/src/adapters/36kr/hot.yaml +0 -2
- package/src/adapters/36kr/latest.yaml +0 -2
- package/src/adapters/36kr/news.yaml +0 -2
- package/src/adapters/36kr/search.yaml +0 -2
- package/src/adapters/adguardhome/add-rule.yaml +0 -2
- package/src/adapters/adguardhome/rules.yaml +0 -2
- package/src/adapters/adguardhome/stats.yaml +0 -2
- package/src/adapters/adguardhome/status.yaml +0 -2
- package/src/adapters/adguardhome/toggle.yaml +0 -2
- package/src/adapters/amazon/bestsellers.yaml +2 -2
- package/src/adapters/amazon/discussion.yaml +0 -2
- package/src/adapters/amazon/movers-shakers.yaml +2 -2
- package/src/adapters/amazon/new-releases.yaml +2 -2
- package/src/adapters/amazon/offer.yaml +0 -2
- package/src/adapters/amazon/product.yaml +0 -2
- package/src/adapters/amazon/rankings.yaml +1 -2
- package/src/adapters/amazon/search.yaml +0 -2
- package/src/adapters/apple-music/rate-album.yaml +0 -2
- package/src/adapters/apple-podcasts/episodes.yaml +1 -2
- package/src/adapters/apple-podcasts/search.yaml +0 -2
- package/src/adapters/apple-podcasts/top.yaml +0 -2
- package/src/adapters/arxiv/paper.yaml +1 -2
- package/src/adapters/arxiv/search.yaml +0 -2
- package/src/adapters/arxiv/trending.yaml +0 -2
- package/src/adapters/audacity/convert.yaml +1 -2
- package/src/adapters/audacity/effects.yaml +1 -2
- package/src/adapters/audacity/info.yaml +1 -2
- package/src/adapters/audacity/mix.yaml +1 -2
- package/src/adapters/audacity/normalize.yaml +1 -2
- package/src/adapters/audacity/spectrogram.yaml +1 -2
- package/src/adapters/audacity/split-channels.yaml +1 -2
- package/src/adapters/audacity/trim.yaml +1 -2
- package/src/adapters/autoagent/eval-run.yaml +0 -2
- package/src/adapters/aws/s3-ls.yaml +0 -2
- package/src/adapters/az/account.yaml +0 -2
- package/src/adapters/baidu/hot.yaml +0 -2
- package/src/adapters/baidu/search.yaml +0 -2
- package/src/adapters/band/bands.yaml +0 -2
- package/src/adapters/band/mentions.yaml +0 -2
- package/src/adapters/band/post.yaml +0 -2
- package/src/adapters/band/posts.yaml +0 -2
- package/src/adapters/barchart/flow.yaml +0 -2
- package/src/adapters/barchart/greeks.yaml +0 -2
- package/src/adapters/barchart/options.yaml +0 -2
- package/src/adapters/barchart/quote.yaml +0 -2
- package/src/adapters/bbc/news.yaml +0 -2
- package/src/adapters/bbc/technology.yaml +0 -2
- package/src/adapters/bbc/top.yaml +0 -2
- package/src/adapters/bbc/world.yaml +0 -2
- package/src/adapters/bilibili/coin.yaml +0 -2
- package/src/adapters/bilibili/dynamic.yaml +0 -2
- package/src/adapters/bilibili/favorites.yaml +1 -2
- package/src/adapters/bilibili/feed.yaml +0 -2
- package/src/adapters/bilibili/following.yaml +0 -2
- package/src/adapters/bilibili/history.yaml +0 -2
- package/src/adapters/bilibili/hot.yaml +0 -2
- package/src/adapters/bilibili/later.yaml +0 -2
- package/src/adapters/bilibili/live.yaml +0 -2
- package/src/adapters/bilibili/me.yaml +0 -2
- package/src/adapters/bilibili/ranking.yaml +0 -2
- package/src/adapters/bilibili/trending.yaml +0 -2
- package/src/adapters/binance/hot.yaml +0 -2
- package/src/adapters/binance/kline.yaml +0 -2
- package/src/adapters/binance/ticker.yaml +0 -2
- package/src/adapters/blender/animation.yaml +2 -2
- package/src/adapters/blender/camera.yaml +1 -2
- package/src/adapters/blender/convert.yaml +1 -2
- package/src/adapters/blender/export.yaml +1 -2
- package/src/adapters/blender/import.yaml +1 -2
- package/src/adapters/blender/info.yaml +1 -2
- package/src/adapters/blender/lighting.yaml +1 -2
- package/src/adapters/blender/materials.yaml +1 -2
- package/src/adapters/blender/objects.yaml +1 -2
- package/src/adapters/blender/render.yaml +2 -2
- package/src/adapters/blender/scene.yaml +1 -2
- package/src/adapters/blender/screenshot.yaml +2 -2
- package/src/adapters/blender/script.yaml +1 -2
- package/src/adapters/bloomberg/businessweek.yaml +0 -2
- package/src/adapters/bloomberg/economics.yaml +0 -2
- package/src/adapters/bloomberg/feeds.yaml +0 -2
- package/src/adapters/bloomberg/industries.yaml +0 -2
- package/src/adapters/bloomberg/main.yaml +0 -2
- package/src/adapters/bloomberg/markets.yaml +0 -2
- package/src/adapters/bloomberg/news.yaml +0 -2
- package/src/adapters/bloomberg/opinions.yaml +0 -2
- package/src/adapters/bloomberg/politics.yaml +0 -2
- package/src/adapters/bloomberg/tech.yaml +0 -2
- package/src/adapters/bluesky/feeds.yaml +0 -2
- package/src/adapters/bluesky/followers.yaml +0 -2
- package/src/adapters/bluesky/following.yaml +0 -2
- package/src/adapters/bluesky/likes.yaml +0 -2
- package/src/adapters/bluesky/notifications.yaml +0 -2
- package/src/adapters/bluesky/post.yaml +0 -2
- package/src/adapters/bluesky/profile.yaml +0 -2
- package/src/adapters/bluesky/search.yaml +0 -2
- package/src/adapters/bluesky/starter-packs.yaml +0 -2
- package/src/adapters/bluesky/thread.yaml +0 -2
- package/src/adapters/bluesky/trending.yaml +0 -2
- package/src/adapters/bluesky/user.yaml +0 -2
- package/src/adapters/boss/batchgreet.yaml +0 -2
- package/src/adapters/boss/chatlist.yaml +0 -2
- package/src/adapters/boss/chatmsg.yaml +0 -2
- package/src/adapters/boss/detail.yaml +2 -2
- package/src/adapters/boss/exchange.yaml +0 -2
- package/src/adapters/boss/greet.yaml +0 -2
- package/src/adapters/boss/invite.yaml +0 -2
- package/src/adapters/boss/joblist.yaml +0 -2
- package/src/adapters/boss/mark.yaml +0 -2
- package/src/adapters/boss/recommend.yaml +0 -2
- package/src/adapters/boss/resume.yaml +0 -2
- package/src/adapters/boss/search.yaml +0 -2
- package/src/adapters/boss/send.yaml +0 -2
- package/src/adapters/boss/stats.yaml +0 -2
- package/src/adapters/chaoxing/assignments.yaml +0 -2
- package/src/adapters/chaoxing/exams.yaml +0 -2
- package/src/adapters/chrome/bookmarks.yaml +0 -2
- package/src/adapters/chrome/tabs.yaml +0 -2
- package/src/adapters/claude-code/version.yaml +0 -2
- package/src/adapters/cloudcompare/compare.yaml +0 -2
- package/src/adapters/cloudcompare/convert.yaml +0 -2
- package/src/adapters/cloudcompare/info.yaml +1 -2
- package/src/adapters/cloudcompare/subsample.yaml +0 -2
- package/src/adapters/cnki/search.yaml +0 -2
- package/src/adapters/cnn/technology.yaml +0 -2
- package/src/adapters/cnn/top.yaml +0 -2
- package/src/adapters/cocoapods/info.yaml +0 -2
- package/src/adapters/cocoapods/search.yaml +0 -2
- package/src/adapters/codex-cli/version.yaml +0 -2
- package/src/adapters/coinbase/prices.yaml +0 -2
- package/src/adapters/coinbase/rates.yaml +0 -2
- package/src/adapters/comfyui/generate.yaml +0 -2
- package/src/adapters/comfyui/history.yaml +0 -2
- package/src/adapters/comfyui/nodes.yaml +0 -2
- package/src/adapters/comfyui/status.yaml +0 -2
- package/src/adapters/coupang/add-to-cart.yaml +1 -2
- package/src/adapters/coupang/hot.yaml +0 -2
- package/src/adapters/coupang/search.yaml +0 -2
- package/src/adapters/crates-io/info.yaml +0 -2
- package/src/adapters/crates-io/search.yaml +0 -2
- package/src/adapters/crates-io/versions.yaml +0 -2
- package/src/adapters/ctrip/hot.yaml +0 -2
- package/src/adapters/ctrip/search.yaml +1 -2
- package/src/adapters/cua/bench-list.yaml +0 -2
- package/src/adapters/cua/bench-run.yaml +0 -2
- package/src/adapters/dangdang/hot.yaml +0 -2
- package/src/adapters/dangdang/search.yaml +0 -2
- package/src/adapters/deepseek/chat.yaml +0 -2
- package/src/adapters/deepseek/models.yaml +0 -2
- package/src/adapters/devto/latest.yaml +0 -2
- package/src/adapters/devto/search.yaml +0 -2
- package/src/adapters/devto/tag.yaml +0 -2
- package/src/adapters/devto/top.yaml +0 -2
- package/src/adapters/devto/user.yaml +0 -2
- package/src/adapters/dianping/hot.yaml +0 -2
- package/src/adapters/dianping/search.yaml +0 -2
- package/src/adapters/dictionary/examples.yaml +0 -2
- package/src/adapters/dictionary/search.yaml +0 -2
- package/src/adapters/dictionary/synonyms.yaml +0 -2
- package/src/adapters/dingtalk/version.yaml +0 -2
- package/src/adapters/docker/build.yaml +0 -2
- package/src/adapters/docker/images.yaml +0 -2
- package/src/adapters/docker/logs.yaml +0 -2
- package/src/adapters/docker/networks.yaml +0 -2
- package/src/adapters/docker/ps.yaml +0 -2
- package/src/adapters/docker/run.yaml +0 -2
- package/src/adapters/docker/volumes.yaml +0 -2
- package/src/adapters/docker-hub/info.yaml +0 -2
- package/src/adapters/docker-hub/search.yaml +0 -2
- package/src/adapters/docker-hub/tags.yaml +0 -2
- package/src/adapters/doctl/droplets.yaml +0 -2
- package/src/adapters/douban/book-hot.yaml +0 -2
- package/src/adapters/douban/download.yaml +1 -2
- package/src/adapters/douban/group-hot.yaml +0 -2
- package/src/adapters/douban/marks.yaml +0 -2
- package/src/adapters/douban/movie-hot.yaml +0 -2
- package/src/adapters/douban/new-movies.yaml +0 -2
- package/src/adapters/douban/photos.yaml +1 -2
- package/src/adapters/douban/reviews.yaml +0 -2
- package/src/adapters/douban/search.yaml +0 -2
- package/src/adapters/douban/subject.yaml +2 -2
- package/src/adapters/douban/top250.yaml +0 -2
- package/src/adapters/douban/tv-hot.yaml +0 -2
- package/src/adapters/doubao/ask.yaml +0 -2
- package/src/adapters/doubao/new.yaml +0 -2
- package/src/adapters/doubao/status.yaml +0 -2
- package/src/adapters/doubao-web/ask.yaml +0 -2
- package/src/adapters/doubao-web/detail.yaml +1 -2
- package/src/adapters/doubao-web/history.yaml +0 -2
- package/src/adapters/doubao-web/meeting-summary.yaml +1 -2
- package/src/adapters/doubao-web/meeting-transcript.yaml +1 -2
- package/src/adapters/doubao-web/new.yaml +0 -2
- package/src/adapters/doubao-web/read.yaml +0 -2
- package/src/adapters/doubao-web/send.yaml +0 -2
- package/src/adapters/doubao-web/status.yaml +0 -2
- package/src/adapters/douyu/hot.yaml +0 -2
- package/src/adapters/douyu/search.yaml +0 -2
- package/src/adapters/drawio/export.yaml +2 -2
- package/src/adapters/eastmoney/fund.yaml +0 -2
- package/src/adapters/eastmoney/hot.yaml +0 -2
- package/src/adapters/eastmoney/market.yaml +0 -2
- package/src/adapters/eastmoney/search.yaml +0 -2
- package/src/adapters/ele/hot.yaml +0 -2
- package/src/adapters/ele/search.yaml +0 -2
- package/src/adapters/exchangerate/convert.yaml +0 -2
- package/src/adapters/exchangerate/list.yaml +0 -2
- package/src/adapters/facebook/add-friend.yaml +0 -2
- package/src/adapters/facebook/events.yaml +0 -2
- package/src/adapters/facebook/feed.yaml +0 -2
- package/src/adapters/facebook/friends.yaml +0 -2
- package/src/adapters/facebook/groups.yaml +0 -2
- package/src/adapters/facebook/join-group.yaml +2 -2
- package/src/adapters/facebook/marketplace.yaml +0 -2
- package/src/adapters/facebook/memories.yaml +0 -2
- package/src/adapters/facebook/notifications.yaml +0 -2
- package/src/adapters/facebook/post.yaml +0 -2
- package/src/adapters/facebook/profile.yaml +0 -2
- package/src/adapters/facebook/search.yaml +0 -2
- package/src/adapters/feishu/calendar.yaml +0 -2
- package/src/adapters/feishu/docs.yaml +0 -2
- package/src/adapters/feishu/send.yaml +0 -2
- package/src/adapters/feishu/tasks.yaml +0 -2
- package/src/adapters/ffmpeg/compress.yaml +2 -2
- package/src/adapters/ffmpeg/concat.yaml +1 -2
- package/src/adapters/ffmpeg/convert.yaml +1 -2
- package/src/adapters/ffmpeg/extract-audio.yaml +2 -2
- package/src/adapters/ffmpeg/gif.yaml +2 -2
- package/src/adapters/ffmpeg/normalize.yaml +2 -2
- package/src/adapters/ffmpeg/probe.yaml +1 -2
- package/src/adapters/ffmpeg/resize.yaml +2 -2
- package/src/adapters/ffmpeg/subtitles.yaml +2 -2
- package/src/adapters/ffmpeg/thumbnail.yaml +2 -2
- package/src/adapters/ffmpeg/trim.yaml +2 -2
- package/src/adapters/figma/export-selected.yaml +0 -2
- package/src/adapters/flyctl/apps.yaml +0 -2
- package/src/adapters/freecad/assembly.yaml +1 -2
- package/src/adapters/freecad/bom.yaml +1 -2
- package/src/adapters/freecad/boolean.yaml +1 -2
- package/src/adapters/freecad/check.yaml +1 -2
- package/src/adapters/freecad/convert.yaml +1 -2
- package/src/adapters/freecad/export-stl.yaml +1 -2
- package/src/adapters/freecad/import.yaml +1 -2
- package/src/adapters/freecad/info.yaml +1 -2
- package/src/adapters/freecad/macro.yaml +1 -2
- package/src/adapters/freecad/measure.yaml +1 -2
- package/src/adapters/freecad/mesh.yaml +1 -2
- package/src/adapters/freecad/properties.yaml +1 -2
- package/src/adapters/freecad/render.yaml +1 -2
- package/src/adapters/freecad/section.yaml +1 -2
- package/src/adapters/freecad/sketch.yaml +1 -2
- package/src/adapters/futu/hot.yaml +0 -2
- package/src/adapters/futu/quote.yaml +0 -2
- package/src/adapters/gcloud/projects.yaml +0 -2
- package/src/adapters/gemini/ask.yaml +0 -2
- package/src/adapters/gemini/deep-research-result.yaml +0 -2
- package/src/adapters/gemini/deep-research.yaml +0 -2
- package/src/adapters/gemini/image.yaml +0 -2
- package/src/adapters/gemini/new.yaml +0 -2
- package/src/adapters/gh/issue.yaml +0 -2
- package/src/adapters/gh/pr.yaml +0 -2
- package/src/adapters/gh/release.yaml +0 -2
- package/src/adapters/gh/repo.yaml +0 -2
- package/src/adapters/gh/run.yaml +0 -2
- package/src/adapters/gimp/adjust.yaml +1 -2
- package/src/adapters/gimp/batch.yaml +1 -2
- package/src/adapters/gimp/convert.yaml +1 -2
- package/src/adapters/gimp/crop.yaml +1 -2
- package/src/adapters/gimp/filter.yaml +1 -2
- package/src/adapters/gimp/flip.yaml +1 -2
- package/src/adapters/gimp/info.yaml +1 -2
- package/src/adapters/gimp/layers.yaml +1 -2
- package/src/adapters/gimp/merge-layers.yaml +1 -2
- package/src/adapters/gimp/resize.yaml +1 -2
- package/src/adapters/gimp/rotate.yaml +1 -2
- package/src/adapters/gimp/text.yaml +1 -2
- package/src/adapters/gitee/repos.yaml +0 -2
- package/src/adapters/gitee/search.yaml +0 -2
- package/src/adapters/gitee/trending.yaml +0 -2
- package/src/adapters/github-trending/daily.yaml +0 -2
- package/src/adapters/github-trending/developers.yaml +0 -2
- package/src/adapters/github-trending/weekly.yaml +0 -2
- package/src/adapters/gitlab/projects.yaml +0 -2
- package/src/adapters/gitlab/search.yaml +0 -2
- package/src/adapters/gitlab/trending.yaml +0 -2
- package/src/adapters/godot/project-run.yaml +0 -2
- package/src/adapters/godot/scene-export.yaml +1 -2
- package/src/adapters/google/news.yaml +0 -2
- package/src/adapters/google/search.yaml +0 -2
- package/src/adapters/google/suggest.yaml +0 -2
- package/src/adapters/google/trends.yaml +0 -2
- package/src/adapters/grok/ask.yaml +0 -2
- package/src/adapters/hackernews/ask.yaml +0 -2
- package/src/adapters/hackernews/best.yaml +0 -2
- package/src/adapters/hackernews/comments.yaml +1 -2
- package/src/adapters/hackernews/item.yaml +1 -2
- package/src/adapters/hackernews/jobs.yaml +0 -2
- package/src/adapters/hackernews/new.yaml +0 -2
- package/src/adapters/hackernews/search.yaml +0 -2
- package/src/adapters/hackernews/show.yaml +0 -2
- package/src/adapters/hackernews/top.yaml +0 -2
- package/src/adapters/hackernews/user.yaml +0 -2
- package/src/adapters/hermes/sessions-search.yaml +0 -2
- package/src/adapters/hermes/skills-list.yaml +0 -2
- package/src/adapters/hermes/skills-read.yaml +0 -2
- package/src/adapters/hf/datasets.yaml +0 -2
- package/src/adapters/hf/models.yaml +0 -2
- package/src/adapters/hf/spaces.yaml +0 -2
- package/src/adapters/hf/top.yaml +1 -2
- package/src/adapters/homebrew/info.yaml +0 -2
- package/src/adapters/homebrew/search.yaml +0 -2
- package/src/adapters/huggingface-papers/daily.yaml +0 -2
- package/src/adapters/huggingface-papers/search.yaml +0 -2
- package/src/adapters/hupu/detail.yaml +0 -2
- package/src/adapters/hupu/hot.yaml +0 -2
- package/src/adapters/hupu/like.yaml +0 -2
- package/src/adapters/hupu/mentions.yaml +0 -2
- package/src/adapters/hupu/reply.yaml +0 -2
- package/src/adapters/hupu/search.yaml +0 -2
- package/src/adapters/hupu/unlike.yaml +0 -2
- package/src/adapters/imagemagick/compare.yaml +0 -2
- package/src/adapters/imagemagick/composite.yaml +1 -2
- package/src/adapters/imagemagick/convert.yaml +1 -2
- package/src/adapters/imagemagick/identify.yaml +1 -2
- package/src/adapters/imagemagick/montage.yaml +1 -2
- package/src/adapters/imagemagick/resize.yaml +1 -2
- package/src/adapters/imdb/box-office.yaml +0 -2
- package/src/adapters/imdb/person.yaml +1 -2
- package/src/adapters/imdb/reviews.yaml +1 -2
- package/src/adapters/imdb/search.yaml +0 -2
- package/src/adapters/imdb/title.yaml +1 -2
- package/src/adapters/imdb/top.yaml +0 -2
- package/src/adapters/imdb/trending.yaml +0 -2
- package/src/adapters/infoq/articles.yaml +0 -2
- package/src/adapters/infoq/latest.yaml +0 -2
- package/src/adapters/inkscape/convert.yaml +2 -2
- package/src/adapters/inkscape/export.yaml +2 -2
- package/src/adapters/inkscape/optimize.yaml +2 -2
- package/src/adapters/instagram/activity.yaml +0 -2
- package/src/adapters/instagram/comment.yaml +0 -2
- package/src/adapters/instagram/explore.yaml +0 -2
- package/src/adapters/instagram/follow.yaml +0 -2
- package/src/adapters/instagram/followers.yaml +0 -2
- package/src/adapters/instagram/following.yaml +0 -2
- package/src/adapters/instagram/highlights.yaml +0 -2
- package/src/adapters/instagram/like.yaml +0 -2
- package/src/adapters/instagram/profile.yaml +0 -2
- package/src/adapters/instagram/reels-trending.yaml +0 -2
- package/src/adapters/instagram/reels.yaml +0 -2
- package/src/adapters/instagram/save.yaml +0 -2
- package/src/adapters/instagram/saved.yaml +0 -2
- package/src/adapters/instagram/search.yaml +0 -2
- package/src/adapters/instagram/stories.yaml +1 -2
- package/src/adapters/instagram/suggested.yaml +0 -2
- package/src/adapters/instagram/tags.yaml +0 -2
- package/src/adapters/instagram/unfollow.yaml +0 -2
- package/src/adapters/instagram/unlike.yaml +0 -2
- package/src/adapters/instagram/unsave.yaml +0 -2
- package/src/adapters/instagram/user.yaml +0 -2
- package/src/adapters/ip-info/lookup.yaml +0 -2
- package/src/adapters/itch-io/popular.yaml +0 -2
- package/src/adapters/itch-io/search.yaml +0 -2
- package/src/adapters/itch-io/top.yaml +0 -2
- package/src/adapters/ithome/hot.yaml +0 -2
- package/src/adapters/ithome/latest.yaml +0 -2
- package/src/adapters/ithome/news.yaml +0 -2
- package/src/adapters/jd/hot.yaml +0 -2
- package/src/adapters/jd/item.yaml +1 -2
- package/src/adapters/jd/search.yaml +0 -2
- package/src/adapters/jianyu/search.yaml +0 -2
- package/src/adapters/jike/feed.yaml +0 -2
- package/src/adapters/jike/notifications.yaml +0 -2
- package/src/adapters/jike/post.yaml +2 -2
- package/src/adapters/jike/search.yaml +0 -2
- package/src/adapters/jike/topic.yaml +2 -2
- package/src/adapters/jike/user.yaml +0 -2
- package/src/adapters/jimeng/generate.yaml +0 -2
- package/src/adapters/jimeng/history.yaml +0 -2
- package/src/adapters/jq/format.yaml +0 -2
- package/src/adapters/jq/query.yaml +0 -2
- package/src/adapters/kdenlive/effects.yaml +0 -2
- package/src/adapters/kdenlive/info.yaml +1 -2
- package/src/adapters/kdenlive/render.yaml +1 -2
- package/src/adapters/ke/ershoufang.yaml +0 -2
- package/src/adapters/ke/xiaoqu.yaml +0 -2
- package/src/adapters/krita/batch.yaml +1 -2
- package/src/adapters/krita/convert.yaml +1 -2
- package/src/adapters/krita/export.yaml +1 -2
- package/src/adapters/krita/info.yaml +1 -2
- package/src/adapters/kuaishou/hot.yaml +0 -2
- package/src/adapters/kuaishou/search.yaml +0 -2
- package/src/adapters/lark/version.yaml +0 -2
- package/src/adapters/lesswrong/comments.yaml +0 -2
- package/src/adapters/lesswrong/curated.yaml +0 -2
- package/src/adapters/lesswrong/frontpage.yaml +0 -2
- package/src/adapters/lesswrong/new.yaml +0 -2
- package/src/adapters/lesswrong/read.yaml +0 -2
- package/src/adapters/lesswrong/sequences.yaml +0 -2
- package/src/adapters/lesswrong/shortform.yaml +0 -2
- package/src/adapters/lesswrong/tag.yaml +0 -2
- package/src/adapters/lesswrong/tags.yaml +0 -2
- package/src/adapters/lesswrong/top-month.yaml +0 -2
- package/src/adapters/lesswrong/top-week.yaml +0 -2
- package/src/adapters/lesswrong/top-year.yaml +0 -2
- package/src/adapters/lesswrong/top.yaml +0 -2
- package/src/adapters/lesswrong/user-posts.yaml +0 -2
- package/src/adapters/lesswrong/user.yaml +0 -2
- package/src/adapters/libreoffice/convert.yaml +1 -2
- package/src/adapters/libreoffice/print.yaml +1 -2
- package/src/adapters/linear/issue-update.yaml +1 -0
- package/src/adapters/linkedin/jobs.yaml +0 -2
- package/src/adapters/linkedin/profile.yaml +0 -2
- package/src/adapters/linkedin/search.yaml +0 -2
- package/src/adapters/linkedin/timeline.yaml +0 -2
- package/src/adapters/linux-do/categories.yaml +0 -2
- package/src/adapters/linux-do/category.yaml +1 -2
- package/src/adapters/linux-do/feed.yaml +0 -2
- package/src/adapters/linux-do/hot.yaml +0 -2
- package/src/adapters/linux-do/latest.yaml +0 -2
- package/src/adapters/linux-do/search.yaml +0 -2
- package/src/adapters/linux-do/tags.yaml +0 -2
- package/src/adapters/linux-do/topic.yaml +1 -2
- package/src/adapters/linux-do/user-posts.yaml +0 -2
- package/src/adapters/linux-do/user-topics.yaml +0 -2
- package/src/adapters/lobsters/active.yaml +0 -2
- package/src/adapters/lobsters/hot.yaml +0 -2
- package/src/adapters/lobsters/newest.yaml +0 -2
- package/src/adapters/lobsters/search.yaml +0 -2
- package/src/adapters/lobsters/tag.yaml +0 -2
- package/src/adapters/macos/active-app.yaml +0 -2
- package/src/adapters/macos/apps-list.yaml +0 -2
- package/src/adapters/macos/apps.yaml +0 -2
- package/src/adapters/macos/battery.yaml +0 -2
- package/src/adapters/macos/bluetooth.yaml +0 -2
- package/src/adapters/macos/brightness.yaml +0 -2
- package/src/adapters/macos/caffeinate.yaml +0 -2
- package/src/adapters/macos/calendar-create.yaml +1 -2
- package/src/adapters/macos/calendar-list.yaml +0 -2
- package/src/adapters/macos/calendar-today.yaml +0 -2
- package/src/adapters/macos/clipboard.yaml +0 -2
- package/src/adapters/macos/contacts-search.yaml +0 -2
- package/src/adapters/macos/dark-mode.yaml +0 -2
- package/src/adapters/macos/disk-info.yaml +0 -2
- package/src/adapters/macos/disk-usage.yaml +0 -2
- package/src/adapters/macos/do-not-disturb.yaml +0 -2
- package/src/adapters/macos/empty-trash.yaml +0 -2
- package/src/adapters/macos/finder-copy.yaml +1 -2
- package/src/adapters/macos/finder-move.yaml +1 -2
- package/src/adapters/macos/finder-new-folder.yaml +1 -2
- package/src/adapters/macos/finder-recent.yaml +0 -2
- package/src/adapters/macos/finder-selection.yaml +0 -2
- package/src/adapters/macos/finder-tags.yaml +1 -2
- package/src/adapters/macos/lock-screen.yaml +0 -2
- package/src/adapters/macos/mail-send.yaml +0 -2
- package/src/adapters/macos/mail-status.yaml +0 -2
- package/src/adapters/macos/messages-send.yaml +0 -2
- package/src/adapters/macos/music-control.yaml +0 -2
- package/src/adapters/macos/music-now.yaml +0 -2
- package/src/adapters/macos/notes-list.yaml +0 -2
- package/src/adapters/macos/notes-search.yaml +0 -2
- package/src/adapters/macos/notification.yaml +0 -2
- package/src/adapters/macos/notify.yaml +0 -2
- package/src/adapters/macos/open-app.yaml +0 -2
- package/src/adapters/macos/open.yaml +2 -2
- package/src/adapters/macos/photos-search.yaml +0 -2
- package/src/adapters/macos/processes.yaml +0 -2
- package/src/adapters/macos/reminder-create.yaml +0 -2
- package/src/adapters/macos/reminders-complete.yaml +0 -2
- package/src/adapters/macos/reminders-list.yaml +0 -2
- package/src/adapters/macos/safari-history.yaml +0 -2
- package/src/adapters/macos/safari-tabs.yaml +0 -2
- package/src/adapters/macos/safari-url.yaml +0 -2
- package/src/adapters/macos/say.yaml +0 -2
- package/src/adapters/macos/screen-lock.yaml +0 -2
- package/src/adapters/macos/screen-recording.yaml +1 -2
- package/src/adapters/macos/screenshot.yaml +1 -2
- package/src/adapters/macos/shortcuts-list.yaml +0 -2
- package/src/adapters/macos/shortcuts-run.yaml +0 -2
- package/src/adapters/macos/sleep.yaml +0 -2
- package/src/adapters/macos/spotlight.yaml +1 -2
- package/src/adapters/macos/system-info.yaml +0 -2
- package/src/adapters/macos/trash.yaml +0 -2
- package/src/adapters/macos/uptime.yaml +0 -2
- package/src/adapters/macos/volume.yaml +0 -2
- package/src/adapters/macos/wallpaper.yaml +1 -2
- package/src/adapters/macos/wifi-info.yaml +0 -2
- package/src/adapters/macos/wifi.yaml +0 -2
- package/src/adapters/maimai/search.yaml +0 -2
- package/src/adapters/maoyan/hot.yaml +0 -2
- package/src/adapters/maoyan/search.yaml +0 -2
- package/src/adapters/mastodon/search.yaml +0 -2
- package/src/adapters/mastodon/timeline.yaml +0 -2
- package/src/adapters/mastodon/trending.yaml +0 -2
- package/src/adapters/mastodon/user.yaml +0 -2
- package/src/adapters/medium/article.yaml +1 -2
- package/src/adapters/medium/feed.yaml +0 -2
- package/src/adapters/medium/search.yaml +0 -2
- package/src/adapters/medium/trending.yaml +0 -2
- package/src/adapters/medium/user.yaml +0 -2
- package/src/adapters/meituan/hot.yaml +0 -2
- package/src/adapters/meituan/search.yaml +0 -2
- package/src/adapters/mermaid/render.yaml +1 -2
- package/src/adapters/minimax/chat.yaml +0 -2
- package/src/adapters/minimax/models.yaml +0 -2
- package/src/adapters/minimax/tts.yaml +1 -2
- package/src/adapters/motion-studio/component-get.yaml +1 -2
- package/src/adapters/mubu/list.yaml +0 -2
- package/src/adapters/mubu/search.yaml +0 -2
- package/src/adapters/musescore/convert.yaml +2 -2
- package/src/adapters/musescore/export.yaml +2 -2
- package/src/adapters/musescore/info.yaml +1 -2
- package/src/adapters/musescore/instruments.yaml +1 -2
- package/src/adapters/musescore/transpose.yaml +1 -2
- package/src/adapters/neonctl/projects.yaml +0 -2
- package/src/adapters/netease-music/hot.yaml +0 -2
- package/src/adapters/netease-music/playlist.yaml +1 -2
- package/src/adapters/netease-music/search.yaml +0 -2
- package/src/adapters/netease-music/top.yaml +1 -2
- package/src/adapters/netlify/sites.yaml +0 -2
- package/src/adapters/notebooklm/current.yaml +0 -2
- package/src/adapters/notebooklm/get.yaml +1 -2
- package/src/adapters/notebooklm/history.yaml +1 -2
- package/src/adapters/notebooklm/list.yaml +0 -2
- package/src/adapters/notebooklm/note-list.yaml +1 -2
- package/src/adapters/notebooklm/notes-get.yaml +1 -2
- package/src/adapters/notebooklm/open.yaml +1 -2
- package/src/adapters/notebooklm/rpc.yaml +0 -2
- package/src/adapters/notebooklm/shared.yaml +0 -2
- package/src/adapters/notebooklm/source-fulltext.yaml +1 -2
- package/src/adapters/notebooklm/source-get.yaml +1 -2
- package/src/adapters/notebooklm/source-guide.yaml +1 -2
- package/src/adapters/notebooklm/source-list.yaml +1 -2
- package/src/adapters/notebooklm/status.yaml +0 -2
- package/src/adapters/notebooklm/summary.yaml +1 -2
- package/src/adapters/notion/databases.yaml +0 -2
- package/src/adapters/notion/pages.yaml +0 -2
- package/src/adapters/notion/search.yaml +0 -2
- package/src/adapters/novita/generate.yaml +0 -2
- package/src/adapters/novita/models.yaml +0 -2
- package/src/adapters/novita/status.yaml +1 -2
- package/src/adapters/npm/downloads.yaml +0 -2
- package/src/adapters/npm/info.yaml +0 -2
- package/src/adapters/npm/search.yaml +0 -2
- package/src/adapters/npm/versions.yaml +0 -2
- package/src/adapters/npm-trends/compare.yaml +0 -2
- package/src/adapters/npm-trends/trending.yaml +0 -2
- package/src/adapters/nytimes/search.yaml +0 -2
- package/src/adapters/nytimes/top.yaml +0 -2
- package/src/adapters/obs/record-start.yaml +0 -2
- package/src/adapters/obs/record-stop.yaml +0 -2
- package/src/adapters/obs/scenes.yaml +0 -2
- package/src/adapters/obs/screenshot.yaml +1 -2
- package/src/adapters/obs/sources.yaml +0 -2
- package/src/adapters/obs/status.yaml +0 -2
- package/src/adapters/obs/stream-start.yaml +0 -2
- package/src/adapters/obs/stream-stop.yaml +0 -2
- package/src/adapters/obsidian/daily.yaml +0 -2
- package/src/adapters/obsidian/open.yaml +1 -2
- package/src/adapters/obsidian/search.yaml +0 -2
- package/src/adapters/ollama/generate.yaml +0 -2
- package/src/adapters/ollama/list.yaml +0 -2
- package/src/adapters/ollama/models.yaml +0 -2
- package/src/adapters/ollama/ps.yaml +0 -2
- package/src/adapters/ones/enrich-tasks.yaml +0 -2
- package/src/adapters/ones/login.yaml +1 -2
- package/src/adapters/ones/logout.yaml +0 -2
- package/src/adapters/ones/me.yaml +0 -2
- package/src/adapters/ones/my-tasks.yaml +0 -2
- package/src/adapters/ones/resolve-labels.yaml +0 -2
- package/src/adapters/ones/task-helpers.yaml +0 -2
- package/src/adapters/ones/task.yaml +1 -2
- package/src/adapters/ones/tasks.yaml +0 -2
- package/src/adapters/ones/token-info.yaml +0 -2
- package/src/adapters/ones/worklog.yaml +0 -2
- package/src/adapters/opencode/version.yaml +0 -2
- package/src/adapters/openharness/memory-read.yaml +0 -2
- package/src/adapters/openharness/skills-list.yaml +0 -2
- package/src/adapters/openrouter/models.yaml +0 -2
- package/src/adapters/openrouter/search.yaml +0 -2
- package/src/adapters/pandoc/convert.yaml +1 -2
- package/src/adapters/paperreview/feedback.yaml +2 -2
- package/src/adapters/paperreview/review.yaml +2 -2
- package/src/adapters/paperreview/submit.yaml +2 -2
- package/src/adapters/perplexity/ask.yaml +0 -2
- package/src/adapters/pexels/curated.yaml +0 -2
- package/src/adapters/pexels/search.yaml +0 -2
- package/src/adapters/pinduoduo/hot.yaml +0 -2
- package/src/adapters/pinduoduo/search.yaml +0 -2
- package/src/adapters/pixiv/detail.yaml +1 -2
- package/src/adapters/pixiv/download.yaml +2 -2
- package/src/adapters/pixiv/illusts.yaml +0 -2
- package/src/adapters/pixiv/ranking.yaml +0 -2
- package/src/adapters/pixiv/search.yaml +0 -2
- package/src/adapters/pixiv/user.yaml +0 -2
- package/src/adapters/producthunt/browse.yaml +0 -2
- package/src/adapters/producthunt/hot.yaml +0 -2
- package/src/adapters/producthunt/posts.yaml +0 -2
- package/src/adapters/producthunt/search.yaml +0 -2
- package/src/adapters/producthunt/today.yaml +0 -2
- package/src/adapters/pscale/databases.yaml +0 -2
- package/src/adapters/pypi/info.yaml +0 -2
- package/src/adapters/pypi/search.yaml +0 -2
- package/src/adapters/pypi/versions.yaml +0 -2
- package/src/adapters/quark/ls.yaml +1 -2
- package/src/adapters/quark/search.yaml +0 -2
- package/src/adapters/qweather/forecast.yaml +0 -2
- package/src/adapters/qweather/now.yaml +0 -2
- package/src/adapters/railway/deploy.yaml +0 -2
- package/src/adapters/reddit/comment.yaml +0 -2
- package/src/adapters/reddit/comments.yaml +2 -2
- package/src/adapters/reddit/frontpage.yaml +0 -2
- package/src/adapters/reddit/hot.yaml +0 -2
- package/src/adapters/reddit/new.yaml +0 -2
- package/src/adapters/reddit/popular.yaml +0 -2
- package/src/adapters/reddit/read.yaml +0 -2
- package/src/adapters/reddit/rising.yaml +0 -2
- package/src/adapters/reddit/save.yaml +0 -2
- package/src/adapters/reddit/saved.yaml +0 -2
- package/src/adapters/reddit/search.yaml +0 -2
- package/src/adapters/reddit/subreddit.yaml +0 -2
- package/src/adapters/reddit/subscribe.yaml +0 -2
- package/src/adapters/reddit/top.yaml +0 -2
- package/src/adapters/reddit/trending.yaml +0 -2
- package/src/adapters/reddit/upvote.yaml +0 -2
- package/src/adapters/reddit/upvoted.yaml +0 -2
- package/src/adapters/reddit/user-comments.yaml +0 -2
- package/src/adapters/reddit/user-posts.yaml +0 -2
- package/src/adapters/reddit/user.yaml +0 -2
- package/src/adapters/renderdoc/capture-list.yaml +1 -2
- package/src/adapters/renderdoc/frame-export.yaml +1 -2
- package/src/adapters/replicate/run.yaml +0 -2
- package/src/adapters/replicate/search.yaml +0 -2
- package/src/adapters/replicate/trending.yaml +0 -2
- package/src/adapters/reuters/article.yaml +2 -2
- package/src/adapters/reuters/latest.yaml +0 -2
- package/src/adapters/reuters/search.yaml +0 -2
- package/src/adapters/reuters/top.yaml +0 -2
- package/src/adapters/shotcut/effects.yaml +0 -2
- package/src/adapters/shotcut/info.yaml +1 -2
- package/src/adapters/shotcut/render.yaml +1 -2
- package/src/adapters/sinablog/article.yaml +1 -2
- package/src/adapters/sinablog/hot.yaml +0 -2
- package/src/adapters/sinablog/search.yaml +0 -2
- package/src/adapters/sinablog/user.yaml +1 -2
- package/src/adapters/sinafinance/market.yaml +0 -2
- package/src/adapters/sinafinance/news.yaml +0 -2
- package/src/adapters/sinafinance/rolling-news.yaml +0 -2
- package/src/adapters/sinafinance/stock-rank.yaml +0 -2
- package/src/adapters/sinafinance/stock.yaml +0 -2
- package/src/adapters/sketch/artboards.yaml +1 -2
- package/src/adapters/sketch/export.yaml +1 -2
- package/src/adapters/sketch/symbols.yaml +1 -2
- package/src/adapters/slack/channels.yaml +0 -2
- package/src/adapters/slack/messages.yaml +0 -2
- package/src/adapters/slack/post.yaml +0 -2
- package/src/adapters/slack/search.yaml +0 -2
- package/src/adapters/slack/send.yaml +0 -2
- package/src/adapters/slack/status.yaml +0 -2
- package/src/adapters/slack/users.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/deck.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/end-turn.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/map.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/play-card.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/status.yaml +0 -2
- package/src/adapters/slay-the-spire-ii/use-potion.yaml +0 -2
- package/src/adapters/slock/servers.yaml +0 -2
- package/src/adapters/smzdm/article.yaml +1 -2
- package/src/adapters/smzdm/hot.yaml +0 -2
- package/src/adapters/smzdm/search.yaml +0 -2
- package/src/adapters/spotify/now-playing.yaml +0 -2
- package/src/adapters/spotify/playlists.yaml +0 -2
- package/src/adapters/spotify/search.yaml +0 -2
- package/src/adapters/spotify/top-tracks.yaml +0 -2
- package/src/adapters/sspai/hot.yaml +0 -2
- package/src/adapters/sspai/latest.yaml +0 -2
- package/src/adapters/stackoverflow/bounties.yaml +0 -2
- package/src/adapters/stackoverflow/hot.yaml +0 -2
- package/src/adapters/stackoverflow/question.yaml +1 -2
- package/src/adapters/stackoverflow/search.yaml +0 -2
- package/src/adapters/stackoverflow/tags.yaml +0 -2
- package/src/adapters/stackoverflow/unanswered.yaml +0 -2
- package/src/adapters/stagehand/wrap-observe.yaml +1 -2
- package/src/adapters/steam/app-details.yaml +0 -2
- package/src/adapters/steam/new-releases.yaml +0 -2
- package/src/adapters/steam/search.yaml +0 -2
- package/src/adapters/steam/specials.yaml +0 -2
- package/src/adapters/steam/top-sellers.yaml +0 -2
- package/src/adapters/steam/wishlist.yaml +1 -2
- package/src/adapters/substack/feed.yaml +0 -2
- package/src/adapters/substack/publication.yaml +0 -2
- package/src/adapters/substack/search.yaml +0 -2
- package/src/adapters/substack/trending.yaml +0 -2
- package/src/adapters/supabase/projects.yaml +0 -2
- package/src/adapters/taobao/hot.yaml +0 -2
- package/src/adapters/taobao/search.yaml +0 -2
- package/src/adapters/techcrunch/latest.yaml +0 -2
- package/src/adapters/techcrunch/search.yaml +0 -2
- package/src/adapters/theverge/latest.yaml +0 -2
- package/src/adapters/theverge/search.yaml +0 -2
- package/src/adapters/threads/hot.yaml +0 -2
- package/src/adapters/threads/search.yaml +0 -2
- package/src/adapters/tieba/hot.yaml +0 -2
- package/src/adapters/tieba/posts.yaml +0 -2
- package/src/adapters/tieba/read.yaml +1 -2
- package/src/adapters/tieba/search.yaml +0 -2
- package/src/adapters/tiktok/comment.yaml +1 -2
- package/src/adapters/tiktok/explore.yaml +0 -2
- package/src/adapters/tiktok/follow.yaml +0 -2
- package/src/adapters/tiktok/following.yaml +0 -2
- package/src/adapters/tiktok/friends.yaml +0 -2
- package/src/adapters/tiktok/like.yaml +1 -2
- package/src/adapters/tiktok/live.yaml +0 -2
- package/src/adapters/tiktok/notifications.yaml +0 -2
- package/src/adapters/tiktok/profile.yaml +0 -2
- package/src/adapters/tiktok/save.yaml +1 -2
- package/src/adapters/tiktok/search.yaml +0 -2
- package/src/adapters/tiktok/trending.yaml +0 -2
- package/src/adapters/tiktok/unfollow.yaml +0 -2
- package/src/adapters/tiktok/unlike.yaml +1 -2
- package/src/adapters/tiktok/unsave.yaml +1 -2
- package/src/adapters/tiktok/user.yaml +0 -2
- package/src/adapters/toutiao/hot.yaml +0 -2
- package/src/adapters/toutiao/search.yaml +0 -2
- package/src/adapters/twitch/games.yaml +0 -2
- package/src/adapters/twitch/search.yaml +0 -2
- package/src/adapters/twitch/streams.yaml +1 -2
- package/src/adapters/twitch/top.yaml +0 -2
- package/src/adapters/twitter/lists.yaml +0 -2
- package/src/adapters/twitter/media.yaml +0 -2
- package/src/adapters/twitter/mentions.yaml +0 -2
- package/src/adapters/twitter/mute.yaml +0 -2
- package/src/adapters/twitter/pin.yaml +0 -2
- package/src/adapters/twitter/quotes.yaml +2 -2
- package/src/adapters/twitter/retweets.yaml +1 -2
- package/src/adapters/twitter/spaces.yaml +0 -2
- package/src/adapters/twitter/unmute.yaml +0 -2
- package/src/adapters/unsplash/random.yaml +0 -2
- package/src/adapters/unsplash/search.yaml +0 -2
- package/src/adapters/v2ex/daily.yaml +0 -2
- package/src/adapters/v2ex/hot.yaml +0 -2
- package/src/adapters/v2ex/latest.yaml +0 -2
- package/src/adapters/v2ex/me.yaml +0 -2
- package/src/adapters/v2ex/member.yaml +0 -2
- package/src/adapters/v2ex/node.yaml +0 -2
- package/src/adapters/v2ex/nodes.yaml +0 -2
- package/src/adapters/v2ex/notifications.yaml +0 -2
- package/src/adapters/v2ex/replies.yaml +1 -2
- package/src/adapters/v2ex/search.yaml +0 -2
- package/src/adapters/v2ex/topic.yaml +1 -2
- package/src/adapters/v2ex/user.yaml +0 -2
- package/src/adapters/vercel/list.yaml +0 -2
- package/src/adapters/vscode/extensions.yaml +0 -2
- package/src/adapters/vscode/install-ext.yaml +1 -2
- package/src/adapters/vscode/open.yaml +1 -2
- package/src/adapters/web/read.yaml +1 -2
- package/src/adapters/wechat-channels/hot.yaml +0 -2
- package/src/adapters/wechat-channels/search.yaml +0 -2
- package/src/adapters/weibo/comments.yaml +1 -2
- package/src/adapters/weibo/feed.yaml +0 -2
- package/src/adapters/weibo/hot.yaml +0 -2
- package/src/adapters/weibo/me.yaml +0 -2
- package/src/adapters/weibo/post.yaml +1 -2
- package/src/adapters/weibo/profile.yaml +0 -2
- package/src/adapters/weibo/search.yaml +0 -2
- package/src/adapters/weibo/timeline.yaml +0 -2
- package/src/adapters/weibo/trending.yaml +0 -2
- package/src/adapters/weibo/user.yaml +0 -2
- package/src/adapters/weixin/article.yaml +0 -2
- package/src/adapters/weixin/download.yaml +1 -2
- package/src/adapters/weixin/hot.yaml +0 -2
- package/src/adapters/weixin/search.yaml +0 -2
- package/src/adapters/weread/book.yaml +0 -2
- package/src/adapters/weread/highlights.yaml +0 -2
- package/src/adapters/weread/notebooks.yaml +0 -2
- package/src/adapters/weread/notes.yaml +0 -2
- package/src/adapters/weread/ranking.yaml +0 -2
- package/src/adapters/weread/search.yaml +0 -2
- package/src/adapters/weread/shelf.yaml +0 -2
- package/src/adapters/wikipedia/random.yaml +0 -2
- package/src/adapters/wikipedia/search.yaml +0 -2
- package/src/adapters/wikipedia/summary.yaml +0 -2
- package/src/adapters/wikipedia/today.yaml +0 -2
- package/src/adapters/wikipedia/trending.yaml +0 -2
- package/src/adapters/wiremock/create-stub.yaml +2 -2
- package/src/adapters/wiremock/delete-stub.yaml +1 -2
- package/src/adapters/wiremock/reset.yaml +0 -2
- package/src/adapters/wiremock/stubs.yaml +0 -2
- package/src/adapters/wiremock/verify.yaml +1 -2
- package/src/adapters/wrangler/list.yaml +0 -2
- package/src/adapters/xianyu/chat.yaml +0 -2
- package/src/adapters/xianyu/item.yaml +1 -2
- package/src/adapters/xianyu/search.yaml +0 -2
- package/src/adapters/xiaoe/catalog.yaml +1 -2
- package/src/adapters/xiaoe/content.yaml +1 -2
- package/src/adapters/xiaoe/courses.yaml +0 -2
- package/src/adapters/xiaoe/detail.yaml +1 -2
- package/src/adapters/xiaoe/play-url.yaml +1 -2
- package/src/adapters/xiaohongshu/feed.yaml +0 -2
- package/src/adapters/xiaohongshu/follow.yaml +0 -2
- package/src/adapters/xiaohongshu/hashtag.yaml +0 -2
- package/src/adapters/xiaohongshu/hot.yaml +0 -2
- package/src/adapters/xiaohongshu/like.yaml +0 -2
- package/src/adapters/xiaohongshu/notifications.yaml +0 -2
- package/src/adapters/xiaohongshu/profile.yaml +0 -2
- package/src/adapters/xiaohongshu/save.yaml +0 -2
- package/src/adapters/xiaohongshu/suggest.yaml +0 -2
- package/src/adapters/xiaohongshu/trending.yaml +0 -2
- package/src/adapters/xiaohongshu/unfollow.yaml +0 -2
- package/src/adapters/xiaoyuzhou/episode.yaml +0 -2
- package/src/adapters/xiaoyuzhou/podcast-episodes.yaml +0 -2
- package/src/adapters/xiaoyuzhou/podcast.yaml +2 -2
- package/src/adapters/xueqiu/comments.yaml +0 -2
- package/src/adapters/xueqiu/earnings-date.yaml +0 -2
- package/src/adapters/xueqiu/feed.yaml +0 -2
- package/src/adapters/xueqiu/fund-holdings.yaml +0 -2
- package/src/adapters/xueqiu/fund-snapshot.yaml +0 -2
- package/src/adapters/xueqiu/hot-stock.yaml +0 -2
- package/src/adapters/xueqiu/hot.yaml +0 -2
- package/src/adapters/xueqiu/market.yaml +0 -2
- package/src/adapters/xueqiu/quote.yaml +0 -2
- package/src/adapters/xueqiu/search.yaml +0 -2
- package/src/adapters/xueqiu/stock.yaml +0 -2
- package/src/adapters/xueqiu/watchlist.yaml +0 -2
- package/src/adapters/yahoo-finance/quote.yaml +0 -2
- package/src/adapters/yahoo-finance/search.yaml +0 -2
- package/src/adapters/yahoo-finance/trending.yaml +0 -2
- package/src/adapters/ycombinator/launches.yaml +0 -2
- package/src/adapters/yollomi/background.yaml +0 -2
- package/src/adapters/yollomi/edit.yaml +2 -2
- package/src/adapters/yollomi/face-swap.yaml +0 -2
- package/src/adapters/yollomi/generate.yaml +0 -2
- package/src/adapters/yollomi/models.yaml +0 -2
- package/src/adapters/yollomi/object-remover.yaml +0 -2
- package/src/adapters/yollomi/remove-bg.yaml +2 -2
- package/src/adapters/yollomi/restore.yaml +2 -2
- package/src/adapters/yollomi/try-on.yaml +0 -2
- package/src/adapters/yollomi/upload.yaml +2 -2
- package/src/adapters/yollomi/upscale.yaml +2 -2
- package/src/adapters/yollomi/video.yaml +0 -2
- package/src/adapters/youtube/playlist.yaml +1 -2
- package/src/adapters/youtube/shorts.yaml +0 -2
- package/src/adapters/youtube/trending.yaml +0 -2
- package/src/adapters/yt-dlp/download.yaml +2 -2
- package/src/adapters/yt-dlp/extract-audio.yaml +2 -2
- package/src/adapters/yt-dlp/info.yaml +1 -2
- package/src/adapters/yt-dlp/search.yaml +0 -2
- package/src/adapters/yuanbao/ask.yaml +0 -2
- package/src/adapters/yuanbao/new.yaml +0 -2
- package/src/adapters/yuanbao/shared.yaml +0 -2
- package/src/adapters/zhihu/answer.yaml +1 -2
- package/src/adapters/zhihu/answers.yaml +2 -2
- package/src/adapters/zhihu/article.yaml +1 -2
- package/src/adapters/zhihu/articles.yaml +2 -2
- package/src/adapters/zhihu/collections.yaml +2 -2
- package/src/adapters/zhihu/columns.yaml +2 -2
- package/src/adapters/zhihu/comment.yaml +1 -2
- package/src/adapters/zhihu/download.yaml +1 -2
- package/src/adapters/zhihu/feed.yaml +0 -2
- package/src/adapters/zhihu/followers.yaml +2 -2
- package/src/adapters/zhihu/following.yaml +2 -2
- package/src/adapters/zhihu/hot.yaml +0 -2
- package/src/adapters/zhihu/me.yaml +0 -2
- package/src/adapters/zhihu/notifications.yaml +0 -2
- package/src/adapters/zhihu/pins.yaml +2 -2
- package/src/adapters/zhihu/question.yaml +1 -2
- package/src/adapters/zhihu/search.yaml +0 -2
- package/src/adapters/zhihu/topic.yaml +1 -2
- package/src/adapters/zhihu/topics.yaml +1 -2
- package/src/adapters/zhihu/trending.yaml +0 -2
- package/src/adapters/zhihu/user.yaml +2 -2
- package/src/adapters/zoom/join.yaml +1 -2
- package/src/adapters/zoom/start.yaml +0 -2
- package/src/adapters/zoom/toggle-mute.yaml +0 -2
- package/src/adapters/zotero/add-note.yaml +0 -2
- package/src/adapters/zotero/add-tag.yaml +0 -2
- package/src/adapters/zotero/collections.yaml +0 -2
- package/src/adapters/zotero/export.yaml +0 -2
- package/src/adapters/zotero/items.yaml +0 -2
- package/src/adapters/zotero/notes.yaml +0 -2
- package/src/adapters/zotero/search.yaml +0 -2
- package/src/adapters/zotero/tags.yaml +0 -2
- package/src/adapters/zsxq/dynamics.yaml +0 -2
- package/src/adapters/zsxq/groups.yaml +0 -2
- package/src/adapters/zsxq/search.yaml +1 -2
- package/src/adapters/zsxq/topic.yaml +1 -2
- package/src/adapters/zsxq/topics.yaml +1 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile step — converts adapter manifests into immutable `CompiledCommand`
|
|
3
|
+
* entries keyed by `${site}.${cmd}`. Called once at loader boot; every
|
|
4
|
+
* subsequent invocation looks up O(1).
|
|
5
|
+
*
|
|
6
|
+
* Built on ajv 2020-12 strict mode + format-assertion so adapter schemas
|
|
7
|
+
* fail closed. `x-unicli` extension keywords are stripped before handing to
|
|
8
|
+
* ajv (strict mode rejects unknowns) but preserved in the introspection
|
|
9
|
+
* schema returned to describe.ts / MCP tools/list.
|
|
10
|
+
*/
|
|
11
|
+
import type { AdapterCommand, AdapterManifest } from "../../types.js";
|
|
12
|
+
import type { CompiledCommand } from "./types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Compile one `AdapterCommand` into an immutable `CompiledCommand`. Called
|
|
15
|
+
* once per command per process; the validator is reused on every call.
|
|
16
|
+
*/
|
|
17
|
+
export declare function compileCommand(cmd: AdapterCommand): CompiledCommand;
|
|
18
|
+
/**
|
|
19
|
+
* Eagerly compile every (adapter, command) in the registry. Intended to be
|
|
20
|
+
* called once at the tail of `loadAllAdapters()`; subsequent CLI / MCP /
|
|
21
|
+
* ACP calls look up by `${site}.${cmd}` in O(1).
|
|
22
|
+
*/
|
|
23
|
+
export declare function compileAll(registry: AdapterManifest[]): Map<string, CompiledCommand>;
|
|
24
|
+
/** Expose the cache read-only for introspection (tests, describe.ts). */
|
|
25
|
+
export declare function getCompiled(site: string, cmd: string): CompiledCommand | undefined;
|
|
26
|
+
/** Internal — used by execute() for lazy cache fill on isolated unit tests. */
|
|
27
|
+
export declare function setCompiled(key: string, compiled: CompiledCommand): void;
|
|
28
|
+
/** Test hook — clear the cache between independent test files. */
|
|
29
|
+
export declare function _resetCompiledCacheForTests(): void;
|
|
30
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAEV,cAAc,EACd,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,YAAY,CAAC;AAmGjE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,eAAe,CAiCnE;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EAAE,GAC1B,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAQ9B;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,eAAe,GAAG,SAAS,CAE7B;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAExE;AAED,kEAAkE;AAClE,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile step — converts adapter manifests into immutable `CompiledCommand`
|
|
3
|
+
* entries keyed by `${site}.${cmd}`. Called once at loader boot; every
|
|
4
|
+
* subsequent invocation looks up O(1).
|
|
5
|
+
*
|
|
6
|
+
* Built on ajv 2020-12 strict mode + format-assertion so adapter schemas
|
|
7
|
+
* fail closed. `x-unicli` extension keywords are stripped before handing to
|
|
8
|
+
* ajv (strict mode rejects unknowns) but preserved in the introspection
|
|
9
|
+
* schema returned to describe.ts / MCP tools/list.
|
|
10
|
+
*/
|
|
11
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
12
|
+
import addFormats from "ajv-formats";
|
|
13
|
+
let ajvSingleton;
|
|
14
|
+
function getAjv() {
|
|
15
|
+
if (ajvSingleton)
|
|
16
|
+
return ajvSingleton;
|
|
17
|
+
const Ctor = (Ajv2020.default ??
|
|
18
|
+
Ajv2020);
|
|
19
|
+
const addFormatsFn = (addFormats
|
|
20
|
+
.default ?? addFormats);
|
|
21
|
+
ajvSingleton = new Ctor({
|
|
22
|
+
strict: true,
|
|
23
|
+
allErrors: false,
|
|
24
|
+
validateFormats: true,
|
|
25
|
+
});
|
|
26
|
+
addFormatsFn(ajvSingleton, { mode: "full" });
|
|
27
|
+
return ajvSingleton;
|
|
28
|
+
}
|
|
29
|
+
/** Map adapter-arg type tokens to JSON Schema `type` strings. */
|
|
30
|
+
function jsonSchemaType(t) {
|
|
31
|
+
switch (t) {
|
|
32
|
+
case "int":
|
|
33
|
+
return "integer";
|
|
34
|
+
case "float":
|
|
35
|
+
return "number";
|
|
36
|
+
case "bool":
|
|
37
|
+
return "boolean";
|
|
38
|
+
default:
|
|
39
|
+
return "string";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function buildJsonSchema(args) {
|
|
43
|
+
const properties = {};
|
|
44
|
+
const required = [];
|
|
45
|
+
for (const a of args) {
|
|
46
|
+
const prop = { type: jsonSchemaType(a.type) };
|
|
47
|
+
if (a.description)
|
|
48
|
+
prop.description = a.description;
|
|
49
|
+
if (a.default !== undefined)
|
|
50
|
+
prop.default = a.default;
|
|
51
|
+
if (a.choices && a.choices.length > 0)
|
|
52
|
+
prop.enum = a.choices;
|
|
53
|
+
if (a.format)
|
|
54
|
+
prop.format = a.format;
|
|
55
|
+
// x-unicli-kind / x-unicli-accepts are non-standard extension keywords;
|
|
56
|
+
// Ajv is strict about unknown keywords, so we pass them through as
|
|
57
|
+
// annotations under a nested `x-unicli` bag that Ajv's schema cloner
|
|
58
|
+
// strips before compilation.
|
|
59
|
+
const ext = {};
|
|
60
|
+
if (a["x-unicli-kind"])
|
|
61
|
+
ext.kind = a["x-unicli-kind"];
|
|
62
|
+
if (a["x-unicli-accepts"])
|
|
63
|
+
ext.accepts = a["x-unicli-accepts"];
|
|
64
|
+
if (Object.keys(ext).length > 0)
|
|
65
|
+
prop["x-unicli"] = ext;
|
|
66
|
+
properties[a.name] = prop;
|
|
67
|
+
if (a.required)
|
|
68
|
+
required.push(a.name);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
72
|
+
type: "object",
|
|
73
|
+
properties,
|
|
74
|
+
required,
|
|
75
|
+
additionalProperties: false,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function buildExample(args) {
|
|
79
|
+
const example = {};
|
|
80
|
+
for (const a of args) {
|
|
81
|
+
if (a.default !== undefined) {
|
|
82
|
+
example[a.name] = a.default;
|
|
83
|
+
}
|
|
84
|
+
else if (a.choices && a.choices.length > 0) {
|
|
85
|
+
example[a.name] = a.choices[0];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
switch (a.type) {
|
|
89
|
+
case "int":
|
|
90
|
+
example[a.name] = 10;
|
|
91
|
+
break;
|
|
92
|
+
case "float":
|
|
93
|
+
example[a.name] = 0.5;
|
|
94
|
+
break;
|
|
95
|
+
case "bool":
|
|
96
|
+
example[a.name] = false;
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
example[a.name] = `<${a.name}>`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return example;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Compile one `AdapterCommand` into an immutable `CompiledCommand`. Called
|
|
107
|
+
* once per command per process; the validator is reused on every call.
|
|
108
|
+
*/
|
|
109
|
+
export function compileCommand(cmd) {
|
|
110
|
+
const args = cmd.adapterArgs ?? [];
|
|
111
|
+
const jsonSchema = buildJsonSchema(args);
|
|
112
|
+
const ajv = getAjv();
|
|
113
|
+
// Strip `x-unicli` from the schema passed to Ajv — Ajv's strict mode
|
|
114
|
+
// rejects unknown keywords, but the original `jsonSchema` (kept for
|
|
115
|
+
// introspection) preserves them. Clone + prune.
|
|
116
|
+
const ajvSchema = JSON.parse(JSON.stringify(jsonSchema));
|
|
117
|
+
const props = ajvSchema.properties;
|
|
118
|
+
for (const key of Object.keys(props)) {
|
|
119
|
+
if ("x-unicli" in props[key])
|
|
120
|
+
delete props[key]["x-unicli"];
|
|
121
|
+
}
|
|
122
|
+
const validator = ajv.compile(ajvSchema);
|
|
123
|
+
const argByName = new Map(args.map((a) => [a.name, a]));
|
|
124
|
+
return {
|
|
125
|
+
jsonSchema,
|
|
126
|
+
example: buildExample(args),
|
|
127
|
+
channels: ["shell", "file", "stdin"],
|
|
128
|
+
argByName,
|
|
129
|
+
validate: (input) => {
|
|
130
|
+
const ok = validator(input);
|
|
131
|
+
if (ok)
|
|
132
|
+
return { ok: true };
|
|
133
|
+
return {
|
|
134
|
+
ok: false,
|
|
135
|
+
errors: validator.errors ?? [],
|
|
136
|
+
};
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const compiledCache = new Map();
|
|
141
|
+
/**
|
|
142
|
+
* Eagerly compile every (adapter, command) in the registry. Intended to be
|
|
143
|
+
* called once at the tail of `loadAllAdapters()`; subsequent CLI / MCP /
|
|
144
|
+
* ACP calls look up by `${site}.${cmd}` in O(1).
|
|
145
|
+
*/
|
|
146
|
+
export function compileAll(registry) {
|
|
147
|
+
compiledCache.clear();
|
|
148
|
+
for (const adapter of registry) {
|
|
149
|
+
for (const [cmdName, cmd] of Object.entries(adapter.commands)) {
|
|
150
|
+
compiledCache.set(`${adapter.name}.${cmdName}`, compileCommand(cmd));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return compiledCache;
|
|
154
|
+
}
|
|
155
|
+
/** Expose the cache read-only for introspection (tests, describe.ts). */
|
|
156
|
+
export function getCompiled(site, cmd) {
|
|
157
|
+
return compiledCache.get(`${site}.${cmd}`);
|
|
158
|
+
}
|
|
159
|
+
/** Internal — used by execute() for lazy cache fill on isolated unit tests. */
|
|
160
|
+
export function setCompiled(key, compiled) {
|
|
161
|
+
compiledCache.set(key, compiled);
|
|
162
|
+
}
|
|
163
|
+
/** Test hook — clear the cache between independent test files. */
|
|
164
|
+
export function _resetCompiledCacheForTests() {
|
|
165
|
+
compiledCache.clear();
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../src/engine/kernel/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute() — the bag-to-envelope pipeline every surface shares.
|
|
3
|
+
*
|
|
4
|
+
* Flow per invocation:
|
|
5
|
+
* 1. ajv validate(bag.args) → fail-closed USAGE_ERROR on reject
|
|
6
|
+
* 2. hardenArgs(bag.args, argByName) → schema-driven hardening
|
|
7
|
+
* 3. runPipeline() / command.func() → actual work
|
|
8
|
+
* 4. build success envelope with live next_actions (runtime, not templated)
|
|
9
|
+
*
|
|
10
|
+
* Callers (CLI/MCP/ACP) format the returned `InvocationResult` for their
|
|
11
|
+
* transport; they do not rebuild envelopes.
|
|
12
|
+
*/
|
|
13
|
+
import type { ResolvedArgs } from "../args.js";
|
|
14
|
+
import type { Invocation, InvocationResult } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Raised when execute() is called for a (site, cmd) pair that was not seen
|
|
17
|
+
* by `compileAll()` at loader boot. Signals a wiring bug (the loader forgot
|
|
18
|
+
* to prime the cache), not a user error.
|
|
19
|
+
*/
|
|
20
|
+
export declare class KernelLookupError extends Error {
|
|
21
|
+
constructor(key: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Look up an adapter + command pair and return an Invocation ready for
|
|
25
|
+
* execute(). Returns `null` if either the site or command is unknown —
|
|
26
|
+
* callers can emit their own "unknown command" envelope.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildInvocation(surface: Invocation["surface"], site: string, cmd: string, bag: ResolvedArgs): Invocation | null;
|
|
29
|
+
/**
|
|
30
|
+
* Run a validated, hardened invocation end-to-end. Failure paths never
|
|
31
|
+
* throw — every error surfaces as `{ exitCode, error }` on the returned
|
|
32
|
+
* result so transport code can do uniform error handling.
|
|
33
|
+
*/
|
|
34
|
+
export declare function execute(inv: Invocation): Promise<InvocationResult>;
|
|
35
|
+
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/execute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG/D;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,GAAG,EAAE,MAAM;CAOxB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,YAAY,GAChB,UAAU,GAAG,IAAI,CAWnB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsLxE"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* execute() — the bag-to-envelope pipeline every surface shares.
|
|
3
|
+
*
|
|
4
|
+
* Flow per invocation:
|
|
5
|
+
* 1. ajv validate(bag.args) → fail-closed USAGE_ERROR on reject
|
|
6
|
+
* 2. hardenArgs(bag.args, argByName) → schema-driven hardening
|
|
7
|
+
* 3. runPipeline() / command.func() → actual work
|
|
8
|
+
* 4. build success envelope with live next_actions (runtime, not templated)
|
|
9
|
+
*
|
|
10
|
+
* Callers (CLI/MCP/ACP) format the returned `InvocationResult` for their
|
|
11
|
+
* transport; they do not rebuild envelopes.
|
|
12
|
+
*/
|
|
13
|
+
import { runPipeline } from "../executor.js";
|
|
14
|
+
import { hardenArgs, InputHardeningError } from "../harden.js";
|
|
15
|
+
import { defaultSuccessNextActions, defaultErrorNextActions, } from "../../output/next-actions.js";
|
|
16
|
+
import { errorTypeToCode, errorToAgentFields, mapErrorToExitCode, } from "../../output/error-map.js";
|
|
17
|
+
import { resolveCommand } from "../../registry.js";
|
|
18
|
+
import { ExitCode } from "../../types.js";
|
|
19
|
+
import { getCompiled } from "./compile.js";
|
|
20
|
+
import { newULID } from "./ulid.js";
|
|
21
|
+
/**
|
|
22
|
+
* Raised when execute() is called for a (site, cmd) pair that was not seen
|
|
23
|
+
* by `compileAll()` at loader boot. Signals a wiring bug (the loader forgot
|
|
24
|
+
* to prime the cache), not a user error.
|
|
25
|
+
*/
|
|
26
|
+
export class KernelLookupError extends Error {
|
|
27
|
+
constructor(key) {
|
|
28
|
+
super(`KernelLookupError: compiled command not found: ${key}. ` +
|
|
29
|
+
"Loader must call compileAll() before execute() — call primeKernelCache() from discovery/loader.ts.");
|
|
30
|
+
this.name = "KernelLookupError";
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Look up an adapter + command pair and return an Invocation ready for
|
|
35
|
+
* execute(). Returns `null` if either the site or command is unknown —
|
|
36
|
+
* callers can emit their own "unknown command" envelope.
|
|
37
|
+
*/
|
|
38
|
+
export function buildInvocation(surface, site, cmd, bag) {
|
|
39
|
+
const resolved = resolveCommand(site, cmd);
|
|
40
|
+
if (!resolved)
|
|
41
|
+
return null;
|
|
42
|
+
return {
|
|
43
|
+
adapter: resolved.adapter,
|
|
44
|
+
command: resolved.command,
|
|
45
|
+
cmdName: cmd,
|
|
46
|
+
bag,
|
|
47
|
+
surface,
|
|
48
|
+
trace_id: newULID(),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run a validated, hardened invocation end-to-end. Failure paths never
|
|
53
|
+
* throw — every error surfaces as `{ exitCode, error }` on the returned
|
|
54
|
+
* result so transport code can do uniform error handling.
|
|
55
|
+
*/
|
|
56
|
+
export async function execute(inv) {
|
|
57
|
+
const startedAt = Date.now();
|
|
58
|
+
const key = `${inv.adapter.name}.${inv.cmdName}`;
|
|
59
|
+
const compiled = getCompiled(inv.adapter.name, inv.cmdName);
|
|
60
|
+
const warnings = [];
|
|
61
|
+
// Loader primes the kernel cache via primeKernelCache() after every
|
|
62
|
+
// registry mutation. A miss here means either a wiring bug or a test
|
|
63
|
+
// that registers an adapter without calling primeKernelCache() — throw
|
|
64
|
+
// a clear error instead of silently recompiling.
|
|
65
|
+
if (!compiled)
|
|
66
|
+
throw new KernelLookupError(key);
|
|
67
|
+
// 1. JSON Schema validation (fail-closed via ajv strict mode).
|
|
68
|
+
const v = compiled.validate(inv.bag.args);
|
|
69
|
+
if (!v.ok) {
|
|
70
|
+
const first = v.errors[0] ?? { message: "invalid arguments" };
|
|
71
|
+
const path = (first.instancePath ?? "").replace(/^\//, "");
|
|
72
|
+
const name = path || "args";
|
|
73
|
+
const err = {
|
|
74
|
+
code: "invalid_input",
|
|
75
|
+
message: `arg "${name}" ${first.message ?? "invalid"}`,
|
|
76
|
+
adapter_path: `src/adapters/${inv.adapter.name}/${inv.cmdName}.yaml`,
|
|
77
|
+
step: 0,
|
|
78
|
+
suggestion: `match the JSON Schema at \`unicli describe ${inv.adapter.name} ${inv.cmdName}\``,
|
|
79
|
+
retryable: false,
|
|
80
|
+
};
|
|
81
|
+
const durationMs = Date.now() - startedAt;
|
|
82
|
+
return {
|
|
83
|
+
results: [],
|
|
84
|
+
envelope: {
|
|
85
|
+
command: key,
|
|
86
|
+
duration_ms: durationMs,
|
|
87
|
+
adapter_version: inv.adapter.version,
|
|
88
|
+
surface: "web",
|
|
89
|
+
error: err,
|
|
90
|
+
next_actions: defaultErrorNextActions(inv.adapter.name, inv.cmdName, "invalid_input"),
|
|
91
|
+
},
|
|
92
|
+
durationMs,
|
|
93
|
+
exitCode: ExitCode.USAGE_ERROR,
|
|
94
|
+
warnings,
|
|
95
|
+
error: err,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// 2. Schema-driven hardening (ajv format-assertion + x-unicli-kind).
|
|
99
|
+
try {
|
|
100
|
+
const h = hardenArgs(inv.bag.args, compiled.argByName);
|
|
101
|
+
warnings.push(...h.warnings);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (err instanceof InputHardeningError) {
|
|
105
|
+
const agentErr = {
|
|
106
|
+
code: "invalid_input",
|
|
107
|
+
message: err.message,
|
|
108
|
+
adapter_path: `src/adapters/${inv.adapter.name}/${inv.cmdName}.yaml`,
|
|
109
|
+
step: 0,
|
|
110
|
+
suggestion: err.suggestion,
|
|
111
|
+
retryable: false,
|
|
112
|
+
};
|
|
113
|
+
const durationMs = Date.now() - startedAt;
|
|
114
|
+
return {
|
|
115
|
+
results: [],
|
|
116
|
+
envelope: {
|
|
117
|
+
command: key,
|
|
118
|
+
duration_ms: durationMs,
|
|
119
|
+
adapter_version: inv.adapter.version,
|
|
120
|
+
surface: "web",
|
|
121
|
+
error: agentErr,
|
|
122
|
+
next_actions: defaultErrorNextActions(inv.adapter.name, inv.cmdName, "invalid_input"),
|
|
123
|
+
},
|
|
124
|
+
durationMs,
|
|
125
|
+
exitCode: ExitCode.USAGE_ERROR,
|
|
126
|
+
warnings,
|
|
127
|
+
error: agentErr,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
throw err;
|
|
131
|
+
}
|
|
132
|
+
// 3. Pipeline / func execution. runPipeline requires a ResolvedArgs bag
|
|
133
|
+
// as of v0.213.3 P3 (D6); surface + trace_id are plumbed through so
|
|
134
|
+
// YAML templates can reference ${{ surface }} / ${{ trace_id }}.
|
|
135
|
+
let results = [];
|
|
136
|
+
try {
|
|
137
|
+
if (inv.command.pipeline) {
|
|
138
|
+
results = await runPipeline(inv.command.pipeline, inv.bag, inv.adapter.base, {
|
|
139
|
+
site: inv.adapter.name,
|
|
140
|
+
strategy: inv.adapter.strategy,
|
|
141
|
+
surface: inv.surface,
|
|
142
|
+
trace_id: inv.trace_id,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (inv.command.func) {
|
|
146
|
+
const raw = await inv.command.func(null, inv.bag.args);
|
|
147
|
+
results = Array.isArray(raw) ? raw : [raw];
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const agentErr = {
|
|
151
|
+
code: "internal_error",
|
|
152
|
+
message: `command ${key} has neither pipeline nor func`,
|
|
153
|
+
adapter_path: `src/adapters/${inv.adapter.name}/${inv.cmdName}.yaml`,
|
|
154
|
+
step: 0,
|
|
155
|
+
suggestion: "the adapter manifest is broken; run `unicli repair` to regenerate",
|
|
156
|
+
retryable: false,
|
|
157
|
+
};
|
|
158
|
+
const durationMs = Date.now() - startedAt;
|
|
159
|
+
return {
|
|
160
|
+
results: [],
|
|
161
|
+
envelope: {
|
|
162
|
+
command: key,
|
|
163
|
+
duration_ms: durationMs,
|
|
164
|
+
adapter_version: inv.adapter.version,
|
|
165
|
+
surface: "web",
|
|
166
|
+
error: agentErr,
|
|
167
|
+
},
|
|
168
|
+
durationMs,
|
|
169
|
+
exitCode: ExitCode.CONFIG_ERROR,
|
|
170
|
+
warnings,
|
|
171
|
+
error: agentErr,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
const adapterPath = `src/adapters/${inv.adapter.name}/${inv.cmdName}.yaml`;
|
|
177
|
+
const fields = errorToAgentFields(err, adapterPath, inv.adapter.name);
|
|
178
|
+
const agentErr = {
|
|
179
|
+
code: errorTypeToCode(err),
|
|
180
|
+
message: err instanceof Error ? err.message : String(err),
|
|
181
|
+
...fields,
|
|
182
|
+
};
|
|
183
|
+
const durationMs = Date.now() - startedAt;
|
|
184
|
+
return {
|
|
185
|
+
results: [],
|
|
186
|
+
envelope: {
|
|
187
|
+
command: key,
|
|
188
|
+
duration_ms: durationMs,
|
|
189
|
+
adapter_version: inv.adapter.version,
|
|
190
|
+
surface: "web",
|
|
191
|
+
error: agentErr,
|
|
192
|
+
next_actions: defaultErrorNextActions(inv.adapter.name, inv.cmdName, agentErr.code),
|
|
193
|
+
},
|
|
194
|
+
durationMs,
|
|
195
|
+
exitCode: mapErrorToExitCode(err),
|
|
196
|
+
warnings,
|
|
197
|
+
error: agentErr,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// 4. Success envelope. next_actions built at runtime with the literal
|
|
201
|
+
// site/cmd so adapter templates that legitimately carry `${site}` are
|
|
202
|
+
// never mangled and `paginated` metadata flows through.
|
|
203
|
+
const durationMs = Date.now() - startedAt;
|
|
204
|
+
const nextActions = defaultSuccessNextActions(inv.adapter.name, inv.cmdName, {
|
|
205
|
+
supportsPagination: inv.command.paginated === true,
|
|
206
|
+
});
|
|
207
|
+
return {
|
|
208
|
+
results,
|
|
209
|
+
envelope: {
|
|
210
|
+
command: key,
|
|
211
|
+
duration_ms: durationMs,
|
|
212
|
+
adapter_version: inv.adapter.version,
|
|
213
|
+
surface: "web",
|
|
214
|
+
next_actions: nextActions,
|
|
215
|
+
},
|
|
216
|
+
durationMs,
|
|
217
|
+
exitCode: results.length === 0 ? ExitCode.EMPTY_RESULT : ExitCode.SUCCESS,
|
|
218
|
+
warnings,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=execute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/engine/kernel/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel types — Invocation, CompiledCommand, InvocationResult.
|
|
3
|
+
*
|
|
4
|
+
* Pure type declarations only; no runtime dependencies beyond shared domain
|
|
5
|
+
* types. Kept isolated so surfaces (MCP/ACP/CLI) can import types without
|
|
6
|
+
* pulling ajv / crypto.
|
|
7
|
+
*/
|
|
8
|
+
import type { ResolvedArgs } from "../args.js";
|
|
9
|
+
import type { AgentContext, AgentError } from "../../output/envelope.js";
|
|
10
|
+
import type { AdapterArg, AdapterCommand, AdapterManifest } from "../../types.js";
|
|
11
|
+
export interface Invocation {
|
|
12
|
+
adapter: AdapterManifest;
|
|
13
|
+
command: AdapterCommand;
|
|
14
|
+
cmdName: string;
|
|
15
|
+
bag: ResolvedArgs;
|
|
16
|
+
surface: "cli" | "mcp" | "acp" | "bench" | "hub";
|
|
17
|
+
/** ULID — 26-char Crockford Base32, time-sortable and monotonic within ms. */
|
|
18
|
+
trace_id: string;
|
|
19
|
+
}
|
|
20
|
+
export type AjvValidateFn = {
|
|
21
|
+
(data: unknown): boolean;
|
|
22
|
+
errors?: Array<{
|
|
23
|
+
instancePath?: string;
|
|
24
|
+
keyword?: string;
|
|
25
|
+
message?: string;
|
|
26
|
+
params?: Record<string, unknown>;
|
|
27
|
+
}> | null;
|
|
28
|
+
};
|
|
29
|
+
export interface CompiledCommand {
|
|
30
|
+
jsonSchema: Record<string, unknown>;
|
|
31
|
+
example: Record<string, unknown>;
|
|
32
|
+
channels: readonly ["shell", "file", "stdin"];
|
|
33
|
+
argByName: Map<string, AdapterArg>;
|
|
34
|
+
validate: (args: unknown) => {
|
|
35
|
+
ok: true;
|
|
36
|
+
} | {
|
|
37
|
+
ok: false;
|
|
38
|
+
errors: NonNullable<AjvValidateFn["errors"]>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export interface InvocationResult {
|
|
42
|
+
results: unknown[];
|
|
43
|
+
envelope: AgentContext;
|
|
44
|
+
durationMs: number;
|
|
45
|
+
exitCode: number;
|
|
46
|
+
warnings: string[];
|
|
47
|
+
error?: AgentError;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;IACjD,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC,GAAG,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,QAAQ,EAAE,CACR,IAAI,EAAE,OAAO,KAEX;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;KAAE,CAAC;CACjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel types — Invocation, CompiledCommand, InvocationResult.
|
|
3
|
+
*
|
|
4
|
+
* Pure type declarations only; no runtime dependencies beyond shared domain
|
|
5
|
+
* types. Kept isolated so surfaces (MCP/ACP/CLI) can import types without
|
|
6
|
+
* pulling ajv / crypto.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/kernel/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ULID generator — 26-char Crockford Base32, time-sortable AND strictly
|
|
3
|
+
* monotonic within the same millisecond.
|
|
4
|
+
*
|
|
5
|
+
* Spec: https://github.com/ulid/spec#monotonicity
|
|
6
|
+
*
|
|
7
|
+
* Layout: 48 bits of ms timestamp (10 chars) + 80 bits of randomness (16 chars).
|
|
8
|
+
* When two ULIDs are generated in the same ms, the random component of the
|
|
9
|
+
* second is the first + 1 (BigInt increment). An 80-bit overflow (never seen
|
|
10
|
+
* in practice — ~10^24 events/ms) spins until the clock advances.
|
|
11
|
+
*
|
|
12
|
+
* Dependency-free: uses only node:crypto randomBytes.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Generate a strictly monotonic 26-char ULID. Two calls in the same ms sort
|
|
16
|
+
* lexicographically in call order.
|
|
17
|
+
*/
|
|
18
|
+
export declare function newULID(): string;
|
|
19
|
+
/** Test hook — reset module state so successive test runs are independent. */
|
|
20
|
+
export declare function _resetULIDForTests(): void;
|
|
21
|
+
//# sourceMappingURL=ulid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../../../src/engine/kernel/ulid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqCH;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAuBhC;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ULID generator — 26-char Crockford Base32, time-sortable AND strictly
|
|
3
|
+
* monotonic within the same millisecond.
|
|
4
|
+
*
|
|
5
|
+
* Spec: https://github.com/ulid/spec#monotonicity
|
|
6
|
+
*
|
|
7
|
+
* Layout: 48 bits of ms timestamp (10 chars) + 80 bits of randomness (16 chars).
|
|
8
|
+
* When two ULIDs are generated in the same ms, the random component of the
|
|
9
|
+
* second is the first + 1 (BigInt increment). An 80-bit overflow (never seen
|
|
10
|
+
* in practice — ~10^24 events/ms) spins until the clock advances.
|
|
11
|
+
*
|
|
12
|
+
* Dependency-free: uses only node:crypto randomBytes.
|
|
13
|
+
*/
|
|
14
|
+
import { randomBytes } from "node:crypto";
|
|
15
|
+
const CROCKFORD = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
|
|
16
|
+
const MAX_80_BIT = (1n << 80n) - 1n;
|
|
17
|
+
let lastMs = -1;
|
|
18
|
+
let lastRand = 0n;
|
|
19
|
+
function encodeTime(ms) {
|
|
20
|
+
const chars = [];
|
|
21
|
+
let t = ms;
|
|
22
|
+
for (let i = 9; i >= 0; i--) {
|
|
23
|
+
chars[i] = CROCKFORD[t % 32];
|
|
24
|
+
t = Math.floor(t / 32);
|
|
25
|
+
}
|
|
26
|
+
return chars.join("");
|
|
27
|
+
}
|
|
28
|
+
function encodeRand(rand) {
|
|
29
|
+
const chars = [];
|
|
30
|
+
let acc = rand;
|
|
31
|
+
for (let i = 15; i >= 0; i--) {
|
|
32
|
+
chars[i] = CROCKFORD[Number(acc & 31n)];
|
|
33
|
+
acc >>= 5n;
|
|
34
|
+
}
|
|
35
|
+
return chars.join("");
|
|
36
|
+
}
|
|
37
|
+
function freshRand() {
|
|
38
|
+
const bytes = randomBytes(10);
|
|
39
|
+
let acc = 0n;
|
|
40
|
+
for (const b of bytes)
|
|
41
|
+
acc = (acc << 8n) | BigInt(b);
|
|
42
|
+
return acc;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generate a strictly monotonic 26-char ULID. Two calls in the same ms sort
|
|
46
|
+
* lexicographically in call order.
|
|
47
|
+
*/
|
|
48
|
+
export function newULID() {
|
|
49
|
+
let now = Date.now();
|
|
50
|
+
let rand;
|
|
51
|
+
if (now === lastMs) {
|
|
52
|
+
rand = lastRand + 1n;
|
|
53
|
+
// 80-bit overflow — spin until the clock advances. In practice
|
|
54
|
+
// unreachable (10^24 events/ms), but the spec requires handling it.
|
|
55
|
+
while (rand > MAX_80_BIT) {
|
|
56
|
+
const spun = Date.now();
|
|
57
|
+
if (spun > lastMs) {
|
|
58
|
+
now = spun;
|
|
59
|
+
rand = freshRand();
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
rand = freshRand();
|
|
66
|
+
}
|
|
67
|
+
lastMs = now;
|
|
68
|
+
lastRand = rand;
|
|
69
|
+
return encodeTime(now) + encodeRand(rand);
|
|
70
|
+
}
|
|
71
|
+
/** Test hook — reset module state so successive test runs are independent. */
|
|
72
|
+
export function _resetULIDForTests() {
|
|
73
|
+
lastMs = -1;
|
|
74
|
+
lastRand = 0n;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=ulid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ulid.js","sourceRoot":"","sources":["../../../src/engine/kernel/ulid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,SAAS,GAAG,kCAAkC,CAAC;AACrD,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAEpC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;AAChB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAElB,SAAS,UAAU,CAAC,EAAU;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QACxC,GAAG,KAAK,EAAE,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,IAAI,IAAY,CAAC;IAEjB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,IAAI,GAAG,QAAQ,GAAG,EAAE,CAAC;QACrB,+DAA+D;QAC/D,oEAAoE;QACpE,OAAO,IAAI,GAAG,UAAU,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;gBAClB,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,GAAG,SAAS,EAAE,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,GAAG,GAAG,CAAC;IACb,QAAQ,GAAG,IAAI,CAAC;IAChB,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,CAAC,CAAC,CAAC;IACZ,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC"}
|