agent-nuvira 3.3.3 → 3.3.4
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/README.md +13 -5
- package/dist/agent-sdk/src/agent.d.ts +2 -0
- package/dist/agent-sdk/src/agent.d.ts.map +1 -1
- package/dist/agent-sdk/src/define.d.ts +64 -0
- package/dist/agent-sdk/src/define.d.ts.map +1 -0
- package/dist/agent-sdk/src/define.js +76 -0
- package/dist/agent-sdk/src/define.js.map +1 -0
- package/dist/agent-sdk/src/index.d.ts +9 -0
- package/dist/agent-sdk/src/index.d.ts.map +1 -1
- package/dist/agent-sdk/src/index.js +9 -0
- package/dist/agent-sdk/src/index.js.map +1 -1
- package/dist/agent-sdk/src/scaffold.d.ts +11 -0
- package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
- package/dist/agent-sdk/src/scaffold.js +16 -6
- package/dist/agent-sdk/src/scaffold.js.map +1 -1
- package/dist/agents/long-form-plan.d.ts.map +1 -1
- package/dist/agents/long-form-plan.js +2 -1
- package/dist/agents/long-form-plan.js.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +5 -4
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/agent.d.ts +2 -2
- package/dist/cli/agent.js +10 -10
- package/dist/cli/chat.d.ts +94 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +354 -20
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +5 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +9 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +3 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/edit.js +2 -2
- package/dist/cli/eval.d.ts +17 -0
- package/dist/cli/eval.d.ts.map +1 -1
- package/dist/cli/eval.js +105 -2
- package/dist/cli/eval.js.map +1 -1
- package/dist/cli/execute.d.ts +16 -1
- package/dist/cli/execute.d.ts.map +1 -1
- package/dist/cli/execute.js +192 -22
- package/dist/cli/execute.js.map +1 -1
- package/dist/cli/loop-executor.d.ts +55 -0
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +212 -13
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +9 -8
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/models.d.ts +1 -1
- package/dist/cli/models.js +4 -4
- package/dist/cli/parity.d.ts +85 -0
- package/dist/cli/parity.d.ts.map +1 -0
- package/dist/cli/parity.js +506 -0
- package/dist/cli/parity.js.map +1 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +2 -1
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/retrieval.d.ts.map +1 -1
- package/dist/cli/retrieval.js +5 -4
- package/dist/cli/retrieval.js.map +1 -1
- package/dist/cli/sdk.js +4 -4
- package/dist/cli/sdk.js.map +1 -1
- package/dist/cli/trace.d.ts.map +1 -1
- package/dist/cli/trace.js +2 -1
- package/dist/cli/trace.js.map +1 -1
- package/dist/cli/workflow.js +2 -2
- package/dist/cli/workflow.js.map +1 -1
- package/dist/config/types.d.ts +44 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/findings/verdicts.d.ts +241 -0
- package/dist/findings/verdicts.d.ts.map +1 -0
- package/dist/findings/verdicts.js +284 -0
- package/dist/findings/verdicts.js.map +1 -0
- package/dist/gateway/adapters.d.ts +65 -0
- package/dist/gateway/adapters.d.ts.map +1 -1
- package/dist/gateway/adapters.js +216 -10
- package/dist/gateway/adapters.js.map +1 -1
- package/dist/gateway/channel-directory.d.ts +31 -0
- package/dist/gateway/channel-directory.d.ts.map +1 -1
- package/dist/gateway/channel-directory.js +40 -0
- package/dist/gateway/channel-directory.js.map +1 -1
- package/dist/gateway/gateway-log.d.ts +1 -1
- package/dist/gateway/gateway-log.d.ts.map +1 -1
- package/dist/gateway/gateway-log.js.map +1 -1
- package/dist/gateway/hooks.d.ts +87 -19
- package/dist/gateway/hooks.d.ts.map +1 -1
- package/dist/gateway/hooks.js +62 -23
- package/dist/gateway/hooks.js.map +1 -1
- package/dist/gateway/inbound-media.d.ts +147 -0
- package/dist/gateway/inbound-media.d.ts.map +1 -0
- package/dist/gateway/inbound-media.js +317 -0
- package/dist/gateway/inbound-media.js.map +1 -0
- package/dist/gateway/inbox.d.ts +8 -1
- package/dist/gateway/inbox.d.ts.map +1 -1
- package/dist/gateway/inbox.js.map +1 -1
- package/dist/gateway/platform-config.d.ts +14 -0
- package/dist/gateway/platform-config.d.ts.map +1 -1
- package/dist/gateway/platform-config.js +26 -8
- package/dist/gateway/platform-config.js.map +1 -1
- package/dist/gateway/realtime.d.ts +114 -0
- package/dist/gateway/realtime.d.ts.map +1 -0
- package/dist/gateway/realtime.js +402 -0
- package/dist/gateway/realtime.js.map +1 -0
- package/dist/gateway/registry.d.ts +31 -0
- package/dist/gateway/registry.d.ts.map +1 -1
- package/dist/gateway/registry.js +224 -4
- package/dist/gateway/registry.js.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
- package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
- package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
- package/dist/gateway/whatsapp/bridge.d.ts +6 -2
- package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
- package/dist/gateway/whatsapp/bridge.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/inference/factory.d.ts +14 -0
- package/dist/inference/factory.d.ts.map +1 -1
- package/dist/inference/factory.js +17 -0
- package/dist/inference/factory.js.map +1 -1
- package/dist/inference/groq-adapter.d.ts +2 -0
- package/dist/inference/groq-adapter.d.ts.map +1 -1
- package/dist/inference/groq-adapter.js +16 -6
- package/dist/inference/groq-adapter.js.map +1 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +29 -0
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/benchmark.d.ts.map +1 -1
- package/dist/learning/benchmark.js +3 -2
- package/dist/learning/benchmark.js.map +1 -1
- package/dist/learning/continuation.d.ts.map +1 -1
- package/dist/learning/continuation.js +2 -1
- package/dist/learning/continuation.js.map +1 -1
- package/dist/learning/cost-tracker.d.ts.map +1 -1
- package/dist/learning/cost-tracker.js +2 -1
- package/dist/learning/cost-tracker.js.map +1 -1
- package/dist/learning/deferred-task.d.ts.map +1 -1
- package/dist/learning/deferred-task.js +13 -4
- package/dist/learning/deferred-task.js.map +1 -1
- package/dist/learning/eval-framework.d.ts.map +1 -1
- package/dist/learning/eval-framework.js +2 -1
- package/dist/learning/eval-framework.js.map +1 -1
- package/dist/learning/long-form.d.ts.map +1 -1
- package/dist/learning/long-form.js +2 -1
- package/dist/learning/long-form.js.map +1 -1
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +2 -1
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/reasoning-cache.d.ts.map +1 -1
- package/dist/learning/reasoning-cache.js +2 -1
- package/dist/learning/reasoning-cache.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +37 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +66 -0
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +2 -1
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/retrieval.d.ts.map +1 -1
- package/dist/learning/retrieval.js +2 -1
- package/dist/learning/retrieval.js.map +1 -1
- package/dist/learning/seeded-benchmark.d.ts +160 -0
- package/dist/learning/seeded-benchmark.d.ts.map +1 -0
- package/dist/learning/seeded-benchmark.js +321 -0
- package/dist/learning/seeded-benchmark.js.map +1 -0
- package/dist/learning/seeded-bugs.d.ts +142 -0
- package/dist/learning/seeded-bugs.d.ts.map +1 -0
- package/dist/learning/seeded-bugs.js +535 -0
- package/dist/learning/seeded-bugs.js.map +1 -0
- package/dist/learning/step-checkpoint.d.ts +127 -0
- package/dist/learning/step-checkpoint.d.ts.map +1 -0
- package/dist/learning/step-checkpoint.js +244 -0
- package/dist/learning/step-checkpoint.js.map +1 -0
- package/dist/nlu/intent-confirm.d.ts +23 -1
- package/dist/nlu/intent-confirm.d.ts.map +1 -1
- package/dist/nlu/intent-confirm.js +85 -2
- package/dist/nlu/intent-confirm.js.map +1 -1
- package/dist/nlu/learnings.d.ts +7 -0
- package/dist/nlu/learnings.d.ts.map +1 -1
- package/dist/nlu/learnings.js +7 -0
- package/dist/nlu/learnings.js.map +1 -1
- package/dist/observability/debug-log.d.ts +250 -0
- package/dist/observability/debug-log.d.ts.map +1 -0
- package/dist/observability/debug-log.js +500 -0
- package/dist/observability/debug-log.js.map +1 -0
- package/dist/observability/event-bus.d.ts.map +1 -1
- package/dist/observability/event-bus.js +4 -1
- package/dist/observability/event-bus.js.map +1 -1
- package/dist/observability/otel.d.ts +278 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +590 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/parity/drivers.d.ts +99 -0
- package/dist/parity/drivers.d.ts.map +1 -0
- package/dist/parity/drivers.js +1362 -0
- package/dist/parity/drivers.js.map +1 -0
- package/dist/parity/graph.d.ts +73 -0
- package/dist/parity/graph.d.ts.map +1 -0
- package/dist/parity/graph.js +162 -0
- package/dist/parity/graph.js.map +1 -0
- package/dist/parity/matrix.d.ts +105 -0
- package/dist/parity/matrix.d.ts.map +1 -0
- package/dist/parity/matrix.js +352 -0
- package/dist/parity/matrix.js.map +1 -0
- package/dist/parity/observation.d.ts +444 -0
- package/dist/parity/observation.d.ts.map +1 -0
- package/dist/parity/observation.js +333 -0
- package/dist/parity/observation.js.map +1 -0
- package/dist/parity/scenarios.d.ts +229 -0
- package/dist/parity/scenarios.d.ts.map +1 -0
- package/dist/parity/scenarios.js +175 -0
- package/dist/parity/scenarios.js.map +1 -0
- package/dist/parity/surfaces.d.ts +122 -0
- package/dist/parity/surfaces.d.ts.map +1 -0
- package/dist/parity/surfaces.js +190 -0
- package/dist/parity/surfaces.js.map +1 -0
- package/dist/runtime/fault-injection.d.ts +173 -0
- package/dist/runtime/fault-injection.d.ts.map +1 -0
- package/dist/runtime/fault-injection.js +281 -0
- package/dist/runtime/fault-injection.js.map +1 -0
- package/dist/tools/child-agent-entry.d.ts +23 -0
- package/dist/tools/child-agent-entry.d.ts.map +1 -0
- package/dist/tools/child-agent-entry.js +129 -0
- package/dist/tools/child-agent-entry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts +124 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -0
- package/dist/tools/child-agent-runtime.js +704 -0
- package/dist/tools/child-agent-runtime.js.map +1 -0
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +82 -10
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/delegation-system.d.ts +31 -0
- package/dist/tools/delegation-system.d.ts.map +1 -1
- package/dist/tools/delegation-system.js +70 -9
- package/dist/tools/delegation-system.js.map +1 -1
- package/dist/tools/extract/docx.d.ts +27 -0
- package/dist/tools/extract/docx.d.ts.map +1 -0
- package/dist/tools/extract/docx.js +48 -0
- package/dist/tools/extract/docx.js.map +1 -0
- package/dist/tools/extract/html-text.d.ts +27 -0
- package/dist/tools/extract/html-text.d.ts.map +1 -0
- package/dist/tools/extract/html-text.js +86 -0
- package/dist/tools/extract/html-text.js.map +1 -0
- package/dist/tools/extract/pdf-ocr.d.ts +58 -0
- package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
- package/dist/tools/extract/pdf-ocr.js +116 -0
- package/dist/tools/extract/pdf-ocr.js.map +1 -0
- package/dist/tools/extract/pdf.d.ts +65 -0
- package/dist/tools/extract/pdf.d.ts.map +1 -0
- package/dist/tools/extract/pdf.js +197 -0
- package/dist/tools/extract/pdf.js.map +1 -0
- package/dist/tools/extract/pptx.d.ts +32 -0
- package/dist/tools/extract/pptx.d.ts.map +1 -0
- package/dist/tools/extract/pptx.js +77 -0
- package/dist/tools/extract/pptx.js.map +1 -0
- package/dist/tools/extract/xlsx.d.ts +47 -0
- package/dist/tools/extract/xlsx.d.ts.map +1 -0
- package/dist/tools/extract/xlsx.js +111 -0
- package/dist/tools/extract/xlsx.js.map +1 -0
- package/dist/tools/finding-tool.d.ts +76 -0
- package/dist/tools/finding-tool.d.ts.map +1 -0
- package/dist/tools/finding-tool.js +125 -0
- package/dist/tools/finding-tool.js.map +1 -0
- package/dist/tools/messaging-tools.d.ts +41 -11
- package/dist/tools/messaging-tools.d.ts.map +1 -1
- package/dist/tools/messaging-tools.js +104 -55
- package/dist/tools/messaging-tools.js.map +1 -1
- package/dist/tools/neutts-synth.d.ts +27 -3
- package/dist/tools/neutts-synth.d.ts.map +1 -1
- package/dist/tools/neutts-synth.js +57 -13
- package/dist/tools/neutts-synth.js.map +1 -1
- package/dist/tools/pipeline-tool.d.ts +43 -1
- package/dist/tools/pipeline-tool.d.ts.map +1 -1
- package/dist/tools/pipeline-tool.js +13 -2
- package/dist/tools/pipeline-tool.js.map +1 -1
- package/dist/tools/read-extract.d.ts +116 -45
- package/dist/tools/read-extract.d.ts.map +1 -1
- package/dist/tools/read-extract.js +494 -158
- package/dist/tools/read-extract.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +152 -23
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/subagent-refusal.d.ts +15 -0
- package/dist/tools/subagent-refusal.d.ts.map +1 -0
- package/dist/tools/subagent-refusal.js +18 -0
- package/dist/tools/subagent-refusal.js.map +1 -0
- package/dist/tools/subagent-spawner.d.ts +122 -0
- package/dist/tools/subagent-spawner.d.ts.map +1 -1
- package/dist/tools/subagent-spawner.js +249 -28
- package/dist/tools/subagent-spawner.js.map +1 -1
- package/dist/tools/tool-hooks.d.ts +177 -0
- package/dist/tools/tool-hooks.d.ts.map +1 -0
- package/dist/tools/tool-hooks.js +427 -0
- package/dist/tools/tool-hooks.js.map +1 -0
- package/dist/tools/tool-loop.d.ts +82 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +167 -9
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/tools/tool-refusal.d.ts +68 -0
- package/dist/tools/tool-refusal.d.ts.map +1 -0
- package/dist/tools/tool-refusal.js +78 -0
- package/dist/tools/tool-refusal.js.map +1 -0
- package/dist/tools/toolsets.d.ts +8 -0
- package/dist/tools/toolsets.d.ts.map +1 -1
- package/dist/tools/toolsets.js +12 -2
- package/dist/tools/toolsets.js.map +1 -1
- package/dist/tools/vision-tools.d.ts +88 -83
- package/dist/tools/vision-tools.d.ts.map +1 -1
- package/dist/tools/vision-tools.js +134 -103
- package/dist/tools/vision-tools.js.map +1 -1
- package/dist/tools/worktree.d.ts +210 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +374 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/utils/format.d.ts +3 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +32 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/web-dashboard/attachment-extract.d.ts +64 -0
- package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
- package/dist/web-dashboard/attachment-extract.js +154 -0
- package/dist/web-dashboard/attachment-extract.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +108 -1
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +36 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/hub-data.d.ts +37 -0
- package/dist/web-dashboard/hub-data.d.ts.map +1 -1
- package/dist/web-dashboard/hub-data.js +61 -1
- package/dist/web-dashboard/hub-data.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +14 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +247 -13
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +196 -48
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +18 -3
- package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
- package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
- package/src/web-dashboard/public/index.html +2 -2
- package/dist/tools/child-agent-worker.js +0 -212
- package/src/web-dashboard/public/assets/index-CxDj7p6i.js +0 -207
- package/src/web-dashboard/public/assets/index-CxDj7p6i.js.map +0 -1
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real-time inbound transports for the gateway (`src/gateway/realtime.ts`).
|
|
3
|
+
*
|
|
4
|
+
* The webhook receiver covers platforms that PUSH to us — but a bot cannot
|
|
5
|
+
* receive Discord `MESSAGE_CREATE` events or Slack Events API deliveries over a
|
|
6
|
+
* webhook it does not own. Discord bots get messages over the Discord Gateway
|
|
7
|
+
* (a WebSocket we dial out to); Slack apps that cannot expose a public HTTPS
|
|
8
|
+
* endpoint use Socket Mode (a WebSocket that carries the very same
|
|
9
|
+
* `event_callback` envelopes the Events API would POST). Without these, an
|
|
10
|
+
* inbound document on either platform never reaches the hydration path, so the
|
|
11
|
+
* attachment handling added for webhooks was unreachable in practice.
|
|
12
|
+
*
|
|
13
|
+
* Both sources end at the same place: build an `InboundMessage`, download the
|
|
14
|
+
* attachment's bytes with the shared `downloadInboundAttachment` helper, and
|
|
15
|
+
* hand it to the registry's `handleInbound` — exactly like the webhook
|
|
16
|
+
* receiver. Extraction, auto-reply, and the sandbox prune are therefore shared,
|
|
17
|
+
* not reimplemented.
|
|
18
|
+
*
|
|
19
|
+
* The socket and `fetch` are injectable so tests drive a scripted gateway
|
|
20
|
+
* without network or a real Discord/Slack connection.
|
|
21
|
+
*/
|
|
22
|
+
import { logger } from '../utils/logger.js';
|
|
23
|
+
import { downloadInboundAttachment, } from './inbound-media.js';
|
|
24
|
+
import { mediaKindFromMime, parseWebhookPayload, } from './adapters.js';
|
|
25
|
+
/**
|
|
26
|
+
* Default socket. Prefers the platform's built-in `WebSocket` (Node 22+, Bun,
|
|
27
|
+
* Deno) and falls back to `ws` — neither is a dependency of the gateway core,
|
|
28
|
+
* so this stays a lazy, best-effort import.
|
|
29
|
+
*/
|
|
30
|
+
export async function defaultSocketFactory(url) {
|
|
31
|
+
const Native = globalThis.WebSocket;
|
|
32
|
+
let ws;
|
|
33
|
+
if (Native) {
|
|
34
|
+
ws = new Native(url);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const mod = (await import('ws'));
|
|
38
|
+
const WS = mod.default;
|
|
39
|
+
if (!WS)
|
|
40
|
+
throw new Error('no WebSocket implementation available');
|
|
41
|
+
ws = new WS(url);
|
|
42
|
+
}
|
|
43
|
+
const socket = {
|
|
44
|
+
onopen: null,
|
|
45
|
+
onmessage: null,
|
|
46
|
+
onclose: null,
|
|
47
|
+
onerror: null,
|
|
48
|
+
send: (data) => ws.send(data),
|
|
49
|
+
close: () => ws.close(),
|
|
50
|
+
};
|
|
51
|
+
if (ws.addEventListener) {
|
|
52
|
+
ws.addEventListener('open', () => socket.onopen?.());
|
|
53
|
+
ws.addEventListener('message', (ev) => socket.onmessage?.({ data: ev.data }));
|
|
54
|
+
ws.addEventListener('close', () => socket.onclose?.());
|
|
55
|
+
ws.addEventListener('error', (err) => socket.onerror?.(err));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
ws.on?.('open', () => socket.onopen?.());
|
|
59
|
+
ws.on?.('message', (data) => socket.onmessage?.({ data }));
|
|
60
|
+
ws.on?.('close', () => socket.onclose?.());
|
|
61
|
+
ws.on?.('error', (err) => socket.onerror?.(err));
|
|
62
|
+
}
|
|
63
|
+
return socket;
|
|
64
|
+
}
|
|
65
|
+
/** Base backoff/reconnect plumbing shared by both transports. */
|
|
66
|
+
class ReconnectingSource {
|
|
67
|
+
backoffMs;
|
|
68
|
+
maxBackoffMs;
|
|
69
|
+
stopped = false;
|
|
70
|
+
attempt = 0;
|
|
71
|
+
retryTimer = null;
|
|
72
|
+
socket = null;
|
|
73
|
+
constructor(backoffMs = 1_000, maxBackoffMs = 30_000) {
|
|
74
|
+
this.backoffMs = backoffMs;
|
|
75
|
+
this.maxBackoffMs = maxBackoffMs;
|
|
76
|
+
}
|
|
77
|
+
async start(onMessage) {
|
|
78
|
+
this.stopped = false;
|
|
79
|
+
this.attempt = 0;
|
|
80
|
+
await this.connect(onMessage);
|
|
81
|
+
}
|
|
82
|
+
async connect(onMessage) {
|
|
83
|
+
if (this.stopped)
|
|
84
|
+
return;
|
|
85
|
+
try {
|
|
86
|
+
await this.open(onMessage);
|
|
87
|
+
this.attempt = 0;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// A failed handshake (bad token, network) retries with backoff rather
|
|
91
|
+
// than throwing into the adapter's `start()` — the gateway must stay up.
|
|
92
|
+
this.scheduleReconnect(onMessage);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Called by the transport when its socket drops. */
|
|
96
|
+
scheduleReconnect(onMessage) {
|
|
97
|
+
if (this.stopped)
|
|
98
|
+
return;
|
|
99
|
+
this.teardownSocket();
|
|
100
|
+
const delay = Math.min(this.backoffMs * 2 ** this.attempt, this.maxBackoffMs);
|
|
101
|
+
this.attempt += 1;
|
|
102
|
+
this.retryTimer = setTimeout(() => {
|
|
103
|
+
this.retryTimer = null;
|
|
104
|
+
void this.connect(onMessage);
|
|
105
|
+
}, delay);
|
|
106
|
+
this.retryTimer.unref?.();
|
|
107
|
+
}
|
|
108
|
+
teardownSocket() {
|
|
109
|
+
const socket = this.socket;
|
|
110
|
+
this.socket = null;
|
|
111
|
+
if (socket) {
|
|
112
|
+
socket.onmessage = null;
|
|
113
|
+
socket.onclose = null;
|
|
114
|
+
socket.onerror = null;
|
|
115
|
+
try {
|
|
116
|
+
socket.close();
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Already closed.
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async stop() {
|
|
124
|
+
this.stopped = true;
|
|
125
|
+
if (this.retryTimer) {
|
|
126
|
+
clearTimeout(this.retryTimer);
|
|
127
|
+
this.retryTimer = null;
|
|
128
|
+
}
|
|
129
|
+
this.teardownSocket();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// ─── Discord Gateway (WebSocket) ────────────────────────────────────────────
|
|
133
|
+
/** GUILD_MESSAGES | DIRECT_MESSAGES | MESSAGE_CONTENT. */
|
|
134
|
+
const DISCORD_INTENTS = (1 << 9) | (1 << 12) | (1 << 15);
|
|
135
|
+
const DISCORD_API = 'https://discord.com/api/v10';
|
|
136
|
+
/**
|
|
137
|
+
* Inbound Discord messages over the Gateway (op 10 HELLO → op 2 IDENTIFY,
|
|
138
|
+
* heartbeat on the advertised interval, op 0 MESSAGE_CREATE). An attachment is
|
|
139
|
+
* downloaded before dispatch so it hydrates exactly like a webhook one.
|
|
140
|
+
*/
|
|
141
|
+
export class DiscordGatewaySource extends ReconnectingSource {
|
|
142
|
+
opts;
|
|
143
|
+
heartbeat = null;
|
|
144
|
+
firstBeat = null;
|
|
145
|
+
fetcher;
|
|
146
|
+
constructor(opts) {
|
|
147
|
+
super(opts.backoffMs, opts.maxBackoffMs);
|
|
148
|
+
this.opts = opts;
|
|
149
|
+
this.fetcher = opts.fetchImpl ?? fetch;
|
|
150
|
+
}
|
|
151
|
+
/** Ask Discord for the socket URL; fall back to the public base. */
|
|
152
|
+
async gatewayUrl() {
|
|
153
|
+
try {
|
|
154
|
+
const res = await this.fetcher(`${DISCORD_API}/gateway/bot`, {
|
|
155
|
+
headers: { authorization: `Bot ${this.opts.token}` },
|
|
156
|
+
});
|
|
157
|
+
if (res.ok) {
|
|
158
|
+
const body = (await res.json());
|
|
159
|
+
if (body?.url)
|
|
160
|
+
return `${body.url}/?v=10&encoding=json`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Fall through to the public gateway.
|
|
165
|
+
}
|
|
166
|
+
return 'wss://gateway.discord.gg/?v=10&encoding=json';
|
|
167
|
+
}
|
|
168
|
+
async open(onMessage) {
|
|
169
|
+
const url = await this.gatewayUrl();
|
|
170
|
+
const socket = this.opts.socketFactory
|
|
171
|
+
? this.opts.socketFactory(url)
|
|
172
|
+
: await defaultSocketFactory(url);
|
|
173
|
+
// Stopped while the handshake was in flight — do not adopt the socket.
|
|
174
|
+
if (this.stopped) {
|
|
175
|
+
socket.close();
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this.socket = socket;
|
|
179
|
+
socket.onmessage = (ev) => this.onFrame(ev.data, onMessage);
|
|
180
|
+
socket.onclose = () => {
|
|
181
|
+
// Logged because this is the ONLY outward sign a live check has: with no
|
|
182
|
+
// handler installed the socket is otherwise invisible, and a silent
|
|
183
|
+
// reconnect loop looks exactly like "no messages arrived".
|
|
184
|
+
logger.warn('Discord gateway: socket closed — reconnecting with backoff');
|
|
185
|
+
this.scheduleReconnect(onMessage);
|
|
186
|
+
};
|
|
187
|
+
socket.onerror = () => this.scheduleReconnect(onMessage);
|
|
188
|
+
logger.info('Discord gateway: connected — waiting for HELLO');
|
|
189
|
+
}
|
|
190
|
+
onFrame(raw, onMessage) {
|
|
191
|
+
let frame;
|
|
192
|
+
try {
|
|
193
|
+
frame = JSON.parse(typeof raw === 'string' ? raw : String(raw));
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
switch (frame.op) {
|
|
199
|
+
case 10: // HELLO — begin heartbeating, then identify.
|
|
200
|
+
this.startHeartbeat(frame.d?.heartbeat_interval);
|
|
201
|
+
this.send({
|
|
202
|
+
op: 2,
|
|
203
|
+
d: {
|
|
204
|
+
token: this.opts.token,
|
|
205
|
+
intents: DISCORD_INTENTS,
|
|
206
|
+
properties: { os: 'linux', browser: 'nuvira', device: 'nuvira' },
|
|
207
|
+
},
|
|
208
|
+
});
|
|
209
|
+
return;
|
|
210
|
+
case 1: // Server asked for an immediate heartbeat.
|
|
211
|
+
this.send({ op: 1, d: null });
|
|
212
|
+
return;
|
|
213
|
+
case 11: // Heartbeat ACK.
|
|
214
|
+
case 0:
|
|
215
|
+
break;
|
|
216
|
+
case 7: // Reconnect requested by the server.
|
|
217
|
+
case 9: // Invalid session — re-identify on a fresh socket.
|
|
218
|
+
this.scheduleReconnect(onMessage);
|
|
219
|
+
return;
|
|
220
|
+
default:
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (frame.t === 'MESSAGE_CREATE') {
|
|
224
|
+
void this.onMessageCreate(frame.d, onMessage);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
startHeartbeat(intervalMs) {
|
|
228
|
+
this.clearHeartbeat();
|
|
229
|
+
const interval = typeof intervalMs === 'number' && intervalMs > 0 ? intervalMs : 41_250;
|
|
230
|
+
this.firstBeat = setTimeout(() => {
|
|
231
|
+
this.firstBeat = null;
|
|
232
|
+
this.send({ op: 1, d: null });
|
|
233
|
+
}, interval * Math.random());
|
|
234
|
+
this.firstBeat.unref?.();
|
|
235
|
+
this.heartbeat = setInterval(() => this.send({ op: 1, d: null }), interval);
|
|
236
|
+
this.heartbeat.unref?.();
|
|
237
|
+
}
|
|
238
|
+
clearHeartbeat() {
|
|
239
|
+
if (this.firstBeat) {
|
|
240
|
+
clearTimeout(this.firstBeat);
|
|
241
|
+
this.firstBeat = null;
|
|
242
|
+
}
|
|
243
|
+
if (this.heartbeat) {
|
|
244
|
+
clearInterval(this.heartbeat);
|
|
245
|
+
this.heartbeat = null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
send(payload) {
|
|
249
|
+
try {
|
|
250
|
+
this.socket?.send(JSON.stringify(payload));
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// A dead socket surfaces via onclose → reconnect.
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async onMessageCreate(d, onMessage) {
|
|
257
|
+
const channelId = d?.channel_id;
|
|
258
|
+
const content = typeof d?.content === 'string' ? d.content : '';
|
|
259
|
+
const first = (Array.isArray(d?.attachments) ? d.attachments[0] : undefined);
|
|
260
|
+
const hasMedia = Boolean(first?.url);
|
|
261
|
+
// A media-only message has empty content — it must still dispatch.
|
|
262
|
+
if (!channelId || (!content && !hasMedia))
|
|
263
|
+
return;
|
|
264
|
+
let media;
|
|
265
|
+
if (hasMedia && first?.url) {
|
|
266
|
+
const att = {
|
|
267
|
+
type: mediaKindFromMime(first.content_type, first.filename),
|
|
268
|
+
url: first.url,
|
|
269
|
+
filename: first.filename,
|
|
270
|
+
mimetype: first.content_type,
|
|
271
|
+
size: first.size,
|
|
272
|
+
};
|
|
273
|
+
const downloaded = await downloadInboundAttachment(att);
|
|
274
|
+
if (downloaded)
|
|
275
|
+
media = { ...downloaded, caption: content || undefined };
|
|
276
|
+
}
|
|
277
|
+
await onMessage({
|
|
278
|
+
platform: 'discord',
|
|
279
|
+
channelId,
|
|
280
|
+
text: content,
|
|
281
|
+
from: d?.author?.username ?? 'discord-user',
|
|
282
|
+
senderId: d?.author?.id !== undefined ? String(d.author.id) : undefined,
|
|
283
|
+
...(d?.id !== undefined ? { messageId: String(d.id) } : {}),
|
|
284
|
+
// A guild_id is present for guild (group) messages, absent for DMs.
|
|
285
|
+
isGroup: Boolean(d?.guild_id),
|
|
286
|
+
...(media ? { media } : {}),
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
async stop() {
|
|
290
|
+
this.clearHeartbeat();
|
|
291
|
+
await super.stop();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Inbound Slack messages over Socket Mode. Slack delivers the same
|
|
296
|
+
* `event_callback` envelopes as the Events API, so the webhook parser is reused
|
|
297
|
+
* verbatim — the only new work is the socket, the ack, and the token-auth file
|
|
298
|
+
* download.
|
|
299
|
+
*/
|
|
300
|
+
export class SlackSocketModeSource extends ReconnectingSource {
|
|
301
|
+
opts;
|
|
302
|
+
fetcher;
|
|
303
|
+
constructor(opts) {
|
|
304
|
+
super(opts.backoffMs, opts.maxBackoffMs);
|
|
305
|
+
this.opts = opts;
|
|
306
|
+
this.fetcher = opts.fetchImpl ?? fetch;
|
|
307
|
+
}
|
|
308
|
+
/** `apps.connections.open` mints a single-use socket URL. */
|
|
309
|
+
async openSocketUrl() {
|
|
310
|
+
const res = await this.fetcher('https://slack.com/api/apps.connections.open', {
|
|
311
|
+
method: 'POST',
|
|
312
|
+
headers: {
|
|
313
|
+
authorization: `Bearer ${this.opts.appToken}`,
|
|
314
|
+
'content-type': 'application/x-www-form-urlencoded',
|
|
315
|
+
},
|
|
316
|
+
});
|
|
317
|
+
if (!res.ok)
|
|
318
|
+
throw new Error(`Slack Socket Mode open failed (${res.status})`);
|
|
319
|
+
const body = (await res.json());
|
|
320
|
+
if (!body?.ok || !body.url) {
|
|
321
|
+
throw new Error(`Slack Socket Mode open failed (${body?.error ?? 'unknown'})`);
|
|
322
|
+
}
|
|
323
|
+
return body.url;
|
|
324
|
+
}
|
|
325
|
+
async open(onMessage) {
|
|
326
|
+
const url = await this.openSocketUrl();
|
|
327
|
+
const socket = this.opts.socketFactory
|
|
328
|
+
? this.opts.socketFactory(url)
|
|
329
|
+
: await defaultSocketFactory(url);
|
|
330
|
+
if (this.stopped) {
|
|
331
|
+
socket.close();
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
this.socket = socket;
|
|
335
|
+
socket.onmessage = (ev) => this.onFrame(ev.data, onMessage);
|
|
336
|
+
socket.onclose = () => {
|
|
337
|
+
logger.warn('Slack Socket Mode: socket closed — reconnecting with backoff');
|
|
338
|
+
this.scheduleReconnect(onMessage);
|
|
339
|
+
};
|
|
340
|
+
socket.onerror = () => this.scheduleReconnect(onMessage);
|
|
341
|
+
logger.info('Slack Socket Mode: connected');
|
|
342
|
+
}
|
|
343
|
+
send(payload) {
|
|
344
|
+
try {
|
|
345
|
+
this.socket?.send(JSON.stringify(payload));
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
// Dead socket → onclose → reconnect.
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
onFrame(raw, onMessage) {
|
|
352
|
+
let envelope;
|
|
353
|
+
try {
|
|
354
|
+
envelope = JSON.parse(typeof raw === 'string' ? raw : String(raw));
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
// Slack retries any envelope it does not see acked.
|
|
360
|
+
if (envelope.envelope_id)
|
|
361
|
+
this.send({ envelope_id: envelope.envelope_id });
|
|
362
|
+
if (envelope.type === 'disconnect') {
|
|
363
|
+
// Slack is asking us to drop this connection and open a fresh URL.
|
|
364
|
+
logger.info('Slack Socket Mode: server asked us to reconnect');
|
|
365
|
+
this.scheduleReconnect(onMessage);
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
if (envelope.type !== 'events_api' || !envelope.payload)
|
|
369
|
+
return;
|
|
370
|
+
void this.onEvent(envelope.payload, onMessage);
|
|
371
|
+
}
|
|
372
|
+
async onEvent(payload, onMessage) {
|
|
373
|
+
const parsed = parseWebhookPayload('slack', payload);
|
|
374
|
+
if (!parsed)
|
|
375
|
+
return;
|
|
376
|
+
let media;
|
|
377
|
+
if (parsed.media) {
|
|
378
|
+
const att = parsed.media.attachment;
|
|
379
|
+
const downloaded = await downloadInboundAttachment({
|
|
380
|
+
type: parsed.media.type,
|
|
381
|
+
url: att.url,
|
|
382
|
+
filename: att.filename,
|
|
383
|
+
mimetype: att.mimetype,
|
|
384
|
+
size: att.size,
|
|
385
|
+
authenticated: att.authenticated,
|
|
386
|
+
token: this.opts.botToken,
|
|
387
|
+
});
|
|
388
|
+
if (downloaded)
|
|
389
|
+
media = { ...downloaded, caption: parsed.media.caption };
|
|
390
|
+
}
|
|
391
|
+
await onMessage({
|
|
392
|
+
platform: 'slack',
|
|
393
|
+
channelId: parsed.channelId,
|
|
394
|
+
text: parsed.text,
|
|
395
|
+
from: parsed.from,
|
|
396
|
+
senderId: parsed.senderId,
|
|
397
|
+
isGroup: parsed.isGroup,
|
|
398
|
+
...(media ? { media } : {}),
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=realtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/gateway/realtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -285,6 +285,8 @@ export declare class GatewayRegistry {
|
|
|
285
285
|
private adapterHealth;
|
|
286
286
|
/** Earliest epoch-ms at which a not-yet-started adapter may be retried. */
|
|
287
287
|
private adapterRetryAt;
|
|
288
|
+
/** Epoch ms of the last inbound-sandbox sweep (throttles the hourly prune). */
|
|
289
|
+
private lastInboundPruneAt;
|
|
288
290
|
/** The heartbeat + watchdog tick. */
|
|
289
291
|
private livenessTimer;
|
|
290
292
|
private chatEngine;
|
|
@@ -343,6 +345,18 @@ export declare class GatewayRegistry {
|
|
|
343
345
|
hasConfiguredAdapter(): boolean;
|
|
344
346
|
/** Send a text message to a channel target (alias or platform:channelId). */
|
|
345
347
|
send(target: string, text: string): Promise<boolean>;
|
|
348
|
+
/**
|
|
349
|
+
* Deliver an ANSWER, using a VOICE NOTE when the sender's own message was a
|
|
350
|
+
* voice note and a TTS backend is installed.
|
|
351
|
+
*
|
|
352
|
+
* Falls back to text whenever anything is missing — no TTS backend, an answer
|
|
353
|
+
* too long to speak sanely, or a platform that cannot send audio — so a voice
|
|
354
|
+
* reply is a courtesy and never a way for the answer to get lost. Returns true
|
|
355
|
+
* when a voice note was delivered, false when text was sent instead.
|
|
356
|
+
*/
|
|
357
|
+
replyInKind(ref: ChannelRef, text: string, opts?: {
|
|
358
|
+
voice?: boolean;
|
|
359
|
+
}): Promise<boolean>;
|
|
346
360
|
/**
|
|
347
361
|
* P3 — send media to a channel ref. Adapters that implement the optional
|
|
348
362
|
* `sendMedia` (WhatsApp, Telegram, Discord) support it; others return false
|
|
@@ -451,6 +465,23 @@ export declare class GatewayRegistry {
|
|
|
451
465
|
* used to choose the sender-facing failure wording — never to block a call.
|
|
452
466
|
*/
|
|
453
467
|
private hasConfiguredModel;
|
|
468
|
+
/**
|
|
469
|
+
* One inbound chat turn, and the backend it was served by.
|
|
470
|
+
*
|
|
471
|
+
* The result carries `provider`/`model`/`transport` because this method is the
|
|
472
|
+
* surface's boundary: the shared engine resolves all three, and keeping only
|
|
473
|
+
* `content` + `generationFailed` is what made `run-attribution@gateway-chat`
|
|
474
|
+
* the one capability cell the gateway could not prove. A messaging run is
|
|
475
|
+
* also the hardest to inspect after the fact — there is no terminal to scroll
|
|
476
|
+
* — so the same triple goes to the gateway log.
|
|
477
|
+
*
|
|
478
|
+
* It also carries the turn's per-call tool lifecycles (`toolCalls`), read from
|
|
479
|
+
* the engine's `onToolCall` seam. Those are recorded, never sent to the
|
|
480
|
+
* sender: a chat turn's `started`/`called` events are internal, exactly like
|
|
481
|
+
* `onProgress`, but the OUTCOME of each call is a fact the surface should be
|
|
482
|
+
* able to report — otherwise a gateway turn's tool work is unattributable
|
|
483
|
+
* (`tool-call-lifecycle@gateway-chat`).
|
|
484
|
+
*/
|
|
454
485
|
private runInboundChat;
|
|
455
486
|
/** Allow-list check: no allowIds configured = everyone; else exact platform:channelId. */
|
|
456
487
|
private isAllowed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/gateway/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAGhB,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,KAAK,SAAS,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,cAAc,EAAsB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAA2B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/gateway/registry.ts"],"names":[],"mappings":"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"}
|