@aria-cli/tools 1.0.8 → 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 +9 -6
- 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,664 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @aria/tools - PTY executor tests
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { describe, it, expect, afterEach } from "vitest";
|
|
6
|
-
import * as fs from "node:fs/promises";
|
|
7
|
-
import * as path from "node:path";
|
|
8
|
-
import * as os from "node:os";
|
|
9
|
-
import {
|
|
10
|
-
PTYSession,
|
|
11
|
-
PTYOptions,
|
|
12
|
-
PTYTimeoutError,
|
|
13
|
-
PTYError,
|
|
14
|
-
createPTYSession,
|
|
15
|
-
runInPTY,
|
|
16
|
-
} from "../../src/executors/pty.js";
|
|
17
|
-
|
|
18
|
-
// Helper to create a unique temp directory for each test
|
|
19
|
-
const createTempDir = async (): Promise<string> => {
|
|
20
|
-
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "aria-pty-test-"));
|
|
21
|
-
return fs.realpath(tempDir);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Helper to clean up temp directory
|
|
25
|
-
const cleanupTempDir = async (dir: string): Promise<void> => {
|
|
26
|
-
await fs.rm(dir, { recursive: true, force: true });
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
// Check if PTY is available in this environment
|
|
30
|
-
// Some environments (containers, sandboxes) don't support PTY operations
|
|
31
|
-
let ptyAvailable = true;
|
|
32
|
-
try {
|
|
33
|
-
const nodePty = await import("node-pty");
|
|
34
|
-
const testPty = nodePty.spawn("/bin/echo", ["test"]);
|
|
35
|
-
testPty.kill();
|
|
36
|
-
} catch {
|
|
37
|
-
ptyAvailable = false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
describe.skipIf(!ptyAvailable)("PTY Executors", () => {
|
|
41
|
-
// Track sessions for cleanup
|
|
42
|
-
const sessions: PTYSession[] = [];
|
|
43
|
-
|
|
44
|
-
afterEach(async () => {
|
|
45
|
-
// Clean up all sessions
|
|
46
|
-
for (const session of sessions) {
|
|
47
|
-
try {
|
|
48
|
-
session.close();
|
|
49
|
-
} catch {
|
|
50
|
-
// Ignore cleanup errors
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
sessions.length = 0;
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
describe("createPTYSession", () => {
|
|
57
|
-
it("should create a PTY session with a simple command", async () => {
|
|
58
|
-
const session = await createPTYSession({
|
|
59
|
-
command: "/bin/echo",
|
|
60
|
-
args: ["hello", "world"],
|
|
61
|
-
});
|
|
62
|
-
sessions.push(session);
|
|
63
|
-
|
|
64
|
-
expect(session).toBeInstanceOf(PTYSession);
|
|
65
|
-
expect(session.pid).toBeGreaterThan(0);
|
|
66
|
-
expect(session.cols).toBe(80);
|
|
67
|
-
expect(session.rows).toBe(24);
|
|
68
|
-
|
|
69
|
-
const output = await session.waitForExit(5000);
|
|
70
|
-
expect(output).toContain("hello world");
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("should use custom terminal size", async () => {
|
|
74
|
-
const session = await createPTYSession({
|
|
75
|
-
command: "/bin/echo",
|
|
76
|
-
args: ["test"],
|
|
77
|
-
cols: 120,
|
|
78
|
-
rows: 40,
|
|
79
|
-
});
|
|
80
|
-
sessions.push(session);
|
|
81
|
-
|
|
82
|
-
expect(session.cols).toBe(120);
|
|
83
|
-
expect(session.rows).toBe(40);
|
|
84
|
-
|
|
85
|
-
await session.waitForExit(5000);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
it("should use custom working directory", async () => {
|
|
89
|
-
const tempDir = await createTempDir();
|
|
90
|
-
try {
|
|
91
|
-
const session = await createPTYSession({
|
|
92
|
-
command: "/bin/pwd",
|
|
93
|
-
cwd: tempDir,
|
|
94
|
-
});
|
|
95
|
-
sessions.push(session);
|
|
96
|
-
|
|
97
|
-
const output = await session.waitForExit(5000);
|
|
98
|
-
expect(output).toContain(tempDir);
|
|
99
|
-
} finally {
|
|
100
|
-
await cleanupTempDir(tempDir);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it("should use custom environment variables", async () => {
|
|
105
|
-
const session = await createPTYSession({
|
|
106
|
-
command: "/bin/sh",
|
|
107
|
-
args: ["-c", "echo $MY_TEST_VAR"],
|
|
108
|
-
env: { MY_TEST_VAR: "custom_value_123" },
|
|
109
|
-
});
|
|
110
|
-
sessions.push(session);
|
|
111
|
-
|
|
112
|
-
const output = await session.waitForExit(5000);
|
|
113
|
-
expect(output).toContain("custom_value_123");
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
describe("PTYSession", () => {
|
|
118
|
-
describe("write", () => {
|
|
119
|
-
it("should send input to the terminal", async () => {
|
|
120
|
-
// Use cat which echoes input
|
|
121
|
-
const session = await createPTYSession({
|
|
122
|
-
command: "/bin/cat",
|
|
123
|
-
});
|
|
124
|
-
sessions.push(session);
|
|
125
|
-
|
|
126
|
-
// Write some input
|
|
127
|
-
session.write("test input\n");
|
|
128
|
-
|
|
129
|
-
// Wait for the echo
|
|
130
|
-
const output = await session.waitFor("test input", 2000);
|
|
131
|
-
expect(output).toContain("test input");
|
|
132
|
-
|
|
133
|
-
// Send EOF to close cat
|
|
134
|
-
session.write("\x04"); // Ctrl+D
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
describe("resize", () => {
|
|
139
|
-
it("should resize the terminal", async () => {
|
|
140
|
-
const session = await createPTYSession({
|
|
141
|
-
command: "/bin/sh",
|
|
142
|
-
args: ["-c", "sleep 1"],
|
|
143
|
-
cols: 80,
|
|
144
|
-
rows: 24,
|
|
145
|
-
});
|
|
146
|
-
sessions.push(session);
|
|
147
|
-
|
|
148
|
-
expect(session.cols).toBe(80);
|
|
149
|
-
expect(session.rows).toBe(24);
|
|
150
|
-
|
|
151
|
-
session.resize(120, 40);
|
|
152
|
-
|
|
153
|
-
expect(session.cols).toBe(120);
|
|
154
|
-
expect(session.rows).toBe(40);
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
it("should throw when resizing a closed session", async () => {
|
|
158
|
-
const session = await createPTYSession({
|
|
159
|
-
command: "/bin/echo",
|
|
160
|
-
args: ["done"],
|
|
161
|
-
});
|
|
162
|
-
sessions.push(session);
|
|
163
|
-
|
|
164
|
-
await session.waitForExit(5000);
|
|
165
|
-
|
|
166
|
-
expect(() => session.resize(100, 50)).toThrow(PTYError);
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
describe("waitFor", () => {
|
|
171
|
-
it("should wait for a string pattern", async () => {
|
|
172
|
-
const session = await createPTYSession({
|
|
173
|
-
command: "/bin/sh",
|
|
174
|
-
args: ["-c", 'echo "line1"; sleep 0.1; echo "line2"; sleep 0.1; echo "line3"'],
|
|
175
|
-
});
|
|
176
|
-
sessions.push(session);
|
|
177
|
-
|
|
178
|
-
const output = await session.waitFor("line2", 5000);
|
|
179
|
-
expect(output).toContain("line1");
|
|
180
|
-
expect(output).toContain("line2");
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
it("should wait for a regex pattern", async () => {
|
|
184
|
-
const session = await createPTYSession({
|
|
185
|
-
command: "/bin/sh",
|
|
186
|
-
args: ["-c", 'echo "count: 42"'],
|
|
187
|
-
});
|
|
188
|
-
sessions.push(session);
|
|
189
|
-
|
|
190
|
-
const output = await session.waitFor(/count: \d+/, 5000);
|
|
191
|
-
expect(output).toContain("count: 42");
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
it("should timeout if pattern is not found", async () => {
|
|
195
|
-
// Use sleep to keep process running while we wait for a pattern
|
|
196
|
-
const session = await createPTYSession({
|
|
197
|
-
command: "/bin/sleep",
|
|
198
|
-
args: ["60"],
|
|
199
|
-
});
|
|
200
|
-
sessions.push(session);
|
|
201
|
-
|
|
202
|
-
await expect(session.waitFor("nonexistent_pattern_xyz", 500)).rejects.toThrow(
|
|
203
|
-
PTYTimeoutError,
|
|
204
|
-
);
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it("should error if process exits before pattern found", async () => {
|
|
208
|
-
// Fast command that exits before pattern can be found
|
|
209
|
-
const session = await createPTYSession({
|
|
210
|
-
command: "/bin/echo",
|
|
211
|
-
args: ["hello"],
|
|
212
|
-
});
|
|
213
|
-
sessions.push(session);
|
|
214
|
-
|
|
215
|
-
await expect(session.waitFor("nonexistent_pattern_xyz", 5000)).rejects.toThrow(PTYError);
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
it("should return immediately if pattern already matches", async () => {
|
|
219
|
-
const session = await createPTYSession({
|
|
220
|
-
command: "/bin/echo",
|
|
221
|
-
args: ["quick test"],
|
|
222
|
-
});
|
|
223
|
-
sessions.push(session);
|
|
224
|
-
|
|
225
|
-
// Wait for the echo to complete
|
|
226
|
-
await session.waitForExit(5000);
|
|
227
|
-
|
|
228
|
-
// Pattern should already be in buffer
|
|
229
|
-
const start = Date.now();
|
|
230
|
-
const output = await session.waitFor("quick test", 5000);
|
|
231
|
-
const elapsed = Date.now() - start;
|
|
232
|
-
|
|
233
|
-
expect(output).toContain("quick test");
|
|
234
|
-
expect(elapsed).toBeLessThan(100); // Should be nearly instant
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
describe("waitForExit", () => {
|
|
239
|
-
it("should wait for process to exit", async () => {
|
|
240
|
-
const session = await createPTYSession({
|
|
241
|
-
command: "/bin/sh",
|
|
242
|
-
args: ["-c", 'echo "starting"; sleep 0.1; echo "done"'],
|
|
243
|
-
});
|
|
244
|
-
sessions.push(session);
|
|
245
|
-
|
|
246
|
-
const output = await session.waitForExit(5000);
|
|
247
|
-
|
|
248
|
-
expect(session.isRunning).toBe(false);
|
|
249
|
-
expect(output).toContain("starting");
|
|
250
|
-
expect(output).toContain("done");
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
it("should return exit code", async () => {
|
|
254
|
-
const session = await createPTYSession({
|
|
255
|
-
command: "/bin/sh",
|
|
256
|
-
args: ["-c", "exit 42"],
|
|
257
|
-
});
|
|
258
|
-
sessions.push(session);
|
|
259
|
-
|
|
260
|
-
await session.waitForExit(5000);
|
|
261
|
-
|
|
262
|
-
expect(session.exitCode).toBe(42);
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
it("should timeout if process does not exit", async () => {
|
|
266
|
-
const session = await createPTYSession({
|
|
267
|
-
command: "/bin/sleep",
|
|
268
|
-
args: ["60"],
|
|
269
|
-
});
|
|
270
|
-
sessions.push(session);
|
|
271
|
-
|
|
272
|
-
await expect(session.waitForExit(200)).rejects.toThrow(PTYTimeoutError);
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
it("should return immediately if already exited", async () => {
|
|
276
|
-
const session = await createPTYSession({
|
|
277
|
-
command: "/bin/echo",
|
|
278
|
-
args: ["quick"],
|
|
279
|
-
});
|
|
280
|
-
sessions.push(session);
|
|
281
|
-
|
|
282
|
-
// Wait for first exit
|
|
283
|
-
await session.waitForExit(5000);
|
|
284
|
-
|
|
285
|
-
// Second call should return immediately
|
|
286
|
-
const start = Date.now();
|
|
287
|
-
const output = await session.waitForExit(5000);
|
|
288
|
-
const elapsed = Date.now() - start;
|
|
289
|
-
|
|
290
|
-
expect(output).toContain("quick");
|
|
291
|
-
expect(elapsed).toBeLessThan(100);
|
|
292
|
-
});
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
describe("kill", () => {
|
|
296
|
-
it("should kill the process", async () => {
|
|
297
|
-
const session = await createPTYSession({
|
|
298
|
-
command: "/bin/sleep",
|
|
299
|
-
args: ["60"],
|
|
300
|
-
});
|
|
301
|
-
sessions.push(session);
|
|
302
|
-
|
|
303
|
-
expect(session.isRunning).toBe(true);
|
|
304
|
-
|
|
305
|
-
session.kill();
|
|
306
|
-
await session.waitForExit(5_000);
|
|
307
|
-
|
|
308
|
-
expect(session.isRunning).toBe(false);
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
it("should be safe to call on already dead process", async () => {
|
|
312
|
-
const session = await createPTYSession({
|
|
313
|
-
command: "/bin/echo",
|
|
314
|
-
args: ["quick"],
|
|
315
|
-
});
|
|
316
|
-
sessions.push(session);
|
|
317
|
-
|
|
318
|
-
await session.waitForExit(5000);
|
|
319
|
-
|
|
320
|
-
// Should not throw
|
|
321
|
-
session.kill();
|
|
322
|
-
session.kill();
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
describe("close", () => {
|
|
327
|
-
it("should clean up resources", async () => {
|
|
328
|
-
const session = await createPTYSession({
|
|
329
|
-
command: "/bin/sleep",
|
|
330
|
-
args: ["60"],
|
|
331
|
-
});
|
|
332
|
-
// Don't push to sessions - we'll close manually
|
|
333
|
-
|
|
334
|
-
expect(session.isRunning).toBe(true);
|
|
335
|
-
|
|
336
|
-
session.close();
|
|
337
|
-
await session.waitForExit(2_000);
|
|
338
|
-
|
|
339
|
-
expect(session.isRunning).toBe(false);
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
describe("isRunning", () => {
|
|
344
|
-
it("should return true while process is running", async () => {
|
|
345
|
-
const session = await createPTYSession({
|
|
346
|
-
command: "/bin/sleep",
|
|
347
|
-
args: ["60"],
|
|
348
|
-
});
|
|
349
|
-
sessions.push(session);
|
|
350
|
-
|
|
351
|
-
expect(session.isRunning).toBe(true);
|
|
352
|
-
|
|
353
|
-
session.kill();
|
|
354
|
-
await session.waitForExit(5_000);
|
|
355
|
-
|
|
356
|
-
expect(session.isRunning).toBe(false);
|
|
357
|
-
});
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
describe("output", () => {
|
|
361
|
-
it("should accumulate all output", async () => {
|
|
362
|
-
const session = await createPTYSession({
|
|
363
|
-
command: "/bin/sh",
|
|
364
|
-
args: ["-c", 'echo "line1"; echo "line2"; echo "line3"'],
|
|
365
|
-
});
|
|
366
|
-
sessions.push(session);
|
|
367
|
-
|
|
368
|
-
await session.waitForExit(5000);
|
|
369
|
-
|
|
370
|
-
const output = session.output;
|
|
371
|
-
expect(output).toContain("line1");
|
|
372
|
-
expect(output).toContain("line2");
|
|
373
|
-
expect(output).toContain("line3");
|
|
374
|
-
});
|
|
375
|
-
});
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
describe("runInPTY", () => {
|
|
379
|
-
it("should run a command and return output", async () => {
|
|
380
|
-
const result = await runInPTY({
|
|
381
|
-
command: "/bin/echo",
|
|
382
|
-
args: ["hello", "world"],
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
expect(result.output).toContain("hello world");
|
|
386
|
-
expect(result.exitCode).toBe(0);
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
it("should capture exit code", async () => {
|
|
390
|
-
const result = await runInPTY({
|
|
391
|
-
command: "/bin/sh",
|
|
392
|
-
args: ["-c", "exit 7"],
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
expect(result.exitCode).toBe(7);
|
|
396
|
-
});
|
|
397
|
-
|
|
398
|
-
it("should support custom timeout", async () => {
|
|
399
|
-
await expect(
|
|
400
|
-
runInPTY({
|
|
401
|
-
command: "/bin/sleep",
|
|
402
|
-
args: ["60"],
|
|
403
|
-
timeoutMs: 200,
|
|
404
|
-
}),
|
|
405
|
-
).rejects.toThrow(PTYTimeoutError);
|
|
406
|
-
});
|
|
407
|
-
|
|
408
|
-
it("should pass through PTY options", async () => {
|
|
409
|
-
const tempDir = await createTempDir();
|
|
410
|
-
try {
|
|
411
|
-
const result = await runInPTY({
|
|
412
|
-
command: "/bin/pwd",
|
|
413
|
-
cwd: tempDir,
|
|
414
|
-
cols: 100,
|
|
415
|
-
rows: 30,
|
|
416
|
-
env: { CUSTOM_VAR: "test" },
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
expect(result.output).toContain(tempDir);
|
|
420
|
-
expect(result.exitCode).toBe(0);
|
|
421
|
-
} finally {
|
|
422
|
-
await cleanupTempDir(tempDir);
|
|
423
|
-
}
|
|
424
|
-
});
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
describe("interactive scenarios", () => {
|
|
428
|
-
it("should handle interactive cat session", async () => {
|
|
429
|
-
const session = await createPTYSession({
|
|
430
|
-
command: "/bin/cat",
|
|
431
|
-
});
|
|
432
|
-
sessions.push(session);
|
|
433
|
-
|
|
434
|
-
// Send input
|
|
435
|
-
session.write("first line\n");
|
|
436
|
-
await session.waitFor("first line", 2000);
|
|
437
|
-
|
|
438
|
-
session.write("second line\n");
|
|
439
|
-
await session.waitFor("second line", 2000);
|
|
440
|
-
|
|
441
|
-
// Close with EOF
|
|
442
|
-
session.write("\x04");
|
|
443
|
-
await session.waitForExit(2000);
|
|
444
|
-
|
|
445
|
-
expect(session.output).toContain("first line");
|
|
446
|
-
expect(session.output).toContain("second line");
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
it("should handle shell session with prompts", async () => {
|
|
450
|
-
const session = await createPTYSession({
|
|
451
|
-
command: "/bin/sh",
|
|
452
|
-
});
|
|
453
|
-
sessions.push(session);
|
|
454
|
-
|
|
455
|
-
// Execute a command
|
|
456
|
-
session.write('echo "test output"\n');
|
|
457
|
-
await session.waitFor("test output", 2000);
|
|
458
|
-
|
|
459
|
-
// Exit the shell
|
|
460
|
-
session.write("exit\n");
|
|
461
|
-
await session.waitForExit(2000);
|
|
462
|
-
|
|
463
|
-
expect(session.output).toContain("test output");
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
describe("error handling", () => {
|
|
468
|
-
it("should handle non-existent command", async () => {
|
|
469
|
-
// node-pty behavior varies by platform and version:
|
|
470
|
-
// - Some throw synchronously with posix_spawnp failed
|
|
471
|
-
// - Some let session be created but exit immediately with error
|
|
472
|
-
let error: Error | undefined;
|
|
473
|
-
let session: Awaited<ReturnType<typeof createPTYSession>> | undefined;
|
|
474
|
-
try {
|
|
475
|
-
session = await createPTYSession({
|
|
476
|
-
command: "/nonexistent/command/path",
|
|
477
|
-
});
|
|
478
|
-
if (session) {
|
|
479
|
-
sessions.push(session);
|
|
480
|
-
// If session was created, wait for it to exit
|
|
481
|
-
const exitResult = await session.waitForExit(2000);
|
|
482
|
-
// Non-existent commands typically exit with code 127 or spawn failure
|
|
483
|
-
// If we get here without an error, the exit code or output should indicate failure
|
|
484
|
-
if (exitResult.code === null || exitResult.code !== 0) {
|
|
485
|
-
// This is expected - non-existent command should fail
|
|
486
|
-
return;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
} catch (e) {
|
|
490
|
-
error = e as Error;
|
|
491
|
-
}
|
|
492
|
-
// Either we caught a spawn error or the session failed to exit cleanly
|
|
493
|
-
if (error) {
|
|
494
|
-
expect(error.message).toMatch(/posix_spawnp failed|ENOENT|spawn|not found/i);
|
|
495
|
-
}
|
|
496
|
-
// If no error was thrown and we reach here, test passes if session failed somehow
|
|
497
|
-
});
|
|
498
|
-
|
|
499
|
-
it("should throw when writing to closed session", async () => {
|
|
500
|
-
const session = await createPTYSession({
|
|
501
|
-
command: "/bin/echo",
|
|
502
|
-
args: ["quick"],
|
|
503
|
-
});
|
|
504
|
-
sessions.push(session);
|
|
505
|
-
|
|
506
|
-
await session.waitForExit(5000);
|
|
507
|
-
|
|
508
|
-
expect(() => session.write("test")).toThrow(PTYError);
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
it("should include output in timeout error", async () => {
|
|
512
|
-
const session = await createPTYSession({
|
|
513
|
-
command: "/bin/sh",
|
|
514
|
-
args: ["-c", 'echo "visible output"; sleep 60'],
|
|
515
|
-
});
|
|
516
|
-
sessions.push(session);
|
|
517
|
-
|
|
518
|
-
// Wait for initial output
|
|
519
|
-
await session.waitFor("visible output", 2000);
|
|
520
|
-
|
|
521
|
-
try {
|
|
522
|
-
await session.waitFor("never appears", 200);
|
|
523
|
-
expect.fail("Should have thrown");
|
|
524
|
-
} catch (err) {
|
|
525
|
-
expect(err).toBeInstanceOf(PTYTimeoutError);
|
|
526
|
-
expect((err as PTYTimeoutError).output).toContain("visible output");
|
|
527
|
-
}
|
|
528
|
-
});
|
|
529
|
-
});
|
|
530
|
-
|
|
531
|
-
describe("env var filtering (aria-67o)", () => {
|
|
532
|
-
it("should strip LD_PRELOAD from PTY env", async () => {
|
|
533
|
-
const session = await createPTYSession({
|
|
534
|
-
command: "/bin/sh",
|
|
535
|
-
args: ["-c", 'echo "LD_PRELOAD=$LD_PRELOAD"'],
|
|
536
|
-
env: { LD_PRELOAD: "/evil/lib.so" },
|
|
537
|
-
});
|
|
538
|
-
sessions.push(session);
|
|
539
|
-
|
|
540
|
-
const output = await session.waitForExit(5000);
|
|
541
|
-
expect(output).toContain("LD_PRELOAD=");
|
|
542
|
-
expect(output).not.toContain("/evil/lib.so");
|
|
543
|
-
});
|
|
544
|
-
|
|
545
|
-
it("should strip BASH_ENV from PTY env", async () => {
|
|
546
|
-
const session = await createPTYSession({
|
|
547
|
-
command: "/bin/sh",
|
|
548
|
-
args: ["-c", 'echo "BASH_ENV=$BASH_ENV"'],
|
|
549
|
-
env: { BASH_ENV: "/evil/script.sh" },
|
|
550
|
-
});
|
|
551
|
-
sessions.push(session);
|
|
552
|
-
|
|
553
|
-
const output = await session.waitForExit(5000);
|
|
554
|
-
expect(output).toContain("BASH_ENV=");
|
|
555
|
-
expect(output).not.toContain("/evil/script.sh");
|
|
556
|
-
});
|
|
557
|
-
|
|
558
|
-
it("should strip GIT_DIR from PTY env", async () => {
|
|
559
|
-
const session = await createPTYSession({
|
|
560
|
-
command: "/bin/sh",
|
|
561
|
-
args: ["-c", 'echo "GIT_DIR=$GIT_DIR"'],
|
|
562
|
-
env: { GIT_DIR: "/tmp/not-repo" },
|
|
563
|
-
});
|
|
564
|
-
sessions.push(session);
|
|
565
|
-
|
|
566
|
-
const output = await session.waitForExit(5000);
|
|
567
|
-
expect(output).toContain("GIT_DIR=");
|
|
568
|
-
expect(output).not.toContain("/tmp/not-repo");
|
|
569
|
-
});
|
|
570
|
-
|
|
571
|
-
it("should strip NODE_OPTIONS from PTY env", async () => {
|
|
572
|
-
const session = await createPTYSession({
|
|
573
|
-
command: "/bin/sh",
|
|
574
|
-
args: ["-c", 'echo "NODE_OPTIONS=$NODE_OPTIONS"'],
|
|
575
|
-
env: { NODE_OPTIONS: "--require /evil/payload.js" },
|
|
576
|
-
});
|
|
577
|
-
sessions.push(session);
|
|
578
|
-
|
|
579
|
-
const output = await session.waitForExit(5000);
|
|
580
|
-
expect(output).toContain("NODE_OPTIONS=");
|
|
581
|
-
expect(output).not.toContain("/evil/payload.js");
|
|
582
|
-
});
|
|
583
|
-
|
|
584
|
-
it("should strip JAVA_TOOL_OPTIONS from PTY env", async () => {
|
|
585
|
-
const session = await createPTYSession({
|
|
586
|
-
command: "/bin/sh",
|
|
587
|
-
args: ["-c", 'echo "JAVA_TOOL_OPTIONS=$JAVA_TOOL_OPTIONS"'],
|
|
588
|
-
env: { JAVA_TOOL_OPTIONS: "-javaagent:/evil/agent.jar" },
|
|
589
|
-
});
|
|
590
|
-
sessions.push(session);
|
|
591
|
-
|
|
592
|
-
const output = await session.waitForExit(5000);
|
|
593
|
-
expect(output).toContain("JAVA_TOOL_OPTIONS=");
|
|
594
|
-
expect(output).not.toContain("/evil/agent.jar");
|
|
595
|
-
});
|
|
596
|
-
|
|
597
|
-
it("should strip RUBYOPT from PTY env", async () => {
|
|
598
|
-
const session = await createPTYSession({
|
|
599
|
-
command: "/bin/sh",
|
|
600
|
-
args: ["-c", 'echo "RUBYOPT=$RUBYOPT"'],
|
|
601
|
-
env: { RUBYOPT: "-r/evil/payload" },
|
|
602
|
-
});
|
|
603
|
-
sessions.push(session);
|
|
604
|
-
|
|
605
|
-
const output = await session.waitForExit(5000);
|
|
606
|
-
expect(output).toContain("RUBYOPT=");
|
|
607
|
-
expect(output).not.toContain("/evil/payload");
|
|
608
|
-
});
|
|
609
|
-
|
|
610
|
-
it("should strip PERL5OPT from PTY env", async () => {
|
|
611
|
-
const session = await createPTYSession({
|
|
612
|
-
command: "/bin/sh",
|
|
613
|
-
args: ["-c", 'echo "PERL5OPT=$PERL5OPT"'],
|
|
614
|
-
env: { PERL5OPT: "-M/evil/module" },
|
|
615
|
-
});
|
|
616
|
-
sessions.push(session);
|
|
617
|
-
|
|
618
|
-
const output = await session.waitForExit(5000);
|
|
619
|
-
expect(output).toContain("PERL5OPT=");
|
|
620
|
-
expect(output).not.toContain("/evil/module");
|
|
621
|
-
});
|
|
622
|
-
|
|
623
|
-
it("should strip PYTHONSTARTUP from PTY env", async () => {
|
|
624
|
-
const session = await createPTYSession({
|
|
625
|
-
command: "/bin/sh",
|
|
626
|
-
args: ["-c", 'echo "PYTHONSTARTUP=$PYTHONSTARTUP"'],
|
|
627
|
-
env: { PYTHONSTARTUP: "/evil/startup.py" },
|
|
628
|
-
});
|
|
629
|
-
sessions.push(session);
|
|
630
|
-
|
|
631
|
-
const output = await session.waitForExit(5000);
|
|
632
|
-
expect(output).toContain("PYTHONSTARTUP=");
|
|
633
|
-
expect(output).not.toContain("/evil/startup.py");
|
|
634
|
-
});
|
|
635
|
-
|
|
636
|
-
it("should pass through non-blocked env vars to PTY", async () => {
|
|
637
|
-
const session = await createPTYSession({
|
|
638
|
-
command: "/bin/sh",
|
|
639
|
-
args: ["-c", 'echo "MY_SAFE=$MY_SAFE"'],
|
|
640
|
-
env: { MY_SAFE: "safe_value_pty" },
|
|
641
|
-
});
|
|
642
|
-
sessions.push(session);
|
|
643
|
-
|
|
644
|
-
const output = await session.waitForExit(5000);
|
|
645
|
-
expect(output).toContain("MY_SAFE=safe_value_pty");
|
|
646
|
-
});
|
|
647
|
-
|
|
648
|
-
it("should strip blocked vars while passing non-blocked vars in PTY", async () => {
|
|
649
|
-
const session = await createPTYSession({
|
|
650
|
-
command: "/bin/sh",
|
|
651
|
-
args: ["-c", 'echo "safe=$SAFE_VAR ld=$LD_PRELOAD"'],
|
|
652
|
-
env: {
|
|
653
|
-
SAFE_VAR: "hello_pty",
|
|
654
|
-
LD_PRELOAD: "/evil/lib.so",
|
|
655
|
-
},
|
|
656
|
-
});
|
|
657
|
-
sessions.push(session);
|
|
658
|
-
|
|
659
|
-
const output = await session.waitForExit(5000);
|
|
660
|
-
expect(output).toContain("safe=hello_pty");
|
|
661
|
-
expect(output).not.toContain("/evil/lib.so");
|
|
662
|
-
});
|
|
663
|
-
});
|
|
664
|
-
});
|