@ccmsg/protocol 1.20.0 → 1.22.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/README.md +2 -2
- package/package.json +1 -1
- package/src/attributes.ts +77 -52
- package/src/common/auth.ts +28 -28
- package/src/common/hello.ts +72 -34
- package/src/common/ping.ts +2 -2
- package/src/common/shutdown.ts +4 -4
- package/src/common/topics.ts +24 -19
- package/src/control/dump.ts +73 -66
- package/src/control/files.ts +24 -24
- package/src/control/kv.ts +6 -6
- package/src/control/launcher.ts +4 -4
- package/src/control/llm.ts +8 -8
- package/src/control/sandbox.ts +4 -4
- package/src/control/session-errors.ts +3 -3
- package/src/control/session-status.ts +2 -2
- package/src/control/session.ts +36 -35
- package/src/control/transcript.ts +6 -6
- package/src/control/translate.ts +2 -2
- package/src/envelope.ts +2 -2
- package/src/errors.ts +1 -1
- package/src/fixtures/common.ts +45 -32
- package/src/fixtures/control.ts +67 -67
- package/src/fixtures/index.ts +77 -63
- package/src/fixtures/messaging.ts +9 -9
- package/src/fixtures/topics.ts +9 -9
- package/src/identifiers.ts +8 -6
- package/src/messaging/message.ts +3 -3
- package/src/messaging/notify.ts +3 -3
- package/src/messaging/say.ts +9 -9
- package/src/schemas.ts +79 -67
- package/src/session-meta.ts +2 -1
package/src/schemas.ts
CHANGED
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
AuthChallengeRequest,
|
|
8
8
|
AuthChallengeResponse,
|
|
9
9
|
AuthRecordsFrame,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 {
|
|
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
|
-
|
|
53
|
-
|
|
59
|
+
FileStatRequest,
|
|
60
|
+
FileStatResponse,
|
|
54
61
|
FileWriteRequest,
|
|
55
62
|
FileWriteResponse,
|
|
56
63
|
} from "./control/files.ts";
|
|
@@ -92,12 +99,12 @@ import {
|
|
|
92
99
|
SessionDumpWriteResponse,
|
|
93
100
|
SessionEnvReadRequest,
|
|
94
101
|
SessionEnvReadResponse,
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
SessionForkOriginReadRequest,
|
|
103
|
+
SessionForkOriginReadResponse,
|
|
97
104
|
SessionKillRequest,
|
|
98
105
|
SessionKillResponse,
|
|
99
|
-
|
|
100
|
-
|
|
106
|
+
SessionForgetRequest,
|
|
107
|
+
SessionForgetResponse,
|
|
101
108
|
SessionRenameRequest,
|
|
102
109
|
SessionRenameResponse,
|
|
103
110
|
SessionSearchRequest,
|
|
@@ -115,8 +122,8 @@ import { TranslateRunRequest, TranslateRunResponse } from "./control/translate.t
|
|
|
115
122
|
import { InboxFrame, MessageSendRequest, MessageSendResponse } from "./messaging/message.ts";
|
|
116
123
|
import { NotifyFrame, NotifySendRequest, NotifySendResponse } from "./messaging/notify.ts";
|
|
117
124
|
import {
|
|
118
|
-
|
|
119
|
-
|
|
125
|
+
SayUnreadClearRequest,
|
|
126
|
+
SayUnreadClearResponse,
|
|
120
127
|
SayPostRequest,
|
|
121
128
|
SayPostResponse,
|
|
122
129
|
} from "./messaging/say.ts";
|
|
@@ -132,65 +139,70 @@ export interface OpSchemas {
|
|
|
132
139
|
* what it takes and what it answers. The two are checked against each other:
|
|
133
140
|
* an op in one and not the other is a hole in the contract, not a stage of it. */
|
|
134
141
|
export const OP_SCHEMAS: Record<OpName, OpSchemas> = {
|
|
135
|
-
hello: { request:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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 },
|
|
152
161
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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": {
|
|
161
170
|
request: TranscriptItemsReadRequest,
|
|
162
171
|
response: TranscriptItemsReadResponse,
|
|
163
172
|
},
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
173
|
+
"session.fork.origin.read": {
|
|
174
|
+
request: SessionForkOriginReadRequest,
|
|
175
|
+
response: SessionForkOriginReadResponse,
|
|
176
|
+
},
|
|
177
|
+
"session.forget": {
|
|
178
|
+
request: SessionForgetRequest,
|
|
179
|
+
response: SessionForgetResponse,
|
|
168
180
|
},
|
|
169
181
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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 },
|
|
179
191
|
|
|
180
|
-
|
|
192
|
+
"launcher.config.read": {
|
|
181
193
|
request: LauncherConfigReadRequest,
|
|
182
194
|
response: LauncherConfigReadResponse,
|
|
183
195
|
},
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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 },
|
|
190
202
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
203
|
+
"kv.read": { request: KvReadRequest, response: KvReadResponse },
|
|
204
|
+
"kv.write": { request: KvWriteRequest, response: KvWriteResponse },
|
|
205
|
+
"kv.delete": { request: KvDeleteRequest, response: KvDeleteResponse },
|
|
194
206
|
};
|
|
195
207
|
|
|
196
208
|
/** The frame schema for every topic.
|
|
@@ -204,14 +216,14 @@ export const TOPIC_SCHEMAS = {
|
|
|
204
216
|
peers: PeersFrame,
|
|
205
217
|
instances: InstancesFrame,
|
|
206
218
|
agents: AgentsFrame,
|
|
207
|
-
|
|
219
|
+
"session.status": SessionStatusFrame,
|
|
208
220
|
transcript: TranscriptFrame,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
221
|
+
"transcript.items": TranscriptItemsFrame,
|
|
222
|
+
"session.errors": SessionErrorsFrame,
|
|
223
|
+
"llm.requests": LlmRequestsFrame,
|
|
224
|
+
"llm.status": LlmStatusFrame,
|
|
213
225
|
kv: KvFrame,
|
|
214
|
-
|
|
226
|
+
"auth.records": AuthRecordsFrame,
|
|
215
227
|
} as const;
|
|
216
228
|
|
|
217
229
|
const compiled = new WeakMap<TSchema, TypeCheck<TSchema>>();
|
package/src/session-meta.ts
CHANGED
|
@@ -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`
|
|
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
|