@aria-cli/tools 1.0.9 → 1.0.10
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/package.json +8 -5
- package/dist-cjs/.tsbuildinfo +0 -1
- package/dist-cjs/ask-user-interaction.d.ts +0 -10
- package/dist-cjs/ask-user-interaction.js +0 -28
- package/dist-cjs/ask-user-interaction.js.map +0 -1
- package/dist-cjs/cache/web-cache.d.ts +0 -52
- package/dist-cjs/cache/web-cache.js +0 -71
- package/dist-cjs/cache/web-cache.js.map +0 -1
- package/dist-cjs/definitions/arion.d.ts +0 -8
- package/dist-cjs/definitions/arion.js +0 -108
- package/dist-cjs/definitions/arion.js.map +0 -1
- package/dist-cjs/definitions/browser/browser.d.ts +0 -2
- package/dist-cjs/definitions/browser/browser.js +0 -422
- package/dist-cjs/definitions/browser/browser.js.map +0 -1
- package/dist-cjs/definitions/browser/index.d.ts +0 -1
- package/dist-cjs/definitions/browser/index.js +0 -9
- package/dist-cjs/definitions/browser/index.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-downloads.d.ts +0 -13
- package/dist-cjs/definitions/browser/pw-downloads.js +0 -118
- package/dist-cjs/definitions/browser/pw-downloads.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-interactions.d.ts +0 -78
- package/dist-cjs/definitions/browser/pw-interactions.js +0 -214
- package/dist-cjs/definitions/browser/pw-interactions.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-responses.d.ts +0 -28
- package/dist-cjs/definitions/browser/pw-responses.js +0 -85
- package/dist-cjs/definitions/browser/pw-responses.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-session.d.ts +0 -65
- package/dist-cjs/definitions/browser/pw-session.js +0 -327
- package/dist-cjs/definitions/browser/pw-session.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-shared.d.ts +0 -22
- package/dist-cjs/definitions/browser/pw-shared.js +0 -73
- package/dist-cjs/definitions/browser/pw-shared.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-snapshot.d.ts +0 -34
- package/dist-cjs/definitions/browser/pw-snapshot.js +0 -308
- package/dist-cjs/definitions/browser/pw-snapshot.js.map +0 -1
- package/dist-cjs/definitions/browser/pw-state.d.ts +0 -22
- package/dist-cjs/definitions/browser/pw-state.js +0 -71
- package/dist-cjs/definitions/browser/pw-state.js.map +0 -1
- package/dist-cjs/definitions/browser/types.d.ts +0 -277
- package/dist-cjs/definitions/browser/types.js +0 -6
- package/dist-cjs/definitions/browser/types.js.map +0 -1
- package/dist-cjs/definitions/code-intelligence.d.ts +0 -8
- package/dist-cjs/definitions/code-intelligence.js +0 -474
- package/dist-cjs/definitions/code-intelligence.js.map +0 -1
- package/dist-cjs/definitions/core.d.ts +0 -47
- package/dist-cjs/definitions/core.js +0 -134
- package/dist-cjs/definitions/core.js.map +0 -1
- package/dist-cjs/definitions/delegation.d.ts +0 -11
- package/dist-cjs/definitions/delegation.js +0 -516
- package/dist-cjs/definitions/delegation.js.map +0 -1
- package/dist-cjs/definitions/deploy.d.ts +0 -15
- package/dist-cjs/definitions/deploy.js +0 -69
- package/dist-cjs/definitions/deploy.js.map +0 -1
- package/dist-cjs/definitions/filesystem.d.ts +0 -9
- package/dist-cjs/definitions/filesystem.js +0 -200
- package/dist-cjs/definitions/filesystem.js.map +0 -1
- package/dist-cjs/definitions/frg.d.ts +0 -3
- package/dist-cjs/definitions/frg.js +0 -67
- package/dist-cjs/definitions/frg.js.map +0 -1
- package/dist-cjs/definitions/index.d.ts +0 -19
- package/dist-cjs/definitions/index.js +0 -44
- package/dist-cjs/definitions/index.js.map +0 -1
- package/dist-cjs/definitions/memory.d.ts +0 -8
- package/dist-cjs/definitions/memory.js +0 -127
- package/dist-cjs/definitions/memory.js.map +0 -1
- package/dist-cjs/definitions/messaging.d.ts +0 -11
- package/dist-cjs/definitions/messaging.js +0 -632
- package/dist-cjs/definitions/messaging.js.map +0 -1
- package/dist-cjs/definitions/meta.d.ts +0 -11
- package/dist-cjs/definitions/meta.js +0 -353
- package/dist-cjs/definitions/meta.js.map +0 -1
- package/dist-cjs/definitions/network.d.ts +0 -11
- package/dist-cjs/definitions/network.js +0 -163
- package/dist-cjs/definitions/network.js.map +0 -1
- package/dist-cjs/definitions/outlook.d.ts +0 -2
- package/dist-cjs/definitions/outlook.js +0 -281
- package/dist-cjs/definitions/outlook.js.map +0 -1
- package/dist-cjs/definitions/patch/apply-patch.d.ts +0 -11
- package/dist-cjs/definitions/patch/apply-patch.js +0 -192
- package/dist-cjs/definitions/patch/apply-patch.js.map +0 -1
- package/dist-cjs/definitions/patch/fuzzy-match.d.ts +0 -10
- package/dist-cjs/definitions/patch/fuzzy-match.js +0 -173
- package/dist-cjs/definitions/patch/fuzzy-match.js.map +0 -1
- package/dist-cjs/definitions/patch/index.d.ts +0 -1
- package/dist-cjs/definitions/patch/index.js +0 -6
- package/dist-cjs/definitions/patch/index.js.map +0 -1
- package/dist-cjs/definitions/patch/patch-parser.d.ts +0 -50
- package/dist-cjs/definitions/patch/patch-parser.js +0 -216
- package/dist-cjs/definitions/patch/patch-parser.js.map +0 -1
- package/dist-cjs/definitions/patch/sandbox-paths.d.ts +0 -18
- package/dist-cjs/definitions/patch/sandbox-paths.js +0 -114
- package/dist-cjs/definitions/patch/sandbox-paths.js.map +0 -1
- package/dist-cjs/definitions/process/index.d.ts +0 -1
- package/dist-cjs/definitions/process/index.js +0 -9
- package/dist-cjs/definitions/process/index.js.map +0 -1
- package/dist-cjs/definitions/process/process-registry.d.ts +0 -67
- package/dist-cjs/definitions/process/process-registry.js +0 -232
- package/dist-cjs/definitions/process/process-registry.js.map +0 -1
- package/dist-cjs/definitions/process/process.d.ts +0 -9
- package/dist-cjs/definitions/process/process.js +0 -390
- package/dist-cjs/definitions/process/process.js.map +0 -1
- package/dist-cjs/definitions/process/pty-keys.d.ts +0 -13
- package/dist-cjs/definitions/process/pty-keys.js +0 -260
- package/dist-cjs/definitions/process/pty-keys.js.map +0 -1
- package/dist-cjs/definitions/process/session-slug.d.ts +0 -1
- package/dist-cjs/definitions/process/session-slug.js +0 -146
- package/dist-cjs/definitions/process/session-slug.js.map +0 -1
- package/dist-cjs/definitions/quip.d.ts +0 -2
- package/dist-cjs/definitions/quip.js +0 -199
- package/dist-cjs/definitions/quip.js.map +0 -1
- package/dist-cjs/definitions/search.d.ts +0 -9
- package/dist-cjs/definitions/search.js +0 -64
- package/dist-cjs/definitions/search.js.map +0 -1
- package/dist-cjs/definitions/session-history.d.ts +0 -11
- package/dist-cjs/definitions/session-history.js +0 -73
- package/dist-cjs/definitions/session-history.js.map +0 -1
- package/dist-cjs/definitions/shell.d.ts +0 -8
- package/dist-cjs/definitions/shell.js +0 -185
- package/dist-cjs/definitions/shell.js.map +0 -1
- package/dist-cjs/definitions/slack.d.ts +0 -2
- package/dist-cjs/definitions/slack.js +0 -184
- package/dist-cjs/definitions/slack.js.map +0 -1
- package/dist-cjs/definitions/web.d.ts +0 -8
- package/dist-cjs/definitions/web.js +0 -113
- package/dist-cjs/definitions/web.js.map +0 -1
- package/dist-cjs/executors/apply-patch.d.ts +0 -51
- package/dist-cjs/executors/apply-patch.js +0 -939
- package/dist-cjs/executors/apply-patch.js.map +0 -1
- package/dist-cjs/executors/arion.d.ts +0 -50
- package/dist-cjs/executors/arion.js +0 -126
- package/dist-cjs/executors/arion.js.map +0 -1
- package/dist-cjs/executors/code-intelligence.d.ts +0 -138
- package/dist-cjs/executors/code-intelligence.js +0 -926
- package/dist-cjs/executors/code-intelligence.js.map +0 -1
- package/dist-cjs/executors/deploy.d.ts +0 -169
- package/dist-cjs/executors/deploy.js +0 -870
- package/dist-cjs/executors/deploy.js.map +0 -1
- package/dist-cjs/executors/filesystem.d.ts +0 -150
- package/dist-cjs/executors/filesystem.js +0 -1168
- package/dist-cjs/executors/filesystem.js.map +0 -1
- package/dist-cjs/executors/frg-freshness.d.ts +0 -93
- package/dist-cjs/executors/frg-freshness.js +0 -628
- package/dist-cjs/executors/frg-freshness.js.map +0 -1
- package/dist-cjs/executors/frg.d.ts +0 -27
- package/dist-cjs/executors/frg.js +0 -335
- package/dist-cjs/executors/frg.js.map +0 -1
- package/dist-cjs/executors/index.d.ts +0 -44
- package/dist-cjs/executors/index.js +0 -144
- package/dist-cjs/executors/index.js.map +0 -1
- package/dist-cjs/executors/learning-meta.d.ts +0 -87
- package/dist-cjs/executors/learning-meta.js +0 -1166
- package/dist-cjs/executors/learning-meta.js.map +0 -1
- package/dist-cjs/executors/lsp-client.d.ts +0 -38
- package/dist-cjs/executors/lsp-client.js +0 -311
- package/dist-cjs/executors/lsp-client.js.map +0 -1
- package/dist-cjs/executors/memory.d.ts +0 -203
- package/dist-cjs/executors/memory.js +0 -797
- package/dist-cjs/executors/memory.js.map +0 -1
- package/dist-cjs/executors/meta.d.ts +0 -73
- package/dist-cjs/executors/meta.js +0 -227
- package/dist-cjs/executors/meta.js.map +0 -1
- package/dist-cjs/executors/process-registry.d.ts +0 -98
- package/dist-cjs/executors/process-registry.js +0 -470
- package/dist-cjs/executors/process-registry.js.map +0 -1
- package/dist-cjs/executors/pty-session-store.d.ts +0 -14
- package/dist-cjs/executors/pty-session-store.js +0 -35
- package/dist-cjs/executors/pty-session-store.js.map +0 -1
- package/dist-cjs/executors/pty.d.ts +0 -133
- package/dist-cjs/executors/pty.js +0 -313
- package/dist-cjs/executors/pty.js.map +0 -1
- package/dist-cjs/executors/restart.d.ts +0 -13
- package/dist-cjs/executors/restart.js +0 -156
- package/dist-cjs/executors/restart.js.map +0 -1
- package/dist-cjs/executors/search-freshness.d.ts +0 -50
- package/dist-cjs/executors/search-freshness.js +0 -235
- package/dist-cjs/executors/search-freshness.js.map +0 -1
- package/dist-cjs/executors/search-types.d.ts +0 -52
- package/dist-cjs/executors/search-types.js +0 -57
- package/dist-cjs/executors/search-types.js.map +0 -1
- package/dist-cjs/executors/search.d.ts +0 -11
- package/dist-cjs/executors/search.js +0 -103
- package/dist-cjs/executors/search.js.map +0 -1
- package/dist-cjs/executors/self-diagnose.d.ts +0 -89
- package/dist-cjs/executors/self-diagnose.js +0 -435
- package/dist-cjs/executors/self-diagnose.js.map +0 -1
- package/dist-cjs/executors/session-history.d.ts +0 -75
- package/dist-cjs/executors/session-history.js +0 -321
- package/dist-cjs/executors/session-history.js.map +0 -1
- package/dist-cjs/executors/shell-safety.d.ts +0 -27
- package/dist-cjs/executors/shell-safety.js +0 -479
- package/dist-cjs/executors/shell-safety.js.map +0 -1
- package/dist-cjs/executors/shell.d.ts +0 -168
- package/dist-cjs/executors/shell.js +0 -1002
- package/dist-cjs/executors/shell.js.map +0 -1
- package/dist-cjs/executors/utils.d.ts +0 -20
- package/dist-cjs/executors/utils.js +0 -74
- package/dist-cjs/executors/utils.js.map +0 -1
- package/dist-cjs/executors/web.d.ts +0 -89
- package/dist-cjs/executors/web.js +0 -548
- package/dist-cjs/executors/web.js.map +0 -1
- package/dist-cjs/extraction/content-extraction.d.ts +0 -48
- package/dist-cjs/extraction/content-extraction.js +0 -244
- package/dist-cjs/extraction/content-extraction.js.map +0 -1
- package/dist-cjs/extraction/index.d.ts +0 -4
- package/dist-cjs/extraction/index.js +0 -9
- package/dist-cjs/extraction/index.js.map +0 -1
- package/dist-cjs/headless-control-contract.d.ts +0 -3182
- package/dist-cjs/headless-control-contract.js +0 -973
- package/dist-cjs/headless-control-contract.js.map +0 -1
- package/dist-cjs/index.d.ts +0 -62
- package/dist-cjs/index.js +0 -438
- package/dist-cjs/index.js.map +0 -1
- package/dist-cjs/local-control-http-auth.d.ts +0 -2
- package/dist-cjs/local-control-http-auth.js +0 -6
- package/dist-cjs/local-control-http-auth.js.map +0 -1
- package/dist-cjs/mcp/client.d.ts +0 -68
- package/dist-cjs/mcp/client.js +0 -186
- package/dist-cjs/mcp/client.js.map +0 -1
- package/dist-cjs/mcp/connection.d.ts +0 -54
- package/dist-cjs/mcp/connection.js +0 -485
- package/dist-cjs/mcp/connection.js.map +0 -1
- package/dist-cjs/mcp/index.d.ts +0 -10
- package/dist-cjs/mcp/index.js +0 -31
- package/dist-cjs/mcp/index.js.map +0 -1
- package/dist-cjs/mcp/jsonrpc.d.ts +0 -36
- package/dist-cjs/mcp/jsonrpc.js +0 -149
- package/dist-cjs/mcp/jsonrpc.js.map +0 -1
- package/dist-cjs/mcp/types.d.ts +0 -178
- package/dist-cjs/mcp/types.js +0 -9
- package/dist-cjs/mcp/types.js.map +0 -1
- package/dist-cjs/network-control-adapter.d.ts +0 -4
- package/dist-cjs/network-control-adapter.js +0 -78
- package/dist-cjs/network-control-adapter.js.map +0 -1
- package/dist-cjs/network-runtime/address-types.d.ts +0 -201
- package/dist-cjs/network-runtime/address-types.js +0 -169
- package/dist-cjs/network-runtime/address-types.js.map +0 -1
- package/dist-cjs/network-runtime/db-owner-fencing.d.ts +0 -43
- package/dist-cjs/network-runtime/db-owner-fencing.js +0 -77
- package/dist-cjs/network-runtime/db-owner-fencing.js.map +0 -1
- package/dist-cjs/network-runtime/delivery-receipts.d.ts +0 -117
- package/dist-cjs/network-runtime/delivery-receipts.js +0 -277
- package/dist-cjs/network-runtime/delivery-receipts.js.map +0 -1
- package/dist-cjs/network-runtime/direct-endpoint-authority.d.ts +0 -8
- package/dist-cjs/network-runtime/direct-endpoint-authority.js +0 -30
- package/dist-cjs/network-runtime/direct-endpoint-authority.js.map +0 -1
- package/dist-cjs/network-runtime/index.d.ts +0 -24
- package/dist-cjs/network-runtime/index.js +0 -173
- package/dist-cjs/network-runtime/index.js.map +0 -1
- package/dist-cjs/network-runtime/local-control-contract.d.ts +0 -758
- package/dist-cjs/network-runtime/local-control-contract.js +0 -634
- package/dist-cjs/network-runtime/local-control-contract.js.map +0 -1
- package/dist-cjs/network-runtime/node-store-contract.d.ts +0 -49
- package/dist-cjs/network-runtime/node-store-contract.js +0 -39
- package/dist-cjs/network-runtime/node-store-contract.js.map +0 -1
- package/dist-cjs/network-runtime/pair-route-contract.d.ts +0 -100
- package/dist-cjs/network-runtime/pair-route-contract.js +0 -81
- package/dist-cjs/network-runtime/pair-route-contract.js.map +0 -1
- package/dist-cjs/network-runtime/peer-capabilities.d.ts +0 -10
- package/dist-cjs/network-runtime/peer-capabilities.js +0 -38
- package/dist-cjs/network-runtime/peer-capabilities.js.map +0 -1
- package/dist-cjs/network-runtime/peer-principal-ref.d.ts +0 -9
- package/dist-cjs/network-runtime/peer-principal-ref.js +0 -16
- package/dist-cjs/network-runtime/peer-principal-ref.js.map +0 -1
- package/dist-cjs/network-runtime/peer-state-machine.d.ts +0 -70
- package/dist-cjs/network-runtime/peer-state-machine.js +0 -130
- package/dist-cjs/network-runtime/peer-state-machine.js.map +0 -1
- package/dist-cjs/network-runtime/protocol-schemas.d.ts +0 -328
- package/dist-cjs/network-runtime/protocol-schemas.js +0 -213
- package/dist-cjs/network-runtime/protocol-schemas.js.map +0 -1
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.d.ts +0 -81
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +0 -64
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js.map +0 -1
- package/dist-cjs/outlook/desktop-session.d.ts +0 -68
- package/dist-cjs/outlook/desktop-session.js +0 -319
- package/dist-cjs/outlook/desktop-session.js.map +0 -1
- package/dist-cjs/package.json +0 -3
- package/dist-cjs/policy.d.ts +0 -43
- package/dist-cjs/policy.js +0 -156
- package/dist-cjs/policy.js.map +0 -1
- package/dist-cjs/providers/brave.d.ts +0 -10
- package/dist-cjs/providers/brave.js +0 -67
- package/dist-cjs/providers/brave.js.map +0 -1
- package/dist-cjs/providers/duckduckgo.d.ts +0 -18
- package/dist-cjs/providers/duckduckgo.js +0 -181
- package/dist-cjs/providers/duckduckgo.js.map +0 -1
- package/dist-cjs/providers/exa.d.ts +0 -10
- package/dist-cjs/providers/exa.js +0 -68
- package/dist-cjs/providers/exa.js.map +0 -1
- package/dist-cjs/providers/firecrawl.d.ts +0 -10
- package/dist-cjs/providers/firecrawl.js +0 -60
- package/dist-cjs/providers/firecrawl.js.map +0 -1
- package/dist-cjs/providers/index.d.ts +0 -8
- package/dist-cjs/providers/index.js +0 -18
- package/dist-cjs/providers/index.js.map +0 -1
- package/dist-cjs/providers/jina.d.ts +0 -10
- package/dist-cjs/providers/jina.js +0 -54
- package/dist-cjs/providers/jina.js.map +0 -1
- package/dist-cjs/providers/router.d.ts +0 -21
- package/dist-cjs/providers/router.js +0 -101
- package/dist-cjs/providers/router.js.map +0 -1
- package/dist-cjs/providers/search-provider.d.ts +0 -35
- package/dist-cjs/providers/search-provider.js +0 -37
- package/dist-cjs/providers/search-provider.js.map +0 -1
- package/dist-cjs/providers/tavily.d.ts +0 -10
- package/dist-cjs/providers/tavily.js +0 -59
- package/dist-cjs/providers/tavily.js.map +0 -1
- package/dist-cjs/quip/desktop-session.d.ts +0 -69
- package/dist-cjs/quip/desktop-session.js +0 -354
- package/dist-cjs/quip/desktop-session.js.map +0 -1
- package/dist-cjs/registry/index.d.ts +0 -1
- package/dist-cjs/registry/index.js +0 -7
- package/dist-cjs/registry/index.js.map +0 -1
- package/dist-cjs/registry/registry.d.ts +0 -156
- package/dist-cjs/registry/registry.js +0 -762
- package/dist-cjs/registry/registry.js.map +0 -1
- package/dist-cjs/runtime-socket-local-control-client.d.ts +0 -10
- package/dist-cjs/runtime-socket-local-control-client.js +0 -368
- package/dist-cjs/runtime-socket-local-control-client.js.map +0 -1
- package/dist-cjs/security/dns-normalization.d.ts +0 -6
- package/dist-cjs/security/dns-normalization.js +0 -23
- package/dist-cjs/security/dns-normalization.js.map +0 -1
- package/dist-cjs/security/dns-pinning.d.ts +0 -27
- package/dist-cjs/security/dns-pinning.js +0 -161
- package/dist-cjs/security/dns-pinning.js.map +0 -1
- package/dist-cjs/security/external-content.d.ts +0 -40
- package/dist-cjs/security/external-content.js +0 -96
- package/dist-cjs/security/external-content.js.map +0 -1
- package/dist-cjs/security/ssrf.d.ts +0 -40
- package/dist-cjs/security/ssrf.js +0 -222
- package/dist-cjs/security/ssrf.js.map +0 -1
- package/dist-cjs/slack/desktop-session.d.ts +0 -69
- package/dist-cjs/slack/desktop-session.js +0 -367
- package/dist-cjs/slack/desktop-session.js.map +0 -1
- package/dist-cjs/tool-factory.d.ts +0 -46
- package/dist-cjs/tool-factory.js +0 -51
- package/dist-cjs/tool-factory.js.map +0 -1
- package/dist-cjs/types.d.ts +0 -1192
- package/dist-cjs/types.js +0 -9
- package/dist-cjs/types.js.map +0 -1
- package/dist-cjs/utils/retry.d.ts +0 -11
- package/dist-cjs/utils/retry.js +0 -170
- package/dist-cjs/utils/retry.js.map +0 -1
- package/dist-cjs/utils/safe-parse-json.d.ts +0 -26
- package/dist-cjs/utils/safe-parse-json.js +0 -165
- package/dist-cjs/utils/safe-parse-json.js.map +0 -1
- package/dist-cjs/utils/url.d.ts +0 -10
- package/dist-cjs/utils/url.js +0 -24
- package/dist-cjs/utils/url.js.map +0 -1
- package/src/__tests__/web-fetch-download.test.ts +0 -433
- package/src/__tests__/web-tools.test.ts +0 -619
- package/src/ask-user-interaction.ts +0 -33
- package/src/cache/web-cache.ts +0 -110
- package/src/definitions/arion.ts +0 -118
- package/src/definitions/browser/browser.ts +0 -502
- package/src/definitions/browser/index.ts +0 -5
- package/src/definitions/browser/pw-downloads.ts +0 -142
- package/src/definitions/browser/pw-interactions.ts +0 -282
- package/src/definitions/browser/pw-responses.ts +0 -98
- package/src/definitions/browser/pw-session.ts +0 -405
- package/src/definitions/browser/pw-shared.ts +0 -85
- package/src/definitions/browser/pw-snapshot.ts +0 -383
- package/src/definitions/browser/pw-state.ts +0 -101
- package/src/definitions/browser/types.ts +0 -203
- package/src/definitions/code-intelligence.ts +0 -526
- package/src/definitions/core.ts +0 -118
- package/src/definitions/delegation.ts +0 -567
- package/src/definitions/deploy.ts +0 -73
- package/src/definitions/filesystem.ts +0 -217
- package/src/definitions/frg.ts +0 -67
- package/src/definitions/index.ts +0 -28
- package/src/definitions/memory.ts +0 -150
- package/src/definitions/messaging.ts +0 -734
- package/src/definitions/meta.ts +0 -392
- package/src/definitions/network.ts +0 -179
- package/src/definitions/outlook.ts +0 -318
- package/src/definitions/patch/apply-patch.ts +0 -235
- package/src/definitions/patch/fuzzy-match.ts +0 -217
- package/src/definitions/patch/index.ts +0 -1
- package/src/definitions/patch/patch-parser.ts +0 -297
- package/src/definitions/patch/sandbox-paths.ts +0 -129
- package/src/definitions/process/index.ts +0 -5
- package/src/definitions/process/process-registry.ts +0 -303
- package/src/definitions/process/process.ts +0 -456
- package/src/definitions/process/pty-keys.ts +0 -298
- package/src/definitions/process/session-slug.ts +0 -147
- package/src/definitions/quip.ts +0 -225
- package/src/definitions/search.ts +0 -67
- package/src/definitions/session-history.ts +0 -79
- package/src/definitions/shell.ts +0 -202
- package/src/definitions/slack.ts +0 -211
- package/src/definitions/web.ts +0 -119
- package/src/executors/apply-patch.ts +0 -1035
- package/src/executors/arion.ts +0 -199
- package/src/executors/code-intelligence.ts +0 -1179
- package/src/executors/deploy.ts +0 -1066
- package/src/executors/filesystem.ts +0 -1428
- package/src/executors/frg-freshness.ts +0 -743
- package/src/executors/frg.ts +0 -394
- package/src/executors/index.ts +0 -280
- package/src/executors/learning-meta.ts +0 -1367
- package/src/executors/lsp-client.ts +0 -355
- package/src/executors/memory.ts +0 -978
- package/src/executors/meta.ts +0 -293
- package/src/executors/process-registry.ts +0 -570
- package/src/executors/pty-session-store.ts +0 -43
- package/src/executors/pty.ts +0 -342
- package/src/executors/restart.ts +0 -133
- package/src/executors/search-freshness.ts +0 -249
- package/src/executors/search-types.ts +0 -98
- package/src/executors/search.ts +0 -89
- package/src/executors/self-diagnose.ts +0 -552
- package/src/executors/session-history.ts +0 -435
- package/src/executors/shell-safety.ts +0 -519
- package/src/executors/shell.ts +0 -1243
- package/src/executors/utils.ts +0 -40
- package/src/executors/web.ts +0 -786
- package/src/extraction/content-extraction.ts +0 -281
- package/src/extraction/index.ts +0 -5
- package/src/headless-control-contract.ts +0 -1149
- package/src/index.ts +0 -788
- package/src/local-control-http-auth.ts +0 -2
- package/src/mcp/client.ts +0 -218
- package/src/mcp/connection.ts +0 -568
- package/src/mcp/index.ts +0 -11
- package/src/mcp/jsonrpc.ts +0 -195
- package/src/mcp/types.ts +0 -199
- package/src/network-control-adapter.ts +0 -88
- package/src/network-runtime/address-types.ts +0 -218
- package/src/network-runtime/db-owner-fencing.ts +0 -91
- package/src/network-runtime/delivery-receipts.ts +0 -372
- package/src/network-runtime/direct-endpoint-authority.ts +0 -35
- package/src/network-runtime/index.ts +0 -316
- package/src/network-runtime/local-control-contract.ts +0 -784
- package/src/network-runtime/node-store-contract.ts +0 -46
- package/src/network-runtime/pair-route-contract.ts +0 -97
- package/src/network-runtime/peer-capabilities.ts +0 -48
- package/src/network-runtime/peer-principal-ref.ts +0 -20
- package/src/network-runtime/peer-state-machine.ts +0 -160
- package/src/network-runtime/protocol-schemas.ts +0 -265
- package/src/network-runtime/runtime-bootstrap-contract.ts +0 -83
- package/src/outlook/desktop-session.ts +0 -409
- package/src/policy.ts +0 -171
- package/src/providers/brave.ts +0 -80
- package/src/providers/duckduckgo.ts +0 -199
- package/src/providers/exa.ts +0 -85
- package/src/providers/firecrawl.ts +0 -77
- package/src/providers/index.ts +0 -8
- package/src/providers/jina.ts +0 -70
- package/src/providers/router.ts +0 -121
- package/src/providers/search-provider.ts +0 -74
- package/src/providers/tavily.ts +0 -74
- package/src/quip/desktop-session.ts +0 -435
- package/src/registry/index.ts +0 -1
- package/src/registry/registry.ts +0 -905
- package/src/runtime-socket-local-control-client.ts +0 -632
- package/src/security/dns-normalization.ts +0 -34
- package/src/security/dns-pinning.ts +0 -138
- package/src/security/external-content.ts +0 -129
- package/src/security/ssrf.ts +0 -207
- package/src/slack/desktop-session.ts +0 -493
- package/src/tool-factory.ts +0 -91
- package/src/types.ts +0 -1341
- package/src/utils/retry.ts +0 -163
- package/src/utils/safe-parse-json.ts +0 -176
- package/src/utils/url.ts +0 -20
- package/tests/benchmarks/registry.bench.ts +0 -57
- package/tests/cache/web-cache.test.ts +0 -147
- package/tests/critical-integration.test.ts +0 -1465
- package/tests/definitions/apply-patch.test.ts +0 -586
- package/tests/definitions/browser.test.ts +0 -495
- package/tests/definitions/delegation-pause-resume.test.ts +0 -758
- package/tests/definitions/execution.test.ts +0 -671
- package/tests/definitions/messaging-inbox-scope.test.ts +0 -229
- package/tests/definitions/messaging.test.ts +0 -1468
- package/tests/definitions/outlook.test.ts +0 -30
- package/tests/definitions/process.test.ts +0 -469
- package/tests/definitions/slack.test.ts +0 -28
- package/tests/definitions/tool-inventory.test.ts +0 -218
- package/tests/e2e/delegation-quest-orchestration.e2e.test.ts +0 -433
- package/tests/e2e/memory-tool-discovery-contract.e2e.test.ts +0 -81
- package/tests/executors/apply-patch.test.ts +0 -538
- package/tests/executors/arion.test.ts +0 -309
- package/tests/executors/conversation-primitives.test.ts +0 -250
- package/tests/executors/deploy.test.ts +0 -746
- package/tests/executors/filesystem-tools.test.ts +0 -357
- package/tests/executors/filesystem.test.ts +0 -959
- package/tests/executors/frg-freshness.test.ts +0 -136
- package/tests/executors/frg-merge.test.ts +0 -70
- package/tests/executors/frg-session-content.test.ts +0 -40
- package/tests/executors/frg.test.ts +0 -56
- package/tests/executors/memory-bugfixes.test.ts +0 -257
- package/tests/executors/memory-real-memoria.integration.test.ts +0 -316
- package/tests/executors/memory.test.ts +0 -853
- package/tests/executors/meta-tools.test.ts +0 -411
- package/tests/executors/meta.test.ts +0 -683
- package/tests/executors/path-containment.test.ts +0 -51
- package/tests/executors/process-registry.test.ts +0 -505
- package/tests/executors/pty.test.ts +0 -664
- package/tests/executors/quest-security.test.ts +0 -249
- package/tests/executors/read-file-media.test.ts +0 -230
- package/tests/executors/recall-knowledge-schema.test.ts +0 -209
- package/tests/executors/recall-tags.test.ts +0 -278
- package/tests/executors/remember-null-safety.contract.test.ts +0 -41
- package/tests/executors/restart.test.ts +0 -67
- package/tests/executors/search-unified.test.ts +0 -381
- package/tests/executors/session-history.test.ts +0 -340
- package/tests/executors/session-transcript.test.ts +0 -561
- package/tests/executors/shell-abort.test.ts +0 -416
- package/tests/executors/shell-env-blocklist.test.ts +0 -648
- package/tests/executors/shell-env-process.test.ts +0 -245
- package/tests/executors/shell-process-registry.test.ts +0 -334
- package/tests/executors/shell-tools.test.ts +0 -393
- package/tests/executors/shell.test.ts +0 -690
- package/tests/executors/web-abort-vs-timeout.test.ts +0 -213
- package/tests/executors/web-integration.test.ts +0 -633
- package/tests/executors/web-symlink.test.ts +0 -18
- package/tests/executors/web.test.ts +0 -1400
- package/tests/executors/write-stdin.test.ts +0 -145
- package/tests/extraction/content-extraction.test.ts +0 -153
- package/tests/guards/tools-default-test-lane.integration.test.ts +0 -21
- package/tests/guards/tools-package-test-commands.e2e.test.ts +0 -43
- package/tests/guards/tools-test-lane-manifest.contract.test.ts +0 -76
- package/tests/guards/tools-vitest-workspace-alias.contract.test.ts +0 -63
- package/tests/helpers/async-waits.ts +0 -53
- package/tests/integration/headless-control-contract.integration.test.ts +0 -153
- package/tests/integration/memory-tool-schema-parity.integration.test.ts +0 -67
- package/tests/integration/meta-tools-round-trip.integration.test.ts +0 -506
- package/tests/integration/quest-round-trip.test.ts +0 -303
- package/tests/integration/registry-executor-flow.test.ts +0 -85
- package/tests/integration.test.ts +0 -177
- package/tests/loading-tier.test.ts +0 -126
- package/tests/mcp/client-reconnect.test.ts +0 -267
- package/tests/mcp/connection.test.ts +0 -846
- package/tests/mcp/injectable-logger.test.ts +0 -83
- package/tests/mcp/jsonrpc.test.ts +0 -109
- package/tests/mcp/lifecycle.test.ts +0 -879
- package/tests/network-runtime/address-types.contract.test.ts +0 -143
- package/tests/network-runtime/continuity-bind-schema.contract.test.ts +0 -203
- package/tests/network-runtime/local-control-contract.test.ts +0 -869
- package/tests/network-runtime/local-control-invite-token.contract.test.ts +0 -146
- package/tests/network-runtime/node-store-contract.test.ts +0 -11
- package/tests/network-runtime/pair-protocol-nodeid.contract.test.ts +0 -15
- package/tests/network-runtime/peer-state-machine.contract.test.ts +0 -148
- package/tests/network-runtime/protocol-schemas.contract.test.ts +0 -512
- package/tests/network-runtime/relay-pending-nodeid.contract.test.ts +0 -62
- package/tests/network-runtime/runtime-bootstrap-contract.test.ts +0 -227
- package/tests/network-runtime/runtime-socket-local-control-client.test.ts +0 -621
- package/tests/network-runtime/wait-for-message-script.test.ts +0 -288
- package/tests/parallel.test.ts +0 -71
- package/tests/policy.test.ts +0 -184
- package/tests/print-default-test-lane.ts +0 -14
- package/tests/print-test-lane-manifest.ts +0 -22
- package/tests/providers/brave.test.ts +0 -159
- package/tests/providers/duckduckgo.test.ts +0 -207
- package/tests/providers/exa.test.ts +0 -175
- package/tests/providers/firecrawl.test.ts +0 -168
- package/tests/providers/jina.test.ts +0 -144
- package/tests/providers/router.test.ts +0 -328
- package/tests/providers/tavily.test.ts +0 -165
- package/tests/registry/discovery.test.ts +0 -154
- package/tests/registry/injectable-logger.test.ts +0 -230
- package/tests/registry/input-validation.test.ts +0 -361
- package/tests/registry/interface-completeness.test.ts +0 -85
- package/tests/registry/mcp-integration.test.ts +0 -103
- package/tests/registry/mcp-read-only-hint.test.ts +0 -60
- package/tests/registry/memoria-discovery.test.ts +0 -390
- package/tests/registry/nested-validation.test.ts +0 -283
- package/tests/registry/pseudo-tool-filtering.test.ts +0 -258
- package/tests/registry/registration-lifecycle.test.ts +0 -133
- package/tests/registry-validation.test.ts +0 -424
- package/tests/registry.test.ts +0 -460
- package/tests/security/dns-pinning.test.ts +0 -162
- package/tests/security/external-content.test.ts +0 -144
- package/tests/security/ssrf.test.ts +0 -118
- package/tests/shell-safety-integration.test.ts +0 -32
- package/tests/shell-safety.test.ts +0 -365
- package/tests/slack/desktop-session.test.ts +0 -50
- package/tests/test-lane-manifest.ts +0 -440
- package/tests/test-utils.ts +0 -27
- package/tests/tool-factory.test.ts +0 -188
- package/tests/utils/retry.test.ts +0 -231
- package/tests/utils/url.test.ts +0 -63
- package/tsconfig.cjs.json +0 -24
- package/tsconfig.json +0 -12
- package/vitest.config.ts +0 -55
- package/vitest.e2e.config.ts +0 -24
- package/vitest.integration.config.ts +0 -24
- package/vitest.native.config.ts +0 -24
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @aria/tools - ToolRegistry.execute() input validation tests
|
|
3
|
-
*
|
|
4
|
-
* Verifies that ToolRegistry.execute() validates input against the tool's
|
|
5
|
-
* JSON Schema before delegating to the handler, and that tools without
|
|
6
|
-
* schemas skip validation.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { describe, it, expect, vi } from "vitest";
|
|
10
|
-
import { ToolRegistry, validateToolInput } from "../../src/registry/index.js";
|
|
11
|
-
import type { Tool, ToolContext, ToolResult } from "../../src/types.js";
|
|
12
|
-
import type { JSONSchema7 } from "json-schema";
|
|
13
|
-
|
|
14
|
-
// Helper to create a minimal ToolContext
|
|
15
|
-
const createContext = (): ToolContext => ({
|
|
16
|
-
workingDir: "/tmp/test",
|
|
17
|
-
env: {},
|
|
18
|
-
confirm: async () => true,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
/** Helper to build a simple tool with a JSON Schema */
|
|
22
|
-
function makeTool(overrides: Partial<Tool> = {}): Tool {
|
|
23
|
-
return {
|
|
24
|
-
name: "test_tool",
|
|
25
|
-
description: "A test tool",
|
|
26
|
-
category: "meta",
|
|
27
|
-
parameters: {
|
|
28
|
-
type: "object",
|
|
29
|
-
properties: {
|
|
30
|
-
name: { type: "string", description: "The name" },
|
|
31
|
-
count: { type: "number", description: "A count" },
|
|
32
|
-
},
|
|
33
|
-
required: ["name"],
|
|
34
|
-
} as JSONSchema7,
|
|
35
|
-
riskLevel: "safe",
|
|
36
|
-
execute: vi.fn(async () => ({
|
|
37
|
-
success: true,
|
|
38
|
-
message: "executed",
|
|
39
|
-
})),
|
|
40
|
-
...overrides,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
45
|
-
// validateToolInput unit tests
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
|
|
48
|
-
describe("validateToolInput", () => {
|
|
49
|
-
const schema = {
|
|
50
|
-
type: "object",
|
|
51
|
-
properties: {
|
|
52
|
-
name: { type: "string" },
|
|
53
|
-
count: { type: "number" },
|
|
54
|
-
active: { type: "boolean" },
|
|
55
|
-
tags: { type: "array" },
|
|
56
|
-
meta: { type: "object" },
|
|
57
|
-
},
|
|
58
|
-
required: ["name"],
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
it("returns null for valid input", () => {
|
|
62
|
-
expect(validateToolInput({ name: "hello" }, schema)).toBeNull();
|
|
63
|
-
expect(validateToolInput({ name: "hi", count: 5 }, schema)).toBeNull();
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("rejects non-object input", () => {
|
|
67
|
-
expect(validateToolInput("string", schema)).toMatch(/Expected an object/);
|
|
68
|
-
expect(validateToolInput(42, schema)).toMatch(/Expected an object/);
|
|
69
|
-
expect(validateToolInput(true, schema)).toMatch(/Expected an object/);
|
|
70
|
-
expect(validateToolInput([1, 2], schema)).toMatch(/Expected an object.*array/);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("rejects null/undefined when required fields exist", () => {
|
|
74
|
-
expect(validateToolInput(null, schema)).toMatch(/required properties/);
|
|
75
|
-
expect(validateToolInput(undefined, schema)).toMatch(/required properties/);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
it("allows null/undefined when no required fields", () => {
|
|
79
|
-
const noReqSchema = { type: "object", properties: { x: { type: "string" } } };
|
|
80
|
-
expect(validateToolInput(null, noReqSchema)).toBeNull();
|
|
81
|
-
expect(validateToolInput(undefined, noReqSchema)).toBeNull();
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("detects missing required properties", () => {
|
|
85
|
-
expect(validateToolInput({}, schema)).toMatch(/Missing required.*name/);
|
|
86
|
-
expect(validateToolInput({ count: 3 }, schema)).toMatch(/Missing required.*name/);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it("detects wrong property type (string vs number)", () => {
|
|
90
|
-
expect(validateToolInput({ name: 123 }, schema)).toMatch(
|
|
91
|
-
/Property "name" expected type string; got number/,
|
|
92
|
-
);
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it("detects wrong property type (number vs string)", () => {
|
|
96
|
-
expect(validateToolInput({ name: "ok", count: "five" }, schema)).toMatch(
|
|
97
|
-
/Property "count" expected type number; got string/,
|
|
98
|
-
);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it("validates boolean type", () => {
|
|
102
|
-
expect(validateToolInput({ name: "ok", active: "yes" }, schema)).toMatch(
|
|
103
|
-
/Property "active" expected type boolean; got string/,
|
|
104
|
-
);
|
|
105
|
-
expect(validateToolInput({ name: "ok", active: true }, schema)).toBeNull();
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("validates array type", () => {
|
|
109
|
-
expect(validateToolInput({ name: "ok", tags: "not-array" }, schema)).toMatch(
|
|
110
|
-
/Property "tags" expected type array; got string/,
|
|
111
|
-
);
|
|
112
|
-
expect(validateToolInput({ name: "ok", tags: [1, 2] }, schema)).toBeNull();
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
it("validates object type (nested)", () => {
|
|
116
|
-
expect(validateToolInput({ name: "ok", meta: "nope" }, schema)).toMatch(
|
|
117
|
-
/Property "meta" expected type object; got string/,
|
|
118
|
-
);
|
|
119
|
-
expect(validateToolInput({ name: "ok", meta: { a: 1 } }, schema)).toBeNull();
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it("handles integer type", () => {
|
|
123
|
-
const intSchema = {
|
|
124
|
-
type: "object",
|
|
125
|
-
properties: { n: { type: "integer" } },
|
|
126
|
-
required: ["n"],
|
|
127
|
-
};
|
|
128
|
-
expect(validateToolInput({ n: 5 }, intSchema)).toBeNull();
|
|
129
|
-
expect(validateToolInput({ n: 5.5 }, intSchema)).toMatch(
|
|
130
|
-
/Property "n" expected type integer; got number/,
|
|
131
|
-
);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
it("handles union types (e.g. ['string', 'null'])", () => {
|
|
135
|
-
const unionSchema = {
|
|
136
|
-
type: "object",
|
|
137
|
-
properties: { val: { type: ["string", "null"] } },
|
|
138
|
-
};
|
|
139
|
-
expect(validateToolInput({ val: "hi" }, unionSchema)).toBeNull();
|
|
140
|
-
expect(validateToolInput({ val: null }, unionSchema)).toBeNull();
|
|
141
|
-
expect(validateToolInput({ val: 42 }, unionSchema)).toMatch(
|
|
142
|
-
/Property "val" expected type string \| null; got number/,
|
|
143
|
-
);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it("skips validation for non-object schemas", () => {
|
|
147
|
-
expect(validateToolInput("anything", { type: "string" })).toBeNull();
|
|
148
|
-
expect(validateToolInput(42, { type: "number" })).toBeNull();
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it("skips property type check when schema has no type", () => {
|
|
152
|
-
const noTypeSchema = {
|
|
153
|
-
type: "object",
|
|
154
|
-
properties: { data: { description: "anything goes" } },
|
|
155
|
-
required: ["data"],
|
|
156
|
-
};
|
|
157
|
-
expect(validateToolInput({ data: 42 }, noTypeSchema)).toBeNull();
|
|
158
|
-
expect(validateToolInput({ data: "ok" }, noTypeSchema)).toBeNull();
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
it("ignores undeclared extra properties", () => {
|
|
162
|
-
expect(validateToolInput({ name: "ok", extra: true }, schema)).toBeNull();
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
it("validates enum constraints", () => {
|
|
166
|
-
const enumSchema = {
|
|
167
|
-
type: "object",
|
|
168
|
-
properties: {
|
|
169
|
-
topic: { type: "string", enum: ["general", "news"] },
|
|
170
|
-
},
|
|
171
|
-
required: ["topic"],
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
expect(validateToolInput({ topic: "general" }, enumSchema)).toBeNull();
|
|
175
|
-
expect(validateToolInput({ topic: "sports" }, enumSchema)).toMatch(
|
|
176
|
-
/Property "topic" must be one of: general, news/,
|
|
177
|
-
);
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
it("validates string pattern constraints", () => {
|
|
181
|
-
const patternSchema = {
|
|
182
|
-
type: "object",
|
|
183
|
-
properties: {
|
|
184
|
-
slug: { type: "string", pattern: "^[a-z0-9-]+$" },
|
|
185
|
-
},
|
|
186
|
-
required: ["slug"],
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
expect(validateToolInput({ slug: "hello-world-2" }, patternSchema)).toBeNull();
|
|
190
|
-
expect(validateToolInput({ slug: "Hello World" }, patternSchema)).toMatch(
|
|
191
|
-
/Property "slug" does not match required pattern/,
|
|
192
|
-
);
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it("validates numeric minimum/maximum bounds", () => {
|
|
196
|
-
const boundsSchema = {
|
|
197
|
-
type: "object",
|
|
198
|
-
properties: {
|
|
199
|
-
limit: { type: "number", minimum: 1, maximum: 10 },
|
|
200
|
-
},
|
|
201
|
-
required: ["limit"],
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
expect(validateToolInput({ limit: 5 }, boundsSchema)).toBeNull();
|
|
205
|
-
expect(validateToolInput({ limit: 0 }, boundsSchema)).toMatch(
|
|
206
|
-
/Property "limit" must be >= 1/,
|
|
207
|
-
);
|
|
208
|
-
expect(validateToolInput({ limit: 11 }, boundsSchema)).toMatch(
|
|
209
|
-
/Property "limit" must be <= 10/,
|
|
210
|
-
);
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
it("validates string length bounds", () => {
|
|
214
|
-
const lengthSchema = {
|
|
215
|
-
type: "object",
|
|
216
|
-
properties: {
|
|
217
|
-
name: { type: "string", minLength: 2, maxLength: 5 },
|
|
218
|
-
},
|
|
219
|
-
required: ["name"],
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
expect(validateToolInput({ name: "aria" }, lengthSchema)).toBeNull();
|
|
223
|
-
expect(validateToolInput({ name: "a" }, lengthSchema)).toMatch(
|
|
224
|
-
/Property "name" must have length >= 2/,
|
|
225
|
-
);
|
|
226
|
-
expect(validateToolInput({ name: "tooling" }, lengthSchema)).toMatch(
|
|
227
|
-
/Property "name" must have length <= 5/,
|
|
228
|
-
);
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
it("validates additionalProperties schema value types", () => {
|
|
232
|
-
const mapSchema = {
|
|
233
|
-
type: "object",
|
|
234
|
-
properties: {
|
|
235
|
-
headers: {
|
|
236
|
-
type: "object",
|
|
237
|
-
additionalProperties: { type: "string" },
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
required: ["headers"],
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
expect(validateToolInput({ headers: { accept: "application/json" } }, mapSchema)).toBeNull();
|
|
244
|
-
expect(validateToolInput({ headers: { retries: 3 } }, mapSchema)).toMatch(
|
|
245
|
-
/Property "headers.retries" expected type string; got number/,
|
|
246
|
-
);
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
// ---------------------------------------------------------------------------
|
|
251
|
-
// ToolRegistry.execute() integration tests
|
|
252
|
-
// ---------------------------------------------------------------------------
|
|
253
|
-
|
|
254
|
-
describe("ToolRegistry.execute()", () => {
|
|
255
|
-
it("passes valid input to the tool handler", async () => {
|
|
256
|
-
const registry = new ToolRegistry();
|
|
257
|
-
const tool = makeTool();
|
|
258
|
-
registry.register(tool);
|
|
259
|
-
|
|
260
|
-
const ctx = createContext();
|
|
261
|
-
const result = await registry.execute("test_tool", { name: "Alice" }, ctx);
|
|
262
|
-
|
|
263
|
-
expect(result.success).toBe(true);
|
|
264
|
-
expect(result.message).toBe("executed");
|
|
265
|
-
expect(tool.execute).toHaveBeenCalledWith({ name: "Alice" }, ctx);
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
it("returns error for unregistered tool", async () => {
|
|
269
|
-
const registry = new ToolRegistry();
|
|
270
|
-
const result = await registry.execute("nonexistent", {}, createContext());
|
|
271
|
-
|
|
272
|
-
expect(result.success).toBe(false);
|
|
273
|
-
expect(result.message).toMatch(/not registered/);
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
it("returns validation error for missing required property", async () => {
|
|
277
|
-
const registry = new ToolRegistry();
|
|
278
|
-
const tool = makeTool();
|
|
279
|
-
registry.register(tool);
|
|
280
|
-
|
|
281
|
-
const result = await registry.execute("test_tool", {}, createContext());
|
|
282
|
-
|
|
283
|
-
expect(result.success).toBe(false);
|
|
284
|
-
expect(result.message).toMatch(/Invalid input.*Missing required.*name/);
|
|
285
|
-
expect(tool.execute).not.toHaveBeenCalled();
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
it("returns validation error for wrong property type", async () => {
|
|
289
|
-
const registry = new ToolRegistry();
|
|
290
|
-
const tool = makeTool();
|
|
291
|
-
registry.register(tool);
|
|
292
|
-
|
|
293
|
-
const result = await registry.execute("test_tool", { name: 42 }, createContext());
|
|
294
|
-
|
|
295
|
-
expect(result.success).toBe(false);
|
|
296
|
-
expect(result.message).toMatch(/Invalid input.*Property "name" expected type string/);
|
|
297
|
-
expect(tool.execute).not.toHaveBeenCalled();
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
it("returns validation error for non-object input when required fields exist", async () => {
|
|
301
|
-
const registry = new ToolRegistry();
|
|
302
|
-
const tool = makeTool();
|
|
303
|
-
registry.register(tool);
|
|
304
|
-
|
|
305
|
-
const result = await registry.execute("test_tool", "not an object", createContext());
|
|
306
|
-
|
|
307
|
-
expect(result.success).toBe(false);
|
|
308
|
-
expect(result.message).toMatch(/Invalid input.*Expected an object/);
|
|
309
|
-
expect(tool.execute).not.toHaveBeenCalled();
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
it("skips validation for tool without parameters schema", async () => {
|
|
313
|
-
const registry = new ToolRegistry();
|
|
314
|
-
const handler = vi.fn(
|
|
315
|
-
async (): Promise<ToolResult> => ({
|
|
316
|
-
success: true,
|
|
317
|
-
message: "no-schema ok",
|
|
318
|
-
}),
|
|
319
|
-
);
|
|
320
|
-
const tool: Tool = {
|
|
321
|
-
name: "no_schema_tool",
|
|
322
|
-
description: "Tool with empty schema",
|
|
323
|
-
category: "meta",
|
|
324
|
-
parameters: {} as JSONSchema7, // Empty schema (no type field)
|
|
325
|
-
riskLevel: "safe",
|
|
326
|
-
execute: handler,
|
|
327
|
-
};
|
|
328
|
-
registry.register(tool);
|
|
329
|
-
|
|
330
|
-
const result = await registry.execute("no_schema_tool", { anything: true }, createContext());
|
|
331
|
-
|
|
332
|
-
expect(result.success).toBe(true);
|
|
333
|
-
expect(handler).toHaveBeenCalledWith({ anything: true }, expect.any(Object));
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
it("passes optional properties correctly", async () => {
|
|
337
|
-
const registry = new ToolRegistry();
|
|
338
|
-
const tool = makeTool();
|
|
339
|
-
registry.register(tool);
|
|
340
|
-
|
|
341
|
-
const result = await registry.execute("test_tool", { name: "Bob", count: 10 }, createContext());
|
|
342
|
-
|
|
343
|
-
expect(result.success).toBe(true);
|
|
344
|
-
expect(tool.execute).toHaveBeenCalledWith({ name: "Bob", count: 10 }, expect.any(Object));
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
it("allows extra properties not in schema", async () => {
|
|
348
|
-
const registry = new ToolRegistry();
|
|
349
|
-
const tool = makeTool();
|
|
350
|
-
registry.register(tool);
|
|
351
|
-
|
|
352
|
-
const result = await registry.execute(
|
|
353
|
-
"test_tool",
|
|
354
|
-
{ name: "ok", extraField: 999 },
|
|
355
|
-
createContext(),
|
|
356
|
-
);
|
|
357
|
-
|
|
358
|
-
expect(result.success).toBe(true);
|
|
359
|
-
expect(tool.execute).toHaveBeenCalled();
|
|
360
|
-
});
|
|
361
|
-
});
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import type {
|
|
3
|
-
ToolRegistry as ToolRegistryInterface,
|
|
4
|
-
Tool,
|
|
5
|
-
ToolCategory,
|
|
6
|
-
} from "../../src/types.js";
|
|
7
|
-
import { ToolRegistry as ToolRegistryClass } from "../../src/registry/registry.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Verify that the ToolRegistry interface declares all methods
|
|
11
|
-
* that the concrete class and executors rely on.
|
|
12
|
-
*/
|
|
13
|
-
describe("ToolRegistry interface completeness", () => {
|
|
14
|
-
it("ToolRegistry interface should declare a list() method", () => {
|
|
15
|
-
// Use a type assertion to verify the interface shape.
|
|
16
|
-
// Create a type helper that extracts the 'list' key from the interface.
|
|
17
|
-
// If 'list' is not on the interface, this will be 'never' at compile time
|
|
18
|
-
// and the runtime assertion will fail.
|
|
19
|
-
type HasList = ToolRegistryInterface extends {
|
|
20
|
-
list: (...args: any[]) => any;
|
|
21
|
-
}
|
|
22
|
-
? true
|
|
23
|
-
: false;
|
|
24
|
-
|
|
25
|
-
// This const is typed as `true` if the interface has list(), `false` otherwise.
|
|
26
|
-
// At runtime, we force-evaluate it.
|
|
27
|
-
const hasListMethod: HasList = true as HasList;
|
|
28
|
-
expect(hasListMethod).toBe(true);
|
|
29
|
-
|
|
30
|
-
// Also verify at runtime by checking the concrete class,
|
|
31
|
-
// which implements the interface
|
|
32
|
-
const concrete = new ToolRegistryClass();
|
|
33
|
-
expect(typeof concrete.list).toBe("function");
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("concrete ToolRegistry class should be assignable to ToolRegistry interface", () => {
|
|
37
|
-
// This assignment verifies structural compatibility.
|
|
38
|
-
// If the interface requires list() but class doesn't have it (or vice versa),
|
|
39
|
-
// TypeScript would flag it.
|
|
40
|
-
const concrete = new ToolRegistryClass();
|
|
41
|
-
const asInterface: ToolRegistryInterface = concrete;
|
|
42
|
-
|
|
43
|
-
// Verify all expected methods exist
|
|
44
|
-
expect(typeof asInterface.get).toBe("function");
|
|
45
|
-
expect(typeof asInterface.getAll).toBe("function");
|
|
46
|
-
expect(typeof asInterface.getToolInfos).toBe("function");
|
|
47
|
-
expect(typeof asInterface.register).toBe("function");
|
|
48
|
-
expect(typeof asInterface.has).toBe("function");
|
|
49
|
-
|
|
50
|
-
// This is the critical check — list() should be on the interface
|
|
51
|
-
// After the fix, this should be typed and callable
|
|
52
|
-
expect(typeof (asInterface as any).list).toBe("function");
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it("list() should accept optional category filter and return Tool[]", () => {
|
|
56
|
-
const concrete = new ToolRegistryClass();
|
|
57
|
-
|
|
58
|
-
// Register some tools
|
|
59
|
-
concrete.register({
|
|
60
|
-
name: "tool_a",
|
|
61
|
-
description: "Tool A",
|
|
62
|
-
category: "filesystem" as ToolCategory,
|
|
63
|
-
parameters: { type: "object", properties: {} },
|
|
64
|
-
riskLevel: "safe",
|
|
65
|
-
execute: async () => ({ success: true, message: "ok" }),
|
|
66
|
-
});
|
|
67
|
-
concrete.register({
|
|
68
|
-
name: "tool_b",
|
|
69
|
-
description: "Tool B",
|
|
70
|
-
category: "shell" as ToolCategory,
|
|
71
|
-
parameters: { type: "object", properties: {} },
|
|
72
|
-
riskLevel: "safe",
|
|
73
|
-
execute: async () => ({ success: true, message: "ok" }),
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// list() without category returns all tools
|
|
77
|
-
const all = concrete.list();
|
|
78
|
-
expect(all).toHaveLength(2);
|
|
79
|
-
|
|
80
|
-
// list() with category filters
|
|
81
|
-
const fsTools = concrete.list("filesystem" as ToolCategory);
|
|
82
|
-
expect(fsTools).toHaveLength(1);
|
|
83
|
-
expect(fsTools[0].name).toBe("tool_a");
|
|
84
|
-
});
|
|
85
|
-
});
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
2
|
-
import { ToolRegistry } from "../../src/registry/registry.js";
|
|
3
|
-
import type { MCPServerConfig } from "../../src/mcp/types.js";
|
|
4
|
-
|
|
5
|
-
describe("Tool Registry - MCP Integration", () => {
|
|
6
|
-
let registry: ToolRegistry;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
registry = new ToolRegistry();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it("should connect to MCP server and discover tools", async () => {
|
|
13
|
-
const mockServerConfig: MCPServerConfig = {
|
|
14
|
-
name: "test-server",
|
|
15
|
-
command: "node",
|
|
16
|
-
args: ["server.js"],
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
// Mock the MCPClient internally by testing the actual registry method
|
|
20
|
-
// This test validates that connectMCP accepts config and attempts connection
|
|
21
|
-
const result = await registry.connectMCP([mockServerConfig]);
|
|
22
|
-
|
|
23
|
-
// Should return counts even if no actual server connected
|
|
24
|
-
expect(result).toHaveProperty("tools");
|
|
25
|
-
expect(result).toHaveProperty("resources");
|
|
26
|
-
expect(result).toHaveProperty("prompts");
|
|
27
|
-
expect(typeof result.tools).toBe("number");
|
|
28
|
-
expect(typeof result.resources).toBe("number");
|
|
29
|
-
expect(typeof result.prompts).toBe("number");
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it("should handle MCP toolsChanged events", async () => {
|
|
33
|
-
// Create a mock MCP client that simulates tool changes
|
|
34
|
-
const mockMCPClient = {
|
|
35
|
-
connect: vi.fn().mockResolvedValue(undefined),
|
|
36
|
-
listAllTools: vi.fn().mockResolvedValue([
|
|
37
|
-
{
|
|
38
|
-
name: "dynamic_tool",
|
|
39
|
-
description: "Dynamically added",
|
|
40
|
-
inputSchema: { type: "object", properties: {} },
|
|
41
|
-
server: "test-server",
|
|
42
|
-
},
|
|
43
|
-
]),
|
|
44
|
-
listAllResources: vi.fn().mockResolvedValue([]),
|
|
45
|
-
listAllPrompts: vi.fn().mockResolvedValue([]),
|
|
46
|
-
on: vi.fn((event: string, handler: Function) => {
|
|
47
|
-
// Store handler for manual triggering
|
|
48
|
-
if (event === "toolsChanged") {
|
|
49
|
-
// Simulate toolsChanged event after a delay
|
|
50
|
-
setTimeout(() => handler("test-server"), 10);
|
|
51
|
-
}
|
|
52
|
-
}),
|
|
53
|
-
disconnectAll: vi.fn(),
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// Create registry with mocked client
|
|
57
|
-
const testRegistry = new ToolRegistry();
|
|
58
|
-
|
|
59
|
-
// Replace the internal MCP client creation with our mock
|
|
60
|
-
// Since we can't easily inject the mock, we test the event handling logic
|
|
61
|
-
// by verifying the registry's behavior after tool changes
|
|
62
|
-
|
|
63
|
-
const mockConfig: MCPServerConfig = {
|
|
64
|
-
name: "test-server",
|
|
65
|
-
command: "node",
|
|
66
|
-
args: ["test.js"],
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// Connect and verify initial state
|
|
70
|
-
await testRegistry.connectMCP([mockConfig]);
|
|
71
|
-
|
|
72
|
-
// Wait for any async event handling
|
|
73
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
74
|
-
|
|
75
|
-
// The registry should handle toolsChanged events by refreshing tools
|
|
76
|
-
// We can verify this by checking if the registry maintains tool consistency
|
|
77
|
-
expect(testRegistry).toBeDefined();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it("should clean up MCP tools on disconnect", async () => {
|
|
81
|
-
const mockConfig: MCPServerConfig = {
|
|
82
|
-
name: "test-server",
|
|
83
|
-
command: "node",
|
|
84
|
-
args: ["test.js"],
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
// Connect to MCP server
|
|
88
|
-
await registry.connectMCP([mockConfig]);
|
|
89
|
-
|
|
90
|
-
// Check initial state - even if connection failed, registry should be clean
|
|
91
|
-
const sizeBefore = registry.size;
|
|
92
|
-
|
|
93
|
-
// Disconnect should remove all MCP tools
|
|
94
|
-
await registry.disconnectMCP();
|
|
95
|
-
|
|
96
|
-
// After disconnect, all mcp__ prefixed tools should be removed
|
|
97
|
-
const toolsAfter = registry.list();
|
|
98
|
-
const mcpTools = toolsAfter.filter((t) => t.name.startsWith("mcp__"));
|
|
99
|
-
|
|
100
|
-
expect(mcpTools).toHaveLength(0);
|
|
101
|
-
expect(registry.getMCPClient()).toBeUndefined();
|
|
102
|
-
});
|
|
103
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { ToolRegistry } from "../../src/registry/registry.js";
|
|
3
|
-
|
|
4
|
-
const mockConnect = vi.fn();
|
|
5
|
-
const mockListAllTools = vi.fn();
|
|
6
|
-
const mockListAllResources = vi.fn();
|
|
7
|
-
const mockListAllPrompts = vi.fn();
|
|
8
|
-
const mockOn = vi.fn();
|
|
9
|
-
const mockDisconnectAll = vi.fn();
|
|
10
|
-
|
|
11
|
-
vi.mock("../../src/mcp/client.js", () => ({
|
|
12
|
-
MCPClient: class MockMCPClient {
|
|
13
|
-
connect = mockConnect;
|
|
14
|
-
listAllTools = mockListAllTools;
|
|
15
|
-
listAllResources = mockListAllResources;
|
|
16
|
-
listAllPrompts = mockListAllPrompts;
|
|
17
|
-
on = mockOn;
|
|
18
|
-
disconnectAll = mockDisconnectAll;
|
|
19
|
-
},
|
|
20
|
-
}));
|
|
21
|
-
|
|
22
|
-
describe("MCP read-only classification", () => {
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
vi.clearAllMocks();
|
|
25
|
-
mockConnect.mockResolvedValue(undefined);
|
|
26
|
-
mockListAllResources.mockResolvedValue([]);
|
|
27
|
-
mockListAllPrompts.mockResolvedValue([]);
|
|
28
|
-
mockOn.mockImplementation(() => undefined);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("trusts MCP readOnlyHint annotation instead of tool-name prefixes", async () => {
|
|
32
|
-
mockListAllTools.mockResolvedValue([
|
|
33
|
-
{
|
|
34
|
-
server: "test",
|
|
35
|
-
name: "list_users",
|
|
36
|
-
description: "Can write despite list_ prefix",
|
|
37
|
-
inputSchema: { type: "object", properties: {} },
|
|
38
|
-
annotations: { readOnlyHint: false },
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
server: "test",
|
|
42
|
-
name: "mutate_safely",
|
|
43
|
-
description: "Actually read only",
|
|
44
|
-
inputSchema: { type: "object", properties: {} },
|
|
45
|
-
annotations: { readOnlyHint: true },
|
|
46
|
-
},
|
|
47
|
-
]);
|
|
48
|
-
|
|
49
|
-
const registry = new ToolRegistry();
|
|
50
|
-
await registry.connectMCP([{ name: "test", command: "node", args: ["server.js"] }]);
|
|
51
|
-
|
|
52
|
-
const prefixedTool = registry.get("mcp__test__list_users");
|
|
53
|
-
const hintedTool = registry.get("mcp__test__mutate_safely");
|
|
54
|
-
|
|
55
|
-
expect(prefixedTool).toBeDefined();
|
|
56
|
-
expect(prefixedTool?.isReadOnly).toBe(false);
|
|
57
|
-
expect(hintedTool).toBeDefined();
|
|
58
|
-
expect(hintedTool?.isReadOnly).toBe(true);
|
|
59
|
-
});
|
|
60
|
-
});
|