memorix 1.8.7 → 1.8.9
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/CHANGELOG.md +26 -0
- package/README.md +9 -1
- package/README.zh-CN.md +10 -1
- package/dist/cli/index.js +466 -256
- package/dist/index.js +313 -179
- package/dist/memcode-runtime/CHANGELOG.md +26 -0
- package/dist/sdk.js +306 -172
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +4 -2
- package/docs/INTEGRATIONS.md +1 -0
- package/docs/hooks-architecture.md +18 -13
- package/llms-full.txt +3 -1
- package/llms.txt +2 -1
- package/package.json +3 -2
- package/plugins/antigravity/memorix/plugin.json +1 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +2 -2
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +2 -2
- package/plugins/codex/memorix/.codex-plugin/plugin.json +3 -3
- package/plugins/copilot/memorix/plugin.json +2 -2
- package/plugins/gemini/memorix/gemini-extension.json +1 -1
- package/plugins/hermes/memorix/plugin.yaml +1 -1
- package/plugins/omp/memorix/package.json +1 -1
- package/plugins/openclaw/memorix/.codex-plugin/plugin.json +3 -3
- package/plugins/pi/memorix/package.json +1 -1
- package/server.json +3 -3
- package/src/cli/commands/agent-integrations.ts +2 -1
- package/src/cli/commands/hooks-install.ts +2 -0
- package/src/cli/commands/integrate.ts +2 -0
- package/src/cli/commands/setup.ts +12 -5
- package/src/hooks/handler.ts +6 -0
- package/src/hooks/installers/index.ts +181 -6
- package/src/hooks/normalizer.ts +60 -1
- package/src/hooks/types.ts +3 -1
- package/src/integrations/registry.ts +9 -0
package/dist/index.js
CHANGED
|
@@ -4217,7 +4217,7 @@ function toProviderInput(input, baseUrl) {
|
|
|
4217
4217
|
return { type: input.modality, url: input.url };
|
|
4218
4218
|
}
|
|
4219
4219
|
function parseCacheJsonInWorker(filePath) {
|
|
4220
|
-
return new Promise((
|
|
4220
|
+
return new Promise((resolve5, reject) => {
|
|
4221
4221
|
void import("worker_threads").then(({ Worker }) => {
|
|
4222
4222
|
const worker = new Worker(
|
|
4223
4223
|
`
|
|
@@ -4238,7 +4238,7 @@ function parseCacheJsonInWorker(filePath) {
|
|
|
4238
4238
|
worker.once("message", (msg) => {
|
|
4239
4239
|
void worker.terminate();
|
|
4240
4240
|
if (msg?.ok && Array.isArray(msg.entries)) {
|
|
4241
|
-
|
|
4241
|
+
resolve5(msg.entries);
|
|
4242
4242
|
return;
|
|
4243
4243
|
}
|
|
4244
4244
|
reject(new Error(msg?.error || "embedding cache worker parse failed"));
|
|
@@ -4302,8 +4302,8 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4302
4302
|
let count2 = 0;
|
|
4303
4303
|
const writeLine = async (line) => {
|
|
4304
4304
|
if (!out.write(line)) {
|
|
4305
|
-
await new Promise((
|
|
4306
|
-
out.once("drain",
|
|
4305
|
+
await new Promise((resolve5, reject) => {
|
|
4306
|
+
out.once("drain", resolve5);
|
|
4307
4307
|
out.once("error", reject);
|
|
4308
4308
|
});
|
|
4309
4309
|
}
|
|
@@ -4335,7 +4335,7 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4335
4335
|
`);
|
|
4336
4336
|
count2 += 1;
|
|
4337
4337
|
if (count2 % 50 === 0) {
|
|
4338
|
-
await new Promise((
|
|
4338
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
4339
4339
|
}
|
|
4340
4340
|
}
|
|
4341
4341
|
}
|
|
@@ -4344,8 +4344,8 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4344
4344
|
}
|
|
4345
4345
|
}
|
|
4346
4346
|
} finally {
|
|
4347
|
-
await new Promise((
|
|
4348
|
-
out.end(() =>
|
|
4347
|
+
await new Promise((resolve5, reject) => {
|
|
4348
|
+
out.end(() => resolve5());
|
|
4349
4349
|
out.once("error", reject);
|
|
4350
4350
|
});
|
|
4351
4351
|
}
|
|
@@ -4390,7 +4390,7 @@ async function loadCacheJsonl(filePath) {
|
|
|
4390
4390
|
} catch {
|
|
4391
4391
|
}
|
|
4392
4392
|
if (onDiskCount % 250 === 0) {
|
|
4393
|
-
await new Promise((
|
|
4393
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
4394
4394
|
}
|
|
4395
4395
|
}
|
|
4396
4396
|
diskCacheEntryCount = onDiskCount;
|
|
@@ -4635,7 +4635,7 @@ async function saveDiskCacheNow() {
|
|
|
4635
4635
|
return;
|
|
4636
4636
|
}
|
|
4637
4637
|
const tmpPath = `${jsonlPath}.tmp`;
|
|
4638
|
-
await new Promise((
|
|
4638
|
+
await new Promise((resolve5, reject) => {
|
|
4639
4639
|
const out = createWriteStream(tmpPath);
|
|
4640
4640
|
const entries = cache3.entries();
|
|
4641
4641
|
const writeBatch = () => {
|
|
@@ -4654,7 +4654,7 @@ async function saveDiskCacheNow() {
|
|
|
4654
4654
|
}
|
|
4655
4655
|
setImmediate(writeBatch);
|
|
4656
4656
|
};
|
|
4657
|
-
out.on("finish",
|
|
4657
|
+
out.on("finish", resolve5);
|
|
4658
4658
|
out.on("error", reject);
|
|
4659
4659
|
writeBatch();
|
|
4660
4660
|
});
|
|
@@ -4758,7 +4758,7 @@ function abortError() {
|
|
|
4758
4758
|
}
|
|
4759
4759
|
function raceWithAbort(promise, signal) {
|
|
4760
4760
|
if (signal.aborted) return Promise.reject(abortError());
|
|
4761
|
-
return new Promise((
|
|
4761
|
+
return new Promise((resolve5, reject) => {
|
|
4762
4762
|
const onAbort = () => {
|
|
4763
4763
|
signal.removeEventListener("abort", onAbort);
|
|
4764
4764
|
reject(abortError());
|
|
@@ -4767,7 +4767,7 @@ function raceWithAbort(promise, signal) {
|
|
|
4767
4767
|
promise.then(
|
|
4768
4768
|
(value) => {
|
|
4769
4769
|
signal.removeEventListener("abort", onAbort);
|
|
4770
|
-
|
|
4770
|
+
resolve5(value);
|
|
4771
4771
|
},
|
|
4772
4772
|
(error) => {
|
|
4773
4773
|
signal.removeEventListener("abort", onAbort);
|
|
@@ -4778,12 +4778,12 @@ function raceWithAbort(promise, signal) {
|
|
|
4778
4778
|
}
|
|
4779
4779
|
async function waitForRetry(waitMs, signal) {
|
|
4780
4780
|
if (!signal) {
|
|
4781
|
-
await new Promise((
|
|
4781
|
+
await new Promise((resolve5) => setTimeout(resolve5, waitMs));
|
|
4782
4782
|
return;
|
|
4783
4783
|
}
|
|
4784
4784
|
const abortSignal = signal;
|
|
4785
4785
|
if (abortSignal.aborted) throw new Error("Embedding API retry aborted");
|
|
4786
|
-
await new Promise((
|
|
4786
|
+
await new Promise((resolve5, reject) => {
|
|
4787
4787
|
const timer = setTimeout(done, waitMs);
|
|
4788
4788
|
const onAbort = () => {
|
|
4789
4789
|
clearTimeout(timer);
|
|
@@ -4792,7 +4792,7 @@ async function waitForRetry(waitMs, signal) {
|
|
|
4792
4792
|
};
|
|
4793
4793
|
function done() {
|
|
4794
4794
|
abortSignal.removeEventListener("abort", onAbort);
|
|
4795
|
-
|
|
4795
|
+
resolve5();
|
|
4796
4796
|
}
|
|
4797
4797
|
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
4798
4798
|
});
|
|
@@ -6601,12 +6601,12 @@ var init_policy = __esm({
|
|
|
6601
6601
|
|
|
6602
6602
|
// src/timeout.ts
|
|
6603
6603
|
function withTimeout(promise, ms, label) {
|
|
6604
|
-
return new Promise((
|
|
6604
|
+
return new Promise((resolve5, reject) => {
|
|
6605
6605
|
const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms);
|
|
6606
6606
|
promise.then(
|
|
6607
6607
|
(value) => {
|
|
6608
6608
|
clearTimeout(timer);
|
|
6609
|
-
|
|
6609
|
+
resolve5(value);
|
|
6610
6610
|
},
|
|
6611
6611
|
(error) => {
|
|
6612
6612
|
clearTimeout(timer);
|
|
@@ -6618,7 +6618,7 @@ function withTimeout(promise, ms, label) {
|
|
|
6618
6618
|
function withTimeoutSignal(operation, ms, label, parentSignal) {
|
|
6619
6619
|
const controller = new AbortController();
|
|
6620
6620
|
const signal = parentSignal ? AbortSignal.any([parentSignal, controller.signal]) : controller.signal;
|
|
6621
|
-
return new Promise((
|
|
6621
|
+
return new Promise((resolve5, reject) => {
|
|
6622
6622
|
let settled = false;
|
|
6623
6623
|
let timedOut = false;
|
|
6624
6624
|
let timer;
|
|
@@ -6655,7 +6655,7 @@ function withTimeoutSignal(operation, ms, label, parentSignal) {
|
|
|
6655
6655
|
if (settled) return;
|
|
6656
6656
|
settled = true;
|
|
6657
6657
|
cleanup();
|
|
6658
|
-
|
|
6658
|
+
resolve5(value);
|
|
6659
6659
|
},
|
|
6660
6660
|
(error) => {
|
|
6661
6661
|
if (settled) return;
|
|
@@ -7488,7 +7488,7 @@ async function attachCachedVectors(database, candidates) {
|
|
|
7488
7488
|
} catch {
|
|
7489
7489
|
}
|
|
7490
7490
|
if (index % 50 === 0) {
|
|
7491
|
-
await new Promise((
|
|
7491
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
7492
7492
|
}
|
|
7493
7493
|
}
|
|
7494
7494
|
}
|
|
@@ -7564,7 +7564,7 @@ async function hydrateIndex(observations2, options = {}) {
|
|
|
7564
7564
|
}
|
|
7565
7565
|
}
|
|
7566
7566
|
}
|
|
7567
|
-
await new Promise((
|
|
7567
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
7568
7568
|
}
|
|
7569
7569
|
deferredCachedVectorHydration = options.skipCachedVectors ? null : deferCachedVectors ? attachCachedVectors(database, candidates).catch(() => {
|
|
7570
7570
|
}) : null;
|
|
@@ -9709,7 +9709,7 @@ function validateRequest(request) {
|
|
|
9709
9709
|
}
|
|
9710
9710
|
}
|
|
9711
9711
|
function collectOutput(stream2, limit2, onOverflow) {
|
|
9712
|
-
return new Promise((
|
|
9712
|
+
return new Promise((resolve5, reject) => {
|
|
9713
9713
|
let value = "";
|
|
9714
9714
|
let size = 0;
|
|
9715
9715
|
stream2.setEncoding("utf8");
|
|
@@ -9723,7 +9723,7 @@ function collectOutput(stream2, limit2, onOverflow) {
|
|
|
9723
9723
|
value += chunk;
|
|
9724
9724
|
});
|
|
9725
9725
|
stream2.on("error", reject);
|
|
9726
|
-
stream2.on("end", () =>
|
|
9726
|
+
stream2.on("end", () => resolve5(value));
|
|
9727
9727
|
});
|
|
9728
9728
|
}
|
|
9729
9729
|
async function runMaintenanceInChildProcess(request, options = {}) {
|
|
@@ -9734,7 +9734,7 @@ async function runMaintenanceInChildProcess(request, options = {}) {
|
|
|
9734
9734
|
}
|
|
9735
9735
|
const timeoutMs = Number.isFinite(options.timeoutMs) ? Math.max(1e3, Math.floor(options.timeoutMs)) : DEFAULT_TIMEOUT_MS;
|
|
9736
9736
|
const env2 = { ...process.env, ...options.env };
|
|
9737
|
-
return new Promise((
|
|
9737
|
+
return new Promise((resolve5, reject) => {
|
|
9738
9738
|
let settled = false;
|
|
9739
9739
|
let child;
|
|
9740
9740
|
try {
|
|
@@ -9774,7 +9774,7 @@ async function runMaintenanceInChildProcess(request, options = {}) {
|
|
|
9774
9774
|
)));
|
|
9775
9775
|
return;
|
|
9776
9776
|
}
|
|
9777
|
-
settle(() =>
|
|
9777
|
+
settle(() => resolve5(parseMaintenanceRunnerOutput(out)));
|
|
9778
9778
|
} catch (error) {
|
|
9779
9779
|
settle(() => reject(error));
|
|
9780
9780
|
}
|
|
@@ -19917,7 +19917,7 @@ var init_sleep = __esm({
|
|
|
19917
19917
|
"node_modules/openai/internal/utils/sleep.mjs"() {
|
|
19918
19918
|
"use strict";
|
|
19919
19919
|
init_esm_shims();
|
|
19920
|
-
sleep = (ms) => new Promise((
|
|
19920
|
+
sleep = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
19921
19921
|
}
|
|
19922
19922
|
});
|
|
19923
19923
|
|
|
@@ -21106,8 +21106,8 @@ var init_api_promise = __esm({
|
|
|
21106
21106
|
init_parse();
|
|
21107
21107
|
APIPromise = class _APIPromise extends Promise {
|
|
21108
21108
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse) {
|
|
21109
|
-
super((
|
|
21110
|
-
|
|
21109
|
+
super((resolve5) => {
|
|
21110
|
+
resolve5(null);
|
|
21111
21111
|
});
|
|
21112
21112
|
this.responsePromise = responsePromise;
|
|
21113
21113
|
this.parseResponse = parseResponse2;
|
|
@@ -21751,12 +21751,12 @@ var init_EventStream = __esm({
|
|
|
21751
21751
|
_EventStream_errored.set(this, false);
|
|
21752
21752
|
_EventStream_aborted.set(this, false);
|
|
21753
21753
|
_EventStream_catchingPromiseCreated.set(this, false);
|
|
21754
|
-
__classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((
|
|
21755
|
-
__classPrivateFieldSet(this, _EventStream_resolveConnectedPromise,
|
|
21754
|
+
__classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
21755
|
+
__classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve5, "f");
|
|
21756
21756
|
__classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, "f");
|
|
21757
21757
|
}), "f");
|
|
21758
|
-
__classPrivateFieldSet(this, _EventStream_endPromise, new Promise((
|
|
21759
|
-
__classPrivateFieldSet(this, _EventStream_resolveEndPromise,
|
|
21758
|
+
__classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve5, reject) => {
|
|
21759
|
+
__classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve5, "f");
|
|
21760
21760
|
__classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, "f");
|
|
21761
21761
|
}), "f");
|
|
21762
21762
|
__classPrivateFieldGet(this, _EventStream_connectedPromise, "f").catch(() => {
|
|
@@ -21840,11 +21840,11 @@ var init_EventStream = __esm({
|
|
|
21840
21840
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
21841
21841
|
*/
|
|
21842
21842
|
emitted(event) {
|
|
21843
|
-
return new Promise((
|
|
21843
|
+
return new Promise((resolve5, reject) => {
|
|
21844
21844
|
__classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, "f");
|
|
21845
21845
|
if (event !== "error")
|
|
21846
21846
|
this.once("error", reject);
|
|
21847
|
-
this.once(event,
|
|
21847
|
+
this.once(event, resolve5);
|
|
21848
21848
|
});
|
|
21849
21849
|
}
|
|
21850
21850
|
async done() {
|
|
@@ -22913,7 +22913,7 @@ var init_ChatCompletionStream = __esm({
|
|
|
22913
22913
|
if (done) {
|
|
22914
22914
|
return { value: void 0, done: true };
|
|
22915
22915
|
}
|
|
22916
|
-
return new Promise((
|
|
22916
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
22917
22917
|
}
|
|
22918
22918
|
const chunk = pushQueue.shift();
|
|
22919
22919
|
return { value: chunk, done: false };
|
|
@@ -23896,7 +23896,7 @@ var init_AssistantStream = __esm({
|
|
|
23896
23896
|
if (done) {
|
|
23897
23897
|
return { value: void 0, done: true };
|
|
23898
23898
|
}
|
|
23899
|
-
return new Promise((
|
|
23899
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
23900
23900
|
}
|
|
23901
23901
|
const chunk = pushQueue.shift();
|
|
23902
23902
|
return { value: chunk, done: false };
|
|
@@ -26185,7 +26185,7 @@ var init_ResponseStream = __esm({
|
|
|
26185
26185
|
if (done) {
|
|
26186
26186
|
return { value: void 0, done: true };
|
|
26187
26187
|
}
|
|
26188
|
-
return new Promise((
|
|
26188
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((event2) => event2 ? { value: event2, done: false } : { value: void 0, done: true });
|
|
26189
26189
|
}
|
|
26190
26190
|
const event = pushQueue.shift();
|
|
26191
26191
|
return { value: event, done: false };
|
|
@@ -46395,8 +46395,8 @@ var init_event_stream = __esm({
|
|
|
46395
46395
|
constructor(isComplete, extractResult) {
|
|
46396
46396
|
this.isComplete = isComplete;
|
|
46397
46397
|
this.extractResult = extractResult;
|
|
46398
|
-
this.finalResultPromise = new Promise((
|
|
46399
|
-
this.resolveFinalResult =
|
|
46398
|
+
this.finalResultPromise = new Promise((resolve5) => {
|
|
46399
|
+
this.resolveFinalResult = resolve5;
|
|
46400
46400
|
});
|
|
46401
46401
|
}
|
|
46402
46402
|
push(event) {
|
|
@@ -46430,7 +46430,7 @@ var init_event_stream = __esm({
|
|
|
46430
46430
|
} else if (this.done) {
|
|
46431
46431
|
return;
|
|
46432
46432
|
} else {
|
|
46433
|
-
const result = await new Promise((
|
|
46433
|
+
const result = await new Promise((resolve5) => this.waiting.push(resolve5));
|
|
46434
46434
|
if (result.done)
|
|
46435
46435
|
return;
|
|
46436
46436
|
yield result.value;
|
|
@@ -46701,7 +46701,7 @@ var init_sleep2 = __esm({
|
|
|
46701
46701
|
"node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs"() {
|
|
46702
46702
|
"use strict";
|
|
46703
46703
|
init_esm_shims();
|
|
46704
|
-
sleep2 = (ms) => new Promise((
|
|
46704
|
+
sleep2 = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
46705
46705
|
}
|
|
46706
46706
|
});
|
|
46707
46707
|
|
|
@@ -47501,8 +47501,8 @@ var init_api_promise2 = __esm({
|
|
|
47501
47501
|
init_parse2();
|
|
47502
47502
|
APIPromise2 = class _APIPromise extends Promise {
|
|
47503
47503
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse2) {
|
|
47504
|
-
super((
|
|
47505
|
-
|
|
47504
|
+
super((resolve5) => {
|
|
47505
|
+
resolve5(null);
|
|
47506
47506
|
});
|
|
47507
47507
|
this.responsePromise = responsePromise;
|
|
47508
47508
|
this.parseResponse = parseResponse2;
|
|
@@ -49463,12 +49463,12 @@ var init_BetaMessageStream = __esm({
|
|
|
49463
49463
|
}
|
|
49464
49464
|
return this._emit("error", new AnthropicError(String(error)));
|
|
49465
49465
|
});
|
|
49466
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_connectedPromise, new Promise((
|
|
49467
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_resolveConnectedPromise,
|
|
49466
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
49467
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_resolveConnectedPromise, resolve5, "f");
|
|
49468
49468
|
__classPrivateFieldSet2(this, _BetaMessageStream_rejectConnectedPromise, reject, "f");
|
|
49469
49469
|
}), "f");
|
|
49470
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_endPromise, new Promise((
|
|
49471
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_resolveEndPromise,
|
|
49470
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_endPromise, new Promise((resolve5, reject) => {
|
|
49471
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_resolveEndPromise, resolve5, "f");
|
|
49472
49472
|
__classPrivateFieldSet2(this, _BetaMessageStream_rejectEndPromise, reject, "f");
|
|
49473
49473
|
}), "f");
|
|
49474
49474
|
__classPrivateFieldGet2(this, _BetaMessageStream_connectedPromise, "f").catch(() => {
|
|
@@ -49638,11 +49638,11 @@ var init_BetaMessageStream = __esm({
|
|
|
49638
49638
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
49639
49639
|
*/
|
|
49640
49640
|
emitted(event) {
|
|
49641
|
-
return new Promise((
|
|
49641
|
+
return new Promise((resolve5, reject) => {
|
|
49642
49642
|
__classPrivateFieldSet2(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
49643
49643
|
if (event !== "error")
|
|
49644
49644
|
this.once("error", reject);
|
|
49645
|
-
this.once(event,
|
|
49645
|
+
this.once(event, resolve5);
|
|
49646
49646
|
});
|
|
49647
49647
|
}
|
|
49648
49648
|
async done() {
|
|
@@ -49985,7 +49985,7 @@ var init_BetaMessageStream = __esm({
|
|
|
49985
49985
|
if (done) {
|
|
49986
49986
|
return { value: void 0, done: true };
|
|
49987
49987
|
}
|
|
49988
|
-
return new Promise((
|
|
49988
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
49989
49989
|
}
|
|
49990
49990
|
const chunk = pushQueue.shift();
|
|
49991
49991
|
return { value: chunk, done: false };
|
|
@@ -50060,13 +50060,13 @@ Wrap your summary in <summary></summary> tags.`;
|
|
|
50060
50060
|
|
|
50061
50061
|
// node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs
|
|
50062
50062
|
function promiseWithResolvers() {
|
|
50063
|
-
let
|
|
50063
|
+
let resolve5;
|
|
50064
50064
|
let reject;
|
|
50065
50065
|
const promise = new Promise((res, rej) => {
|
|
50066
|
-
|
|
50066
|
+
resolve5 = res;
|
|
50067
50067
|
reject = rej;
|
|
50068
50068
|
});
|
|
50069
|
-
return { promise, resolve:
|
|
50069
|
+
return { promise, resolve: resolve5, reject };
|
|
50070
50070
|
}
|
|
50071
50071
|
async function generateToolResponse(params, lastMessage = params.messages.at(-1), requestOptions) {
|
|
50072
50072
|
if (!lastMessage || lastMessage.role !== "assistant" || !lastMessage.content || typeof lastMessage.content === "string") {
|
|
@@ -51924,12 +51924,12 @@ var init_MessageStream = __esm({
|
|
|
51924
51924
|
}
|
|
51925
51925
|
return this._emit("error", new AnthropicError(String(error)));
|
|
51926
51926
|
});
|
|
51927
|
-
__classPrivateFieldSet2(this, _MessageStream_connectedPromise, new Promise((
|
|
51928
|
-
__classPrivateFieldSet2(this, _MessageStream_resolveConnectedPromise,
|
|
51927
|
+
__classPrivateFieldSet2(this, _MessageStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
51928
|
+
__classPrivateFieldSet2(this, _MessageStream_resolveConnectedPromise, resolve5, "f");
|
|
51929
51929
|
__classPrivateFieldSet2(this, _MessageStream_rejectConnectedPromise, reject, "f");
|
|
51930
51930
|
}), "f");
|
|
51931
|
-
__classPrivateFieldSet2(this, _MessageStream_endPromise, new Promise((
|
|
51932
|
-
__classPrivateFieldSet2(this, _MessageStream_resolveEndPromise,
|
|
51931
|
+
__classPrivateFieldSet2(this, _MessageStream_endPromise, new Promise((resolve5, reject) => {
|
|
51932
|
+
__classPrivateFieldSet2(this, _MessageStream_resolveEndPromise, resolve5, "f");
|
|
51933
51933
|
__classPrivateFieldSet2(this, _MessageStream_rejectEndPromise, reject, "f");
|
|
51934
51934
|
}), "f");
|
|
51935
51935
|
__classPrivateFieldGet2(this, _MessageStream_connectedPromise, "f").catch(() => {
|
|
@@ -52099,11 +52099,11 @@ var init_MessageStream = __esm({
|
|
|
52099
52099
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
52100
52100
|
*/
|
|
52101
52101
|
emitted(event) {
|
|
52102
|
-
return new Promise((
|
|
52102
|
+
return new Promise((resolve5, reject) => {
|
|
52103
52103
|
__classPrivateFieldSet2(this, _MessageStream_catchingPromiseCreated, true, "f");
|
|
52104
52104
|
if (event !== "error")
|
|
52105
52105
|
this.once("error", reject);
|
|
52106
|
-
this.once(event,
|
|
52106
|
+
this.once(event, resolve5);
|
|
52107
52107
|
});
|
|
52108
52108
|
}
|
|
52109
52109
|
async done() {
|
|
@@ -52421,7 +52421,7 @@ var init_MessageStream = __esm({
|
|
|
52421
52421
|
if (done) {
|
|
52422
52422
|
return { value: void 0, done: true };
|
|
52423
52423
|
}
|
|
52424
|
-
return new Promise((
|
|
52424
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
52425
52425
|
}
|
|
52426
52426
|
const chunk = pushQueue.shift();
|
|
52427
52427
|
return { value: chunk, done: false };
|
|
@@ -55799,7 +55799,7 @@ var require_p_retry = __commonJS({
|
|
|
55799
55799
|
return error;
|
|
55800
55800
|
};
|
|
55801
55801
|
var isNetworkError = (errorMessage) => networkErrorMsgs.includes(errorMessage);
|
|
55802
|
-
var pRetry2 = (input, options) => new Promise((
|
|
55802
|
+
var pRetry2 = (input, options) => new Promise((resolve5, reject) => {
|
|
55803
55803
|
options = {
|
|
55804
55804
|
onFailedAttempt: () => {
|
|
55805
55805
|
},
|
|
@@ -55809,7 +55809,7 @@ var require_p_retry = __commonJS({
|
|
|
55809
55809
|
const operation = retry2.operation(options);
|
|
55810
55810
|
operation.attempt(async (attemptNumber) => {
|
|
55811
55811
|
try {
|
|
55812
|
-
|
|
55812
|
+
resolve5(await input(attemptNumber));
|
|
55813
55813
|
} catch (error) {
|
|
55814
55814
|
if (!(error instanceof Error)) {
|
|
55815
55815
|
reject(new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`));
|
|
@@ -56347,8 +56347,8 @@ var require_retry3 = __commonJS({
|
|
|
56347
56347
|
}
|
|
56348
56348
|
const delay2 = getNextRetryDelay(config);
|
|
56349
56349
|
err.config.retryConfig.currentRetryAttempt += 1;
|
|
56350
|
-
const backoff = config.retryBackoff ? config.retryBackoff(err, delay2) : new Promise((
|
|
56351
|
-
setTimeout(
|
|
56350
|
+
const backoff = config.retryBackoff ? config.retryBackoff(err, delay2) : new Promise((resolve5) => {
|
|
56351
|
+
setTimeout(resolve5, delay2);
|
|
56352
56352
|
});
|
|
56353
56353
|
if (config.onRetryAttempt) {
|
|
56354
56354
|
await config.onRetryAttempt(err);
|
|
@@ -57265,8 +57265,8 @@ var require_helpers = __commonJS({
|
|
|
57265
57265
|
function req(url, opts = {}) {
|
|
57266
57266
|
const href = typeof url === "string" ? url : url.href;
|
|
57267
57267
|
const req2 = (href.startsWith("https:") ? https2 : http3).request(url, opts);
|
|
57268
|
-
const promise = new Promise((
|
|
57269
|
-
req2.once("response",
|
|
57268
|
+
const promise = new Promise((resolve5, reject) => {
|
|
57269
|
+
req2.once("response", resolve5).once("error", reject).end();
|
|
57270
57270
|
});
|
|
57271
57271
|
req2.then = promise.then.bind(promise);
|
|
57272
57272
|
return req2;
|
|
@@ -57445,7 +57445,7 @@ var require_parse_proxy_response = __commonJS({
|
|
|
57445
57445
|
var debug_1 = __importDefault(require_src());
|
|
57446
57446
|
var debug = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
|
|
57447
57447
|
function parseProxyResponse(socket) {
|
|
57448
|
-
return new Promise((
|
|
57448
|
+
return new Promise((resolve5, reject) => {
|
|
57449
57449
|
let buffersLength = 0;
|
|
57450
57450
|
const buffers = [];
|
|
57451
57451
|
function read() {
|
|
@@ -57511,7 +57511,7 @@ var require_parse_proxy_response = __commonJS({
|
|
|
57511
57511
|
}
|
|
57512
57512
|
debug("got proxy server response: %o %o", firstLine, headers);
|
|
57513
57513
|
cleanup();
|
|
57514
|
-
|
|
57514
|
+
resolve5({
|
|
57515
57515
|
connect: {
|
|
57516
57516
|
statusCode,
|
|
57517
57517
|
statusText,
|
|
@@ -57758,7 +57758,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
57758
57758
|
return new originalPromise(executor);
|
|
57759
57759
|
}
|
|
57760
57760
|
function promiseResolvedWith(value) {
|
|
57761
|
-
return newPromise((
|
|
57761
|
+
return newPromise((resolve5) => resolve5(value));
|
|
57762
57762
|
}
|
|
57763
57763
|
function promiseRejectedWith(reason) {
|
|
57764
57764
|
return originalPromiseReject(reason);
|
|
@@ -57928,8 +57928,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
57928
57928
|
return new TypeError("Cannot " + name + " a stream using a released reader");
|
|
57929
57929
|
}
|
|
57930
57930
|
function defaultReaderClosedPromiseInitialize(reader2) {
|
|
57931
|
-
reader2._closedPromise = newPromise((
|
|
57932
|
-
reader2._closedPromise_resolve =
|
|
57931
|
+
reader2._closedPromise = newPromise((resolve5, reject) => {
|
|
57932
|
+
reader2._closedPromise_resolve = resolve5;
|
|
57933
57933
|
reader2._closedPromise_reject = reject;
|
|
57934
57934
|
});
|
|
57935
57935
|
}
|
|
@@ -58103,8 +58103,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
58103
58103
|
}
|
|
58104
58104
|
let resolvePromise;
|
|
58105
58105
|
let rejectPromise;
|
|
58106
|
-
const promise = newPromise((
|
|
58107
|
-
resolvePromise =
|
|
58106
|
+
const promise = newPromise((resolve5, reject) => {
|
|
58107
|
+
resolvePromise = resolve5;
|
|
58108
58108
|
rejectPromise = reject;
|
|
58109
58109
|
});
|
|
58110
58110
|
const readRequest = {
|
|
@@ -58209,8 +58209,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
58209
58209
|
const reader2 = this._reader;
|
|
58210
58210
|
let resolvePromise;
|
|
58211
58211
|
let rejectPromise;
|
|
58212
|
-
const promise = newPromise((
|
|
58213
|
-
resolvePromise =
|
|
58212
|
+
const promise = newPromise((resolve5, reject) => {
|
|
58213
|
+
resolvePromise = resolve5;
|
|
58214
58214
|
rejectPromise = reject;
|
|
58215
58215
|
});
|
|
58216
58216
|
const readRequest = {
|
|
@@ -59229,8 +59229,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59229
59229
|
}
|
|
59230
59230
|
let resolvePromise;
|
|
59231
59231
|
let rejectPromise;
|
|
59232
|
-
const promise = newPromise((
|
|
59233
|
-
resolvePromise =
|
|
59232
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59233
|
+
resolvePromise = resolve5;
|
|
59234
59234
|
rejectPromise = reject;
|
|
59235
59235
|
});
|
|
59236
59236
|
const readIntoRequest = {
|
|
@@ -59542,10 +59542,10 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59542
59542
|
wasAlreadyErroring = true;
|
|
59543
59543
|
reason = void 0;
|
|
59544
59544
|
}
|
|
59545
|
-
const promise = newPromise((
|
|
59545
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59546
59546
|
stream2._pendingAbortRequest = {
|
|
59547
59547
|
_promise: void 0,
|
|
59548
|
-
_resolve:
|
|
59548
|
+
_resolve: resolve5,
|
|
59549
59549
|
_reject: reject,
|
|
59550
59550
|
_reason: reason,
|
|
59551
59551
|
_wasAlreadyErroring: wasAlreadyErroring
|
|
@@ -59562,9 +59562,9 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59562
59562
|
if (state === "closed" || state === "errored") {
|
|
59563
59563
|
return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`));
|
|
59564
59564
|
}
|
|
59565
|
-
const promise = newPromise((
|
|
59565
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59566
59566
|
const closeRequest = {
|
|
59567
|
-
_resolve:
|
|
59567
|
+
_resolve: resolve5,
|
|
59568
59568
|
_reject: reject
|
|
59569
59569
|
};
|
|
59570
59570
|
stream2._closeRequest = closeRequest;
|
|
@@ -59577,9 +59577,9 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59577
59577
|
return promise;
|
|
59578
59578
|
}
|
|
59579
59579
|
function WritableStreamAddWriteRequest(stream2) {
|
|
59580
|
-
const promise = newPromise((
|
|
59580
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59581
59581
|
const writeRequest = {
|
|
59582
|
-
_resolve:
|
|
59582
|
+
_resolve: resolve5,
|
|
59583
59583
|
_reject: reject
|
|
59584
59584
|
};
|
|
59585
59585
|
stream2._writeRequests.push(writeRequest);
|
|
@@ -60195,8 +60195,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60195
60195
|
return new TypeError("Cannot " + name + " a stream using a released writer");
|
|
60196
60196
|
}
|
|
60197
60197
|
function defaultWriterClosedPromiseInitialize(writer) {
|
|
60198
|
-
writer._closedPromise = newPromise((
|
|
60199
|
-
writer._closedPromise_resolve =
|
|
60198
|
+
writer._closedPromise = newPromise((resolve5, reject) => {
|
|
60199
|
+
writer._closedPromise_resolve = resolve5;
|
|
60200
60200
|
writer._closedPromise_reject = reject;
|
|
60201
60201
|
writer._closedPromiseState = "pending";
|
|
60202
60202
|
});
|
|
@@ -60232,8 +60232,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60232
60232
|
writer._closedPromiseState = "resolved";
|
|
60233
60233
|
}
|
|
60234
60234
|
function defaultWriterReadyPromiseInitialize(writer) {
|
|
60235
|
-
writer._readyPromise = newPromise((
|
|
60236
|
-
writer._readyPromise_resolve =
|
|
60235
|
+
writer._readyPromise = newPromise((resolve5, reject) => {
|
|
60236
|
+
writer._readyPromise_resolve = resolve5;
|
|
60237
60237
|
writer._readyPromise_reject = reject;
|
|
60238
60238
|
});
|
|
60239
60239
|
writer._readyPromiseState = "pending";
|
|
@@ -60320,7 +60320,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60320
60320
|
source._disturbed = true;
|
|
60321
60321
|
let shuttingDown = false;
|
|
60322
60322
|
let currentWrite = promiseResolvedWith(void 0);
|
|
60323
|
-
return newPromise((
|
|
60323
|
+
return newPromise((resolve5, reject) => {
|
|
60324
60324
|
let abortAlgorithm;
|
|
60325
60325
|
if (signal !== void 0) {
|
|
60326
60326
|
abortAlgorithm = () => {
|
|
@@ -60465,7 +60465,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60465
60465
|
if (isError) {
|
|
60466
60466
|
reject(error);
|
|
60467
60467
|
} else {
|
|
60468
|
-
|
|
60468
|
+
resolve5(void 0);
|
|
60469
60469
|
}
|
|
60470
60470
|
return null;
|
|
60471
60471
|
}
|
|
@@ -60746,8 +60746,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60746
60746
|
let branch1;
|
|
60747
60747
|
let branch2;
|
|
60748
60748
|
let resolveCancelPromise;
|
|
60749
|
-
const cancelPromise = newPromise((
|
|
60750
|
-
resolveCancelPromise =
|
|
60749
|
+
const cancelPromise = newPromise((resolve5) => {
|
|
60750
|
+
resolveCancelPromise = resolve5;
|
|
60751
60751
|
});
|
|
60752
60752
|
function pullAlgorithm() {
|
|
60753
60753
|
if (reading) {
|
|
@@ -60838,8 +60838,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60838
60838
|
let branch1;
|
|
60839
60839
|
let branch2;
|
|
60840
60840
|
let resolveCancelPromise;
|
|
60841
|
-
const cancelPromise = newPromise((
|
|
60842
|
-
resolveCancelPromise =
|
|
60841
|
+
const cancelPromise = newPromise((resolve5) => {
|
|
60842
|
+
resolveCancelPromise = resolve5;
|
|
60843
60843
|
});
|
|
60844
60844
|
function forwardReaderError(thisReader) {
|
|
60845
60845
|
uponRejection(thisReader._closedPromise, (r2) => {
|
|
@@ -61619,8 +61619,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61619
61619
|
const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);
|
|
61620
61620
|
const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);
|
|
61621
61621
|
let startPromise_resolve;
|
|
61622
|
-
const startPromise = newPromise((
|
|
61623
|
-
startPromise_resolve =
|
|
61622
|
+
const startPromise = newPromise((resolve5) => {
|
|
61623
|
+
startPromise_resolve = resolve5;
|
|
61624
61624
|
});
|
|
61625
61625
|
InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);
|
|
61626
61626
|
SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);
|
|
@@ -61713,8 +61713,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61713
61713
|
if (stream2._backpressureChangePromise !== void 0) {
|
|
61714
61714
|
stream2._backpressureChangePromise_resolve();
|
|
61715
61715
|
}
|
|
61716
|
-
stream2._backpressureChangePromise = newPromise((
|
|
61717
|
-
stream2._backpressureChangePromise_resolve =
|
|
61716
|
+
stream2._backpressureChangePromise = newPromise((resolve5) => {
|
|
61717
|
+
stream2._backpressureChangePromise_resolve = resolve5;
|
|
61718
61718
|
});
|
|
61719
61719
|
stream2._backpressure = backpressure;
|
|
61720
61720
|
}
|
|
@@ -61882,8 +61882,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61882
61882
|
return controller._finishPromise;
|
|
61883
61883
|
}
|
|
61884
61884
|
const readable = stream2._readable;
|
|
61885
|
-
controller._finishPromise = newPromise((
|
|
61886
|
-
controller._finishPromise_resolve =
|
|
61885
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61886
|
+
controller._finishPromise_resolve = resolve5;
|
|
61887
61887
|
controller._finishPromise_reject = reject;
|
|
61888
61888
|
});
|
|
61889
61889
|
const cancelPromise = controller._cancelAlgorithm(reason);
|
|
@@ -61909,8 +61909,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61909
61909
|
return controller._finishPromise;
|
|
61910
61910
|
}
|
|
61911
61911
|
const readable = stream2._readable;
|
|
61912
|
-
controller._finishPromise = newPromise((
|
|
61913
|
-
controller._finishPromise_resolve =
|
|
61912
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61913
|
+
controller._finishPromise_resolve = resolve5;
|
|
61914
61914
|
controller._finishPromise_reject = reject;
|
|
61915
61915
|
});
|
|
61916
61916
|
const flushPromise = controller._flushAlgorithm();
|
|
@@ -61940,8 +61940,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61940
61940
|
return controller._finishPromise;
|
|
61941
61941
|
}
|
|
61942
61942
|
const writable = stream2._writable;
|
|
61943
|
-
controller._finishPromise = newPromise((
|
|
61944
|
-
controller._finishPromise_resolve =
|
|
61943
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61944
|
+
controller._finishPromise_resolve = resolve5;
|
|
61945
61945
|
controller._finishPromise_reject = reject;
|
|
61946
61946
|
});
|
|
61947
61947
|
const cancelPromise = controller._cancelAlgorithm(reason);
|
|
@@ -63928,7 +63928,7 @@ import zlib from "zlib";
|
|
|
63928
63928
|
import Stream4, { PassThrough as PassThrough2, pipeline as pump } from "stream";
|
|
63929
63929
|
import { Buffer as Buffer3 } from "buffer";
|
|
63930
63930
|
async function fetch2(url, options_) {
|
|
63931
|
-
return new Promise((
|
|
63931
|
+
return new Promise((resolve5, reject) => {
|
|
63932
63932
|
const request = new Request2(url, options_);
|
|
63933
63933
|
const { parsedURL, options } = getNodeRequestOptions(request);
|
|
63934
63934
|
if (!supportedSchemas.has(parsedURL.protocol)) {
|
|
@@ -63937,7 +63937,7 @@ async function fetch2(url, options_) {
|
|
|
63937
63937
|
if (parsedURL.protocol === "data:") {
|
|
63938
63938
|
const data = dist_default(request.url);
|
|
63939
63939
|
const response2 = new Response2(data, { headers: { "Content-Type": data.typeFull } });
|
|
63940
|
-
|
|
63940
|
+
resolve5(response2);
|
|
63941
63941
|
return;
|
|
63942
63942
|
}
|
|
63943
63943
|
const send = (parsedURL.protocol === "https:" ? https : http2).request;
|
|
@@ -64059,7 +64059,7 @@ async function fetch2(url, options_) {
|
|
|
64059
64059
|
if (responseReferrerPolicy) {
|
|
64060
64060
|
requestOptions.referrerPolicy = responseReferrerPolicy;
|
|
64061
64061
|
}
|
|
64062
|
-
|
|
64062
|
+
resolve5(fetch2(new Request2(locationURL, requestOptions)));
|
|
64063
64063
|
finalize();
|
|
64064
64064
|
return;
|
|
64065
64065
|
}
|
|
@@ -64092,7 +64092,7 @@ async function fetch2(url, options_) {
|
|
|
64092
64092
|
const codings = headers.get("Content-Encoding");
|
|
64093
64093
|
if (!request.compress || request.method === "HEAD" || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {
|
|
64094
64094
|
response = new Response2(body, responseOptions);
|
|
64095
|
-
|
|
64095
|
+
resolve5(response);
|
|
64096
64096
|
return;
|
|
64097
64097
|
}
|
|
64098
64098
|
const zlibOptions = {
|
|
@@ -64106,7 +64106,7 @@ async function fetch2(url, options_) {
|
|
|
64106
64106
|
}
|
|
64107
64107
|
});
|
|
64108
64108
|
response = new Response2(body, responseOptions);
|
|
64109
|
-
|
|
64109
|
+
resolve5(response);
|
|
64110
64110
|
return;
|
|
64111
64111
|
}
|
|
64112
64112
|
if (codings === "deflate" || codings === "x-deflate") {
|
|
@@ -64130,12 +64130,12 @@ async function fetch2(url, options_) {
|
|
|
64130
64130
|
});
|
|
64131
64131
|
}
|
|
64132
64132
|
response = new Response2(body, responseOptions);
|
|
64133
|
-
|
|
64133
|
+
resolve5(response);
|
|
64134
64134
|
});
|
|
64135
64135
|
raw.once("end", () => {
|
|
64136
64136
|
if (!response) {
|
|
64137
64137
|
response = new Response2(body, responseOptions);
|
|
64138
|
-
|
|
64138
|
+
resolve5(response);
|
|
64139
64139
|
}
|
|
64140
64140
|
});
|
|
64141
64141
|
return;
|
|
@@ -64147,11 +64147,11 @@ async function fetch2(url, options_) {
|
|
|
64147
64147
|
}
|
|
64148
64148
|
});
|
|
64149
64149
|
response = new Response2(body, responseOptions);
|
|
64150
|
-
|
|
64150
|
+
resolve5(response);
|
|
64151
64151
|
return;
|
|
64152
64152
|
}
|
|
64153
64153
|
response = new Response2(body, responseOptions);
|
|
64154
|
-
|
|
64154
|
+
resolve5(response);
|
|
64155
64155
|
});
|
|
64156
64156
|
writeToStream(request_, request).catch(reject);
|
|
64157
64157
|
});
|
|
@@ -70274,7 +70274,7 @@ var require_jwtaccess = __commonJS({
|
|
|
70274
70274
|
}
|
|
70275
70275
|
}
|
|
70276
70276
|
fromStreamAsync(inputStream) {
|
|
70277
|
-
return new Promise((
|
|
70277
|
+
return new Promise((resolve5, reject) => {
|
|
70278
70278
|
if (!inputStream) {
|
|
70279
70279
|
reject(new Error("Must pass in a stream containing the service account auth settings."));
|
|
70280
70280
|
}
|
|
@@ -70283,7 +70283,7 @@ var require_jwtaccess = __commonJS({
|
|
|
70283
70283
|
try {
|
|
70284
70284
|
const data = JSON.parse(s2);
|
|
70285
70285
|
this.fromJSON(data);
|
|
70286
|
-
|
|
70286
|
+
resolve5();
|
|
70287
70287
|
} catch (err) {
|
|
70288
70288
|
reject(err);
|
|
70289
70289
|
}
|
|
@@ -70523,7 +70523,7 @@ var require_jwtclient = __commonJS({
|
|
|
70523
70523
|
}
|
|
70524
70524
|
}
|
|
70525
70525
|
fromStreamAsync(inputStream) {
|
|
70526
|
-
return new Promise((
|
|
70526
|
+
return new Promise((resolve5, reject) => {
|
|
70527
70527
|
if (!inputStream) {
|
|
70528
70528
|
throw new Error("Must pass in a stream containing the service account auth settings.");
|
|
70529
70529
|
}
|
|
@@ -70532,7 +70532,7 @@ var require_jwtclient = __commonJS({
|
|
|
70532
70532
|
try {
|
|
70533
70533
|
const data = JSON.parse(s2);
|
|
70534
70534
|
this.fromJSON(data);
|
|
70535
|
-
|
|
70535
|
+
resolve5();
|
|
70536
70536
|
} catch (e2) {
|
|
70537
70537
|
reject(e2);
|
|
70538
70538
|
}
|
|
@@ -70666,7 +70666,7 @@ var require_refreshclient = __commonJS({
|
|
|
70666
70666
|
}
|
|
70667
70667
|
}
|
|
70668
70668
|
async fromStreamAsync(inputStream) {
|
|
70669
|
-
return new Promise((
|
|
70669
|
+
return new Promise((resolve5, reject) => {
|
|
70670
70670
|
if (!inputStream) {
|
|
70671
70671
|
return reject(new Error("Must pass in a stream containing the user refresh token."));
|
|
70672
70672
|
}
|
|
@@ -70675,7 +70675,7 @@ var require_refreshclient = __commonJS({
|
|
|
70675
70675
|
try {
|
|
70676
70676
|
const data = JSON.parse(s2);
|
|
70677
70677
|
this.fromJSON(data);
|
|
70678
|
-
return
|
|
70678
|
+
return resolve5();
|
|
70679
70679
|
} catch (err) {
|
|
70680
70680
|
return reject(err);
|
|
70681
70681
|
}
|
|
@@ -72521,7 +72521,7 @@ var require_pluggable_auth_handler = __commonJS({
|
|
|
72521
72521
|
* @return A promise that resolves with the executable response.
|
|
72522
72522
|
*/
|
|
72523
72523
|
retrieveResponseFromExecutable(envMap) {
|
|
72524
|
-
return new Promise((
|
|
72524
|
+
return new Promise((resolve5, reject) => {
|
|
72525
72525
|
const child = childProcess.spawn(this.commandComponents[0], this.commandComponents.slice(1), {
|
|
72526
72526
|
env: { ...process.env, ...Object.fromEntries(envMap) }
|
|
72527
72527
|
});
|
|
@@ -72543,7 +72543,7 @@ var require_pluggable_auth_handler = __commonJS({
|
|
|
72543
72543
|
try {
|
|
72544
72544
|
const responseJson = JSON.parse(output);
|
|
72545
72545
|
const response = new executable_response_1.ExecutableResponse(responseJson);
|
|
72546
|
-
return
|
|
72546
|
+
return resolve5(response);
|
|
72547
72547
|
} catch (error) {
|
|
72548
72548
|
if (error instanceof executable_response_1.ExecutableResponseError) {
|
|
72549
72549
|
return reject(error);
|
|
@@ -73738,7 +73738,7 @@ var require_googleauth = __commonJS({
|
|
|
73738
73738
|
}
|
|
73739
73739
|
}
|
|
73740
73740
|
fromStreamAsync(inputStream, options) {
|
|
73741
|
-
return new Promise((
|
|
73741
|
+
return new Promise((resolve5, reject) => {
|
|
73742
73742
|
if (!inputStream) {
|
|
73743
73743
|
throw new Error("Must pass in a stream containing the Google auth settings.");
|
|
73744
73744
|
}
|
|
@@ -73748,7 +73748,7 @@ var require_googleauth = __commonJS({
|
|
|
73748
73748
|
try {
|
|
73749
73749
|
const data = JSON.parse(chunks.join(""));
|
|
73750
73750
|
const r2 = this._cacheClientFromJSON(data, options);
|
|
73751
|
-
return
|
|
73751
|
+
return resolve5(r2);
|
|
73752
73752
|
} catch (err) {
|
|
73753
73753
|
if (!this.keyFilename)
|
|
73754
73754
|
throw err;
|
|
@@ -73758,7 +73758,7 @@ var require_googleauth = __commonJS({
|
|
|
73758
73758
|
});
|
|
73759
73759
|
this.cachedCredential = client;
|
|
73760
73760
|
this.setGapicJWTValues(client);
|
|
73761
|
-
return
|
|
73761
|
+
return resolve5(client);
|
|
73762
73762
|
}
|
|
73763
73763
|
} catch (err) {
|
|
73764
73764
|
return reject(err);
|
|
@@ -73794,17 +73794,17 @@ var require_googleauth = __commonJS({
|
|
|
73794
73794
|
* Run the Google Cloud SDK command that prints the default project ID
|
|
73795
73795
|
*/
|
|
73796
73796
|
async getDefaultServiceProjectId() {
|
|
73797
|
-
return new Promise((
|
|
73797
|
+
return new Promise((resolve5) => {
|
|
73798
73798
|
(0, child_process_1.exec)("gcloud config config-helper --format json", (err, stdout) => {
|
|
73799
73799
|
if (!err && stdout) {
|
|
73800
73800
|
try {
|
|
73801
73801
|
const projectId = JSON.parse(stdout).configuration.properties.core.project;
|
|
73802
|
-
|
|
73802
|
+
resolve5(projectId);
|
|
73803
73803
|
return;
|
|
73804
73804
|
} catch (e2) {
|
|
73805
73805
|
}
|
|
73806
73806
|
}
|
|
73807
|
-
|
|
73807
|
+
resolve5(null);
|
|
73808
73808
|
});
|
|
73809
73809
|
});
|
|
73810
73810
|
}
|
|
@@ -81482,14 +81482,14 @@ function __asyncValues(o) {
|
|
|
81482
81482
|
}, i2);
|
|
81483
81483
|
function verb(n) {
|
|
81484
81484
|
i2[n] = o[n] && function(v) {
|
|
81485
|
-
return new Promise(function(
|
|
81486
|
-
v = o[n](v), settle(
|
|
81485
|
+
return new Promise(function(resolve5, reject) {
|
|
81486
|
+
v = o[n](v), settle(resolve5, reject, v.done, v.value);
|
|
81487
81487
|
});
|
|
81488
81488
|
};
|
|
81489
81489
|
}
|
|
81490
|
-
function settle(
|
|
81490
|
+
function settle(resolve5, reject, d, v) {
|
|
81491
81491
|
Promise.resolve(v).then(function(v2) {
|
|
81492
|
-
|
|
81492
|
+
resolve5({ value: v2, done: d });
|
|
81493
81493
|
}, reject);
|
|
81494
81494
|
}
|
|
81495
81495
|
}
|
|
@@ -91859,8 +91859,8 @@ var init_node = __esm({
|
|
|
91859
91859
|
const url = `${websocketBaseUrl}/ws/google.ai.generativelanguage.${apiVersion}.GenerativeService.BidiGenerateMusic?key=${apiKey}`;
|
|
91860
91860
|
let onopenResolve = () => {
|
|
91861
91861
|
};
|
|
91862
|
-
const onopenPromise = new Promise((
|
|
91863
|
-
onopenResolve =
|
|
91862
|
+
const onopenPromise = new Promise((resolve5) => {
|
|
91863
|
+
onopenResolve = resolve5;
|
|
91864
91864
|
});
|
|
91865
91865
|
const callbacks = params.callbacks;
|
|
91866
91866
|
const onopenAwaitedCallback = function() {
|
|
@@ -92066,8 +92066,8 @@ var init_node = __esm({
|
|
|
92066
92066
|
}
|
|
92067
92067
|
let onopenResolve = () => {
|
|
92068
92068
|
};
|
|
92069
|
-
const onopenPromise = new Promise((
|
|
92070
|
-
onopenResolve =
|
|
92069
|
+
const onopenPromise = new Promise((resolve5) => {
|
|
92070
|
+
onopenResolve = resolve5;
|
|
92071
92071
|
});
|
|
92072
92072
|
const callbacks = params.callbacks;
|
|
92073
92073
|
const onopenAwaitedCallback = function() {
|
|
@@ -94415,7 +94415,7 @@ var init_node = __esm({
|
|
|
94415
94415
|
return void 0;
|
|
94416
94416
|
}
|
|
94417
94417
|
};
|
|
94418
|
-
sleep$1 = (ms) => new Promise((
|
|
94418
|
+
sleep$1 = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
94419
94419
|
FallbackEncoder3 = ({ headers, body }) => {
|
|
94420
94420
|
return {
|
|
94421
94421
|
bodyHeaders: {
|
|
@@ -94924,8 +94924,8 @@ ${underline}`);
|
|
|
94924
94924
|
};
|
|
94925
94925
|
APIPromise3 = class _APIPromise extends Promise {
|
|
94926
94926
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse3) {
|
|
94927
|
-
super((
|
|
94928
|
-
|
|
94927
|
+
super((resolve5) => {
|
|
94928
|
+
resolve5(null);
|
|
94929
94929
|
});
|
|
94930
94930
|
this.responsePromise = responsePromise;
|
|
94931
94931
|
this.parseResponse = parseResponse2;
|
|
@@ -98156,7 +98156,7 @@ function retryIntervalFromResponse(res) {
|
|
|
98156
98156
|
return 0;
|
|
98157
98157
|
}
|
|
98158
98158
|
async function delay(delay2) {
|
|
98159
|
-
return new Promise((
|
|
98159
|
+
return new Promise((resolve5) => setTimeout(resolve5, delay2));
|
|
98160
98160
|
}
|
|
98161
98161
|
var defaultBackoff, PermanentError, TemporaryError, codeRangeRE2;
|
|
98162
98162
|
var init_retries = __esm({
|
|
@@ -135735,12 +135735,12 @@ function capRetryDelayMs(delayMs, options) {
|
|
|
135735
135735
|
return maxRetryDelayMs > 0 ? Math.min(delayMs, maxRetryDelayMs) : delayMs;
|
|
135736
135736
|
}
|
|
135737
135737
|
function sleep4(ms, signal) {
|
|
135738
|
-
return new Promise((
|
|
135738
|
+
return new Promise((resolve5, reject) => {
|
|
135739
135739
|
if (signal?.aborted) {
|
|
135740
135740
|
reject(new Error("Request was aborted"));
|
|
135741
135741
|
return;
|
|
135742
135742
|
}
|
|
135743
|
-
const timeout = setTimeout(
|
|
135743
|
+
const timeout = setTimeout(resolve5, ms);
|
|
135744
135744
|
signal?.addEventListener("abort", () => {
|
|
135745
135745
|
clearTimeout(timeout);
|
|
135746
135746
|
reject(new Error("Request was aborted"));
|
|
@@ -136072,7 +136072,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
|
|
|
136072
136072
|
}
|
|
136073
136073
|
const wsHeaders = headersToRecord(headers);
|
|
136074
136074
|
delete wsHeaders["OpenAI-Beta"];
|
|
136075
|
-
return new Promise((
|
|
136075
|
+
return new Promise((resolve5, reject) => {
|
|
136076
136076
|
let settled = false;
|
|
136077
136077
|
let timeout;
|
|
136078
136078
|
let socket;
|
|
@@ -136107,7 +136107,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
|
|
|
136107
136107
|
return;
|
|
136108
136108
|
settled = true;
|
|
136109
136109
|
cleanup();
|
|
136110
|
-
|
|
136110
|
+
resolve5(socket);
|
|
136111
136111
|
};
|
|
136112
136112
|
const onError = (event) => {
|
|
136113
136113
|
fail2(extractWebSocketError(event));
|
|
@@ -136264,9 +136264,9 @@ async function* parseWebSocket(socket, signal, idleTimeoutMs) {
|
|
|
136264
136264
|
const wake = () => {
|
|
136265
136265
|
if (!pending)
|
|
136266
136266
|
return;
|
|
136267
|
-
const
|
|
136267
|
+
const resolve5 = pending;
|
|
136268
136268
|
pending = null;
|
|
136269
|
-
|
|
136269
|
+
resolve5();
|
|
136270
136270
|
};
|
|
136271
136271
|
const onMessage = (event) => {
|
|
136272
136272
|
void (async () => {
|
|
@@ -136333,8 +136333,8 @@ async function* parseWebSocket(socket, signal, idleTimeoutMs) {
|
|
|
136333
136333
|
if (done)
|
|
136334
136334
|
break;
|
|
136335
136335
|
let timeout;
|
|
136336
|
-
await new Promise((
|
|
136337
|
-
pending =
|
|
136336
|
+
await new Promise((resolve5, reject) => {
|
|
136337
|
+
pending = resolve5;
|
|
136338
136338
|
if (idleTimeoutMs !== void 0 && idleTimeoutMs > 0) {
|
|
136339
136339
|
timeout = setTimeout(() => {
|
|
136340
136340
|
const error = new Error(`WebSocket idle timeout after ${idleTimeoutMs}ms`);
|
|
@@ -152258,14 +152258,14 @@ async function executeVectorBackfill(request) {
|
|
|
152258
152258
|
return worker.runOnce();
|
|
152259
152259
|
}
|
|
152260
152260
|
async function readStdin() {
|
|
152261
|
-
return new Promise((
|
|
152261
|
+
return new Promise((resolve5, reject) => {
|
|
152262
152262
|
let raw = "";
|
|
152263
152263
|
process.stdin.setEncoding("utf8");
|
|
152264
152264
|
process.stdin.on("data", (chunk) => {
|
|
152265
152265
|
raw += chunk;
|
|
152266
152266
|
});
|
|
152267
152267
|
process.stdin.once("error", reject);
|
|
152268
|
-
process.stdin.once("end", () =>
|
|
152268
|
+
process.stdin.once("end", () => resolve5(raw));
|
|
152269
152269
|
});
|
|
152270
152270
|
}
|
|
152271
152271
|
async function main() {
|
|
@@ -158792,7 +158792,7 @@ var init_request_context = __esm({
|
|
|
158792
158792
|
function getMcpServerInfo() {
|
|
158793
158793
|
return {
|
|
158794
158794
|
name: "memorix",
|
|
158795
|
-
version: true ? "1.8.
|
|
158795
|
+
version: true ? "1.8.9" : "1.0.1"
|
|
158796
158796
|
};
|
|
158797
158797
|
}
|
|
158798
158798
|
function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
@@ -166238,7 +166238,7 @@ async function buildTeamSnapshot(dataDir, projectId, scope, mode) {
|
|
|
166238
166238
|
}
|
|
166239
166239
|
}
|
|
166240
166240
|
function readBody(req) {
|
|
166241
|
-
return new Promise((
|
|
166241
|
+
return new Promise((resolve5, reject) => {
|
|
166242
166242
|
const chunks = [];
|
|
166243
166243
|
let size = 0;
|
|
166244
166244
|
req.on("data", (c) => {
|
|
@@ -166249,7 +166249,7 @@ function readBody(req) {
|
|
|
166249
166249
|
}
|
|
166250
166250
|
chunks.push(c);
|
|
166251
166251
|
});
|
|
166252
|
-
req.on("end", () =>
|
|
166252
|
+
req.on("end", () => resolve5(Buffer.concat(chunks).toString("utf-8")));
|
|
166253
166253
|
req.on("error", reject);
|
|
166254
166254
|
});
|
|
166255
166255
|
}
|
|
@@ -166302,7 +166302,7 @@ async function startDashboard(dataDir, port, staticDir, projectId, projectName,
|
|
|
166302
166302
|
await serveStatic(req, res, resolvedStaticDir);
|
|
166303
166303
|
}
|
|
166304
166304
|
});
|
|
166305
|
-
return new Promise((
|
|
166305
|
+
return new Promise((resolve5, reject) => {
|
|
166306
166306
|
server.on("error", (err) => {
|
|
166307
166307
|
if (err.code === "EADDRINUSE") {
|
|
166308
166308
|
console.error(`Port ${port} is already in use. Try: memorix dashboard --port ${port + 1}`);
|
|
@@ -166325,7 +166325,7 @@ async function startDashboard(dataDir, port, staticDir, projectId, projectName,
|
|
|
166325
166325
|
Press Ctrl+C to stop
|
|
166326
166326
|
`);
|
|
166327
166327
|
if (autoOpen) openBrowser(url);
|
|
166328
|
-
|
|
166328
|
+
resolve5();
|
|
166329
166329
|
});
|
|
166330
166330
|
});
|
|
166331
166331
|
}
|
|
@@ -167897,6 +167897,9 @@ function resolveHookCommand() {
|
|
|
167897
167897
|
}
|
|
167898
167898
|
return "memorix";
|
|
167899
167899
|
}
|
|
167900
|
+
function getGrokHome() {
|
|
167901
|
+
return process.env.GROK_HOME?.trim() || path33.join(os5.homedir(), ".grok");
|
|
167902
|
+
}
|
|
167900
167903
|
function resolveWindowsMemorixShim() {
|
|
167901
167904
|
try {
|
|
167902
167905
|
const output = String(execSync2("where.exe memorix.cmd", {
|
|
@@ -167930,6 +167933,90 @@ function generateClaudeConfig() {
|
|
|
167930
167933
|
}
|
|
167931
167934
|
};
|
|
167932
167935
|
}
|
|
167936
|
+
function generateGrokConfig() {
|
|
167937
|
+
const cmd = `${resolveHookCommand()} hook --agent grok`;
|
|
167938
|
+
const hookEntry = {
|
|
167939
|
+
type: "command",
|
|
167940
|
+
command: cmd,
|
|
167941
|
+
timeout: 10
|
|
167942
|
+
};
|
|
167943
|
+
return {
|
|
167944
|
+
hooks: {
|
|
167945
|
+
SessionStart: [{ hooks: [hookEntry] }],
|
|
167946
|
+
SessionEnd: [{ hooks: [hookEntry] }],
|
|
167947
|
+
PostToolUse: [{ hooks: [hookEntry] }],
|
|
167948
|
+
PostToolUseFailure: [{ hooks: [hookEntry] }],
|
|
167949
|
+
UserPromptSubmit: [{ hooks: [hookEntry] }],
|
|
167950
|
+
PreCompact: [{ hooks: [hookEntry] }],
|
|
167951
|
+
PostCompact: [{ hooks: [hookEntry] }],
|
|
167952
|
+
Stop: [{ hooks: [hookEntry] }],
|
|
167953
|
+
StopFailure: [{ hooks: [hookEntry] }]
|
|
167954
|
+
}
|
|
167955
|
+
};
|
|
167956
|
+
}
|
|
167957
|
+
function isJsonRecord(value) {
|
|
167958
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
167959
|
+
}
|
|
167960
|
+
function isMemorixGrokCommand(value) {
|
|
167961
|
+
return value === "memorix hook --agent grok" || value === "memorix.cmd hook --agent grok";
|
|
167962
|
+
}
|
|
167963
|
+
function isMemorixGrokHook(value) {
|
|
167964
|
+
return isJsonRecord(value) && value.type === "command" && isMemorixGrokCommand(value.command);
|
|
167965
|
+
}
|
|
167966
|
+
function mergeGrokHookConfig(existing, generated) {
|
|
167967
|
+
const merged = { ...existing };
|
|
167968
|
+
const existingHooks = isJsonRecord(existing.hooks) ? { ...existing.hooks } : {};
|
|
167969
|
+
const generatedHooks = isJsonRecord(generated.hooks) ? generated.hooks : {};
|
|
167970
|
+
for (const [event, generatedGroups] of Object.entries(generatedHooks)) {
|
|
167971
|
+
const currentGroups = Array.isArray(existingHooks[event]) ? existingHooks[event] : [];
|
|
167972
|
+
const preservedGroups = currentGroups.flatMap((group) => {
|
|
167973
|
+
if (!isJsonRecord(group) || !Array.isArray(group.hooks)) return [group];
|
|
167974
|
+
const preservedHooks = group.hooks.filter((hook) => !isMemorixGrokHook(hook));
|
|
167975
|
+
if (preservedHooks.length === 0) return [];
|
|
167976
|
+
return [{ ...group, hooks: preservedHooks }];
|
|
167977
|
+
});
|
|
167978
|
+
existingHooks[event] = [...preservedGroups, ...Array.isArray(generatedGroups) ? generatedGroups : []];
|
|
167979
|
+
}
|
|
167980
|
+
merged.hooks = existingHooks;
|
|
167981
|
+
return merged;
|
|
167982
|
+
}
|
|
167983
|
+
function removeMemorixGrokHooks(config) {
|
|
167984
|
+
const cleaned = { ...config };
|
|
167985
|
+
const hooks = isJsonRecord(config.hooks) ? { ...config.hooks } : null;
|
|
167986
|
+
if (!hooks) return cleaned;
|
|
167987
|
+
for (const [event, groups] of Object.entries(hooks)) {
|
|
167988
|
+
if (!Array.isArray(groups)) continue;
|
|
167989
|
+
const preservedGroups = groups.flatMap((group) => {
|
|
167990
|
+
if (!isJsonRecord(group) || !Array.isArray(group.hooks)) return [group];
|
|
167991
|
+
const preservedHooks = group.hooks.filter((hook) => !isMemorixGrokHook(hook));
|
|
167992
|
+
if (preservedHooks.length === 0) return [];
|
|
167993
|
+
return [{ ...group, hooks: preservedHooks }];
|
|
167994
|
+
});
|
|
167995
|
+
if (preservedGroups.length > 0) hooks[event] = preservedGroups;
|
|
167996
|
+
else delete hooks[event];
|
|
167997
|
+
}
|
|
167998
|
+
if (Object.keys(hooks).length > 0) cleaned.hooks = hooks;
|
|
167999
|
+
else delete cleaned.hooks;
|
|
168000
|
+
return cleaned;
|
|
168001
|
+
}
|
|
168002
|
+
async function readGrokHookConfig(configPath) {
|
|
168003
|
+
let content;
|
|
168004
|
+
try {
|
|
168005
|
+
content = await fs21.readFile(configPath, "utf-8");
|
|
168006
|
+
} catch (error) {
|
|
168007
|
+
if (error.code === "ENOENT") return {};
|
|
168008
|
+
throw error;
|
|
168009
|
+
}
|
|
168010
|
+
if (!content.trim()) return {};
|
|
168011
|
+
try {
|
|
168012
|
+
const parsed = JSON.parse(content);
|
|
168013
|
+
if (!isJsonRecord(parsed)) throw new Error("top-level value must be an object");
|
|
168014
|
+
return parsed;
|
|
168015
|
+
} catch (error) {
|
|
168016
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
168017
|
+
throw new Error(`Cannot safely update Grok hook config ${configPath}: ${reason}`);
|
|
168018
|
+
}
|
|
168019
|
+
}
|
|
167933
168020
|
function generateCopilotConfig() {
|
|
167934
168021
|
const cmd = `${resolveHookCommand()} hook`;
|
|
167935
168022
|
const hasPwsh = detectPwsh();
|
|
@@ -168351,6 +168438,8 @@ function getProjectConfigPath(agent, projectRoot) {
|
|
|
168351
168438
|
return path33.join(projectRoot, ".gemini", "settings.json");
|
|
168352
168439
|
case "workbuddy":
|
|
168353
168440
|
return "";
|
|
168441
|
+
case "grok":
|
|
168442
|
+
return path33.join(projectRoot, ".grok", "hooks", "memorix.json");
|
|
168354
168443
|
default:
|
|
168355
168444
|
return path33.join(projectRoot, ".memorix", "hooks.json");
|
|
168356
168445
|
}
|
|
@@ -168386,6 +168475,8 @@ function getGlobalConfigPath(agent) {
|
|
|
168386
168475
|
return path33.join(process.env.DSH_HOME?.trim() || path33.join(home, ".dsh"), "AGENTS.md");
|
|
168387
168476
|
case "workbuddy":
|
|
168388
168477
|
return "";
|
|
168478
|
+
case "grok":
|
|
168479
|
+
return path33.join(getGrokHome(), "hooks", "memorix.json");
|
|
168389
168480
|
default:
|
|
168390
168481
|
return path33.join(home, ".memorix", "hooks.json");
|
|
168391
168482
|
}
|
|
@@ -168412,6 +168503,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
168412
168503
|
return path33.join(root, ".trae", "rules", "project_rules.md");
|
|
168413
168504
|
case "dsh":
|
|
168414
168505
|
return path33.join(process.env.DSH_HOME?.trim() || path33.join(root, ".dsh"), "AGENTS.md");
|
|
168506
|
+
case "grok":
|
|
168507
|
+
return path33.join(getGrokHome(), "AGENTS.md");
|
|
168415
168508
|
case "workbuddy":
|
|
168416
168509
|
return "";
|
|
168417
168510
|
default:
|
|
@@ -168442,6 +168535,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
168442
168535
|
return path33.join(root, "AGENTS.md");
|
|
168443
168536
|
case "workbuddy":
|
|
168444
168537
|
return path33.join(root, "AGENTS.md");
|
|
168538
|
+
case "grok":
|
|
168539
|
+
return path33.join(root, "AGENTS.md");
|
|
168445
168540
|
default:
|
|
168446
168541
|
return path33.join(root, ".agent", "rules", "memorix.md");
|
|
168447
168542
|
}
|
|
@@ -168493,6 +168588,12 @@ async function detectInstalledAgents() {
|
|
|
168493
168588
|
agents.push("kiro");
|
|
168494
168589
|
} catch {
|
|
168495
168590
|
}
|
|
168591
|
+
const grokDir = getGrokHome();
|
|
168592
|
+
try {
|
|
168593
|
+
await fs21.access(grokDir);
|
|
168594
|
+
agents.push("grok");
|
|
168595
|
+
} catch {
|
|
168596
|
+
}
|
|
168496
168597
|
const codexDir = path33.join(home, ".codex");
|
|
168497
168598
|
try {
|
|
168498
168599
|
await fs21.access(codexDir);
|
|
@@ -168579,6 +168680,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
168579
168680
|
if (basename5 === "AGENTS.md" || basename5 === "GEMINI.md" || basename5 === "CONTEXT.md") {
|
|
168580
168681
|
continue;
|
|
168581
168682
|
}
|
|
168683
|
+
if (agent === "grok" && path33.resolve(entry.path) === path33.resolve(configPath)) {
|
|
168684
|
+
continue;
|
|
168685
|
+
}
|
|
168582
168686
|
await unlink3(entry.path);
|
|
168583
168687
|
await removeFile2(projectRoot, entry.path);
|
|
168584
168688
|
} catch {
|
|
@@ -168591,6 +168695,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
168591
168695
|
case "claude":
|
|
168592
168696
|
generated = generateClaudeConfig();
|
|
168593
168697
|
break;
|
|
168698
|
+
case "grok":
|
|
168699
|
+
generated = generateGrokConfig();
|
|
168700
|
+
break;
|
|
168594
168701
|
case "copilot":
|
|
168595
168702
|
generated = generateCopilotConfig();
|
|
168596
168703
|
break;
|
|
@@ -168685,7 +168792,16 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
168685
168792
|
generated = generateClaudeConfig();
|
|
168686
168793
|
}
|
|
168687
168794
|
await fs21.mkdir(path33.dirname(configPath), { recursive: true });
|
|
168688
|
-
if (agent === "
|
|
168795
|
+
if (agent === "grok") {
|
|
168796
|
+
const existing = await readGrokHookConfig(configPath);
|
|
168797
|
+
const merged = mergeGrokHookConfig(existing, generated);
|
|
168798
|
+
await fs21.writeFile(configPath, JSON.stringify(merged, null, 2), "utf-8");
|
|
168799
|
+
try {
|
|
168800
|
+
const { recordFile: recordFile2 } = await Promise.resolve().then(() => (init_audit(), audit_exports));
|
|
168801
|
+
await recordFile2(projectRoot, "hook", configPath, agent);
|
|
168802
|
+
} catch {
|
|
168803
|
+
}
|
|
168804
|
+
} else if (agent === "kiro") {
|
|
168689
168805
|
const hookFiles = generateKiroHookFiles();
|
|
168690
168806
|
const hooksDir = path33.join(path33.dirname(configPath));
|
|
168691
168807
|
await fs21.mkdir(hooksDir, { recursive: true });
|
|
@@ -168766,6 +168882,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
168766
168882
|
case "kiro":
|
|
168767
168883
|
events.push("session_end", "user_prompt", "post_edit");
|
|
168768
168884
|
break;
|
|
168885
|
+
case "grok":
|
|
168886
|
+
events.push("session_start", "post_tool", "user_prompt", "pre_compact", "post_compact", "session_end");
|
|
168887
|
+
break;
|
|
168769
168888
|
}
|
|
168770
168889
|
await installAgentRules(agent, projectRoot, global2);
|
|
168771
168890
|
const skillPaths = await installOfficialSkillsForAgent(agent, projectRoot, global2);
|
|
@@ -168786,7 +168905,7 @@ async function installAgentRules(agent, projectRoot, global2 = false) {
|
|
|
168786
168905
|
const rulesPath = getAgentRulesPath(agent, rulesRoot, global2);
|
|
168787
168906
|
try {
|
|
168788
168907
|
await fs21.mkdir(path33.dirname(rulesPath), { recursive: true });
|
|
168789
|
-
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh") {
|
|
168908
|
+
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh" || agent === "grok") {
|
|
168790
168909
|
try {
|
|
168791
168910
|
const existing = await fs21.readFile(rulesPath, "utf-8");
|
|
168792
168911
|
await fs21.writeFile(rulesPath, mergeMemorixRulesContent(existing, rulesContent), "utf-8");
|
|
@@ -168955,7 +169074,16 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
168955
169074
|
const configPath = global2 ? getGlobalConfigPath(agent) : getProjectConfigPath(agent, projectRoot);
|
|
168956
169075
|
let success = false;
|
|
168957
169076
|
try {
|
|
168958
|
-
if (agent === "
|
|
169077
|
+
if (agent === "grok") {
|
|
169078
|
+
const config = await readGrokHookConfig(configPath);
|
|
169079
|
+
const cleaned = removeMemorixGrokHooks(config);
|
|
169080
|
+
if (Object.keys(cleaned).length === 0) {
|
|
169081
|
+
await fs21.unlink(configPath);
|
|
169082
|
+
} else {
|
|
169083
|
+
await fs21.writeFile(configPath, JSON.stringify(cleaned, null, 2), "utf-8");
|
|
169084
|
+
}
|
|
169085
|
+
success = true;
|
|
169086
|
+
} else if (agent === "kiro" || agent === "opencode") {
|
|
168959
169087
|
await fs21.unlink(configPath);
|
|
168960
169088
|
success = true;
|
|
168961
169089
|
} else {
|
|
@@ -168978,6 +169106,11 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
168978
169106
|
const agentFiles = prevFiles.filter((e2) => e2.agent === agent);
|
|
168979
169107
|
for (const entry of agentFiles) {
|
|
168980
169108
|
try {
|
|
169109
|
+
if (agent === "grok" && path33.resolve(entry.path) === path33.resolve(configPath)) {
|
|
169110
|
+
await removeFile2(projectRoot, entry.path);
|
|
169111
|
+
auditCleaned = true;
|
|
169112
|
+
continue;
|
|
169113
|
+
}
|
|
168981
169114
|
const basename5 = path33.basename(entry.path);
|
|
168982
169115
|
if (basename5 === "AGENTS.md" || basename5 === "GEMINI.md" || basename5 === "CONTEXT.md") {
|
|
168983
169116
|
try {
|
|
@@ -169038,14 +169171,14 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
169038
169171
|
}
|
|
169039
169172
|
async function getHookStatus(projectRoot) {
|
|
169040
169173
|
const results = [];
|
|
169041
|
-
const agents = ["claude", "copilot", "windsurf", "cursor", "kiro", "codex", "antigravity", "gemini-cli", "opencode", "pi", "trae"];
|
|
169174
|
+
const agents = ["claude", "copilot", "windsurf", "cursor", "kiro", "codex", "antigravity", "gemini-cli", "opencode", "pi", "trae", "grok"];
|
|
169042
169175
|
for (const agent of agents) {
|
|
169043
169176
|
const projectPath = getProjectConfigPath(agent, projectRoot);
|
|
169044
169177
|
const globalPath = getGlobalConfigPath(agent);
|
|
169045
169178
|
let installed = false;
|
|
169046
169179
|
let outdated = false;
|
|
169047
169180
|
let usedPath = projectPath;
|
|
169048
|
-
const verifiedByDefault = agent !== "opencode" && agent !== "pi";
|
|
169181
|
+
const verifiedByDefault = agent !== "opencode" && agent !== "pi" && agent !== "grok";
|
|
169049
169182
|
try {
|
|
169050
169183
|
await fs21.access(projectPath);
|
|
169051
169184
|
installed = true;
|
|
@@ -169073,11 +169206,12 @@ async function getHookStatus(projectRoot) {
|
|
|
169073
169206
|
if (agent === "copilot" && process.platform === "win32" && installed) {
|
|
169074
169207
|
runtimeReady = detectPwsh();
|
|
169075
169208
|
}
|
|
169209
|
+
const verified = installed && (verifiedByDefault || agent === "grok" && usedPath === globalPath);
|
|
169076
169210
|
results.push({
|
|
169077
169211
|
agent,
|
|
169078
169212
|
installed,
|
|
169079
169213
|
outdated,
|
|
169080
|
-
verified
|
|
169214
|
+
verified,
|
|
169081
169215
|
runtimeReady,
|
|
169082
169216
|
configPath: usedPath
|
|
169083
169217
|
});
|
|
@@ -172596,15 +172730,15 @@ ${json2}
|
|
|
172596
172730
|
if (inControlPlane) {
|
|
172597
172731
|
const http3 = await import("http");
|
|
172598
172732
|
const postData = JSON.stringify({ projectId: project.id, projectName: project.name });
|
|
172599
|
-
await new Promise((
|
|
172733
|
+
await new Promise((resolve5) => {
|
|
172600
172734
|
const req = http3.request({
|
|
172601
172735
|
hostname: "127.0.0.1",
|
|
172602
172736
|
port: portNum,
|
|
172603
172737
|
path: "/api/set-current-project",
|
|
172604
172738
|
method: "POST",
|
|
172605
172739
|
headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(postData) }
|
|
172606
|
-
}, () =>
|
|
172607
|
-
req.on("error", () =>
|
|
172740
|
+
}, () => resolve5());
|
|
172741
|
+
req.on("error", () => resolve5());
|
|
172608
172742
|
req.write(postData);
|
|
172609
172743
|
req.end();
|
|
172610
172744
|
});
|
|
@@ -172629,33 +172763,33 @@ ${json2}
|
|
|
172629
172763
|
}
|
|
172630
172764
|
if (dashboardRunning) {
|
|
172631
172765
|
const { createConnection } = await import("net");
|
|
172632
|
-
const isAlive = await new Promise((
|
|
172766
|
+
const isAlive = await new Promise((resolve5) => {
|
|
172633
172767
|
const sock = createConnection(portNum, "127.0.0.1");
|
|
172634
172768
|
sock.once("connect", () => {
|
|
172635
172769
|
sock.destroy();
|
|
172636
|
-
|
|
172770
|
+
resolve5(true);
|
|
172637
172771
|
});
|
|
172638
172772
|
sock.once("error", () => {
|
|
172639
172773
|
sock.destroy();
|
|
172640
|
-
|
|
172774
|
+
resolve5(false);
|
|
172641
172775
|
});
|
|
172642
172776
|
setTimeout(() => {
|
|
172643
172777
|
sock.destroy();
|
|
172644
|
-
|
|
172778
|
+
resolve5(false);
|
|
172645
172779
|
}, 1e3);
|
|
172646
172780
|
});
|
|
172647
172781
|
if (isAlive) {
|
|
172648
172782
|
const http3 = await import("http");
|
|
172649
172783
|
const postData = JSON.stringify({ projectId: project.id, projectName: project.name });
|
|
172650
|
-
await new Promise((
|
|
172784
|
+
await new Promise((resolve5) => {
|
|
172651
172785
|
const req = http3.request({
|
|
172652
172786
|
hostname: "127.0.0.1",
|
|
172653
172787
|
port: portNum,
|
|
172654
172788
|
path: "/api/set-current-project",
|
|
172655
172789
|
method: "POST",
|
|
172656
172790
|
headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(postData) }
|
|
172657
|
-
}, () =>
|
|
172658
|
-
req.on("error", () =>
|
|
172791
|
+
}, () => resolve5());
|
|
172792
|
+
req.on("error", () => resolve5());
|
|
172659
172793
|
req.write(postData);
|
|
172660
172794
|
req.end();
|
|
172661
172795
|
});
|
|
@@ -172701,18 +172835,18 @@ ${json2}
|
|
|
172701
172835
|
dashboardRunning = false;
|
|
172702
172836
|
});
|
|
172703
172837
|
const { createConnection } = await import("net");
|
|
172704
|
-
await new Promise((
|
|
172838
|
+
await new Promise((resolve5) => {
|
|
172705
172839
|
const deadline = Date.now() + 5e3;
|
|
172706
172840
|
const tryConnect = () => {
|
|
172707
172841
|
const sock = createConnection(portNum, "127.0.0.1");
|
|
172708
172842
|
sock.once("connect", () => {
|
|
172709
172843
|
sock.destroy();
|
|
172710
|
-
|
|
172844
|
+
resolve5();
|
|
172711
172845
|
});
|
|
172712
172846
|
sock.once("error", () => {
|
|
172713
172847
|
sock.destroy();
|
|
172714
172848
|
if (Date.now() < deadline) setTimeout(tryConnect, 100);
|
|
172715
|
-
else
|
|
172849
|
+
else resolve5();
|
|
172716
172850
|
});
|
|
172717
172851
|
};
|
|
172718
172852
|
tryConnect();
|
|
@@ -174407,7 +174541,7 @@ var init_serve_shared = __esm({
|
|
|
174407
174541
|
|
|
174408
174542
|
// src/cli/version.ts
|
|
174409
174543
|
function getCliVersion() {
|
|
174410
|
-
return true ? "1.8.
|
|
174544
|
+
return true ? "1.8.9" : pkg.version;
|
|
174411
174545
|
}
|
|
174412
174546
|
var init_version3 = __esm({
|
|
174413
174547
|
"src/cli/version.ts"() {
|
|
@@ -174492,10 +174626,10 @@ function describeAutoUpdateFailure(error, timeoutMs) {
|
|
|
174492
174626
|
async function fetchLatestVersion() {
|
|
174493
174627
|
try {
|
|
174494
174628
|
const { default: https2 } = await import("https");
|
|
174495
|
-
return new Promise((
|
|
174629
|
+
return new Promise((resolve5) => {
|
|
174496
174630
|
const req = https2.get(REGISTRY_URL, { timeout: 5e3 }, (res) => {
|
|
174497
174631
|
if (res.statusCode !== 200) {
|
|
174498
|
-
|
|
174632
|
+
resolve5(null);
|
|
174499
174633
|
return;
|
|
174500
174634
|
}
|
|
174501
174635
|
let body = "";
|
|
@@ -174505,16 +174639,16 @@ async function fetchLatestVersion() {
|
|
|
174505
174639
|
res.on("end", () => {
|
|
174506
174640
|
try {
|
|
174507
174641
|
const data = JSON.parse(body);
|
|
174508
|
-
|
|
174642
|
+
resolve5(data.version ?? null);
|
|
174509
174643
|
} catch {
|
|
174510
|
-
|
|
174644
|
+
resolve5(null);
|
|
174511
174645
|
}
|
|
174512
174646
|
});
|
|
174513
174647
|
});
|
|
174514
|
-
req.on("error", () =>
|
|
174648
|
+
req.on("error", () => resolve5(null));
|
|
174515
174649
|
req.on("timeout", () => {
|
|
174516
174650
|
req.destroy();
|
|
174517
|
-
|
|
174651
|
+
resolve5(null);
|
|
174518
174652
|
});
|
|
174519
174653
|
});
|
|
174520
174654
|
} catch {
|