@cursor/july 0.1.3 → 0.1.5
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/bin/agent-serve.d.ts +1 -1
- package/dist/bin/agent-serve.js +40 -16
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.d.ts.map +1 -1
- package/dist/channels/slack/log.js +4 -5
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/socket-mode.d.ts.map +1 -1
- package/dist/channels/slack/socket-mode.js +10 -9
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.BR0RbIdx.js → app.DabPG-io.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.QwK5BtEH.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.qjsVTneI.js → VPLocalSearchBox.jmyr0bU0.js} +1 -1
- package/dist/docs/assets/chunks/{theme.2Kg8jIp_.js → theme.DysN9-VN.js} +2 -2
- package/dist/docs/assets/{index.md.m81y7TY7.js → index.md.Cylk70gg.js} +1 -1
- package/dist/docs/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +3 -3
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +5 -5
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +3 -3
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +3 -3
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/ab-collector.js +3 -3
- package/dist/internal/ab-fold.js +1 -1
- package/dist/internal/cli-ax.d.ts +13 -5
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +41 -15
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +5 -2
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cursor/account-mcp.js +3 -3
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/credentials.d.ts +5 -3
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +9 -6
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor-event-relay.d.ts +4 -1
- package/dist/internal/cursor-event-relay.d.ts.map +1 -1
- package/dist/internal/cursor-event-relay.js +7 -1
- package/dist/internal/cursor-relay-core.d.ts +37 -2
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/cursor-relay-core.js +91 -9
- package/dist/internal/cursor-slack-relay.d.ts +2 -2
- package/dist/internal/cursor-slack-relay.d.ts.map +1 -1
- package/dist/internal/cursor-slack-relay.js +5 -1
- package/dist/internal/distribution.d.ts +7 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +7 -0
- package/dist/internal/docs-site.js +3 -3
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/mcp-endpoint.d.ts.map +1 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +11 -11
- package/dist/internal/resolve-prod-target.d.ts +2 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +44 -21
- package/dist/internal/resolved-connections.js +5 -5
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/server.js +14 -14
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +13 -13
- package/dist/internal/sessions-client.d.ts +13 -0
- package/dist/internal/sessions-client.d.ts.map +1 -1
- package/dist/internal/sessions-client.js +25 -0
- package/dist/internal/storage-coordinator.js +6 -6
- package/dist/internal/update-check.d.ts +93 -0
- package/dist/internal/update-check.d.ts.map +1 -0
- package/dist/internal/update-check.js +431 -0
- package/dist/playground/assets/{index-D-vo2lV_.css → index-BEauYlII.css} +1 -1
- package/dist/playground/assets/index-BtM0wEGg.js +319 -0
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +0 -1
- package/package.json +2 -1
- package/skills/setup-slack/SKILL.md +1 -1
- package/src/bin/agent-serve.ts +42 -16
- package/src/channels/slack/log.ts +5 -5
- package/src/channels/slack/setup.ts +1 -1
- package/src/channels/slack/socket-mode.ts +11 -9
- package/src/internal/ab-collector.ts +3 -3
- package/src/internal/ab-fold.ts +1 -1
- package/src/internal/cli-ax.ts +55 -16
- package/src/internal/cli-deploy.ts +5 -2
- package/src/internal/cli-github.ts +13 -15
- package/src/internal/cursor/account-mcp.ts +3 -3
- package/src/internal/cursor/backend-client.ts +1 -1
- package/src/internal/cursor/credentials.ts +12 -7
- package/src/internal/cursor/github-credentials.ts +3 -3
- package/src/internal/cursor-event-relay.ts +11 -2
- package/src/internal/cursor-relay-core.ts +119 -11
- package/src/internal/cursor-slack-relay.ts +7 -3
- package/src/internal/distribution.ts +8 -0
- package/src/internal/docs-site.ts +3 -3
- package/src/internal/eval-run-store.ts +8 -10
- package/src/internal/github-fanout.ts +2 -2
- package/src/internal/host-platforms.ts +5 -5
- package/src/internal/mcp-endpoint.ts +1 -3
- package/src/internal/playground/toolchain.ts +6 -6
- package/src/internal/reminder-runner.ts +11 -17
- package/src/internal/resolve-prod-target.ts +55 -23
- package/src/internal/resolved-connections.ts +5 -5
- package/src/internal/schedule-runner.ts +1 -1
- package/src/internal/server.ts +14 -14
- package/src/internal/session-engine.ts +13 -15
- package/src/internal/sessions-client.ts +34 -0
- package/src/internal/storage-coordinator.ts +6 -6
- package/src/internal/update-check.ts +552 -0
- package/src/types.ts +3 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +0 -1
- package/dist/playground/assets/index-x60b9q2j.js +0 -312
- /package/dist/docs/assets/{index.md.m81y7TY7.lean.js → index.md.Cylk70gg.lean.js} +0 -0
|
@@ -19,6 +19,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
19
|
import { randomUUID } from "node:crypto";
|
|
20
20
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
21
21
|
import { join } from "node:path";
|
|
22
|
+
import { LOG_PREFIX } from "./distribution.js";
|
|
22
23
|
const OFFSET_SNAPSHOT_VERSION = 1;
|
|
23
24
|
const DEFAULT_POLL_WAIT_MS = 25000;
|
|
24
25
|
const DEFAULT_POLL_LIMIT = 100;
|
|
@@ -28,6 +29,11 @@ const DEFAULT_IDLE_POLL_DELAY_MS = 250;
|
|
|
28
29
|
const MIN_BACKOFF_MS = 1000;
|
|
29
30
|
const MAX_BACKOFF_MS = 30000;
|
|
30
31
|
const AUTH_FAILURE_BACKOFF_MS = 60000;
|
|
32
|
+
/** Attempts per event before the offset advances past it. */
|
|
33
|
+
const DISPATCH_ATTEMPTS = 3;
|
|
34
|
+
const DISPATCH_RETRY_DELAYS_MS = [250, 1000];
|
|
35
|
+
/** Budget for the best-effort deregistration PUT during stop(). */
|
|
36
|
+
const DEREGISTER_TIMEOUT_MS = 1500;
|
|
31
37
|
/** Durable offset snapshot under `<stateDir>/offset.json`. */
|
|
32
38
|
export class RelayOffsetStore {
|
|
33
39
|
constructor(stateDir) {
|
|
@@ -92,6 +98,8 @@ export class CursorRelayCore {
|
|
|
92
98
|
this.options = options;
|
|
93
99
|
this.running = false;
|
|
94
100
|
this.consumerId = "";
|
|
101
|
+
/** Whether any registration succeeded (gates the stop-time deregister). */
|
|
102
|
+
this.registeredOnce = false;
|
|
95
103
|
this.offsetStore = new RelayOffsetStore(options.stateDir);
|
|
96
104
|
this.fetchImpl = (_a = options.fetchImpl) !== null && _a !== void 0 ? _a : fetch;
|
|
97
105
|
}
|
|
@@ -115,7 +123,7 @@ export class CursorRelayCore {
|
|
|
115
123
|
if (!registered)
|
|
116
124
|
return;
|
|
117
125
|
this.registerTimer = setInterval(() => {
|
|
118
|
-
|
|
126
|
+
this.heartbeatPromise = this.registerOnce();
|
|
119
127
|
}, DEFAULT_REGISTER_INTERVAL_MS);
|
|
120
128
|
(_b = (_a = this.registerTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
121
129
|
yield this.consumeLoop();
|
|
@@ -159,7 +167,7 @@ export class CursorRelayCore {
|
|
|
159
167
|
}
|
|
160
168
|
stop() {
|
|
161
169
|
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
-
var _a, _b;
|
|
170
|
+
var _a, _b, _c;
|
|
163
171
|
if (!this.running)
|
|
164
172
|
return;
|
|
165
173
|
this.running = false;
|
|
@@ -179,10 +187,59 @@ export class CursorRelayCore {
|
|
|
179
187
|
(_a = timer.unref) === null || _a === void 0 ? void 0 : _a.call(timer);
|
|
180
188
|
}),
|
|
181
189
|
]);
|
|
190
|
+
// A heartbeat re-registration may be in flight (its fetch was just
|
|
191
|
+
// aborted); let it settle so it cannot land after the deregistration.
|
|
192
|
+
yield (_c = this.heartbeatPromise) === null || _c === void 0 ? void 0 : _c.catch(() => { });
|
|
193
|
+
yield this.deregister();
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Best-effort empty-scope PUT on clean stop, so this consumer's
|
|
198
|
+
* registration is dropped immediately instead of lingering until its
|
|
199
|
+
* server-side TTL. A ghost registration keeps this host's agent names
|
|
200
|
+
* live and makes name routing ambiguous for a redeployed sibling with a
|
|
201
|
+
* fresh consumer id. Failures only log — the TTL still cleans up.
|
|
202
|
+
*/
|
|
203
|
+
deregister() {
|
|
204
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
var _a;
|
|
206
|
+
const adapter = this.options.adapter;
|
|
207
|
+
if (adapter.buildDeregistrationBody === undefined ||
|
|
208
|
+
!this.registeredOnce ||
|
|
209
|
+
this.consumerId === "") {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const url = `${this.options.baseUrl.replace(/\/+$/, "")}${adapter.subscribePath}`;
|
|
213
|
+
const controller = new AbortController();
|
|
214
|
+
const timer = setTimeout(() => controller.abort(), DEREGISTER_TIMEOUT_MS);
|
|
215
|
+
(_a = timer.unref) === null || _a === void 0 ? void 0 : _a.call(timer);
|
|
216
|
+
try {
|
|
217
|
+
const response = yield this.fetchImpl(url, {
|
|
218
|
+
method: "PUT",
|
|
219
|
+
headers: {
|
|
220
|
+
authorization: `Bearer ${this.options.apiKey}`,
|
|
221
|
+
"content-type": "application/json",
|
|
222
|
+
},
|
|
223
|
+
body: JSON.stringify(adapter.buildDeregistrationBody(this.consumerId)),
|
|
224
|
+
signal: controller.signal,
|
|
225
|
+
});
|
|
226
|
+
if (response.ok) {
|
|
227
|
+
this.log("deregistered on shutdown");
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.log(`deregistration failed: ${response.status} (registration lapses by TTL)`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
this.log(`deregistration failed: ${describeRelayError(error)} (registration lapses by TTL)`);
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
clearTimeout(timer);
|
|
238
|
+
}
|
|
182
239
|
});
|
|
183
240
|
}
|
|
184
241
|
log(line) {
|
|
185
|
-
this.options.logger(
|
|
242
|
+
this.options.logger(`${LOG_PREFIX} ${this.options.adapter.logPrefix}: ${line}`);
|
|
186
243
|
}
|
|
187
244
|
request(method, path, body) {
|
|
188
245
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -224,6 +281,7 @@ export class CursorRelayCore {
|
|
|
224
281
|
}
|
|
225
282
|
const json = (yield response.json());
|
|
226
283
|
this.logRegistrationOutcome(this.options.adapter.applyRegistrationResponse(json));
|
|
284
|
+
this.registeredOnce = true;
|
|
227
285
|
return true;
|
|
228
286
|
}
|
|
229
287
|
catch (error) {
|
|
@@ -297,12 +355,7 @@ export class CursorRelayCore {
|
|
|
297
355
|
if (compareStreamOffsets(event.offset, offset) <= 0)
|
|
298
356
|
continue;
|
|
299
357
|
if (this.options.adapter.shouldDispatch(event)) {
|
|
300
|
-
|
|
301
|
-
yield this.options.adapter.dispatch(event);
|
|
302
|
-
}
|
|
303
|
-
catch (error) {
|
|
304
|
-
this.log(`dispatch failed at offset ${event.offset}: ${describeRelayError(error)}`);
|
|
305
|
-
}
|
|
358
|
+
yield this.dispatchWithRetry(event);
|
|
306
359
|
}
|
|
307
360
|
offset = event.offset;
|
|
308
361
|
}
|
|
@@ -327,6 +380,35 @@ export class CursorRelayCore {
|
|
|
327
380
|
}
|
|
328
381
|
});
|
|
329
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Dispatch one event with a small bounded retry before the offset advances
|
|
385
|
+
* past it. Transient local failures (e.g. a connection reset while POSTing
|
|
386
|
+
* to the channel) used to drop the event outright; a poison event still
|
|
387
|
+
* only costs {@link DISPATCH_ATTEMPTS} tries and is then skipped, keeping
|
|
388
|
+
* at-least-once semantics without a retry loop.
|
|
389
|
+
*/
|
|
390
|
+
dispatchWithRetry(event) {
|
|
391
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
392
|
+
for (let attempt = 1; attempt <= DISPATCH_ATTEMPTS; attempt++) {
|
|
393
|
+
if (attempt > 1 && !this.running) {
|
|
394
|
+
this.log(`dispatch abandoned at offset ${event.offset}: relay stopping`);
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
try {
|
|
398
|
+
yield this.options.adapter.dispatch(event);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
if (attempt === DISPATCH_ATTEMPTS) {
|
|
403
|
+
this.log(`dispatch failed at offset ${event.offset} after ${attempt} attempts: ${describeRelayError(error)}`);
|
|
404
|
+
return;
|
|
405
|
+
}
|
|
406
|
+
this.log(`dispatch attempt ${attempt} failed at offset ${event.offset}: ${describeRelayError(error)}; retrying`);
|
|
407
|
+
yield this.sleep(DISPATCH_RETRY_DELAYS_MS[Math.min(attempt - 1, DISPATCH_RETRY_DELAYS_MS.length - 1)]);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
});
|
|
411
|
+
}
|
|
330
412
|
/** Log the failure, sleep, and return the backoff for the NEXT failure. */
|
|
331
413
|
backoffAfterHttpFailure(response, backoffMs) {
|
|
332
414
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -27,8 +27,8 @@ export interface CursorSlackRelayOptions {
|
|
|
27
27
|
agents: readonly CursorSlackAgentRegistration[];
|
|
28
28
|
stateDir: string;
|
|
29
29
|
/**
|
|
30
|
-
* Called for each event addressed to this consumer's agents; failures
|
|
31
|
-
*
|
|
30
|
+
* Called for each event addressed to this consumer's agents; failures
|
|
31
|
+
* retry a bounded number of times, then log and skip.
|
|
32
32
|
*/
|
|
33
33
|
dispatch: (envelope: CursorSlackRelayEvent) => Promise<void>;
|
|
34
34
|
logger: (line: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-slack-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-slack-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO/E,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,kFAAkF;AAClF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,CACF,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0CpC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAUf,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,UAAU,CAAM;IAExB,YAA6B,OAAO,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"cursor-slack-relay.d.ts","sourceRoot":"","sources":["../../src/internal/cursor-slack-relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAO/E,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,kFAAkF;AAClF,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,CACF,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0CpC;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAUf,OAAO,CAAC,QAAQ,CAAC,OAAO;IATpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,UAAU,CAAM;IAExB,YAA6B,OAAO,EAAE,uBAAuB,EAqE5D;IAED;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGzC;IAED;;;OAGG;IACH,OAAO,CAAC,cAAc;IAOtB,KAAK,IAAI,IAAI,CAEZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;CACF"}
|
|
@@ -68,7 +68,7 @@ export function createCursorSlackApiCaller(args) {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
catch (error) {
|
|
71
|
-
(_a = args.logger) === null || _a === void 0 ? void 0 : _a.call(args, `[
|
|
71
|
+
(_a = args.logger) === null || _a === void 0 ? void 0 : _a.call(args, `[agentkit] cursor-slack: ${method} proxy call failed: ${describeRelayError(error)}`);
|
|
72
72
|
return { ok: false, error: "cursor_backend_unreachable" };
|
|
73
73
|
}
|
|
74
74
|
});
|
|
@@ -106,6 +106,10 @@ export class CursorSlackRelay {
|
|
|
106
106
|
})),
|
|
107
107
|
};
|
|
108
108
|
},
|
|
109
|
+
// Empty agents drop this consumer's registration on clean stop, so a
|
|
110
|
+
// redeployed sibling's identical agent names never tie with this
|
|
111
|
+
// host's ghost until the server-side TTL lapses.
|
|
112
|
+
buildDeregistrationBody: (consumerId) => ({ consumerId, agents: [] }),
|
|
109
113
|
applyRegistrationResponse: (json) => {
|
|
110
114
|
var _a, _b, _c;
|
|
111
115
|
const result = json;
|
|
@@ -17,6 +17,13 @@ export declare const LEGACY_PACKAGE_NAME = "@anysphere/agent-serve";
|
|
|
17
17
|
* as PACKAGE_NAME so the eventual rename keeps authored imports working.
|
|
18
18
|
*/
|
|
19
19
|
export declare const AGENTKIT_PACKAGE_NAME = "@cursor/agentkit";
|
|
20
|
+
/**
|
|
21
|
+
* Bracketed product tag for stderr / ServeOptions.logger lines
|
|
22
|
+
* (`[agentkit] …`, `[agentkit/slack] …`).
|
|
23
|
+
*/
|
|
24
|
+
export declare const LOG_PRODUCT = "agentkit";
|
|
25
|
+
export declare const LOG_PREFIX: string;
|
|
26
|
+
export declare const SLACK_LOG_PREFIX: string;
|
|
20
27
|
/**
|
|
21
28
|
* Command name this CLI was invoked as. Both bins point at the same entry;
|
|
22
29
|
* keep help text and hints copy-pasteable for whichever the user typed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,qEAAqE;AACrE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAezC,CAAC"}
|
|
1
|
+
{"version":3,"file":"distribution.d.ts","sourceRoot":"","sources":["../../src/internal/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,qEAAqE;AACrE,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,WAAW,aAAa,CAAC;AACtC,eAAO,MAAM,UAAU,EAAE,MAA2B,CAAC;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAiC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA+B,CAAC;AAc/D;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAOvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAezC,CAAC"}
|
|
@@ -20,6 +20,13 @@ export const LEGACY_PACKAGE_NAME = "@anysphere/agent-serve";
|
|
|
20
20
|
* as PACKAGE_NAME so the eventual rename keeps authored imports working.
|
|
21
21
|
*/
|
|
22
22
|
export const AGENTKIT_PACKAGE_NAME = "@cursor/agentkit";
|
|
23
|
+
/**
|
|
24
|
+
* Bracketed product tag for stderr / ServeOptions.logger lines
|
|
25
|
+
* (`[agentkit] …`, `[agentkit/slack] …`).
|
|
26
|
+
*/
|
|
27
|
+
export const LOG_PRODUCT = "agentkit";
|
|
28
|
+
export const LOG_PREFIX = `[${LOG_PRODUCT}]`;
|
|
29
|
+
export const SLACK_LOG_PREFIX = `[${LOG_PRODUCT}/slack]`;
|
|
23
30
|
/**
|
|
24
31
|
* Command name this CLI was invoked as. Both bins point at the same entry;
|
|
25
32
|
* keep help text and hints copy-pasteable for whichever the user typed.
|
|
@@ -100,10 +100,10 @@ export function ensureDocsSiteBundle() {
|
|
|
100
100
|
}
|
|
101
101
|
const toolchain = resolveDocsToolchain();
|
|
102
102
|
if (toolchain === undefined) {
|
|
103
|
-
logger("[
|
|
103
|
+
logger("[agentkit] docs site missing and vitepress toolchain unavailable; /docs will show a build hint");
|
|
104
104
|
return;
|
|
105
105
|
}
|
|
106
|
-
logger("[
|
|
106
|
+
logger("[agentkit] building docs site (vitepress)...");
|
|
107
107
|
const code = yield new Promise((resolve, reject) => {
|
|
108
108
|
const child = spawn(process.execPath, [toolchain.vitepressCli, "build", "docs"], { cwd: toolchain.packageRoot, env: process.env, stdio: "inherit" });
|
|
109
109
|
child.on("error", reject);
|
|
@@ -115,7 +115,7 @@ export function ensureDocsSiteBundle() {
|
|
|
115
115
|
if (!docsSiteExists()) {
|
|
116
116
|
throw new Error("docs vitepress build finished but dist/docs/index.html is missing");
|
|
117
117
|
}
|
|
118
|
-
logger("[
|
|
118
|
+
logger("[agentkit] docs site build complete");
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
/** True when docs sources + a resolvable `vitepress` CLI are present. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AASrB,YAAY,EACV,eAAe,EACf,iBAAiB,IAAI,cAAc,EACnC,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAOF,qBAAa,YAAY;IAWrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAhBvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;IAClE,wEAAwE;IACxE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,YACmB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAC/C;;;OAGG;IACc,mBAAmB,CAAC,EAAE,kBAAkB,YAAA,EACvD;IAEJ,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAMhB,IAAI,IAAI,OAAO,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC,CAiBD;IAEK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAG7D;IAED,+EAA+E;IACzE,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAG3C;IAED;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,IAAI,EAAE,eAAe,EAAE,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAOD;IAED,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,KAAK,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+DnE;IAED,OAAO,CAAC,UAAU;IAMlB;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;YAEa,sBAAsB;YAkDtB,YAAY;IAe1B;;;;OAIG;IACH,OAAO,CAAC,cAAc;YAgBR,WAAW;YAcX,aAAa;
|
|
1
|
+
{"version":3,"file":"eval-run-store.d.ts","sourceRoot":"","sources":["../../src/internal/eval-run-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,aAAa,CAAC;AASrB,YAAY,EACV,eAAe,EACf,iBAAiB,IAAI,cAAc,EACnC,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAOF,qBAAa,YAAY;IAWrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAhBvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;IAClE,wEAAwE;IACxE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,YACmB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAC/C;;;OAGG;IACc,mBAAmB,CAAC,EAAE,kBAAkB,YAAA,EACvD;IAEJ,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAMhB,IAAI,IAAI,OAAO,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC,CAiBD;IAEK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAG7D;IAED,+EAA+E;IACzE,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAG3C;IAED;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAClC,IAAI,EAAE,eAAe,EAAE,CAAC;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAOD;IAED,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAEK,KAAK,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+DnE;IAED,OAAO,CAAC,UAAU;IAMlB;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7B;YAEa,sBAAsB;YAkDtB,YAAY;IAe1B;;;;OAIG;IACH,OAAO,CAAC,cAAc;YAgBR,WAAW;YAcX,aAAa;YAeb,OAAO;IAoGrB,OAAO,CAAC,eAAe;CAqCxB;AAwDD,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAxC,YAAqB,WAAW,EAAE,MAAM,EAGvC;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,cAGC;CACF"}
|
|
@@ -120,7 +120,7 @@ export class EvalRunStore {
|
|
|
120
120
|
this.activeRunId = runId;
|
|
121
121
|
yield this.pruneOldRuns(config);
|
|
122
122
|
yield this.enqueuePersist(snapshot, this.resolvePersist(config));
|
|
123
|
-
this.logger(`[
|
|
123
|
+
this.logger(`[agentkit] eval run ${runId}: starting ${cases.length} case(s)`);
|
|
124
124
|
void this.execute(runId, Object.assign(Object.assign({ baseUrl: loopbackUrl, evals: selected, config }, (input.bearerToken === undefined
|
|
125
125
|
? {}
|
|
126
126
|
: { bearerToken: input.bearerToken })), (input.verbose === undefined ? {} : { verbose: input.verbose })));
|
|
@@ -159,7 +159,7 @@ export class EvalRunStore {
|
|
|
159
159
|
}
|
|
160
160
|
const loaded = yield persist.load({ projectRoot: this.projectRoot });
|
|
161
161
|
if (!Array.isArray(loaded)) {
|
|
162
|
-
this.logger("[
|
|
162
|
+
this.logger("[agentkit] eval persistRuns.load() did not return an array; ignoring");
|
|
163
163
|
this.hydrated = true;
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
@@ -182,11 +182,11 @@ export class EvalRunStore {
|
|
|
182
182
|
yield this.enqueuePersist(run, persist);
|
|
183
183
|
}
|
|
184
184
|
yield this.pruneOldRuns(config);
|
|
185
|
-
this.logger(`[
|
|
185
|
+
this.logger(`[agentkit] hydrated ${this.runs.size} playground eval run(s) from persistRuns`);
|
|
186
186
|
}
|
|
187
187
|
catch (error) {
|
|
188
188
|
const message = error instanceof Error ? error.message : String(error);
|
|
189
|
-
this.logger(`[
|
|
189
|
+
this.logger(`[agentkit] failed to hydrate playground eval runs: ${message}`);
|
|
190
190
|
}
|
|
191
191
|
finally {
|
|
192
192
|
this.hydrated = true;
|
|
@@ -234,7 +234,7 @@ export class EvalRunStore {
|
|
|
234
234
|
}
|
|
235
235
|
catch (error) {
|
|
236
236
|
const message = error instanceof Error ? error.message : String(error);
|
|
237
|
-
this.logger(`[
|
|
237
|
+
this.logger(`[agentkit] persistRuns.save(${run.runId}) failed: ${message}`);
|
|
238
238
|
}
|
|
239
239
|
});
|
|
240
240
|
}
|
|
@@ -248,7 +248,7 @@ export class EvalRunStore {
|
|
|
248
248
|
}
|
|
249
249
|
catch (error) {
|
|
250
250
|
const message = error instanceof Error ? error.message : String(error);
|
|
251
|
-
this.logger(`[
|
|
251
|
+
this.logger(`[agentkit] persistRuns.delete(${runId}) failed: ${message}`);
|
|
252
252
|
}
|
|
253
253
|
});
|
|
254
254
|
}
|
|
@@ -312,7 +312,7 @@ export class EvalRunStore {
|
|
|
312
312
|
run.status = "completed";
|
|
313
313
|
run.finishedAt = new Date().toISOString();
|
|
314
314
|
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
315
|
-
this.logger(`[
|
|
315
|
+
this.logger(`[agentkit] eval run ${runId}: done — ${run.summary.passed} passed, ${run.summary.failed} failed`);
|
|
316
316
|
}
|
|
317
317
|
catch (error) {
|
|
318
318
|
const run = this.runs.get(runId);
|
|
@@ -323,7 +323,7 @@ export class EvalRunStore {
|
|
|
323
323
|
run.finishedAt = new Date().toISOString();
|
|
324
324
|
run.error = error instanceof Error ? error.message : String(error);
|
|
325
325
|
yield this.enqueuePersist(run, this.resolvePersist(opts.config));
|
|
326
|
-
this.logger(`[
|
|
326
|
+
this.logger(`[agentkit] eval run ${runId}: failed — ${run.error}`);
|
|
327
327
|
}
|
|
328
328
|
finally {
|
|
329
329
|
if (this.activeRunId === runId) {
|
|
@@ -105,13 +105,13 @@ export function fanoutDelivery(body_1, headers_1, targets_1) {
|
|
|
105
105
|
body: payload,
|
|
106
106
|
});
|
|
107
107
|
if (!response.ok) {
|
|
108
|
-
log(`[
|
|
108
|
+
log(`[agentkit] delivery to ${label} failed: HTTP ${response.status}\n`);
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
delivered.push(label);
|
|
112
112
|
}
|
|
113
113
|
catch (error) {
|
|
114
|
-
log(`[
|
|
114
|
+
log(`[agentkit] delivery to ${label} failed: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
115
115
|
}
|
|
116
116
|
})));
|
|
117
117
|
if (recipients.length > 0 && delivered.length === 0) {
|
|
@@ -81,7 +81,7 @@ export function warmupHostGitHubAuth(options) {
|
|
|
81
81
|
var _a;
|
|
82
82
|
const source = (_a = options.authSource) !== null && _a !== void 0 ? _a : (yield resolveHostGitHubAuthSource());
|
|
83
83
|
if (source === "unavailable") {
|
|
84
|
-
options.logger("[
|
|
84
|
+
options.logger("[agentkit] GitHub auth: unavailable (set GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY + GITHUB_APP_INSTALLATION_ID, or GITHUB_TOKEN / GH_TOKEN, or run `gh auth login`)");
|
|
85
85
|
return source;
|
|
86
86
|
}
|
|
87
87
|
let exportedGhToken = false;
|
|
@@ -90,7 +90,7 @@ export function warmupHostGitHubAuth(options) {
|
|
|
90
90
|
exportedGhToken = yield ensureGhCliTokenEnv();
|
|
91
91
|
}
|
|
92
92
|
catch (error) {
|
|
93
|
-
options.logger(`[
|
|
93
|
+
options.logger(`[agentkit] GitHub auth: failed to export GH_TOKEN for gh CLI: ${error instanceof Error ? error.message : String(error)}`);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
const label = source === "cursor-account"
|
|
@@ -103,15 +103,15 @@ export function warmupHostGitHubAuth(options) {
|
|
|
103
103
|
? "GITHUB_TOKEN/GH_TOKEN"
|
|
104
104
|
: "gh auth token";
|
|
105
105
|
if (options.github === undefined) {
|
|
106
|
-
options.logger(`[
|
|
106
|
+
options.logger(`[agentkit] GitHub auth: ${label}`);
|
|
107
107
|
return source;
|
|
108
108
|
}
|
|
109
109
|
try {
|
|
110
110
|
yield options.github.getOctokit();
|
|
111
|
-
options.logger(`[
|
|
111
|
+
options.logger(`[agentkit] GitHub auth: ${label}`);
|
|
112
112
|
}
|
|
113
113
|
catch (error) {
|
|
114
|
-
options.logger(`[
|
|
114
|
+
options.logger(`[agentkit] GitHub auth: ${label} resolved but Octokit warmup failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
115
115
|
}
|
|
116
116
|
return source;
|
|
117
117
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-endpoint.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAGZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AACvE,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAU3C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvE;AAED,yEAAyE;AACzE,UAAU,oBAAoB;IAC5B,OAAO,CAAC,SAAS,EAAE,wCAAwC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,oBAAoB,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-endpoint.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EAGZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AACvE,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAU3C,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvE;AAED,yEAAyE;AACzE,UAAU,oBAAoB;IAC5B,OAAO,CAAC,SAAS,EAAE,wCAAwC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,oBAAoB,CAAC;IACxC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyCpB;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAMpE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,GAAG,gBAAgB,CAanB"}
|
|
@@ -75,7 +75,7 @@ export function handleStatelessMcpRequest(args) {
|
|
|
75
75
|
return yield transport.handleRequest(args.request);
|
|
76
76
|
}
|
|
77
77
|
catch (error) {
|
|
78
|
-
logger(`[
|
|
78
|
+
logger(`[agentkit] ${args.label} request failed: ${describeError(error)}`);
|
|
79
79
|
return new Response(JSON.stringify({
|
|
80
80
|
jsonrpc: "2.0",
|
|
81
81
|
error: { code: -32603, message: "Internal server error." },
|
|
@@ -109,7 +109,7 @@ export function runPlaygroundBuild() {
|
|
|
109
109
|
if (toolchain === undefined) {
|
|
110
110
|
throw new Error("playground vite toolchain unavailable (need playground/ sources and the vite package)");
|
|
111
111
|
}
|
|
112
|
-
logger("[
|
|
112
|
+
logger("[agentkit] building playground (vite)...");
|
|
113
113
|
const code = yield spawnVite(toolchain, ["build", "--config", VITE_CONFIG], {
|
|
114
114
|
env: process.env,
|
|
115
115
|
});
|
|
@@ -119,7 +119,7 @@ export function runPlaygroundBuild() {
|
|
|
119
119
|
if (!playgroundBundleExists()) {
|
|
120
120
|
throw new Error("playground vite build finished but dist/playground/index.html is missing");
|
|
121
121
|
}
|
|
122
|
-
logger("[
|
|
122
|
+
logger("[agentkit] playground build complete");
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
@@ -133,7 +133,7 @@ export function ensurePlaygroundBundle() {
|
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
if (resolvePlaygroundToolchain() === undefined) {
|
|
136
|
-
logger("[
|
|
136
|
+
logger("[agentkit] playground bundle missing and vite toolchain unavailable; /playground will show a build hint");
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
139
|
yield runPlaygroundBuild(logger);
|
|
@@ -180,7 +180,7 @@ export function startPlaygroundDevServer(options) {
|
|
|
180
180
|
(_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (chunk) => {
|
|
181
181
|
const text = chunk.toString().trimEnd();
|
|
182
182
|
if (text !== "") {
|
|
183
|
-
logger(`[
|
|
183
|
+
logger(`[agentkit] playground: ${text}`);
|
|
184
184
|
}
|
|
185
185
|
});
|
|
186
186
|
let stopped = false;
|
|
@@ -188,14 +188,14 @@ export function startPlaygroundDevServer(options) {
|
|
|
188
188
|
if (stopped) {
|
|
189
189
|
return;
|
|
190
190
|
}
|
|
191
|
-
logger(`[
|
|
191
|
+
logger(`[agentkit] playground spawn failed: ${err.message} — static /playground still served when built`);
|
|
192
192
|
});
|
|
193
193
|
child.on("exit", (code, signal) => {
|
|
194
194
|
if (stopped) {
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
if (code !== 0 && code !== null) {
|
|
198
|
-
logger(`[
|
|
198
|
+
logger(`[agentkit] playground exited (code ${code}${signal ? `, signal ${signal}` : ""}) — static /playground still served when built`);
|
|
199
199
|
}
|
|
200
200
|
});
|
|
201
201
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reminder-runner.d.ts","sourceRoot":"","sources":["../../src/internal/reminder-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAEV,mBAAmB,EAGnB,YAAY,EAEb,MAAM,aAAa,CAAC;AASrB,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;IAFzC,YACE,UAAU,EAAE,MAAM,EACT,oBAAoB,EAAE,MAAM,EAAE,EAIxC;CACF;AAyDD,qBAAa,cAAc;IAUvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EAG3D;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,sEAAsE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B3B;IAED;;;OAGG;YACW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"reminder-runner.d.ts","sourceRoot":"","sources":["../../src/internal/reminder-runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAEV,mBAAmB,EAGnB,YAAY,EAEb,MAAM,aAAa,CAAC;AASrB,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,qBAAa,oBAAqB,SAAQ,KAAK;IAG3C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE;IAFzC,YACE,UAAU,EAAE,MAAM,EACT,oBAAoB,EAAE,MAAM,EAAE,EAIxC;CACF;AAyDD,qBAAa,cAAc;IAUvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EAG3D;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,sEAAsE;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B3B;IAED;;;OAGG;YACW,kBAAkB;IA6BhC,8EAA8E;YAChE,OAAO;IAKrB,IAAI,IAAI,IAAI,CAOX;IAEK,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D9D;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4B1B;IAEK,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,SAAoB,GACzB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAkBnC;IAED,iFAAiF;IAC3E,qBAAqB,CACzB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAUjB;IAED,uDAAuD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1C,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAQD;IAED,OAAO,CAAC,QAAQ;IA4ChB,OAAO,CAAC,UAAU;YAQJ,IAAI;YA6GJ,aAAa;IAY3B,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;YACW,mBAAmB;YAcnB,aAAa;YAcb,YAAY;IA0C1B,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,iBAAiB;YAeX,MAAM;YAYN,SAAS;CAoFxB;AAGD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -110,7 +110,7 @@ export class ReminderRunner {
|
|
|
110
110
|
restored += 1;
|
|
111
111
|
}
|
|
112
112
|
if (restored > 0 || disarmedOrphan > 0) {
|
|
113
|
-
this.logger(`[
|
|
113
|
+
this.logger(`[agentkit] reminders: restored ${restored} armed reminder(s)` +
|
|
114
114
|
(disarmedOrphan > 0
|
|
115
115
|
? `; disarmed ${disarmedOrphan} without live handlers`
|
|
116
116
|
: ""));
|
|
@@ -142,11 +142,11 @@ export class ReminderRunner {
|
|
|
142
142
|
}
|
|
143
143
|
catch (error) {
|
|
144
144
|
const message = error instanceof Error ? error.message : String(error);
|
|
145
|
-
this.logger(`[
|
|
145
|
+
this.logger(`[agentkit] reminders: storage hydrate failed: ${message}`);
|
|
146
146
|
return;
|
|
147
147
|
}
|
|
148
148
|
if (hydrated > 0) {
|
|
149
|
-
this.logger(`[
|
|
149
|
+
this.logger(`[agentkit] reminders: hydrated ${hydrated} reminder(s) from storage`);
|
|
150
150
|
}
|
|
151
151
|
});
|
|
152
152
|
}
|
|
@@ -302,7 +302,7 @@ export class ReminderRunner {
|
|
|
302
302
|
const delay = Math.min(MAX_TIMER_MS, Math.max(0, nextFireAtMs - Date.now()));
|
|
303
303
|
const timer = setTimeout(() => {
|
|
304
304
|
void this.fire(record.id).catch((error) => __awaiter(this, void 0, void 0, function* () {
|
|
305
|
-
this.logger(`[
|
|
305
|
+
this.logger(`[agentkit] reminder "${record.id}" fire failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
306
306
|
// Keep recurring reminders alive after unexpected throws.
|
|
307
307
|
// One-shots stay armed so a failed wake can be retried / dispatched.
|
|
308
308
|
try {
|
|
@@ -317,7 +317,7 @@ export class ReminderRunner {
|
|
|
317
317
|
yield this.afterFire(current, "skip");
|
|
318
318
|
}
|
|
319
319
|
catch (rescheduleError) {
|
|
320
|
-
this.logger(`[
|
|
320
|
+
this.logger(`[agentkit] reminder "${record.id}" reschedule after failure failed: ${rescheduleError instanceof Error
|
|
321
321
|
? rescheduleError.message
|
|
322
322
|
: String(rescheduleError)}`);
|
|
323
323
|
}
|
|
@@ -368,13 +368,13 @@ export class ReminderRunner {
|
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
catch (error) {
|
|
371
|
-
this.logger(`[
|
|
371
|
+
this.logger(`[agentkit] reminder "${id}" until() failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
if (yield this.isSessionBusy(record.channelId, record.continuationToken)) {
|
|
375
375
|
if (record.busyPolicy === "skipIfBusy") {
|
|
376
376
|
yield this.afterFire(record, "skip");
|
|
377
|
-
this.logger(`[
|
|
377
|
+
this.logger(`[agentkit] reminder "${id}" (${record.purpose}) skipped: session busy`);
|
|
378
378
|
return { outcome: "fired", reason: "skipped_busy" };
|
|
379
379
|
}
|
|
380
380
|
yield this.whenSessionIdle(record.channelId, record.continuationToken);
|
|
@@ -400,7 +400,7 @@ export class ReminderRunner {
|
|
|
400
400
|
if (result.action === "stop") {
|
|
401
401
|
if (latest !== undefined && latest.status === "armed") {
|
|
402
402
|
yield this.disarm(latest, "run_stop");
|
|
403
|
-
this.logger(`[
|
|
403
|
+
this.logger(`[agentkit] reminder "${id}" (${record.purpose}) disarmed: run_stop`);
|
|
404
404
|
return { outcome: "fired", reason: "run_stop" };
|
|
405
405
|
}
|
|
406
406
|
return {
|
|
@@ -413,11 +413,11 @@ export class ReminderRunner {
|
|
|
413
413
|
}
|
|
414
414
|
if (result.action === "skip") {
|
|
415
415
|
yield this.afterFire(latest, "skip", result.reschedule);
|
|
416
|
-
this.logger(`[
|
|
416
|
+
this.logger(`[agentkit] reminder "${id}" (${record.purpose}) skipped`);
|
|
417
417
|
return { outcome: "fired", reason: "skipped" };
|
|
418
418
|
}
|
|
419
419
|
yield this.afterFire(latest, "delivered", result.reschedule);
|
|
420
|
-
this.logger(`[
|
|
420
|
+
this.logger(`[agentkit] reminder "${id}" (${record.purpose}) delivered`);
|
|
421
421
|
return { outcome: "fired", reason: "delivered" };
|
|
422
422
|
}
|
|
423
423
|
finally {
|
|
@@ -497,7 +497,7 @@ export class ReminderRunner {
|
|
|
497
497
|
return { action: "delivered" };
|
|
498
498
|
}
|
|
499
499
|
catch (retryError) {
|
|
500
|
-
this.logger(`[
|
|
500
|
+
this.logger(`[agentkit] reminder "${record.id}" followup failed after wait: ${retryError instanceof Error
|
|
501
501
|
? retryError.message
|
|
502
502
|
: String(retryError)}`);
|
|
503
503
|
return { action: "skip" };
|
|
@@ -21,6 +21,8 @@ export interface ResolveProdTargetOptions {
|
|
|
21
21
|
apiKey?: string;
|
|
22
22
|
fetchImpl?: typeof fetch;
|
|
23
23
|
err?: (text: string) => void;
|
|
24
|
+
/** Test seam for reachability-retry backoff. */
|
|
25
|
+
sleep?: (ms: number) => Promise<void>;
|
|
24
26
|
}
|
|
25
27
|
export interface ResolvedProdTarget {
|
|
26
28
|
agentUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGrE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-prod-target.d.ts","sourceRoot":"","sources":["../../src/internal/resolve-prod-target.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGrE,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gDAAgD;IAChD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAuF7B;AAiBD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAgBT"}
|