@moltzap/client 2026.812.0 → 2026.902.0
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/LICENSE +202 -21
- package/NOTICE +19 -0
- package/README.md +50 -0
- package/bin/moltzapd +9 -0
- package/dist/client-runtime.d.ts +10 -0
- package/dist/client-runtime.d.ts.map +1 -0
- package/dist/client-runtime.js +218 -0
- package/dist/client-runtime.js.map +1 -0
- package/dist/contract.d.ts +338 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +213 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.types-check.d.ts +99 -0
- package/dist/contract.types-check.d.ts.map +1 -0
- package/dist/contract.types-check.js +7 -0
- package/dist/contract.types-check.js.map +1 -0
- package/dist/daemon/configuration.d.ts +46 -0
- package/dist/daemon/configuration.d.ts.map +1 -0
- package/dist/daemon/configuration.js +69 -0
- package/dist/daemon/configuration.js.map +1 -0
- package/dist/daemon/management.d.ts +23 -0
- package/dist/daemon/management.d.ts.map +1 -0
- package/dist/daemon/management.js +489 -0
- package/dist/daemon/management.js.map +1 -0
- package/dist/daemon/registration.d.ts +72 -0
- package/dist/daemon/registration.d.ts.map +1 -0
- package/dist/daemon/registration.js +109 -0
- package/dist/daemon/registration.js.map +1 -0
- package/dist/daemon/runtime/activation.d.ts +95 -0
- package/dist/daemon/runtime/activation.d.ts.map +1 -0
- package/dist/daemon/runtime/activation.js +99 -0
- package/dist/daemon/runtime/activation.js.map +1 -0
- package/dist/daemon/runtime/controller.d.ts +34 -0
- package/dist/daemon/runtime/controller.d.ts.map +1 -0
- package/dist/daemon/runtime/controller.js +106 -0
- package/dist/daemon/runtime/controller.js.map +1 -0
- package/dist/daemon/runtime/history-export.d.ts +23 -0
- package/dist/daemon/runtime/history-export.d.ts.map +1 -0
- package/dist/daemon/runtime/history-export.js +47 -0
- package/dist/daemon/runtime/history-export.js.map +1 -0
- package/dist/daemon/runtime/index.d.ts +24 -0
- package/dist/daemon/runtime/index.d.ts.map +1 -0
- package/dist/daemon/runtime/index.js +65 -0
- package/dist/daemon/runtime/index.js.map +1 -0
- package/dist/daemon/runtime/protocol.d.ts +63 -0
- package/dist/daemon/runtime/protocol.d.ts.map +1 -0
- package/dist/daemon/runtime/protocol.js +133 -0
- package/dist/daemon/runtime/protocol.js.map +1 -0
- package/dist/endpoint/addressing/index.d.ts +39 -0
- package/dist/endpoint/addressing/index.d.ts.map +1 -0
- package/dist/endpoint/addressing/index.js +114 -0
- package/dist/endpoint/addressing/index.js.map +1 -0
- package/dist/endpoint/engine-dissemination.d.ts +11 -0
- package/dist/endpoint/engine-dissemination.d.ts.map +1 -0
- package/dist/endpoint/engine-dissemination.js +71 -0
- package/dist/endpoint/engine-dissemination.js.map +1 -0
- package/dist/endpoint/engine-durability.d.ts +69 -0
- package/dist/endpoint/engine-durability.d.ts.map +1 -0
- package/dist/endpoint/engine-durability.js +210 -0
- package/dist/endpoint/engine-durability.js.map +1 -0
- package/dist/endpoint/engine-send.d.ts +50 -0
- package/dist/endpoint/engine-send.d.ts.map +1 -0
- package/dist/endpoint/engine-send.js +422 -0
- package/dist/endpoint/engine-send.js.map +1 -0
- package/dist/endpoint/engine-types.d.ts +132 -0
- package/dist/endpoint/engine-types.d.ts.map +1 -0
- package/dist/endpoint/engine-types.js +13 -0
- package/dist/endpoint/engine-types.js.map +1 -0
- package/dist/endpoint/engine.d.ts +14 -0
- package/dist/endpoint/engine.d.ts.map +1 -0
- package/dist/endpoint/engine.js +280 -0
- package/dist/endpoint/engine.js.map +1 -0
- package/dist/endpoint/protocol/evidence.d.ts +37 -0
- package/dist/endpoint/protocol/evidence.d.ts.map +1 -0
- package/dist/endpoint/protocol/evidence.js +80 -0
- package/dist/endpoint/protocol/evidence.js.map +1 -0
- package/dist/endpoint/protocol/index.d.ts +26 -0
- package/dist/endpoint/protocol/index.d.ts.map +1 -0
- package/dist/endpoint/protocol/index.js +543 -0
- package/dist/endpoint/protocol/index.js.map +1 -0
- package/dist/endpoint/recovery/barrier.d.ts +23 -0
- package/dist/endpoint/recovery/barrier.d.ts.map +1 -0
- package/dist/endpoint/recovery/barrier.js +47 -0
- package/dist/endpoint/recovery/barrier.js.map +1 -0
- package/dist/endpoint/recovery/index.d.ts +29 -0
- package/dist/endpoint/recovery/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/index.js +489 -0
- package/dist/endpoint/recovery/index.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts +22 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.js +163 -0
- package/dist/endpoint/recovery/reanchor/empty.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts +30 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.js +479 -0
- package/dist/endpoint/recovery/reanchor/index.js.map +1 -0
- package/dist/endpoint/recovery/state.d.ts +130 -0
- package/dist/endpoint/recovery/state.d.ts.map +1 -0
- package/dist/endpoint/recovery/state.js +296 -0
- package/dist/endpoint/recovery/state.js.map +1 -0
- package/dist/endpoint/recovery/store-evidence.d.ts +17 -0
- package/dist/endpoint/recovery/store-evidence.d.ts.map +1 -0
- package/dist/endpoint/recovery/store-evidence.js +79 -0
- package/dist/endpoint/recovery/store-evidence.js.map +1 -0
- package/dist/endpoint/recovery/store.d.ts +56 -0
- package/dist/endpoint/recovery/store.d.ts.map +1 -0
- package/dist/endpoint/recovery/store.js +499 -0
- package/dist/endpoint/recovery/store.js.map +1 -0
- package/dist/endpoint/representation-canonical.d.ts +17 -0
- package/dist/endpoint/representation-canonical.d.ts.map +1 -0
- package/dist/endpoint/representation-canonical.js +48 -0
- package/dist/endpoint/representation-canonical.js.map +1 -0
- package/dist/endpoint/representation-codec.d.ts +51 -0
- package/dist/endpoint/representation-codec.d.ts.map +1 -0
- package/dist/endpoint/representation-codec.js +159 -0
- package/dist/endpoint/representation-codec.js.map +1 -0
- package/dist/endpoint/representation-schemas.d.ts +1831 -0
- package/dist/endpoint/representation-schemas.d.ts.map +1 -0
- package/dist/endpoint/representation-schemas.js +195 -0
- package/dist/endpoint/representation-schemas.js.map +1 -0
- package/dist/endpoint/representation-verification.d.ts +79 -0
- package/dist/endpoint/representation-verification.d.ts.map +1 -0
- package/dist/endpoint/representation-verification.js +420 -0
- package/dist/endpoint/representation-verification.js.map +1 -0
- package/dist/endpoint/representation.d.ts +6 -0
- package/dist/endpoint/representation.d.ts.map +1 -0
- package/dist/endpoint/representation.js +8 -0
- package/dist/endpoint/representation.js.map +1 -0
- package/dist/endpoint/router-worker/index.d.ts +16 -0
- package/dist/endpoint/router-worker/index.d.ts.map +1 -0
- package/dist/endpoint/router-worker/index.js +547 -0
- package/dist/endpoint/router-worker/index.js.map +1 -0
- package/dist/endpoint/router-worker/types.d.ts +183 -0
- package/dist/endpoint/router-worker/types.d.ts.map +1 -0
- package/dist/endpoint/router-worker/types.js +31 -0
- package/dist/endpoint/router-worker/types.js.map +1 -0
- package/dist/endpoint/store/anchors.d.ts +83 -0
- package/dist/endpoint/store/anchors.d.ts.map +1 -0
- package/dist/endpoint/store/anchors.js +471 -0
- package/dist/endpoint/store/anchors.js.map +1 -0
- package/dist/endpoint/store/database/index.d.ts +6 -0
- package/dist/endpoint/store/database/index.d.ts.map +1 -0
- package/dist/endpoint/store/database/index.js +6 -0
- package/dist/endpoint/store/database/index.js.map +1 -0
- package/dist/endpoint/store/database/schema.d.ts +44 -0
- package/dist/endpoint/store/database/schema.d.ts.map +1 -0
- package/dist/endpoint/store/database/schema.js +345 -0
- package/dist/endpoint/store/database/schema.js.map +1 -0
- package/dist/endpoint/store/database/values.d.ts +119 -0
- package/dist/endpoint/store/database/values.d.ts.map +1 -0
- package/dist/endpoint/store/database/values.js +194 -0
- package/dist/endpoint/store/database/values.js.map +1 -0
- package/dist/endpoint/store/deliveries.d.ts +38 -0
- package/dist/endpoint/store/deliveries.d.ts.map +1 -0
- package/dist/endpoint/store/deliveries.js +124 -0
- package/dist/endpoint/store/deliveries.js.map +1 -0
- package/dist/endpoint/store/dissemination.d.ts +27 -0
- package/dist/endpoint/store/dissemination.d.ts.map +1 -0
- package/dist/endpoint/store/dissemination.js +139 -0
- package/dist/endpoint/store/dissemination.js.map +1 -0
- package/dist/endpoint/store/index.d.ts +15 -0
- package/dist/endpoint/store/index.d.ts.map +1 -0
- package/dist/endpoint/store/index.js +76 -0
- package/dist/endpoint/store/index.js.map +1 -0
- package/dist/endpoint/store/management.d.ts +42 -0
- package/dist/endpoint/store/management.d.ts.map +1 -0
- package/dist/endpoint/store/management.js +259 -0
- package/dist/endpoint/store/management.js.map +1 -0
- package/dist/endpoint/store/outbound.d.ts +62 -0
- package/dist/endpoint/store/outbound.d.ts.map +1 -0
- package/dist/endpoint/store/outbound.js +278 -0
- package/dist/endpoint/store/outbound.js.map +1 -0
- package/dist/endpoint/store/records.d.ts +56 -0
- package/dist/endpoint/store/records.d.ts.map +1 -0
- package/dist/endpoint/store/records.js +352 -0
- package/dist/endpoint/store/records.js.map +1 -0
- package/dist/endpoint/store/rows/index.d.ts +138 -0
- package/dist/endpoint/store/rows/index.d.ts.map +1 -0
- package/dist/endpoint/store/rows/index.js +307 -0
- package/dist/endpoint/store/rows/index.js.map +1 -0
- package/dist/endpoint/store/types.d.ts +223 -0
- package/dist/endpoint/store/types.d.ts.map +1 -0
- package/dist/endpoint/store/types.js +15 -0
- package/dist/endpoint/store/types.js.map +1 -0
- package/dist/endpoint/store.d.ts +10 -0
- package/dist/endpoint/store.d.ts.map +1 -0
- package/dist/endpoint/store.js +6 -0
- package/dist/endpoint/store.js.map +1 -0
- package/dist/harness-mcp-contract.d.ts +101 -0
- package/dist/harness-mcp-contract.d.ts.map +1 -0
- package/dist/harness-mcp-contract.js +61 -0
- package/dist/harness-mcp-contract.js.map +1 -0
- package/dist/{harness-mcp-server.d.ts → harness-mcp-http.d.ts} +9 -8
- package/dist/harness-mcp-http.d.ts.map +1 -0
- package/dist/{harness-mcp-server.js → harness-mcp-http.js} +38 -60
- package/dist/harness-mcp-http.js.map +1 -0
- package/dist/harness-mcp-subscription.d.ts +12 -7
- package/dist/harness-mcp-subscription.d.ts.map +1 -1
- package/dist/harness-mcp-subscription.js +113 -100
- package/dist/harness-mcp-subscription.js.map +1 -1
- package/dist/harness-mcp-wire.d.ts +24 -49
- package/dist/harness-mcp-wire.d.ts.map +1 -1
- package/dist/harness-mcp-wire.js +381 -124
- package/dist/harness-mcp-wire.js.map +1 -1
- package/dist/index.d.ts +4 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -10
- package/dist/index.js.map +1 -1
- package/dist/management-runtime.d.ts +217 -0
- package/dist/management-runtime.d.ts.map +1 -0
- package/dist/management-runtime.js +127 -0
- package/dist/management-runtime.js.map +1 -0
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +46 -0
- package/dist/server.js.map +1 -0
- package/dist/server.types-check.d.ts +23 -0
- package/dist/server.types-check.d.ts.map +1 -0
- package/dist/server.types-check.js +7 -0
- package/dist/server.types-check.js.map +1 -0
- package/package.json +24 -52
- package/dist/agent-client.d.ts +0 -5
- package/dist/agent-client.d.ts.map +0 -1
- package/dist/agent-client.js +0 -3
- package/dist/agent-client.js.map +0 -1
- package/dist/auth.d.ts +0 -37
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -79
- package/dist/auth.js.map +0 -1
- package/dist/bounded-map.d.ts +0 -32
- package/dist/bounded-map.d.ts.map +0 -1
- package/dist/bounded-map.js +0 -79
- package/dist/bounded-map.js.map +0 -1
- package/dist/channel-base/format-cross-conv.d.ts +0 -43
- package/dist/channel-base/format-cross-conv.d.ts.map +0 -1
- package/dist/channel-base/format-cross-conv.js +0 -65
- package/dist/channel-base/format-cross-conv.js.map +0 -1
- package/dist/channel-base/format-group-block.d.ts +0 -48
- package/dist/channel-base/format-group-block.d.ts.map +0 -1
- package/dist/channel-base/format-group-block.js +0 -62
- package/dist/channel-base/format-group-block.js.map +0 -1
- package/dist/channel-base/index.d.ts +0 -12
- package/dist/channel-base/index.d.ts.map +0 -1
- package/dist/channel-base/index.js +0 -16
- package/dist/channel-base/index.js.map +0 -1
- package/dist/channel-core-enrichment.d.ts +0 -38
- package/dist/channel-core-enrichment.d.ts.map +0 -1
- package/dist/channel-core-enrichment.js +0 -217
- package/dist/channel-core-enrichment.js.map +0 -1
- package/dist/channel-core-test-support.d.ts +0 -75
- package/dist/channel-core-test-support.d.ts.map +0 -1
- package/dist/channel-core-test-support.js +0 -74
- package/dist/channel-core-test-support.js.map +0 -1
- package/dist/channel-core.d.ts +0 -306
- package/dist/channel-core.d.ts.map +0 -1
- package/dist/channel-core.js +0 -365
- package/dist/channel-core.js.map +0 -1
- package/dist/config.d.ts +0 -33
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -51
- package/dist/config.js.map +0 -1
- package/dist/config.test-utils.d.ts +0 -24
- package/dist/config.test-utils.d.ts.map +0 -1
- package/dist/config.test-utils.js +0 -57
- package/dist/config.test-utils.js.map +0 -1
- package/dist/harness/client-runtime.d.ts +0 -31
- package/dist/harness/client-runtime.d.ts.map +0 -1
- package/dist/harness/client-runtime.js +0 -121
- package/dist/harness/client-runtime.js.map +0 -1
- package/dist/harness/index.d.ts +0 -5
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js +0 -5
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/runtime.d.ts +0 -301
- package/dist/harness/runtime.d.ts.map +0 -1
- package/dist/harness/runtime.js +0 -165
- package/dist/harness/runtime.js.map +0 -1
- package/dist/harness-client.d.ts +0 -47
- package/dist/harness-client.d.ts.map +0 -1
- package/dist/harness-client.js +0 -76
- package/dist/harness-client.js.map +0 -1
- package/dist/harness-context-projection.d.ts +0 -35
- package/dist/harness-context-projection.d.ts.map +0 -1
- package/dist/harness-context-projection.js +0 -123
- package/dist/harness-context-projection.js.map +0 -1
- package/dist/harness-mcp-server.d.ts.map +0 -1
- package/dist/harness-mcp-server.js.map +0 -1
- package/dist/local-paths.d.ts +0 -11
- package/dist/local-paths.d.ts.map +0 -1
- package/dist/local-paths.js +0 -21
- package/dist/local-paths.js.map +0 -1
- package/dist/message-rendering.d.ts +0 -4
- package/dist/message-rendering.d.ts.map +0 -1
- package/dist/message-rendering.js +0 -8
- package/dist/message-rendering.js.map +0 -1
- package/dist/moltzapd-catalog.d.ts +0 -35
- package/dist/moltzapd-catalog.d.ts.map +0 -1
- package/dist/moltzapd-catalog.js +0 -117
- package/dist/moltzapd-catalog.js.map +0 -1
- package/dist/moltzapd-child-ipc.d.ts +0 -26
- package/dist/moltzapd-child-ipc.d.ts.map +0 -1
- package/dist/moltzapd-child-ipc.js +0 -31
- package/dist/moltzapd-child-ipc.js.map +0 -1
- package/dist/moltzapd-child.d.ts +0 -55
- package/dist/moltzapd-child.d.ts.map +0 -1
- package/dist/moltzapd-child.js +0 -225
- package/dist/moltzapd-child.js.map +0 -1
- package/dist/moltzapd-main.d.ts +0 -3
- package/dist/moltzapd-main.d.ts.map +0 -1
- package/dist/moltzapd-main.js +0 -18
- package/dist/moltzapd-main.js.map +0 -1
- package/dist/moltzapd-registration.d.ts +0 -40
- package/dist/moltzapd-registration.d.ts.map +0 -1
- package/dist/moltzapd-registration.js +0 -59
- package/dist/moltzapd-registration.js.map +0 -1
- package/dist/moltzapd.d.ts +0 -85
- package/dist/moltzapd.d.ts.map +0 -1
- package/dist/moltzapd.js +0 -150
- package/dist/moltzapd.js.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts +0 -53
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.js +0 -29
- package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +0 -1
- package/dist/notification/errors.d.ts +0 -41
- package/dist/notification/errors.d.ts.map +0 -1
- package/dist/notification/errors.js +0 -24
- package/dist/notification/errors.js.map +0 -1
- package/dist/notification/index.d.ts +0 -6
- package/dist/notification/index.d.ts.map +0 -1
- package/dist/notification/index.js +0 -6
- package/dist/notification/index.js.map +0 -1
- package/dist/notification/stream.d.ts +0 -75
- package/dist/notification/stream.d.ts.map +0 -1
- package/dist/notification/stream.js +0 -30
- package/dist/notification/stream.js.map +0 -1
- package/dist/notification/trace.d.ts +0 -10
- package/dist/notification/trace.d.ts.map +0 -1
- package/dist/notification/trace.js +0 -34
- package/dist/notification/trace.js.map +0 -1
- package/dist/pagination.d.ts +0 -52
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pagination.js +0 -51
- package/dist/pagination.js.map +0 -1
- package/dist/presentation/index.d.ts +0 -3
- package/dist/presentation/index.d.ts.map +0 -1
- package/dist/presentation/index.js +0 -3
- package/dist/presentation/index.js.map +0 -1
- package/dist/presentation/state.d.ts +0 -77
- package/dist/presentation/state.d.ts.map +0 -1
- package/dist/presentation/state.js +0 -211
- package/dist/presentation/state.js.map +0 -1
- package/dist/profile.d.ts +0 -106
- package/dist/profile.d.ts.map +0 -1
- package/dist/profile.js +0 -171
- package/dist/profile.js.map +0 -1
- package/dist/service-event-trace.d.ts +0 -15
- package/dist/service-event-trace.d.ts.map +0 -1
- package/dist/service-event-trace.js +0 -35
- package/dist/service-event-trace.js.map +0 -1
- package/dist/service.d.ts +0 -228
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -485
- package/dist/service.js.map +0 -1
- package/dist/test-utils/channel-service-fixture.d.ts +0 -53
- package/dist/test-utils/channel-service-fixture.d.ts.map +0 -1
- package/dist/test-utils/channel-service-fixture.js +0 -178
- package/dist/test-utils/channel-service-fixture.js.map +0 -1
- package/dist/test-utils/fake-service.d.ts +0 -82
- package/dist/test-utils/fake-service.d.ts.map +0 -1
- package/dist/test-utils/fake-service.js +0 -108
- package/dist/test-utils/fake-service.js.map +0 -1
- package/dist/test-utils/harness.d.ts +0 -27
- package/dist/test-utils/harness.d.ts.map +0 -1
- package/dist/test-utils/harness.js +0 -33
- package/dist/test-utils/harness.js.map +0 -1
- package/dist/test-utils/ids.d.ts +0 -21
- package/dist/test-utils/ids.d.ts.map +0 -1
- package/dist/test-utils/ids.js +0 -68
- package/dist/test-utils/ids.js.map +0 -1
- package/dist/test-utils/index.d.ts +0 -56
- package/dist/test-utils/index.d.ts.map +0 -1
- package/dist/test-utils/index.js +0 -67
- package/dist/test-utils/index.js.map +0 -1
- package/dist/test-utils/process/reserve-port.d.ts +0 -20
- package/dist/test-utils/process/reserve-port.d.ts.map +0 -1
- package/dist/test-utils/process/reserve-port.js +0 -41
- package/dist/test-utils/process/reserve-port.js.map +0 -1
- package/dist/test-utils/standalone-provisioning.d.ts +0 -22
- package/dist/test-utils/standalone-provisioning.d.ts.map +0 -1
- package/dist/test-utils/standalone-provisioning.js +0 -17
- package/dist/test-utils/standalone-provisioning.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/service.js
DELETED
|
@@ -1,485 +0,0 @@
|
|
|
1
|
-
import { agentId as AgentIdSchema, agentsList, } from "@moltzap/protocol/identity";
|
|
2
|
-
import { conversationCreatedNotificationDefinition, } from "@moltzap/protocol/conversation";
|
|
3
|
-
import { messageReceivedNotificationDefinition, messagesSend, } from "@moltzap/protocol/message";
|
|
4
|
-
import { NotConnectedError, isNotificationDeliveryFor, } from "@moltzap/protocol/rpc";
|
|
5
|
-
import { BoundedMap } from "./bounded-map.js";
|
|
6
|
-
import { Deferred, Effect, Exit, Option, Schema, Scope, Stream } from "effect";
|
|
7
|
-
import { MoltZapAgentClient } from "./agent-client.js";
|
|
8
|
-
import { loadServiceConfig, } from "./config.js";
|
|
9
|
-
import { notificationTraceRecord } from "./notification/trace.js";
|
|
10
|
-
import { renderPart } from "./message-rendering.js";
|
|
11
|
-
import { appendClientEventTrace } from "./service-event-trace.js";
|
|
12
|
-
import { PresentationState, } from "./presentation/index.js";
|
|
13
|
-
const CROSS_CONTEXT_TEXT_LIMIT = 120;
|
|
14
|
-
const AGENT_LOOKUP_PAGE_SIZE = 100;
|
|
15
|
-
const AGENT_LOOKUP_MAX_PAGES = 20;
|
|
16
|
-
const decodeAgentId = Schema.decodeUnknownOption(AgentIdSchema);
|
|
17
|
-
/**
|
|
18
|
-
* Escape `<`, `>`, `&` so sender content can't escape a `<system-reminder>` block.
|
|
19
|
-
* @param s Value supplied to the operation.
|
|
20
|
-
* @returns The sanitize for system reminder result.
|
|
21
|
-
*/
|
|
22
|
-
export function sanitizeForSystemReminder(s) {
|
|
23
|
-
return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Format CrossConversationEntry[] as a `<system-reminder>` block. Adapters
|
|
27
|
-
* that inline context into prompt text (nanoclaw) and `MoltZapService.getContext`
|
|
28
|
-
* share this formatter so sanitization and line shape stay in one place.
|
|
29
|
-
* @param entries Value supplied to the operation.
|
|
30
|
-
* @param opts Value supplied to the operation.
|
|
31
|
-
* @param opts.header Value supplied to the operation.
|
|
32
|
-
* @returns The format cross conversation block result.
|
|
33
|
-
*/
|
|
34
|
-
function formatCrossConversationBlock(entries, opts) {
|
|
35
|
-
if (entries.length === 0) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
const lines = entries.map((e) => {
|
|
39
|
-
const safeSender = sanitizeForSystemReminder(e.senderName);
|
|
40
|
-
const safeText = sanitizeForSystemReminder(e.text.slice(0, CROSS_CONTEXT_TEXT_LIMIT));
|
|
41
|
-
return `@${safeSender} (${e.minutesAgo}m ago): (${e.count} new) "${safeText}"`;
|
|
42
|
-
});
|
|
43
|
-
return [
|
|
44
|
-
"<system-reminder>",
|
|
45
|
-
opts.header,
|
|
46
|
-
...lines,
|
|
47
|
-
"</system-reminder>",
|
|
48
|
-
].join("\n");
|
|
49
|
-
}
|
|
50
|
-
function renderMessageText(message) {
|
|
51
|
-
return message.parts.map(renderPart).join(" ");
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Per-conversation dedup window. `BoundedMap` evicts the oldest message id
|
|
55
|
-
* when a new id arrives at capacity. 1000 × 36 bytes per UUID ≈ 36 KB per
|
|
56
|
-
* conversation, which keeps replay protection negligible at the expected
|
|
57
|
-
* conversation count.
|
|
58
|
-
*/
|
|
59
|
-
const DEDUP_WINDOW_PER_CONV = 1000;
|
|
60
|
-
/**
|
|
61
|
-
* Invoke every handler with `arg`, isolating throws so one bad handler
|
|
62
|
-
* doesn't abort the remaining fanout.
|
|
63
|
-
* @param handlers Value supplied to the operation.
|
|
64
|
-
* @param arg Value supplied to the operation.
|
|
65
|
-
*/
|
|
66
|
-
function fanout(handlers, arg) {
|
|
67
|
-
for (const h of handlers) {
|
|
68
|
-
try {
|
|
69
|
-
h(arg);
|
|
70
|
-
}
|
|
71
|
-
catch (err) {
|
|
72
|
-
Effect.runFork(Effect.logError("notification handler threw", err));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Stateful MoltZap client that manages connection, conversation tracking,
|
|
78
|
-
* agent name resolution, and cross-conversation context generation.
|
|
79
|
-
*
|
|
80
|
-
* API contract: **every fallible method returns `Effect`.** No `*Async`
|
|
81
|
-
* Promise siblings — async/await consumers run the Effect at the edge
|
|
82
|
-
* with `Effect.runPromise`. Keep this class Effect-only so downstream
|
|
83
|
-
* callers compose failures and cancellation explicitly.
|
|
84
|
-
*/
|
|
85
|
-
export class MoltZapService {
|
|
86
|
-
client = null;
|
|
87
|
-
connectedValue = false;
|
|
88
|
-
shutdownCompletion = null;
|
|
89
|
-
/**
|
|
90
|
-
* Service-owned scope. Opened in `connect()`, owns the
|
|
91
|
-
* `subscribeAll → Stream.runForEach` fan-out fiber. Closed in `close()` so
|
|
92
|
-
* the fiber terminates with the service.
|
|
93
|
-
*
|
|
94
|
-
* Held off the public `connect()` signature so callers do not need to
|
|
95
|
-
* thread a `Scope` requirement.
|
|
96
|
-
*/
|
|
97
|
-
serviceScope = null;
|
|
98
|
-
presentationState = new PresentationState();
|
|
99
|
-
/**
|
|
100
|
-
* The branded outer and inner keys keep conversation and message ids from
|
|
101
|
-
* crossing accidentally while each conversation owns its eviction window.
|
|
102
|
-
*/
|
|
103
|
-
seenMessageIds = new Map();
|
|
104
|
-
handlers = {
|
|
105
|
-
message: [],
|
|
106
|
-
rawNotification: [],
|
|
107
|
-
disconnect: [],
|
|
108
|
-
};
|
|
109
|
-
ownAgentIdValue;
|
|
110
|
-
opts;
|
|
111
|
-
constructor(opts) {
|
|
112
|
-
this.opts = opts;
|
|
113
|
-
// The empty HelloOk carries no identity; `ownAgentId` is the client's
|
|
114
|
-
// registered/stored id, available before the handshake.
|
|
115
|
-
this.ownAgentIdValue = opts.agentId;
|
|
116
|
-
}
|
|
117
|
-
static fromConfig(config) {
|
|
118
|
-
return new MoltZapService(config);
|
|
119
|
-
}
|
|
120
|
-
static make(profileName) {
|
|
121
|
-
return loadServiceConfig(profileName).pipe(Effect.map((config) => MoltZapService.fromConfig(config)));
|
|
122
|
-
}
|
|
123
|
-
get connected() {
|
|
124
|
-
return this.connectedValue;
|
|
125
|
-
}
|
|
126
|
-
get ownAgentId() {
|
|
127
|
-
return this.ownAgentIdValue;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Effect-native: compose via `yield*` or bridge at the edge via `Effect.runPromise`.
|
|
131
|
-
* @returns The client result.
|
|
132
|
-
*/
|
|
133
|
-
connect() {
|
|
134
|
-
return Effect.gen(function* () {
|
|
135
|
-
// A new connection never takes ownership while resources from the
|
|
136
|
-
// preceding lifecycle are still closing.
|
|
137
|
-
while (this.shutdownCompletion !== null) {
|
|
138
|
-
const priorShutdown = this.shutdownCompletion;
|
|
139
|
-
yield* Deferred.await(priorShutdown);
|
|
140
|
-
if (this.shutdownCompletion === priorShutdown) {
|
|
141
|
-
this.shutdownCompletion = null;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
const client = new MoltZapAgentClient({
|
|
145
|
-
serverUrl: this.opts.serverUrl,
|
|
146
|
-
agentKey: this.opts.agentKey,
|
|
147
|
-
// The body doesn't branch on close metadata today; the signature is
|
|
148
|
-
// kept explicit so a future disconnect-handler chain can plumb
|
|
149
|
-
// code/reason through.
|
|
150
|
-
onDisconnect: () => {
|
|
151
|
-
this.connectedValue = false;
|
|
152
|
-
fanout(this.handlers.disconnect, undefined);
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
this.client = client;
|
|
156
|
-
// `subscribeAll().pipe(Stream.runForEach, …)` is forked into a
|
|
157
|
-
// service-owned scope. The Stream is materialized BEFORE `connect()` so
|
|
158
|
-
// subscriptions are registered with the registry pre-handshake (a
|
|
159
|
-
// pre-connect-legal operation).
|
|
160
|
-
//
|
|
161
|
-
// Stream errors of type `NotConnectedError` are surfaced on the
|
|
162
|
-
// fiber's failure channel only when the client transitions to
|
|
163
|
-
// terminal closed state (close() path); `Effect.catchAll` here
|
|
164
|
-
// would swallow them silently, so we route through `Effect.logError`
|
|
165
|
-
// before the fiber exits.
|
|
166
|
-
const serviceScope = yield* Scope.make();
|
|
167
|
-
this.serviceScope = serviceScope;
|
|
168
|
-
const fanoutEffect = client.subscribeAll().pipe(Stream.runForEach((notification) => Effect.sync(() => {
|
|
169
|
-
this.handleNotification(notification);
|
|
170
|
-
})), Effect.catchAll((cause) => Effect.logWarning("MoltZapService notification fan-out terminated", cause)), Effect.asVoid);
|
|
171
|
-
yield* Effect.forkIn(fanoutEffect, serviceScope);
|
|
172
|
-
const helloOk = yield* client.connect();
|
|
173
|
-
this.connectedValue = true;
|
|
174
|
-
return helloOk;
|
|
175
|
-
}.bind(this));
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Returns a lazy teardown effect that resolves after the service's owned
|
|
179
|
-
* transports and notification scope close.
|
|
180
|
-
*
|
|
181
|
-
* @returns Completion of the service-owned cleanup.
|
|
182
|
-
* @internal
|
|
183
|
-
*/
|
|
184
|
-
shutdown() {
|
|
185
|
-
return Effect.suspend(() => this.beginShutdown());
|
|
186
|
-
}
|
|
187
|
-
beginShutdown() {
|
|
188
|
-
if (this.shutdownCompletion !== null) {
|
|
189
|
-
return Deferred.await(this.shutdownCompletion);
|
|
190
|
-
}
|
|
191
|
-
const shutdownCompletion = Effect.runSync(Deferred.make());
|
|
192
|
-
this.shutdownCompletion = shutdownCompletion;
|
|
193
|
-
this.connectedValue = false;
|
|
194
|
-
const scopeToClose = this.serviceScope;
|
|
195
|
-
const clientToClose = this.client;
|
|
196
|
-
this.serviceScope = null;
|
|
197
|
-
this.client = null;
|
|
198
|
-
const closeScope = scopeToClose === null
|
|
199
|
-
? Effect.void
|
|
200
|
-
: Scope.close(scopeToClose, Exit.void);
|
|
201
|
-
const closeClient = clientToClose === null ? Effect.void : clientToClose.close();
|
|
202
|
-
Effect.runSync(this.presentationState.reset());
|
|
203
|
-
this.seenMessageIds.clear();
|
|
204
|
-
// Handlers are preserved across explicit close()/connect() cycles.
|
|
205
|
-
// MoltZapChannelCore subscribes once in its constructor; clearing handlers
|
|
206
|
-
// here would silently drop inbound dispatch after the next connect.
|
|
207
|
-
return Effect.uninterruptible(Effect.all([closeScope.pipe(Effect.zipRight(closeClient))], {
|
|
208
|
-
discard: true,
|
|
209
|
-
}).pipe(Effect.ensuring(Deferred.succeed(shutdownCompletion, undefined).pipe(Effect.asVoid))));
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Starts service teardown for callers that use the legacy synchronous
|
|
213
|
-
* lifecycle boundary.
|
|
214
|
-
*/
|
|
215
|
-
close() {
|
|
216
|
-
Effect.runFork(this.beginShutdown());
|
|
217
|
-
}
|
|
218
|
-
// --- Conversations ---
|
|
219
|
-
getConversation(convId) {
|
|
220
|
-
return this.presentationState.getConversation(convId);
|
|
221
|
-
}
|
|
222
|
-
getConversations() {
|
|
223
|
-
return this.presentationState.getConversations();
|
|
224
|
-
}
|
|
225
|
-
// --- Messages ---
|
|
226
|
-
getHistory(convId, limit) {
|
|
227
|
-
const historyLimit = limit ?? 0;
|
|
228
|
-
return this.presentationState.getHistory(convId, historyLimit);
|
|
229
|
-
}
|
|
230
|
-
// --- Agent Names ---
|
|
231
|
-
getAgentName(agentId) {
|
|
232
|
-
return this.presentationState.getAgentName(agentId);
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Cache-first agent-name lookup. Never fails: falls back to `agentId`
|
|
236
|
-
* when the RPC errors or the server has no record. The error path logs
|
|
237
|
-
* so ops can see repeated lookup failures; the empty-response path is
|
|
238
|
-
* silent (a cold agent is an expected transient state).
|
|
239
|
-
* @param agentId Identifier of the agent targeted by the operation.
|
|
240
|
-
* @returns The decoded d agent id.
|
|
241
|
-
*/
|
|
242
|
-
resolveAgentName(agentId) {
|
|
243
|
-
return Effect.gen(function* () {
|
|
244
|
-
const decodedAgentId = Option.getOrUndefined(decodeAgentId(agentId));
|
|
245
|
-
if (decodedAgentId === undefined) {
|
|
246
|
-
return agentId;
|
|
247
|
-
}
|
|
248
|
-
const cached = this.presentationState.getAgentName(agentId);
|
|
249
|
-
if (cached !== undefined) {
|
|
250
|
-
return cached;
|
|
251
|
-
}
|
|
252
|
-
return yield* this.cacheVisibleAgentNamesForIds(new Set([decodedAgentId])).pipe(Effect.map(() => {
|
|
253
|
-
const resolved = this.presentationState.getAgentName(agentId);
|
|
254
|
-
return resolved ?? agentId;
|
|
255
|
-
}), Effect.catchAll((err) => Effect.logWarning("agent/identity/agents/list failed; falling back to agentId").pipe(Effect.annotateLogs({ agentId, err: String(err) }), Effect.as(agentId))));
|
|
256
|
-
}.bind(this));
|
|
257
|
-
}
|
|
258
|
-
// --- Messaging ---
|
|
259
|
-
/**
|
|
260
|
-
* Send a text message into a conversation.
|
|
261
|
-
*
|
|
262
|
-
* ```mermaid
|
|
263
|
-
* sequenceDiagram
|
|
264
|
-
* participant caller
|
|
265
|
-
* participant svc as MoltZapService
|
|
266
|
-
* participant ws as MoltZapAgentClient
|
|
267
|
-
* participant server
|
|
268
|
-
*
|
|
269
|
-
* caller->>svc: send(convId, text, opts?)
|
|
270
|
-
* svc->>ws: sendRpc(MessagesSend, params)
|
|
271
|
-
* Note over ws: stateRef None → fail NotConnectedError; otherwise allocate request id, encode frame
|
|
272
|
-
* ws->>server: {jsonrpc, method agent/message/send, id, params}
|
|
273
|
-
* Note over ws: Deferred raced against 30s timeout
|
|
274
|
-
* server-->>ws: {result, id} or {error, id}
|
|
275
|
-
* Note over ws: reader fiber decodes, resolves the Deferred
|
|
276
|
-
* ws-->>svc: result or RpcServerError or RpcTimeoutError
|
|
277
|
-
* svc-->>caller: Effect.void
|
|
278
|
-
* ```
|
|
279
|
-
*
|
|
280
|
-
* @param conversationId Value supplied to the operation.
|
|
281
|
-
* @param text Text to process.
|
|
282
|
-
* @returns The send result.
|
|
283
|
-
*/
|
|
284
|
-
send(conversationId, text) {
|
|
285
|
-
return Effect.asVoid(this.call(messagesSend.name, {
|
|
286
|
-
conversationId,
|
|
287
|
-
parts: [{ type: "text", text }],
|
|
288
|
-
}));
|
|
289
|
-
}
|
|
290
|
-
cacheAgentNames(agents) {
|
|
291
|
-
return this.presentationState.cacheAgentNames(agents);
|
|
292
|
-
}
|
|
293
|
-
agentListParams(cursor) {
|
|
294
|
-
return cursor === undefined
|
|
295
|
-
? { limit: AGENT_LOOKUP_PAGE_SIZE }
|
|
296
|
-
: { limit: AGENT_LOOKUP_PAGE_SIZE, cursor };
|
|
297
|
-
}
|
|
298
|
-
cacheVisibleAgentNamesForIds(agentIds) {
|
|
299
|
-
return Effect.gen(function* () {
|
|
300
|
-
const missing = new Set(agentIds);
|
|
301
|
-
let cursor = undefined;
|
|
302
|
-
for (let page = 0; page < AGENT_LOOKUP_MAX_PAGES; page++) {
|
|
303
|
-
const params = this.agentListParams(cursor);
|
|
304
|
-
const result = yield* this.call(agentsList.name, params);
|
|
305
|
-
yield* this.cacheAgentNames(result.agents);
|
|
306
|
-
for (const agent of result.agents) {
|
|
307
|
-
missing.delete(agent.id);
|
|
308
|
-
}
|
|
309
|
-
if (missing.size === 0 || result.nextCursor === undefined) {
|
|
310
|
-
return;
|
|
311
|
-
}
|
|
312
|
-
cursor = result.nextCursor;
|
|
313
|
-
}
|
|
314
|
-
}.bind(this));
|
|
315
|
-
}
|
|
316
|
-
findVisibleAgentByName(agentName) {
|
|
317
|
-
return Effect.gen(function* () {
|
|
318
|
-
let cursor = undefined;
|
|
319
|
-
for (let page = 0; page < AGENT_LOOKUP_MAX_PAGES; page++) {
|
|
320
|
-
const params = this.agentListParams(cursor);
|
|
321
|
-
const result = yield* this.call(agentsList.name, params);
|
|
322
|
-
yield* this.cacheAgentNames(result.agents);
|
|
323
|
-
const hit = result.agents.find((agent) => agent.name === agentName);
|
|
324
|
-
if (hit !== undefined || result.nextCursor === undefined) {
|
|
325
|
-
return hit;
|
|
326
|
-
}
|
|
327
|
-
cursor = result.nextCursor;
|
|
328
|
-
}
|
|
329
|
-
return undefined;
|
|
330
|
-
}.bind(this));
|
|
331
|
-
}
|
|
332
|
-
// --- Cross-Conversation Context ---
|
|
333
|
-
/**
|
|
334
|
-
* Generate a system reminder with updates from other conversations.
|
|
335
|
-
* Each conversation has its own view of what's "new" — markers are tracked
|
|
336
|
-
* per viewing conversation and advanced after notification.
|
|
337
|
-
* @param currentConvId Value supplied to the operation.
|
|
338
|
-
* @param opts Value supplied to the operation.
|
|
339
|
-
* @returns The context options result.
|
|
340
|
-
*/
|
|
341
|
-
getContext(currentConvId, opts) {
|
|
342
|
-
const contextOptions = opts ?? {};
|
|
343
|
-
const { entries, commit } = this.peekContextEntries(currentConvId, contextOptions);
|
|
344
|
-
if (entries.length === 0) {
|
|
345
|
-
return null;
|
|
346
|
-
}
|
|
347
|
-
commit();
|
|
348
|
-
return formatCrossConversationBlock(entries, {
|
|
349
|
-
header: `Recent updates (you are in conv:${currentConvId}):`,
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Return recent activity in other conversations without advancing any state.
|
|
354
|
-
* Call `commit()` on the result to mark the returned messages as seen so
|
|
355
|
-
* subsequent peeks return only what's new. A caller that reads without
|
|
356
|
-
* committing can re-peek idempotently.
|
|
357
|
-
* @param currentConvId Value supplied to the operation.
|
|
358
|
-
* @param opts Value supplied to the operation.
|
|
359
|
-
* @param opts.maxConversations Value supplied to the operation.
|
|
360
|
-
* @param opts.maxMessagesPerConv Value supplied to the operation.
|
|
361
|
-
* @returns The max convs result.
|
|
362
|
-
*/
|
|
363
|
-
peekContextEntries(currentConvId, opts) {
|
|
364
|
-
const contextOptions = opts ?? {};
|
|
365
|
-
return this.presentationState.peekContextEntries(currentConvId, renderMessageText, contextOptions);
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Return all new messages from all other conversations as full transcripts,
|
|
369
|
-
* sorted chronologically. Uses the same lastNotified markers as
|
|
370
|
-
* peekContextEntries. Call commit() to advance markers.
|
|
371
|
-
* @param currentConvId Value supplied to the operation.
|
|
372
|
-
* @returns The all messages result.
|
|
373
|
-
*/
|
|
374
|
-
peekFullMessages(currentConvId) {
|
|
375
|
-
return this.presentationState.peekFullMessages(currentConvId, renderMessageText);
|
|
376
|
-
}
|
|
377
|
-
// --- Notifications ---
|
|
378
|
-
on(notification, handler) {
|
|
379
|
-
this.handlers[notification].push(handler);
|
|
380
|
-
}
|
|
381
|
-
// --- RPC passthrough ---
|
|
382
|
-
/**
|
|
383
|
-
* Outbound RPC, typed per method — delegates to the agent client's typed
|
|
384
|
-
* `call`. `call("agent/identity/agents/list", payload)` recovers the result and that
|
|
385
|
-
* method's tagged-error union; an app-only method does not typecheck.
|
|
386
|
-
* @param tag Value supplied to the operation.
|
|
387
|
-
* @param payload Value supplied to the operation.
|
|
388
|
-
* @param opts Value supplied to the operation.
|
|
389
|
-
* @returns The client result.
|
|
390
|
-
*/
|
|
391
|
-
call(tag, payload, opts) {
|
|
392
|
-
return Effect.suspend(() => {
|
|
393
|
-
const client = this.client;
|
|
394
|
-
if (!client) {
|
|
395
|
-
return Effect.fail(new NotConnectedError({ message: "Not connected" }));
|
|
396
|
-
}
|
|
397
|
-
return client.call(tag, payload, opts);
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
callDefinition(definition, payload, opts) {
|
|
401
|
-
return Effect.suspend(() => {
|
|
402
|
-
const client = this.client;
|
|
403
|
-
if (!client) {
|
|
404
|
-
return Effect.fail(new NotConnectedError({ message: "Not connected" }));
|
|
405
|
-
}
|
|
406
|
-
return client.callDefinition(definition, payload, opts);
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
// --- Internals ---
|
|
410
|
-
handleNotification(notification) {
|
|
411
|
-
this.recordNotificationTrace(notification);
|
|
412
|
-
fanout(this.handlers.rawNotification, notification);
|
|
413
|
-
this.dispatchTypedNotification(notification);
|
|
414
|
-
}
|
|
415
|
-
recordNotificationTrace(notification) {
|
|
416
|
-
Effect.runFork(appendClientEventTrace(notificationTraceRecord(notification, this.ownAgentIdValue)));
|
|
417
|
-
}
|
|
418
|
-
dispatchTypedNotification(notification) {
|
|
419
|
-
if (this.dispatchMessageNotification(notification)) {
|
|
420
|
-
return;
|
|
421
|
-
}
|
|
422
|
-
this.dispatchConversationNotification(notification);
|
|
423
|
-
}
|
|
424
|
-
dispatchMessageNotification(notification) {
|
|
425
|
-
if (isNotificationDeliveryFor(notification, messageReceivedNotificationDefinition)) {
|
|
426
|
-
this.handleMessageReceivedNotification(notification.params);
|
|
427
|
-
return true;
|
|
428
|
-
}
|
|
429
|
-
return false;
|
|
430
|
-
}
|
|
431
|
-
dispatchConversationNotification(notification) {
|
|
432
|
-
if (isNotificationDeliveryFor(notification, conversationCreatedNotificationDefinition)) {
|
|
433
|
-
this.handleConversationCreatedNotification(notification.params);
|
|
434
|
-
return true;
|
|
435
|
-
}
|
|
436
|
-
return false;
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Record `messageId` in the per-conversation dedup window. Returns
|
|
440
|
-
* `true` when the id is new (caller proceeds), `false` when the id is
|
|
441
|
-
* a duplicate within the window (caller drops). On a new id, evicts
|
|
442
|
-
* the oldest entry if the window is full.
|
|
443
|
-
*
|
|
444
|
-
* Bound to the live `agent/message/received` notification path: a single
|
|
445
|
-
* server-side broadcast that surfaces the same id twice (network
|
|
446
|
-
* replay, dual subscription) is suppressed to one
|
|
447
|
-
* `on("message", ...)` event. `agent/message/list` returns raw history
|
|
448
|
-
* unfiltered; consumers that combine both feeds dedup themselves.
|
|
449
|
-
* @param convId Value supplied to the operation.
|
|
450
|
-
* @param msgId Value supplied to the operation.
|
|
451
|
-
* @returns The dedup window result.
|
|
452
|
-
*/
|
|
453
|
-
recordMessageIdIfNew(convId, msgId) {
|
|
454
|
-
let dedupWindow = this.seenMessageIds.get(convId);
|
|
455
|
-
if (dedupWindow === undefined) {
|
|
456
|
-
dedupWindow = new BoundedMap(DEDUP_WINDOW_PER_CONV);
|
|
457
|
-
this.seenMessageIds.set(convId, dedupWindow);
|
|
458
|
-
}
|
|
459
|
-
if (dedupWindow.has(msgId)) {
|
|
460
|
-
// Replays retain their original FIFO age so repeated delivery cannot
|
|
461
|
-
// keep an old id resident forever.
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
dedupWindow.set(msgId, true);
|
|
465
|
-
return true;
|
|
466
|
-
}
|
|
467
|
-
handleMessageReceivedNotification(notification) {
|
|
468
|
-
const msg = notification.message;
|
|
469
|
-
const convId = msg.conversationId;
|
|
470
|
-
if (!this.recordMessageIdIfNew(convId, msg.id)) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
this.presentationState.storeMessage(msg.conversationId, msg);
|
|
474
|
-
// Name resolution is driven lazily by channel-core's serialized consumer
|
|
475
|
-
// via resolveAgentName(), which populates the presentation name cache on
|
|
476
|
-
// first miss and hits it on every subsequent message.
|
|
477
|
-
if (msg.senderId !== this.ownAgentIdValue) {
|
|
478
|
-
fanout(this.handlers.message, { message: msg });
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
handleConversationCreatedNotification(notification) {
|
|
482
|
-
this.presentationState.storeConversation(notification);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
//# sourceMappingURL=service.js.map
|
package/dist/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/** Test fixture factory for ChannelService-shaped objects. */
|
|
2
|
-
import type { Message } from "@moltzap/protocol/message";
|
|
3
|
-
import type { ChannelService } from "../channel-core.js";
|
|
4
|
-
import type { CrossConversationEntry, CrossConvMessage } from "../service.js";
|
|
5
|
-
interface SentReply {
|
|
6
|
-
convId: string;
|
|
7
|
-
text: string;
|
|
8
|
-
}
|
|
9
|
-
interface FixtureConversationMeta {
|
|
10
|
-
type: string;
|
|
11
|
-
name?: string;
|
|
12
|
-
participants: string[];
|
|
13
|
-
}
|
|
14
|
-
/** Fire events on the fixture service. */
|
|
15
|
-
export interface ChannelServiceEmit {
|
|
16
|
-
message(msg: Message): void;
|
|
17
|
-
disconnect(): void;
|
|
18
|
-
}
|
|
19
|
-
/** Describes channel service state. */
|
|
20
|
-
export interface ChannelServiceState {
|
|
21
|
-
setConversation(id: string, meta: FixtureConversationMeta): void;
|
|
22
|
-
setAgentName(id: string, name: string): void;
|
|
23
|
-
setContextEntries(currentConvId: string, entries: CrossConversationEntry[]): void;
|
|
24
|
-
setFullMessages(currentConvId: string, messages: CrossConvMessage[]): void;
|
|
25
|
-
setResolveAgentNameFailure(agentId: string, err: Error): void;
|
|
26
|
-
setConnectResult(result: unknown): void;
|
|
27
|
-
readonly sent: readonly SentReply[];
|
|
28
|
-
readonly connectCalls: {
|
|
29
|
-
count: number;
|
|
30
|
-
};
|
|
31
|
-
readonly closeCalls: {
|
|
32
|
-
count: number;
|
|
33
|
-
};
|
|
34
|
-
resolveAgentNameCallCount(agentId: string): number;
|
|
35
|
-
}
|
|
36
|
-
/** Describes fake channel service. */
|
|
37
|
-
export interface FakeChannelService {
|
|
38
|
-
service: ChannelService;
|
|
39
|
-
emit: ChannelServiceEmit;
|
|
40
|
-
state: ChannelServiceState;
|
|
41
|
-
}
|
|
42
|
-
/** Configures create fake channel service. */
|
|
43
|
-
export interface CreateFakeChannelServiceOptions {
|
|
44
|
-
ownAgentId?: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Creates fake channel service.
|
|
48
|
-
* @param opts Value supplied to the operation.
|
|
49
|
-
* @returns The created fake channel service.
|
|
50
|
-
*/
|
|
51
|
-
export declare function createFakeChannelService(opts?: CreateFakeChannelServiceOptions): FakeChannelService;
|
|
52
|
-
export {};
|
|
53
|
-
//# sourceMappingURL=channel-service-fixture.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel-service-fixture.d.ts","sourceRoot":"","sources":["../../src/test-utils/channel-service-fixture.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAI9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAO9E,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA+BD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,sBAAsB,EAAE,GAChC,IAAI,CAAC;IACR,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC3E,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9D,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACpD;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,8CAA8C;AAC9C,MAAM,WAAW,+BAA+B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,+BAAoC,GACzC,kBAAkB,CAOpB"}
|