@ccmsg/protocol 1.20.0 → 1.21.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.
@@ -26,135 +26,149 @@ export interface OpFixture {
26
26
  * implementation. Every one of them passes the op's schema, which the
27
27
  * contract's tests hold it to. */
28
28
  export const OP_FIXTURES = {
29
- hello: { request: common.HELLO_REQUEST, response: common.HELLO_RESPONSE },
30
- instance_ping: {
29
+ "hello.session": { request: common.HELLO_SESSION_REQUEST, response: common.HELLO_RESPONSE },
30
+ "hello.user": { request: common.HELLO_USER_REQUEST, response: common.HELLO_RESPONSE },
31
+ "hello.instance": {
32
+ request: common.HELLO_INSTANCE_REQUEST,
33
+ response: common.HELLO_RESPONSE,
34
+ },
35
+ "instance.ping": {
31
36
  request: common.INSTANCE_PING_REQUEST,
32
37
  response: common.INSTANCE_PING_RESPONSE,
33
38
  },
34
- instance_shutdown: {
39
+ "instance.shutdown": {
35
40
  request: common.INSTANCE_SHUTDOWN_REQUEST,
36
41
  response: common.INSTANCE_SHUTDOWN_RESPONSE,
37
42
  },
38
- session_stopping: {
43
+ "session.stopping": {
39
44
  request: common.SESSION_STOPPING_REQUEST,
40
45
  response: common.SESSION_STOPPING_RESPONSE,
41
46
  },
42
- topic_subscribe: {
47
+ "topic.subscribe": {
43
48
  request: common.TOPIC_SUBSCRIBE_REQUEST,
44
49
  response: common.TOPIC_SUBSCRIBE_RESPONSE,
45
50
  },
46
- topic_unsubscribe: {
51
+ "topic.unsubscribe": {
47
52
  request: common.TOPIC_UNSUBSCRIBE_REQUEST,
48
53
  response: common.TOPIC_UNSUBSCRIBE_RESPONSE,
49
54
  },
50
- auth_challenge: {
55
+ "auth.challenge": {
51
56
  request: common.AUTH_CHALLENGE_REQUEST,
52
57
  response: common.AUTH_CHALLENGE_RESPONSE,
53
58
  },
54
- auth_register: {
59
+ "auth.register": {
55
60
  request: common.AUTH_REGISTER_REQUEST,
56
61
  response: common.AUTH_REGISTER_RESPONSE,
57
62
  },
58
- auth_assert: { request: common.AUTH_ASSERT_REQUEST, response: common.AUTH_ASSERT_RESPONSE },
59
- auth_refresh_token: {
60
- request: common.AUTH_REFRESH_TOKEN_REQUEST,
61
- response: common.AUTH_REFRESH_TOKEN_RESPONSE,
63
+ "auth.assert": { request: common.AUTH_ASSERT_REQUEST, response: common.AUTH_ASSERT_RESPONSE },
64
+ "auth.token.refresh": {
65
+ request: common.AUTH_TOKEN_REFRESH_REQUEST,
66
+ response: common.AUTH_TOKEN_REFRESH_RESPONSE,
62
67
  },
63
- auth_refresh: { request: common.AUTH_REFRESH_REQUEST, response: common.AUTH_REFRESH_RESPONSE },
64
- auth_resolve: { request: common.AUTH_RESOLVE_REQUEST, response: common.AUTH_RESOLVE_RESPONSE },
65
- auth_rotate: { request: common.AUTH_ROTATE_REQUEST, response: common.AUTH_ROTATE_RESPONSE },
68
+ "auth.extend": { request: common.AUTH_EXTEND_REQUEST, response: common.AUTH_EXTEND_RESPONSE },
69
+ "auth.resolve": { request: common.AUTH_RESOLVE_REQUEST, response: common.AUTH_RESOLVE_RESPONSE },
70
+ "auth.rotate": { request: common.AUTH_ROTATE_REQUEST, response: common.AUTH_ROTATE_RESPONSE },
66
71
 
67
- message_send: {
72
+ "message.send": {
68
73
  request: messaging.MESSAGE_SEND_REQUEST,
69
74
  response: messaging.MESSAGE_SEND_RESPONSE,
70
75
  },
71
- say_post: { request: messaging.SAY_POST_REQUEST, response: messaging.SAY_POST_RESPONSE },
72
- say_mark_read: {
73
- request: messaging.SAY_MARK_READ_REQUEST,
74
- response: messaging.SAY_MARK_READ_RESPONSE,
76
+ "say.post": { request: messaging.SAY_POST_REQUEST, response: messaging.SAY_POST_RESPONSE },
77
+ "say.unread.clear": {
78
+ request: messaging.SAY_UNREAD_CLEAR_REQUEST,
79
+ response: messaging.SAY_UNREAD_CLEAR_RESPONSE,
80
+ },
81
+ "notify.send": {
82
+ request: messaging.NOTIFY_SEND_REQUEST,
83
+ response: messaging.NOTIFY_SEND_RESPONSE,
75
84
  },
76
- notify_send: { request: messaging.NOTIFY_SEND_REQUEST, response: messaging.NOTIFY_SEND_RESPONSE },
77
85
 
78
- session_kill: { request: control.SESSION_KILL_REQUEST, response: control.SESSION_KILL_RESPONSE },
79
- session_rename: {
86
+ "session.kill": {
87
+ request: control.SESSION_KILL_REQUEST,
88
+ response: control.SESSION_KILL_RESPONSE,
89
+ },
90
+ "session.rename": {
80
91
  request: control.SESSION_RENAME_REQUEST,
81
92
  response: control.SESSION_RENAME_RESPONSE,
82
93
  },
83
- session_env_read: {
94
+ "session.env.read": {
84
95
  request: control.SESSION_ENV_READ_REQUEST,
85
96
  response: control.SESSION_ENV_READ_RESPONSE,
86
97
  },
87
- session_search: {
98
+ "session.search": {
88
99
  request: control.SESSION_SEARCH_REQUEST,
89
100
  response: control.SESSION_SEARCH_RESPONSE,
90
101
  },
91
- session_dump_write: {
102
+ "session.dump.write": {
92
103
  request: control.SESSION_DUMP_WRITE_REQUEST,
93
104
  response: control.SESSION_DUMP_WRITE_RESPONSE,
94
105
  },
95
- dump_presets_read: {
106
+ "dump.presets.read": {
96
107
  request: control.DUMP_PRESETS_READ_REQUEST,
97
108
  response: control.DUMP_PRESETS_READ_RESPONSE,
98
109
  },
99
- transcript_read: {
110
+ "transcript.read": {
100
111
  request: control.TRANSCRIPT_READ_REQUEST,
101
112
  response: control.TRANSCRIPT_READ_RESPONSE,
102
113
  },
103
- transcript_items_read: {
114
+ "transcript.items.read": {
104
115
  request: control.TRANSCRIPT_ITEMS_READ_REQUEST,
105
116
  response: control.TRANSCRIPT_ITEMS_READ_RESPONSE,
106
117
  },
107
- session_fork_origin: {
108
- request: control.SESSION_FORK_ORIGIN_REQUEST,
109
- response: control.SESSION_FORK_ORIGIN_RESPONSE,
118
+ "session.fork.origin.read": {
119
+ request: control.SESSION_FORK_ORIGIN_READ_REQUEST,
120
+ response: control.SESSION_FORK_ORIGIN_READ_RESPONSE,
110
121
  },
111
- session_last_live_remove: {
112
- request: control.SESSION_LAST_LIVE_REMOVE_REQUEST,
113
- response: control.SESSION_LAST_LIVE_REMOVE_RESPONSE,
122
+ "session.forget": {
123
+ request: control.SESSION_FORGET_REQUEST,
124
+ response: control.SESSION_FORGET_RESPONSE,
114
125
  },
115
126
 
116
- dir_list: { request: control.DIR_LIST_REQUEST, response: control.DIR_LIST_RESPONSE },
117
- file_read: { request: control.FILE_READ_REQUEST, response: control.FILE_READ_RESPONSE },
118
- file_write: { request: control.FILE_WRITE_REQUEST, response: control.FILE_WRITE_RESPONSE },
119
- file_create: { request: control.FILE_CREATE_REQUEST, response: control.FILE_CREATE_RESPONSE },
120
- file_edit: { request: control.FILE_EDIT_REQUEST, response: control.FILE_EDIT_RESPONSE },
121
- file_delete: { request: control.FILE_DELETE_REQUEST, response: control.FILE_DELETE_RESPONSE },
122
- file_find: { request: control.FILE_FIND_REQUEST, response: control.FILE_FIND_RESPONSE },
123
- file_stat_batch: {
124
- request: control.FILE_STAT_BATCH_REQUEST,
125
- response: control.FILE_STAT_BATCH_RESPONSE,
126
- },
127
- dir_tree: { request: control.DIR_TREE_REQUEST, response: control.DIR_TREE_RESPONSE },
127
+ "dir.list": { request: control.DIR_LIST_REQUEST, response: control.DIR_LIST_RESPONSE },
128
+ "file.read": { request: control.FILE_READ_REQUEST, response: control.FILE_READ_RESPONSE },
129
+ "file.write": { request: control.FILE_WRITE_REQUEST, response: control.FILE_WRITE_RESPONSE },
130
+ "file.create": { request: control.FILE_CREATE_REQUEST, response: control.FILE_CREATE_RESPONSE },
131
+ "file.edit": { request: control.FILE_EDIT_REQUEST, response: control.FILE_EDIT_RESPONSE },
132
+ "file.delete": { request: control.FILE_DELETE_REQUEST, response: control.FILE_DELETE_RESPONSE },
133
+ "file.find": { request: control.FILE_FIND_REQUEST, response: control.FILE_FIND_RESPONSE },
134
+ "file.stat": {
135
+ request: control.FILE_STAT_REQUEST,
136
+ response: control.FILE_STAT_RESPONSE,
137
+ },
138
+ "dir.tree": { request: control.DIR_TREE_REQUEST, response: control.DIR_TREE_RESPONSE },
128
139
 
129
- launcher_config_read: {
140
+ "launcher.config.read": {
130
141
  request: control.LAUNCHER_CONFIG_READ_REQUEST,
131
142
  response: control.LAUNCHER_CONFIG_READ_RESPONSE,
132
143
  },
133
- launcher_run: { request: control.LAUNCHER_RUN_REQUEST, response: control.LAUNCHER_RUN_RESPONSE },
134
- sandbox_grant: {
144
+ "launcher.run": {
145
+ request: control.LAUNCHER_RUN_REQUEST,
146
+ response: control.LAUNCHER_RUN_RESPONSE,
147
+ },
148
+ "sandbox.grant": {
135
149
  request: control.SANDBOX_GRANT_REQUEST,
136
150
  response: control.SANDBOX_GRANT_RESPONSE,
137
151
  },
138
- sandbox_revoke: {
152
+ "sandbox.revoke": {
139
153
  request: control.SANDBOX_REVOKE_REQUEST,
140
154
  response: control.SANDBOX_REVOKE_RESPONSE,
141
155
  },
142
- translate_run: {
156
+ "translate.run": {
143
157
  request: control.TRANSLATE_RUN_REQUEST,
144
158
  response: control.TRANSLATE_RUN_RESPONSE,
145
159
  },
146
- llm_usage_read: {
160
+ "llm.usage.read": {
147
161
  request: control.LLM_USAGE_READ_REQUEST,
148
162
  response: control.LLM_USAGE_READ_RESPONSE,
149
163
  },
150
- llm_stats_read: {
164
+ "llm.stats.read": {
151
165
  request: control.LLM_STATS_READ_REQUEST,
152
166
  response: control.LLM_STATS_READ_RESPONSE,
153
167
  },
154
168
 
155
- kv_read: { request: control.KV_READ_REQUEST, response: control.KV_READ_RESPONSE },
156
- kv_write: { request: control.KV_WRITE_REQUEST, response: control.KV_WRITE_RESPONSE },
157
- kv_delete: { request: control.KV_DELETE_REQUEST, response: control.KV_DELETE_RESPONSE },
169
+ "kv.read": { request: control.KV_READ_REQUEST, response: control.KV_READ_RESPONSE },
170
+ "kv.write": { request: control.KV_WRITE_REQUEST, response: control.KV_WRITE_RESPONSE },
171
+ "kv.delete": { request: control.KV_DELETE_REQUEST, response: control.KV_DELETE_RESPONSE },
158
172
  } as const satisfies Record<OpName, OpFixture>;
159
173
 
160
174
  /** A representative frame for every topic, each one the snapshot a subscriber
@@ -165,12 +179,12 @@ export const TOPIC_FIXTURES = {
165
179
  peers: topics.PEERS_FRAME,
166
180
  instances: topics.INSTANCES_FRAME,
167
181
  agents: topics.AGENTS_FRAME,
168
- session_status: topics.SESSION_STATUS_FRAME,
182
+ "session.status": topics.SESSION_STATUS_FRAME,
169
183
  transcript: topics.TRANSCRIPT_FRAME,
170
- transcript_items: topics.TRANSCRIPT_ITEMS_FRAME,
171
- session_errors: topics.SESSION_ERRORS_FRAME,
172
- llm_requests: topics.LLM_REQUESTS_FRAME,
173
- llm_status: topics.LLM_STATUS_FRAME,
184
+ "transcript.items": topics.TRANSCRIPT_ITEMS_FRAME,
185
+ "session.errors": topics.SESSION_ERRORS_FRAME,
186
+ "llm.requests": topics.LLM_REQUESTS_FRAME,
187
+ "llm.status": topics.LLM_STATUS_FRAME,
174
188
  kv: topics.KV_FRAME,
175
- auth_records: topics.AUTH_RECORDS_FRAME,
189
+ "auth.records": topics.AUTH_RECORDS_FRAME,
176
190
  } as const satisfies Record<TopicKind, unknown>;
@@ -2,8 +2,8 @@ import type { Static } from "@sinclair/typebox";
2
2
  import type { MessageSendRequest, MessageSendResponse } from "../messaging/message.ts";
3
3
  import type { NotifySendRequest, NotifySendResponse } from "../messaging/notify.ts";
4
4
  import type {
5
- SayMarkReadRequest,
6
- SayMarkReadResponse,
5
+ SayUnreadClearRequest,
6
+ SayUnreadClearResponse,
7
7
  SayPostRequest,
8
8
  SayPostResponse,
9
9
  } from "../messaging/say.ts";
@@ -13,7 +13,7 @@ const { sid, other_sid, instance, mid, request_id } = FIXTURE_IDS;
13
13
 
14
14
  export const MESSAGE_SEND_REQUEST: Static<typeof MessageSendRequest> = {
15
15
  request_id,
16
- op: "message_send",
16
+ op: "message.send",
17
17
  to: other_sid,
18
18
  text: "契約の fixture を export した",
19
19
  reply_to: mid,
@@ -23,7 +23,7 @@ export const MESSAGE_SEND_REQUEST: Static<typeof MessageSendRequest> = {
23
23
  * fields and the identity it was called with. */
24
24
  export const MESSAGE_SEND_FORWARDED_REQUEST: Static<typeof MessageSendRequest> = {
25
25
  request_id,
26
- op: "message_send",
26
+ op: "message.send",
27
27
  to: other_sid,
28
28
  text: "契約の fixture を export した",
29
29
  from_instance: instance,
@@ -49,7 +49,7 @@ export const MESSAGE_SEND_HELD_RESPONSE: Static<typeof MessageSendResponse> = {
49
49
 
50
50
  export const SAY_POST_REQUEST: Static<typeof SayPostRequest> = {
51
51
  request_id,
52
- op: "say_post",
52
+ op: "say.post",
53
53
  text: "終わりました",
54
54
  };
55
55
 
@@ -59,20 +59,20 @@ export const SAY_POST_RESPONSE: Static<typeof SayPostResponse> = {
59
59
  posted_at: FIXTURE_NOW,
60
60
  };
61
61
 
62
- export const SAY_MARK_READ_REQUEST: Static<typeof SayMarkReadRequest> = {
62
+ export const SAY_UNREAD_CLEAR_REQUEST: Static<typeof SayUnreadClearRequest> = {
63
63
  request_id,
64
- op: "say_mark_read",
64
+ op: "say.unread.clear",
65
65
  sid,
66
66
  };
67
67
 
68
- export const SAY_MARK_READ_RESPONSE: Static<typeof SayMarkReadResponse> = {
68
+ export const SAY_UNREAD_CLEAR_RESPONSE: Static<typeof SayUnreadClearResponse> = {
69
69
  ok: true,
70
70
  request_id,
71
71
  };
72
72
 
73
73
  export const NOTIFY_SEND_REQUEST: Static<typeof NotifySendRequest> = {
74
74
  request_id,
75
- op: "notify_send",
75
+ op: "notify.send",
76
76
  sid,
77
77
  text: "確認して",
78
78
  };
@@ -167,7 +167,7 @@ export const AGENTS_CHANGE_FRAME: Static<typeof AgentsFrame> = {
167
167
 
168
168
  export const SESSION_STATUS_FRAME: Static<typeof SessionStatusFrame> = {
169
169
  ev: "topic",
170
- topic: `session_status:${sid}`,
170
+ topic: `session.status:${sid}`,
171
171
  snapshot: true,
172
172
  instance,
173
173
  data: {
@@ -297,7 +297,7 @@ export const TRANSCRIPT_SIZE_FRAME = {
297
297
  /** The typed topic, whose frames carry items rather than bytes. */
298
298
  export const TRANSCRIPT_ITEMS_FRAME = {
299
299
  ev: "topic",
300
- topic: `transcript_items:${sid}`,
300
+ topic: `transcript.items:${sid}`,
301
301
  instance,
302
302
  data: { sid, items: TRANSCRIPT_ITEMS.slice(-2) },
303
303
  } satisfies Static<typeof TranscriptItemsFrame>;
@@ -306,7 +306,7 @@ export const TRANSCRIPT_ITEMS_FRAME = {
306
306
  * every frame after it, so a subscriber appends both the same way. */
307
307
  export const TRANSCRIPT_ITEMS_SNAPSHOT_FRAME = {
308
308
  ev: "topic",
309
- topic: `transcript_items:${sid}`,
309
+ topic: `transcript.items:${sid}`,
310
310
  snapshot: true,
311
311
  instance,
312
312
  data: { sid, items: TRANSCRIPT_ITEMS },
@@ -314,7 +314,7 @@ export const TRANSCRIPT_ITEMS_SNAPSHOT_FRAME = {
314
314
 
315
315
  export const SESSION_ERRORS_FRAME: Static<typeof SessionErrorsFrame> = {
316
316
  ev: "topic",
317
- topic: "session_errors",
317
+ topic: "session.errors",
318
318
  snapshot: true,
319
319
  instance,
320
320
  data: {
@@ -324,7 +324,7 @@ export const SESSION_ERRORS_FRAME: Static<typeof SessionErrorsFrame> = {
324
324
 
325
325
  export const LLM_REQUESTS_FRAME: Static<typeof LlmRequestsFrame> = {
326
326
  ev: "topic",
327
- topic: "llm_requests",
327
+ topic: "llm.requests",
328
328
  snapshot: true,
329
329
  instance,
330
330
  data: [
@@ -349,7 +349,7 @@ export const LLM_REQUESTS_FRAME: Static<typeof LlmRequestsFrame> = {
349
349
 
350
350
  export const LLM_STATUS_FRAME: Static<typeof LlmStatusFrame> = {
351
351
  ev: "topic",
352
- topic: "llm_status",
352
+ topic: "llm.status",
353
353
  snapshot: true,
354
354
  instance,
355
355
  data: {
@@ -396,7 +396,7 @@ export const KV_FRAME: Static<typeof KvFrame> = {
396
396
 
397
397
  export const AUTH_RECORDS_FRAME = {
398
398
  ev: "topic",
399
- topic: "auth_records",
399
+ topic: "auth.records",
400
400
  snapshot: true,
401
401
  instance,
402
402
  data: {
@@ -431,7 +431,7 @@ export const AUTH_RECORDS_FRAME = {
431
431
  * issued it. */
432
432
  export const AUTH_RECORDS_FAMILY_FRAME = {
433
433
  ev: "topic",
434
- topic: "auth_records",
434
+ topic: "auth.records",
435
435
  instance,
436
436
  data: {
437
437
  records: [
@@ -462,7 +462,7 @@ export const AUTH_RECORDS_FAMILY_FRAME = {
462
462
  * family's is kept only as long as a refresh token could still arrive. */
463
463
  export const AUTH_RECORDS_TOMBSTONE_FRAME = {
464
464
  ev: "topic",
465
- topic: "auth_records",
465
+ topic: "auth.records",
466
466
  instance,
467
467
  data: {
468
468
  records: [
@@ -81,12 +81,14 @@ export const Mid = Type.String({
81
81
  });
82
82
  export type Mid = Static<typeof Mid>;
83
83
 
84
- /** Who a connection speaks as. Set once by `hello` and fixed for the
85
- * connection's life; the op attribute table's `roles` is checked against it.
84
+ /** Who a connection speaks as. Settled once by the greeting that opened it —
85
+ * `hello.session`, `hello.user` or `hello.instance`, the op being what says
86
+ * which — and fixed for the connection's life; the op attribute table's
87
+ * `roles` is checked against it.
86
88
  *
87
- * Once by `hello` means once: a second `hello` on a connection whose identity
88
- * is already settled is refused with `bad_request`, whether it repeats the
89
- * role or names another. */
89
+ * Once means once: a second greeting on a connection whose identity is
90
+ * already settled is refused with `bad_request`, whether it is the same one
91
+ * again or another. */
90
92
  export const Role = Type.Union(
91
93
  [Type.Literal("session"), Type.Literal("user"), Type.Literal("instance")],
92
94
  { $id: "Role" },
@@ -100,7 +102,7 @@ export const Capability = Type.Union(
100
102
  Type.Literal("fork"),
101
103
  Type.Literal("launcher"),
102
104
  /** A gateway webhook source is configured, so request activity arrives to
103
- * be pushed on the `llm_requests` topic. */
105
+ * be pushed on the `llm.requests` topic. */
104
106
  Type.Literal("llm_events"),
105
107
  Type.Literal("llm_stats"),
106
108
  Type.Literal("llm_status"),
@@ -65,8 +65,8 @@ export const MessageSendResult = Type.Object({
65
65
  });
66
66
  export type MessageSendResult = Static<typeof MessageSendResult>;
67
67
 
68
- export const MessageSendRequest = request("message_send", MessageSendArgs);
69
- export const MessageSendResponse = response("message_send", MessageSendResult);
68
+ export const MessageSendRequest = request("message.send", MessageSendArgs);
69
+ export const MessageSendResponse = response("message.send", MessageSendResult);
70
70
 
71
71
  /** A message as the recipient receives it, on topic `inbox`.
72
72
  *
@@ -75,7 +75,7 @@ export const MessageSendResponse = response("message_send", MessageSendResult);
75
75
  * whoever renders it — see `direct-delivery.ts` for the one route whose
76
76
  * recipient reads text instead of this frame.
77
77
  *
78
- * A `from` of `user` is the exception: `message_send` addresses a sid, so there
78
+ * A `from` of `user` is the exception: `message.send` addresses a sid, so there
79
79
  * is no such thing as sending back to the person. An answer to one reaches them
80
80
  * as a notification instead, which is the instance's to arrange — this contract
81
81
  * only states that the sender can be a person, so a client stops treating one
@@ -3,7 +3,7 @@ import { request, response, topicFrame } from "../envelope.ts";
3
3
  import { Sid, Timestamp } from "../identifiers.ts";
4
4
 
5
5
  /** A short line meant to reach a person watching, not the session's own turn.
6
- * Delivery is best effort and unacknowledged; unlike `message_send`, nothing is
6
+ * Delivery is best effort and unacknowledged; unlike `message.send`, nothing is
7
7
  * held for later. */
8
8
  export const NotifySendArgs = Type.Object({
9
9
  /** The session the notification is about. Omit to mean the caller. */
@@ -15,8 +15,8 @@ export type NotifySendArgs = Static<typeof NotifySendArgs>;
15
15
  export const NotifySendResult = Type.Object({});
16
16
  export type NotifySendResult = Static<typeof NotifySendResult>;
17
17
 
18
- export const NotifySendRequest = request("notify_send", NotifySendArgs);
19
- export const NotifySendResponse = response("notify_send", NotifySendResult);
18
+ export const NotifySendRequest = request("notify.send", NotifySendArgs);
19
+ export const NotifySendResponse = response("notify.send", NotifySendResult);
20
20
 
21
21
  export const Notification = Type.Object(
22
22
  {
@@ -17,19 +17,19 @@ export const SayPostResult = Type.Object({
17
17
  });
18
18
  export type SayPostResult = Static<typeof SayPostResult>;
19
19
 
20
- export const SayPostRequest = request("say_post", SayPostArgs);
21
- export const SayPostResponse = response("say_post", SayPostResult);
20
+ export const SayPostRequest = request("say.post", SayPostArgs);
21
+ export const SayPostResponse = response("say.post", SayPostResult);
22
22
 
23
- /** Clears the unread mark a `say_post` raised. The mark is instance state that
23
+ /** Clears the unread mark a `say.post` raised. The mark is instance state that
24
24
  * a restart may forget — nothing depends on it surviving. */
25
- export const SayMarkReadArgs = Type.Object({
25
+ export const SayUnreadClearArgs = Type.Object({
26
26
  /** The session whose unread mark is cleared. Omit to clear every one. */
27
27
  sid: Type.Optional(Sid),
28
28
  });
29
- export type SayMarkReadArgs = Static<typeof SayMarkReadArgs>;
29
+ export type SayUnreadClearArgs = Static<typeof SayUnreadClearArgs>;
30
30
 
31
- export const SayMarkReadResult = Type.Object({});
32
- export type SayMarkReadResult = Static<typeof SayMarkReadResult>;
31
+ export const SayUnreadClearResult = Type.Object({});
32
+ export type SayUnreadClearResult = Static<typeof SayUnreadClearResult>;
33
33
 
34
- export const SayMarkReadRequest = request("say_mark_read", SayMarkReadArgs);
35
- export const SayMarkReadResponse = response("say_mark_read", SayMarkReadResult);
34
+ export const SayUnreadClearRequest = request("say.unread.clear", SayUnreadClearArgs);
35
+ export const SayUnreadClearResponse = response("say.unread.clear", SayUnreadClearResult);