@moxt-ai/mobius-sdk 0.0.101 → 0.0.102

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 (103) hide show
  1. package/dist/client.d.ts +1 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +1 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/platform.d.ts +2 -2
  10. package/dist/platform.d.ts.map +1 -1
  11. package/dist/platform.js +2 -2
  12. package/dist/platform.js.map +1 -1
  13. package/dist/project-authentication.js +1 -1
  14. package/dist/project-authentication.js.map +1 -1
  15. package/dist/protocol/codecs/messages.d.ts +32 -0
  16. package/dist/protocol/codecs/messages.d.ts.map +1 -0
  17. package/dist/protocol/codecs/messages.js +249 -0
  18. package/dist/protocol/codecs/messages.js.map +1 -0
  19. package/dist/protocol/control-messages.d.ts +964 -0
  20. package/dist/protocol/control-messages.d.ts.map +1 -0
  21. package/dist/protocol/control-messages.js +754 -0
  22. package/dist/protocol/control-messages.js.map +1 -0
  23. package/dist/protocol/conversation-title.d.ts +2 -0
  24. package/dist/protocol/conversation-title.d.ts.map +1 -0
  25. package/dist/protocol/conversation-title.js +28 -0
  26. package/dist/protocol/conversation-title.js.map +1 -0
  27. package/dist/protocol/daemon-transport.d.ts +3979 -0
  28. package/dist/protocol/daemon-transport.d.ts.map +1 -0
  29. package/dist/protocol/daemon-transport.js +94 -0
  30. package/dist/protocol/daemon-transport.js.map +1 -0
  31. package/dist/protocol/identifier.d.ts +7 -0
  32. package/dist/protocol/identifier.d.ts.map +1 -0
  33. package/dist/protocol/identifier.js +11 -0
  34. package/dist/protocol/identifier.js.map +1 -0
  35. package/dist/protocol/index.d.ts +18 -0
  36. package/dist/protocol/index.d.ts.map +1 -0
  37. package/dist/protocol/index.js +18 -0
  38. package/dist/protocol/index.js.map +1 -0
  39. package/dist/protocol/messages.d.ts +67 -0
  40. package/dist/protocol/messages.d.ts.map +1 -0
  41. package/dist/protocol/messages.js +16 -0
  42. package/dist/protocol/messages.js.map +1 -0
  43. package/dist/protocol/mobius-api.d.ts +10 -0
  44. package/dist/protocol/mobius-api.d.ts.map +1 -0
  45. package/dist/protocol/mobius-api.js +23 -0
  46. package/dist/protocol/mobius-api.js.map +1 -0
  47. package/dist/protocol/native-sessions.d.ts +401 -0
  48. package/dist/protocol/native-sessions.d.ts.map +1 -0
  49. package/dist/protocol/native-sessions.js +154 -0
  50. package/dist/protocol/native-sessions.js.map +1 -0
  51. package/dist/protocol/project-location.d.ts +16 -0
  52. package/dist/protocol/project-location.d.ts.map +1 -0
  53. package/dist/protocol/project-location.js +6 -0
  54. package/dist/protocol/project-location.js.map +1 -0
  55. package/dist/protocol/prompt-usage.d.ts +76 -0
  56. package/dist/protocol/prompt-usage.d.ts.map +1 -0
  57. package/dist/protocol/prompt-usage.js +88 -0
  58. package/dist/protocol/prompt-usage.js.map +1 -0
  59. package/dist/protocol/resource-model.d.ts +339 -0
  60. package/dist/protocol/resource-model.d.ts.map +1 -0
  61. package/dist/protocol/resource-model.js +161 -0
  62. package/dist/protocol/resource-model.js.map +1 -0
  63. package/dist/protocol/runtime-diagnostics.d.ts +19 -0
  64. package/dist/protocol/runtime-diagnostics.d.ts.map +1 -0
  65. package/dist/protocol/runtime-diagnostics.js +24 -0
  66. package/dist/protocol/runtime-diagnostics.js.map +1 -0
  67. package/dist/protocol/runtime-upgrade.d.ts +29 -0
  68. package/dist/protocol/runtime-upgrade.d.ts.map +1 -0
  69. package/dist/protocol/runtime-upgrade.js +38 -0
  70. package/dist/protocol/runtime-upgrade.js.map +1 -0
  71. package/dist/protocol/session-access.d.ts +21 -0
  72. package/dist/protocol/session-access.d.ts.map +1 -0
  73. package/dist/protocol/session-access.js +108 -0
  74. package/dist/protocol/session-access.js.map +1 -0
  75. package/dist/protocol/session-event-log.d.ts +13542 -0
  76. package/dist/protocol/session-event-log.d.ts.map +1 -0
  77. package/dist/protocol/session-event-log.js +584 -0
  78. package/dist/protocol/session-event-log.js.map +1 -0
  79. package/dist/protocol/session-history.d.ts +2907 -0
  80. package/dist/protocol/session-history.d.ts.map +1 -0
  81. package/dist/protocol/session-history.js +58 -0
  82. package/dist/protocol/session-history.js.map +1 -0
  83. package/dist/protocol/session-recording.d.ts +5640 -0
  84. package/dist/protocol/session-recording.d.ts.map +1 -0
  85. package/dist/protocol/session-recording.js +365 -0
  86. package/dist/protocol/session-recording.js.map +1 -0
  87. package/dist/public-request.js +1 -1
  88. package/dist/public-request.js.map +1 -1
  89. package/dist/resources.d.ts +1 -1
  90. package/dist/resources.d.ts.map +1 -1
  91. package/dist/resources.js +1 -1
  92. package/dist/resources.js.map +1 -1
  93. package/dist/server.d.ts +2 -2
  94. package/dist/server.d.ts.map +1 -1
  95. package/dist/server.js +1 -1
  96. package/dist/server.js.map +1 -1
  97. package/dist/service-client.d.ts +1 -1
  98. package/dist/service-client.d.ts.map +1 -1
  99. package/dist/service-client.js +1 -1
  100. package/dist/service-client.js.map +1 -1
  101. package/dist/transport/ws-transport.js +1 -1
  102. package/dist/transport/ws-transport.js.map +1 -1
  103. package/package.json +8 -3
@@ -0,0 +1,249 @@
1
+ import { decodePromptImagesValue, decodePromptResourcesValue, decodeSessionConfigurationSelections, } from "../control-messages.js";
2
+ import { decodeIdentifier, isIdentifier } from "../identifier.js";
3
+ import { RUNTIME_HEARTBEAT_ACK_KIND, RUNTIME_HEARTBEAT_KIND, RUNTIME_LIVENESS_READY_KIND, RUNTIME_PING_KIND, RUNTIME_PONG_KIND, RUNTIME_STATUS_KIND, SESSION_CANCEL_KIND, SESSION_PROMPT_DISPOSITION_KIND, SESSION_PROMPT_KIND, SessionPromptDisposition, } from "../messages.js";
4
+ const DIRECTORY_IDENTIFIER_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,2047}$/;
5
+ const MAX_PROMPT_LENGTH = 100_000;
6
+ export const MAX_PROMPT_ATTACHMENT_LENGTH = 6_000_000;
7
+ export class ProtocolMessageError extends Error {
8
+ code = "invalid_protocol_message";
9
+ constructor(message, options = {}) {
10
+ super(message, options);
11
+ this.name = "ProtocolMessageError";
12
+ }
13
+ }
14
+ export class UnsupportedProtocolMessageKindError extends Error {
15
+ code = "unsupported_protocol_message_kind";
16
+ direction;
17
+ messageKind;
18
+ constructor(direction, messageKind) {
19
+ super(`Unsupported ${direction} message kind: ${messageKind}`);
20
+ this.name = "UnsupportedProtocolMessageKindError";
21
+ this.direction = direction;
22
+ this.messageKind = messageKind;
23
+ }
24
+ }
25
+ function isRecord(value) {
26
+ return typeof value === "object" && value !== null && !Array.isArray(value);
27
+ }
28
+ function parseJson(encoded) {
29
+ let value;
30
+ try {
31
+ value = JSON.parse(encoded);
32
+ }
33
+ catch (error) {
34
+ throw new ProtocolMessageError("Message is not valid JSON", {
35
+ cause: error,
36
+ });
37
+ }
38
+ if (!isRecord(value)) {
39
+ throw new ProtocolMessageError("Message must be a JSON object");
40
+ }
41
+ return value;
42
+ }
43
+ function readString(value, key, maximumLength) {
44
+ const field = value[key];
45
+ if (typeof field !== "string" || field.length === 0 || field.length > maximumLength) {
46
+ throw new ProtocolMessageError(`Invalid string field: ${key}`);
47
+ }
48
+ return field;
49
+ }
50
+ function readText(value, key, maximumLength) {
51
+ const field = value[key];
52
+ if (typeof field !== "string" || field.length > maximumLength) {
53
+ throw new ProtocolMessageError(`Invalid text field: ${key}`);
54
+ }
55
+ return field;
56
+ }
57
+ function readPromptDisposition(value) {
58
+ const field = value["disposition"];
59
+ if (field === undefined || field === SessionPromptDisposition.Reject) {
60
+ return SessionPromptDisposition.Reject;
61
+ }
62
+ if (field === SessionPromptDisposition.Queue) {
63
+ return SessionPromptDisposition.Queue;
64
+ }
65
+ if (field === SessionPromptDisposition.Steer) {
66
+ return SessionPromptDisposition.Steer;
67
+ }
68
+ throw new ProtocolMessageError("Invalid value field: disposition");
69
+ }
70
+ function readDirectoryIdentifiers(value, key, maximumCount) {
71
+ const field = value[key];
72
+ if (!Array.isArray(field) || field.length > maximumCount) {
73
+ throw new ProtocolMessageError(`Invalid directory list field: ${key}`);
74
+ }
75
+ const identifiers = [];
76
+ const unique = new Set();
77
+ for (const candidate of field) {
78
+ if (typeof candidate !== "string" || !DIRECTORY_IDENTIFIER_PATTERN.test(candidate) || unique.has(candidate)) {
79
+ throw new ProtocolMessageError(`Invalid directory in field: ${key}`);
80
+ }
81
+ unique.add(candidate);
82
+ identifiers.push(candidate);
83
+ }
84
+ return identifiers;
85
+ }
86
+ function readIdentifier(value, key) {
87
+ try {
88
+ return decodeIdentifier(value[key]);
89
+ }
90
+ catch (cause) {
91
+ throw new ProtocolMessageError(`Invalid identifier field: ${key}`, { cause });
92
+ }
93
+ }
94
+ function readDirectoryIdentifier(value, key) {
95
+ const field = readString(value, key, 2_048);
96
+ if (!DIRECTORY_IDENTIFIER_PATTERN.test(field)) {
97
+ throw new ProtocolMessageError(`Invalid directory identifier field: ${key}`);
98
+ }
99
+ return field;
100
+ }
101
+ function readBoolean(value, key) {
102
+ const field = value[key];
103
+ if (typeof field !== "boolean") {
104
+ throw new ProtocolMessageError(`Invalid boolean field: ${key}`);
105
+ }
106
+ return field;
107
+ }
108
+ function assertKind(value, expectedKind) {
109
+ if (value["kind"] !== expectedKind) {
110
+ throw new ProtocolMessageError(`Expected message kind: ${expectedKind}`);
111
+ }
112
+ }
113
+ export function decodeMessageKind(encoded) {
114
+ return readString(parseJson(encoded), "kind", 64);
115
+ }
116
+ export function decodeSessionPromptCommand(encoded) {
117
+ const value = parseJson(encoded);
118
+ const hasSessionConfigurations = Object.hasOwn(value, "sessionConfigurations");
119
+ assertKind(value, SESSION_PROMPT_KIND);
120
+ const prompt = readText(value, "prompt", MAX_PROMPT_LENGTH);
121
+ const images = decodePromptImagesValue(value["images"]);
122
+ const resources = decodePromptResourcesValue(value["resources"]);
123
+ const attachmentLength = images.reduce((total, image) => total + image.data.length, 0) +
124
+ resources.reduce((total, resource) => total + resource.text.length, 0);
125
+ if (attachmentLength > MAX_PROMPT_ATTACHMENT_LENGTH) {
126
+ throw new ProtocolMessageError("Prompt attachments are too large");
127
+ }
128
+ if (prompt.trim().length === 0 && images.length === 0 && resources.length === 0) {
129
+ throw new ProtocolMessageError("Prompt must contain content");
130
+ }
131
+ const disposition = readPromptDisposition(value);
132
+ const rawTargetCommandId = value["targetCommandId"];
133
+ const targetCommandId = rawTargetCommandId === undefined ? "" : readText(value, "targetCommandId", 128);
134
+ if ((disposition === SessionPromptDisposition.Reject && targetCommandId.length > 0) ||
135
+ (disposition !== SessionPromptDisposition.Reject && !isIdentifier(targetCommandId))) {
136
+ throw new ProtocolMessageError("Prompt disposition has an invalid target command");
137
+ }
138
+ const sessionConfigurations = hasSessionConfigurations
139
+ ? decodeSessionConfigurationSelections(value["sessionConfigurations"])
140
+ : [];
141
+ if (new Set(sessionConfigurations.map((selection) => selection.configId)).size !== sessionConfigurations.length) {
142
+ throw new ProtocolMessageError("Session configuration identifiers must be unique");
143
+ }
144
+ return {
145
+ additionalDirectoryIds: readDirectoryIdentifiers(value, "additionalDirectoryIds", 16),
146
+ agentId: readIdentifier(value, "agentId"),
147
+ bindingId: readIdentifier(value, "bindingId"),
148
+ commandId: readIdentifier(value, "commandId"),
149
+ directoryId: readDirectoryIdentifier(value, "directoryId"),
150
+ disposition,
151
+ images,
152
+ kind: SESSION_PROMPT_KIND,
153
+ prompt,
154
+ resources,
155
+ ...(hasSessionConfigurations ? { sessionConfigurations } : {}),
156
+ sessionId: readIdentifier(value, "sessionId"),
157
+ targetCommandId,
158
+ };
159
+ }
160
+ export function decodeSessionCancelCommand(encoded) {
161
+ const value = parseJson(encoded);
162
+ assertKind(value, SESSION_CANCEL_KIND);
163
+ return {
164
+ commandId: readIdentifier(value, "commandId"),
165
+ kind: SESSION_CANCEL_KIND,
166
+ sessionId: readIdentifier(value, "sessionId"),
167
+ };
168
+ }
169
+ export function decodeSessionPromptDispositionCommand(encoded) {
170
+ const value = parseJson(encoded);
171
+ assertKind(value, SESSION_PROMPT_DISPOSITION_KIND);
172
+ if (readPromptDisposition(value) !== SessionPromptDisposition.Steer) {
173
+ throw new ProtocolMessageError("Only queued prompts can be steered");
174
+ }
175
+ return {
176
+ commandId: readIdentifier(value, "commandId"),
177
+ disposition: SessionPromptDisposition.Steer,
178
+ kind: SESSION_PROMPT_DISPOSITION_KIND,
179
+ sessionId: readIdentifier(value, "sessionId"),
180
+ };
181
+ }
182
+ export function decodeRuntimeStatusEvent(encoded) {
183
+ const value = parseJson(encoded);
184
+ assertKind(value, RUNTIME_STATUS_KIND);
185
+ return {
186
+ kind: RUNTIME_STATUS_KIND,
187
+ online: readBoolean(value, "online"),
188
+ runtimeId: readIdentifier(value, "runtimeId"),
189
+ };
190
+ }
191
+ export function decodeRuntimeLivenessReadyEvent(encoded) {
192
+ const value = parseJson(encoded);
193
+ assertKind(value, RUNTIME_LIVENESS_READY_KIND);
194
+ return { kind: RUNTIME_LIVENESS_READY_KIND };
195
+ }
196
+ export function decodeRuntimeHeartbeatEvent(encoded) {
197
+ const value = parseJson(encoded);
198
+ assertKind(value, RUNTIME_HEARTBEAT_KIND);
199
+ return {
200
+ heartbeatId: readIdentifier(value, "heartbeatId"),
201
+ kind: RUNTIME_HEARTBEAT_KIND,
202
+ };
203
+ }
204
+ export function decodeRuntimeHeartbeatAckEvent(encoded) {
205
+ const value = parseJson(encoded);
206
+ assertKind(value, RUNTIME_HEARTBEAT_ACK_KIND);
207
+ return {
208
+ heartbeatId: readIdentifier(value, "heartbeatId"),
209
+ kind: RUNTIME_HEARTBEAT_ACK_KIND,
210
+ };
211
+ }
212
+ export function decodeRuntimePingCommand(encoded) {
213
+ const value = parseJson(encoded);
214
+ assertKind(value, RUNTIME_PING_KIND);
215
+ return { kind: RUNTIME_PING_KIND, requestId: readIdentifier(value, "requestId") };
216
+ }
217
+ export function decodeRuntimePongEvent(encoded) {
218
+ const value = parseJson(encoded);
219
+ assertKind(value, RUNTIME_PONG_KIND);
220
+ return { kind: RUNTIME_PONG_KIND, requestId: readIdentifier(value, "requestId") };
221
+ }
222
+ export function encodeSessionPromptCommand(message) {
223
+ return JSON.stringify(decodeSessionPromptCommand(JSON.stringify(message)));
224
+ }
225
+ export function encodeSessionCancelCommand(message) {
226
+ return JSON.stringify(decodeSessionCancelCommand(JSON.stringify(message)));
227
+ }
228
+ export function encodeSessionPromptDispositionCommand(message) {
229
+ return JSON.stringify(decodeSessionPromptDispositionCommand(JSON.stringify(message)));
230
+ }
231
+ export function encodeRuntimeStatusEvent(message) {
232
+ return JSON.stringify(decodeRuntimeStatusEvent(JSON.stringify(message)));
233
+ }
234
+ export function encodeRuntimeLivenessReadyEvent(message) {
235
+ return JSON.stringify(decodeRuntimeLivenessReadyEvent(JSON.stringify(message)));
236
+ }
237
+ export function encodeRuntimeHeartbeatEvent(message) {
238
+ return JSON.stringify(decodeRuntimeHeartbeatEvent(JSON.stringify(message)));
239
+ }
240
+ export function encodeRuntimeHeartbeatAckEvent(message) {
241
+ return JSON.stringify(decodeRuntimeHeartbeatAckEvent(JSON.stringify(message)));
242
+ }
243
+ export function encodeRuntimePingCommand(message) {
244
+ return JSON.stringify(decodeRuntimePingCommand(JSON.stringify(message)));
245
+ }
246
+ export function encodeRuntimePongEvent(message) {
247
+ return JSON.stringify(decodeRuntimePongEvent(JSON.stringify(message)));
248
+ }
249
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/protocol/codecs/messages.ts"],"names":[],"mappings":"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"}