@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,81 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
-
import { Memoria } from "@aria-cli/memoria";
|
|
3
|
-
import { createToolRegistry } from "../../src/index.js";
|
|
4
|
-
import type { ToolContext } from "../../src/types.js";
|
|
5
|
-
|
|
6
|
-
async function createRealMemoria(): Promise<Memoria> {
|
|
7
|
-
const memoria = new Memoria({
|
|
8
|
-
path: ":memory:",
|
|
9
|
-
embeddings: {
|
|
10
|
-
provider: "custom" as const,
|
|
11
|
-
model: "mock-embedding",
|
|
12
|
-
dimensions: 384,
|
|
13
|
-
},
|
|
14
|
-
});
|
|
15
|
-
await memoria.initialize();
|
|
16
|
-
return memoria;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function createContext(memoria: Memoria): ToolContext {
|
|
20
|
-
return {
|
|
21
|
-
workingDir: "/test",
|
|
22
|
-
env: {},
|
|
23
|
-
memoria: memoria as any,
|
|
24
|
-
confirm: async () => true,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
describe("Memory tool discovery contract (E2E)", () => {
|
|
29
|
-
let memoria: Memoria;
|
|
30
|
-
|
|
31
|
-
afterEach(async () => {
|
|
32
|
-
if (memoria) {
|
|
33
|
-
await memoria.close();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it("[CRITICAL] recall schema should NOT expose tags (intentionally removed)", () => {
|
|
38
|
-
const registry = createToolRegistry();
|
|
39
|
-
const recallInfo = registry.getToolInfos().find((t) => t.name === "recall");
|
|
40
|
-
expect(recallInfo).toBeDefined();
|
|
41
|
-
expect(recallInfo!.parameters.map((p) => p.name)).not.toContain("tags");
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it("🔴 discovery metadata should not expose forget.query", () => {
|
|
45
|
-
const registry = createToolRegistry();
|
|
46
|
-
const forgetInfo = registry.getToolInfos().find((t) => t.name === "forget");
|
|
47
|
-
expect(forgetInfo).toBeDefined();
|
|
48
|
-
expect(forgetInfo!.parameters.map((p) => p.name)).not.toContain("query");
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it("recall through real Memoria should work without tags", async () => {
|
|
52
|
-
memoria = await createRealMemoria();
|
|
53
|
-
const registry = createToolRegistry();
|
|
54
|
-
|
|
55
|
-
await memoria.remember("Blue team deployment runbook", {
|
|
56
|
-
network: "world",
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const recall = registry.get("recall");
|
|
60
|
-
expect(recall).toBeDefined();
|
|
61
|
-
|
|
62
|
-
const result = await recall!.execute({ query: "runbook" }, createContext(memoria));
|
|
63
|
-
expect(result.success).toBe(true);
|
|
64
|
-
|
|
65
|
-
const memories = ((result.data as any)?.memories ?? []) as Array<{
|
|
66
|
-
content: string;
|
|
67
|
-
}>;
|
|
68
|
-
expect(
|
|
69
|
-
memories.some((memory) => memory.content.toLowerCase().includes("deployment runbook")),
|
|
70
|
-
).toBe(true);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it("recall_knowledge schema should expose kind and limit instead of depth", () => {
|
|
74
|
-
const registry = createToolRegistry();
|
|
75
|
-
const rkInfo = registry.getToolInfos().find((t) => t.name === "recall_knowledge");
|
|
76
|
-
expect(rkInfo).toBeDefined();
|
|
77
|
-
expect(rkInfo!.parameters.map((p) => p.name)).not.toContain("depth");
|
|
78
|
-
expect(rkInfo!.parameters.map((p) => p.name)).toContain("kind");
|
|
79
|
-
expect(rkInfo!.parameters.map((p) => p.name)).toContain("limit");
|
|
80
|
-
});
|
|
81
|
-
});
|
|
@@ -1,538 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @aria/tools - Apply Patch executor tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for unified diff patch application including:
|
|
5
|
-
* - Happy path: single/multi-file, create, delete
|
|
6
|
-
* - Security: path traversal, absolute paths, system paths
|
|
7
|
-
* - Error handling: context mismatch, binary diff, empty patch
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
11
|
-
import * as fs from "node:fs/promises";
|
|
12
|
-
import * as path from "node:path";
|
|
13
|
-
import * as os from "node:os";
|
|
14
|
-
import type { ToolContext } from "../../src/types.js";
|
|
15
|
-
import { executeApplyPatch } from "../../src/executors/apply-patch.js";
|
|
16
|
-
|
|
17
|
-
// Helper to create a unique temp directory
|
|
18
|
-
const createTempDir = async (): Promise<string> => {
|
|
19
|
-
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "aria-patch-test-"));
|
|
20
|
-
return tempDir;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
// Helper to clean up temp directory
|
|
24
|
-
const cleanupTempDir = async (dir: string): Promise<void> => {
|
|
25
|
-
await fs.rm(dir, { recursive: true, force: true });
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
// Helper to create a context
|
|
29
|
-
const createContext = (workingDir: string): ToolContext => ({
|
|
30
|
-
workingDir,
|
|
31
|
-
env: {},
|
|
32
|
-
confirm: async () => true,
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
describe("Apply Patch Executor", () => {
|
|
36
|
-
let tempDir: string;
|
|
37
|
-
let ctx: ToolContext;
|
|
38
|
-
|
|
39
|
-
beforeEach(async () => {
|
|
40
|
-
tempDir = await createTempDir();
|
|
41
|
-
ctx = createContext(tempDir);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
afterEach(async () => {
|
|
45
|
-
await cleanupTempDir(tempDir);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
describe("happy path", () => {
|
|
49
|
-
it("applies a single-file patch correctly", async () => {
|
|
50
|
-
// Create source file
|
|
51
|
-
const filePath = path.join(tempDir, "hello.txt");
|
|
52
|
-
await fs.writeFile(filePath, "Hello\nWorld\nFoo\n");
|
|
53
|
-
|
|
54
|
-
const patch = [
|
|
55
|
-
"--- a/hello.txt",
|
|
56
|
-
"+++ b/hello.txt",
|
|
57
|
-
"@@ -1,3 +1,3 @@",
|
|
58
|
-
" Hello",
|
|
59
|
-
"-World",
|
|
60
|
-
"+Universe",
|
|
61
|
-
" Foo",
|
|
62
|
-
].join("\n");
|
|
63
|
-
|
|
64
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
65
|
-
|
|
66
|
-
expect(result.success).toBe(true);
|
|
67
|
-
expect(result.message).toContain("Patch applied");
|
|
68
|
-
|
|
69
|
-
const content = await fs.readFile(filePath, "utf-8");
|
|
70
|
-
expect(content).toContain("Universe");
|
|
71
|
-
expect(content).not.toContain("World");
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("applies a multi-file patch correctly", async () => {
|
|
75
|
-
// Create source files
|
|
76
|
-
const file1 = path.join(tempDir, "a.txt");
|
|
77
|
-
const file2 = path.join(tempDir, "b.txt");
|
|
78
|
-
await fs.writeFile(file1, "line1\nline2\n");
|
|
79
|
-
await fs.writeFile(file2, "alpha\nbeta\n");
|
|
80
|
-
|
|
81
|
-
const patch = [
|
|
82
|
-
"diff --git a/a.txt b/a.txt",
|
|
83
|
-
"--- a/a.txt",
|
|
84
|
-
"+++ b/a.txt",
|
|
85
|
-
"@@ -1,2 +1,2 @@",
|
|
86
|
-
" line1",
|
|
87
|
-
"-line2",
|
|
88
|
-
"+line2_modified",
|
|
89
|
-
"diff --git a/b.txt b/b.txt",
|
|
90
|
-
"--- a/b.txt",
|
|
91
|
-
"+++ b/b.txt",
|
|
92
|
-
"@@ -1,2 +1,2 @@",
|
|
93
|
-
" alpha",
|
|
94
|
-
"-beta",
|
|
95
|
-
"+gamma",
|
|
96
|
-
].join("\n");
|
|
97
|
-
|
|
98
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
99
|
-
|
|
100
|
-
expect(result.success).toBe(true);
|
|
101
|
-
const data = result.data as { filesChanged: number; modified: number };
|
|
102
|
-
expect(data.filesChanged).toBe(2);
|
|
103
|
-
expect(data.modified).toBe(2);
|
|
104
|
-
|
|
105
|
-
const content1 = await fs.readFile(file1, "utf-8");
|
|
106
|
-
expect(content1).toContain("line2_modified");
|
|
107
|
-
const content2 = await fs.readFile(file2, "utf-8");
|
|
108
|
-
expect(content2).toContain("gamma");
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it("applies consecutive unified-diff file blocks without diff --git separators", async () => {
|
|
112
|
-
const file1 = path.join(tempDir, "a.txt");
|
|
113
|
-
const file2 = path.join(tempDir, "b.txt");
|
|
114
|
-
await fs.writeFile(file1, "old-a\n");
|
|
115
|
-
await fs.writeFile(file2, "old-b\n");
|
|
116
|
-
|
|
117
|
-
const patch = [
|
|
118
|
-
"--- a/a.txt",
|
|
119
|
-
"+++ b/a.txt",
|
|
120
|
-
"@@ -1 +1 @@",
|
|
121
|
-
"-old-a",
|
|
122
|
-
"+new-a",
|
|
123
|
-
"--- a/b.txt",
|
|
124
|
-
"+++ b/b.txt",
|
|
125
|
-
"@@ -1 +1 @@",
|
|
126
|
-
"-old-b",
|
|
127
|
-
"+new-b",
|
|
128
|
-
].join("\n");
|
|
129
|
-
|
|
130
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
131
|
-
|
|
132
|
-
expect(result.success).toBe(true);
|
|
133
|
-
expect(await fs.readFile(file1, "utf-8")).toContain("new-a");
|
|
134
|
-
expect(await fs.readFile(file2, "utf-8")).toContain("new-b");
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
it("handles unified diffs with no-newline markers", async () => {
|
|
138
|
-
const filePath = path.join(tempDir, "noeol.txt");
|
|
139
|
-
await fs.writeFile(filePath, "old", "utf-8");
|
|
140
|
-
|
|
141
|
-
const patch = [
|
|
142
|
-
"--- a/noeol.txt",
|
|
143
|
-
"+++ b/noeol.txt",
|
|
144
|
-
"@@ -1 +1 @@",
|
|
145
|
-
"-old",
|
|
146
|
-
"\",
|
|
147
|
-
"+new",
|
|
148
|
-
"\",
|
|
149
|
-
].join("\n");
|
|
150
|
-
|
|
151
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
152
|
-
|
|
153
|
-
expect(result.success).toBe(true);
|
|
154
|
-
expect(await fs.readFile(filePath, "utf-8")).toBe("new");
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
it("creates a new file (--- /dev/null)", async () => {
|
|
158
|
-
const patch = [
|
|
159
|
-
"--- /dev/null",
|
|
160
|
-
"+++ b/newfile.txt",
|
|
161
|
-
"@@ -0,0 +1,2 @@",
|
|
162
|
-
"+Hello new file",
|
|
163
|
-
"+Second line",
|
|
164
|
-
].join("\n");
|
|
165
|
-
|
|
166
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
167
|
-
|
|
168
|
-
expect(result.success).toBe(true);
|
|
169
|
-
const data = result.data as { created: number };
|
|
170
|
-
expect(data.created).toBe(1);
|
|
171
|
-
|
|
172
|
-
const content = await fs.readFile(path.join(tempDir, "newfile.txt"), "utf-8");
|
|
173
|
-
expect(content).toContain("Hello new file");
|
|
174
|
-
expect(content).toContain("Second line");
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it("deletes a file (+++ /dev/null)", async () => {
|
|
178
|
-
const filePath = path.join(tempDir, "doomed.txt");
|
|
179
|
-
await fs.writeFile(filePath, "goodbye\n");
|
|
180
|
-
|
|
181
|
-
const patch = ["--- a/doomed.txt", "+++ /dev/null", "@@ -1,1 +0,0 @@", "-goodbye"].join("\n");
|
|
182
|
-
|
|
183
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
184
|
-
|
|
185
|
-
expect(result.success).toBe(true);
|
|
186
|
-
const data = result.data as { deleted: number };
|
|
187
|
-
expect(data.deleted).toBe(1);
|
|
188
|
-
|
|
189
|
-
await expect(fs.stat(filePath)).rejects.toThrow();
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it("applies Claude-style *** Begin Patch format", async () => {
|
|
193
|
-
const filePath = path.join(tempDir, "begin-format.txt");
|
|
194
|
-
await fs.writeFile(filePath, "alpha\nbeta\ngamma\n");
|
|
195
|
-
|
|
196
|
-
const patch = [
|
|
197
|
-
"*** Begin Patch",
|
|
198
|
-
"*** Update File: begin-format.txt",
|
|
199
|
-
"@@",
|
|
200
|
-
" alpha",
|
|
201
|
-
"-beta",
|
|
202
|
-
"+BETA",
|
|
203
|
-
" gamma",
|
|
204
|
-
"*** End Patch",
|
|
205
|
-
].join("\n");
|
|
206
|
-
|
|
207
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
208
|
-
expect(result.success).toBe(true);
|
|
209
|
-
|
|
210
|
-
const content = await fs.readFile(filePath, "utf-8");
|
|
211
|
-
expect(content).toContain("BETA");
|
|
212
|
-
expect(content).not.toContain("beta");
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
it("supports move/rename in *** Begin Patch format", async () => {
|
|
216
|
-
const source = path.join(tempDir, "src.txt");
|
|
217
|
-
const target = path.join(tempDir, "dst.txt");
|
|
218
|
-
await fs.writeFile(source, "one\ntwo\n");
|
|
219
|
-
|
|
220
|
-
const patch = [
|
|
221
|
-
"*** Begin Patch",
|
|
222
|
-
"*** Update File: src.txt",
|
|
223
|
-
"*** Move to: dst.txt",
|
|
224
|
-
"@@",
|
|
225
|
-
" one",
|
|
226
|
-
"-two",
|
|
227
|
-
"+TWO",
|
|
228
|
-
"*** End Patch",
|
|
229
|
-
].join("\n");
|
|
230
|
-
|
|
231
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
232
|
-
expect(result.success).toBe(true);
|
|
233
|
-
|
|
234
|
-
await expect(fs.stat(source)).rejects.toThrow();
|
|
235
|
-
const moved = await fs.readFile(target, "utf-8");
|
|
236
|
-
expect(moved).toContain("TWO");
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
describe("security (path traversal)", () => {
|
|
241
|
-
it("rejects path traversal with ../", async () => {
|
|
242
|
-
const patch = [
|
|
243
|
-
"--- a/../escape/bad.txt",
|
|
244
|
-
"+++ b/../escape/bad.txt",
|
|
245
|
-
"@@ -1 +1 @@",
|
|
246
|
-
"-old",
|
|
247
|
-
"+new",
|
|
248
|
-
].join("\n");
|
|
249
|
-
|
|
250
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
251
|
-
|
|
252
|
-
expect(result.success).toBe(false);
|
|
253
|
-
expect(result.message).toContain("traversal");
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
it("rejects absolute path /etc/passwd", async () => {
|
|
257
|
-
const patch = [
|
|
258
|
-
"--- a//etc/passwd",
|
|
259
|
-
"+++ b//etc/passwd",
|
|
260
|
-
"@@ -1 +1 @@",
|
|
261
|
-
"-root:x:0:0",
|
|
262
|
-
"+hacked",
|
|
263
|
-
].join("\n");
|
|
264
|
-
|
|
265
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
266
|
-
|
|
267
|
-
expect(result.success).toBe(false);
|
|
268
|
-
// Will be caught either as absolute path or system path
|
|
269
|
-
expect(result.message).toMatch(/Absolute path|System path|traversal/i);
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
it("rejects system path /dev/shm/test", async () => {
|
|
273
|
-
const patch = ["--- /dev/null", "+++ b//dev/shm/test", "@@ -0,0 +1 @@", "+bad"].join("\n");
|
|
274
|
-
|
|
275
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
276
|
-
|
|
277
|
-
expect(result.success).toBe(false);
|
|
278
|
-
// Either absolute or system path rejection
|
|
279
|
-
expect(result.message).toMatch(/Absolute path|System path/i);
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
it("rejects paths with .. after resolution", async () => {
|
|
283
|
-
const patch = [
|
|
284
|
-
"--- a/subdir/../../escape.txt",
|
|
285
|
-
"+++ b/subdir/../../escape.txt",
|
|
286
|
-
"@@ -1 +1 @@",
|
|
287
|
-
"-old",
|
|
288
|
-
"+new",
|
|
289
|
-
].join("\n");
|
|
290
|
-
|
|
291
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
292
|
-
|
|
293
|
-
expect(result.success).toBe(false);
|
|
294
|
-
expect(result.message).toContain("..");
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
describe("error handling", () => {
|
|
299
|
-
it("returns error for context mismatch (wrong context lines)", async () => {
|
|
300
|
-
const filePath = path.join(tempDir, "mismatch.txt");
|
|
301
|
-
await fs.writeFile(filePath, "actual line 1\nactual line 2\n");
|
|
302
|
-
|
|
303
|
-
const patch = [
|
|
304
|
-
"--- a/mismatch.txt",
|
|
305
|
-
"+++ b/mismatch.txt",
|
|
306
|
-
"@@ -1,2 +1,2 @@",
|
|
307
|
-
" wrong context line",
|
|
308
|
-
"-actual line 2",
|
|
309
|
-
"+replaced line",
|
|
310
|
-
].join("\n");
|
|
311
|
-
|
|
312
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
313
|
-
|
|
314
|
-
expect(result.success).toBe(false);
|
|
315
|
-
expect(result.message).toContain("Hunk");
|
|
316
|
-
expect(result.message).toContain("failed");
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
it("rejects binary diffs", async () => {
|
|
320
|
-
const patch = ["Binary files a/image.png and b/image.png differ"].join("\n");
|
|
321
|
-
|
|
322
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
323
|
-
|
|
324
|
-
expect(result.success).toBe(false);
|
|
325
|
-
expect(result.message).toContain("Binary");
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
it("returns error for empty patch", async () => {
|
|
329
|
-
const result = await executeApplyPatch({ patch: "" }, ctx);
|
|
330
|
-
|
|
331
|
-
expect(result.success).toBe(false);
|
|
332
|
-
expect(result.message).toContain("empty");
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
it("returns error for whitespace-only patch", async () => {
|
|
336
|
-
const result = await executeApplyPatch({ patch: " \n \n " }, ctx);
|
|
337
|
-
|
|
338
|
-
expect(result.success).toBe(false);
|
|
339
|
-
expect(result.message).toContain("empty");
|
|
340
|
-
});
|
|
341
|
-
|
|
342
|
-
it("returns error for patch with no valid diffs", async () => {
|
|
343
|
-
const patch = ["This is not a valid patch", "Just some random text"].join("\n");
|
|
344
|
-
|
|
345
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
346
|
-
|
|
347
|
-
expect(result.success).toBe(false);
|
|
348
|
-
expect(result.message).toContain("No file diffs");
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
it("returns error for malformed hunk line counts", async () => {
|
|
352
|
-
const filePath = path.join(tempDir, "bad-counts.txt");
|
|
353
|
-
await fs.writeFile(filePath, "a\nb\n");
|
|
354
|
-
|
|
355
|
-
const patch = [
|
|
356
|
-
"--- a/bad-counts.txt",
|
|
357
|
-
"+++ b/bad-counts.txt",
|
|
358
|
-
"@@ -1,2 +1,2 @@",
|
|
359
|
-
" a",
|
|
360
|
-
"-b",
|
|
361
|
-
"+B",
|
|
362
|
-
"+C",
|
|
363
|
-
].join("\n");
|
|
364
|
-
|
|
365
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
366
|
-
|
|
367
|
-
expect(result.success).toBe(false);
|
|
368
|
-
expect(result.message).toContain("Malformed hunk");
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
it("does not leave partial writes when delete source is missing", async () => {
|
|
372
|
-
const targetPath = path.join(tempDir, "keep.txt");
|
|
373
|
-
await fs.writeFile(targetPath, "hello\n");
|
|
374
|
-
|
|
375
|
-
const patch = [
|
|
376
|
-
"diff --git a/keep.txt b/keep.txt",
|
|
377
|
-
"--- a/keep.txt",
|
|
378
|
-
"+++ b/keep.txt",
|
|
379
|
-
"@@ -1 +1 @@",
|
|
380
|
-
"-hello",
|
|
381
|
-
"+HELLO",
|
|
382
|
-
"diff --git a/missing.txt b/missing.txt",
|
|
383
|
-
"--- a/missing.txt",
|
|
384
|
-
"+++ /dev/null",
|
|
385
|
-
"@@ -1 +0,0 @@",
|
|
386
|
-
"-gone",
|
|
387
|
-
].join("\n");
|
|
388
|
-
|
|
389
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
390
|
-
|
|
391
|
-
expect(result.success).toBe(false);
|
|
392
|
-
expect(result.message).toContain("Cannot delete missing path");
|
|
393
|
-
expect(await fs.readFile(targetPath, "utf-8")).toBe("hello\n");
|
|
394
|
-
});
|
|
395
|
-
});
|
|
396
|
-
|
|
397
|
-
describe("security — review fixes (aria-8kp.4)", () => {
|
|
398
|
-
it("rejects patch targeting symlink that escapes working directory", async () => {
|
|
399
|
-
// Create a directory outside tempDir
|
|
400
|
-
const outsideDir = await fs.mkdtemp(path.join(os.tmpdir(), "aria-patch-outside-"));
|
|
401
|
-
const outsideFile = path.join(outsideDir, "secret.txt");
|
|
402
|
-
await fs.writeFile(outsideFile, "secret content\n");
|
|
403
|
-
|
|
404
|
-
// Create a symlink inside tempDir pointing to outsideDir
|
|
405
|
-
const symlinkPath = path.join(tempDir, "sneaky");
|
|
406
|
-
await fs.symlink(outsideDir, symlinkPath);
|
|
407
|
-
|
|
408
|
-
const patch = [
|
|
409
|
-
"--- a/sneaky/secret.txt",
|
|
410
|
-
"+++ b/sneaky/secret.txt",
|
|
411
|
-
"@@ -1 +1 @@",
|
|
412
|
-
"-secret content",
|
|
413
|
-
"+pwned",
|
|
414
|
-
].join("\n");
|
|
415
|
-
|
|
416
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
417
|
-
|
|
418
|
-
expect(result.success).toBe(false);
|
|
419
|
-
expect(result.message).toContain("escapes working directory");
|
|
420
|
-
|
|
421
|
-
// Verify original file is untouched
|
|
422
|
-
const content = await fs.readFile(outsideFile, "utf-8");
|
|
423
|
-
expect(content).toBe("secret content\n");
|
|
424
|
-
|
|
425
|
-
// Cleanup
|
|
426
|
-
await fs.rm(outsideDir, { recursive: true, force: true });
|
|
427
|
-
});
|
|
428
|
-
|
|
429
|
-
it("rejects patch with nested .. path components", async () => {
|
|
430
|
-
const patch = [
|
|
431
|
-
"--- a/../../etc/passwd",
|
|
432
|
-
"+++ b/../../etc/passwd",
|
|
433
|
-
"@@ -1 +1 @@",
|
|
434
|
-
"-root:x:0:0",
|
|
435
|
-
"+pwned:x:0:0",
|
|
436
|
-
].join("\n");
|
|
437
|
-
|
|
438
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
439
|
-
|
|
440
|
-
expect(result.success).toBe(false);
|
|
441
|
-
expect(result.message).toContain("traversal");
|
|
442
|
-
});
|
|
443
|
-
|
|
444
|
-
it("rejects Windows-style absolute paths", async () => {
|
|
445
|
-
const patch = [
|
|
446
|
-
"--- a/C:\\Windows\\System32\\config",
|
|
447
|
-
"+++ b/C:\\Windows\\System32\\config",
|
|
448
|
-
"@@ -1 +1 @@",
|
|
449
|
-
"-original",
|
|
450
|
-
"+pwned",
|
|
451
|
-
].join("\n");
|
|
452
|
-
|
|
453
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
454
|
-
|
|
455
|
-
expect(result.success).toBe(false);
|
|
456
|
-
expect(result.message).toContain("Absolute path not allowed");
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
it("handles CRLF line endings correctly", async () => {
|
|
460
|
-
// Create file with CRLF endings
|
|
461
|
-
const filePath = path.join(tempDir, "crlf.txt");
|
|
462
|
-
await fs.writeFile(filePath, "Line1\r\nLine2\r\nLine3\r\n");
|
|
463
|
-
|
|
464
|
-
const patch = [
|
|
465
|
-
"--- a/crlf.txt",
|
|
466
|
-
"+++ b/crlf.txt",
|
|
467
|
-
"@@ -1,3 +1,3 @@",
|
|
468
|
-
" Line1",
|
|
469
|
-
"-Line2",
|
|
470
|
-
"+Modified",
|
|
471
|
-
" Line3",
|
|
472
|
-
].join("\n");
|
|
473
|
-
|
|
474
|
-
const result = await executeApplyPatch({ patch }, ctx);
|
|
475
|
-
|
|
476
|
-
expect(result.success).toBe(true);
|
|
477
|
-
const content = await fs.readFile(filePath, "utf-8");
|
|
478
|
-
expect(content).toContain("Modified");
|
|
479
|
-
expect(content).not.toContain("Line2");
|
|
480
|
-
});
|
|
481
|
-
|
|
482
|
-
it("rejects cwd that escapes the working directory", async () => {
|
|
483
|
-
const patch = ["--- a/hello.txt", "+++ b/hello.txt", "@@ -1 +1 @@", "-old", "+new"].join(
|
|
484
|
-
"\n",
|
|
485
|
-
);
|
|
486
|
-
|
|
487
|
-
const result = await executeApplyPatch({ patch, cwd: "/tmp" }, ctx);
|
|
488
|
-
|
|
489
|
-
expect(result.success).toBe(false);
|
|
490
|
-
expect(result.message).toContain("cwd must be within the working directory");
|
|
491
|
-
});
|
|
492
|
-
|
|
493
|
-
it("rejects cwd with .. that escapes working directory", async () => {
|
|
494
|
-
const patch = ["--- a/hello.txt", "+++ b/hello.txt", "@@ -1 +1 @@", "-old", "+new"].join(
|
|
495
|
-
"\n",
|
|
496
|
-
);
|
|
497
|
-
|
|
498
|
-
const result = await executeApplyPatch({ patch, cwd: "../../../tmp" }, ctx);
|
|
499
|
-
|
|
500
|
-
expect(result.success).toBe(false);
|
|
501
|
-
// The resolved path may not exist (triggering "does not exist") or may resolve
|
|
502
|
-
// outside the working directory (triggering "cwd must be within"). Both correctly
|
|
503
|
-
// reject the traversal attempt.
|
|
504
|
-
expect(result.message).toMatch(/cwd must be within the working directory|does not exist/);
|
|
505
|
-
});
|
|
506
|
-
|
|
507
|
-
it("accepts cwd that is a subdirectory of working directory", async () => {
|
|
508
|
-
const subDir = path.join(tempDir, "subdir");
|
|
509
|
-
await fs.mkdir(subDir, { recursive: true });
|
|
510
|
-
const filePath = path.join(subDir, "test.txt");
|
|
511
|
-
await fs.writeFile(filePath, "original\n");
|
|
512
|
-
|
|
513
|
-
const patch = [
|
|
514
|
-
"--- a/test.txt",
|
|
515
|
-
"+++ b/test.txt",
|
|
516
|
-
"@@ -1 +1 @@",
|
|
517
|
-
"-original",
|
|
518
|
-
"+modified",
|
|
519
|
-
].join("\n");
|
|
520
|
-
|
|
521
|
-
const result = await executeApplyPatch({ patch, cwd: "subdir" }, ctx);
|
|
522
|
-
|
|
523
|
-
expect(result.success).toBe(true);
|
|
524
|
-
const content = await fs.readFile(filePath, "utf-8");
|
|
525
|
-
expect(content).toContain("modified");
|
|
526
|
-
});
|
|
527
|
-
|
|
528
|
-
it("rejects patch exceeding 1MB size limit", async () => {
|
|
529
|
-
const largePatch =
|
|
530
|
-
"--- a/file.txt\n+++ b/file.txt\n@@ -1 +1 @@\n-old\n+" + "x".repeat(1_100_000);
|
|
531
|
-
|
|
532
|
-
const result = await executeApplyPatch({ patch: largePatch }, ctx);
|
|
533
|
-
|
|
534
|
-
expect(result.success).toBe(false);
|
|
535
|
-
expect(result.message).toContain("Patch too large");
|
|
536
|
-
});
|
|
537
|
-
});
|
|
538
|
-
});
|