grepmax 0.12.13 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/add.js +65 -43
- package/dist/commands/index.js +92 -61
- package/dist/commands/mcp.js +1 -0
- package/dist/commands/remove.js +19 -19
- package/dist/commands/summarize.js +52 -18
- package/dist/lib/daemon/daemon.js +208 -4
- package/dist/lib/daemon/ipc-handler.js +61 -1
- package/dist/lib/index/batch-processor.js +81 -97
- package/dist/lib/index/syncer.js +37 -27
- package/dist/lib/store/vector-db.js +11 -0
- package/dist/lib/utils/daemon-client.js +68 -0
- package/mlx-embed-server/uv.lock +50 -0
- package/package.json +2 -2
- package/plugins/grepmax/.claude-plugin/plugin.json +1 -1
package/dist/lib/index/syncer.js
CHANGED
|
@@ -198,6 +198,7 @@ function computeStaleFiles(cachedPaths, seenPaths) {
|
|
|
198
198
|
function initialSync(options) {
|
|
199
199
|
return __awaiter(this, void 0, void 0, function* () {
|
|
200
200
|
var _a, e_1, _b, _c;
|
|
201
|
+
var _d;
|
|
201
202
|
const { projectRoot, dryRun = false, reset = false, onProgress, signal, } = options;
|
|
202
203
|
const paths = (0, project_root_1.ensureProjectPaths)(projectRoot);
|
|
203
204
|
const resolvedRoot = path.resolve(projectRoot);
|
|
@@ -209,22 +210,29 @@ function initialSync(options) {
|
|
|
209
210
|
process.env.GMAX_PROJECT_ROOT = paths.root;
|
|
210
211
|
const syncTimer = (0, logger_1.timer)("index", "Total");
|
|
211
212
|
(0, logger_1.log)("index", `Root: ${resolvedRoot}`);
|
|
212
|
-
|
|
213
|
-
const
|
|
213
|
+
// Daemon mode: caller provides shared resources, skip lock
|
|
214
|
+
const injected = !!(options.vectorDb && options.metaCache);
|
|
215
|
+
const ownedVectorDb = injected ? null : new vector_db_1.VectorDB(paths.lancedbDir);
|
|
216
|
+
const vectorDb = (_d = options.vectorDb) !== null && _d !== void 0 ? _d : ownedVectorDb;
|
|
214
217
|
const treatAsEmptyCache = reset && dryRun;
|
|
215
|
-
let
|
|
218
|
+
let lock = null;
|
|
219
|
+
let metaCache = injected ? options.metaCache : null;
|
|
216
220
|
try {
|
|
217
|
-
if (!
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
221
|
+
if (!injected) {
|
|
222
|
+
if (!dryRun) {
|
|
223
|
+
lock = yield (0, lock_1.acquireWriterLockWithRetry)(paths.dataDir);
|
|
224
|
+
// Open MetaCache only after lock is acquired
|
|
225
|
+
metaCache = new meta_cache_1.MetaCache(paths.lmdbPath);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
metaCache = createNoopMetaCache();
|
|
229
|
+
}
|
|
224
230
|
}
|
|
231
|
+
// At this point metaCache is always initialized (injected, created, or noop)
|
|
232
|
+
const mc = metaCache;
|
|
225
233
|
if (!dryRun) {
|
|
226
234
|
// Scope checks to this project's paths only
|
|
227
|
-
const projectKeys = yield
|
|
235
|
+
const projectKeys = yield mc.getKeysWithPrefix(rootPrefix);
|
|
228
236
|
(0, logger_1.log)("index", `Cached files: ${projectKeys.size}`);
|
|
229
237
|
// Coherence check: if LMDB has entries but LanceDB has no vectors for
|
|
230
238
|
// this project, the vector store was wiped (e.g. compaction failure,
|
|
@@ -232,7 +240,7 @@ function initialSync(options) {
|
|
|
232
240
|
if (projectKeys.size > 0 && !(yield vectorDb.hasRowsForPath(rootPrefix))) {
|
|
233
241
|
(0, logger_1.log)("index", `Stale cache detected: ${projectKeys.size} cached files but no vectors — clearing cache`);
|
|
234
242
|
for (const key of projectKeys) {
|
|
235
|
-
|
|
243
|
+
mc.delete(key);
|
|
236
244
|
}
|
|
237
245
|
projectKeys.clear();
|
|
238
246
|
}
|
|
@@ -248,7 +256,7 @@ function initialSync(options) {
|
|
|
248
256
|
// Only delete this project's data from the centralized store
|
|
249
257
|
yield vectorDb.deletePathsWithPrefix(rootPrefix);
|
|
250
258
|
for (const key of projectKeys) {
|
|
251
|
-
|
|
259
|
+
mc.delete(key);
|
|
252
260
|
}
|
|
253
261
|
}
|
|
254
262
|
}
|
|
@@ -258,7 +266,7 @@ function initialSync(options) {
|
|
|
258
266
|
// Get only this project's cached paths (scoped by prefix)
|
|
259
267
|
const cachedPaths = dryRun || treatAsEmptyCache
|
|
260
268
|
? new Set()
|
|
261
|
-
: yield
|
|
269
|
+
: yield mc.getKeysWithPrefix(rootPrefix);
|
|
262
270
|
const seenPaths = new Set();
|
|
263
271
|
const visitedRealPaths = new Set();
|
|
264
272
|
const batch = [];
|
|
@@ -293,8 +301,7 @@ function initialSync(options) {
|
|
|
293
301
|
const deletes = Array.from(pendingDeletes);
|
|
294
302
|
pendingMeta.clear();
|
|
295
303
|
pendingDeletes.clear();
|
|
296
|
-
const currentFlush = flushBatch(vectorDb,
|
|
297
|
-
toWrite, metaEntries, deletes, dryRun);
|
|
304
|
+
const currentFlush = flushBatch(vectorDb, mc, toWrite, metaEntries, deletes, dryRun);
|
|
298
305
|
flushPromise = currentFlush;
|
|
299
306
|
try {
|
|
300
307
|
yield currentFlush;
|
|
@@ -345,11 +352,11 @@ function initialSync(options) {
|
|
|
345
352
|
}
|
|
346
353
|
});
|
|
347
354
|
try {
|
|
348
|
-
for (var
|
|
355
|
+
for (var _e = true, _f = __asyncValues((0, walker_1.walk)(paths.root, {
|
|
349
356
|
additionalPatterns: ["**/.git/**", "**/.gmax/**", "**/.osgrep/**"],
|
|
350
|
-
})),
|
|
351
|
-
_c =
|
|
352
|
-
|
|
357
|
+
})), _g; _g = yield _f.next(), _a = _g.done, !_a; _e = true) {
|
|
358
|
+
_c = _g.value;
|
|
359
|
+
_e = false;
|
|
353
360
|
const relPath = _c;
|
|
354
361
|
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
355
362
|
shouldSkipCleanup = true;
|
|
@@ -389,7 +396,7 @@ function initialSync(options) {
|
|
|
389
396
|
// Use absolute path as the key for MetaCache
|
|
390
397
|
const cached = treatAsEmptyCache
|
|
391
398
|
? undefined
|
|
392
|
-
:
|
|
399
|
+
: mc.get(absPath);
|
|
393
400
|
if (cached &&
|
|
394
401
|
cached.mtimeMs === stats.mtimeMs &&
|
|
395
402
|
cached.size === stats.size) {
|
|
@@ -420,7 +427,7 @@ function initialSync(options) {
|
|
|
420
427
|
}
|
|
421
428
|
if (cached && cached.hash === result.hash) {
|
|
422
429
|
if (!dryRun) {
|
|
423
|
-
|
|
430
|
+
mc.put(absPath, metaEntry);
|
|
424
431
|
}
|
|
425
432
|
processed += 1;
|
|
426
433
|
seenPaths.add(absPath);
|
|
@@ -455,7 +462,7 @@ function initialSync(options) {
|
|
|
455
462
|
pendingDeletes.add(absPath);
|
|
456
463
|
pendingMeta.delete(absPath);
|
|
457
464
|
if (!dryRun) {
|
|
458
|
-
|
|
465
|
+
mc.delete(absPath);
|
|
459
466
|
}
|
|
460
467
|
processed += 1;
|
|
461
468
|
markProgress(relPath);
|
|
@@ -474,7 +481,7 @@ function initialSync(options) {
|
|
|
474
481
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
475
482
|
finally {
|
|
476
483
|
try {
|
|
477
|
-
if (!
|
|
484
|
+
if (!_e && !_a && (_b = _f.return)) yield _b.call(_f);
|
|
478
485
|
}
|
|
479
486
|
finally { if (e_1) throw e_1.error; }
|
|
480
487
|
}
|
|
@@ -497,7 +504,7 @@ function initialSync(options) {
|
|
|
497
504
|
(0, logger_1.log)("index", `Stale cleanup: ${stale.length} paths`);
|
|
498
505
|
yield vectorDb.deletePaths(stale);
|
|
499
506
|
stale.forEach((p) => {
|
|
500
|
-
|
|
507
|
+
mc.delete(p);
|
|
501
508
|
});
|
|
502
509
|
}
|
|
503
510
|
// Only rebuild FTS index if data actually changed
|
|
@@ -525,8 +532,11 @@ function initialSync(options) {
|
|
|
525
532
|
if (lock) {
|
|
526
533
|
yield lock.release();
|
|
527
534
|
}
|
|
528
|
-
|
|
529
|
-
|
|
535
|
+
// Only close resources we own (not injected by daemon)
|
|
536
|
+
if (!injected) {
|
|
537
|
+
yield (metaCache === null || metaCache === void 0 ? void 0 : metaCache.close());
|
|
538
|
+
yield (ownedVectorDb === null || ownedVectorDb === void 0 ? void 0 : ownedVectorDb.close());
|
|
539
|
+
}
|
|
530
540
|
}
|
|
531
541
|
});
|
|
532
542
|
}
|
|
@@ -81,6 +81,17 @@ class VectorDB {
|
|
|
81
81
|
}), MAINTENANCE_INTERVAL_MS);
|
|
82
82
|
this.maintenanceTimer.unref();
|
|
83
83
|
}
|
|
84
|
+
/** Pause the maintenance timer (e.g. during a full index that calls runMaintenance itself). */
|
|
85
|
+
pauseMaintenanceLoop() {
|
|
86
|
+
if (this.maintenanceTimer) {
|
|
87
|
+
clearInterval(this.maintenanceTimer);
|
|
88
|
+
this.maintenanceTimer = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Resume the maintenance timer after a pause. */
|
|
92
|
+
resumeMaintenanceLoop() {
|
|
93
|
+
this.startMaintenanceLoop();
|
|
94
|
+
}
|
|
84
95
|
getDb() {
|
|
85
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
97
|
if (this.closed) {
|
|
@@ -44,6 +44,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
exports.sendDaemonCommand = sendDaemonCommand;
|
|
46
46
|
exports.isDaemonRunning = isDaemonRunning;
|
|
47
|
+
exports.sendStreamingCommand = sendStreamingCommand;
|
|
47
48
|
const net = __importStar(require("node:net"));
|
|
48
49
|
const config_1 = require("../../config");
|
|
49
50
|
const DEFAULT_TIMEOUT_MS = 5000;
|
|
@@ -106,3 +107,70 @@ function isDaemonRunning() {
|
|
|
106
107
|
return resp.ok === true;
|
|
107
108
|
});
|
|
108
109
|
}
|
|
110
|
+
const DEFAULT_STREAMING_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
111
|
+
/**
|
|
112
|
+
* Send a streaming command to the daemon. The daemon streams
|
|
113
|
+
* {type:"progress",...} lines followed by a final {type:"done",...}.
|
|
114
|
+
* The timeout resets on each progress message.
|
|
115
|
+
*/
|
|
116
|
+
function sendStreamingCommand(cmd, onProgress, opts) {
|
|
117
|
+
var _a;
|
|
118
|
+
const timeout = (_a = opts === null || opts === void 0 ? void 0 : opts.timeoutMs) !== null && _a !== void 0 ? _a : DEFAULT_STREAMING_TIMEOUT_MS;
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
let settled = false;
|
|
121
|
+
let timer;
|
|
122
|
+
const finish = (result) => {
|
|
123
|
+
if (settled)
|
|
124
|
+
return;
|
|
125
|
+
settled = true;
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
socket.destroy();
|
|
128
|
+
if (result instanceof Error)
|
|
129
|
+
reject(result);
|
|
130
|
+
else
|
|
131
|
+
resolve(result);
|
|
132
|
+
};
|
|
133
|
+
const resetTimer = () => {
|
|
134
|
+
clearTimeout(timer);
|
|
135
|
+
timer = setTimeout(() => {
|
|
136
|
+
finish(new Error("streaming command timed out"));
|
|
137
|
+
}, timeout);
|
|
138
|
+
};
|
|
139
|
+
const socket = net.createConnection({ path: config_1.PATHS.daemonSocket });
|
|
140
|
+
resetTimer();
|
|
141
|
+
socket.on("connect", () => {
|
|
142
|
+
socket.write(`${JSON.stringify(cmd)}\n`);
|
|
143
|
+
});
|
|
144
|
+
let buf = "";
|
|
145
|
+
socket.on("data", (chunk) => {
|
|
146
|
+
buf += chunk.toString();
|
|
147
|
+
let nl;
|
|
148
|
+
while ((nl = buf.indexOf("\n")) !== -1) {
|
|
149
|
+
const line = buf.slice(0, nl);
|
|
150
|
+
buf = buf.slice(nl + 1);
|
|
151
|
+
try {
|
|
152
|
+
const msg = JSON.parse(line);
|
|
153
|
+
if (msg.type === "done") {
|
|
154
|
+
finish(msg);
|
|
155
|
+
}
|
|
156
|
+
else if (msg.type === "progress") {
|
|
157
|
+
resetTimer();
|
|
158
|
+
onProgress(msg);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (_a) {
|
|
162
|
+
// ignore partial/malformed lines
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
socket.on("error", (err) => {
|
|
167
|
+
var _a;
|
|
168
|
+
finish(new Error((_a = err.code) !== null && _a !== void 0 ? _a : err.message));
|
|
169
|
+
});
|
|
170
|
+
socket.on("close", () => {
|
|
171
|
+
if (!settled) {
|
|
172
|
+
finish(new Error("connection closed before done"));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
package/mlx-embed-server/uv.lock
CHANGED
|
@@ -611,6 +611,7 @@ dependencies = [
|
|
|
611
611
|
{ name = "fastapi" },
|
|
612
612
|
{ name = "mlx-embeddings" },
|
|
613
613
|
{ name = "mlx-lm" },
|
|
614
|
+
{ name = "setproctitle" },
|
|
614
615
|
{ name = "uvicorn" },
|
|
615
616
|
]
|
|
616
617
|
|
|
@@ -619,6 +620,7 @@ requires-dist = [
|
|
|
619
620
|
{ name = "fastapi", specifier = ">=0.115.0" },
|
|
620
621
|
{ name = "mlx-embeddings", git = "https://github.com/Blaizzy/mlx-embeddings.git" },
|
|
621
622
|
{ name = "mlx-lm", specifier = ">=0.22.0" },
|
|
623
|
+
{ name = "setproctitle", specifier = ">=1.3.0" },
|
|
622
624
|
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
623
625
|
]
|
|
624
626
|
|
|
@@ -1377,6 +1379,54 @@ wheels = [
|
|
|
1377
1379
|
{ url = "https://files.pythonhosted.org/packages/f3/16/54f611fcfc2d1c46cbe3ec4169780b2cfa7cf63708ef2b71611136db7513/sentencepiece-0.2.1-cp314-cp314t-win_arm64.whl", hash = "sha256:105e36e75cbac1292642045458e8da677b2342dcd33df503e640f0b457cb6751", size = 1136264, upload-time = "2025-08-12T07:00:49.485Z" },
|
|
1378
1380
|
]
|
|
1379
1381
|
|
|
1382
|
+
[[package]]
|
|
1383
|
+
name = "setproctitle"
|
|
1384
|
+
version = "1.3.7"
|
|
1385
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1386
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8d/48/49393a96a2eef1ab418b17475fb92b8fcfad83d099e678751b05472e69de/setproctitle-1.3.7.tar.gz", hash = "sha256:bc2bc917691c1537d5b9bca1468437176809c7e11e5694ca79a9ca12345dcb9e", size = 27002, upload-time = "2025-09-05T12:51:25.278Z" }
|
|
1387
|
+
wheels = [
|
|
1388
|
+
{ url = "https://files.pythonhosted.org/packages/5d/2f/fcedcade3b307a391b6e17c774c6261a7166aed641aee00ed2aad96c63ce/setproctitle-1.3.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c3736b2a423146b5e62230502e47e08e68282ff3b69bcfe08a322bee73407922", size = 18047, upload-time = "2025-09-05T12:49:50.271Z" },
|
|
1389
|
+
{ url = "https://files.pythonhosted.org/packages/23/ae/afc141ca9631350d0a80b8f287aac79a76f26b6af28fd8bf92dae70dc2c5/setproctitle-1.3.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3384e682b158d569e85a51cfbde2afd1ab57ecf93ea6651fe198d0ba451196ee", size = 13073, upload-time = "2025-09-05T12:49:51.46Z" },
|
|
1390
|
+
{ url = "https://files.pythonhosted.org/packages/87/ed/0a4f00315bc02510395b95eec3d4aa77c07192ee79f0baae77ea7b9603d8/setproctitle-1.3.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0564a936ea687cd24dffcea35903e2a20962aa6ac20e61dd3a207652401492dd", size = 33284, upload-time = "2025-09-05T12:49:52.741Z" },
|
|
1391
|
+
{ url = "https://files.pythonhosted.org/packages/fc/e4/adf3c4c0a2173cb7920dc9df710bcc67e9bcdbf377e243b7a962dc31a51a/setproctitle-1.3.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a5d1cb3f81531f0eb40e13246b679a1bdb58762b170303463cb06ecc296f26d0", size = 34104, upload-time = "2025-09-05T12:49:54.416Z" },
|
|
1392
|
+
{ url = "https://files.pythonhosted.org/packages/52/4f/6daf66394152756664257180439d37047aa9a1cfaa5e4f5ed35e93d1dc06/setproctitle-1.3.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a7d159e7345f343b44330cbba9194169b8590cb13dae940da47aa36a72aa9929", size = 35982, upload-time = "2025-09-05T12:49:56.295Z" },
|
|
1393
|
+
{ url = "https://files.pythonhosted.org/packages/1b/62/f2c0595403cf915db031f346b0e3b2c0096050e90e0be658a64f44f4278a/setproctitle-1.3.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0b5074649797fd07c72ca1f6bff0406f4a42e1194faac03ecaab765ce605866f", size = 33150, upload-time = "2025-09-05T12:49:58.025Z" },
|
|
1394
|
+
{ url = "https://files.pythonhosted.org/packages/a0/29/10dd41cde849fb2f9b626c846b7ea30c99c81a18a5037a45cc4ba33c19a7/setproctitle-1.3.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:61e96febced3f61b766115381d97a21a6265a0f29188a791f6df7ed777aef698", size = 34463, upload-time = "2025-09-05T12:49:59.424Z" },
|
|
1395
|
+
{ url = "https://files.pythonhosted.org/packages/71/3c/cedd8eccfaf15fb73a2c20525b68c9477518917c9437737fa0fda91e378f/setproctitle-1.3.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:047138279f9463f06b858e579cc79580fbf7a04554d24e6bddf8fe5dddbe3d4c", size = 32848, upload-time = "2025-09-05T12:50:01.107Z" },
|
|
1396
|
+
{ url = "https://files.pythonhosted.org/packages/d1/3e/0a0e27d1c9926fecccfd1f91796c244416c70bf6bca448d988638faea81d/setproctitle-1.3.7-cp313-cp313-win32.whl", hash = "sha256:7f47accafac7fe6535ba8ba9efd59df9d84a6214565108d0ebb1199119c9cbbd", size = 12544, upload-time = "2025-09-05T12:50:15.81Z" },
|
|
1397
|
+
{ url = "https://files.pythonhosted.org/packages/36/1b/6bf4cb7acbbd5c846ede1c3f4d6b4ee52744d402e43546826da065ff2ab7/setproctitle-1.3.7-cp313-cp313-win_amd64.whl", hash = "sha256:fe5ca35aeec6dc50cabab9bf2d12fbc9067eede7ff4fe92b8f5b99d92e21263f", size = 13235, upload-time = "2025-09-05T12:50:16.89Z" },
|
|
1398
|
+
{ url = "https://files.pythonhosted.org/packages/e6/a4/d588d3497d4714750e3eaf269e9e8985449203d82b16b933c39bd3fc52a1/setproctitle-1.3.7-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:10e92915c4b3086b1586933a36faf4f92f903c5554f3c34102d18c7d3f5378e9", size = 18058, upload-time = "2025-09-05T12:50:02.501Z" },
|
|
1399
|
+
{ url = "https://files.pythonhosted.org/packages/05/77/7637f7682322a7244e07c373881c7e982567e2cb1dd2f31bd31481e45500/setproctitle-1.3.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:de879e9c2eab637f34b1a14c4da1e030c12658cdc69ee1b3e5be81b380163ce5", size = 13072, upload-time = "2025-09-05T12:50:03.601Z" },
|
|
1400
|
+
{ url = "https://files.pythonhosted.org/packages/52/09/f366eca0973cfbac1470068d1313fa3fe3de4a594683385204ec7f1c4101/setproctitle-1.3.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c18246d88e227a5b16248687514f95642505000442165f4b7db354d39d0e4c29", size = 34490, upload-time = "2025-09-05T12:50:04.948Z" },
|
|
1401
|
+
{ url = "https://files.pythonhosted.org/packages/71/36/611fc2ed149fdea17c3677e1d0df30d8186eef9562acc248682b91312706/setproctitle-1.3.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7081f193dab22df2c36f9fc6d113f3793f83c27891af8fe30c64d89d9a37e152", size = 35267, upload-time = "2025-09-05T12:50:06.015Z" },
|
|
1402
|
+
{ url = "https://files.pythonhosted.org/packages/88/a4/64e77d0671446bd5a5554387b69e1efd915274686844bea733714c828813/setproctitle-1.3.7-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9cc9b901ce129350637426a89cfd650066a4adc6899e47822e2478a74023ff7c", size = 37376, upload-time = "2025-09-05T12:50:07.484Z" },
|
|
1403
|
+
{ url = "https://files.pythonhosted.org/packages/89/bc/ad9c664fe524fb4a4b2d3663661a5c63453ce851736171e454fa2cdec35c/setproctitle-1.3.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:80e177eff2d1ec172188d0d7fd9694f8e43d3aab76a6f5f929bee7bf7894e98b", size = 33963, upload-time = "2025-09-05T12:50:09.056Z" },
|
|
1404
|
+
{ url = "https://files.pythonhosted.org/packages/ab/01/a36de7caf2d90c4c28678da1466b47495cbbad43badb4e982d8db8167ed4/setproctitle-1.3.7-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:23e520776c445478a67ee71b2a3c1ffdafbe1f9f677239e03d7e2cc635954e18", size = 35550, upload-time = "2025-09-05T12:50:10.791Z" },
|
|
1405
|
+
{ url = "https://files.pythonhosted.org/packages/dd/68/17e8aea0ed5ebc17fbf03ed2562bfab277c280e3625850c38d92a7b5fcd9/setproctitle-1.3.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5fa1953126a3b9bd47049d58c51b9dac72e78ed120459bd3aceb1bacee72357c", size = 33727, upload-time = "2025-09-05T12:50:12.032Z" },
|
|
1406
|
+
{ url = "https://files.pythonhosted.org/packages/b2/33/90a3bf43fe3a2242b4618aa799c672270250b5780667898f30663fd94993/setproctitle-1.3.7-cp313-cp313t-win32.whl", hash = "sha256:4a5e212bf438a4dbeece763f4962ad472c6008ff6702e230b4f16a037e2f6f29", size = 12549, upload-time = "2025-09-05T12:50:13.074Z" },
|
|
1407
|
+
{ url = "https://files.pythonhosted.org/packages/0b/0e/50d1f07f3032e1f23d814ad6462bc0a138f369967c72494286b8a5228e40/setproctitle-1.3.7-cp313-cp313t-win_amd64.whl", hash = "sha256:cf2727b733e90b4f874bac53e3092aa0413fe1ea6d4f153f01207e6ce65034d9", size = 13243, upload-time = "2025-09-05T12:50:14.146Z" },
|
|
1408
|
+
{ url = "https://files.pythonhosted.org/packages/89/c7/43ac3a98414f91d1b86a276bc2f799ad0b4b010e08497a95750d5bc42803/setproctitle-1.3.7-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:80c36c6a87ff72eabf621d0c79b66f3bdd0ecc79e873c1e9f0651ee8bf215c63", size = 18052, upload-time = "2025-09-05T12:50:17.928Z" },
|
|
1409
|
+
{ url = "https://files.pythonhosted.org/packages/cd/2c/dc258600a25e1a1f04948073826bebc55e18dbd99dc65a576277a82146fa/setproctitle-1.3.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b53602371a52b91c80aaf578b5ada29d311d12b8a69c0c17fbc35b76a1fd4f2e", size = 13071, upload-time = "2025-09-05T12:50:19.061Z" },
|
|
1410
|
+
{ url = "https://files.pythonhosted.org/packages/ab/26/8e3bb082992f19823d831f3d62a89409deb6092e72fc6940962983ffc94f/setproctitle-1.3.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fcb966a6c57cf07cc9448321a08f3be6b11b7635be502669bc1d8745115d7e7f", size = 33180, upload-time = "2025-09-05T12:50:20.395Z" },
|
|
1411
|
+
{ url = "https://files.pythonhosted.org/packages/f1/af/ae692a20276d1159dd0cf77b0bcf92cbb954b965655eb4a69672099bb214/setproctitle-1.3.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46178672599b940368d769474fe13ecef1b587d58bb438ea72b9987f74c56ea5", size = 34043, upload-time = "2025-09-05T12:50:22.454Z" },
|
|
1412
|
+
{ url = "https://files.pythonhosted.org/packages/34/b2/6a092076324dd4dac1a6d38482bedebbff5cf34ef29f58585ec76e47bc9d/setproctitle-1.3.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7f9e9e3ff135cbcc3edd2f4cf29b139f4aca040d931573102742db70ff428c17", size = 35892, upload-time = "2025-09-05T12:50:23.937Z" },
|
|
1413
|
+
{ url = "https://files.pythonhosted.org/packages/1c/1a/8836b9f28cee32859ac36c3df85aa03e1ff4598d23ea17ca2e96b5845a8f/setproctitle-1.3.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:14c7eba8d90c93b0e79c01f0bd92a37b61983c27d6d7d5a3b5defd599113d60e", size = 32898, upload-time = "2025-09-05T12:50:25.617Z" },
|
|
1414
|
+
{ url = "https://files.pythonhosted.org/packages/ef/22/8fabdc24baf42defb599714799d8445fe3ae987ec425a26ec8e80ea38f8e/setproctitle-1.3.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:9e64e98077fb30b6cf98073d6c439cd91deb8ebbf8fc62d9dbf52bd38b0c6ac0", size = 34308, upload-time = "2025-09-05T12:50:26.827Z" },
|
|
1415
|
+
{ url = "https://files.pythonhosted.org/packages/15/1b/b9bee9de6c8cdcb3b3a6cb0b3e773afdb86bbbc1665a3bfa424a4294fda2/setproctitle-1.3.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b91387cc0f02a00ac95dcd93f066242d3cca10ff9e6153de7ee07069c6f0f7c8", size = 32536, upload-time = "2025-09-05T12:50:28.5Z" },
|
|
1416
|
+
{ url = "https://files.pythonhosted.org/packages/37/0c/75e5f2685a5e3eda0b39a8b158d6d8895d6daf3ba86dec9e3ba021510272/setproctitle-1.3.7-cp314-cp314-win32.whl", hash = "sha256:52b054a61c99d1b72fba58b7f5486e04b20fefc6961cd76722b424c187f362ed", size = 12731, upload-time = "2025-09-05T12:50:43.955Z" },
|
|
1417
|
+
{ url = "https://files.pythonhosted.org/packages/d2/ae/acddbce90d1361e1786e1fb421bc25baeb0c22ef244ee5d0176511769ec8/setproctitle-1.3.7-cp314-cp314-win_amd64.whl", hash = "sha256:5818e4080ac04da1851b3ec71e8a0f64e3748bf9849045180566d8b736702416", size = 13464, upload-time = "2025-09-05T12:50:45.057Z" },
|
|
1418
|
+
{ url = "https://files.pythonhosted.org/packages/01/6d/20886c8ff2e6d85e3cabadab6aab9bb90acaf1a5cfcb04d633f8d61b2626/setproctitle-1.3.7-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6fc87caf9e323ac426910306c3e5d3205cd9f8dcac06d233fcafe9337f0928a3", size = 18062, upload-time = "2025-09-05T12:50:29.78Z" },
|
|
1419
|
+
{ url = "https://files.pythonhosted.org/packages/9a/60/26dfc5f198715f1343b95c2f7a1c16ae9ffa45bd89ffd45a60ed258d24ea/setproctitle-1.3.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6134c63853d87a4897ba7d5cc0e16abfa687f6c66fc09f262bb70d67718f2309", size = 13075, upload-time = "2025-09-05T12:50:31.604Z" },
|
|
1420
|
+
{ url = "https://files.pythonhosted.org/packages/21/9c/980b01f50d51345dd513047e3ba9e96468134b9181319093e61db1c47188/setproctitle-1.3.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1403d2abfd32790b6369916e2313dffbe87d6b11dca5bbd898981bcde48e7a2b", size = 34744, upload-time = "2025-09-05T12:50:32.777Z" },
|
|
1421
|
+
{ url = "https://files.pythonhosted.org/packages/86/b4/82cd0c86e6d1c4538e1a7eb908c7517721513b801dff4ba3f98ef816a240/setproctitle-1.3.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e7c5bfe4228ea22373e3025965d1a4116097e555ee3436044f5c954a5e63ac45", size = 35589, upload-time = "2025-09-05T12:50:34.13Z" },
|
|
1422
|
+
{ url = "https://files.pythonhosted.org/packages/8a/4f/9f6b2a7417fd45673037554021c888b31247f7594ff4bd2239918c5cd6d0/setproctitle-1.3.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:585edf25e54e21a94ccb0fe81ad32b9196b69ebc4fc25f81da81fb8a50cca9e4", size = 37698, upload-time = "2025-09-05T12:50:35.524Z" },
|
|
1423
|
+
{ url = "https://files.pythonhosted.org/packages/20/92/927b7d4744aac214d149c892cb5fa6dc6f49cfa040cb2b0a844acd63dcaf/setproctitle-1.3.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:96c38cdeef9036eb2724c2210e8d0b93224e709af68c435d46a4733a3675fee1", size = 34201, upload-time = "2025-09-05T12:50:36.697Z" },
|
|
1424
|
+
{ url = "https://files.pythonhosted.org/packages/0a/0c/fd4901db5ba4b9d9013e62f61d9c18d52290497f956745cd3e91b0d80f90/setproctitle-1.3.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:45e3ef48350abb49cf937d0a8ba15e42cee1e5ae13ca41a77c66d1abc27a5070", size = 35801, upload-time = "2025-09-05T12:50:38.314Z" },
|
|
1425
|
+
{ url = "https://files.pythonhosted.org/packages/e7/e3/54b496ac724e60e61cc3447f02690105901ca6d90da0377dffe49ff99fc7/setproctitle-1.3.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:1fae595d032b30dab4d659bece20debd202229fce12b55abab978b7f30783d73", size = 33958, upload-time = "2025-09-05T12:50:39.841Z" },
|
|
1426
|
+
{ url = "https://files.pythonhosted.org/packages/ea/a8/c84bb045ebf8c6fdc7f7532319e86f8380d14bbd3084e6348df56bdfe6fd/setproctitle-1.3.7-cp314-cp314t-win32.whl", hash = "sha256:02432f26f5d1329ab22279ff863c83589894977063f59e6c4b4845804a08f8c2", size = 12745, upload-time = "2025-09-05T12:50:41.377Z" },
|
|
1427
|
+
{ url = "https://files.pythonhosted.org/packages/08/b6/3a5a4f9952972791a9114ac01dfc123f0df79903577a3e0a7a404a695586/setproctitle-1.3.7-cp314-cp314t-win_amd64.whl", hash = "sha256:cbc388e3d86da1f766d8fc2e12682e446064c01cea9f88a88647cfe7c011de6a", size = 13469, upload-time = "2025-09-05T12:50:42.67Z" },
|
|
1428
|
+
]
|
|
1429
|
+
|
|
1380
1430
|
[[package]]
|
|
1381
1431
|
name = "shellingham"
|
|
1382
1432
|
version = "1.5.4"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grepmax",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"author": "Robert Owens <
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"author": "Robert Owens <78518764+reowens@users.noreply.github.com>",
|
|
5
5
|
"homepage": "https://github.com/reowens/grepmax",
|
|
6
6
|
"bugs": {
|
|
7
7
|
"url": "https://github.com/reowens/grepmax/issues"
|