memorix 1.8.8 → 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 +18 -0
- package/README.md +8 -1
- package/README.zh-CN.md +9 -1
- package/dist/cli/index.js +465 -255
- package/dist/cli/memcode.js +0 -0
- package/dist/index.js +313 -179
- package/dist/memcode-runtime/CHANGELOG.md +18 -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 +2 -1
- package/plugins/antigravity/memorix/plugin.json +1 -1
- package/plugins/claude/memorix/.claude-plugin/plugin.json +1 -1
- package/plugins/codebuddy/memorix/.codebuddy-plugin/plugin.json +1 -1
- package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
- package/plugins/copilot/memorix/plugin.json +1 -1
- 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 +1 -1
- package/plugins/pi/memorix/package.json +1 -1
- package/server.json +2 -2
- 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 +11 -4
- 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/sdk.js
CHANGED
|
@@ -4205,7 +4205,7 @@ function toProviderInput(input, baseUrl) {
|
|
|
4205
4205
|
return { type: input.modality, url: input.url };
|
|
4206
4206
|
}
|
|
4207
4207
|
function parseCacheJsonInWorker(filePath) {
|
|
4208
|
-
return new Promise((
|
|
4208
|
+
return new Promise((resolve5, reject) => {
|
|
4209
4209
|
void import("worker_threads").then(({ Worker }) => {
|
|
4210
4210
|
const worker = new Worker(
|
|
4211
4211
|
`
|
|
@@ -4226,7 +4226,7 @@ function parseCacheJsonInWorker(filePath) {
|
|
|
4226
4226
|
worker.once("message", (msg) => {
|
|
4227
4227
|
void worker.terminate();
|
|
4228
4228
|
if (msg?.ok && Array.isArray(msg.entries)) {
|
|
4229
|
-
|
|
4229
|
+
resolve5(msg.entries);
|
|
4230
4230
|
return;
|
|
4231
4231
|
}
|
|
4232
4232
|
reject(new Error(msg?.error || "embedding cache worker parse failed"));
|
|
@@ -4290,8 +4290,8 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4290
4290
|
let count2 = 0;
|
|
4291
4291
|
const writeLine = async (line) => {
|
|
4292
4292
|
if (!out.write(line)) {
|
|
4293
|
-
await new Promise((
|
|
4294
|
-
out.once("drain",
|
|
4293
|
+
await new Promise((resolve5, reject) => {
|
|
4294
|
+
out.once("drain", resolve5);
|
|
4295
4295
|
out.once("error", reject);
|
|
4296
4296
|
});
|
|
4297
4297
|
}
|
|
@@ -4323,7 +4323,7 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4323
4323
|
`);
|
|
4324
4324
|
count2 += 1;
|
|
4325
4325
|
if (count2 % 50 === 0) {
|
|
4326
|
-
await new Promise((
|
|
4326
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
4327
4327
|
}
|
|
4328
4328
|
}
|
|
4329
4329
|
}
|
|
@@ -4332,8 +4332,8 @@ async function streamJsonArrayToJsonl(filePath, tmpPath) {
|
|
|
4332
4332
|
}
|
|
4333
4333
|
}
|
|
4334
4334
|
} finally {
|
|
4335
|
-
await new Promise((
|
|
4336
|
-
out.end(() =>
|
|
4335
|
+
await new Promise((resolve5, reject) => {
|
|
4336
|
+
out.end(() => resolve5());
|
|
4337
4337
|
out.once("error", reject);
|
|
4338
4338
|
});
|
|
4339
4339
|
}
|
|
@@ -4378,7 +4378,7 @@ async function loadCacheJsonl(filePath) {
|
|
|
4378
4378
|
} catch {
|
|
4379
4379
|
}
|
|
4380
4380
|
if (onDiskCount % 250 === 0) {
|
|
4381
|
-
await new Promise((
|
|
4381
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
4382
4382
|
}
|
|
4383
4383
|
}
|
|
4384
4384
|
diskCacheEntryCount = onDiskCount;
|
|
@@ -4623,7 +4623,7 @@ async function saveDiskCacheNow() {
|
|
|
4623
4623
|
return;
|
|
4624
4624
|
}
|
|
4625
4625
|
const tmpPath = `${jsonlPath}.tmp`;
|
|
4626
|
-
await new Promise((
|
|
4626
|
+
await new Promise((resolve5, reject) => {
|
|
4627
4627
|
const out = createWriteStream(tmpPath);
|
|
4628
4628
|
const entries = cache3.entries();
|
|
4629
4629
|
const writeBatch = () => {
|
|
@@ -4642,7 +4642,7 @@ async function saveDiskCacheNow() {
|
|
|
4642
4642
|
}
|
|
4643
4643
|
setImmediate(writeBatch);
|
|
4644
4644
|
};
|
|
4645
|
-
out.on("finish",
|
|
4645
|
+
out.on("finish", resolve5);
|
|
4646
4646
|
out.on("error", reject);
|
|
4647
4647
|
writeBatch();
|
|
4648
4648
|
});
|
|
@@ -4746,7 +4746,7 @@ function abortError() {
|
|
|
4746
4746
|
}
|
|
4747
4747
|
function raceWithAbort(promise, signal) {
|
|
4748
4748
|
if (signal.aborted) return Promise.reject(abortError());
|
|
4749
|
-
return new Promise((
|
|
4749
|
+
return new Promise((resolve5, reject) => {
|
|
4750
4750
|
const onAbort = () => {
|
|
4751
4751
|
signal.removeEventListener("abort", onAbort);
|
|
4752
4752
|
reject(abortError());
|
|
@@ -4755,7 +4755,7 @@ function raceWithAbort(promise, signal) {
|
|
|
4755
4755
|
promise.then(
|
|
4756
4756
|
(value) => {
|
|
4757
4757
|
signal.removeEventListener("abort", onAbort);
|
|
4758
|
-
|
|
4758
|
+
resolve5(value);
|
|
4759
4759
|
},
|
|
4760
4760
|
(error) => {
|
|
4761
4761
|
signal.removeEventListener("abort", onAbort);
|
|
@@ -4766,12 +4766,12 @@ function raceWithAbort(promise, signal) {
|
|
|
4766
4766
|
}
|
|
4767
4767
|
async function waitForRetry(waitMs, signal) {
|
|
4768
4768
|
if (!signal) {
|
|
4769
|
-
await new Promise((
|
|
4769
|
+
await new Promise((resolve5) => setTimeout(resolve5, waitMs));
|
|
4770
4770
|
return;
|
|
4771
4771
|
}
|
|
4772
4772
|
const abortSignal = signal;
|
|
4773
4773
|
if (abortSignal.aborted) throw new Error("Embedding API retry aborted");
|
|
4774
|
-
await new Promise((
|
|
4774
|
+
await new Promise((resolve5, reject) => {
|
|
4775
4775
|
const timer = setTimeout(done, waitMs);
|
|
4776
4776
|
const onAbort = () => {
|
|
4777
4777
|
clearTimeout(timer);
|
|
@@ -4780,7 +4780,7 @@ async function waitForRetry(waitMs, signal) {
|
|
|
4780
4780
|
};
|
|
4781
4781
|
function done() {
|
|
4782
4782
|
abortSignal.removeEventListener("abort", onAbort);
|
|
4783
|
-
|
|
4783
|
+
resolve5();
|
|
4784
4784
|
}
|
|
4785
4785
|
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
4786
4786
|
});
|
|
@@ -6589,12 +6589,12 @@ var init_policy = __esm({
|
|
|
6589
6589
|
|
|
6590
6590
|
// src/timeout.ts
|
|
6591
6591
|
function withTimeout(promise, ms, label) {
|
|
6592
|
-
return new Promise((
|
|
6592
|
+
return new Promise((resolve5, reject) => {
|
|
6593
6593
|
const timer = setTimeout(() => reject(new Error(`${label} timed out after ${ms}ms`)), ms);
|
|
6594
6594
|
promise.then(
|
|
6595
6595
|
(value) => {
|
|
6596
6596
|
clearTimeout(timer);
|
|
6597
|
-
|
|
6597
|
+
resolve5(value);
|
|
6598
6598
|
},
|
|
6599
6599
|
(error) => {
|
|
6600
6600
|
clearTimeout(timer);
|
|
@@ -6606,7 +6606,7 @@ function withTimeout(promise, ms, label) {
|
|
|
6606
6606
|
function withTimeoutSignal(operation, ms, label, parentSignal) {
|
|
6607
6607
|
const controller = new AbortController();
|
|
6608
6608
|
const signal = parentSignal ? AbortSignal.any([parentSignal, controller.signal]) : controller.signal;
|
|
6609
|
-
return new Promise((
|
|
6609
|
+
return new Promise((resolve5, reject) => {
|
|
6610
6610
|
let settled = false;
|
|
6611
6611
|
let timedOut = false;
|
|
6612
6612
|
let timer;
|
|
@@ -6643,7 +6643,7 @@ function withTimeoutSignal(operation, ms, label, parentSignal) {
|
|
|
6643
6643
|
if (settled) return;
|
|
6644
6644
|
settled = true;
|
|
6645
6645
|
cleanup();
|
|
6646
|
-
|
|
6646
|
+
resolve5(value);
|
|
6647
6647
|
},
|
|
6648
6648
|
(error) => {
|
|
6649
6649
|
if (settled) return;
|
|
@@ -7476,7 +7476,7 @@ async function attachCachedVectors(database, candidates) {
|
|
|
7476
7476
|
} catch {
|
|
7477
7477
|
}
|
|
7478
7478
|
if (index % 50 === 0) {
|
|
7479
|
-
await new Promise((
|
|
7479
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
7480
7480
|
}
|
|
7481
7481
|
}
|
|
7482
7482
|
}
|
|
@@ -7552,7 +7552,7 @@ async function hydrateIndex(observations2, options = {}) {
|
|
|
7552
7552
|
}
|
|
7553
7553
|
}
|
|
7554
7554
|
}
|
|
7555
|
-
await new Promise((
|
|
7555
|
+
await new Promise((resolve5) => setImmediate(resolve5));
|
|
7556
7556
|
}
|
|
7557
7557
|
deferredCachedVectorHydration = options.skipCachedVectors ? null : deferCachedVectors ? attachCachedVectors(database, candidates).catch(() => {
|
|
7558
7558
|
}) : null;
|
|
@@ -9697,7 +9697,7 @@ function validateRequest(request) {
|
|
|
9697
9697
|
}
|
|
9698
9698
|
}
|
|
9699
9699
|
function collectOutput(stream2, limit2, onOverflow) {
|
|
9700
|
-
return new Promise((
|
|
9700
|
+
return new Promise((resolve5, reject) => {
|
|
9701
9701
|
let value = "";
|
|
9702
9702
|
let size = 0;
|
|
9703
9703
|
stream2.setEncoding("utf8");
|
|
@@ -9711,7 +9711,7 @@ function collectOutput(stream2, limit2, onOverflow) {
|
|
|
9711
9711
|
value += chunk;
|
|
9712
9712
|
});
|
|
9713
9713
|
stream2.on("error", reject);
|
|
9714
|
-
stream2.on("end", () =>
|
|
9714
|
+
stream2.on("end", () => resolve5(value));
|
|
9715
9715
|
});
|
|
9716
9716
|
}
|
|
9717
9717
|
async function runMaintenanceInChildProcess(request, options = {}) {
|
|
@@ -9722,7 +9722,7 @@ async function runMaintenanceInChildProcess(request, options = {}) {
|
|
|
9722
9722
|
}
|
|
9723
9723
|
const timeoutMs = Number.isFinite(options.timeoutMs) ? Math.max(1e3, Math.floor(options.timeoutMs)) : DEFAULT_TIMEOUT_MS;
|
|
9724
9724
|
const env2 = { ...process.env, ...options.env };
|
|
9725
|
-
return new Promise((
|
|
9725
|
+
return new Promise((resolve5, reject) => {
|
|
9726
9726
|
let settled = false;
|
|
9727
9727
|
let child;
|
|
9728
9728
|
try {
|
|
@@ -9762,7 +9762,7 @@ async function runMaintenanceInChildProcess(request, options = {}) {
|
|
|
9762
9762
|
)));
|
|
9763
9763
|
return;
|
|
9764
9764
|
}
|
|
9765
|
-
settle(() =>
|
|
9765
|
+
settle(() => resolve5(parseMaintenanceRunnerOutput(out)));
|
|
9766
9766
|
} catch (error) {
|
|
9767
9767
|
settle(() => reject(error));
|
|
9768
9768
|
}
|
|
@@ -19905,7 +19905,7 @@ var init_sleep = __esm({
|
|
|
19905
19905
|
"node_modules/openai/internal/utils/sleep.mjs"() {
|
|
19906
19906
|
"use strict";
|
|
19907
19907
|
init_esm_shims();
|
|
19908
|
-
sleep = (ms) => new Promise((
|
|
19908
|
+
sleep = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
19909
19909
|
}
|
|
19910
19910
|
});
|
|
19911
19911
|
|
|
@@ -21094,8 +21094,8 @@ var init_api_promise = __esm({
|
|
|
21094
21094
|
init_parse();
|
|
21095
21095
|
APIPromise = class _APIPromise extends Promise {
|
|
21096
21096
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse) {
|
|
21097
|
-
super((
|
|
21098
|
-
|
|
21097
|
+
super((resolve5) => {
|
|
21098
|
+
resolve5(null);
|
|
21099
21099
|
});
|
|
21100
21100
|
this.responsePromise = responsePromise;
|
|
21101
21101
|
this.parseResponse = parseResponse2;
|
|
@@ -21739,12 +21739,12 @@ var init_EventStream = __esm({
|
|
|
21739
21739
|
_EventStream_errored.set(this, false);
|
|
21740
21740
|
_EventStream_aborted.set(this, false);
|
|
21741
21741
|
_EventStream_catchingPromiseCreated.set(this, false);
|
|
21742
|
-
__classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((
|
|
21743
|
-
__classPrivateFieldSet(this, _EventStream_resolveConnectedPromise,
|
|
21742
|
+
__classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
21743
|
+
__classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve5, "f");
|
|
21744
21744
|
__classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, "f");
|
|
21745
21745
|
}), "f");
|
|
21746
|
-
__classPrivateFieldSet(this, _EventStream_endPromise, new Promise((
|
|
21747
|
-
__classPrivateFieldSet(this, _EventStream_resolveEndPromise,
|
|
21746
|
+
__classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve5, reject) => {
|
|
21747
|
+
__classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve5, "f");
|
|
21748
21748
|
__classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, "f");
|
|
21749
21749
|
}), "f");
|
|
21750
21750
|
__classPrivateFieldGet(this, _EventStream_connectedPromise, "f").catch(() => {
|
|
@@ -21828,11 +21828,11 @@ var init_EventStream = __esm({
|
|
|
21828
21828
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
21829
21829
|
*/
|
|
21830
21830
|
emitted(event) {
|
|
21831
|
-
return new Promise((
|
|
21831
|
+
return new Promise((resolve5, reject) => {
|
|
21832
21832
|
__classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, "f");
|
|
21833
21833
|
if (event !== "error")
|
|
21834
21834
|
this.once("error", reject);
|
|
21835
|
-
this.once(event,
|
|
21835
|
+
this.once(event, resolve5);
|
|
21836
21836
|
});
|
|
21837
21837
|
}
|
|
21838
21838
|
async done() {
|
|
@@ -22901,7 +22901,7 @@ var init_ChatCompletionStream = __esm({
|
|
|
22901
22901
|
if (done) {
|
|
22902
22902
|
return { value: void 0, done: true };
|
|
22903
22903
|
}
|
|
22904
|
-
return new Promise((
|
|
22904
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
22905
22905
|
}
|
|
22906
22906
|
const chunk = pushQueue.shift();
|
|
22907
22907
|
return { value: chunk, done: false };
|
|
@@ -23884,7 +23884,7 @@ var init_AssistantStream = __esm({
|
|
|
23884
23884
|
if (done) {
|
|
23885
23885
|
return { value: void 0, done: true };
|
|
23886
23886
|
}
|
|
23887
|
-
return new Promise((
|
|
23887
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
23888
23888
|
}
|
|
23889
23889
|
const chunk = pushQueue.shift();
|
|
23890
23890
|
return { value: chunk, done: false };
|
|
@@ -26173,7 +26173,7 @@ var init_ResponseStream = __esm({
|
|
|
26173
26173
|
if (done) {
|
|
26174
26174
|
return { value: void 0, done: true };
|
|
26175
26175
|
}
|
|
26176
|
-
return new Promise((
|
|
26176
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((event2) => event2 ? { value: event2, done: false } : { value: void 0, done: true });
|
|
26177
26177
|
}
|
|
26178
26178
|
const event = pushQueue.shift();
|
|
26179
26179
|
return { value: event, done: false };
|
|
@@ -46383,8 +46383,8 @@ var init_event_stream = __esm({
|
|
|
46383
46383
|
constructor(isComplete, extractResult) {
|
|
46384
46384
|
this.isComplete = isComplete;
|
|
46385
46385
|
this.extractResult = extractResult;
|
|
46386
|
-
this.finalResultPromise = new Promise((
|
|
46387
|
-
this.resolveFinalResult =
|
|
46386
|
+
this.finalResultPromise = new Promise((resolve5) => {
|
|
46387
|
+
this.resolveFinalResult = resolve5;
|
|
46388
46388
|
});
|
|
46389
46389
|
}
|
|
46390
46390
|
push(event) {
|
|
@@ -46418,7 +46418,7 @@ var init_event_stream = __esm({
|
|
|
46418
46418
|
} else if (this.done) {
|
|
46419
46419
|
return;
|
|
46420
46420
|
} else {
|
|
46421
|
-
const result = await new Promise((
|
|
46421
|
+
const result = await new Promise((resolve5) => this.waiting.push(resolve5));
|
|
46422
46422
|
if (result.done)
|
|
46423
46423
|
return;
|
|
46424
46424
|
yield result.value;
|
|
@@ -46689,7 +46689,7 @@ var init_sleep2 = __esm({
|
|
|
46689
46689
|
"node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs"() {
|
|
46690
46690
|
"use strict";
|
|
46691
46691
|
init_esm_shims();
|
|
46692
|
-
sleep2 = (ms) => new Promise((
|
|
46692
|
+
sleep2 = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
46693
46693
|
}
|
|
46694
46694
|
});
|
|
46695
46695
|
|
|
@@ -47489,8 +47489,8 @@ var init_api_promise2 = __esm({
|
|
|
47489
47489
|
init_parse2();
|
|
47490
47490
|
APIPromise2 = class _APIPromise extends Promise {
|
|
47491
47491
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse2) {
|
|
47492
|
-
super((
|
|
47493
|
-
|
|
47492
|
+
super((resolve5) => {
|
|
47493
|
+
resolve5(null);
|
|
47494
47494
|
});
|
|
47495
47495
|
this.responsePromise = responsePromise;
|
|
47496
47496
|
this.parseResponse = parseResponse2;
|
|
@@ -49451,12 +49451,12 @@ var init_BetaMessageStream = __esm({
|
|
|
49451
49451
|
}
|
|
49452
49452
|
return this._emit("error", new AnthropicError(String(error)));
|
|
49453
49453
|
});
|
|
49454
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_connectedPromise, new Promise((
|
|
49455
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_resolveConnectedPromise,
|
|
49454
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
49455
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_resolveConnectedPromise, resolve5, "f");
|
|
49456
49456
|
__classPrivateFieldSet2(this, _BetaMessageStream_rejectConnectedPromise, reject, "f");
|
|
49457
49457
|
}), "f");
|
|
49458
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_endPromise, new Promise((
|
|
49459
|
-
__classPrivateFieldSet2(this, _BetaMessageStream_resolveEndPromise,
|
|
49458
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_endPromise, new Promise((resolve5, reject) => {
|
|
49459
|
+
__classPrivateFieldSet2(this, _BetaMessageStream_resolveEndPromise, resolve5, "f");
|
|
49460
49460
|
__classPrivateFieldSet2(this, _BetaMessageStream_rejectEndPromise, reject, "f");
|
|
49461
49461
|
}), "f");
|
|
49462
49462
|
__classPrivateFieldGet2(this, _BetaMessageStream_connectedPromise, "f").catch(() => {
|
|
@@ -49626,11 +49626,11 @@ var init_BetaMessageStream = __esm({
|
|
|
49626
49626
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
49627
49627
|
*/
|
|
49628
49628
|
emitted(event) {
|
|
49629
|
-
return new Promise((
|
|
49629
|
+
return new Promise((resolve5, reject) => {
|
|
49630
49630
|
__classPrivateFieldSet2(this, _BetaMessageStream_catchingPromiseCreated, true, "f");
|
|
49631
49631
|
if (event !== "error")
|
|
49632
49632
|
this.once("error", reject);
|
|
49633
|
-
this.once(event,
|
|
49633
|
+
this.once(event, resolve5);
|
|
49634
49634
|
});
|
|
49635
49635
|
}
|
|
49636
49636
|
async done() {
|
|
@@ -49973,7 +49973,7 @@ var init_BetaMessageStream = __esm({
|
|
|
49973
49973
|
if (done) {
|
|
49974
49974
|
return { value: void 0, done: true };
|
|
49975
49975
|
}
|
|
49976
|
-
return new Promise((
|
|
49976
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
49977
49977
|
}
|
|
49978
49978
|
const chunk = pushQueue.shift();
|
|
49979
49979
|
return { value: chunk, done: false };
|
|
@@ -50048,13 +50048,13 @@ Wrap your summary in <summary></summary> tags.`;
|
|
|
50048
50048
|
|
|
50049
50049
|
// node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs
|
|
50050
50050
|
function promiseWithResolvers() {
|
|
50051
|
-
let
|
|
50051
|
+
let resolve5;
|
|
50052
50052
|
let reject;
|
|
50053
50053
|
const promise = new Promise((res, rej) => {
|
|
50054
|
-
|
|
50054
|
+
resolve5 = res;
|
|
50055
50055
|
reject = rej;
|
|
50056
50056
|
});
|
|
50057
|
-
return { promise, resolve:
|
|
50057
|
+
return { promise, resolve: resolve5, reject };
|
|
50058
50058
|
}
|
|
50059
50059
|
async function generateToolResponse(params, lastMessage = params.messages.at(-1), requestOptions) {
|
|
50060
50060
|
if (!lastMessage || lastMessage.role !== "assistant" || !lastMessage.content || typeof lastMessage.content === "string") {
|
|
@@ -51912,12 +51912,12 @@ var init_MessageStream = __esm({
|
|
|
51912
51912
|
}
|
|
51913
51913
|
return this._emit("error", new AnthropicError(String(error)));
|
|
51914
51914
|
});
|
|
51915
|
-
__classPrivateFieldSet2(this, _MessageStream_connectedPromise, new Promise((
|
|
51916
|
-
__classPrivateFieldSet2(this, _MessageStream_resolveConnectedPromise,
|
|
51915
|
+
__classPrivateFieldSet2(this, _MessageStream_connectedPromise, new Promise((resolve5, reject) => {
|
|
51916
|
+
__classPrivateFieldSet2(this, _MessageStream_resolveConnectedPromise, resolve5, "f");
|
|
51917
51917
|
__classPrivateFieldSet2(this, _MessageStream_rejectConnectedPromise, reject, "f");
|
|
51918
51918
|
}), "f");
|
|
51919
|
-
__classPrivateFieldSet2(this, _MessageStream_endPromise, new Promise((
|
|
51920
|
-
__classPrivateFieldSet2(this, _MessageStream_resolveEndPromise,
|
|
51919
|
+
__classPrivateFieldSet2(this, _MessageStream_endPromise, new Promise((resolve5, reject) => {
|
|
51920
|
+
__classPrivateFieldSet2(this, _MessageStream_resolveEndPromise, resolve5, "f");
|
|
51921
51921
|
__classPrivateFieldSet2(this, _MessageStream_rejectEndPromise, reject, "f");
|
|
51922
51922
|
}), "f");
|
|
51923
51923
|
__classPrivateFieldGet2(this, _MessageStream_connectedPromise, "f").catch(() => {
|
|
@@ -52087,11 +52087,11 @@ var init_MessageStream = __esm({
|
|
|
52087
52087
|
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
52088
52088
|
*/
|
|
52089
52089
|
emitted(event) {
|
|
52090
|
-
return new Promise((
|
|
52090
|
+
return new Promise((resolve5, reject) => {
|
|
52091
52091
|
__classPrivateFieldSet2(this, _MessageStream_catchingPromiseCreated, true, "f");
|
|
52092
52092
|
if (event !== "error")
|
|
52093
52093
|
this.once("error", reject);
|
|
52094
|
-
this.once(event,
|
|
52094
|
+
this.once(event, resolve5);
|
|
52095
52095
|
});
|
|
52096
52096
|
}
|
|
52097
52097
|
async done() {
|
|
@@ -52409,7 +52409,7 @@ var init_MessageStream = __esm({
|
|
|
52409
52409
|
if (done) {
|
|
52410
52410
|
return { value: void 0, done: true };
|
|
52411
52411
|
}
|
|
52412
|
-
return new Promise((
|
|
52412
|
+
return new Promise((resolve5, reject) => readQueue.push({ resolve: resolve5, reject })).then((chunk2) => chunk2 ? { value: chunk2, done: false } : { value: void 0, done: true });
|
|
52413
52413
|
}
|
|
52414
52414
|
const chunk = pushQueue.shift();
|
|
52415
52415
|
return { value: chunk, done: false };
|
|
@@ -55787,7 +55787,7 @@ var require_p_retry = __commonJS({
|
|
|
55787
55787
|
return error;
|
|
55788
55788
|
};
|
|
55789
55789
|
var isNetworkError = (errorMessage) => networkErrorMsgs.includes(errorMessage);
|
|
55790
|
-
var pRetry2 = (input, options) => new Promise((
|
|
55790
|
+
var pRetry2 = (input, options) => new Promise((resolve5, reject) => {
|
|
55791
55791
|
options = {
|
|
55792
55792
|
onFailedAttempt: () => {
|
|
55793
55793
|
},
|
|
@@ -55797,7 +55797,7 @@ var require_p_retry = __commonJS({
|
|
|
55797
55797
|
const operation = retry2.operation(options);
|
|
55798
55798
|
operation.attempt(async (attemptNumber) => {
|
|
55799
55799
|
try {
|
|
55800
|
-
|
|
55800
|
+
resolve5(await input(attemptNumber));
|
|
55801
55801
|
} catch (error) {
|
|
55802
55802
|
if (!(error instanceof Error)) {
|
|
55803
55803
|
reject(new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`));
|
|
@@ -56335,8 +56335,8 @@ var require_retry3 = __commonJS({
|
|
|
56335
56335
|
}
|
|
56336
56336
|
const delay2 = getNextRetryDelay(config);
|
|
56337
56337
|
err.config.retryConfig.currentRetryAttempt += 1;
|
|
56338
|
-
const backoff = config.retryBackoff ? config.retryBackoff(err, delay2) : new Promise((
|
|
56339
|
-
setTimeout(
|
|
56338
|
+
const backoff = config.retryBackoff ? config.retryBackoff(err, delay2) : new Promise((resolve5) => {
|
|
56339
|
+
setTimeout(resolve5, delay2);
|
|
56340
56340
|
});
|
|
56341
56341
|
if (config.onRetryAttempt) {
|
|
56342
56342
|
await config.onRetryAttempt(err);
|
|
@@ -57253,8 +57253,8 @@ var require_helpers = __commonJS({
|
|
|
57253
57253
|
function req(url, opts = {}) {
|
|
57254
57254
|
const href = typeof url === "string" ? url : url.href;
|
|
57255
57255
|
const req2 = (href.startsWith("https:") ? https2 : http3).request(url, opts);
|
|
57256
|
-
const promise = new Promise((
|
|
57257
|
-
req2.once("response",
|
|
57256
|
+
const promise = new Promise((resolve5, reject) => {
|
|
57257
|
+
req2.once("response", resolve5).once("error", reject).end();
|
|
57258
57258
|
});
|
|
57259
57259
|
req2.then = promise.then.bind(promise);
|
|
57260
57260
|
return req2;
|
|
@@ -57433,7 +57433,7 @@ var require_parse_proxy_response = __commonJS({
|
|
|
57433
57433
|
var debug_1 = __importDefault(require_src());
|
|
57434
57434
|
var debug = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
|
|
57435
57435
|
function parseProxyResponse(socket) {
|
|
57436
|
-
return new Promise((
|
|
57436
|
+
return new Promise((resolve5, reject) => {
|
|
57437
57437
|
let buffersLength = 0;
|
|
57438
57438
|
const buffers = [];
|
|
57439
57439
|
function read() {
|
|
@@ -57499,7 +57499,7 @@ var require_parse_proxy_response = __commonJS({
|
|
|
57499
57499
|
}
|
|
57500
57500
|
debug("got proxy server response: %o %o", firstLine, headers);
|
|
57501
57501
|
cleanup();
|
|
57502
|
-
|
|
57502
|
+
resolve5({
|
|
57503
57503
|
connect: {
|
|
57504
57504
|
statusCode,
|
|
57505
57505
|
statusText,
|
|
@@ -57746,7 +57746,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
57746
57746
|
return new originalPromise(executor);
|
|
57747
57747
|
}
|
|
57748
57748
|
function promiseResolvedWith(value) {
|
|
57749
|
-
return newPromise((
|
|
57749
|
+
return newPromise((resolve5) => resolve5(value));
|
|
57750
57750
|
}
|
|
57751
57751
|
function promiseRejectedWith(reason) {
|
|
57752
57752
|
return originalPromiseReject(reason);
|
|
@@ -57916,8 +57916,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
57916
57916
|
return new TypeError("Cannot " + name + " a stream using a released reader");
|
|
57917
57917
|
}
|
|
57918
57918
|
function defaultReaderClosedPromiseInitialize(reader2) {
|
|
57919
|
-
reader2._closedPromise = newPromise((
|
|
57920
|
-
reader2._closedPromise_resolve =
|
|
57919
|
+
reader2._closedPromise = newPromise((resolve5, reject) => {
|
|
57920
|
+
reader2._closedPromise_resolve = resolve5;
|
|
57921
57921
|
reader2._closedPromise_reject = reject;
|
|
57922
57922
|
});
|
|
57923
57923
|
}
|
|
@@ -58091,8 +58091,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
58091
58091
|
}
|
|
58092
58092
|
let resolvePromise;
|
|
58093
58093
|
let rejectPromise;
|
|
58094
|
-
const promise = newPromise((
|
|
58095
|
-
resolvePromise =
|
|
58094
|
+
const promise = newPromise((resolve5, reject) => {
|
|
58095
|
+
resolvePromise = resolve5;
|
|
58096
58096
|
rejectPromise = reject;
|
|
58097
58097
|
});
|
|
58098
58098
|
const readRequest = {
|
|
@@ -58197,8 +58197,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
58197
58197
|
const reader2 = this._reader;
|
|
58198
58198
|
let resolvePromise;
|
|
58199
58199
|
let rejectPromise;
|
|
58200
|
-
const promise = newPromise((
|
|
58201
|
-
resolvePromise =
|
|
58200
|
+
const promise = newPromise((resolve5, reject) => {
|
|
58201
|
+
resolvePromise = resolve5;
|
|
58202
58202
|
rejectPromise = reject;
|
|
58203
58203
|
});
|
|
58204
58204
|
const readRequest = {
|
|
@@ -59217,8 +59217,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59217
59217
|
}
|
|
59218
59218
|
let resolvePromise;
|
|
59219
59219
|
let rejectPromise;
|
|
59220
|
-
const promise = newPromise((
|
|
59221
|
-
resolvePromise =
|
|
59220
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59221
|
+
resolvePromise = resolve5;
|
|
59222
59222
|
rejectPromise = reject;
|
|
59223
59223
|
});
|
|
59224
59224
|
const readIntoRequest = {
|
|
@@ -59530,10 +59530,10 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59530
59530
|
wasAlreadyErroring = true;
|
|
59531
59531
|
reason = void 0;
|
|
59532
59532
|
}
|
|
59533
|
-
const promise = newPromise((
|
|
59533
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59534
59534
|
stream2._pendingAbortRequest = {
|
|
59535
59535
|
_promise: void 0,
|
|
59536
|
-
_resolve:
|
|
59536
|
+
_resolve: resolve5,
|
|
59537
59537
|
_reject: reject,
|
|
59538
59538
|
_reason: reason,
|
|
59539
59539
|
_wasAlreadyErroring: wasAlreadyErroring
|
|
@@ -59550,9 +59550,9 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59550
59550
|
if (state === "closed" || state === "errored") {
|
|
59551
59551
|
return promiseRejectedWith(new TypeError(`The stream (in ${state} state) is not in the writable state and cannot be closed`));
|
|
59552
59552
|
}
|
|
59553
|
-
const promise = newPromise((
|
|
59553
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59554
59554
|
const closeRequest = {
|
|
59555
|
-
_resolve:
|
|
59555
|
+
_resolve: resolve5,
|
|
59556
59556
|
_reject: reject
|
|
59557
59557
|
};
|
|
59558
59558
|
stream2._closeRequest = closeRequest;
|
|
@@ -59565,9 +59565,9 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
59565
59565
|
return promise;
|
|
59566
59566
|
}
|
|
59567
59567
|
function WritableStreamAddWriteRequest(stream2) {
|
|
59568
|
-
const promise = newPromise((
|
|
59568
|
+
const promise = newPromise((resolve5, reject) => {
|
|
59569
59569
|
const writeRequest = {
|
|
59570
|
-
_resolve:
|
|
59570
|
+
_resolve: resolve5,
|
|
59571
59571
|
_reject: reject
|
|
59572
59572
|
};
|
|
59573
59573
|
stream2._writeRequests.push(writeRequest);
|
|
@@ -60183,8 +60183,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60183
60183
|
return new TypeError("Cannot " + name + " a stream using a released writer");
|
|
60184
60184
|
}
|
|
60185
60185
|
function defaultWriterClosedPromiseInitialize(writer) {
|
|
60186
|
-
writer._closedPromise = newPromise((
|
|
60187
|
-
writer._closedPromise_resolve =
|
|
60186
|
+
writer._closedPromise = newPromise((resolve5, reject) => {
|
|
60187
|
+
writer._closedPromise_resolve = resolve5;
|
|
60188
60188
|
writer._closedPromise_reject = reject;
|
|
60189
60189
|
writer._closedPromiseState = "pending";
|
|
60190
60190
|
});
|
|
@@ -60220,8 +60220,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60220
60220
|
writer._closedPromiseState = "resolved";
|
|
60221
60221
|
}
|
|
60222
60222
|
function defaultWriterReadyPromiseInitialize(writer) {
|
|
60223
|
-
writer._readyPromise = newPromise((
|
|
60224
|
-
writer._readyPromise_resolve =
|
|
60223
|
+
writer._readyPromise = newPromise((resolve5, reject) => {
|
|
60224
|
+
writer._readyPromise_resolve = resolve5;
|
|
60225
60225
|
writer._readyPromise_reject = reject;
|
|
60226
60226
|
});
|
|
60227
60227
|
writer._readyPromiseState = "pending";
|
|
@@ -60308,7 +60308,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60308
60308
|
source._disturbed = true;
|
|
60309
60309
|
let shuttingDown = false;
|
|
60310
60310
|
let currentWrite = promiseResolvedWith(void 0);
|
|
60311
|
-
return newPromise((
|
|
60311
|
+
return newPromise((resolve5, reject) => {
|
|
60312
60312
|
let abortAlgorithm;
|
|
60313
60313
|
if (signal !== void 0) {
|
|
60314
60314
|
abortAlgorithm = () => {
|
|
@@ -60453,7 +60453,7 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60453
60453
|
if (isError) {
|
|
60454
60454
|
reject(error);
|
|
60455
60455
|
} else {
|
|
60456
|
-
|
|
60456
|
+
resolve5(void 0);
|
|
60457
60457
|
}
|
|
60458
60458
|
return null;
|
|
60459
60459
|
}
|
|
@@ -60734,8 +60734,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60734
60734
|
let branch1;
|
|
60735
60735
|
let branch2;
|
|
60736
60736
|
let resolveCancelPromise;
|
|
60737
|
-
const cancelPromise = newPromise((
|
|
60738
|
-
resolveCancelPromise =
|
|
60737
|
+
const cancelPromise = newPromise((resolve5) => {
|
|
60738
|
+
resolveCancelPromise = resolve5;
|
|
60739
60739
|
});
|
|
60740
60740
|
function pullAlgorithm() {
|
|
60741
60741
|
if (reading) {
|
|
@@ -60826,8 +60826,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
60826
60826
|
let branch1;
|
|
60827
60827
|
let branch2;
|
|
60828
60828
|
let resolveCancelPromise;
|
|
60829
|
-
const cancelPromise = newPromise((
|
|
60830
|
-
resolveCancelPromise =
|
|
60829
|
+
const cancelPromise = newPromise((resolve5) => {
|
|
60830
|
+
resolveCancelPromise = resolve5;
|
|
60831
60831
|
});
|
|
60832
60832
|
function forwardReaderError(thisReader) {
|
|
60833
60833
|
uponRejection(thisReader._closedPromise, (r2) => {
|
|
@@ -61607,8 +61607,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61607
61607
|
const writableHighWaterMark = ExtractHighWaterMark(writableStrategy, 1);
|
|
61608
61608
|
const writableSizeAlgorithm = ExtractSizeAlgorithm(writableStrategy);
|
|
61609
61609
|
let startPromise_resolve;
|
|
61610
|
-
const startPromise = newPromise((
|
|
61611
|
-
startPromise_resolve =
|
|
61610
|
+
const startPromise = newPromise((resolve5) => {
|
|
61611
|
+
startPromise_resolve = resolve5;
|
|
61612
61612
|
});
|
|
61613
61613
|
InitializeTransformStream(this, startPromise, writableHighWaterMark, writableSizeAlgorithm, readableHighWaterMark, readableSizeAlgorithm);
|
|
61614
61614
|
SetUpTransformStreamDefaultControllerFromTransformer(this, transformer);
|
|
@@ -61701,8 +61701,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61701
61701
|
if (stream2._backpressureChangePromise !== void 0) {
|
|
61702
61702
|
stream2._backpressureChangePromise_resolve();
|
|
61703
61703
|
}
|
|
61704
|
-
stream2._backpressureChangePromise = newPromise((
|
|
61705
|
-
stream2._backpressureChangePromise_resolve =
|
|
61704
|
+
stream2._backpressureChangePromise = newPromise((resolve5) => {
|
|
61705
|
+
stream2._backpressureChangePromise_resolve = resolve5;
|
|
61706
61706
|
});
|
|
61707
61707
|
stream2._backpressure = backpressure;
|
|
61708
61708
|
}
|
|
@@ -61870,8 +61870,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61870
61870
|
return controller._finishPromise;
|
|
61871
61871
|
}
|
|
61872
61872
|
const readable = stream2._readable;
|
|
61873
|
-
controller._finishPromise = newPromise((
|
|
61874
|
-
controller._finishPromise_resolve =
|
|
61873
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61874
|
+
controller._finishPromise_resolve = resolve5;
|
|
61875
61875
|
controller._finishPromise_reject = reject;
|
|
61876
61876
|
});
|
|
61877
61877
|
const cancelPromise = controller._cancelAlgorithm(reason);
|
|
@@ -61897,8 +61897,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61897
61897
|
return controller._finishPromise;
|
|
61898
61898
|
}
|
|
61899
61899
|
const readable = stream2._readable;
|
|
61900
|
-
controller._finishPromise = newPromise((
|
|
61901
|
-
controller._finishPromise_resolve =
|
|
61900
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61901
|
+
controller._finishPromise_resolve = resolve5;
|
|
61902
61902
|
controller._finishPromise_reject = reject;
|
|
61903
61903
|
});
|
|
61904
61904
|
const flushPromise = controller._flushAlgorithm();
|
|
@@ -61928,8 +61928,8 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
61928
61928
|
return controller._finishPromise;
|
|
61929
61929
|
}
|
|
61930
61930
|
const writable = stream2._writable;
|
|
61931
|
-
controller._finishPromise = newPromise((
|
|
61932
|
-
controller._finishPromise_resolve =
|
|
61931
|
+
controller._finishPromise = newPromise((resolve5, reject) => {
|
|
61932
|
+
controller._finishPromise_resolve = resolve5;
|
|
61933
61933
|
controller._finishPromise_reject = reject;
|
|
61934
61934
|
});
|
|
61935
61935
|
const cancelPromise = controller._cancelAlgorithm(reason);
|
|
@@ -63916,7 +63916,7 @@ import zlib from "zlib";
|
|
|
63916
63916
|
import Stream4, { PassThrough as PassThrough2, pipeline as pump } from "stream";
|
|
63917
63917
|
import { Buffer as Buffer3 } from "buffer";
|
|
63918
63918
|
async function fetch2(url, options_) {
|
|
63919
|
-
return new Promise((
|
|
63919
|
+
return new Promise((resolve5, reject) => {
|
|
63920
63920
|
const request = new Request2(url, options_);
|
|
63921
63921
|
const { parsedURL, options } = getNodeRequestOptions(request);
|
|
63922
63922
|
if (!supportedSchemas.has(parsedURL.protocol)) {
|
|
@@ -63925,7 +63925,7 @@ async function fetch2(url, options_) {
|
|
|
63925
63925
|
if (parsedURL.protocol === "data:") {
|
|
63926
63926
|
const data = dist_default(request.url);
|
|
63927
63927
|
const response2 = new Response2(data, { headers: { "Content-Type": data.typeFull } });
|
|
63928
|
-
|
|
63928
|
+
resolve5(response2);
|
|
63929
63929
|
return;
|
|
63930
63930
|
}
|
|
63931
63931
|
const send = (parsedURL.protocol === "https:" ? https : http2).request;
|
|
@@ -64047,7 +64047,7 @@ async function fetch2(url, options_) {
|
|
|
64047
64047
|
if (responseReferrerPolicy) {
|
|
64048
64048
|
requestOptions.referrerPolicy = responseReferrerPolicy;
|
|
64049
64049
|
}
|
|
64050
|
-
|
|
64050
|
+
resolve5(fetch2(new Request2(locationURL, requestOptions)));
|
|
64051
64051
|
finalize();
|
|
64052
64052
|
return;
|
|
64053
64053
|
}
|
|
@@ -64080,7 +64080,7 @@ async function fetch2(url, options_) {
|
|
|
64080
64080
|
const codings = headers.get("Content-Encoding");
|
|
64081
64081
|
if (!request.compress || request.method === "HEAD" || codings === null || response_.statusCode === 204 || response_.statusCode === 304) {
|
|
64082
64082
|
response = new Response2(body, responseOptions);
|
|
64083
|
-
|
|
64083
|
+
resolve5(response);
|
|
64084
64084
|
return;
|
|
64085
64085
|
}
|
|
64086
64086
|
const zlibOptions = {
|
|
@@ -64094,7 +64094,7 @@ async function fetch2(url, options_) {
|
|
|
64094
64094
|
}
|
|
64095
64095
|
});
|
|
64096
64096
|
response = new Response2(body, responseOptions);
|
|
64097
|
-
|
|
64097
|
+
resolve5(response);
|
|
64098
64098
|
return;
|
|
64099
64099
|
}
|
|
64100
64100
|
if (codings === "deflate" || codings === "x-deflate") {
|
|
@@ -64118,12 +64118,12 @@ async function fetch2(url, options_) {
|
|
|
64118
64118
|
});
|
|
64119
64119
|
}
|
|
64120
64120
|
response = new Response2(body, responseOptions);
|
|
64121
|
-
|
|
64121
|
+
resolve5(response);
|
|
64122
64122
|
});
|
|
64123
64123
|
raw.once("end", () => {
|
|
64124
64124
|
if (!response) {
|
|
64125
64125
|
response = new Response2(body, responseOptions);
|
|
64126
|
-
|
|
64126
|
+
resolve5(response);
|
|
64127
64127
|
}
|
|
64128
64128
|
});
|
|
64129
64129
|
return;
|
|
@@ -64135,11 +64135,11 @@ async function fetch2(url, options_) {
|
|
|
64135
64135
|
}
|
|
64136
64136
|
});
|
|
64137
64137
|
response = new Response2(body, responseOptions);
|
|
64138
|
-
|
|
64138
|
+
resolve5(response);
|
|
64139
64139
|
return;
|
|
64140
64140
|
}
|
|
64141
64141
|
response = new Response2(body, responseOptions);
|
|
64142
|
-
|
|
64142
|
+
resolve5(response);
|
|
64143
64143
|
});
|
|
64144
64144
|
writeToStream(request_, request).catch(reject);
|
|
64145
64145
|
});
|
|
@@ -70262,7 +70262,7 @@ var require_jwtaccess = __commonJS({
|
|
|
70262
70262
|
}
|
|
70263
70263
|
}
|
|
70264
70264
|
fromStreamAsync(inputStream) {
|
|
70265
|
-
return new Promise((
|
|
70265
|
+
return new Promise((resolve5, reject) => {
|
|
70266
70266
|
if (!inputStream) {
|
|
70267
70267
|
reject(new Error("Must pass in a stream containing the service account auth settings."));
|
|
70268
70268
|
}
|
|
@@ -70271,7 +70271,7 @@ var require_jwtaccess = __commonJS({
|
|
|
70271
70271
|
try {
|
|
70272
70272
|
const data = JSON.parse(s2);
|
|
70273
70273
|
this.fromJSON(data);
|
|
70274
|
-
|
|
70274
|
+
resolve5();
|
|
70275
70275
|
} catch (err) {
|
|
70276
70276
|
reject(err);
|
|
70277
70277
|
}
|
|
@@ -70511,7 +70511,7 @@ var require_jwtclient = __commonJS({
|
|
|
70511
70511
|
}
|
|
70512
70512
|
}
|
|
70513
70513
|
fromStreamAsync(inputStream) {
|
|
70514
|
-
return new Promise((
|
|
70514
|
+
return new Promise((resolve5, reject) => {
|
|
70515
70515
|
if (!inputStream) {
|
|
70516
70516
|
throw new Error("Must pass in a stream containing the service account auth settings.");
|
|
70517
70517
|
}
|
|
@@ -70520,7 +70520,7 @@ var require_jwtclient = __commonJS({
|
|
|
70520
70520
|
try {
|
|
70521
70521
|
const data = JSON.parse(s2);
|
|
70522
70522
|
this.fromJSON(data);
|
|
70523
|
-
|
|
70523
|
+
resolve5();
|
|
70524
70524
|
} catch (e2) {
|
|
70525
70525
|
reject(e2);
|
|
70526
70526
|
}
|
|
@@ -70654,7 +70654,7 @@ var require_refreshclient = __commonJS({
|
|
|
70654
70654
|
}
|
|
70655
70655
|
}
|
|
70656
70656
|
async fromStreamAsync(inputStream) {
|
|
70657
|
-
return new Promise((
|
|
70657
|
+
return new Promise((resolve5, reject) => {
|
|
70658
70658
|
if (!inputStream) {
|
|
70659
70659
|
return reject(new Error("Must pass in a stream containing the user refresh token."));
|
|
70660
70660
|
}
|
|
@@ -70663,7 +70663,7 @@ var require_refreshclient = __commonJS({
|
|
|
70663
70663
|
try {
|
|
70664
70664
|
const data = JSON.parse(s2);
|
|
70665
70665
|
this.fromJSON(data);
|
|
70666
|
-
return
|
|
70666
|
+
return resolve5();
|
|
70667
70667
|
} catch (err) {
|
|
70668
70668
|
return reject(err);
|
|
70669
70669
|
}
|
|
@@ -72509,7 +72509,7 @@ var require_pluggable_auth_handler = __commonJS({
|
|
|
72509
72509
|
* @return A promise that resolves with the executable response.
|
|
72510
72510
|
*/
|
|
72511
72511
|
retrieveResponseFromExecutable(envMap) {
|
|
72512
|
-
return new Promise((
|
|
72512
|
+
return new Promise((resolve5, reject) => {
|
|
72513
72513
|
const child = childProcess.spawn(this.commandComponents[0], this.commandComponents.slice(1), {
|
|
72514
72514
|
env: { ...process.env, ...Object.fromEntries(envMap) }
|
|
72515
72515
|
});
|
|
@@ -72531,7 +72531,7 @@ var require_pluggable_auth_handler = __commonJS({
|
|
|
72531
72531
|
try {
|
|
72532
72532
|
const responseJson = JSON.parse(output);
|
|
72533
72533
|
const response = new executable_response_1.ExecutableResponse(responseJson);
|
|
72534
|
-
return
|
|
72534
|
+
return resolve5(response);
|
|
72535
72535
|
} catch (error) {
|
|
72536
72536
|
if (error instanceof executable_response_1.ExecutableResponseError) {
|
|
72537
72537
|
return reject(error);
|
|
@@ -73726,7 +73726,7 @@ var require_googleauth = __commonJS({
|
|
|
73726
73726
|
}
|
|
73727
73727
|
}
|
|
73728
73728
|
fromStreamAsync(inputStream, options) {
|
|
73729
|
-
return new Promise((
|
|
73729
|
+
return new Promise((resolve5, reject) => {
|
|
73730
73730
|
if (!inputStream) {
|
|
73731
73731
|
throw new Error("Must pass in a stream containing the Google auth settings.");
|
|
73732
73732
|
}
|
|
@@ -73736,7 +73736,7 @@ var require_googleauth = __commonJS({
|
|
|
73736
73736
|
try {
|
|
73737
73737
|
const data = JSON.parse(chunks.join(""));
|
|
73738
73738
|
const r2 = this._cacheClientFromJSON(data, options);
|
|
73739
|
-
return
|
|
73739
|
+
return resolve5(r2);
|
|
73740
73740
|
} catch (err) {
|
|
73741
73741
|
if (!this.keyFilename)
|
|
73742
73742
|
throw err;
|
|
@@ -73746,7 +73746,7 @@ var require_googleauth = __commonJS({
|
|
|
73746
73746
|
});
|
|
73747
73747
|
this.cachedCredential = client;
|
|
73748
73748
|
this.setGapicJWTValues(client);
|
|
73749
|
-
return
|
|
73749
|
+
return resolve5(client);
|
|
73750
73750
|
}
|
|
73751
73751
|
} catch (err) {
|
|
73752
73752
|
return reject(err);
|
|
@@ -73782,17 +73782,17 @@ var require_googleauth = __commonJS({
|
|
|
73782
73782
|
* Run the Google Cloud SDK command that prints the default project ID
|
|
73783
73783
|
*/
|
|
73784
73784
|
async getDefaultServiceProjectId() {
|
|
73785
|
-
return new Promise((
|
|
73785
|
+
return new Promise((resolve5) => {
|
|
73786
73786
|
(0, child_process_1.exec)("gcloud config config-helper --format json", (err, stdout) => {
|
|
73787
73787
|
if (!err && stdout) {
|
|
73788
73788
|
try {
|
|
73789
73789
|
const projectId = JSON.parse(stdout).configuration.properties.core.project;
|
|
73790
|
-
|
|
73790
|
+
resolve5(projectId);
|
|
73791
73791
|
return;
|
|
73792
73792
|
} catch (e2) {
|
|
73793
73793
|
}
|
|
73794
73794
|
}
|
|
73795
|
-
|
|
73795
|
+
resolve5(null);
|
|
73796
73796
|
});
|
|
73797
73797
|
});
|
|
73798
73798
|
}
|
|
@@ -81470,14 +81470,14 @@ function __asyncValues(o) {
|
|
|
81470
81470
|
}, i2);
|
|
81471
81471
|
function verb(n) {
|
|
81472
81472
|
i2[n] = o[n] && function(v) {
|
|
81473
|
-
return new Promise(function(
|
|
81474
|
-
v = o[n](v), settle(
|
|
81473
|
+
return new Promise(function(resolve5, reject) {
|
|
81474
|
+
v = o[n](v), settle(resolve5, reject, v.done, v.value);
|
|
81475
81475
|
});
|
|
81476
81476
|
};
|
|
81477
81477
|
}
|
|
81478
|
-
function settle(
|
|
81478
|
+
function settle(resolve5, reject, d, v) {
|
|
81479
81479
|
Promise.resolve(v).then(function(v2) {
|
|
81480
|
-
|
|
81480
|
+
resolve5({ value: v2, done: d });
|
|
81481
81481
|
}, reject);
|
|
81482
81482
|
}
|
|
81483
81483
|
}
|
|
@@ -91847,8 +91847,8 @@ var init_node = __esm({
|
|
|
91847
91847
|
const url = `${websocketBaseUrl}/ws/google.ai.generativelanguage.${apiVersion}.GenerativeService.BidiGenerateMusic?key=${apiKey}`;
|
|
91848
91848
|
let onopenResolve = () => {
|
|
91849
91849
|
};
|
|
91850
|
-
const onopenPromise = new Promise((
|
|
91851
|
-
onopenResolve =
|
|
91850
|
+
const onopenPromise = new Promise((resolve5) => {
|
|
91851
|
+
onopenResolve = resolve5;
|
|
91852
91852
|
});
|
|
91853
91853
|
const callbacks = params.callbacks;
|
|
91854
91854
|
const onopenAwaitedCallback = function() {
|
|
@@ -92054,8 +92054,8 @@ var init_node = __esm({
|
|
|
92054
92054
|
}
|
|
92055
92055
|
let onopenResolve = () => {
|
|
92056
92056
|
};
|
|
92057
|
-
const onopenPromise = new Promise((
|
|
92058
|
-
onopenResolve =
|
|
92057
|
+
const onopenPromise = new Promise((resolve5) => {
|
|
92058
|
+
onopenResolve = resolve5;
|
|
92059
92059
|
});
|
|
92060
92060
|
const callbacks = params.callbacks;
|
|
92061
92061
|
const onopenAwaitedCallback = function() {
|
|
@@ -94403,7 +94403,7 @@ var init_node = __esm({
|
|
|
94403
94403
|
return void 0;
|
|
94404
94404
|
}
|
|
94405
94405
|
};
|
|
94406
|
-
sleep$1 = (ms) => new Promise((
|
|
94406
|
+
sleep$1 = (ms) => new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
94407
94407
|
FallbackEncoder3 = ({ headers, body }) => {
|
|
94408
94408
|
return {
|
|
94409
94409
|
bodyHeaders: {
|
|
@@ -94912,8 +94912,8 @@ ${underline}`);
|
|
|
94912
94912
|
};
|
|
94913
94913
|
APIPromise3 = class _APIPromise extends Promise {
|
|
94914
94914
|
constructor(client, responsePromise, parseResponse2 = defaultParseResponse3) {
|
|
94915
|
-
super((
|
|
94916
|
-
|
|
94915
|
+
super((resolve5) => {
|
|
94916
|
+
resolve5(null);
|
|
94917
94917
|
});
|
|
94918
94918
|
this.responsePromise = responsePromise;
|
|
94919
94919
|
this.parseResponse = parseResponse2;
|
|
@@ -98144,7 +98144,7 @@ function retryIntervalFromResponse(res) {
|
|
|
98144
98144
|
return 0;
|
|
98145
98145
|
}
|
|
98146
98146
|
async function delay(delay2) {
|
|
98147
|
-
return new Promise((
|
|
98147
|
+
return new Promise((resolve5) => setTimeout(resolve5, delay2));
|
|
98148
98148
|
}
|
|
98149
98149
|
var defaultBackoff, PermanentError, TemporaryError, codeRangeRE2;
|
|
98150
98150
|
var init_retries = __esm({
|
|
@@ -135723,12 +135723,12 @@ function capRetryDelayMs(delayMs, options) {
|
|
|
135723
135723
|
return maxRetryDelayMs > 0 ? Math.min(delayMs, maxRetryDelayMs) : delayMs;
|
|
135724
135724
|
}
|
|
135725
135725
|
function sleep4(ms, signal) {
|
|
135726
|
-
return new Promise((
|
|
135726
|
+
return new Promise((resolve5, reject) => {
|
|
135727
135727
|
if (signal?.aborted) {
|
|
135728
135728
|
reject(new Error("Request was aborted"));
|
|
135729
135729
|
return;
|
|
135730
135730
|
}
|
|
135731
|
-
const timeout = setTimeout(
|
|
135731
|
+
const timeout = setTimeout(resolve5, ms);
|
|
135732
135732
|
signal?.addEventListener("abort", () => {
|
|
135733
135733
|
clearTimeout(timeout);
|
|
135734
135734
|
reject(new Error("Request was aborted"));
|
|
@@ -136060,7 +136060,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
|
|
|
136060
136060
|
}
|
|
136061
136061
|
const wsHeaders = headersToRecord(headers);
|
|
136062
136062
|
delete wsHeaders["OpenAI-Beta"];
|
|
136063
|
-
return new Promise((
|
|
136063
|
+
return new Promise((resolve5, reject) => {
|
|
136064
136064
|
let settled = false;
|
|
136065
136065
|
let timeout;
|
|
136066
136066
|
let socket;
|
|
@@ -136095,7 +136095,7 @@ async function connectWebSocket(url, headers, signal, connectTimeoutMs = DEFAULT
|
|
|
136095
136095
|
return;
|
|
136096
136096
|
settled = true;
|
|
136097
136097
|
cleanup();
|
|
136098
|
-
|
|
136098
|
+
resolve5(socket);
|
|
136099
136099
|
};
|
|
136100
136100
|
const onError = (event) => {
|
|
136101
136101
|
fail2(extractWebSocketError(event));
|
|
@@ -136252,9 +136252,9 @@ async function* parseWebSocket(socket, signal, idleTimeoutMs) {
|
|
|
136252
136252
|
const wake = () => {
|
|
136253
136253
|
if (!pending)
|
|
136254
136254
|
return;
|
|
136255
|
-
const
|
|
136255
|
+
const resolve5 = pending;
|
|
136256
136256
|
pending = null;
|
|
136257
|
-
|
|
136257
|
+
resolve5();
|
|
136258
136258
|
};
|
|
136259
136259
|
const onMessage = (event) => {
|
|
136260
136260
|
void (async () => {
|
|
@@ -136321,8 +136321,8 @@ async function* parseWebSocket(socket, signal, idleTimeoutMs) {
|
|
|
136321
136321
|
if (done)
|
|
136322
136322
|
break;
|
|
136323
136323
|
let timeout;
|
|
136324
|
-
await new Promise((
|
|
136325
|
-
pending =
|
|
136324
|
+
await new Promise((resolve5, reject) => {
|
|
136325
|
+
pending = resolve5;
|
|
136326
136326
|
if (idleTimeoutMs !== void 0 && idleTimeoutMs > 0) {
|
|
136327
136327
|
timeout = setTimeout(() => {
|
|
136328
136328
|
const error = new Error(`WebSocket idle timeout after ${idleTimeoutMs}ms`);
|
|
@@ -152246,14 +152246,14 @@ async function executeVectorBackfill(request) {
|
|
|
152246
152246
|
return worker.runOnce();
|
|
152247
152247
|
}
|
|
152248
152248
|
async function readStdin() {
|
|
152249
|
-
return new Promise((
|
|
152249
|
+
return new Promise((resolve5, reject) => {
|
|
152250
152250
|
let raw = "";
|
|
152251
152251
|
process.stdin.setEncoding("utf8");
|
|
152252
152252
|
process.stdin.on("data", (chunk) => {
|
|
152253
152253
|
raw += chunk;
|
|
152254
152254
|
});
|
|
152255
152255
|
process.stdin.once("error", reject);
|
|
152256
|
-
process.stdin.once("end", () =>
|
|
152256
|
+
process.stdin.once("end", () => resolve5(raw));
|
|
152257
152257
|
});
|
|
152258
152258
|
}
|
|
152259
152259
|
async function main() {
|
|
@@ -162143,7 +162143,7 @@ async function buildTeamSnapshot(dataDir, projectId, scope, mode) {
|
|
|
162143
162143
|
}
|
|
162144
162144
|
}
|
|
162145
162145
|
function readBody(req) {
|
|
162146
|
-
return new Promise((
|
|
162146
|
+
return new Promise((resolve5, reject) => {
|
|
162147
162147
|
const chunks = [];
|
|
162148
162148
|
let size = 0;
|
|
162149
162149
|
req.on("data", (c) => {
|
|
@@ -162154,7 +162154,7 @@ function readBody(req) {
|
|
|
162154
162154
|
}
|
|
162155
162155
|
chunks.push(c);
|
|
162156
162156
|
});
|
|
162157
|
-
req.on("end", () =>
|
|
162157
|
+
req.on("end", () => resolve5(Buffer.concat(chunks).toString("utf-8")));
|
|
162158
162158
|
req.on("error", reject);
|
|
162159
162159
|
});
|
|
162160
162160
|
}
|
|
@@ -162207,7 +162207,7 @@ async function startDashboard(dataDir, port, staticDir, projectId, projectName,
|
|
|
162207
162207
|
await serveStatic(req, res, resolvedStaticDir);
|
|
162208
162208
|
}
|
|
162209
162209
|
});
|
|
162210
|
-
return new Promise((
|
|
162210
|
+
return new Promise((resolve5, reject) => {
|
|
162211
162211
|
server.on("error", (err) => {
|
|
162212
162212
|
if (err.code === "EADDRINUSE") {
|
|
162213
162213
|
console.error(`Port ${port} is already in use. Try: memorix dashboard --port ${port + 1}`);
|
|
@@ -162230,7 +162230,7 @@ async function startDashboard(dataDir, port, staticDir, projectId, projectName,
|
|
|
162230
162230
|
Press Ctrl+C to stop
|
|
162231
162231
|
`);
|
|
162232
162232
|
if (autoOpen) openBrowser(url);
|
|
162233
|
-
|
|
162233
|
+
resolve5();
|
|
162234
162234
|
});
|
|
162235
162235
|
});
|
|
162236
162236
|
}
|
|
@@ -163802,6 +163802,9 @@ function resolveHookCommand() {
|
|
|
163802
163802
|
}
|
|
163803
163803
|
return "memorix";
|
|
163804
163804
|
}
|
|
163805
|
+
function getGrokHome() {
|
|
163806
|
+
return process.env.GROK_HOME?.trim() || path33.join(os5.homedir(), ".grok");
|
|
163807
|
+
}
|
|
163805
163808
|
function resolveWindowsMemorixShim() {
|
|
163806
163809
|
try {
|
|
163807
163810
|
const output = String(execSync2("where.exe memorix.cmd", {
|
|
@@ -163835,6 +163838,90 @@ function generateClaudeConfig() {
|
|
|
163835
163838
|
}
|
|
163836
163839
|
};
|
|
163837
163840
|
}
|
|
163841
|
+
function generateGrokConfig() {
|
|
163842
|
+
const cmd = `${resolveHookCommand()} hook --agent grok`;
|
|
163843
|
+
const hookEntry = {
|
|
163844
|
+
type: "command",
|
|
163845
|
+
command: cmd,
|
|
163846
|
+
timeout: 10
|
|
163847
|
+
};
|
|
163848
|
+
return {
|
|
163849
|
+
hooks: {
|
|
163850
|
+
SessionStart: [{ hooks: [hookEntry] }],
|
|
163851
|
+
SessionEnd: [{ hooks: [hookEntry] }],
|
|
163852
|
+
PostToolUse: [{ hooks: [hookEntry] }],
|
|
163853
|
+
PostToolUseFailure: [{ hooks: [hookEntry] }],
|
|
163854
|
+
UserPromptSubmit: [{ hooks: [hookEntry] }],
|
|
163855
|
+
PreCompact: [{ hooks: [hookEntry] }],
|
|
163856
|
+
PostCompact: [{ hooks: [hookEntry] }],
|
|
163857
|
+
Stop: [{ hooks: [hookEntry] }],
|
|
163858
|
+
StopFailure: [{ hooks: [hookEntry] }]
|
|
163859
|
+
}
|
|
163860
|
+
};
|
|
163861
|
+
}
|
|
163862
|
+
function isJsonRecord(value) {
|
|
163863
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
163864
|
+
}
|
|
163865
|
+
function isMemorixGrokCommand(value) {
|
|
163866
|
+
return value === "memorix hook --agent grok" || value === "memorix.cmd hook --agent grok";
|
|
163867
|
+
}
|
|
163868
|
+
function isMemorixGrokHook(value) {
|
|
163869
|
+
return isJsonRecord(value) && value.type === "command" && isMemorixGrokCommand(value.command);
|
|
163870
|
+
}
|
|
163871
|
+
function mergeGrokHookConfig(existing, generated) {
|
|
163872
|
+
const merged = { ...existing };
|
|
163873
|
+
const existingHooks = isJsonRecord(existing.hooks) ? { ...existing.hooks } : {};
|
|
163874
|
+
const generatedHooks = isJsonRecord(generated.hooks) ? generated.hooks : {};
|
|
163875
|
+
for (const [event, generatedGroups] of Object.entries(generatedHooks)) {
|
|
163876
|
+
const currentGroups = Array.isArray(existingHooks[event]) ? existingHooks[event] : [];
|
|
163877
|
+
const preservedGroups = currentGroups.flatMap((group) => {
|
|
163878
|
+
if (!isJsonRecord(group) || !Array.isArray(group.hooks)) return [group];
|
|
163879
|
+
const preservedHooks = group.hooks.filter((hook) => !isMemorixGrokHook(hook));
|
|
163880
|
+
if (preservedHooks.length === 0) return [];
|
|
163881
|
+
return [{ ...group, hooks: preservedHooks }];
|
|
163882
|
+
});
|
|
163883
|
+
existingHooks[event] = [...preservedGroups, ...Array.isArray(generatedGroups) ? generatedGroups : []];
|
|
163884
|
+
}
|
|
163885
|
+
merged.hooks = existingHooks;
|
|
163886
|
+
return merged;
|
|
163887
|
+
}
|
|
163888
|
+
function removeMemorixGrokHooks(config) {
|
|
163889
|
+
const cleaned = { ...config };
|
|
163890
|
+
const hooks = isJsonRecord(config.hooks) ? { ...config.hooks } : null;
|
|
163891
|
+
if (!hooks) return cleaned;
|
|
163892
|
+
for (const [event, groups] of Object.entries(hooks)) {
|
|
163893
|
+
if (!Array.isArray(groups)) continue;
|
|
163894
|
+
const preservedGroups = groups.flatMap((group) => {
|
|
163895
|
+
if (!isJsonRecord(group) || !Array.isArray(group.hooks)) return [group];
|
|
163896
|
+
const preservedHooks = group.hooks.filter((hook) => !isMemorixGrokHook(hook));
|
|
163897
|
+
if (preservedHooks.length === 0) return [];
|
|
163898
|
+
return [{ ...group, hooks: preservedHooks }];
|
|
163899
|
+
});
|
|
163900
|
+
if (preservedGroups.length > 0) hooks[event] = preservedGroups;
|
|
163901
|
+
else delete hooks[event];
|
|
163902
|
+
}
|
|
163903
|
+
if (Object.keys(hooks).length > 0) cleaned.hooks = hooks;
|
|
163904
|
+
else delete cleaned.hooks;
|
|
163905
|
+
return cleaned;
|
|
163906
|
+
}
|
|
163907
|
+
async function readGrokHookConfig(configPath) {
|
|
163908
|
+
let content;
|
|
163909
|
+
try {
|
|
163910
|
+
content = await fs21.readFile(configPath, "utf-8");
|
|
163911
|
+
} catch (error) {
|
|
163912
|
+
if (error.code === "ENOENT") return {};
|
|
163913
|
+
throw error;
|
|
163914
|
+
}
|
|
163915
|
+
if (!content.trim()) return {};
|
|
163916
|
+
try {
|
|
163917
|
+
const parsed = JSON.parse(content);
|
|
163918
|
+
if (!isJsonRecord(parsed)) throw new Error("top-level value must be an object");
|
|
163919
|
+
return parsed;
|
|
163920
|
+
} catch (error) {
|
|
163921
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
163922
|
+
throw new Error(`Cannot safely update Grok hook config ${configPath}: ${reason}`);
|
|
163923
|
+
}
|
|
163924
|
+
}
|
|
163838
163925
|
function generateCopilotConfig() {
|
|
163839
163926
|
const cmd = `${resolveHookCommand()} hook`;
|
|
163840
163927
|
const hasPwsh = detectPwsh();
|
|
@@ -164256,6 +164343,8 @@ function getProjectConfigPath(agent, projectRoot) {
|
|
|
164256
164343
|
return path33.join(projectRoot, ".gemini", "settings.json");
|
|
164257
164344
|
case "workbuddy":
|
|
164258
164345
|
return "";
|
|
164346
|
+
case "grok":
|
|
164347
|
+
return path33.join(projectRoot, ".grok", "hooks", "memorix.json");
|
|
164259
164348
|
default:
|
|
164260
164349
|
return path33.join(projectRoot, ".memorix", "hooks.json");
|
|
164261
164350
|
}
|
|
@@ -164291,6 +164380,8 @@ function getGlobalConfigPath(agent) {
|
|
|
164291
164380
|
return path33.join(process.env.DSH_HOME?.trim() || path33.join(home, ".dsh"), "AGENTS.md");
|
|
164292
164381
|
case "workbuddy":
|
|
164293
164382
|
return "";
|
|
164383
|
+
case "grok":
|
|
164384
|
+
return path33.join(getGrokHome(), "hooks", "memorix.json");
|
|
164294
164385
|
default:
|
|
164295
164386
|
return path33.join(home, ".memorix", "hooks.json");
|
|
164296
164387
|
}
|
|
@@ -164317,6 +164408,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
164317
164408
|
return path33.join(root, ".trae", "rules", "project_rules.md");
|
|
164318
164409
|
case "dsh":
|
|
164319
164410
|
return path33.join(process.env.DSH_HOME?.trim() || path33.join(root, ".dsh"), "AGENTS.md");
|
|
164411
|
+
case "grok":
|
|
164412
|
+
return path33.join(getGrokHome(), "AGENTS.md");
|
|
164320
164413
|
case "workbuddy":
|
|
164321
164414
|
return "";
|
|
164322
164415
|
default:
|
|
@@ -164347,6 +164440,8 @@ function getAgentRulesPath(agent, root, global2 = false) {
|
|
|
164347
164440
|
return path33.join(root, "AGENTS.md");
|
|
164348
164441
|
case "workbuddy":
|
|
164349
164442
|
return path33.join(root, "AGENTS.md");
|
|
164443
|
+
case "grok":
|
|
164444
|
+
return path33.join(root, "AGENTS.md");
|
|
164350
164445
|
default:
|
|
164351
164446
|
return path33.join(root, ".agent", "rules", "memorix.md");
|
|
164352
164447
|
}
|
|
@@ -164398,6 +164493,12 @@ async function detectInstalledAgents() {
|
|
|
164398
164493
|
agents.push("kiro");
|
|
164399
164494
|
} catch {
|
|
164400
164495
|
}
|
|
164496
|
+
const grokDir = getGrokHome();
|
|
164497
|
+
try {
|
|
164498
|
+
await fs21.access(grokDir);
|
|
164499
|
+
agents.push("grok");
|
|
164500
|
+
} catch {
|
|
164501
|
+
}
|
|
164401
164502
|
const codexDir = path33.join(home, ".codex");
|
|
164402
164503
|
try {
|
|
164403
164504
|
await fs21.access(codexDir);
|
|
@@ -164484,6 +164585,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
164484
164585
|
if (basename5 === "AGENTS.md" || basename5 === "GEMINI.md" || basename5 === "CONTEXT.md") {
|
|
164485
164586
|
continue;
|
|
164486
164587
|
}
|
|
164588
|
+
if (agent === "grok" && path33.resolve(entry.path) === path33.resolve(configPath)) {
|
|
164589
|
+
continue;
|
|
164590
|
+
}
|
|
164487
164591
|
await unlink3(entry.path);
|
|
164488
164592
|
await removeFile2(projectRoot, entry.path);
|
|
164489
164593
|
} catch {
|
|
@@ -164496,6 +164600,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
164496
164600
|
case "claude":
|
|
164497
164601
|
generated = generateClaudeConfig();
|
|
164498
164602
|
break;
|
|
164603
|
+
case "grok":
|
|
164604
|
+
generated = generateGrokConfig();
|
|
164605
|
+
break;
|
|
164499
164606
|
case "copilot":
|
|
164500
164607
|
generated = generateCopilotConfig();
|
|
164501
164608
|
break;
|
|
@@ -164590,7 +164697,16 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
164590
164697
|
generated = generateClaudeConfig();
|
|
164591
164698
|
}
|
|
164592
164699
|
await fs21.mkdir(path33.dirname(configPath), { recursive: true });
|
|
164593
|
-
if (agent === "
|
|
164700
|
+
if (agent === "grok") {
|
|
164701
|
+
const existing = await readGrokHookConfig(configPath);
|
|
164702
|
+
const merged = mergeGrokHookConfig(existing, generated);
|
|
164703
|
+
await fs21.writeFile(configPath, JSON.stringify(merged, null, 2), "utf-8");
|
|
164704
|
+
try {
|
|
164705
|
+
const { recordFile: recordFile2 } = await Promise.resolve().then(() => (init_audit(), audit_exports));
|
|
164706
|
+
await recordFile2(projectRoot, "hook", configPath, agent);
|
|
164707
|
+
} catch {
|
|
164708
|
+
}
|
|
164709
|
+
} else if (agent === "kiro") {
|
|
164594
164710
|
const hookFiles = generateKiroHookFiles();
|
|
164595
164711
|
const hooksDir = path33.join(path33.dirname(configPath));
|
|
164596
164712
|
await fs21.mkdir(hooksDir, { recursive: true });
|
|
@@ -164671,6 +164787,9 @@ async function installHooks(agent, projectRoot, global2 = false) {
|
|
|
164671
164787
|
case "kiro":
|
|
164672
164788
|
events.push("session_end", "user_prompt", "post_edit");
|
|
164673
164789
|
break;
|
|
164790
|
+
case "grok":
|
|
164791
|
+
events.push("session_start", "post_tool", "user_prompt", "pre_compact", "post_compact", "session_end");
|
|
164792
|
+
break;
|
|
164674
164793
|
}
|
|
164675
164794
|
await installAgentRules(agent, projectRoot, global2);
|
|
164676
164795
|
const skillPaths = await installOfficialSkillsForAgent(agent, projectRoot, global2);
|
|
@@ -164691,7 +164810,7 @@ async function installAgentRules(agent, projectRoot, global2 = false) {
|
|
|
164691
164810
|
const rulesPath = getAgentRulesPath(agent, rulesRoot, global2);
|
|
164692
164811
|
try {
|
|
164693
164812
|
await fs21.mkdir(path33.dirname(rulesPath), { recursive: true });
|
|
164694
|
-
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh") {
|
|
164813
|
+
if (agent === "claude" || agent === "codex" || agent === "opencode" || agent === "antigravity" || agent === "gemini-cli" || agent === "dsh" || agent === "grok") {
|
|
164695
164814
|
try {
|
|
164696
164815
|
const existing = await fs21.readFile(rulesPath, "utf-8");
|
|
164697
164816
|
await fs21.writeFile(rulesPath, mergeMemorixRulesContent(existing, rulesContent), "utf-8");
|
|
@@ -164860,7 +164979,16 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
164860
164979
|
const configPath = global2 ? getGlobalConfigPath(agent) : getProjectConfigPath(agent, projectRoot);
|
|
164861
164980
|
let success = false;
|
|
164862
164981
|
try {
|
|
164863
|
-
if (agent === "
|
|
164982
|
+
if (agent === "grok") {
|
|
164983
|
+
const config = await readGrokHookConfig(configPath);
|
|
164984
|
+
const cleaned = removeMemorixGrokHooks(config);
|
|
164985
|
+
if (Object.keys(cleaned).length === 0) {
|
|
164986
|
+
await fs21.unlink(configPath);
|
|
164987
|
+
} else {
|
|
164988
|
+
await fs21.writeFile(configPath, JSON.stringify(cleaned, null, 2), "utf-8");
|
|
164989
|
+
}
|
|
164990
|
+
success = true;
|
|
164991
|
+
} else if (agent === "kiro" || agent === "opencode") {
|
|
164864
164992
|
await fs21.unlink(configPath);
|
|
164865
164993
|
success = true;
|
|
164866
164994
|
} else {
|
|
@@ -164883,6 +165011,11 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
164883
165011
|
const agentFiles = prevFiles.filter((e2) => e2.agent === agent);
|
|
164884
165012
|
for (const entry of agentFiles) {
|
|
164885
165013
|
try {
|
|
165014
|
+
if (agent === "grok" && path33.resolve(entry.path) === path33.resolve(configPath)) {
|
|
165015
|
+
await removeFile2(projectRoot, entry.path);
|
|
165016
|
+
auditCleaned = true;
|
|
165017
|
+
continue;
|
|
165018
|
+
}
|
|
164886
165019
|
const basename5 = path33.basename(entry.path);
|
|
164887
165020
|
if (basename5 === "AGENTS.md" || basename5 === "GEMINI.md" || basename5 === "CONTEXT.md") {
|
|
164888
165021
|
try {
|
|
@@ -164943,14 +165076,14 @@ async function uninstallHooks(agent, projectRoot, global2 = false) {
|
|
|
164943
165076
|
}
|
|
164944
165077
|
async function getHookStatus(projectRoot) {
|
|
164945
165078
|
const results = [];
|
|
164946
|
-
const agents = ["claude", "copilot", "windsurf", "cursor", "kiro", "codex", "antigravity", "gemini-cli", "opencode", "pi", "trae"];
|
|
165079
|
+
const agents = ["claude", "copilot", "windsurf", "cursor", "kiro", "codex", "antigravity", "gemini-cli", "opencode", "pi", "trae", "grok"];
|
|
164947
165080
|
for (const agent of agents) {
|
|
164948
165081
|
const projectPath = getProjectConfigPath(agent, projectRoot);
|
|
164949
165082
|
const globalPath = getGlobalConfigPath(agent);
|
|
164950
165083
|
let installed = false;
|
|
164951
165084
|
let outdated = false;
|
|
164952
165085
|
let usedPath = projectPath;
|
|
164953
|
-
const verifiedByDefault = agent !== "opencode" && agent !== "pi";
|
|
165086
|
+
const verifiedByDefault = agent !== "opencode" && agent !== "pi" && agent !== "grok";
|
|
164954
165087
|
try {
|
|
164955
165088
|
await fs21.access(projectPath);
|
|
164956
165089
|
installed = true;
|
|
@@ -164978,11 +165111,12 @@ async function getHookStatus(projectRoot) {
|
|
|
164978
165111
|
if (agent === "copilot" && process.platform === "win32" && installed) {
|
|
164979
165112
|
runtimeReady = detectPwsh();
|
|
164980
165113
|
}
|
|
165114
|
+
const verified = installed && (verifiedByDefault || agent === "grok" && usedPath === globalPath);
|
|
164981
165115
|
results.push({
|
|
164982
165116
|
agent,
|
|
164983
165117
|
installed,
|
|
164984
165118
|
outdated,
|
|
164985
|
-
verified
|
|
165119
|
+
verified,
|
|
164986
165120
|
runtimeReady,
|
|
164987
165121
|
configPath: usedPath
|
|
164988
165122
|
});
|
|
@@ -168888,7 +169022,7 @@ var MCP_SERVER_INFO_META_KEY = "io.modelcontextprotocol/serverInfo";
|
|
|
168888
169022
|
function getMcpServerInfo() {
|
|
168889
169023
|
return {
|
|
168890
169024
|
name: "memorix",
|
|
168891
|
-
version: true ? "1.8.
|
|
169025
|
+
version: true ? "1.8.9" : "1.0.1"
|
|
168892
169026
|
};
|
|
168893
169027
|
}
|
|
168894
169028
|
function createMcpDiscoverResult(capabilities, serverInfo) {
|
|
@@ -172378,15 +172512,15 @@ ${json2}
|
|
|
172378
172512
|
if (inControlPlane) {
|
|
172379
172513
|
const http3 = await import("http");
|
|
172380
172514
|
const postData = JSON.stringify({ projectId: project.id, projectName: project.name });
|
|
172381
|
-
await new Promise((
|
|
172515
|
+
await new Promise((resolve5) => {
|
|
172382
172516
|
const req = http3.request({
|
|
172383
172517
|
hostname: "127.0.0.1",
|
|
172384
172518
|
port: portNum,
|
|
172385
172519
|
path: "/api/set-current-project",
|
|
172386
172520
|
method: "POST",
|
|
172387
172521
|
headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(postData) }
|
|
172388
|
-
}, () =>
|
|
172389
|
-
req.on("error", () =>
|
|
172522
|
+
}, () => resolve5());
|
|
172523
|
+
req.on("error", () => resolve5());
|
|
172390
172524
|
req.write(postData);
|
|
172391
172525
|
req.end();
|
|
172392
172526
|
});
|
|
@@ -172411,33 +172545,33 @@ ${json2}
|
|
|
172411
172545
|
}
|
|
172412
172546
|
if (dashboardRunning) {
|
|
172413
172547
|
const { createConnection } = await import("net");
|
|
172414
|
-
const isAlive = await new Promise((
|
|
172548
|
+
const isAlive = await new Promise((resolve5) => {
|
|
172415
172549
|
const sock = createConnection(portNum, "127.0.0.1");
|
|
172416
172550
|
sock.once("connect", () => {
|
|
172417
172551
|
sock.destroy();
|
|
172418
|
-
|
|
172552
|
+
resolve5(true);
|
|
172419
172553
|
});
|
|
172420
172554
|
sock.once("error", () => {
|
|
172421
172555
|
sock.destroy();
|
|
172422
|
-
|
|
172556
|
+
resolve5(false);
|
|
172423
172557
|
});
|
|
172424
172558
|
setTimeout(() => {
|
|
172425
172559
|
sock.destroy();
|
|
172426
|
-
|
|
172560
|
+
resolve5(false);
|
|
172427
172561
|
}, 1e3);
|
|
172428
172562
|
});
|
|
172429
172563
|
if (isAlive) {
|
|
172430
172564
|
const http3 = await import("http");
|
|
172431
172565
|
const postData = JSON.stringify({ projectId: project.id, projectName: project.name });
|
|
172432
|
-
await new Promise((
|
|
172566
|
+
await new Promise((resolve5) => {
|
|
172433
172567
|
const req = http3.request({
|
|
172434
172568
|
hostname: "127.0.0.1",
|
|
172435
172569
|
port: portNum,
|
|
172436
172570
|
path: "/api/set-current-project",
|
|
172437
172571
|
method: "POST",
|
|
172438
172572
|
headers: { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(postData) }
|
|
172439
|
-
}, () =>
|
|
172440
|
-
req.on("error", () =>
|
|
172573
|
+
}, () => resolve5());
|
|
172574
|
+
req.on("error", () => resolve5());
|
|
172441
172575
|
req.write(postData);
|
|
172442
172576
|
req.end();
|
|
172443
172577
|
});
|
|
@@ -172483,18 +172617,18 @@ ${json2}
|
|
|
172483
172617
|
dashboardRunning = false;
|
|
172484
172618
|
});
|
|
172485
172619
|
const { createConnection } = await import("net");
|
|
172486
|
-
await new Promise((
|
|
172620
|
+
await new Promise((resolve5) => {
|
|
172487
172621
|
const deadline = Date.now() + 5e3;
|
|
172488
172622
|
const tryConnect = () => {
|
|
172489
172623
|
const sock = createConnection(portNum, "127.0.0.1");
|
|
172490
172624
|
sock.once("connect", () => {
|
|
172491
172625
|
sock.destroy();
|
|
172492
|
-
|
|
172626
|
+
resolve5();
|
|
172493
172627
|
});
|
|
172494
172628
|
sock.once("error", () => {
|
|
172495
172629
|
sock.destroy();
|
|
172496
172630
|
if (Date.now() < deadline) setTimeout(tryConnect, 100);
|
|
172497
|
-
else
|
|
172631
|
+
else resolve5();
|
|
172498
172632
|
});
|
|
172499
172633
|
};
|
|
172500
172634
|
tryConnect();
|