@moltzap/client 2026.806.0 → 2026.812.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.
Files changed (190) hide show
  1. package/dist/channel-base/index.d.ts +4 -4
  2. package/dist/channel-base/index.d.ts.map +1 -1
  3. package/dist/channel-base/index.js +6 -3
  4. package/dist/channel-base/index.js.map +1 -1
  5. package/dist/channel-core-enrichment.d.ts +24 -0
  6. package/dist/channel-core-enrichment.d.ts.map +1 -1
  7. package/dist/channel-core-enrichment.js +94 -20
  8. package/dist/channel-core-enrichment.js.map +1 -1
  9. package/dist/channel-core.d.ts +3 -1
  10. package/dist/channel-core.d.ts.map +1 -1
  11. package/dist/channel-core.js +2 -0
  12. package/dist/channel-core.js.map +1 -1
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +7 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/config.test-utils.d.ts +6 -0
  18. package/dist/config.test-utils.d.ts.map +1 -1
  19. package/dist/config.test-utils.js +5 -1
  20. package/dist/config.test-utils.js.map +1 -1
  21. package/dist/harness/client-runtime.d.ts +12 -5
  22. package/dist/harness/client-runtime.d.ts.map +1 -1
  23. package/dist/harness/client-runtime.js +16 -2
  24. package/dist/harness/client-runtime.js.map +1 -1
  25. package/dist/harness/index.d.ts +2 -2
  26. package/dist/harness/index.d.ts.map +1 -1
  27. package/dist/harness/index.js +2 -2
  28. package/dist/harness/index.js.map +1 -1
  29. package/dist/harness/runtime.d.ts +152 -0
  30. package/dist/harness/runtime.d.ts.map +1 -1
  31. package/dist/harness/runtime.js +99 -2
  32. package/dist/harness/runtime.js.map +1 -1
  33. package/dist/harness-client.d.ts +17 -13
  34. package/dist/harness-client.d.ts.map +1 -1
  35. package/dist/harness-client.js +59 -4
  36. package/dist/harness-client.js.map +1 -1
  37. package/dist/harness-context-projection.d.ts +35 -0
  38. package/dist/harness-context-projection.d.ts.map +1 -0
  39. package/dist/harness-context-projection.js +123 -0
  40. package/dist/harness-context-projection.js.map +1 -0
  41. package/dist/harness-mcp-server.d.ts +1 -2
  42. package/dist/harness-mcp-server.d.ts.map +1 -1
  43. package/dist/harness-mcp-server.js +11 -17
  44. package/dist/harness-mcp-server.js.map +1 -1
  45. package/dist/harness-mcp-wire.d.ts +47 -15
  46. package/dist/harness-mcp-wire.d.ts.map +1 -1
  47. package/dist/harness-mcp-wire.js +93 -37
  48. package/dist/harness-mcp-wire.js.map +1 -1
  49. package/dist/index.d.ts +3 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/local-paths.d.ts +0 -11
  54. package/dist/local-paths.d.ts.map +1 -1
  55. package/dist/local-paths.js +0 -12
  56. package/dist/local-paths.js.map +1 -1
  57. package/dist/moltzapd-catalog.d.ts +35 -0
  58. package/dist/moltzapd-catalog.d.ts.map +1 -0
  59. package/dist/moltzapd-catalog.js +117 -0
  60. package/dist/moltzapd-catalog.js.map +1 -0
  61. package/dist/moltzapd-child-ipc.d.ts +26 -0
  62. package/dist/moltzapd-child-ipc.d.ts.map +1 -0
  63. package/dist/moltzapd-child-ipc.js +31 -0
  64. package/dist/moltzapd-child-ipc.js.map +1 -0
  65. package/dist/moltzapd-child.d.ts +55 -0
  66. package/dist/moltzapd-child.d.ts.map +1 -0
  67. package/dist/moltzapd-child.js +225 -0
  68. package/dist/moltzapd-child.js.map +1 -0
  69. package/dist/moltzapd-main.d.ts +3 -0
  70. package/dist/moltzapd-main.d.ts.map +1 -0
  71. package/dist/moltzapd-main.js +18 -0
  72. package/dist/moltzapd-main.js.map +1 -0
  73. package/dist/moltzapd-registration.d.ts +40 -0
  74. package/dist/moltzapd-registration.d.ts.map +1 -0
  75. package/dist/moltzapd-registration.js +59 -0
  76. package/dist/moltzapd-registration.js.map +1 -0
  77. package/dist/moltzapd.d.ts +56 -9
  78. package/dist/moltzapd.d.ts.map +1 -1
  79. package/dist/moltzapd.js +108 -36
  80. package/dist/moltzapd.js.map +1 -1
  81. package/dist/notification/trace.d.ts +10 -0
  82. package/dist/notification/trace.d.ts.map +1 -0
  83. package/dist/notification/trace.js +34 -0
  84. package/dist/notification/trace.js.map +1 -0
  85. package/dist/presentation/index.d.ts +3 -0
  86. package/dist/presentation/index.d.ts.map +1 -0
  87. package/dist/presentation/index.js +3 -0
  88. package/dist/presentation/index.js.map +1 -0
  89. package/dist/presentation/state.d.ts +77 -0
  90. package/dist/presentation/state.d.ts.map +1 -0
  91. package/dist/presentation/state.js +211 -0
  92. package/dist/presentation/state.js.map +1 -0
  93. package/dist/profile.d.ts +30 -28
  94. package/dist/profile.d.ts.map +1 -1
  95. package/dist/profile.js +28 -20
  96. package/dist/profile.js.map +1 -1
  97. package/dist/service.d.ts +8 -79
  98. package/dist/service.d.ts.map +1 -1
  99. package/dist/service.js +29 -333
  100. package/dist/service.js.map +1 -1
  101. package/dist/test-utils/fake-service.d.ts +3 -5
  102. package/dist/test-utils/fake-service.d.ts.map +1 -1
  103. package/dist/test-utils/fake-service.js +12 -12
  104. package/dist/test-utils/fake-service.js.map +1 -1
  105. package/dist/test-utils/index.d.ts +2 -0
  106. package/dist/test-utils/index.d.ts.map +1 -1
  107. package/dist/test-utils/index.js +2 -0
  108. package/dist/test-utils/index.js.map +1 -1
  109. package/dist/test-utils/process/reserve-port.d.ts +20 -0
  110. package/dist/test-utils/process/reserve-port.d.ts.map +1 -0
  111. package/dist/test-utils/process/reserve-port.js +41 -0
  112. package/dist/test-utils/process/reserve-port.js.map +1 -0
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +32 -6
  115. package/dist/cli/adapters.d.ts +0 -21
  116. package/dist/cli/adapters.d.ts.map +0 -1
  117. package/dist/cli/adapters.js +0 -111
  118. package/dist/cli/adapters.js.map +0 -1
  119. package/dist/cli/commands/agents.d.ts +0 -11
  120. package/dist/cli/commands/agents.d.ts.map +0 -1
  121. package/dist/cli/commands/agents.js +0 -27
  122. package/dist/cli/commands/agents.js.map +0 -1
  123. package/dist/cli/commands/conversations.d.ts +0 -18
  124. package/dist/cli/commands/conversations.d.ts.map +0 -1
  125. package/dist/cli/commands/conversations.js +0 -33
  126. package/dist/cli/commands/conversations.js.map +0 -1
  127. package/dist/cli/commands/messages.d.ts +0 -41
  128. package/dist/cli/commands/messages.d.ts.map +0 -1
  129. package/dist/cli/commands/messages.js +0 -39
  130. package/dist/cli/commands/messages.js.map +0 -1
  131. package/dist/cli/commands/register.d.ts +0 -46
  132. package/dist/cli/commands/register.d.ts.map +0 -1
  133. package/dist/cli/commands/register.js +0 -103
  134. package/dist/cli/commands/register.js.map +0 -1
  135. package/dist/cli/commands/send.d.ts +0 -53
  136. package/dist/cli/commands/send.d.ts.map +0 -1
  137. package/dist/cli/commands/send.js +0 -57
  138. package/dist/cli/commands/send.js.map +0 -1
  139. package/dist/cli/commands/start.d.ts +0 -34
  140. package/dist/cli/commands/start.d.ts.map +0 -1
  141. package/dist/cli/commands/start.js +0 -59
  142. package/dist/cli/commands/start.js.map +0 -1
  143. package/dist/cli/commands/status.d.ts +0 -7
  144. package/dist/cli/commands/status.d.ts.map +0 -1
  145. package/dist/cli/commands/status.js +0 -16
  146. package/dist/cli/commands/status.js.map +0 -1
  147. package/dist/cli/commands/test-transport.d.ts +0 -28
  148. package/dist/cli/commands/test-transport.d.ts.map +0 -1
  149. package/dist/cli/commands/test-transport.js +0 -40
  150. package/dist/cli/commands/test-transport.js.map +0 -1
  151. package/dist/cli/index.d.ts +0 -3
  152. package/dist/cli/index.d.ts.map +0 -1
  153. package/dist/cli/index.js +0 -105
  154. package/dist/cli/index.js.map +0 -1
  155. package/dist/cli/output.d.ts +0 -14
  156. package/dist/cli/output.d.ts.map +0 -1
  157. package/dist/cli/output.js +0 -19
  158. package/dist/cli/output.js.map +0 -1
  159. package/dist/cli/socket-client.d.ts +0 -28
  160. package/dist/cli/socket-client.d.ts.map +0 -1
  161. package/dist/cli/socket-client.js +0 -63
  162. package/dist/cli/socket-client.js.map +0 -1
  163. package/dist/cli/transport.d.ts +0 -132
  164. package/dist/cli/transport.d.ts.map +0 -1
  165. package/dist/cli/transport.js +0 -127
  166. package/dist/cli/transport.js.map +0 -1
  167. package/dist/local-daemon-rpc.d.ts +0 -1170
  168. package/dist/local-daemon-rpc.d.ts.map +0 -1
  169. package/dist/local-daemon-rpc.js +0 -178
  170. package/dist/local-daemon-rpc.js.map +0 -1
  171. package/dist/local-history.d.ts +0 -75
  172. package/dist/local-history.d.ts.map +0 -1
  173. package/dist/local-history.js +0 -82
  174. package/dist/local-history.js.map +0 -1
  175. package/dist/local-socket-server.d.ts +0 -33
  176. package/dist/local-socket-server.d.ts.map +0 -1
  177. package/dist/local-socket-server.js +0 -100
  178. package/dist/local-socket-server.js.map +0 -1
  179. package/dist/refs.d.ts +0 -18
  180. package/dist/refs.d.ts.map +0 -1
  181. package/dist/refs.js +0 -18
  182. package/dist/refs.js.map +0 -1
  183. package/dist/service-helpers.d.ts +0 -55
  184. package/dist/service-helpers.d.ts.map +0 -1
  185. package/dist/service-helpers.js +0 -108
  186. package/dist/service-helpers.js.map +0 -1
  187. package/dist/service-local-daemon.d.ts +0 -32
  188. package/dist/service-local-daemon.d.ts.map +0 -1
  189. package/dist/service-local-daemon.js +0 -153
  190. package/dist/service-local-daemon.js.map +0 -1
@@ -1,108 +0,0 @@
1
- import { HashMap, Option } from "effect";
2
- import { renderPart } from "./message-rendering.js";
3
- import { getOr } from "./refs.js";
4
- const MILLISECONDS_PER_MINUTE = 60_000;
5
- const isPlainRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
6
- const recordOrEmpty = (value) => isPlainRecord(value) ? value : {};
7
- const recordProperty = (record, key) => {
8
- const value = record[key];
9
- return isPlainRecord(value) ? value : undefined;
10
- };
11
- const stringProperty = (record, key) => {
12
- const value = record[key];
13
- return typeof value === "string" ? value : undefined;
14
- };
15
- /**
16
- * Creates messages for conversation.
17
- * @param convId Value supplied to the operation.
18
- * @param messages Value supplied to the operation.
19
- * @param viewMarkers Value supplied to the operation.
20
- * @param currentConvId Value supplied to the operation.
21
- * @returns The new messages for conversation result.
22
- */
23
- export function newMessagesForConversation(convId, messages, viewMarkers, currentConvId) {
24
- if (convId === currentConvId || messages.length === 0) {
25
- return [];
26
- }
27
- const lastSeenId = Option.getOrUndefined(HashMap.get(viewMarkers, convId));
28
- const lastSeenIndex = lastSeenId !== undefined
29
- ? messages.findIndex((message) => message.id === lastSeenId)
30
- : -1;
31
- return messages.slice(lastSeenIndex + 1);
32
- }
33
- /**
34
- * Creates context candidate.
35
- * @param convId Value supplied to the operation.
36
- * @param newMsgs Value supplied to the operation.
37
- * @returns The created context candidate.
38
- */
39
- export function makeContextCandidate(convId, newMsgs) {
40
- const last =
41
- /* Safe because the surrounding invariant establishes this asserted shape. */ newMsgs[newMsgs.length - 1];
42
- return {
43
- convId,
44
- newMsgs,
45
- lastTs: new Date(last.createdAt).getTime(),
46
- };
47
- }
48
- function minutesSince(timestamp) {
49
- return Math.max(0, Math.round((Date.now() - new Date(timestamp).getTime()) / MILLISECONDS_PER_MINUTE));
50
- }
51
- function contextEntryForCandidate(candidate, state, maxMessagesPerConv) {
52
- const reportable = candidate.newMsgs.slice(-maxMessagesPerConv);
53
- const last =
54
- /* Safe because the surrounding invariant establishes this asserted shape. */ reportable[reportable.length - 1];
55
- const senderName = getOr(state.agentNamesMap, last.senderId, () => last.senderId);
56
- return {
57
- entry: {
58
- conversationId: candidate.convId,
59
- conversationName: Option.getOrUndefined(HashMap.get(state.conversationsMap, candidate.convId))?.name,
60
- senderName,
61
- text: last.parts.map(renderPart).join(" "),
62
- minutesAgo: minutesSince(last.createdAt),
63
- count: reportable.length,
64
- },
65
- advance: [candidate.convId, last.id],
66
- };
67
- }
68
- /**
69
- * Creates context entries.
70
- * @param candidates Value supplied to the operation.
71
- * @param state Value supplied to the operation.
72
- * @param maxMessagesPerConv Value supplied to the operation.
73
- * @returns The created context entries.
74
- */
75
- export function buildContextEntries(candidates, state, maxMessagesPerConv) {
76
- const entries = [];
77
- const pendingAdvances = [];
78
- for (const candidate of candidates) {
79
- const { entry, advance } = contextEntryForCandidate(candidate, state, maxMessagesPerConv);
80
- entries.push(entry);
81
- pendingAdvances.push(advance);
82
- }
83
- return { entries, pendingAdvances };
84
- }
85
- const traceConversationId = (conversation, fallback) => conversation === undefined ? fallback : (conversation.id ?? fallback);
86
- /**
87
- * Executes the notification trace record operation.
88
- * @param notification Value supplied to the operation.
89
- * @param agentId Identifier of the agent targeted by the operation.
90
- * @returns The notification trace record result.
91
- */
92
- export function notificationTraceRecord(notification, agentId) {
93
- const params = recordOrEmpty(notification.params);
94
- const message = recordProperty(params, "message");
95
- const conversation = recordProperty(params, "conversation");
96
- const notificationConversationId = stringProperty(params, "conversationId");
97
- return {
98
- ts: new Date().toISOString(),
99
- agentId: agentId ?? "unknown",
100
- notification: notification.method,
101
- messageId: message?.id,
102
- messageConversationId: message?.conversationId,
103
- messageSenderId: message?.senderId,
104
- conversationId: traceConversationId(conversation, notificationConversationId),
105
- conversationName: conversation?.name,
106
- };
107
- }
108
- //# sourceMappingURL=service-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-helpers.js","sourceRoot":"","sources":["../src/service-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type { RpcGroup } from "@effect/rpc";
2
- import { Effect } from "effect";
3
- import { type AgentId } from "@moltzap/protocol/identity";
4
- import type { agentCallableGroup } from "@moltzap/protocol/socket/catalog";
5
- import type { PayloadForTag, SuccessForTag } from "@moltzap/protocol/rpc";
6
- import type { RpcCallOptions } from "./agent-client.js";
7
- import type { ServiceRpcError } from "./service.js";
8
- import type { HistoryRequest, HistoryResponse } from "./local-history.js";
9
- import { type LocalDaemonHandlers } from "./local-daemon-rpc.js";
10
- type AgentCallableRpcs = RpcGroup.Rpcs<typeof agentCallableGroup>;
11
- type AgentCallableTag = AgentCallableRpcs["_tag"];
12
- type ServiceCall = <Tag extends AgentCallableTag>(tag: Tag, payload: PayloadForTag<AgentCallableRpcs, Tag>, opts?: RpcCallOptions) => Effect.Effect<SuccessForTag<AgentCallableRpcs, Tag>, ServiceRpcError>;
13
- interface LocalDaemonHandlerOptions {
14
- readonly ownAgentId: AgentId;
15
- readonly connected: () => boolean;
16
- readonly conversationCount: () => number;
17
- readonly call: ServiceCall;
18
- readonly handleHistoryRequest: (request: HistoryRequest) => Effect.Effect<HistoryResponse, ServiceRpcError>;
19
- }
20
- /**
21
- * Creates local daemon handlers.
22
- * @param root0 Value supplied to the operation.
23
- * @param root0.handleHistoryRequest Value supplied to the operation.
24
- * @param root0.call Value supplied to the operation.
25
- * @param root0.conversationCount Value supplied to the operation.
26
- * @param root0.connected Value supplied to the operation.
27
- * @param root0.ownAgentId Value supplied to the operation.
28
- * @returns The created local daemon handlers.
29
- */
30
- export declare function makeLocalDaemonHandlers({ ownAgentId, connected, conversationCount, call, handleHistoryRequest, }: LocalDaemonHandlerOptions): LocalDaemonHandlers;
31
- export {};
32
- //# sourceMappingURL=service-local-daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-local-daemon.d.ts","sourceRoot":"","sources":["../src/service-local-daemon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAO3E,OAAO,KAAK,EAEV,aAAa,EAEb,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAIL,KAAK,mBAAmB,EAKzB,MAAM,uBAAuB,CAAC;AAE/B,KAAK,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAClE,KAAK,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAElD,KAAK,WAAW,GAAG,CAAC,GAAG,SAAS,gBAAgB,EAC9C,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,aAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAC9C,IAAI,CAAC,EAAE,cAAc,KAClB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AAE3E,UAAU,yBAAyB;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,OAAO,EAAE,cAAc,KACpB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;CACtD;AAuMD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,IAAI,EACJ,oBAAoB,GACrB,EAAE,yBAAyB,GAAG,mBAAmB,CAwBjD"}
@@ -1,153 +0,0 @@
1
- import { Effect, Either } from "effect";
2
- import { agentsList } from "@moltzap/protocol/identity";
3
- import { agentConversationCreate, } from "@moltzap/protocol/conversation";
4
- import { messagesList, messagesSend } from "@moltzap/protocol/message";
5
- import { localDaemonCommands, StartPartialFailure, StartUsageError, } from "./local-daemon-rpc.js";
6
- const MAX_START_PARTICIPANT_LOOKUP_NAMES = 100;
7
- const AGENT_LOOKUP_PAGE_SIZE = 100;
8
- const AGENT_LOOKUP_MAX_PAGES = 20;
9
- function startParticipantNames(participants) {
10
- return Array.from(new Set(participants.flatMap((entry) => entry.kind === "name" ? [entry.name] : [])));
11
- }
12
- function resolveStartParticipantIds(participants, byName) {
13
- return Effect.gen(function* () {
14
- const resolved = [];
15
- for (const entry of participants) {
16
- if (entry.kind === "id") {
17
- resolved.push(entry.id);
18
- continue;
19
- }
20
- const id = byName.get(entry.name);
21
- if (id === undefined) {
22
- return yield* new StartUsageError({
23
- message: `Cannot resolve "${entry.token}": not-found`,
24
- });
25
- }
26
- resolved.push(id);
27
- }
28
- return resolved;
29
- });
30
- }
31
- function lookupAgentsByNames(call, names) {
32
- return Effect.gen(function* () {
33
- const wanted = new Set(names);
34
- const agents = [];
35
- let cursor = undefined;
36
- for (let page = 0; page < AGENT_LOOKUP_MAX_PAGES; page++) {
37
- const result = yield* call(agentsList.name, cursor === undefined
38
- ? { limit: AGENT_LOOKUP_PAGE_SIZE }
39
- : { limit: AGENT_LOOKUP_PAGE_SIZE, cursor });
40
- const matchedAgents = result.agents.filter((agent) => wanted.has(agent.name));
41
- agents.push(...matchedAgents);
42
- for (const agent of matchedAgents) {
43
- wanted.delete(agent.name);
44
- }
45
- if (wanted.size === 0 || result.nextCursor === undefined) {
46
- return { agents };
47
- }
48
- cursor = result.nextCursor;
49
- }
50
- return { agents };
51
- });
52
- }
53
- function handleSendCommand(call, params) {
54
- return call(messagesSend.name, {
55
- conversationId: params.target.conversationId,
56
- parts: [{ type: "text", text: params.message }],
57
- }).pipe(Effect.map((result) => ({ messageId: result.message.id })));
58
- }
59
- function resolveStartParticipants(call, participants) {
60
- return Effect.gen(function* () {
61
- const names = startParticipantNames(participants);
62
- if (names.length > MAX_START_PARTICIPANT_LOOKUP_NAMES) {
63
- return yield* new StartUsageError({
64
- message: `Too many distinct agent names: ${names.length} (max ${MAX_START_PARTICIPANT_LOOKUP_NAMES})`,
65
- });
66
- }
67
- const byName = new Map();
68
- if (names.length > 0) {
69
- const result = yield* lookupAgentsByNames(call, names);
70
- for (const agent of result.agents) {
71
- if (!byName.has(agent.name)) {
72
- byName.set(agent.name, agent.id);
73
- }
74
- }
75
- }
76
- return yield* resolveStartParticipantIds(participants, byName);
77
- });
78
- }
79
- function sendStartMessage({ call, conversationId, text, }) {
80
- return Effect.either(call(messagesSend.name, {
81
- conversationId,
82
- parts: [{ type: "text", text }],
83
- })).pipe(Effect.flatMap((outcome) => Either.match(outcome, {
84
- onRight: (result) => Effect.succeed(result.message.id),
85
- onLeft: (error) => Effect.fail(new StartPartialFailure({
86
- conversationId,
87
- message: error instanceof Error ? error.message : String(error),
88
- })),
89
- })));
90
- }
91
- function sendOptionalStartMessage({ call, params, conversationId, }) {
92
- if (params.message === undefined) {
93
- return Effect.void.pipe(Effect.as(undefined));
94
- }
95
- return sendStartMessage({
96
- call,
97
- conversationId,
98
- text: params.message,
99
- });
100
- }
101
- function handleStartCommand(call, params) {
102
- return Effect.gen(function* () {
103
- const participants = yield* resolveStartParticipants(call, params.participants);
104
- if (participants.length === 0) {
105
- return yield* new StartUsageError({
106
- message: "A conversation needs at least one other participant",
107
- });
108
- }
109
- const created = yield* call(agentConversationCreate.name, {
110
- name: params.name,
111
- participants,
112
- });
113
- const conversationId = created.conversation.id;
114
- const sentMessageId = yield* sendOptionalStartMessage({
115
- call,
116
- params,
117
- conversationId,
118
- });
119
- return {
120
- conversationId,
121
- ...(sentMessageId === undefined ? {} : { sentMessageId }),
122
- };
123
- }).pipe(Effect.withSpan("MoltZapService.handleStartCommand"));
124
- }
125
- /**
126
- * Creates local daemon handlers.
127
- * @param root0 Value supplied to the operation.
128
- * @param root0.handleHistoryRequest Value supplied to the operation.
129
- * @param root0.call Value supplied to the operation.
130
- * @param root0.conversationCount Value supplied to the operation.
131
- * @param root0.connected Value supplied to the operation.
132
- * @param root0.ownAgentId Value supplied to the operation.
133
- * @returns The created local daemon handlers.
134
- */
135
- export function makeLocalDaemonHandlers({ ownAgentId, connected, conversationCount, call, handleHistoryRequest, }) {
136
- return {
137
- [localDaemonCommands.status]: () => Effect.succeed({
138
- agentId: ownAgentId,
139
- connected: connected(),
140
- conversations: conversationCount(),
141
- }),
142
- [localDaemonCommands.history]: handleHistoryRequest,
143
- [localDaemonCommands.agentsList]: (params) => call(agentsList.name, params.limit === undefined ? {} : { limit: params.limit }),
144
- [localDaemonCommands.agentsSearch]: (params) => lookupAgentsByNames(call, params.names),
145
- [localDaemonCommands.messagesList]: (params) => call(messagesList.name, {
146
- conversationId: params.conversationId,
147
- ...(params.limit === undefined ? {} : { limit: params.limit }),
148
- }),
149
- [localDaemonCommands.send]: (params) => handleSendCommand(call, params),
150
- [localDaemonCommands.start]: (params) => handleStartCommand(call, params),
151
- };
152
- }
153
- //# sourceMappingURL=service-local-daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-local-daemon.js","sourceRoot":"","sources":["../src/service-local-daemon.ts"],"names":[],"mappings":"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"}