@aria-cli/tools 1.0.19 → 1.0.31
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/dist/.aria-build-stamp.json +1 -1
- package/dist/ask-user-interaction.js +23 -0
- package/dist/cache/web-cache.js +67 -0
- package/dist/definitions/arion.js +105 -0
- package/dist/definitions/browser/browser.js +419 -0
- package/dist/definitions/browser/index.js +5 -0
- package/dist/definitions/browser/pw-downloads.js +115 -0
- package/dist/definitions/browser/pw-interactions.js +200 -0
- package/dist/definitions/browser/pw-responses.js +77 -0
- package/dist/definitions/browser/pw-session.js +311 -0
- package/dist/definitions/browser/pw-shared.js +67 -0
- package/dist/definitions/browser/pw-snapshot.js +302 -0
- package/dist/definitions/browser/pw-state.js +63 -0
- package/dist/definitions/browser/types.js +5 -0
- package/dist/definitions/code-intelligence.js +471 -0
- package/dist/definitions/core.js +110 -0
- package/dist/definitions/delegation.js +513 -0
- package/dist/definitions/deploy.js +66 -0
- package/dist/definitions/filesystem.js +197 -0
- package/dist/definitions/frg.js +64 -0
- package/{dist-cjs/definitions/index.d.ts → dist/definitions/index.js} +2 -0
- package/dist/definitions/memory.js +124 -0
- package/dist/definitions/messaging.js +626 -0
- package/dist/definitions/meta.js +350 -0
- package/dist/definitions/network.js +160 -0
- package/dist/definitions/outlook.js +278 -0
- package/dist/definitions/patch/apply-patch.js +185 -0
- package/dist/definitions/patch/fuzzy-match.js +167 -0
- package/{dist-cjs/definitions/patch/index.d.ts → dist/definitions/patch/index.js} +1 -0
- package/dist/definitions/patch/patch-parser.js +208 -0
- package/dist/definitions/patch/sandbox-paths.js +106 -0
- package/dist/definitions/process/index.js +5 -0
- package/dist/definitions/process/process-registry.js +214 -0
- package/dist/definitions/process/process.js +387 -0
- package/dist/definitions/process/pty-keys.js +255 -0
- package/dist/definitions/process/session-slug.js +143 -0
- package/dist/definitions/quip.js +196 -0
- package/dist/definitions/search.js +61 -0
- package/dist/definitions/session-history.js +70 -0
- package/dist/definitions/shell.js +182 -0
- package/dist/definitions/slack.js +181 -0
- package/dist/definitions/web.js +110 -0
- package/dist/executors/apply-patch.js +902 -0
- package/dist/executors/arion.js +120 -0
- package/dist/executors/code-intelligence.js +883 -0
- package/dist/executors/deploy.js +849 -0
- package/dist/executors/filesystem.js +1119 -0
- package/dist/executors/frg-freshness.js +577 -0
- package/dist/executors/frg.js +299 -0
- package/{dist-cjs/executors/index.d.ts → dist/executors/index.js} +22 -19
- package/dist/executors/learning-meta.js +1147 -0
- package/dist/executors/lsp-client.js +297 -0
- package/dist/executors/memory.js +751 -0
- package/dist/executors/meta.js +221 -0
- package/dist/executors/process-registry.js +466 -0
- package/dist/executors/pty-session-store.js +31 -0
- package/dist/executors/pty.js +281 -0
- package/dist/executors/restart.js +120 -0
- package/dist/executors/search-freshness.js +196 -0
- package/dist/executors/search-types.js +53 -0
- package/dist/executors/search.js +67 -0
- package/dist/executors/self-diagnose.js +399 -0
- package/dist/executors/session-history.js +284 -0
- package/dist/executors/shell-safety.js +474 -0
- package/dist/executors/shell.js +955 -0
- package/dist/executors/utils.js +34 -0
- package/dist/executors/web.js +543 -0
- package/dist/extraction/content-extraction.js +248 -0
- package/dist/extraction/index.js +5 -0
- package/dist/headless-control-contract.js +968 -0
- package/dist/{index-v49pd2a0.js → index-45qvfjbf.js} +2 -2
- package/dist/index.js +71 -372
- package/dist/local-control-http-auth.js +3 -0
- package/dist/mcp/client.js +182 -0
- package/dist/mcp/connection.js +484 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/jsonrpc.js +145 -0
- package/dist/mcp/types.js +8 -0
- package/dist/network-control-adapter.js +73 -0
- package/dist/network-runtime/address-types.js +166 -0
- package/dist/network-runtime/db-owner-fencing.js +70 -0
- package/dist/network-runtime/delivery-receipts.js +270 -0
- package/dist/network-runtime/direct-endpoint-authority.js +26 -0
- package/dist/network-runtime/index.js +13 -1
- package/dist/network-runtime/local-control-contract.js +628 -0
- package/dist/network-runtime/node-store-contract.js +35 -0
- package/dist/network-runtime/pair-route-contract.js +78 -0
- package/dist/network-runtime/peer-capabilities.js +29 -0
- package/dist/network-runtime/peer-principal-ref.js +13 -0
- package/dist/network-runtime/peer-state-machine.js +122 -0
- package/dist/network-runtime/protocol-schemas.js +206 -0
- package/dist/network-runtime/runtime-bootstrap-contract.js +61 -0
- package/dist/outlook/desktop-session.js +280 -0
- package/dist/policy.js +150 -0
- package/dist/providers/brave.js +63 -0
- package/dist/providers/duckduckgo.js +177 -0
- package/dist/providers/exa.js +64 -0
- package/dist/providers/firecrawl.js +56 -0
- package/{dist-cjs/providers/index.d.ts → dist/providers/index.js} +1 -1
- package/dist/providers/jina.js +50 -0
- package/dist/providers/router.js +97 -0
- package/dist/providers/search-provider.js +33 -0
- package/dist/providers/tavily.js +55 -0
- package/dist/pty-w5c9dv33.js +1 -0
- package/dist/quip/desktop-session.js +318 -0
- package/{dist-cjs/registry/index.d.ts → dist/registry/index.js} +1 -0
- package/dist/registry/registry.js +757 -0
- package/dist/runtime-socket-local-control-client.js +331 -0
- package/dist/security/dns-normalization.js +20 -0
- package/dist/security/dns-pinning.js +124 -0
- package/dist/security/external-content.js +92 -0
- package/dist/security/ssrf.js +182 -0
- package/dist/slack/desktop-session.js +325 -0
- package/dist/tool-factory.js +48 -0
- package/dist/types.js +8 -0
- package/dist/utils/retry.js +133 -0
- package/dist/utils/safe-parse-json.js +161 -0
- package/dist/utils/url.js +20 -0
- package/dist-cjs/ask-user-interaction.js +28 -0
- package/dist-cjs/cache/web-cache.js +71 -0
- package/dist-cjs/definitions/arion.js +108 -0
- package/dist-cjs/definitions/browser/browser.js +422 -0
- package/dist-cjs/definitions/browser/index.js +9 -0
- package/dist-cjs/definitions/browser/pw-downloads.js +118 -0
- package/dist-cjs/definitions/browser/pw-interactions.js +214 -0
- package/dist-cjs/definitions/browser/pw-responses.js +85 -0
- package/dist-cjs/definitions/browser/pw-session.js +327 -0
- package/dist-cjs/definitions/browser/pw-shared.js +73 -0
- package/dist-cjs/definitions/browser/pw-snapshot.js +308 -0
- package/dist-cjs/definitions/browser/pw-state.js +71 -0
- package/dist-cjs/definitions/browser/types.js +6 -0
- package/dist-cjs/definitions/code-intelligence.js +474 -0
- package/dist-cjs/definitions/core.js +134 -0
- package/dist-cjs/definitions/delegation.js +516 -0
- package/dist-cjs/definitions/deploy.js +69 -0
- package/dist-cjs/definitions/filesystem.js +200 -0
- package/dist-cjs/definitions/frg.js +67 -0
- package/dist-cjs/definitions/index.js +44 -0
- package/dist-cjs/definitions/memory.js +127 -0
- package/dist-cjs/definitions/messaging.js +632 -0
- package/dist-cjs/definitions/meta.js +353 -0
- package/dist-cjs/definitions/network.js +163 -0
- package/dist-cjs/definitions/outlook.js +281 -0
- package/dist-cjs/definitions/patch/apply-patch.js +192 -0
- package/dist-cjs/definitions/patch/fuzzy-match.js +173 -0
- package/dist-cjs/definitions/patch/index.js +6 -0
- package/dist-cjs/definitions/patch/patch-parser.js +216 -0
- package/dist-cjs/definitions/patch/sandbox-paths.js +114 -0
- package/dist-cjs/definitions/process/index.js +9 -0
- package/dist-cjs/definitions/process/process-registry.js +232 -0
- package/dist-cjs/definitions/process/process.js +390 -0
- package/dist-cjs/definitions/process/pty-keys.js +260 -0
- package/dist-cjs/definitions/process/session-slug.js +146 -0
- package/dist-cjs/definitions/quip.js +199 -0
- package/dist-cjs/definitions/search.js +64 -0
- package/dist-cjs/definitions/session-history.js +73 -0
- package/dist-cjs/definitions/shell.js +185 -0
- package/dist-cjs/definitions/slack.js +184 -0
- package/dist-cjs/definitions/web.js +113 -0
- package/dist-cjs/executors/apply-patch.js +939 -0
- package/dist-cjs/executors/arion.js +126 -0
- package/dist-cjs/executors/code-intelligence.js +926 -0
- package/dist-cjs/executors/deploy.js +870 -0
- package/dist-cjs/executors/filesystem.js +1164 -0
- package/dist-cjs/executors/frg-freshness.js +628 -0
- package/dist-cjs/executors/frg.js +335 -0
- package/dist-cjs/executors/index.js +144 -0
- package/dist-cjs/executors/learning-meta.js +1166 -0
- package/dist-cjs/executors/memory.js +797 -0
- package/dist-cjs/executors/meta.js +227 -0
- package/dist-cjs/executors/process-registry.js +470 -0
- package/dist-cjs/executors/pty-session-store.js +35 -0
- package/dist-cjs/executors/pty.js +289 -0
- package/dist-cjs/executors/restart.js +156 -0
- package/dist-cjs/executors/search-freshness.js +235 -0
- package/dist-cjs/executors/search-types.js +57 -0
- package/dist-cjs/executors/search.js +103 -0
- package/dist-cjs/executors/self-diagnose.js +435 -0
- package/dist-cjs/executors/session-history.js +321 -0
- package/dist-cjs/executors/shell-safety.js +479 -0
- package/dist-cjs/executors/shell.js +1002 -0
- package/dist-cjs/executors/utils.js +74 -0
- package/dist-cjs/executors/web.js +548 -0
- package/dist-cjs/extraction/content-extraction.js +289 -0
- package/dist-cjs/extraction/index.js +9 -0
- package/dist-cjs/headless-control-contract.js +973 -0
- package/dist-cjs/index.js +436 -385
- package/dist-cjs/local-control-http-auth.js +6 -0
- package/dist-cjs/mcp/client.js +186 -0
- package/dist-cjs/mcp/connection.js +488 -0
- package/dist-cjs/mcp/index.js +31 -0
- package/dist-cjs/mcp/jsonrpc.js +149 -0
- package/dist-cjs/mcp/types.js +9 -0
- package/dist-cjs/network-control-adapter.js +78 -0
- package/dist-cjs/network-runtime/address-types.js +169 -0
- package/dist-cjs/network-runtime/db-owner-fencing.js +77 -0
- package/dist-cjs/network-runtime/delivery-receipts.js +279 -0
- package/dist-cjs/network-runtime/direct-endpoint-authority.js +30 -0
- package/dist-cjs/network-runtime/index.js +173 -8
- package/dist-cjs/network-runtime/local-control-contract.js +634 -0
- package/dist-cjs/network-runtime/node-store-contract.js +39 -0
- package/dist-cjs/network-runtime/pair-route-contract.js +81 -0
- package/dist-cjs/network-runtime/peer-capabilities.js +38 -0
- package/dist-cjs/network-runtime/peer-principal-ref.js +16 -0
- package/dist-cjs/network-runtime/peer-state-machine.js +130 -0
- package/dist-cjs/network-runtime/protocol-schemas.js +213 -0
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.js +64 -0
- package/dist-cjs/outlook/desktop-session.js +319 -0
- package/dist-cjs/policy.js +156 -0
- package/dist-cjs/providers/brave.js +67 -0
- package/dist-cjs/providers/duckduckgo.js +181 -0
- package/dist-cjs/providers/exa.js +68 -0
- package/dist-cjs/providers/firecrawl.js +60 -0
- package/dist-cjs/providers/index.js +18 -0
- package/dist-cjs/providers/jina.js +54 -0
- package/dist-cjs/providers/router.js +101 -0
- package/dist-cjs/providers/search-provider.js +37 -0
- package/dist-cjs/providers/tavily.js +59 -0
- package/dist-cjs/quip/desktop-session.js +354 -0
- package/dist-cjs/registry/index.js +7 -0
- package/dist-cjs/registry/registry.js +762 -0
- package/dist-cjs/runtime-socket-local-control-client.js +368 -0
- package/dist-cjs/security/dns-normalization.js +23 -0
- package/dist-cjs/security/dns-pinning.js +161 -0
- package/dist-cjs/security/external-content.js +96 -0
- package/dist-cjs/security/ssrf.js +222 -0
- package/dist-cjs/slack/desktop-session.js +367 -0
- package/dist-cjs/tool-factory.js +51 -0
- package/dist-cjs/types.js +9 -0
- package/dist-cjs/utils/retry.js +170 -0
- package/dist-cjs/utils/safe-parse-json.js +165 -0
- package/dist-cjs/utils/url.js +24 -0
- package/package.json +11 -10
- package/dist/ask-user-interaction.d.ts +0 -10
- package/dist/cache/web-cache.d.ts +0 -52
- package/dist/definitions/arion.d.ts +0 -8
- package/dist/definitions/browser/browser.d.ts +0 -2
- package/dist/definitions/browser/index.d.ts +0 -1
- package/dist/definitions/browser/pw-downloads.d.ts +0 -13
- package/dist/definitions/browser/pw-interactions.d.ts +0 -78
- package/dist/definitions/browser/pw-responses.d.ts +0 -28
- package/dist/definitions/browser/pw-session.d.ts +0 -65
- package/dist/definitions/browser/pw-shared.d.ts +0 -22
- package/dist/definitions/browser/pw-snapshot.d.ts +0 -34
- package/dist/definitions/browser/pw-state.d.ts +0 -22
- package/dist/definitions/browser/types.d.ts +0 -277
- package/dist/definitions/code-intelligence.d.ts +0 -8
- package/dist/definitions/core.d.ts +0 -47
- package/dist/definitions/delegation.d.ts +0 -11
- package/dist/definitions/deploy.d.ts +0 -15
- package/dist/definitions/filesystem.d.ts +0 -9
- package/dist/definitions/frg.d.ts +0 -3
- package/dist/definitions/index.d.ts +0 -19
- package/dist/definitions/memory.d.ts +0 -8
- package/dist/definitions/messaging.d.ts +0 -11
- package/dist/definitions/meta.d.ts +0 -11
- package/dist/definitions/network.d.ts +0 -11
- package/dist/definitions/outlook.d.ts +0 -2
- package/dist/definitions/patch/apply-patch.d.ts +0 -11
- package/dist/definitions/patch/fuzzy-match.d.ts +0 -10
- package/dist/definitions/patch/index.d.ts +0 -1
- package/dist/definitions/patch/patch-parser.d.ts +0 -50
- package/dist/definitions/patch/sandbox-paths.d.ts +0 -18
- package/dist/definitions/process/index.d.ts +0 -1
- package/dist/definitions/process/process-registry.d.ts +0 -67
- package/dist/definitions/process/process.d.ts +0 -9
- package/dist/definitions/process/pty-keys.d.ts +0 -13
- package/dist/definitions/process/session-slug.d.ts +0 -1
- package/dist/definitions/quip.d.ts +0 -2
- package/dist/definitions/search.d.ts +0 -9
- package/dist/definitions/session-history.d.ts +0 -11
- package/dist/definitions/shell.d.ts +0 -8
- package/dist/definitions/slack.d.ts +0 -2
- package/dist/definitions/web.d.ts +0 -8
- package/dist/executors/apply-patch.d.ts +0 -51
- package/dist/executors/arion.d.ts +0 -50
- package/dist/executors/code-intelligence.d.ts +0 -138
- package/dist/executors/deploy.d.ts +0 -169
- package/dist/executors/filesystem.d.ts +0 -150
- package/dist/executors/frg-freshness.d.ts +0 -93
- package/dist/executors/frg.d.ts +0 -27
- package/dist/executors/index.d.ts +0 -44
- package/dist/executors/learning-meta.d.ts +0 -87
- package/dist/executors/lsp-client.d.ts +0 -38
- package/dist/executors/memory.d.ts +0 -203
- package/dist/executors/meta.d.ts +0 -73
- package/dist/executors/process-registry.d.ts +0 -98
- package/dist/executors/pty-session-store.d.ts +0 -14
- package/dist/executors/pty.d.ts +0 -133
- package/dist/executors/restart.d.ts +0 -13
- package/dist/executors/search-freshness.d.ts +0 -50
- package/dist/executors/search-types.d.ts +0 -52
- package/dist/executors/search.d.ts +0 -11
- package/dist/executors/self-diagnose.d.ts +0 -89
- package/dist/executors/session-history.d.ts +0 -75
- package/dist/executors/shell-safety.d.ts +0 -27
- package/dist/executors/shell.d.ts +0 -168
- package/dist/executors/utils.d.ts +0 -20
- package/dist/executors/web.d.ts +0 -89
- package/dist/extraction/content-extraction.d.ts +0 -48
- package/dist/extraction/index.d.ts +0 -4
- package/dist/headless-control-contract.d.ts +0 -3182
- package/dist/index.d.ts +0 -62
- package/dist/local-control-http-auth.d.ts +0 -2
- package/dist/mcp/client.d.ts +0 -68
- package/dist/mcp/connection.d.ts +0 -54
- package/dist/mcp/index.d.ts +0 -10
- package/dist/mcp/jsonrpc.d.ts +0 -36
- package/dist/mcp/types.d.ts +0 -178
- package/dist/network-control-adapter.d.ts +0 -4
- package/dist/network-runtime/address-types.d.ts +0 -201
- package/dist/network-runtime/db-owner-fencing.d.ts +0 -43
- package/dist/network-runtime/delivery-receipts.d.ts +0 -117
- package/dist/network-runtime/direct-endpoint-authority.d.ts +0 -8
- package/dist/network-runtime/index.d.ts +0 -24
- package/dist/network-runtime/local-control-contract.d.ts +0 -758
- package/dist/network-runtime/node-store-contract.d.ts +0 -49
- package/dist/network-runtime/pair-route-contract.d.ts +0 -100
- package/dist/network-runtime/peer-capabilities.d.ts +0 -10
- package/dist/network-runtime/peer-principal-ref.d.ts +0 -9
- package/dist/network-runtime/peer-state-machine.d.ts +0 -70
- package/dist/network-runtime/protocol-schemas.d.ts +0 -328
- package/dist/network-runtime/runtime-bootstrap-contract.d.ts +0 -81
- package/dist/outlook/desktop-session.d.ts +0 -68
- package/dist/policy.d.ts +0 -43
- package/dist/providers/brave.d.ts +0 -10
- package/dist/providers/duckduckgo.d.ts +0 -18
- package/dist/providers/exa.d.ts +0 -10
- package/dist/providers/firecrawl.d.ts +0 -10
- package/dist/providers/index.d.ts +0 -8
- package/dist/providers/jina.d.ts +0 -10
- package/dist/providers/router.d.ts +0 -21
- package/dist/providers/search-provider.d.ts +0 -35
- package/dist/providers/tavily.d.ts +0 -10
- package/dist/pty-cf6pmvx6.js +0 -1
- package/dist/quip/desktop-session.d.ts +0 -69
- package/dist/registry/index.d.ts +0 -1
- package/dist/registry/registry.d.ts +0 -156
- package/dist/runtime-socket-local-control-client.d.ts +0 -10
- package/dist/security/dns-normalization.d.ts +0 -6
- package/dist/security/dns-pinning.d.ts +0 -27
- package/dist/security/external-content.d.ts +0 -40
- package/dist/security/ssrf.d.ts +0 -40
- package/dist/slack/desktop-session.d.ts +0 -69
- package/dist/tool-factory.d.ts +0 -46
- package/dist/types.d.ts +0 -1192
- package/dist/utils/retry.d.ts +0 -11
- package/dist/utils/safe-parse-json.d.ts +0 -26
- package/dist/utils/url.d.ts +0 -10
- package/dist-cjs/ask-user-interaction.d.ts +0 -10
- package/dist-cjs/cache/web-cache.d.ts +0 -52
- package/dist-cjs/definitions/arion.d.ts +0 -8
- package/dist-cjs/definitions/browser/browser.d.ts +0 -2
- package/dist-cjs/definitions/browser/index.d.ts +0 -1
- package/dist-cjs/definitions/browser/pw-downloads.d.ts +0 -13
- package/dist-cjs/definitions/browser/pw-interactions.d.ts +0 -78
- package/dist-cjs/definitions/browser/pw-responses.d.ts +0 -28
- package/dist-cjs/definitions/browser/pw-session.d.ts +0 -65
- package/dist-cjs/definitions/browser/pw-shared.d.ts +0 -22
- package/dist-cjs/definitions/browser/pw-snapshot.d.ts +0 -34
- package/dist-cjs/definitions/browser/pw-state.d.ts +0 -22
- package/dist-cjs/definitions/browser/types.d.ts +0 -277
- package/dist-cjs/definitions/code-intelligence.d.ts +0 -8
- package/dist-cjs/definitions/core.d.ts +0 -47
- package/dist-cjs/definitions/delegation.d.ts +0 -11
- package/dist-cjs/definitions/deploy.d.ts +0 -15
- package/dist-cjs/definitions/filesystem.d.ts +0 -9
- package/dist-cjs/definitions/frg.d.ts +0 -3
- package/dist-cjs/definitions/memory.d.ts +0 -8
- package/dist-cjs/definitions/messaging.d.ts +0 -11
- package/dist-cjs/definitions/meta.d.ts +0 -11
- package/dist-cjs/definitions/network.d.ts +0 -11
- package/dist-cjs/definitions/outlook.d.ts +0 -2
- package/dist-cjs/definitions/patch/apply-patch.d.ts +0 -11
- package/dist-cjs/definitions/patch/fuzzy-match.d.ts +0 -10
- package/dist-cjs/definitions/patch/patch-parser.d.ts +0 -50
- package/dist-cjs/definitions/patch/sandbox-paths.d.ts +0 -18
- package/dist-cjs/definitions/process/index.d.ts +0 -1
- package/dist-cjs/definitions/process/process-registry.d.ts +0 -67
- package/dist-cjs/definitions/process/process.d.ts +0 -9
- package/dist-cjs/definitions/process/pty-keys.d.ts +0 -13
- package/dist-cjs/definitions/process/session-slug.d.ts +0 -1
- package/dist-cjs/definitions/quip.d.ts +0 -2
- package/dist-cjs/definitions/search.d.ts +0 -9
- package/dist-cjs/definitions/session-history.d.ts +0 -11
- package/dist-cjs/definitions/shell.d.ts +0 -8
- package/dist-cjs/definitions/slack.d.ts +0 -2
- package/dist-cjs/definitions/web.d.ts +0 -8
- package/dist-cjs/executors/apply-patch.d.ts +0 -51
- package/dist-cjs/executors/arion.d.ts +0 -50
- package/dist-cjs/executors/code-intelligence.d.ts +0 -138
- package/dist-cjs/executors/deploy.d.ts +0 -169
- package/dist-cjs/executors/filesystem.d.ts +0 -150
- package/dist-cjs/executors/frg-freshness.d.ts +0 -93
- package/dist-cjs/executors/frg.d.ts +0 -27
- package/dist-cjs/executors/learning-meta.d.ts +0 -87
- package/dist-cjs/executors/lsp-client.d.ts +0 -38
- package/dist-cjs/executors/memory.d.ts +0 -203
- package/dist-cjs/executors/meta.d.ts +0 -73
- package/dist-cjs/executors/process-registry.d.ts +0 -98
- package/dist-cjs/executors/pty-session-store.d.ts +0 -14
- package/dist-cjs/executors/pty.d.ts +0 -133
- package/dist-cjs/executors/restart.d.ts +0 -13
- package/dist-cjs/executors/search-freshness.d.ts +0 -50
- package/dist-cjs/executors/search-types.d.ts +0 -52
- package/dist-cjs/executors/search.d.ts +0 -11
- package/dist-cjs/executors/self-diagnose.d.ts +0 -89
- package/dist-cjs/executors/session-history.d.ts +0 -75
- package/dist-cjs/executors/shell-safety.d.ts +0 -27
- package/dist-cjs/executors/shell.d.ts +0 -168
- package/dist-cjs/executors/utils.d.ts +0 -20
- package/dist-cjs/executors/web.d.ts +0 -89
- package/dist-cjs/extraction/content-extraction.d.ts +0 -48
- package/dist-cjs/extraction/index.d.ts +0 -4
- package/dist-cjs/headless-control-contract.d.ts +0 -3182
- package/dist-cjs/index.d.ts +0 -62
- package/dist-cjs/local-control-http-auth.d.ts +0 -2
- package/dist-cjs/mcp/client.d.ts +0 -68
- package/dist-cjs/mcp/connection.d.ts +0 -54
- package/dist-cjs/mcp/index.d.ts +0 -10
- package/dist-cjs/mcp/jsonrpc.d.ts +0 -36
- package/dist-cjs/mcp/types.d.ts +0 -178
- package/dist-cjs/network-control-adapter.d.ts +0 -4
- package/dist-cjs/network-runtime/address-types.d.ts +0 -201
- package/dist-cjs/network-runtime/db-owner-fencing.d.ts +0 -43
- package/dist-cjs/network-runtime/delivery-receipts.d.ts +0 -117
- package/dist-cjs/network-runtime/direct-endpoint-authority.d.ts +0 -8
- package/dist-cjs/network-runtime/index.d.ts +0 -24
- package/dist-cjs/network-runtime/local-control-contract.d.ts +0 -758
- package/dist-cjs/network-runtime/node-store-contract.d.ts +0 -49
- package/dist-cjs/network-runtime/pair-route-contract.d.ts +0 -100
- package/dist-cjs/network-runtime/peer-capabilities.d.ts +0 -10
- package/dist-cjs/network-runtime/peer-principal-ref.d.ts +0 -9
- package/dist-cjs/network-runtime/peer-state-machine.d.ts +0 -70
- package/dist-cjs/network-runtime/protocol-schemas.d.ts +0 -328
- package/dist-cjs/network-runtime/runtime-bootstrap-contract.d.ts +0 -81
- package/dist-cjs/outlook/desktop-session.d.ts +0 -68
- package/dist-cjs/policy.d.ts +0 -43
- package/dist-cjs/providers/brave.d.ts +0 -10
- package/dist-cjs/providers/duckduckgo.d.ts +0 -18
- package/dist-cjs/providers/exa.d.ts +0 -10
- package/dist-cjs/providers/firecrawl.d.ts +0 -10
- package/dist-cjs/providers/jina.d.ts +0 -10
- package/dist-cjs/providers/router.d.ts +0 -21
- package/dist-cjs/providers/search-provider.d.ts +0 -35
- package/dist-cjs/providers/tavily.d.ts +0 -10
- package/dist-cjs/quip/desktop-session.d.ts +0 -69
- package/dist-cjs/registry/registry.d.ts +0 -156
- package/dist-cjs/runtime-socket-local-control-client.d.ts +0 -10
- package/dist-cjs/security/dns-normalization.d.ts +0 -6
- package/dist-cjs/security/dns-pinning.d.ts +0 -27
- package/dist-cjs/security/external-content.d.ts +0 -40
- package/dist-cjs/security/ssrf.d.ts +0 -40
- package/dist-cjs/slack/desktop-session.d.ts +0 -69
- package/dist-cjs/tool-factory.d.ts +0 -46
- package/dist-cjs/types.d.ts +0 -1192
- package/dist-cjs/utils/retry.d.ts +0 -11
- package/dist-cjs/utils/safe-parse-json.d.ts +0 -26
- package/dist-cjs/utils/url.d.ts +0 -10
|
@@ -0,0 +1,626 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Messaging tool definitions
|
|
3
|
+
*
|
|
4
|
+
* Tools: send_message, check_messages, search_messages, get_thread (4 tools)
|
|
5
|
+
*
|
|
6
|
+
* Inter-agent messaging for arions, workers, and leaders.
|
|
7
|
+
* All tools use context.messageStore (injected by runner when Memoria is available).
|
|
8
|
+
* When the message store isn't wired, tools return a clear error.
|
|
9
|
+
*/
|
|
10
|
+
import crypto from "node:crypto";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { tool } from "../tool-factory.js";
|
|
13
|
+
import { canonicalizeDeliveryReceipt, InboxAddressSchema } from "../network-runtime/index.js";
|
|
14
|
+
const SENDER_INBOX_METADATA_KEY = "senderInbox";
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the local inbox address from ToolContext.
|
|
17
|
+
*
|
|
18
|
+
* Throws instead of returning null — a missing inbox address is a wiring bug
|
|
19
|
+
* (the entrypoint failed to set nodeId), not a user error. Silent message
|
|
20
|
+
* drops are structurally impossible: tools either route correctly or crash loudly.
|
|
21
|
+
*/
|
|
22
|
+
function resolveInboxAddress(context) {
|
|
23
|
+
if (context.inboxAddress) {
|
|
24
|
+
return context.inboxAddress;
|
|
25
|
+
}
|
|
26
|
+
if (context.nodeId) {
|
|
27
|
+
return { kind: "node", nodeId: context.nodeId };
|
|
28
|
+
}
|
|
29
|
+
throw new Error("Inbox address not available: neither context.inboxAddress nor context.nodeId is set. " +
|
|
30
|
+
"The entrypoint must wire nodeId into ToolContext (via RunOptions.nodeId or direct inboxAddress). " +
|
|
31
|
+
"This is a wiring bug — check tool-executor.ts and RunSession.toRunOptions().");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Resolve ALL inbox addresses the caller should see.
|
|
35
|
+
*
|
|
36
|
+
* When the runner is an attached client ({kind: "client", clientId}), remote
|
|
37
|
+
* peer messages still land in the node inbox ({kind: "node", nodeId}). The TUI
|
|
38
|
+
* status bar already polls both — this helper lets the read tools do the same
|
|
39
|
+
* so the LLM sees everything the user sees.
|
|
40
|
+
*/
|
|
41
|
+
function resolveAllInboxAddresses(context) {
|
|
42
|
+
const primary = resolveInboxAddress(context);
|
|
43
|
+
if (primary.kind === "client" && context.nodeId) {
|
|
44
|
+
return [primary, { kind: "node", nodeId: context.nodeId }];
|
|
45
|
+
}
|
|
46
|
+
return [primary];
|
|
47
|
+
}
|
|
48
|
+
function resolveSenderIdentity(context, inboxAddress) {
|
|
49
|
+
const senderType = context.arion
|
|
50
|
+
? "arion"
|
|
51
|
+
: (context.senderType ?? "leader");
|
|
52
|
+
if (context.arion) {
|
|
53
|
+
return {
|
|
54
|
+
id: context.arion.id,
|
|
55
|
+
name: context.arion.name,
|
|
56
|
+
type: senderType,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
id: context.nodeId ??
|
|
61
|
+
(inboxAddress.kind === "client" ? inboxAddress.clientId : inboxAddress.nodeId),
|
|
62
|
+
name: "ARIA",
|
|
63
|
+
type: senderType,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async function listAttachedClients(context) {
|
|
67
|
+
return Promise.resolve(context.networkControl?.listAttachedClients?.() ?? []);
|
|
68
|
+
}
|
|
69
|
+
function buildUnknownRecipientError(context, recipientRef) {
|
|
70
|
+
const localRecipientHint = context.manager
|
|
71
|
+
? "registered local mailbox id or arion name"
|
|
72
|
+
: "registered local mailbox id or alias";
|
|
73
|
+
const sameHomeHint = context.networkControl?.listAttachedClients
|
|
74
|
+
? "exact same-home clientId from list_clients"
|
|
75
|
+
: "exact same-home clientId";
|
|
76
|
+
return (`Unknown recipient "${recipientRef}". ` +
|
|
77
|
+
`send_message requires an exact recipient identity: ${localRecipientHint}, exact remote nodeId, or ${sameHomeHint}.`);
|
|
78
|
+
}
|
|
79
|
+
async function resolveManagedLocalRecipient(context, recipientRef) {
|
|
80
|
+
const manager = context.manager;
|
|
81
|
+
if (!manager) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const [directByName, listed] = await Promise.all([
|
|
85
|
+
manager.get(recipientRef).catch(() => null),
|
|
86
|
+
manager.list().catch(() => []),
|
|
87
|
+
]);
|
|
88
|
+
const exactMatch = directByName ??
|
|
89
|
+
listed.find((candidate) => candidate.id === recipientRef || candidate.name === recipientRef) ??
|
|
90
|
+
null;
|
|
91
|
+
if (!exactMatch) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
kind: "local",
|
|
96
|
+
mailboxId: exactMatch.id,
|
|
97
|
+
recipientName: exactMatch.name,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function extractSenderInboxFromMetadata(metadata) {
|
|
101
|
+
if (!metadata) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const parsed = JSON.parse(metadata);
|
|
106
|
+
if (!(SENDER_INBOX_METADATA_KEY in parsed)) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
return InboxAddressSchema.parse(parsed[SENDER_INBOX_METADATA_KEY]);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async function resolveRecipientFromReplyTarget(context, replyTo, inboxAddress) {
|
|
116
|
+
if (typeof context.messageStore?.getMessageForInbox !== "function") {
|
|
117
|
+
return {
|
|
118
|
+
ok: false,
|
|
119
|
+
error: "Reply routing is unavailable: the message store cannot resolve inbox-scoped message ids.",
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
const original = context.messageStore.getMessageForInbox(inboxAddress, replyTo);
|
|
123
|
+
if (!original) {
|
|
124
|
+
return {
|
|
125
|
+
ok: false,
|
|
126
|
+
error: `Cannot reply to message "${replyTo}" because it is not present in the current inbox.`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const senderInbox = extractSenderInboxFromMetadata(original.metadata);
|
|
130
|
+
if (senderInbox?.kind === "client") {
|
|
131
|
+
return {
|
|
132
|
+
ok: true,
|
|
133
|
+
recipient: {
|
|
134
|
+
kind: "client",
|
|
135
|
+
clientId: senderInbox.clientId,
|
|
136
|
+
recipientName: original.sender_name,
|
|
137
|
+
self: inboxAddress.kind === "client" && senderInbox.clientId === inboxAddress.clientId,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return resolveRecipientIdentity(context, original.sender_id, inboxAddress);
|
|
142
|
+
}
|
|
143
|
+
async function resolveRecipientIdentity(context, recipientRef, inboxAddress) {
|
|
144
|
+
const localMailbox = context.mailbox;
|
|
145
|
+
const peers = context.networkControl?.listPeers() ?? [];
|
|
146
|
+
const attachedClients = await listAttachedClients(context);
|
|
147
|
+
const exactClient = attachedClients.find((client) => client.clientId === recipientRef);
|
|
148
|
+
if (exactClient) {
|
|
149
|
+
return {
|
|
150
|
+
ok: true,
|
|
151
|
+
recipient: {
|
|
152
|
+
kind: "client",
|
|
153
|
+
clientId: exactClient.clientId,
|
|
154
|
+
recipientName: exactClient.displayLabel.trim() || exactClient.clientId,
|
|
155
|
+
self: exactClient.self,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const exactPeer = peers.find((peer) => peer.nodeId === recipientRef);
|
|
160
|
+
if (exactPeer) {
|
|
161
|
+
if (exactPeer.routeOwnership === "superseded" ||
|
|
162
|
+
exactPeer.deliveryReadiness === "cannot_address") {
|
|
163
|
+
return {
|
|
164
|
+
ok: false,
|
|
165
|
+
error: `Peer "${recipientRef}" is not currently addressable` +
|
|
166
|
+
(exactPeer.routeOwnership === "superseded"
|
|
167
|
+
? " because its direct route claim has been superseded."
|
|
168
|
+
: "."),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
ok: true,
|
|
173
|
+
recipient: {
|
|
174
|
+
kind: "remote",
|
|
175
|
+
nodeId: exactPeer.nodeId,
|
|
176
|
+
recipientName: exactPeer.displayNameSnapshot ?? exactPeer.nodeId,
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const hasLocalRecipientId = typeof localMailbox?.has === "function" && localMailbox.has(recipientRef);
|
|
181
|
+
if (hasLocalRecipientId) {
|
|
182
|
+
return {
|
|
183
|
+
ok: true,
|
|
184
|
+
recipient: {
|
|
185
|
+
kind: "local",
|
|
186
|
+
mailboxId: recipientRef,
|
|
187
|
+
recipientName: recipientRef,
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const hasLocalRecipientAlias = typeof localMailbox?.hasByName === "function" && localMailbox.hasByName(recipientRef);
|
|
192
|
+
if (hasLocalRecipientAlias) {
|
|
193
|
+
const canonicalLocalRecipientId = typeof localMailbox?.resolveId === "function"
|
|
194
|
+
? localMailbox.resolveId(recipientRef)
|
|
195
|
+
: undefined;
|
|
196
|
+
if (!canonicalLocalRecipientId) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
error: `Registered local alias "${recipientRef}" is missing a canonical mailbox id`,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
ok: true,
|
|
204
|
+
recipient: {
|
|
205
|
+
kind: "local",
|
|
206
|
+
mailboxId: canonicalLocalRecipientId,
|
|
207
|
+
recipientName: recipientRef,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
const managedLocalRecipient = await resolveManagedLocalRecipient(context, recipientRef);
|
|
212
|
+
if (managedLocalRecipient) {
|
|
213
|
+
return {
|
|
214
|
+
ok: true,
|
|
215
|
+
recipient: managedLocalRecipient,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
// Resolve by display name — allows @mentioning peers by name instead of nodeId.
|
|
219
|
+
const recipientRefLower = recipientRef.toLowerCase().replace(/^@/, "");
|
|
220
|
+
const displayMatches = peers.filter((peer) => peer.displayNameSnapshot?.toLowerCase() === recipientRefLower ||
|
|
221
|
+
peer.displayNameSnapshot?.toLowerCase() === recipientRef.toLowerCase());
|
|
222
|
+
if (displayMatches.length > 1) {
|
|
223
|
+
return { ok: false, error: `Ambiguous peer display name "${recipientRef}"` };
|
|
224
|
+
}
|
|
225
|
+
if (displayMatches.length === 1) {
|
|
226
|
+
const matchedPeer = displayMatches[0];
|
|
227
|
+
if (matchedPeer.routeOwnership === "superseded" ||
|
|
228
|
+
matchedPeer.deliveryReadiness === "cannot_address") {
|
|
229
|
+
return {
|
|
230
|
+
ok: false,
|
|
231
|
+
error: `Peer "${matchedPeer.displayNameSnapshot}" is not currently addressable.`,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
ok: true,
|
|
236
|
+
recipient: {
|
|
237
|
+
kind: "remote",
|
|
238
|
+
nodeId: matchedPeer.nodeId,
|
|
239
|
+
recipientName: matchedPeer.displayNameSnapshot ?? matchedPeer.nodeId,
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
const clientDisplayMatches = attachedClients.filter((client) => client.displayLabel?.toLowerCase() === recipientRefLower ||
|
|
244
|
+
client.displayLabel?.toLowerCase() === recipientRef.toLowerCase());
|
|
245
|
+
if (clientDisplayMatches.length > 1) {
|
|
246
|
+
return { ok: false, error: `Ambiguous same-home client label "${recipientRef}"` };
|
|
247
|
+
}
|
|
248
|
+
if (clientDisplayMatches.length === 1) {
|
|
249
|
+
const matchedClient = clientDisplayMatches[0];
|
|
250
|
+
return {
|
|
251
|
+
ok: true,
|
|
252
|
+
recipient: {
|
|
253
|
+
kind: "client",
|
|
254
|
+
clientId: matchedClient.clientId,
|
|
255
|
+
recipientName: matchedClient.displayLabel?.trim() || matchedClient.clientId,
|
|
256
|
+
self: matchedClient.self,
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
if (inboxAddress.kind === "client") {
|
|
261
|
+
return {
|
|
262
|
+
ok: false,
|
|
263
|
+
error: buildUnknownRecipientError(context, recipientRef),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
ok: true,
|
|
268
|
+
recipient: {
|
|
269
|
+
kind: "local",
|
|
270
|
+
mailboxId: recipientRef,
|
|
271
|
+
recipientName: recipientRef,
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Send a message to any agent (arion, worker, or leader).
|
|
277
|
+
* Messages are persisted and can be threaded via replyTo or correlated via correlationId.
|
|
278
|
+
*/
|
|
279
|
+
const send_message = tool({
|
|
280
|
+
name: "send_message",
|
|
281
|
+
description: "Send a message to any agent (arion, worker, or leader). " +
|
|
282
|
+
"Use @name or display name to address peers and clients (e.g. @vm1, @local-machine), " +
|
|
283
|
+
"or use an exact nodeId/clientId for precision. " +
|
|
284
|
+
"When replying to a received message, prefer replyTo and omit to so the tool routes back to the original sender automatically. " +
|
|
285
|
+
"Messages are persisted and can be threaded via replyTo or correlated via correlationId.",
|
|
286
|
+
parameters: z
|
|
287
|
+
.object({
|
|
288
|
+
to: z
|
|
289
|
+
.string()
|
|
290
|
+
.optional()
|
|
291
|
+
.describe("Recipient: @name or display name of a peer/client (e.g. @vm1, @local-machine), " +
|
|
292
|
+
"or exact nodeId/clientId for precision"),
|
|
293
|
+
type: z
|
|
294
|
+
.enum([
|
|
295
|
+
"quest",
|
|
296
|
+
"quest_update",
|
|
297
|
+
"progress",
|
|
298
|
+
"finding",
|
|
299
|
+
"question",
|
|
300
|
+
"answer",
|
|
301
|
+
"review_request",
|
|
302
|
+
"review_result",
|
|
303
|
+
"approval",
|
|
304
|
+
"directive",
|
|
305
|
+
"context",
|
|
306
|
+
"announcement",
|
|
307
|
+
"error",
|
|
308
|
+
])
|
|
309
|
+
.describe("Message type"),
|
|
310
|
+
content: z.string().describe("Message content"),
|
|
311
|
+
replyTo: z
|
|
312
|
+
.string()
|
|
313
|
+
.optional()
|
|
314
|
+
.describe("Message ID to reply to. When provided without to, the tool replies to the original sender automatically."),
|
|
315
|
+
correlationId: z
|
|
316
|
+
.string()
|
|
317
|
+
.optional()
|
|
318
|
+
.describe("Correlation ID for sub-thread conversations within a quest"),
|
|
319
|
+
questId: z
|
|
320
|
+
.string()
|
|
321
|
+
.optional()
|
|
322
|
+
.describe("Quest ID this message belongs to (e.g. quest_abc123)"),
|
|
323
|
+
priority: z
|
|
324
|
+
.number()
|
|
325
|
+
.min(0)
|
|
326
|
+
.max(4)
|
|
327
|
+
.optional()
|
|
328
|
+
.describe("Priority: 0=critical, 2=normal (default), 4=backlog"),
|
|
329
|
+
})
|
|
330
|
+
.superRefine((input, ctx) => {
|
|
331
|
+
if (!input.to && !input.replyTo) {
|
|
332
|
+
ctx.addIssue({
|
|
333
|
+
code: z.ZodIssueCode.custom,
|
|
334
|
+
path: ["to"],
|
|
335
|
+
message: 'Either "to" or "replyTo" is required.',
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}),
|
|
339
|
+
category: "messaging",
|
|
340
|
+
riskLevel: "moderate",
|
|
341
|
+
isReadOnly: false,
|
|
342
|
+
execute: async (input, context) => {
|
|
343
|
+
if (!context.messageStore) {
|
|
344
|
+
return {
|
|
345
|
+
success: false,
|
|
346
|
+
message: "Message store not available. Messaging requires Memoria.",
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
const inboxAddress = resolveInboxAddress(context);
|
|
350
|
+
const recipient = input.to && input.to.trim().length > 0
|
|
351
|
+
? await resolveRecipientIdentity(context, input.to, inboxAddress)
|
|
352
|
+
: input.replyTo
|
|
353
|
+
? await resolveRecipientFromReplyTarget(context, input.replyTo, inboxAddress)
|
|
354
|
+
: { ok: false, error: 'Either "to" or "replyTo" is required.' };
|
|
355
|
+
if (!recipient.ok) {
|
|
356
|
+
return {
|
|
357
|
+
success: false,
|
|
358
|
+
message: recipient.error,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
if (recipient.recipient.kind === "client" && recipient.recipient.self) {
|
|
362
|
+
return {
|
|
363
|
+
success: false,
|
|
364
|
+
message: "Cannot send a same-home message to yourself.",
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
const recipientId = recipient.recipient.kind === "remote"
|
|
368
|
+
? recipient.recipient.nodeId
|
|
369
|
+
: recipient.recipient.kind === "client"
|
|
370
|
+
? recipient.recipient.clientId
|
|
371
|
+
: recipient.recipient.mailboxId;
|
|
372
|
+
const sender = resolveSenderIdentity(context, inboxAddress);
|
|
373
|
+
const resolvedTargetLabel = input.to ?? recipient.recipient.recipientName;
|
|
374
|
+
const msg = {
|
|
375
|
+
id: crypto.randomUUID(),
|
|
376
|
+
version: 1,
|
|
377
|
+
sender,
|
|
378
|
+
recipient: { id: recipientId, name: recipient.recipient.recipientName },
|
|
379
|
+
replyTo: input.replyTo,
|
|
380
|
+
correlationId: input.correlationId,
|
|
381
|
+
questId: input.questId,
|
|
382
|
+
type: input.type,
|
|
383
|
+
content: input.content,
|
|
384
|
+
metadata: inboxAddress.kind === "client"
|
|
385
|
+
? {
|
|
386
|
+
[SENDER_INBOX_METADATA_KEY]: inboxAddress,
|
|
387
|
+
}
|
|
388
|
+
: undefined,
|
|
389
|
+
timestamp: Date.now(),
|
|
390
|
+
priority: (input.priority ?? 2),
|
|
391
|
+
...(recipient.recipient.kind === "client"
|
|
392
|
+
? {
|
|
393
|
+
recipientInbox: {
|
|
394
|
+
kind: "client",
|
|
395
|
+
clientId: recipient.recipient.clientId,
|
|
396
|
+
},
|
|
397
|
+
}
|
|
398
|
+
: {}),
|
|
399
|
+
};
|
|
400
|
+
// Route through Mailbox if available (handles delivery + persistence)
|
|
401
|
+
if (context.mailbox) {
|
|
402
|
+
try {
|
|
403
|
+
const receipt = canonicalizeDeliveryReceipt(await context.mailbox.sendDurable(msg));
|
|
404
|
+
const receiptSummary = receipt.deliveryState === "queued_for_route"
|
|
405
|
+
? `accepted and queued for route establishment`
|
|
406
|
+
: receipt.deliveryState === "dispatching"
|
|
407
|
+
? `sent and awaiting remote acknowledgement`
|
|
408
|
+
: receipt.delivered
|
|
409
|
+
? `delivered`
|
|
410
|
+
: `sent`;
|
|
411
|
+
const routeSummary = receipt.sessionState
|
|
412
|
+
? ` session=${receipt.sessionState}, delivery=${receipt.deliveryReadiness ?? "unknown"}`
|
|
413
|
+
: "";
|
|
414
|
+
const reasonSummary = receipt.queuedReason ? ` reason=${receipt.queuedReason}` : "";
|
|
415
|
+
return {
|
|
416
|
+
success: true,
|
|
417
|
+
message: `Message ${receiptSummary} for "${resolvedTargetLabel}" via ${receipt.transport}` +
|
|
418
|
+
`${routeSummary}${reasonSummary} (type: ${input.type}, id: ${msg.id})`,
|
|
419
|
+
data: {
|
|
420
|
+
id: msg.id,
|
|
421
|
+
to: recipientId,
|
|
422
|
+
type: input.type,
|
|
423
|
+
delivered: receipt.delivered,
|
|
424
|
+
queued: receipt.queued,
|
|
425
|
+
transport: receipt.transport,
|
|
426
|
+
accepted: receipt.accepted ?? true,
|
|
427
|
+
deliveryState: receipt.deliveryState,
|
|
428
|
+
sessionState: receipt.sessionState,
|
|
429
|
+
deliveryReadiness: receipt.deliveryReadiness,
|
|
430
|
+
queuedReason: receipt.queuedReason,
|
|
431
|
+
},
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
catch (e) {
|
|
435
|
+
// Fail closed for known remote peers — a local fallback is not delivery.
|
|
436
|
+
if (recipient.recipient.kind === "remote") {
|
|
437
|
+
context.messageStore.store(msg, "sent", inboxAddress);
|
|
438
|
+
return {
|
|
439
|
+
success: false,
|
|
440
|
+
message: `Message delivery failed for "${resolvedTargetLabel}": ${e.message}`,
|
|
441
|
+
data: {
|
|
442
|
+
id: msg.id,
|
|
443
|
+
to: recipient.recipient.nodeId,
|
|
444
|
+
type: input.type,
|
|
445
|
+
delivered: false,
|
|
446
|
+
},
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
// Local fallback only makes sense when no remote peer principal was resolved.
|
|
450
|
+
context.messageStore.store(msg, "sent", inboxAddress);
|
|
451
|
+
return {
|
|
452
|
+
success: true,
|
|
453
|
+
message: `Message stored locally for "${resolvedTargetLabel}" but delivery failed: ${e.message}`,
|
|
454
|
+
data: { id: msg.id, to: recipientId, type: input.type, delivered: false },
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// No Mailbox — store locally only (single-process mode)
|
|
459
|
+
context.messageStore.store(msg, "sent", inboxAddress);
|
|
460
|
+
return {
|
|
461
|
+
success: true,
|
|
462
|
+
message: `Message sent to "${resolvedTargetLabel}" (type: ${input.type}, id: ${msg.id})`,
|
|
463
|
+
data: { id: msg.id, to: recipientId, type: input.type, delivered: false },
|
|
464
|
+
};
|
|
465
|
+
},
|
|
466
|
+
});
|
|
467
|
+
/**
|
|
468
|
+
* Check your message inbox.
|
|
469
|
+
* Returns unread messages by default, with optional filters.
|
|
470
|
+
*/
|
|
471
|
+
const check_messages = tool({
|
|
472
|
+
name: "check_messages",
|
|
473
|
+
description: "Check your message inbox. Returns unread messages by default, with optional filters.",
|
|
474
|
+
parameters: z.object({
|
|
475
|
+
unreadOnly: z.boolean().optional().describe("Only show unread messages (default: true)"),
|
|
476
|
+
from: z.string().optional().describe("Filter by sender name"),
|
|
477
|
+
type: z.string().optional().describe("Filter by message type"),
|
|
478
|
+
correlationId: z.string().optional().describe("Filter by correlation ID"),
|
|
479
|
+
limit: z.number().optional().describe("Max messages to return (default: 20)"),
|
|
480
|
+
}),
|
|
481
|
+
category: "messaging",
|
|
482
|
+
riskLevel: "safe",
|
|
483
|
+
isReadOnly: true,
|
|
484
|
+
execute: async (input, context) => {
|
|
485
|
+
if (!context.messageStore) {
|
|
486
|
+
return { success: false, message: "Message store not available." };
|
|
487
|
+
}
|
|
488
|
+
const inboxAddresses = resolveAllInboxAddresses(context);
|
|
489
|
+
const unreadOnly = input.unreadOnly ?? true;
|
|
490
|
+
const limit = input.limit ?? 20;
|
|
491
|
+
if (unreadOnly) {
|
|
492
|
+
const seen = new Set();
|
|
493
|
+
const messages = inboxAddresses
|
|
494
|
+
.flatMap((addr) => context.messageStore.getUnreadForInbox(addr, limit))
|
|
495
|
+
.filter((m) => {
|
|
496
|
+
if (seen.has(m.id))
|
|
497
|
+
return false;
|
|
498
|
+
seen.add(m.id);
|
|
499
|
+
return true;
|
|
500
|
+
})
|
|
501
|
+
.slice(0, limit);
|
|
502
|
+
if (messages.length === 0) {
|
|
503
|
+
return { success: true, message: "No unread messages.", data: { messages: [] } };
|
|
504
|
+
}
|
|
505
|
+
// Auto-mark as read
|
|
506
|
+
context.messageStore.markRead(messages.map((m) => m.id));
|
|
507
|
+
return {
|
|
508
|
+
success: true,
|
|
509
|
+
message: `${messages.length} message(s) received`,
|
|
510
|
+
data: { messages },
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
// Search with filters
|
|
514
|
+
const seen = new Set();
|
|
515
|
+
const messages = inboxAddresses
|
|
516
|
+
.flatMap((addr) => context.messageStore.searchInbox(addr, "", {
|
|
517
|
+
from: input.from,
|
|
518
|
+
type: input.type,
|
|
519
|
+
correlationId: input.correlationId,
|
|
520
|
+
limit,
|
|
521
|
+
}))
|
|
522
|
+
.filter((m) => {
|
|
523
|
+
if (seen.has(m.id))
|
|
524
|
+
return false;
|
|
525
|
+
seen.add(m.id);
|
|
526
|
+
return true;
|
|
527
|
+
})
|
|
528
|
+
.slice(0, limit);
|
|
529
|
+
return {
|
|
530
|
+
success: true,
|
|
531
|
+
message: `${messages.length} message(s) found`,
|
|
532
|
+
data: { messages },
|
|
533
|
+
};
|
|
534
|
+
},
|
|
535
|
+
});
|
|
536
|
+
/**
|
|
537
|
+
* Search message history by content with optional filters.
|
|
538
|
+
*/
|
|
539
|
+
const search_messages = tool({
|
|
540
|
+
name: "search_messages",
|
|
541
|
+
description: "Search message history by content with optional filters.",
|
|
542
|
+
parameters: z.object({
|
|
543
|
+
query: z.string().describe("Search text (matched against message content)"),
|
|
544
|
+
from: z.string().optional().describe("Filter by sender name"),
|
|
545
|
+
type: z.string().optional().describe("Filter by message type"),
|
|
546
|
+
correlationId: z.string().optional().describe("Filter by correlation ID"),
|
|
547
|
+
after: z.number().optional().describe("Only messages after this timestamp (epoch ms)"),
|
|
548
|
+
limit: z.number().optional().describe("Max results (default: 20)"),
|
|
549
|
+
}),
|
|
550
|
+
category: "messaging",
|
|
551
|
+
riskLevel: "safe",
|
|
552
|
+
isReadOnly: true,
|
|
553
|
+
execute: async (input, context) => {
|
|
554
|
+
if (!context.messageStore) {
|
|
555
|
+
return { success: false, message: "Message store not available." };
|
|
556
|
+
}
|
|
557
|
+
const inboxAddresses = resolveAllInboxAddresses(context);
|
|
558
|
+
const limit = input.limit ?? 20;
|
|
559
|
+
const seen = new Set();
|
|
560
|
+
const messages = inboxAddresses
|
|
561
|
+
.flatMap((addr) => context.messageStore.searchInbox(addr, input.query, {
|
|
562
|
+
from: input.from,
|
|
563
|
+
type: input.type,
|
|
564
|
+
correlationId: input.correlationId,
|
|
565
|
+
after: input.after,
|
|
566
|
+
limit,
|
|
567
|
+
}))
|
|
568
|
+
.filter((m) => {
|
|
569
|
+
if (seen.has(m.id))
|
|
570
|
+
return false;
|
|
571
|
+
seen.add(m.id);
|
|
572
|
+
return true;
|
|
573
|
+
})
|
|
574
|
+
.slice(0, limit);
|
|
575
|
+
return {
|
|
576
|
+
success: true,
|
|
577
|
+
message: `${messages.length} message(s) found`,
|
|
578
|
+
data: { messages },
|
|
579
|
+
};
|
|
580
|
+
},
|
|
581
|
+
});
|
|
582
|
+
/**
|
|
583
|
+
* Reconstruct a conversation thread from any message ID in the chain.
|
|
584
|
+
* Follows replyTo links to build the full thread.
|
|
585
|
+
*/
|
|
586
|
+
const get_thread = tool({
|
|
587
|
+
name: "get_thread",
|
|
588
|
+
description: "Reconstruct a conversation thread from any message ID in the chain. Follows replyTo links to build the full thread.",
|
|
589
|
+
parameters: z.object({
|
|
590
|
+
messageId: z.string().describe("Any message ID in the thread"),
|
|
591
|
+
}),
|
|
592
|
+
category: "messaging",
|
|
593
|
+
riskLevel: "safe",
|
|
594
|
+
isReadOnly: true,
|
|
595
|
+
execute: async (input, context) => {
|
|
596
|
+
if (!context.messageStore) {
|
|
597
|
+
return { success: false, message: "Message store not available." };
|
|
598
|
+
}
|
|
599
|
+
const inboxAddresses = resolveAllInboxAddresses(context);
|
|
600
|
+
const seen = new Set();
|
|
601
|
+
const thread = inboxAddresses
|
|
602
|
+
.flatMap((addr) => context.messageStore.getThreadForInbox(addr, input.messageId))
|
|
603
|
+
.filter((m) => {
|
|
604
|
+
if (seen.has(m.id))
|
|
605
|
+
return false;
|
|
606
|
+
seen.add(m.id);
|
|
607
|
+
return true;
|
|
608
|
+
});
|
|
609
|
+
if (thread.length === 0) {
|
|
610
|
+
return { success: false, message: `No thread found for message ${input.messageId}` };
|
|
611
|
+
}
|
|
612
|
+
return {
|
|
613
|
+
success: true,
|
|
614
|
+
message: `Thread with ${thread.length} message(s)`,
|
|
615
|
+
data: { thread },
|
|
616
|
+
};
|
|
617
|
+
},
|
|
618
|
+
});
|
|
619
|
+
/** Messaging tool definitions (4) */
|
|
620
|
+
export const MESSAGING_TOOL_DEFINITIONS = [
|
|
621
|
+
send_message,
|
|
622
|
+
check_messages,
|
|
623
|
+
search_messages,
|
|
624
|
+
get_thread,
|
|
625
|
+
];
|
|
626
|
+
//# sourceMappingURL=messaging.js.map
|