@mochabug/adapt-web 0.0.26 → 0.0.28
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/dist/cjs/genproto/buf/validate/validate_pb.js +58 -119
- package/dist/cjs/genproto/buf/validate/validate_pb.js.map +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/automations/v1/automations_pb.js +13 -7
- package/dist/cjs/genproto/mochabugapis/adapt/automations/v1/automations_pb.js.map +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_binding_pb.js +1 -2
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_binding_pb.js.map +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js.map +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/file_pb.js +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js +10 -5
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js.map +1 -1
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js +15 -19
- package/dist/cjs/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js.map +1 -1
- package/dist/cjs/index.js +160 -64
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/genproto/buf/validate/validate_pb.js +58 -119
- package/dist/esm/genproto/buf/validate/validate_pb.js.map +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/automations/v1/automations_pb.js +14 -8
- package/dist/esm/genproto/mochabugapis/adapt/automations/v1/automations_pb.js.map +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_binding_pb.js +1 -2
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_binding_pb.js.map +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.js.map +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/graph/vertex_metadata_pb.js +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/file_pb.js +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/plugins/v1/oauth2_service_pb.js +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js +9 -4
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.js.map +1 -1
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js +14 -18
- package/dist/esm/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.js.map +1 -1
- package/dist/esm/index.js +159 -60
- package/dist/esm/index.js.map +1 -1
- package/dist/types/genproto/buf/validate/validate_pb.d.ts +184 -219
- package/dist/types/genproto/mochabugapis/adapt/automations/v1/automations_pb.d.ts +150 -108
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_binding_pb.d.ts +4 -5
- package/dist/types/genproto/mochabugapis/adapt/graph/signal_descriptor_pb.d.ts +4 -2
- package/dist/types/genproto/mochabugapis/adapt/runtime/v1/incoming_pb.d.ts +60 -39
- package/dist/types/genproto/mochabugapis/adapt/runtime/v1/runtime_pb.d.ts +85 -139
- package/dist/types/index.d.ts +14 -7
- package/package.json +4 -4
package/dist/esm/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { fromBinary, toJson } from "@bufbuild/protobuf";
|
|
2
|
-
import { timestampDate
|
|
3
|
-
import
|
|
2
|
+
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
3
|
+
import { connect, credsAuthenticator, } from "nats.ws";
|
|
4
4
|
import { OutputSchema, SessionSchema, UrlSchema, } from "./genproto/mochabugapis/adapt/automations/v1/automations_pb.js";
|
|
5
|
-
const
|
|
5
|
+
const natsUrl = "wss://adapt-dev.mochabugapis.com:443/pubsub";
|
|
6
6
|
const baseUrl = "https://adapt-dev.mochabugapis.com/v1/automations";
|
|
7
7
|
export async function startSession(req, token) {
|
|
8
8
|
const headers = new Headers({
|
|
@@ -96,77 +96,176 @@ export class RestClientError extends Error {
|
|
|
96
96
|
this.response = response;
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
export class
|
|
100
|
-
constructor(
|
|
101
|
-
this.
|
|
102
|
-
this.
|
|
99
|
+
export class PubsubClient {
|
|
100
|
+
constructor() {
|
|
101
|
+
this.nc = null;
|
|
102
|
+
this.subscriptions = [];
|
|
103
|
+
this.subject = null;
|
|
104
|
+
this.outputHandler = null;
|
|
105
|
+
this.sessionHandler = null;
|
|
106
|
+
this.urlHandler = null;
|
|
103
107
|
this.subscribe = this.subscribe.bind(this);
|
|
104
108
|
this.unsubscribe = this.unsubscribe.bind(this);
|
|
105
109
|
}
|
|
106
110
|
async subscribe(opts) {
|
|
107
111
|
this.unsubscribe();
|
|
108
|
-
this.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
this.subject = opts.subject;
|
|
113
|
+
// Missing: Assign the handlers from options
|
|
114
|
+
this.outputHandler = opts.onOutput || null;
|
|
115
|
+
this.sessionHandler = opts.onSession || null;
|
|
116
|
+
this.urlHandler = opts.onUrl || null;
|
|
117
|
+
// Connect to NATS
|
|
118
|
+
this.nc = await connect({
|
|
119
|
+
servers: [natsUrl],
|
|
120
|
+
authenticator: credsAuthenticator(opts.credentials),
|
|
121
|
+
reconnect: true,
|
|
122
|
+
noEcho: true,
|
|
123
|
+
maxReconnectAttempts: -1, // Infinite reconnect attempts
|
|
124
|
+
reconnectTimeWait: 1000,
|
|
125
|
+
pingInterval: 10 * 1000, // 10 seconds
|
|
119
126
|
});
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
// Set up connection event handlers
|
|
128
|
+
(async () => {
|
|
129
|
+
for await (const status of this.nc.status()) {
|
|
130
|
+
switch (status.type) {
|
|
131
|
+
case "disconnect":
|
|
132
|
+
console.warn("[PubSub] ⚠ Disconnected", {
|
|
133
|
+
data: status.data,
|
|
134
|
+
});
|
|
135
|
+
break;
|
|
136
|
+
case "reconnect":
|
|
137
|
+
console.info("[PubSub] ↻ Reconnected");
|
|
138
|
+
try {
|
|
139
|
+
await this.resubscribe();
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.error("[PubSub] Failed to resubscribe after reconnection:", error);
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
case "error":
|
|
146
|
+
console.error("[PubSub] Connection error:", status.data);
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
132
149
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
150
|
+
})().catch((error) => {
|
|
151
|
+
console.error("[PubSub] Fatal status handler error:", error);
|
|
152
|
+
});
|
|
153
|
+
await this.createSubscriptions();
|
|
154
|
+
}
|
|
155
|
+
async createSubscriptions() {
|
|
156
|
+
if (!this.nc || !this.subject) {
|
|
157
|
+
console.warn("[PubSub] Cannot create subscriptions - missing requirements");
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Clear existing subscriptions
|
|
161
|
+
await this.clearSubscriptions();
|
|
162
|
+
try {
|
|
163
|
+
// Subscribe to sync messages
|
|
164
|
+
const sub = this.nc.subscribe(this.subject);
|
|
165
|
+
this.subscriptions.push(sub);
|
|
166
|
+
(async () => {
|
|
167
|
+
for await (const msg of sub) {
|
|
168
|
+
const action = msg.subject.split(".").pop();
|
|
169
|
+
console.info("[PubSub] ↓ message received:", action);
|
|
170
|
+
try {
|
|
171
|
+
switch (action) {
|
|
172
|
+
case "output": {
|
|
173
|
+
if (this.outputHandler) {
|
|
174
|
+
const output = fromBinary(OutputSchema, msg.data);
|
|
175
|
+
this.outputHandler({
|
|
176
|
+
vertex: output.vertex,
|
|
177
|
+
fork: output.fork,
|
|
178
|
+
data: Object.fromEntries(Object.entries(output.data).map(([key, value]) => [
|
|
179
|
+
key,
|
|
180
|
+
JSON.parse(new TextDecoder().decode(value)),
|
|
181
|
+
])),
|
|
182
|
+
created: timestampDate(output.created),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case "session": {
|
|
188
|
+
if (this.sessionHandler) {
|
|
189
|
+
const session = fromBinary(SessionSchema, msg.data);
|
|
190
|
+
this.sessionHandler(toJson(SessionSchema, session));
|
|
191
|
+
}
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
case "url": {
|
|
195
|
+
if (this.urlHandler) {
|
|
196
|
+
const url = fromBinary(UrlSchema, msg.data);
|
|
197
|
+
this.urlHandler(toJson(UrlSchema, url));
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
console.error("[PubSub] Error handling sync message:", error);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
})().catch((error) => {
|
|
208
|
+
console.error("[PubSub] Sync subscription crashed:", error);
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
console.error("[PubSub] Failed to create subscriptions:", error);
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async clearSubscriptions() {
|
|
217
|
+
const subCount = this.subscriptions.length;
|
|
218
|
+
if (subCount > 0) {
|
|
219
|
+
// Only drain if connection is still open
|
|
220
|
+
if (this.nc && !this.nc.isClosed()) {
|
|
221
|
+
for (const sub of this.subscriptions) {
|
|
222
|
+
try {
|
|
223
|
+
await sub.drain();
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.warn("[PubSub] Error draining subscription:", error);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
143
229
|
}
|
|
144
230
|
else {
|
|
145
|
-
console.
|
|
231
|
+
console.info("[PubSub] Skipping drain - connection closed");
|
|
146
232
|
}
|
|
147
|
-
|
|
148
|
-
const baseTopic = `org/${opts.automation.organization}/ag/${opts.automation.group}/aut/${opts.automation.automation}/session/${opts.session}`;
|
|
149
|
-
const options = {
|
|
150
|
-
qos: 1,
|
|
151
|
-
nl: true,
|
|
152
|
-
rh: 0,
|
|
153
|
-
rap: false,
|
|
154
|
-
};
|
|
155
|
-
const subs = [];
|
|
156
|
-
if (opts.onSession) {
|
|
157
|
-
subs.push(this.mqttClient.subscribeAsync(`${baseTopic}/session`, options));
|
|
158
|
-
}
|
|
159
|
-
if (opts.onUrl) {
|
|
160
|
-
subs.push(this.mqttClient.subscribeAsync(`${baseTopic}/url`, options));
|
|
233
|
+
this.subscriptions = [];
|
|
161
234
|
}
|
|
162
|
-
|
|
163
|
-
|
|
235
|
+
}
|
|
236
|
+
async resubscribe() {
|
|
237
|
+
if (this.outputHandler || this.sessionHandler || this.urlHandler) {
|
|
238
|
+
try {
|
|
239
|
+
await this.createSubscriptions();
|
|
240
|
+
console.info("[PubSub] ✓ Resubscribed");
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
console.error("[PubSub] Resubscription failed:", error);
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
164
246
|
}
|
|
165
|
-
await Promise.all(subs);
|
|
166
247
|
}
|
|
167
248
|
async unsubscribe() {
|
|
168
|
-
|
|
169
|
-
|
|
249
|
+
await this.clearSubscriptions();
|
|
250
|
+
this.outputHandler = null;
|
|
251
|
+
this.sessionHandler = null;
|
|
252
|
+
this.urlHandler = null;
|
|
253
|
+
this.subject = null;
|
|
254
|
+
console.info("[PubSub] Unsubscribed");
|
|
255
|
+
if (this.nc) {
|
|
256
|
+
try {
|
|
257
|
+
await this.nc.close();
|
|
258
|
+
console.info("[PubSub] Connection closed");
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
console.error("[PubSub] Error closing connection:", error);
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
this.nc = null;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
console.warn("[PubSub] No active connection to close");
|
|
170
269
|
}
|
|
171
270
|
}
|
|
172
271
|
}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|