@ccmsg/protocol 1.19.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.
package/src/schemas.ts CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  AuthChallengeRequest,
8
8
  AuthChallengeResponse,
9
9
  AuthRecordsFrame,
10
- AuthRefreshRequest,
11
- AuthRefreshResponse,
12
- AuthRefreshTokenRequest,
13
- AuthRefreshTokenResponse,
10
+ AuthExtendRequest,
11
+ AuthExtendResponse,
12
+ AuthTokenRefreshRequest,
13
+ AuthTokenRefreshResponse,
14
14
  AuthRegisterRequest,
15
15
  AuthRegisterResponse,
16
16
  AuthResolveRequest,
@@ -18,7 +18,14 @@ import {
18
18
  AuthRotateRequest,
19
19
  AuthRotateResponse,
20
20
  } from "./common/auth.ts";
21
- import { HelloRequest, HelloResponse } from "./common/hello.ts";
21
+ import {
22
+ HelloInstanceRequest,
23
+ HelloInstanceResponse,
24
+ HelloSessionRequest,
25
+ HelloSessionResponse,
26
+ HelloUserRequest,
27
+ HelloUserResponse,
28
+ } from "./common/hello.ts";
22
29
  import { InstancePingRequest, InstancePingResponse } from "./common/ping.ts";
23
30
  import {
24
31
  InstanceShutdownRequest,
@@ -49,8 +56,8 @@ import {
49
56
  FileFindResponse,
50
57
  FileReadRequest,
51
58
  FileReadResponse,
52
- FileStatBatchRequest,
53
- FileStatBatchResponse,
59
+ FileStatRequest,
60
+ FileStatResponse,
54
61
  FileWriteRequest,
55
62
  FileWriteResponse,
56
63
  } from "./control/files.ts";
@@ -77,6 +84,7 @@ import {
77
84
  LlmUsageReadRequest,
78
85
  LlmUsageReadResponse,
79
86
  } from "./control/llm.ts";
87
+ import { InstancesFrame } from "./control/instances.ts";
80
88
  import { PeersFrame } from "./control/peers.ts";
81
89
  import {
82
90
  SandboxGrantRequest,
@@ -91,12 +99,12 @@ import {
91
99
  SessionDumpWriteResponse,
92
100
  SessionEnvReadRequest,
93
101
  SessionEnvReadResponse,
94
- SessionForkOriginRequest,
95
- SessionForkOriginResponse,
102
+ SessionForkOriginReadRequest,
103
+ SessionForkOriginReadResponse,
96
104
  SessionKillRequest,
97
105
  SessionKillResponse,
98
- SessionLastLiveRemoveRequest,
99
- SessionLastLiveRemoveResponse,
106
+ SessionForgetRequest,
107
+ SessionForgetResponse,
100
108
  SessionRenameRequest,
101
109
  SessionRenameResponse,
102
110
  SessionSearchRequest,
@@ -114,8 +122,8 @@ import { TranslateRunRequest, TranslateRunResponse } from "./control/translate.t
114
122
  import { InboxFrame, MessageSendRequest, MessageSendResponse } from "./messaging/message.ts";
115
123
  import { NotifyFrame, NotifySendRequest, NotifySendResponse } from "./messaging/notify.ts";
116
124
  import {
117
- SayMarkReadRequest,
118
- SayMarkReadResponse,
125
+ SayUnreadClearRequest,
126
+ SayUnreadClearResponse,
119
127
  SayPostRequest,
120
128
  SayPostResponse,
121
129
  } from "./messaging/say.ts";
@@ -131,65 +139,70 @@ export interface OpSchemas {
131
139
  * what it takes and what it answers. The two are checked against each other:
132
140
  * an op in one and not the other is a hole in the contract, not a stage of it. */
133
141
  export const OP_SCHEMAS: Record<OpName, OpSchemas> = {
134
- hello: { request: HelloRequest, response: HelloResponse },
135
- instance_ping: { request: InstancePingRequest, response: InstancePingResponse },
136
- instance_shutdown: { request: InstanceShutdownRequest, response: InstanceShutdownResponse },
137
- session_stopping: { request: SessionStoppingRequest, response: SessionStoppingResponse },
138
- topic_subscribe: { request: TopicSubscribeRequest, response: TopicSubscribeResponse },
139
- topic_unsubscribe: { request: TopicUnsubscribeRequest, response: TopicUnsubscribeResponse },
140
- auth_challenge: { request: AuthChallengeRequest, response: AuthChallengeResponse },
141
- auth_register: { request: AuthRegisterRequest, response: AuthRegisterResponse },
142
- auth_assert: { request: AuthAssertRequest, response: AuthAssertResponse },
143
- auth_refresh_token: { request: AuthRefreshTokenRequest, response: AuthRefreshTokenResponse },
144
- auth_refresh: { request: AuthRefreshRequest, response: AuthRefreshResponse },
145
- auth_resolve: { request: AuthResolveRequest, response: AuthResolveResponse },
146
- auth_rotate: { request: AuthRotateRequest, response: AuthRotateResponse },
147
- message_send: { request: MessageSendRequest, response: MessageSendResponse },
148
- say_post: { request: SayPostRequest, response: SayPostResponse },
149
- say_mark_read: { request: SayMarkReadRequest, response: SayMarkReadResponse },
150
- notify_send: { request: NotifySendRequest, response: NotifySendResponse },
142
+ "hello.session": { request: HelloSessionRequest, response: HelloSessionResponse },
143
+ "hello.user": { request: HelloUserRequest, response: HelloUserResponse },
144
+ "hello.instance": { request: HelloInstanceRequest, response: HelloInstanceResponse },
145
+ "instance.ping": { request: InstancePingRequest, response: InstancePingResponse },
146
+ "instance.shutdown": { request: InstanceShutdownRequest, response: InstanceShutdownResponse },
147
+ "session.stopping": { request: SessionStoppingRequest, response: SessionStoppingResponse },
148
+ "topic.subscribe": { request: TopicSubscribeRequest, response: TopicSubscribeResponse },
149
+ "topic.unsubscribe": { request: TopicUnsubscribeRequest, response: TopicUnsubscribeResponse },
150
+ "auth.challenge": { request: AuthChallengeRequest, response: AuthChallengeResponse },
151
+ "auth.register": { request: AuthRegisterRequest, response: AuthRegisterResponse },
152
+ "auth.assert": { request: AuthAssertRequest, response: AuthAssertResponse },
153
+ "auth.token.refresh": { request: AuthTokenRefreshRequest, response: AuthTokenRefreshResponse },
154
+ "auth.extend": { request: AuthExtendRequest, response: AuthExtendResponse },
155
+ "auth.resolve": { request: AuthResolveRequest, response: AuthResolveResponse },
156
+ "auth.rotate": { request: AuthRotateRequest, response: AuthRotateResponse },
157
+ "message.send": { request: MessageSendRequest, response: MessageSendResponse },
158
+ "say.post": { request: SayPostRequest, response: SayPostResponse },
159
+ "say.unread.clear": { request: SayUnreadClearRequest, response: SayUnreadClearResponse },
160
+ "notify.send": { request: NotifySendRequest, response: NotifySendResponse },
151
161
 
152
- session_kill: { request: SessionKillRequest, response: SessionKillResponse },
153
- session_rename: { request: SessionRenameRequest, response: SessionRenameResponse },
154
- session_env_read: { request: SessionEnvReadRequest, response: SessionEnvReadResponse },
155
- session_search: { request: SessionSearchRequest, response: SessionSearchResponse },
156
- session_dump_write: { request: SessionDumpWriteRequest, response: SessionDumpWriteResponse },
157
- dump_presets_read: { request: DumpPresetsReadRequest, response: DumpPresetsReadResponse },
158
- transcript_read: { request: TranscriptReadRequest, response: TranscriptReadResponse },
159
- transcript_items_read: {
162
+ "session.kill": { request: SessionKillRequest, response: SessionKillResponse },
163
+ "session.rename": { request: SessionRenameRequest, response: SessionRenameResponse },
164
+ "session.env.read": { request: SessionEnvReadRequest, response: SessionEnvReadResponse },
165
+ "session.search": { request: SessionSearchRequest, response: SessionSearchResponse },
166
+ "session.dump.write": { request: SessionDumpWriteRequest, response: SessionDumpWriteResponse },
167
+ "dump.presets.read": { request: DumpPresetsReadRequest, response: DumpPresetsReadResponse },
168
+ "transcript.read": { request: TranscriptReadRequest, response: TranscriptReadResponse },
169
+ "transcript.items.read": {
160
170
  request: TranscriptItemsReadRequest,
161
171
  response: TranscriptItemsReadResponse,
162
172
  },
163
- session_fork_origin: { request: SessionForkOriginRequest, response: SessionForkOriginResponse },
164
- session_last_live_remove: {
165
- request: SessionLastLiveRemoveRequest,
166
- response: SessionLastLiveRemoveResponse,
173
+ "session.fork.origin.read": {
174
+ request: SessionForkOriginReadRequest,
175
+ response: SessionForkOriginReadResponse,
176
+ },
177
+ "session.forget": {
178
+ request: SessionForgetRequest,
179
+ response: SessionForgetResponse,
167
180
  },
168
181
 
169
- dir_list: { request: DirListRequest, response: DirListResponse },
170
- file_read: { request: FileReadRequest, response: FileReadResponse },
171
- file_write: { request: FileWriteRequest, response: FileWriteResponse },
172
- file_create: { request: FileCreateRequest, response: FileCreateResponse },
173
- file_edit: { request: FileEditRequest, response: FileEditResponse },
174
- file_delete: { request: FileDeleteRequest, response: FileDeleteResponse },
175
- file_find: { request: FileFindRequest, response: FileFindResponse },
176
- file_stat_batch: { request: FileStatBatchRequest, response: FileStatBatchResponse },
177
- dir_tree: { request: DirTreeRequest, response: DirTreeResponse },
182
+ "dir.list": { request: DirListRequest, response: DirListResponse },
183
+ "file.read": { request: FileReadRequest, response: FileReadResponse },
184
+ "file.write": { request: FileWriteRequest, response: FileWriteResponse },
185
+ "file.create": { request: FileCreateRequest, response: FileCreateResponse },
186
+ "file.edit": { request: FileEditRequest, response: FileEditResponse },
187
+ "file.delete": { request: FileDeleteRequest, response: FileDeleteResponse },
188
+ "file.find": { request: FileFindRequest, response: FileFindResponse },
189
+ "file.stat": { request: FileStatRequest, response: FileStatResponse },
190
+ "dir.tree": { request: DirTreeRequest, response: DirTreeResponse },
178
191
 
179
- launcher_config_read: {
192
+ "launcher.config.read": {
180
193
  request: LauncherConfigReadRequest,
181
194
  response: LauncherConfigReadResponse,
182
195
  },
183
- launcher_run: { request: LauncherRunRequest, response: LauncherRunResponse },
184
- sandbox_grant: { request: SandboxGrantRequest, response: SandboxGrantResponse },
185
- sandbox_revoke: { request: SandboxRevokeRequest, response: SandboxRevokeResponse },
186
- translate_run: { request: TranslateRunRequest, response: TranslateRunResponse },
187
- llm_usage_read: { request: LlmUsageReadRequest, response: LlmUsageReadResponse },
188
- llm_stats_read: { request: LlmStatsReadRequest, response: LlmStatsReadResponse },
196
+ "launcher.run": { request: LauncherRunRequest, response: LauncherRunResponse },
197
+ "sandbox.grant": { request: SandboxGrantRequest, response: SandboxGrantResponse },
198
+ "sandbox.revoke": { request: SandboxRevokeRequest, response: SandboxRevokeResponse },
199
+ "translate.run": { request: TranslateRunRequest, response: TranslateRunResponse },
200
+ "llm.usage.read": { request: LlmUsageReadRequest, response: LlmUsageReadResponse },
201
+ "llm.stats.read": { request: LlmStatsReadRequest, response: LlmStatsReadResponse },
189
202
 
190
- kv_read: { request: KvReadRequest, response: KvReadResponse },
191
- kv_write: { request: KvWriteRequest, response: KvWriteResponse },
192
- kv_delete: { request: KvDeleteRequest, response: KvDeleteResponse },
203
+ "kv.read": { request: KvReadRequest, response: KvReadResponse },
204
+ "kv.write": { request: KvWriteRequest, response: KvWriteResponse },
205
+ "kv.delete": { request: KvDeleteRequest, response: KvDeleteResponse },
193
206
  };
194
207
 
195
208
  /** The frame schema for every topic.
@@ -201,15 +214,16 @@ export const TOPIC_SCHEMAS = {
201
214
  inbox: InboxFrame,
202
215
  notify: NotifyFrame,
203
216
  peers: PeersFrame,
217
+ instances: InstancesFrame,
204
218
  agents: AgentsFrame,
205
- session_status: SessionStatusFrame,
219
+ "session.status": SessionStatusFrame,
206
220
  transcript: TranscriptFrame,
207
- transcript_items: TranscriptItemsFrame,
208
- session_errors: SessionErrorsFrame,
209
- llm_requests: LlmRequestsFrame,
210
- llm_status: LlmStatusFrame,
221
+ "transcript.items": TranscriptItemsFrame,
222
+ "session.errors": SessionErrorsFrame,
223
+ "llm.requests": LlmRequestsFrame,
224
+ "llm.status": LlmStatusFrame,
211
225
  kv: KvFrame,
212
- auth_records: AuthRecordsFrame,
226
+ "auth.records": AuthRecordsFrame,
213
227
  } as const;
214
228
 
215
229
  const compiled = new WeakMap<TSchema, TypeCheck<TSchema>>();
@@ -3,7 +3,8 @@ import { Type } from "@sinclair/typebox";
3
3
  /** The fields that describe where a session lives and what it runs as.
4
4
  *
5
5
  * Stated once and referenced wherever a session is described: the session names
6
- * them itself in `hello`, and the instance repeats them on the `peers` topic
6
+ * them itself in `hello.session`, and the instance repeats them on the `peers`
7
+ * topic
7
8
  * for connected and last-known sessions alike. Which of them are required
8
9
  * differs by place — a greeting may leave any of them unsaid — so each place
9
10
  * wraps what it needs in `Type.Optional`, but the name and the type of a field