@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,5 +1,5 @@
1
1
  /** @internal */
2
- export { acquireHarnessClientInternal } from "./client-runtime.js";
2
+ export { acquireHarnessClientInternal, type HarnessClientInternalService, type HarnessTurnInternal, } from "./client-runtime.js";
3
3
  /** @internal */
4
- export { decodeHarnessReplyRoute, HARNESS_EVENTS_EXTENSION, HARNESS_REPLY_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, type HarnessReplyInput, type HarnessReplyResult, type HarnessReplyRoute, type HarnessTurnEvent, } from "./runtime.js";
4
+ export { decodeHarnessReplyRoute, decodeHarnessSearchConversationsResult, decodeHarnessStartConversationResult, decodeHarnessStatusResult, HARNESS_EVENTS_EXTENSION, HARNESS_READ_CONVERSATION_TOOL, HARNESS_REGISTER_TOOL, HARNESS_REPLY_TOOL, HARNESS_SEARCH_AGENTS_TOOL, HARNESS_SEARCH_CONVERSATIONS_TOOL, HARNESS_START_CONVERSATION_TOOL, HARNESS_STATUS_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessSearchConversationsResultJsonSchema, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, type ConversationWithParticipants, type HarnessReplyInput, type HarnessReplyResult, type HarnessReplyRoute, type HarnessSearchConversationsResult, harnessStartConversationInputJsonSchema, harnessStartConversationResultJsonSchema, type HarnessStartConversationInput, type HarnessStartConversationResult, harnessRegisterInputJsonSchema, harnessRegisterResultJsonSchema, type HarnessRegisterInput, type HarnessRegisterResult, harnessStatusInputJsonSchema, harnessStatusResultJsonSchema, type HarnessStatusInput, type HarnessStatusResult, type HarnessTurnEvent, } from "./runtime.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EACL,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,sCAAsC,EACtC,oCAAoC,EACpC,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,0CAA0C,EAC1C,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,uCAAuC,EACvC,wCAAwC,EACxC,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,4BAA4B,EAC5B,6BAA6B,EAC7B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** @internal */
2
- export { acquireHarnessClientInternal } from "./client-runtime.js";
2
+ export { acquireHarnessClientInternal, } from "./client-runtime.js";
3
3
  /** @internal */
4
- export { decodeHarnessReplyRoute, HARNESS_EVENTS_EXTENSION, HARNESS_REPLY_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, } from "./runtime.js";
4
+ export { decodeHarnessReplyRoute, decodeHarnessSearchConversationsResult, decodeHarnessStartConversationResult, decodeHarnessStatusResult, HARNESS_EVENTS_EXTENSION, HARNESS_READ_CONVERSATION_TOOL, HARNESS_REGISTER_TOOL, HARNESS_REPLY_TOOL, HARNESS_SEARCH_AGENTS_TOOL, HARNESS_SEARCH_CONVERSATIONS_TOOL, HARNESS_START_CONVERSATION_TOOL, HARNESS_STATUS_TOOL, HARNESS_TURN_READY_FILTER, HARNESS_TURN_READY_NOTIFICATION, harnessSearchConversationsResultJsonSchema, harnessReplyInputJsonSchema, harnessReplyResultJsonSchema, harnessStartConversationInputJsonSchema, harnessStartConversationResultJsonSchema, harnessRegisterInputJsonSchema, harnessRegisterResultJsonSchema, harnessStatusInputJsonSchema, harnessStatusResultJsonSchema, } from "./runtime.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,GAK7B,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EACL,4BAA4B,GAG7B,MAAM,qBAAqB,CAAC;AAC7B,gBAAgB;AAChB,OAAO,EACL,uBAAuB,EACvB,sCAAsC,EACtC,oCAAoC,EACpC,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,0CAA0C,EAC1C,2BAA2B,EAC3B,4BAA4B,EAM5B,uCAAuC,EACvC,wCAAwC,EAGxC,8BAA8B,EAC9B,+BAA+B,EAG/B,4BAA4B,EAC5B,6BAA6B,GAI9B,MAAM,cAAc,CAAC"}
@@ -6,8 +6,59 @@ export declare const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v1";
6
6
  export declare const HARNESS_TURN_READY_FILTER = "xyz.moltzap/turnReady";
7
7
  /** Notification method carrying one coalesced inbound turn. */
8
8
  export declare const HARNESS_TURN_READY_NOTIFICATION = "notifications/xyz.moltzap/turn_ready";
9
+ /**
10
+ * Tool committing a Registry identity to the slot this daemon owns. Present
11
+ * only while the slot has none; the six active tools replace it afterward.
12
+ */
13
+ export declare const HARNESS_REGISTER_TOOL = "register";
9
14
  /** Tool used for model output in the current conversation. */
10
15
  export declare const HARNESS_REPLY_TOOL = "reply";
16
+ /** Tool returning the active daemon identity and connection state. */
17
+ export declare const HARNESS_STATUS_TOOL = "status";
18
+ /** Tool browsing or matching visible agent cards. */
19
+ export declare const HARNESS_SEARCH_AGENTS_TOOL = "search_agents";
20
+ /** Tool browsing or matching visible conversations. */
21
+ export declare const HARNESS_SEARCH_CONVERSATIONS_TOOL = "search_conversations";
22
+ /** Tool reading one checkpointed conversation history. */
23
+ export declare const HARNESS_READ_CONVERSATION_TOOL = "read_conversation";
24
+ /** Tool creating a conversation and sending its initial content. */
25
+ export declare const HARNESS_START_CONVERSATION_TOOL = "start_conversation";
26
+ declare const conversationWithParticipantsSchema: Schema.Struct<{
27
+ id: Schema.Schema<ConversationId, string, never>;
28
+ name: Schema.optional<typeof Schema.String>;
29
+ createdBy: Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>;
30
+ createdAt: Schema.Schema<string, string, never>;
31
+ updatedAt: Schema.Schema<string, string, never>;
32
+ participants: Schema.Array$<Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>>;
33
+ }>;
34
+ /** Arguments for creating a conversation through the harness. */
35
+ declare const harnessStartConversationInputSchema: Schema.Struct<{
36
+ otherAgentNames: Schema.NonEmptyArray<Schema.Schema<import("@moltzap/protocol/identity").AgentName, string, never>>;
37
+ initialContent: Schema.filter<typeof Schema.String>;
38
+ }>;
39
+ /** Conversation returned after its initial content has been sent. */
40
+ declare const harnessStartConversationResultSchema: Schema.Struct<{
41
+ conversation: Schema.Struct<{
42
+ id: Schema.Schema<ConversationId, string, never>;
43
+ name: Schema.optional<typeof Schema.String>;
44
+ createdBy: Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>;
45
+ createdAt: Schema.Schema<string, string, never>;
46
+ updatedAt: Schema.Schema<string, string, never>;
47
+ participants: Schema.Array$<Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>>;
48
+ }>;
49
+ }>;
50
+ /** MCP-local search result used to reconstruct endpoint presentation. */
51
+ declare const harnessSearchConversationsResultSchema: Schema.Struct<{
52
+ nextCursor: Schema.optional<Schema.Schema<import("@moltzap/protocol/rpc").ListCursor, string, never>>;
53
+ conversations: Schema.Array$<Schema.Struct<{
54
+ id: Schema.Schema<ConversationId, string, never>;
55
+ name: Schema.optional<typeof Schema.String>;
56
+ createdBy: Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>;
57
+ createdAt: Schema.Schema<string, string, never>;
58
+ updatedAt: Schema.Schema<string, string, never>;
59
+ participants: Schema.Array$<Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>>;
60
+ }>>;
61
+ }>;
11
62
  /** One nonempty batch of protocol messages delivered as a model turn. */
12
63
  declare const harnessTurnEventSchema: Schema.filter<Schema.Struct<{
13
64
  messages: Schema.NonEmptyArray<Schema.Struct<{
@@ -41,18 +92,78 @@ declare const harnessReplyResultSchema: Schema.Struct<{}>;
41
92
  declare const harnessReplyRouteSchema: Schema.Struct<{
42
93
  conversationId: Schema.Schema<ConversationId, string, never>;
43
94
  }>;
95
+ /**
96
+ * The daemon supplies the agent name and listener port from its own slot, so
97
+ * registration arguments carry only what the Registry cannot derive locally.
98
+ */
99
+ declare const harnessRegisterInputSchema: Schema.Struct<{
100
+ inviteCode: Schema.optional<Schema.filter<typeof Schema.String>>;
101
+ description: Schema.optional<Schema.filter<typeof Schema.String>>;
102
+ }>;
103
+ /**
104
+ * Registration reports the committed identity and where it is reachable. Key
105
+ * material is written to the slot and never returned over MCP.
106
+ */
107
+ declare const harnessRegisterResultSchema: Schema.Struct<{
108
+ agentId: Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>;
109
+ agentName: typeof Schema.String;
110
+ serverUrl: typeof Schema.String;
111
+ }>;
112
+ /** Status takes no arguments; the daemon reports on the slot it already owns. */
113
+ declare const harnessStatusInputSchema: Schema.Struct<{}>;
114
+ /** Active daemon identity and connection state. */
115
+ declare const harnessStatusResultSchema: Schema.Struct<{
116
+ agentId: Schema.optional<Schema.Schema<import("@moltzap/protocol/identity").AgentId, string, never>>;
117
+ connected: typeof Schema.Boolean;
118
+ conversations: Schema.filter<Schema.filter<typeof Schema.Number>>;
119
+ }>;
44
120
  /** Decoded harness turn event. */
45
121
  export type HarnessTurnEvent = Schema.Schema.Type<typeof harnessTurnEventSchema>;
122
+ /**
123
+ * Conversation plus its membership, assembled by the daemon because the
124
+ * canonical Conversation sent over the network carries no participants. It
125
+ * crosses only the loopback MCP boundary, and it is public because it names
126
+ * what `HarnessClientService.startConversation` hands back to an adapter.
127
+ */
128
+ export type ConversationWithParticipants = Schema.Schema.Type<typeof conversationWithParticipantsSchema>;
129
+ /** Decoded start-conversation input. */
130
+ export type HarnessStartConversationInput = Schema.Schema.Type<typeof harnessStartConversationInputSchema>;
131
+ /** Decoded start-conversation result. */
132
+ export type HarnessStartConversationResult = Schema.Schema.Type<typeof harnessStartConversationResultSchema>;
133
+ /** Decoded MCP-local conversation search page. */
134
+ export type HarnessSearchConversationsResult = Schema.Schema.Type<typeof harnessSearchConversationsResultSchema>;
46
135
  /** Decoded reply input. */
47
136
  export type HarnessReplyInput = Schema.Schema.Type<typeof harnessReplyInputSchema>;
48
137
  /** Decoded reply result. */
49
138
  export type HarnessReplyResult = Schema.Schema.Type<typeof harnessReplyResultSchema>;
50
139
  /** Decoded private reply route. */
51
140
  export type HarnessReplyRoute = Schema.Schema.Type<typeof harnessReplyRouteSchema>;
141
+ /** Decoded registration input. */
142
+ export type HarnessRegisterInput = Schema.Schema.Type<typeof harnessRegisterInputSchema>;
143
+ /** Decoded registration result. */
144
+ export type HarnessRegisterResult = Schema.Schema.Type<typeof harnessRegisterResultSchema>;
145
+ /** Decoded status input. */
146
+ export type HarnessStatusInput = Schema.Schema.Type<typeof harnessStatusInputSchema>;
147
+ /** Decoded status result. */
148
+ export type HarnessStatusResult = Schema.Schema.Type<typeof harnessStatusResultSchema>;
149
+ /** JSON Schema advertised for start-conversation arguments. */
150
+ export declare const harnessStartConversationInputJsonSchema: JSONSchema.JsonSchema7Root;
151
+ /** JSON Schema advertised for the start-conversation result. */
152
+ export declare const harnessStartConversationResultJsonSchema: JSONSchema.JsonSchema7Root;
153
+ /** JSON Schema advertised for the MCP-local conversation search result. */
154
+ export declare const harnessSearchConversationsResultJsonSchema: JSONSchema.JsonSchema7Root;
52
155
  /** JSON Schema advertised for the payload-only reply tool arguments. */
53
156
  export declare const harnessReplyInputJsonSchema: JSONSchema.JsonSchema7Root;
54
157
  /** JSON Schema advertised for the empty reply result. */
55
158
  export declare const harnessReplyResultJsonSchema: JSONSchema.JsonSchema7Root;
159
+ /** JSON Schema advertised for registration arguments. */
160
+ export declare const harnessRegisterInputJsonSchema: JSONSchema.JsonSchema7Root;
161
+ /** JSON Schema advertised for the registration result. */
162
+ export declare const harnessRegisterResultJsonSchema: JSONSchema.JsonSchema7Root;
163
+ /** JSON Schema advertised for the empty status arguments. */
164
+ export declare const harnessStatusInputJsonSchema: JSONSchema.JsonSchema7Root;
165
+ /** JSON Schema advertised for the status result. */
166
+ export declare const harnessStatusResultJsonSchema: JSONSchema.JsonSchema7Root;
56
167
  /**
57
168
  * Strictly decode a turn event received from the MCP boundary.
58
169
  * @param value Untrusted notification parameters.
@@ -125,6 +236,47 @@ export declare const decodeHarnessTurnEvent: (value: unknown) => import("effect/
125
236
  readonly createdAt: string;
126
237
  }[]];
127
238
  }, import("effect/ParseResult").ParseError, never>;
239
+ /**
240
+ * Strictly decode the membership-bearing conversation page received over MCP.
241
+ * @param value Untrusted structured tool content.
242
+ * @returns The decoded MCP-local conversation page.
243
+ */
244
+ export declare const decodeHarnessSearchConversationsResult: (value: unknown) => import("effect/Effect").Effect<{
245
+ readonly nextCursor?: import("@moltzap/protocol/rpc").ListCursor | undefined;
246
+ readonly conversations: readonly {
247
+ readonly id: ConversationId;
248
+ readonly name?: string | undefined;
249
+ readonly createdBy: import("@moltzap/protocol/identity").AgentId;
250
+ readonly createdAt: string;
251
+ readonly updatedAt: string;
252
+ readonly participants: readonly import("@moltzap/protocol/identity").AgentId[];
253
+ }[];
254
+ }, import("effect/ParseResult").ParseError, never>;
255
+ /**
256
+ * Strictly decode a conversation created through the harness MCP boundary.
257
+ * @param value Untrusted structured tool content.
258
+ * @returns The created conversation with MCP-local membership.
259
+ */
260
+ export declare const decodeHarnessStartConversationResult: (value: unknown) => import("effect/Effect").Effect<{
261
+ readonly conversation: {
262
+ readonly id: ConversationId;
263
+ readonly name?: string | undefined;
264
+ readonly createdBy: import("@moltzap/protocol/identity").AgentId;
265
+ readonly createdAt: string;
266
+ readonly updatedAt: string;
267
+ readonly participants: readonly import("@moltzap/protocol/identity").AgentId[];
268
+ };
269
+ }, import("effect/ParseResult").ParseError, never>;
270
+ /**
271
+ * Strictly decode the daemon status reported over the MCP boundary.
272
+ * @param value Untrusted structured tool content.
273
+ * @returns The decoded identity and connection state.
274
+ */
275
+ export declare const decodeHarnessStatusResult: (value: unknown) => import("effect/Effect").Effect<{
276
+ readonly agentId?: import("@moltzap/protocol/identity").AgentId | undefined;
277
+ readonly connected: boolean;
278
+ readonly conversations: number;
279
+ }, import("effect/ParseResult").ParseError, never>;
128
280
  /**
129
281
  * Build the private request metadata consumed by the production harness client.
130
282
  * @param originatingConversationId Conversation associated with the live turn.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/harness/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAC;AAGxC,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,+DAA+D;AAC/D,eAAO,MAAM,+BAA+B,yCACJ,CAAC;AAEzC,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAK1C,yEAAyE;AACzE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;GAS3B,CAAC;AAEF,gFAAgF;AAChF,QAAA,MAAM,uBAAuB;;EAE3B,CAAC;AAEH,yDAAyD;AACzD,QAAA,MAAM,wBAAwB,mBAAoB,CAAC;AAEnD,oFAAoF;AACpF,QAAA,MAAM,uBAAuB;;EAE3B,CAAC;AAEH,kCAAkC;AAClC,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC/C,OAAO,sBAAsB,CAC9B,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAChD,OAAO,uBAAuB,CAC/B,CAAC;AAEF,4BAA4B;AAC5B,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACjD,OAAO,wBAAwB,CAChC,CAAC;AAEF,mCAAmC;AACnC,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAChD,OAAO,uBAAuB,CAC/B,CAAC;AAOF,wEAAwE;AACxE,eAAO,MAAM,2BAA2B,4BAGvC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,4BAA4B,4BAGxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAW,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDACR,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8BACP,cAAc,KACxC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIjC,CAAC;AAOH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,gBAAiB,OAAO;;kDAK3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAC9B,gBAAgB,KACrB,cAAiD,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/harness/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { JSONSchema, Schema } from "effect";
2
- import { conversationId, } from "@moltzap/protocol/conversation";
2
+ import { conversationId, conversationSchema, conversationSearch, } from "@moltzap/protocol/conversation";
3
+ import { agentId, agentName } from "@moltzap/protocol/identity";
3
4
  import { messageReceivedNotificationDefinition } from "@moltzap/protocol/message";
4
5
  /** Harness MCP extension carrying the runtime event contract. */
5
6
  export const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v1";
@@ -7,9 +8,42 @@ export const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v1";
7
8
  export const HARNESS_TURN_READY_FILTER = "xyz.moltzap/turnReady";
8
9
  /** Notification method carrying one coalesced inbound turn. */
9
10
  export const HARNESS_TURN_READY_NOTIFICATION = "notifications/xyz.moltzap/turn_ready";
11
+ /**
12
+ * Tool committing a Registry identity to the slot this daemon owns. Present
13
+ * only while the slot has none; the six active tools replace it afterward.
14
+ */
15
+ export const HARNESS_REGISTER_TOOL = "register";
10
16
  /** Tool used for model output in the current conversation. */
11
17
  export const HARNESS_REPLY_TOOL = "reply";
18
+ /** Tool returning the active daemon identity and connection state. */
19
+ export const HARNESS_STATUS_TOOL = "status";
20
+ /** Tool browsing or matching visible agent cards. */
21
+ export const HARNESS_SEARCH_AGENTS_TOOL = "search_agents";
22
+ /** Tool browsing or matching visible conversations. */
23
+ export const HARNESS_SEARCH_CONVERSATIONS_TOOL = "search_conversations";
24
+ /** Tool reading one checkpointed conversation history. */
25
+ export const HARNESS_READ_CONVERSATION_TOOL = "read_conversation";
26
+ /** Tool creating a conversation and sending its initial content. */
27
+ export const HARNESS_START_CONVERSATION_TOOL = "start_conversation";
12
28
  const messageSchema = messageReceivedNotificationDefinition.paramsSchema.fields.message;
29
+ const conversationWithParticipantsSchema = Schema.Struct({
30
+ ...conversationSchema().fields,
31
+ participants: Schema.Array(agentId),
32
+ });
33
+ /** Arguments for creating a conversation through the harness. */
34
+ const harnessStartConversationInputSchema = Schema.Struct({
35
+ otherAgentNames: Schema.NonEmptyArray(agentName),
36
+ initialContent: Schema.String.pipe(Schema.minLength(1)),
37
+ });
38
+ /** Conversation returned after its initial content has been sent. */
39
+ const harnessStartConversationResultSchema = Schema.Struct({
40
+ conversation: conversationWithParticipantsSchema,
41
+ });
42
+ /** MCP-local search result used to reconstruct endpoint presentation. */
43
+ const harnessSearchConversationsResultSchema = Schema.Struct({
44
+ ...conversationSearch.resultSchema.fields,
45
+ conversations: Schema.Array(conversationWithParticipantsSchema),
46
+ });
13
47
  /** One nonempty batch of protocol messages delivered as a model turn. */
14
48
  const harnessTurnEventSchema = Schema.Struct({
15
49
  messages: Schema.NonEmptyArray(messageSchema),
@@ -24,19 +58,82 @@ const harnessReplyResultSchema = Schema.Struct({});
24
58
  const harnessReplyRouteSchema = Schema.Struct({
25
59
  conversationId,
26
60
  });
61
+ /**
62
+ * The daemon supplies the agent name and listener port from its own slot, so
63
+ * registration arguments carry only what the Registry cannot derive locally.
64
+ */
65
+ const harnessRegisterInputSchema = Schema.Struct({
66
+ inviteCode: Schema.optional(Schema.String.pipe(Schema.minLength(1))),
67
+ description: Schema.optional(Schema.String.pipe(Schema.maxLength(500))),
68
+ });
69
+ /**
70
+ * Registration reports the committed identity and where it is reachable. Key
71
+ * material is written to the slot and never returned over MCP.
72
+ */
73
+ const harnessRegisterResultSchema = Schema.Struct({
74
+ agentId,
75
+ // The slot stores its agent name unbranded and the Registry has already
76
+ // validated it by the time this result exists, so a second brand round-trip
77
+ // inside the daemon would assert nothing new.
78
+ agentName: Schema.String,
79
+ serverUrl: Schema.String,
80
+ });
81
+ /** Status takes no arguments; the daemon reports on the slot it already owns. */
82
+ const harnessStatusInputSchema = Schema.Struct({});
83
+ /** Active daemon identity and connection state. */
84
+ const harnessStatusResultSchema = Schema.Struct({
85
+ agentId: Schema.optional(agentId),
86
+ connected: Schema.Boolean,
87
+ conversations: Schema.Number.pipe(Schema.int(), Schema.nonNegative()),
88
+ });
89
+ const strictDecodeOptions = { onExcessProperty: "error" };
27
90
  const decodeTurnEvent = Schema.decodeUnknown(harnessTurnEventSchema);
91
+ const decodeSearchConversationsResult = Schema.decodeUnknown(harnessSearchConversationsResultSchema);
92
+ const decodeStartConversationResult = Schema.decodeUnknown(harnessStartConversationResultSchema);
28
93
  const decodeReplyRoute = Schema.decodeUnknown(harnessReplyRouteSchema);
29
- const strictDecodeOptions = { onExcessProperty: "error" };
94
+ const decodeStatusResult = Schema.decodeUnknown(harnessStatusResultSchema);
95
+ /** JSON Schema advertised for start-conversation arguments. */
96
+ export const harnessStartConversationInputJsonSchema = JSONSchema.make(harnessStartConversationInputSchema, { target: "jsonSchema2020-12" });
97
+ /** JSON Schema advertised for the start-conversation result. */
98
+ export const harnessStartConversationResultJsonSchema = JSONSchema.make(harnessStartConversationResultSchema, { target: "jsonSchema2020-12" });
99
+ /** JSON Schema advertised for the MCP-local conversation search result. */
100
+ export const harnessSearchConversationsResultJsonSchema = JSONSchema.make(harnessSearchConversationsResultSchema, { target: "jsonSchema2020-12" });
30
101
  /** JSON Schema advertised for the payload-only reply tool arguments. */
31
102
  export const harnessReplyInputJsonSchema = JSONSchema.make(harnessReplyInputSchema, { target: "jsonSchema2020-12" });
32
103
  /** JSON Schema advertised for the empty reply result. */
33
104
  export const harnessReplyResultJsonSchema = JSONSchema.make(harnessReplyResultSchema, { target: "jsonSchema2020-12" });
105
+ /** JSON Schema advertised for registration arguments. */
106
+ export const harnessRegisterInputJsonSchema = JSONSchema.make(harnessRegisterInputSchema, { target: "jsonSchema2020-12" });
107
+ /** JSON Schema advertised for the registration result. */
108
+ export const harnessRegisterResultJsonSchema = JSONSchema.make(harnessRegisterResultSchema, { target: "jsonSchema2020-12" });
109
+ /** JSON Schema advertised for the empty status arguments. */
110
+ export const harnessStatusInputJsonSchema = JSONSchema.make(harnessStatusInputSchema, { target: "jsonSchema2020-12" });
111
+ /** JSON Schema advertised for the status result. */
112
+ export const harnessStatusResultJsonSchema = JSONSchema.make(harnessStatusResultSchema, { target: "jsonSchema2020-12" });
34
113
  /**
35
114
  * Strictly decode a turn event received from the MCP boundary.
36
115
  * @param value Untrusted notification parameters.
37
116
  * @returns The decoded nonempty protocol-message batch.
38
117
  */
39
118
  export const decodeHarnessTurnEvent = (value) => decodeTurnEvent(value, strictDecodeOptions);
119
+ /**
120
+ * Strictly decode the membership-bearing conversation page received over MCP.
121
+ * @param value Untrusted structured tool content.
122
+ * @returns The decoded MCP-local conversation page.
123
+ */
124
+ export const decodeHarnessSearchConversationsResult = (value) => decodeSearchConversationsResult(value, strictDecodeOptions);
125
+ /**
126
+ * Strictly decode a conversation created through the harness MCP boundary.
127
+ * @param value Untrusted structured tool content.
128
+ * @returns The created conversation with MCP-local membership.
129
+ */
130
+ export const decodeHarnessStartConversationResult = (value) => decodeStartConversationResult(value, strictDecodeOptions);
131
+ /**
132
+ * Strictly decode the daemon status reported over the MCP boundary.
133
+ * @param value Untrusted structured tool content.
134
+ * @returns The decoded identity and connection state.
135
+ */
136
+ export const decodeHarnessStatusResult = (value) => decodeStatusResult(value, strictDecodeOptions);
40
137
  /**
41
138
  * Build the private request metadata consumed by the production harness client.
42
139
  * @param originatingConversationId Conversation associated with the live turn.
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/harness/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/harness/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,21 @@
1
- import { Context, Layer, type Effect, type Scope, type Stream } from "effect";
2
- import type { ConversationId } from "@moltzap/protocol/conversation";
3
- import type { Message } from "@moltzap/protocol/message";
4
- /** One reply-capable batch emitted by the local harness daemon. */
5
- export interface HarnessTurn {
6
- /** Existing conversation associated with every message in this turn. */
7
- readonly conversationId: ConversationId;
8
- /** Existing protocol messages in their daemon-provided order. */
9
- readonly messages: readonly [Message, ...Message[]];
1
+ import * as KeyValueStore from "@effect/platform/KeyValueStore";
2
+ import { Context, Effect, Layer, Stream, type Scope } from "effect";
3
+ import { type AgentId, type AgentName } from "@moltzap/protocol/identity";
4
+ import { type EnrichedInboundMessage } from "./channel-core.js";
5
+ import { type ConversationWithParticipants } from "./harness/index.js";
6
+ /** MCP-local conversation projection including participant identities. */
7
+ export type { ConversationWithParticipants } from "./harness/index.js";
8
+ /** Existing adapter presentation with reply authority bound to its live turn. */
9
+ export interface HarnessTurn extends EnrichedInboundMessage {
10
10
  /** Sends model output through the MCP reply route captured by this turn. */
11
11
  readonly reply: (payload: string) => Effect.Effect<void, Error>;
12
12
  }
13
13
  /** Adapter-facing capability backed only by the daemon's loopback MCP surface. */
14
14
  export interface HarnessClientService {
15
+ /** Active identity used by adapters when rendering self-authored context. */
16
+ readonly agentId: AgentId;
17
+ /** Creates a conversation with named peers and sends its initial content. */
18
+ readonly startConversation: (otherAgentNames: readonly AgentName[], initialContent: string) => Effect.Effect<ConversationWithParticipants, Error>;
15
19
  /** The sole receive stream owned by this scoped client. */
16
20
  readonly turns: Stream.Stream<HarnessTurn, Error>;
17
21
  }
@@ -26,18 +30,18 @@ export interface HarnessClientOptions {
26
30
  }
27
31
  /**
28
32
  * Acquires one turn-ready harness connection and receive stream for the
29
- * lifetime of the enclosing scope. The private adapter owns MCP translation.
33
+ * lifetime of the enclosing scope. The supplied KeyValueStore is local to the
34
+ * active agent and holds only stable presentation checkpoints.
30
35
  *
31
36
  * @param options Fixed loopback MCP endpoint.
32
37
  * @returns The scoped adapter-facing service value.
33
38
  */
34
- export declare const acquireHarnessClient: (options: HarnessClientOptions) => Effect.Effect<HarnessClientService, Error, Scope.Scope>;
39
+ export declare const acquireHarnessClient: (options: HarnessClientOptions) => Effect.Effect<HarnessClientService, Error, Scope.Scope | KeyValueStore.KeyValueStore>;
35
40
  /**
36
41
  * Builds the scoped runtime-adapter layer for one daemon endpoint.
37
42
  *
38
43
  * @param options Fixed loopback MCP endpoint.
39
44
  * @returns A Layer providing the scoped HarnessClient capability.
40
45
  */
41
- export declare const makeHarnessClientLayer: (options: HarnessClientOptions) => Layer.Layer<HarnessClient, Error>;
42
- export {};
46
+ export declare const makeHarnessClientLayer: (options: HarnessClientOptions) => Layer.Layer<HarnessClient, Error, KeyValueStore.KeyValueStore>;
43
47
  //# sourceMappingURL=harness-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-client.d.ts","sourceRoot":"","sources":["../src/harness-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACpD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACjE;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;CACnD;;AAED,uDAAuD;AACvD,qBAAa,aAAc,SAAQ,kBAGhC;CAAG;AAEN,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,YACtB,oBAAoB,KAC5B,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAClB,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,YACxB,oBAAoB,KAC5B,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CACyB,CAAC"}
1
+ {"version":3,"file":"harness-client.d.ts","sourceRoot":"","sources":["../src/harness-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE5E,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAUL,KAAK,4BAA4B,EAGlC,MAAM,oBAAoB,CAAC;AAE5B,0EAA0E;AAC1E,YAAY,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,iFAAiF;AACjF,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CACjE;AAED,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,eAAe,EAAE,SAAS,SAAS,EAAE,EACrC,cAAc,EAAE,MAAM,KACnB,MAAM,CAAC,MAAM,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACxD,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;CACnD;;AAED,uDAAuD;AACvD,qBAAa,aAAc,SAAQ,kBAGhC;CAAG;AAEN,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAyHD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,YACtB,oBAAoB,KAC5B,MAAM,CAAC,MAAM,CACd,oBAAoB,EACpB,KAAK,EACL,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,aAAa,CAkBoB,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,YACxB,oBAAoB,KAC5B,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,aAAa,CACJ,CAAC"}
@@ -1,16 +1,71 @@
1
- import { Context, Layer } from "effect";
2
- import { acquireHarnessClientInternal } from "./harness/index.js";
1
+ import * as KeyValueStore from "@effect/platform/KeyValueStore";
2
+ import { Context, Effect, Layer, Schema, Stream } from "effect";
3
+ import { agentsSearch, } from "@moltzap/protocol/identity";
4
+ import { messagesRead } from "@moltzap/protocol/message";
5
+ import { projectHarnessTurn, } from "./channel-core.js";
6
+ import { reconstructHarnessContext } from "./harness-context-projection.js";
7
+ import { acquireHarnessClientInternal, HARNESS_READ_CONVERSATION_TOOL, HARNESS_SEARCH_AGENTS_TOOL, HARNESS_SEARCH_CONVERSATIONS_TOOL, HARNESS_START_CONVERSATION_TOOL, HARNESS_STATUS_TOOL, decodeHarnessSearchConversationsResult, decodeHarnessStartConversationResult, decodeHarnessStatusResult, } from "./harness/index.js";
3
8
  /** Effect service tag consumed by runtime adapters. */
4
9
  export class HarnessClient extends Context.Tag("@moltzap/client/HarnessClient")() {
5
10
  }
11
+ const strictDecodeOptions = { onExcessProperty: "error" };
12
+ const asError = (cause) => cause instanceof Error ? cause : new Error(String(cause));
13
+ const callDescriptorTool = (session, toolName, definition, params) => session
14
+ .callTool(toolName,
15
+ /* Safe because every RPC params Schema used here is a closed Struct and MCP tool arguments are JSON objects. */ params)
16
+ .pipe(Effect.flatMap((result) => Schema.decodeUnknown(definition.resultSchema)(result, strictDecodeOptions).pipe(Effect.map((decoded) =>
17
+ /* Safe because ResultOf derives from this exact descriptor's resultSchema; RpcDefinitionAny erases only the runtime schema property's generic surface. */ decoded))), Effect.mapError(asError));
18
+ const readActiveAgentId = (session) => session.callTool(HARNESS_STATUS_TOOL, {}).pipe(Effect.flatMap((result) => decodeHarnessStatusResult(result)), Effect.mapError(asError), Effect.flatMap((status) => {
19
+ if (status.agentId === undefined) {
20
+ // eslint-disable-next-line agent-code-guard/effect-error-erasure -- A daemon with no active identity is rejected at the public client boundary, whose existing error contract is Error.
21
+ return Effect.fail(new Error("Harness MCP status has no active AgentId"));
22
+ }
23
+ return Effect.succeed(status.agentId);
24
+ }));
25
+ const startConversation = (session, otherAgentNames, initialContent) => session
26
+ .callTool(HARNESS_START_CONVERSATION_TOOL, {
27
+ otherAgentNames,
28
+ initialContent,
29
+ })
30
+ .pipe(Effect.flatMap(decodeHarnessStartConversationResult), Effect.map(({ conversation }) => conversation), Effect.mapError(asError));
31
+ const searchConversations = (session, params) => session
32
+ .callTool(HARNESS_SEARCH_CONVERSATIONS_TOOL, params)
33
+ .pipe(Effect.flatMap(decodeHarnessSearchConversationsResult), Effect.mapError(asError));
34
+ const contextReadPlane = (session) => ({
35
+ searchAgents: (params) => callDescriptorTool(session, HARNESS_SEARCH_AGENTS_TOOL, agentsSearch, params),
36
+ searchConversations: (params) => searchConversations(session, params),
37
+ readConversation: (params) => callDescriptorTool(session, HARNESS_READ_CONVERSATION_TOOL, messagesRead, params),
38
+ });
39
+ const projectTurn = (session, checkpointStore, agentId, turn) => reconstructHarnessContext(contextReadPlane(session), turn.event).pipe(Effect.provideService(KeyValueStore.KeyValueStore, checkpointStore), Effect.map((context) => ({
40
+ ...projectHarnessTurn({
41
+ agents: context.agents,
42
+ context: {
43
+ conversations: context.conversations,
44
+ crossConversationMessages: context.crossConversationMessages,
45
+ currentMessages: context.currentMessages,
46
+ },
47
+ ownAgentId: agentId,
48
+ }),
49
+ reply: turn.reply,
50
+ })), Effect.mapError(asError));
6
51
  /**
7
52
  * Acquires one turn-ready harness connection and receive stream for the
8
- * lifetime of the enclosing scope. The private adapter owns MCP translation.
53
+ * lifetime of the enclosing scope. The supplied KeyValueStore is local to the
54
+ * active agent and holds only stable presentation checkpoints.
9
55
  *
10
56
  * @param options Fixed loopback MCP endpoint.
11
57
  * @returns The scoped adapter-facing service value.
12
58
  */
13
- export const acquireHarnessClient = (options) => acquireHarnessClientInternal(options);
59
+ export const acquireHarnessClient = (options) => Effect.gen(function* () {
60
+ const checkpointStore = yield* KeyValueStore.KeyValueStore;
61
+ const session = yield* acquireHarnessClientInternal(options);
62
+ const agentId = yield* readActiveAgentId(session);
63
+ return {
64
+ agentId,
65
+ startConversation: (otherAgentNames, initialContent) => startConversation(session, otherAgentNames, initialContent),
66
+ turns: session.turns.pipe(Stream.mapEffect((turn) => projectTurn(session, checkpointStore, agentId, turn))),
67
+ };
68
+ }).pipe(Effect.withSpan("acquireHarnessClient.presentation"));
14
69
  /**
15
70
  * Builds the scoped runtime-adapter layer for one daemon endpoint.
16
71
  *
@@ -1 +1 @@
1
- {"version":3,"file":"harness-client.js","sourceRoot":"","sources":["../src/harness-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAwC,MAAM,QAAQ,CAAC;AAG9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAkBlE,uDAAuD;AACvD,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAG5E;CAAG;AAQN;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA6B,EAC4B,EAAE,CAC3D,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAA6B,EACM,EAAE,CACrC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"harness-client.js","sourceRoot":"","sources":["../src/harness-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import * as KeyValueStore from "@effect/platform/KeyValueStore";
2
+ import type * as PlatformError from "@effect/platform/Error";
3
+ import { Effect, type ParseResult } from "effect";
4
+ import { conversationSearch, type ConversationId } from "@moltzap/protocol/conversation";
5
+ import { agentsSearch, type AgentCard } from "@moltzap/protocol/identity";
6
+ import { messagesRead, type Message } from "@moltzap/protocol/message";
7
+ import type { ParamsOf, ResultOf } from "@moltzap/protocol/rpc";
8
+ import type { ConversationWithParticipants, HarnessSearchConversationsResult, HarnessTurnEvent } from "./harness/runtime.js";
9
+ import { NonAdvancingCursorError } from "./pagination.js";
10
+ /** Package-private MCP read capabilities used for presentation recovery. */
11
+ export interface ContextProjectionReadPlane<E> {
12
+ readonly searchAgents: (params: ParamsOf<typeof agentsSearch>) => Effect.Effect<ResultOf<typeof agentsSearch>, E>;
13
+ readonly searchConversations: (params: ParamsOf<typeof conversationSearch>) => Effect.Effect<HarnessSearchConversationsResult, E>;
14
+ readonly readConversation: (params: ParamsOf<typeof messagesRead>) => Effect.Effect<ResultOf<typeof messagesRead>, E>;
15
+ }
16
+ /** Raw production context reconstructed for one live replyable observation. */
17
+ export interface ReconstructedHarnessContext {
18
+ readonly conversationId: ConversationId;
19
+ readonly agents: readonly AgentCard[];
20
+ readonly conversations: readonly ConversationWithParticipants[];
21
+ readonly currentMessages: HarnessTurnEvent["messages"];
22
+ readonly crossConversationMessages: readonly Message[];
23
+ }
24
+ /**
25
+ * Reconstructs cross-conversation presentation deltas only when a live
26
+ * observation supplies current content and reply authority. The provided
27
+ * key-value store is scoped to one active agent; target ConversationIds key
28
+ * source-checkpoint maps within that scope.
29
+ *
30
+ * @param readPlane Typed MCP search and history readers.
31
+ * @param event Live production observation that permits one runtime turn.
32
+ * @returns Current and cross-conversation raw context for that observation.
33
+ */
34
+ export declare const reconstructHarnessContext: <E>(readPlane: ContextProjectionReadPlane<E>, event: HarnessTurnEvent) => Effect.Effect<ReconstructedHarnessContext, E | NonAdvancingCursorError | PlatformError.PlatformError | ParseResult.ParseError, KeyValueStore.KeyValueStore>;
35
+ //# sourceMappingURL=harness-context-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-context-projection.d.ts","sourceRoot":"","sources":["../src/harness-context-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,KAAK,aAAa,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAkB,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAEL,kBAAkB,EAClB,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAEL,YAAY,EAEZ,KAAK,OAAO,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAChC,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAkB1D,4EAA4E;AAC5E,MAAM,WAAW,0BAA0B,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,CACrB,MAAM,EAAE,QAAQ,CAAC,OAAO,YAAY,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,MAAM,EAAE,QAAQ,CAAC,OAAO,kBAAkB,CAAC,KACxC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,gBAAgB,EAAE,CACzB,MAAM,EAAE,QAAQ,CAAC,OAAO,YAAY,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;CACtD;AAED,+EAA+E;AAC/E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAChE,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvD,QAAQ,CAAC,yBAAyB,EAAE,SAAS,OAAO,EAAE,CAAC;CACxD;AAwKD;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GAAI,CAAC,aAC9B,0BAA0B,CAAC,CAAC,CAAC,SACjC,gBAAgB,KACtB,MAAM,CAAC,MAAM,CACd,2BAA2B,EACzB,CAAC,GACD,uBAAuB,GACvB,aAAa,CAAC,aAAa,GAC3B,WAAW,CAAC,UAAU,EACxB,aAAa,CAAC,aAAa,CA4B0B,CAAC"}