@moltzap/client 2026.414.0 → 2026.425.1

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 (215) hide show
  1. package/dist/channel-core.d.ts +28 -15
  2. package/dist/channel-core.d.ts.map +1 -1
  3. package/dist/channel-core.js +113 -74
  4. package/dist/channel-core.js.map +1 -1
  5. package/dist/channel-core.test.js +126 -34
  6. package/dist/channel-core.test.js.map +1 -1
  7. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts +2 -0
  8. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts.map +1 -0
  9. package/dist/cli/__tests__/cli-multi-agent.int.test.js +26 -0
  10. package/dist/cli/__tests__/cli-multi-agent.int.test.js.map +1 -0
  11. package/dist/cli/commands/agents.d.ts +13 -2
  12. package/dist/cli/commands/agents.d.ts.map +1 -1
  13. package/dist/cli/commands/agents.js +30 -18
  14. package/dist/cli/commands/agents.js.map +1 -1
  15. package/dist/cli/commands/apps.d.ts +96 -0
  16. package/dist/cli/commands/apps.d.ts.map +1 -0
  17. package/dist/cli/commands/apps.js +193 -0
  18. package/dist/cli/commands/apps.js.map +1 -0
  19. package/dist/cli/commands/apps.test.d.ts +2 -0
  20. package/dist/cli/commands/apps.test.d.ts.map +1 -0
  21. package/dist/cli/commands/apps.test.js +220 -0
  22. package/dist/cli/commands/apps.test.js.map +1 -0
  23. package/dist/cli/commands/contacts.d.ts +18 -2
  24. package/dist/cli/commands/contacts.d.ts.map +1 -1
  25. package/dist/cli/commands/contacts.js +44 -52
  26. package/dist/cli/commands/contacts.js.map +1 -1
  27. package/dist/cli/commands/conversations-v2.test.d.ts +2 -0
  28. package/dist/cli/commands/conversations-v2.test.d.ts.map +1 -0
  29. package/dist/cli/commands/conversations-v2.test.js +92 -0
  30. package/dist/cli/commands/conversations-v2.test.js.map +1 -0
  31. package/dist/cli/commands/conversations.d.ts +73 -3
  32. package/dist/cli/commands/conversations.d.ts.map +1 -1
  33. package/dist/cli/commands/conversations.js +157 -108
  34. package/dist/cli/commands/conversations.js.map +1 -1
  35. package/dist/cli/commands/invite.d.ts +6 -2
  36. package/dist/cli/commands/invite.d.ts.map +1 -1
  37. package/dist/cli/commands/invite.js +8 -6
  38. package/dist/cli/commands/invite.js.map +1 -1
  39. package/dist/cli/commands/messages.d.ts +48 -0
  40. package/dist/cli/commands/messages.d.ts.map +1 -0
  41. package/dist/cli/commands/messages.js +68 -0
  42. package/dist/cli/commands/messages.js.map +1 -0
  43. package/dist/cli/commands/messages.test.d.ts +2 -0
  44. package/dist/cli/commands/messages.test.d.ts.map +1 -0
  45. package/dist/cli/commands/messages.test.js +73 -0
  46. package/dist/cli/commands/messages.test.js.map +1 -0
  47. package/dist/cli/commands/permissions.d.ts +66 -0
  48. package/dist/cli/commands/permissions.d.ts.map +1 -0
  49. package/dist/cli/commands/permissions.js +101 -0
  50. package/dist/cli/commands/permissions.js.map +1 -0
  51. package/dist/cli/commands/permissions.test.d.ts +2 -0
  52. package/dist/cli/commands/permissions.test.d.ts.map +1 -0
  53. package/dist/cli/commands/permissions.test.js +126 -0
  54. package/dist/cli/commands/permissions.test.js.map +1 -0
  55. package/dist/cli/commands/ping.d.ts +6 -2
  56. package/dist/cli/commands/ping.d.ts.map +1 -1
  57. package/dist/cli/commands/ping.js +21 -20
  58. package/dist/cli/commands/ping.js.map +1 -1
  59. package/dist/cli/commands/presence.d.ts +10 -2
  60. package/dist/cli/commands/presence.d.ts.map +1 -1
  61. package/dist/cli/commands/presence.js +27 -15
  62. package/dist/cli/commands/presence.js.map +1 -1
  63. package/dist/cli/commands/register.d.ts +24 -2
  64. package/dist/cli/commands/register.d.ts.map +1 -1
  65. package/dist/cli/commands/register.js +123 -47
  66. package/dist/cli/commands/register.js.map +1 -1
  67. package/dist/cli/commands/register.test.js +45 -27
  68. package/dist/cli/commands/register.test.js.map +1 -1
  69. package/dist/cli/commands/send.d.ts +43 -2
  70. package/dist/cli/commands/send.d.ts.map +1 -1
  71. package/dist/cli/commands/send.js +55 -13
  72. package/dist/cli/commands/send.js.map +1 -1
  73. package/dist/cli/commands/send.test.js +20 -19
  74. package/dist/cli/commands/send.test.js.map +1 -1
  75. package/dist/cli/commands/status.d.ts +6 -2
  76. package/dist/cli/commands/status.d.ts.map +1 -1
  77. package/dist/cli/commands/status.js +16 -10
  78. package/dist/cli/commands/status.js.map +1 -1
  79. package/dist/cli/commands/whoami.d.ts +7 -2
  80. package/dist/cli/commands/whoami.d.ts.map +1 -1
  81. package/dist/cli/commands/whoami.js +13 -7
  82. package/dist/cli/commands/whoami.js.map +1 -1
  83. package/dist/cli/config.d.ts +24 -8
  84. package/dist/cli/config.d.ts.map +1 -1
  85. package/dist/cli/config.js +65 -39
  86. package/dist/cli/config.js.map +1 -1
  87. package/dist/cli/config.test.js +12 -10
  88. package/dist/cli/config.test.js.map +1 -1
  89. package/dist/cli/http-client.d.ts +6 -2
  90. package/dist/cli/http-client.d.ts.map +1 -1
  91. package/dist/cli/http-client.js +25 -24
  92. package/dist/cli/http-client.js.map +1 -1
  93. package/dist/cli/index.d.ts +16 -1
  94. package/dist/cli/index.d.ts.map +1 -1
  95. package/dist/cli/index.js +160 -27
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/cli/profile.d.ts +134 -0
  98. package/dist/cli/profile.d.ts.map +1 -0
  99. package/dist/cli/profile.js +217 -0
  100. package/dist/cli/profile.js.map +1 -0
  101. package/dist/cli/profile.test.d.ts +2 -0
  102. package/dist/cli/profile.test.d.ts.map +1 -0
  103. package/dist/cli/profile.test.js +263 -0
  104. package/dist/cli/profile.test.js.map +1 -0
  105. package/dist/cli/runtime.d.ts +34 -0
  106. package/dist/cli/runtime.d.ts.map +1 -0
  107. package/dist/cli/runtime.js +94 -0
  108. package/dist/cli/runtime.js.map +1 -0
  109. package/dist/cli/socket-client.d.ts +15 -12
  110. package/dist/cli/socket-client.d.ts.map +1 -1
  111. package/dist/cli/socket-client.js +72 -75
  112. package/dist/cli/socket-client.js.map +1 -1
  113. package/dist/cli/transport.d.ts +181 -0
  114. package/dist/cli/transport.d.ts.map +1 -0
  115. package/dist/cli/transport.js +324 -0
  116. package/dist/cli/transport.js.map +1 -0
  117. package/dist/cli/transport.test.d.ts +2 -0
  118. package/dist/cli/transport.test.d.ts.map +1 -0
  119. package/dist/cli/transport.test.js +197 -0
  120. package/dist/cli/transport.test.js.map +1 -0
  121. package/dist/index.d.ts +6 -2
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +1 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/runtime/close-info.d.ts +94 -0
  126. package/dist/runtime/close-info.d.ts.map +1 -0
  127. package/dist/runtime/close-info.js +109 -0
  128. package/dist/runtime/close-info.js.map +1 -0
  129. package/dist/runtime/close-info.test.d.ts +2 -0
  130. package/dist/runtime/close-info.test.d.ts.map +1 -0
  131. package/dist/runtime/close-info.test.js +102 -0
  132. package/dist/runtime/close-info.test.js.map +1 -0
  133. package/dist/runtime/errors.d.ts +47 -0
  134. package/dist/runtime/errors.d.ts.map +1 -0
  135. package/dist/runtime/errors.js +20 -0
  136. package/dist/runtime/errors.js.map +1 -0
  137. package/dist/runtime/errors.test.d.ts +2 -0
  138. package/dist/runtime/errors.test.d.ts.map +1 -0
  139. package/dist/runtime/errors.test.js +66 -0
  140. package/dist/runtime/errors.test.js.map +1 -0
  141. package/dist/runtime/frame.d.ts +25 -0
  142. package/dist/runtime/frame.d.ts.map +1 -0
  143. package/dist/runtime/frame.js +106 -0
  144. package/dist/runtime/frame.js.map +1 -0
  145. package/dist/runtime/frame.test.d.ts +2 -0
  146. package/dist/runtime/frame.test.d.ts.map +1 -0
  147. package/dist/runtime/frame.test.js +32 -0
  148. package/dist/runtime/frame.test.js.map +1 -0
  149. package/dist/runtime/index.d.ts +3 -0
  150. package/dist/runtime/index.d.ts.map +1 -0
  151. package/dist/runtime/index.js +3 -0
  152. package/dist/runtime/index.js.map +1 -0
  153. package/dist/runtime/refs.d.ts +10 -0
  154. package/dist/runtime/refs.d.ts.map +1 -0
  155. package/dist/runtime/refs.js +10 -0
  156. package/dist/runtime/refs.js.map +1 -0
  157. package/dist/runtime/runtime.test.d.ts +2 -0
  158. package/dist/runtime/runtime.test.d.ts.map +1 -0
  159. package/dist/runtime/runtime.test.js +29 -0
  160. package/dist/runtime/runtime.test.js.map +1 -0
  161. package/dist/runtime/subscribers.d.ts +157 -0
  162. package/dist/runtime/subscribers.d.ts.map +1 -0
  163. package/dist/runtime/subscribers.js +131 -0
  164. package/dist/runtime/subscribers.js.map +1 -0
  165. package/dist/runtime/subscribers.test.d.ts +2 -0
  166. package/dist/runtime/subscribers.test.d.ts.map +1 -0
  167. package/dist/runtime/subscribers.test.js +155 -0
  168. package/dist/runtime/subscribers.test.js.map +1 -0
  169. package/dist/service.d.ts +68 -17
  170. package/dist/service.d.ts.map +1 -1
  171. package/dist/service.js +461 -307
  172. package/dist/service.js.map +1 -1
  173. package/dist/service.test.js +266 -77
  174. package/dist/service.test.js.map +1 -1
  175. package/dist/test/index.d.ts +33 -0
  176. package/dist/test/index.d.ts.map +1 -0
  177. package/dist/test/index.js +44 -0
  178. package/dist/test/index.js.map +1 -0
  179. package/dist/test-utils/channel-service-fixture.d.ts +2 -1
  180. package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
  181. package/dist/test-utils/channel-service-fixture.js +31 -11
  182. package/dist/test-utils/channel-service-fixture.js.map +1 -1
  183. package/dist/test-utils/conformance-adapter.d.ts +50 -0
  184. package/dist/test-utils/conformance-adapter.d.ts.map +1 -0
  185. package/dist/test-utils/conformance-adapter.js +206 -0
  186. package/dist/test-utils/conformance-adapter.js.map +1 -0
  187. package/dist/test-utils/fake-service.d.ts +85 -0
  188. package/dist/test-utils/fake-service.d.ts.map +1 -0
  189. package/dist/test-utils/fake-service.js +103 -0
  190. package/dist/test-utils/fake-service.js.map +1 -0
  191. package/dist/test-utils/index.d.ts +2 -0
  192. package/dist/test-utils/index.d.ts.map +1 -1
  193. package/dist/test-utils/index.js +3 -2
  194. package/dist/test-utils/index.js.map +1 -1
  195. package/dist/ws-client.d.ts +157 -18
  196. package/dist/ws-client.d.ts.map +1 -1
  197. package/dist/ws-client.js +432 -94
  198. package/dist/ws-client.js.map +1 -1
  199. package/dist/ws-client.test.d.ts +2 -0
  200. package/dist/ws-client.test.d.ts.map +1 -0
  201. package/dist/ws-client.test.js +672 -0
  202. package/dist/ws-client.test.js.map +1 -0
  203. package/package.json +17 -8
  204. package/dist/__tests__/service.integration.test.d.ts +0 -2
  205. package/dist/__tests__/service.integration.test.d.ts.map +0 -1
  206. package/dist/__tests__/service.integration.test.js +0 -1087
  207. package/dist/__tests__/service.integration.test.js.map +0 -1
  208. package/dist/cli/commands/delete.d.ts +0 -3
  209. package/dist/cli/commands/delete.d.ts.map +0 -1
  210. package/dist/cli/commands/delete.js +0 -10
  211. package/dist/cli/commands/delete.js.map +0 -1
  212. package/dist/cli/commands/react.d.ts +0 -3
  213. package/dist/cli/commands/react.d.ts.map +0 -1
  214. package/dist/cli/commands/react.js +0 -18
  215. package/dist/cli/commands/react.js.map +0 -1
@@ -1,24 +1,22 @@
1
- import { Command } from "commander";
2
- import { request, action, resolveParticipant } from "../socket-client.js";
3
- export const conversationsCommand = new Command("conversations").description("Manage conversations");
4
- conversationsCommand
5
- .command("list")
6
- .description("List conversations with unread counts")
7
- .option("--limit <n>", "Max conversations to list", "20")
8
- .option("--json", "Output as JSON")
9
- .action(action(async (opts) => {
10
- const result = (await request("conversations/list", {
11
- limit: parseInt(opts.limit, 10),
12
- }));
13
- if (opts.json) {
14
- console.log(JSON.stringify(result.conversations, null, 2));
1
+ import { Args, Command, Options } from "@effect/cli";
2
+ import { Effect, Option } from "effect";
3
+ import { request, resolveParticipant } from "../socket-client.js";
4
+ const jsonOption = Options.boolean("json").pipe(Options.withDescription("Output as JSON"));
5
+ const wrap = (effect, onSuccess) => effect.pipe(Effect.tap((value) => Effect.sync(() => onSuccess(value))), Effect.asVoid, Effect.catchAll((err) => Effect.sync(() => {
6
+ console.error(`Failed: ${err.message}`);
7
+ process.exit(1);
8
+ })));
9
+ const limitOption = Options.integer("limit").pipe(Options.withDefault(20), Options.withDescription("Max conversations to list"));
10
+ const listConversations = Command.make("list", { limit: limitOption, json: jsonOption }, ({ limit, json }) => wrap(request("conversations/list", { limit }), (r) => {
11
+ if (json) {
12
+ console.log(JSON.stringify(r.conversations, null, 2));
15
13
  return;
16
14
  }
17
- if (result.conversations.length === 0) {
15
+ if (r.conversations.length === 0) {
18
16
  console.log("No conversations.");
19
17
  return;
20
18
  }
21
- for (const c of result.conversations) {
19
+ for (const c of r.conversations) {
22
20
  const unread = c.unreadCount > 0 ? ` (${c.unreadCount} unread)` : "";
23
21
  const name = c.name ?? c.type;
24
22
  console.log(` ${c.id} ${name}${unread}`);
@@ -26,98 +24,79 @@ conversationsCommand
26
24
  console.log(` Last: ${c.lastMessagePreview}`);
27
25
  }
28
26
  }
29
- }));
30
- conversationsCommand
31
- .command("create")
32
- .description("Create a new conversation")
33
- .argument("<name>", "Conversation name")
34
- .argument("<participant...>", "Participants (e.g. agent:bob)")
35
- .option("--type <type>", "Conversation type: dm or group")
36
- .action(action(async (name, participants, opts) => {
37
- const parsed = await Promise.all(participants.map(resolveParticipant));
38
- const convType = opts.type ?? (parsed.length === 1 ? "dm" : "group");
39
- const result = (await request("conversations/create", {
27
+ })).pipe(Command.withDescription("List conversations with unread counts"));
28
+ const nameArg = Args.text({ name: "name" }).pipe(Args.withDescription("Conversation name"));
29
+ const participantArg = Args.text({ name: "participant" }).pipe(Args.withDescription("Participant (e.g. agent:bob)"));
30
+ const participantsArg = Args.text({ name: "participant" }).pipe(Args.withDescription("Participants (e.g. agent:bob)"), Args.repeated);
31
+ const typeOption = Options.text("type").pipe(Options.withDescription("Conversation type: dm or group"), Options.optional);
32
+ const createConversation = Command.make("create", { name: nameArg, participants: participantsArg, type: typeOption }, ({ name, participants, type }) => Effect.gen(function* () {
33
+ const parsed = yield* Effect.all(participants.map((p) => resolveParticipant(p)));
34
+ const convType = Option.isSome(type)
35
+ ? type.value
36
+ : parsed.length === 1
37
+ ? "dm"
38
+ : "group";
39
+ const result = (yield* request("conversations/create", {
40
40
  type: convType,
41
41
  name,
42
42
  participants: parsed,
43
43
  }));
44
44
  console.log(`Conversation created: ${result.conversation.id} (${result.conversation.type})`);
45
- }));
46
- conversationsCommand
47
- .command("leave")
48
- .description("Leave a conversation")
49
- .argument("<conversationId>", "Conversation ID")
50
- .action(action(async (conversationId) => {
51
- await request("conversations/leave", { conversationId });
45
+ }).pipe(Effect.catchAll((err) => Effect.sync(() => {
46
+ console.error(`Failed: ${err.message}`);
47
+ process.exit(1);
48
+ })))).pipe(Command.withDescription("Create a new conversation"));
49
+ const conversationIdArg = Args.text({ name: "conversationId" }).pipe(Args.withDescription("Conversation ID"));
50
+ const leaveConversation = Command.make("leave", { conversationId: conversationIdArg }, ({ conversationId }) => wrap(request("conversations/leave", { conversationId }), () => {
52
51
  console.log(`Left conversation ${conversationId}.`);
53
- }));
54
- conversationsCommand
55
- .command("mute")
56
- .description("Mute a conversation")
57
- .argument("<conversationId>", "Conversation ID")
58
- .option("--until <datetime>", "Mute until ISO datetime")
59
- .action(action(async (conversationId, opts) => {
52
+ })).pipe(Command.withDescription("Leave a conversation"));
53
+ const untilOption = Options.text("until").pipe(Options.withDescription("Mute until ISO datetime"), Options.optional);
54
+ const muteConversation = Command.make("mute", { conversationId: conversationIdArg, until: untilOption }, ({ conversationId, until }) => {
60
55
  const params = { conversationId };
61
- if (opts.until)
62
- params.until = opts.until;
63
- await request("conversations/mute", params);
64
- console.log(opts.until
65
- ? `Conversation ${conversationId} muted until ${opts.until}.`
66
- : `Conversation ${conversationId} muted.`);
67
- }));
68
- conversationsCommand
69
- .command("unmute")
70
- .description("Unmute a conversation")
71
- .argument("<conversationId>", "Conversation ID")
72
- .action(action(async (conversationId) => {
73
- await request("conversations/unmute", { conversationId });
56
+ if (Option.isSome(until))
57
+ params.until = until.value;
58
+ return wrap(request("conversations/mute", params), () => {
59
+ console.log(Option.isSome(until)
60
+ ? `Conversation ${conversationId} muted until ${until.value}.`
61
+ : `Conversation ${conversationId} muted.`);
62
+ });
63
+ }).pipe(Command.withDescription("Mute a conversation"));
64
+ const unmuteConversation = Command.make("unmute", { conversationId: conversationIdArg }, ({ conversationId }) => wrap(request("conversations/unmute", { conversationId }), () => {
74
65
  console.log(`Conversation ${conversationId} unmuted.`);
75
- }));
76
- conversationsCommand
77
- .command("update")
78
- .description("Update conversation settings")
79
- .argument("<conversationId>", "Conversation ID")
80
- .requiredOption("--name <name>", "New conversation name")
81
- .action(action(async (conversationId, opts) => {
82
- const result = (await request("conversations/update", {
83
- conversationId,
84
- name: opts.name,
85
- }));
86
- console.log(`Conversation updated: ${result.conversation.id} (name: ${result.conversation.name})`);
87
- }));
88
- conversationsCommand
89
- .command("add-participant")
90
- .description("Add a participant to a conversation")
91
- .argument("<conversationId>", "Conversation ID")
92
- .argument("<participant>", "Participant (e.g. agent:bob)")
93
- .action(action(async (conversationId, participant) => {
94
- const ref = await resolveParticipant(participant);
95
- await request("conversations/addParticipant", {
66
+ })).pipe(Command.withDescription("Unmute a conversation"));
67
+ const nameOption = Options.text("name").pipe(Options.withDescription("New conversation name"));
68
+ const updateConversation = Command.make("update", { conversationId: conversationIdArg, name: nameOption }, ({ conversationId, name }) => wrap(request("conversations/update", {
69
+ conversationId,
70
+ name,
71
+ }), (r) => {
72
+ console.log(`Conversation updated: ${r.conversation.id} (name: ${r.conversation.name})`);
73
+ })).pipe(Command.withDescription("Update conversation settings"));
74
+ const addParticipantCommand = Command.make("add-participant", { conversationId: conversationIdArg, participant: participantArg }, ({ conversationId, participant }) => Effect.gen(function* () {
75
+ const ref = yield* resolveParticipant(participant);
76
+ yield* request("conversations/addParticipant", {
96
77
  conversationId,
97
78
  participant: ref,
98
79
  });
99
80
  console.log(`Added ${participant} to ${conversationId}.`);
100
- }));
101
- conversationsCommand
102
- .command("remove-participant")
103
- .description("Remove a participant from a conversation")
104
- .argument("<conversationId>", "Conversation ID")
105
- .argument("<participant>", "Participant (e.g. agent:bob)")
106
- .action(action(async (conversationId, participant) => {
107
- const ref = await resolveParticipant(participant);
108
- await request("conversations/removeParticipant", {
81
+ }).pipe(Effect.catchAll((err) => Effect.sync(() => {
82
+ console.error(`Failed: ${err.message}`);
83
+ process.exit(1);
84
+ })))).pipe(Command.withDescription("Add a participant to a conversation"));
85
+ const removeParticipantCommand = Command.make("remove-participant", { conversationId: conversationIdArg, participant: participantArg }, ({ conversationId, participant }) => Effect.gen(function* () {
86
+ const ref = yield* resolveParticipant(participant);
87
+ yield* request("conversations/removeParticipant", {
109
88
  conversationId,
110
89
  participant: ref,
111
90
  });
112
91
  console.log(`Removed ${participant} from ${conversationId}.`);
113
- }));
114
- async function showHistory(conversationId, opts) {
115
- const result = (await request("history", {
116
- conversationId,
117
- limit: parseInt(opts.limit, 10),
118
- sessionKey: opts.sessionKey,
119
- }));
120
- if (opts.json) {
92
+ }).pipe(Effect.catchAll((err) => Effect.sync(() => {
93
+ console.error(`Failed: ${err.message}`);
94
+ process.exit(1);
95
+ })))).pipe(Command.withDescription("Remove a participant from a conversation"));
96
+ const historyLimitOption = Options.integer("limit").pipe(Options.withDefault(50), Options.withDescription("Max messages to show"));
97
+ const sessionKeyOption = Options.text("session-key").pipe(Options.withDescription("Session key for cross-conversation context"), Options.optional);
98
+ const renderHistory = (conversationId, sessionKey, result, json) => {
99
+ if (json) {
121
100
  console.log(JSON.stringify(result, null, 2));
122
101
  return;
123
102
  }
@@ -125,7 +104,7 @@ async function showHistory(conversationId, opts) {
125
104
  console.log("No messages.");
126
105
  return;
127
106
  }
128
- if (opts.sessionKey && result.conversationMeta) {
107
+ if (Option.isSome(sessionKey) && result.conversationMeta) {
129
108
  const label = result.conversationMeta.name ?? result.conversationMeta.type;
130
109
  console.log(`Conversation: ${label} (${conversationId}) | ${result.newCount} new`);
131
110
  console.log("");
@@ -138,20 +117,90 @@ async function showHistory(conversationId, opts) {
138
117
  if (result.hasMore) {
139
118
  console.log(" ... more messages available");
140
119
  }
120
+ };
121
+ const historyHandler = ({ conversationId, limit, json, sessionKey, }) => {
122
+ const params = { conversationId, limit };
123
+ if (Option.isSome(sessionKey))
124
+ params.sessionKey = sessionKey.value;
125
+ return wrap(request("history", params), (result) => {
126
+ renderHistory(conversationId, sessionKey, result, json);
127
+ });
128
+ };
129
+ const historySubcommand = Command.make("history", {
130
+ conversationId: conversationIdArg,
131
+ limit: historyLimitOption,
132
+ json: jsonOption,
133
+ sessionKey: sessionKeyOption,
134
+ }, historyHandler).pipe(Command.withDescription("Show message history for a conversation"));
135
+ // ─── ARCH sbd#185: new v2 subcommands (get / archive / unarchive) ──────────
136
+ //
137
+ // Stubs only — bodies are `throw new Error("not implemented")`. Full
138
+ // signatures and traceability: https://github.com/chughtapan/safer-by-default/issues/177
139
+ // (architect design doc rev 2).
140
+ import { rpc as transportRpc, runHandler as runConversationsHandler, } from "../transport.js";
141
+ /** CLI-level input was rejected (architect stage: signature only). */
142
+ export class ConversationsInputError extends Error {
143
+ reason;
144
+ _tag = "ConversationsInputError";
145
+ constructor(reason) {
146
+ super(reason);
147
+ this.reason = reason;
148
+ }
141
149
  }
142
- conversationsCommand
143
- .command("history")
144
- .description("Show message history for a conversation")
145
- .argument("<conversationId>", "Conversation ID")
146
- .option("--limit <n>", "Max messages to show", "50")
147
- .option("--json", "Output as JSON")
148
- .option("--session-key <key>", "Session key for cross-conversation context")
149
- .action(action(showHistory));
150
- export const historyCommand = new Command("history")
151
- .description("Show message history for a conversation")
152
- .argument("<conversationId>", "Conversation ID")
153
- .option("--limit <n>", "Max messages to show", "50")
154
- .option("--json", "Output as JSON")
155
- .option("--session-key <key>", "Session key for cross-conversation context")
156
- .action(action(showHistory));
150
+ /** `moltzap conversations get <id>` → conversations/get; prints { conversation, participants }. */
151
+ export const conversationsGetHandler = (args) => Effect.gen(function* () {
152
+ const result = yield* transportRpc("conversations/get", { conversationId: args.conversationId });
153
+ yield* Effect.sync(() => {
154
+ console.log(JSON.stringify(result, null, 2));
155
+ });
156
+ });
157
+ /** `moltzap conversations archive <id>` → conversations/archive; prints success marker. */
158
+ export const conversationsArchiveHandler = (args) => Effect.gen(function* () {
159
+ yield* transportRpc("conversations/archive", {
160
+ conversationId: args.conversationId,
161
+ });
162
+ yield* Effect.sync(() => {
163
+ console.log(`archived: ${args.conversationId}`);
164
+ });
165
+ });
166
+ /** `moltzap conversations unarchive <id>` → conversations/unarchive; prints success marker. */
167
+ export const conversationsUnarchiveHandler = (args) => Effect.gen(function* () {
168
+ yield* transportRpc("conversations/unarchive", {
169
+ conversationId: args.conversationId,
170
+ });
171
+ yield* Effect.sync(() => {
172
+ console.log(`unarchived: ${args.conversationId}`);
173
+ });
174
+ });
175
+ // ── Command.make wrappers for the three v2 handlers ───────────────────────
176
+ const getConversationCommand = Command.make("get", { conversationId: conversationIdArg }, ({ conversationId }) => runConversationsHandler(conversationsGetHandler({ conversationId }))).pipe(Command.withDescription("Get a conversation and its participants"));
177
+ const archiveConversationCommand = Command.make("archive", { conversationId: conversationIdArg }, ({ conversationId }) => runConversationsHandler(conversationsArchiveHandler({ conversationId }))).pipe(Command.withDescription("Archive a conversation"));
178
+ const unarchiveConversationCommand = Command.make("unarchive", { conversationId: conversationIdArg }, ({ conversationId }) => runConversationsHandler(conversationsUnarchiveHandler({ conversationId }))).pipe(Command.withDescription("Unarchive a conversation"));
179
+ /**
180
+ * `moltzap conversations [list|create|leave|mute|unmute|update|add-participant|remove-participant|history|get|archive|unarchive]`
181
+ * — conversation CRUD + inspection over the local Unix socket. Default (no
182
+ * subcommand) lists. The `get`, `archive`, `unarchive` subcommands are
183
+ * wired by impl-staff against the handlers above (sbd#185).
184
+ */
185
+ export const conversationsCommand = Command.make("conversations", {}, () => listConversations.handler({ limit: 20, json: false })).pipe(Command.withDescription("Manage conversations"), Command.withSubcommands([
186
+ listConversations,
187
+ createConversation,
188
+ leaveConversation,
189
+ muteConversation,
190
+ unmuteConversation,
191
+ updateConversation,
192
+ addParticipantCommand,
193
+ removeParticipantCommand,
194
+ historySubcommand,
195
+ getConversationCommand,
196
+ archiveConversationCommand,
197
+ unarchiveConversationCommand,
198
+ ]));
199
+ /** Top-level `moltzap history <conversationId>` — identical to `conversations history`. */
200
+ export const historyCommand = Command.make("history", {
201
+ conversationId: conversationIdArg,
202
+ limit: historyLimitOption,
203
+ json: jsonOption,
204
+ sessionKey: sessionKeyOption,
205
+ }, historyHandler).pipe(Command.withDescription("Show message history for a conversation"));
157
206
  //# sourceMappingURL=conversations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../../src/cli/commands/conversations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../../src/cli/commands/conversations.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
- import { Command } from "commander";
2
- export declare const inviteCommand: Command;
1
+ import { Command } from "@effect/cli";
2
+ /**
3
+ * `moltzap invite` — stub that directs users to the web dashboard. Invites
4
+ * are human-only (agents cannot self-invite), so this just prints guidance.
5
+ */
6
+ export declare const inviteCommand: Command.Command<"invite", never, never, {}>;
3
7
  //# sourceMappingURL=invite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,aAAa,SAUtB,CAAC"}
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,eAAO,MAAM,aAAa,6CAWzB,CAAC"}
@@ -1,9 +1,11 @@
1
- import { Command } from "commander";
2
- export const inviteCommand = new Command("invite")
3
- .description("Invite management (human-only via web dashboard)")
4
- .action(() => {
1
+ import { Command } from "@effect/cli";
2
+ import { Effect } from "effect";
3
+ /**
4
+ * `moltzap invite` — stub that directs users to the web dashboard. Invites
5
+ * are human-only (agents cannot self-invite), so this just prints guidance.
6
+ */
7
+ export const inviteCommand = Command.make("invite", {}, () => Effect.sync(() => {
5
8
  console.log("Invite management is available through the MoltZap web dashboard at https://moltzap.xyz.");
6
9
  console.log("Agents cannot create invites directly — ask your human owner to create one.");
7
- process.exit(0);
8
- });
10
+ })).pipe(Command.withDescription("Invite management (human-only via web dashboard)"));
9
11
  //# sourceMappingURL=invite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../../src/cli/commands/invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CACT,0FAA0F,CAC3F,CAAC;IACF,OAAO,CAAC,GAAG,CACT,6EAA6E,CAC9E,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../../src/cli/commands/invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,OAAO,CAAC,GAAG,CACT,0FAA0F,CAC3F,CAAC;IACF,OAAO,CAAC,GAAG,CACT,6EAA6E,CAC9E,CAAC;AACJ,CAAC,CAAC,CACH,CAAC,IAAI,CACJ,OAAO,CAAC,eAAe,CAAC,kDAAkD,CAAC,CAC5E,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * `moltzap messages <subcommand>` — handler for spec sbd#177 rev 3 §5.5.
3
+ *
4
+ * One subcommand in v1:
5
+ *
6
+ * messages list → messages/list
7
+ *
8
+ * Architect pick (spec §"Architect picks"): new file, not an extension of
9
+ * `commands/send.ts`. `send` is a one-shot top-level command; `messages`
10
+ * is a subcommand group whose future v1.1 member (`messages tail`, deferred
11
+ * per Non-goal §3.1) lands in the same file.
12
+ *
13
+ * Open question Q-M-1 (see design doc §8): `--cursor` has no server
14
+ * backing in the current protocol; ESCALATED to spec rev 4. The flag is
15
+ * deliberately absent from this interface until resolved.
16
+ */
17
+ import { Command } from "@effect/cli";
18
+ import { Effect, Option } from "effect";
19
+ import { type Transport, type TransportError } from "../transport.js";
20
+ export type MessagesCommandError = TransportError | MessagesInputError;
21
+ export declare class MessagesInputError extends Error {
22
+ readonly reason: string;
23
+ readonly _tag: "MessagesInputError";
24
+ constructor(reason: string);
25
+ }
26
+ /**
27
+ * `moltzap messages list --conversation <id> [--limit N]` — spec §5.5.
28
+ * `cursor` deliberately absent from this interface until the open
29
+ * question is resolved.
30
+ */
31
+ export interface MessagesListArgs {
32
+ readonly conversationId: string;
33
+ readonly limit?: number;
34
+ }
35
+ /**
36
+ * Wraps `messages/list`. Emits one message per line (seq, senderName, text).
37
+ * `--json` is a stretch flag added by impl if consistent with
38
+ * `conversations list` output style (not fixed by spec).
39
+ */
40
+ export declare const messagesListHandler: (args: MessagesListArgs) => Effect.Effect<void, MessagesCommandError, Transport>;
41
+ /** `moltzap messages [list]` subcommand group. */
42
+ export declare const messagesCommand: Command.Command<"messages", Transport, never, {
43
+ readonly subcommand: Option.Option<{
44
+ readonly conversation: string;
45
+ readonly limit: Option.Option<number>;
46
+ }>;
47
+ }>;
48
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,OAAO,EAAW,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAEvE,qBAAa,kBAAmB,SAAQ,KAAK;IAE/B,QAAQ,CAAC,MAAM,EAAE,MAAM;IADnC,QAAQ,CAAC,IAAI,EAAG,oBAAoB,CAAU;gBACzB,MAAM,EAAE,MAAM;CAGpC;AAID;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,gBAAgB,KACrB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,SAAS,CAoBlD,CAAC;AAqBL,kDAAkD;AAClD,eAAO,MAAM,eAAe;;;;;EAW3B,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * `moltzap messages <subcommand>` — handler for spec sbd#177 rev 3 §5.5.
3
+ *
4
+ * One subcommand in v1:
5
+ *
6
+ * messages list → messages/list
7
+ *
8
+ * Architect pick (spec §"Architect picks"): new file, not an extension of
9
+ * `commands/send.ts`. `send` is a one-shot top-level command; `messages`
10
+ * is a subcommand group whose future v1.1 member (`messages tail`, deferred
11
+ * per Non-goal §3.1) lands in the same file.
12
+ *
13
+ * Open question Q-M-1 (see design doc §8): `--cursor` has no server
14
+ * backing in the current protocol; ESCALATED to spec rev 4. The flag is
15
+ * deliberately absent from this interface until resolved.
16
+ */
17
+ import { Command, Options } from "@effect/cli";
18
+ import { Effect, Option } from "effect";
19
+ import { rpc, runHandler, } from "../transport.js";
20
+ export class MessagesInputError extends Error {
21
+ reason;
22
+ _tag = "MessagesInputError";
23
+ constructor(reason) {
24
+ super(reason);
25
+ this.reason = reason;
26
+ }
27
+ }
28
+ // ─── Handlers ──────────────────────────────────────────────────────────────
29
+ /**
30
+ * Wraps `messages/list`. Emits one message per line (seq, senderName, text).
31
+ * `--json` is a stretch flag added by impl if consistent with
32
+ * `conversations list` output style (not fixed by spec).
33
+ */
34
+ export const messagesListHandler = (args) => Effect.gen(function* () {
35
+ const params = {
36
+ conversationId: args.conversationId,
37
+ };
38
+ if (args.limit !== undefined)
39
+ params.limit = args.limit;
40
+ const result = yield* rpc("messages/list", params);
41
+ yield* Effect.sync(() => {
42
+ for (const m of result.messages) {
43
+ const text = m.parts.find((p) => p.type === "text")?.text ?? "";
44
+ const sender = m.senderName ?? m.senderId;
45
+ console.log(`${m.seq}\t${sender}\t${text}`);
46
+ }
47
+ if (result.hasMore) {
48
+ console.log("... more messages available");
49
+ }
50
+ });
51
+ });
52
+ // ─── CLI commands ──────────────────────────────────────────────────────────
53
+ const conversationOption = Options.text("conversation").pipe(Options.withDescription("Conversation id"));
54
+ const msgLimitOption = Options.integer("limit").pipe(Options.optional);
55
+ const messagesListCommand = Command.make("list", { conversation: conversationOption, limit: msgLimitOption }, ({ conversation, limit }) => {
56
+ const args = {
57
+ conversationId: conversation,
58
+ ...(Option.isSome(limit) ? { limit: limit.value } : {}),
59
+ };
60
+ return runHandler(messagesListHandler(args));
61
+ }).pipe(Command.withDescription("List messages in a conversation"));
62
+ /** `moltzap messages [list]` subcommand group. */
63
+ export const messagesCommand = Command.make("messages", {}, () => Effect.sync(() => {
64
+ console.log("Usage: moltzap messages list --conversation <id> [--limit N]");
65
+ })).pipe(Command.withDescription("Query message history. Runs as the identity selected by the global " +
66
+ "--as / --profile flags (see `moltzap --help`); visibility is scoped " +
67
+ "to conversations that caller participates in."), Command.withSubcommands([messagesListCommand]));
68
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/cli/commands/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=messages.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/messages.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Unit tests for `moltzap messages list` handler. Spec test-coverage floor:
3
+ * one success + one RPC-failure path.
4
+ */
5
+ import { Effect } from "effect";
6
+ import { afterEach, beforeEach, describe, expect, it, vi, } from "vitest";
7
+ import { messagesListHandler } from "./messages.js";
8
+ import { Transport, TransportRpcError, } from "../transport.js";
9
+ const makeFakeTransport = (respond) => {
10
+ const calls = [];
11
+ const transport = {
12
+ kind: "test",
13
+ rpc: (method, params) => {
14
+ calls.push({ method, params });
15
+ const out = respond({ method, params });
16
+ if (out instanceof Error) {
17
+ return Effect.fail(new TransportRpcError({ method, code: -32000, message: out.message }));
18
+ }
19
+ return Effect.succeed(out);
20
+ },
21
+ };
22
+ return { calls, transport };
23
+ };
24
+ describe("messages list", () => {
25
+ let stdout;
26
+ beforeEach(() => {
27
+ stdout = vi.spyOn(console, "log").mockImplementation(() => { });
28
+ });
29
+ afterEach(() => stdout.mockRestore());
30
+ it("calls messages/list with { conversationId, limit? } and emits one line per message", async () => {
31
+ const { calls, transport } = makeFakeTransport(() => ({
32
+ messages: [
33
+ {
34
+ id: "m1",
35
+ seq: 1,
36
+ senderId: "a1",
37
+ senderName: "alice",
38
+ createdAt: "2026-04-24T00:00:00Z",
39
+ parts: [{ type: "text", text: "hello" }],
40
+ },
41
+ {
42
+ id: "m2",
43
+ seq: 2,
44
+ senderId: "b1",
45
+ senderName: "bob",
46
+ createdAt: "2026-04-24T00:00:01Z",
47
+ parts: [{ type: "text", text: "hi" }],
48
+ },
49
+ ],
50
+ hasMore: false,
51
+ }));
52
+ await Effect.runPromise(messagesListHandler({ conversationId: "c1", limit: 50 }).pipe(Effect.provideService(Transport, transport)));
53
+ expect(calls[0]).toEqual({
54
+ method: "messages/list",
55
+ params: { conversationId: "c1", limit: 50 },
56
+ });
57
+ expect(stdout).toHaveBeenCalledTimes(2);
58
+ });
59
+ it("omits limit when absent", async () => {
60
+ const { calls, transport } = makeFakeTransport(() => ({
61
+ messages: [],
62
+ hasMore: false,
63
+ }));
64
+ await Effect.runPromise(messagesListHandler({ conversationId: "c1" }).pipe(Effect.provideService(Transport, transport)));
65
+ expect(calls[0]?.params).toEqual({ conversationId: "c1" });
66
+ });
67
+ it("surfaces TransportRpcError", async () => {
68
+ const { transport } = makeFakeTransport(() => new Error("fail"));
69
+ const result = await Effect.runPromiseExit(messagesListHandler({ conversationId: "c1" }).pipe(Effect.provideService(Transport, transport)));
70
+ expect(result._tag).toBe("Failure");
71
+ });
72
+ });
73
+ //# sourceMappingURL=messages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.test.js","sourceRoot":"","sources":["../../../src/cli/commands/messages.test.ts"],"names":[],"mappings":"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"}