@quantod/qq 0.1.9 → 0.1.12
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.d.ts +3 -5
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +35 -41
- package/dist/commands.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +0 -1
- package/dist/db.js.map +1 -1
- package/dist/index.js +14 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands.ts +39 -48
- package/src/db.ts +0 -1
- package/src/index.ts +15 -11
package/dist/commands.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export interface Item {
|
|
|
6
6
|
id: string;
|
|
7
7
|
stage: string;
|
|
8
8
|
claimed: boolean;
|
|
9
|
-
claimed_by: string | null;
|
|
10
9
|
seq: number;
|
|
11
10
|
priority: number;
|
|
12
11
|
created: number;
|
|
@@ -15,7 +14,6 @@ export interface Item {
|
|
|
15
14
|
}
|
|
16
15
|
export interface FilterOptions {
|
|
17
16
|
claimed?: boolean;
|
|
18
|
-
claimed_by?: string;
|
|
19
17
|
ids?: string[];
|
|
20
18
|
created_after?: number;
|
|
21
19
|
created_before?: number;
|
|
@@ -31,7 +29,7 @@ export interface PushOptions {
|
|
|
31
29
|
priority?: number;
|
|
32
30
|
}
|
|
33
31
|
export declare function push(pipeline: string, stage: string, id?: string, { payload, priority }?: PushOptions): string;
|
|
34
|
-
export declare function claim(pipeline: string, stage: string
|
|
32
|
+
export declare function claim(pipeline: string, stage: string): Item | null;
|
|
35
33
|
export interface ReleaseOptions {
|
|
36
34
|
target?: string;
|
|
37
35
|
payload?: string;
|
|
@@ -39,10 +37,10 @@ export interface ReleaseOptions {
|
|
|
39
37
|
priority?: number;
|
|
40
38
|
}
|
|
41
39
|
export declare function release(pipeline: string, id: string, { target, payload, replace, priority }?: ReleaseOptions): void;
|
|
42
|
-
export declare function batchRead(pipeline: string, stage
|
|
40
|
+
export declare function batchRead(pipeline: string, stage?: string, filters?: FilterOptions, includePayload?: boolean): Item[];
|
|
43
41
|
export declare function stats(pipeline: string): Record<string, {
|
|
44
42
|
total: number;
|
|
45
43
|
claimed: number;
|
|
46
44
|
}>;
|
|
47
|
-
export declare function reap(pipeline: string,
|
|
45
|
+
export declare function reap(pipeline: string, stage?: string, filters?: FilterOptions): number;
|
|
48
46
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAIhC,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAIhC,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+BD,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAUlD;AAID,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAYxC;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAErD;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAc,EAAE,GAAE,WAAgB,GAAG,MAAM,CAiBxH;AAID,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAoBlE;AAID,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAE,cAAmB,GAAG,IAAI,CA6BvH;AA6BD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,OAAO,GAAE,aAAkB,EAAE,cAAc,UAAO,GAAG,IAAI,EAAE,CA4BnH;AAID,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB1F;AAID,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAavF"}
|
package/dist/commands.js
CHANGED
|
@@ -69,7 +69,6 @@ function rowToItem(row, includePayload) {
|
|
|
69
69
|
id: row.id,
|
|
70
70
|
stage: row.subqueue,
|
|
71
71
|
claimed: Boolean(row.claimed),
|
|
72
|
-
claimed_by: row.claimed_by ?? null,
|
|
73
72
|
seq: row.seq,
|
|
74
73
|
priority: row.priority ?? 0.0,
|
|
75
74
|
created: row.created,
|
|
@@ -129,7 +128,7 @@ function push(pipeline, stage, id, { payload, priority = 0.0 } = {}) {
|
|
|
129
128
|
}
|
|
130
129
|
}
|
|
131
130
|
// ── claim ─────────────────────────────────────────────────────────────────────
|
|
132
|
-
function claim(pipeline, stage
|
|
131
|
+
function claim(pipeline, stage) {
|
|
133
132
|
const db = (0, db_js_1.openDb)(pipeline);
|
|
134
133
|
try {
|
|
135
134
|
return (0, db_js_1.inTransaction)(db, () => {
|
|
@@ -137,8 +136,8 @@ function claim(pipeline, stage, agentId) {
|
|
|
137
136
|
if (!row)
|
|
138
137
|
return null;
|
|
139
138
|
const now = Date.now();
|
|
140
|
-
db.prepare('UPDATE messages SET claimed = 1,
|
|
141
|
-
return rowToItem({ ...row, claimed: 1
|
|
139
|
+
db.prepare('UPDATE messages SET claimed = 1, last_modified = ? WHERE id = ?').run(now, row.id);
|
|
140
|
+
return rowToItem({ ...row, claimed: 1 }, true);
|
|
142
141
|
});
|
|
143
142
|
}
|
|
144
143
|
finally {
|
|
@@ -167,47 +166,45 @@ function release(pipeline, id, { target, payload, replace, priority } = {}) {
|
|
|
167
166
|
else {
|
|
168
167
|
newPayload = row.payload ?? null;
|
|
169
168
|
}
|
|
170
|
-
db.prepare('UPDATE messages SET claimed = 0,
|
|
169
|
+
db.prepare('UPDATE messages SET claimed = 0, seq = ?, subqueue = ?, payload = ?, priority = ?, last_modified = ? WHERE id = ?').run(seq, newStage, newPayload, newPriority, now, id);
|
|
171
170
|
});
|
|
172
171
|
}
|
|
173
172
|
finally {
|
|
174
173
|
db.close();
|
|
175
174
|
}
|
|
176
175
|
}
|
|
177
|
-
// ──
|
|
178
|
-
function
|
|
176
|
+
// ── shared filter builder ─────────────────────────────────────────────────────
|
|
177
|
+
function buildFilterConditions(stage, filters) {
|
|
178
|
+
const conditions = ['subqueue LIKE ?'];
|
|
179
|
+
const params = [toGlob(stage)];
|
|
180
|
+
if (filters.ids?.length) {
|
|
181
|
+
conditions.push(`id IN (${filters.ids.map(() => '?').join(', ')})`);
|
|
182
|
+
params.push(...filters.ids);
|
|
183
|
+
}
|
|
184
|
+
if (filters.created_after !== undefined) {
|
|
185
|
+
conditions.push('created > ?');
|
|
186
|
+
params.push(filters.created_after);
|
|
187
|
+
}
|
|
188
|
+
if (filters.created_before !== undefined) {
|
|
189
|
+
conditions.push('created < ?');
|
|
190
|
+
params.push(filters.created_before);
|
|
191
|
+
}
|
|
192
|
+
if (filters.modified_after !== undefined) {
|
|
193
|
+
conditions.push('last_modified > ?');
|
|
194
|
+
params.push(filters.modified_after);
|
|
195
|
+
}
|
|
196
|
+
return { conditions, params };
|
|
197
|
+
}
|
|
198
|
+
// ── batchRead ─────────────────────────────────────────────────────────────────
|
|
199
|
+
function batchRead(pipeline, stage = '*', filters = {}, includePayload = true) {
|
|
179
200
|
const db = (0, db_js_1.openDb)(pipeline);
|
|
180
201
|
try {
|
|
181
|
-
const conditions =
|
|
182
|
-
const params = [toGlob(stage)];
|
|
202
|
+
const { conditions, params } = buildFilterConditions(stage, filters);
|
|
183
203
|
if (filters.claimed !== undefined) {
|
|
184
204
|
conditions.push('claimed = ?');
|
|
185
205
|
params.push(filters.claimed ? 1 : 0);
|
|
186
206
|
}
|
|
187
|
-
|
|
188
|
-
conditions.push('claimed_by = ?');
|
|
189
|
-
params.push(filters.claimed_by);
|
|
190
|
-
}
|
|
191
|
-
if (filters.ids?.length) {
|
|
192
|
-
conditions.push(`id IN (${filters.ids.map(() => '?').join(', ')})`);
|
|
193
|
-
params.push(...filters.ids);
|
|
194
|
-
}
|
|
195
|
-
if (filters.created_after !== undefined) {
|
|
196
|
-
conditions.push('created > ?');
|
|
197
|
-
params.push(filters.created_after);
|
|
198
|
-
}
|
|
199
|
-
if (filters.created_before !== undefined) {
|
|
200
|
-
conditions.push('created < ?');
|
|
201
|
-
params.push(filters.created_before);
|
|
202
|
-
}
|
|
203
|
-
if (filters.modified_after !== undefined) {
|
|
204
|
-
conditions.push('last_modified > ?');
|
|
205
|
-
params.push(filters.modified_after);
|
|
206
|
-
}
|
|
207
|
-
let sql = 'SELECT * FROM messages';
|
|
208
|
-
if (conditions.length)
|
|
209
|
-
sql += ' WHERE ' + conditions.join(' AND ');
|
|
210
|
-
sql += ' ORDER BY seq ASC';
|
|
207
|
+
let sql = `SELECT * FROM messages WHERE ${conditions.join(' AND ')} ORDER BY seq ASC`;
|
|
211
208
|
if (filters.limit !== undefined) {
|
|
212
209
|
sql += ' LIMIT ?';
|
|
213
210
|
params.push(filters.limit);
|
|
@@ -226,9 +223,6 @@ function queryItems(pipeline, stage, filters, includePayload) {
|
|
|
226
223
|
db.close();
|
|
227
224
|
}
|
|
228
225
|
}
|
|
229
|
-
function batchRead(pipeline, stage, filters = {}, includePayload = true) {
|
|
230
|
-
return queryItems(pipeline, stage, filters, includePayload);
|
|
231
|
-
}
|
|
232
226
|
// ── stats ─────────────────────────────────────────────────────────────────────
|
|
233
227
|
function stats(pipeline) {
|
|
234
228
|
const db = (0, db_js_1.openDb)(pipeline);
|
|
@@ -249,15 +243,15 @@ function stats(pipeline) {
|
|
|
249
243
|
}
|
|
250
244
|
}
|
|
251
245
|
// ── reap ──────────────────────────────────────────────────────────────────────
|
|
252
|
-
function reap(pipeline,
|
|
246
|
+
function reap(pipeline, stage = '*', filters = {}) {
|
|
253
247
|
const db = (0, db_js_1.openDb)(pipeline);
|
|
254
248
|
try {
|
|
255
249
|
return (0, db_js_1.inTransaction)(db, () => {
|
|
256
250
|
const now = Date.now();
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
return
|
|
251
|
+
const { conditions, params } = buildFilterConditions(stage, filters);
|
|
252
|
+
conditions.push('claimed = 1');
|
|
253
|
+
const sql = `UPDATE messages SET claimed = 0, last_modified = ? WHERE ${conditions.join(' AND ')}`;
|
|
254
|
+
return db.prepare(sql).run(now, ...params).changes;
|
|
261
255
|
});
|
|
262
256
|
}
|
|
263
257
|
finally {
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAmBtC,wBAAgB,MAAM,IAAI,MAAM,CAI/B;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAWtD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEtE"}
|
package/dist/db.js
CHANGED
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;AAmBA,wBAIC;AAED,wBAWC;AAED,sCAEC;AAxCD,oEAAsC;AACtC,qCAAoC;AACpC,yCAAiC;AAEjC,MAAM,GAAG,GAAG;;;;;;;;;;;;;CAaX,CAAC;AAEF,SAAgB,MAAM;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAA,gBAAI,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,MAAM,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;IACjD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,0EAA0E;IAC1E,IAAI,CAAC;QAAC,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrH,EAAE,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IACnG,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,aAAa,CAAI,EAAqB,EAAE,EAAW;IACjE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AACxC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -35,8 +35,6 @@ function collectFilters(opts) {
|
|
|
35
35
|
const f = {};
|
|
36
36
|
if (opts['claimed'] !== undefined)
|
|
37
37
|
f.claimed = opts['claimed'] === '1';
|
|
38
|
-
if (opts['claimedBy'])
|
|
39
|
-
f.claimed_by = opts['claimedBy'];
|
|
40
38
|
if (opts['ids'])
|
|
41
39
|
f.ids = opts['ids'].split(',');
|
|
42
40
|
if (opts['createdAfter'])
|
|
@@ -54,7 +52,6 @@ function collectFilters(opts) {
|
|
|
54
52
|
function addFilterOptions(cmd) {
|
|
55
53
|
return cmd
|
|
56
54
|
.option('--claimed <0|1>')
|
|
57
|
-
.option('--claimed-by <agent>')
|
|
58
55
|
.option('--ids <id1,id2,...>')
|
|
59
56
|
.option('--created-after <epoch>', '', parseIntArg)
|
|
60
57
|
.option('--created-before <epoch>', '', parseIntArg)
|
|
@@ -62,6 +59,13 @@ function addFilterOptions(cmd) {
|
|
|
62
59
|
.option('--limit <n>', '', parseIntArg)
|
|
63
60
|
.option('--offset <n>', '', parseIntArg);
|
|
64
61
|
}
|
|
62
|
+
function addReapFilterOptions(cmd) {
|
|
63
|
+
return cmd
|
|
64
|
+
.option('--ids <id1,id2,...>')
|
|
65
|
+
.option('--created-after <epoch>', '', parseIntArg)
|
|
66
|
+
.option('--created-before <epoch>', '', parseIntArg)
|
|
67
|
+
.option('--modified-after <epoch>', '', parseIntArg);
|
|
68
|
+
}
|
|
65
69
|
const program = new commander_1.Command();
|
|
66
70
|
program.name('qq').description('Persistent pipeline for Claude agent workflows');
|
|
67
71
|
program
|
|
@@ -109,10 +113,9 @@ program
|
|
|
109
113
|
});
|
|
110
114
|
program
|
|
111
115
|
.command('claim <pipeline> <stage>')
|
|
112
|
-
.
|
|
113
|
-
.action((pipeline, stage, opts) => {
|
|
116
|
+
.action((pipeline, stage) => {
|
|
114
117
|
try {
|
|
115
|
-
out((0, commands_js_1.claim)(pipeline, stage
|
|
118
|
+
out((0, commands_js_1.claim)(pipeline, stage) ?? { empty: true });
|
|
116
119
|
}
|
|
117
120
|
catch (e) {
|
|
118
121
|
fail(e instanceof Error ? e.message : String(e));
|
|
@@ -133,14 +136,14 @@ program
|
|
|
133
136
|
e instanceof commands_js_1.QQError ? fail(e.message) : fail(String(e));
|
|
134
137
|
}
|
|
135
138
|
});
|
|
136
|
-
addFilterOptions(program.command('batch-read <pipeline>
|
|
139
|
+
addFilterOptions(program.command('batch-read <pipeline> [stage]'))
|
|
137
140
|
.option('--payload', 'include payload in output')
|
|
138
141
|
.action((pipeline, stage, opts) => {
|
|
139
142
|
try {
|
|
140
143
|
const filters = collectFilters(opts);
|
|
141
144
|
if (filters.claimed === undefined)
|
|
142
145
|
filters.claimed = false;
|
|
143
|
-
out((0, commands_js_1.batchRead)(pipeline, stage, filters, opts.payload ?? false));
|
|
146
|
+
out((0, commands_js_1.batchRead)(pipeline, stage ?? '*', filters, opts.payload ?? false));
|
|
144
147
|
}
|
|
145
148
|
catch (e) {
|
|
146
149
|
fail(e instanceof Error ? e.message : String(e));
|
|
@@ -156,11 +159,10 @@ program
|
|
|
156
159
|
fail(e instanceof Error ? e.message : String(e));
|
|
157
160
|
}
|
|
158
161
|
});
|
|
159
|
-
program
|
|
160
|
-
.
|
|
161
|
-
.action((pipeline, agentId) => {
|
|
162
|
+
addReapFilterOptions(program.command('reap <pipeline> [stage]'))
|
|
163
|
+
.action((pipeline, stage, opts) => {
|
|
162
164
|
try {
|
|
163
|
-
out({ reaped: (0, commands_js_1.reap)(pipeline,
|
|
165
|
+
out({ reaped: (0, commands_js_1.reap)(pipeline, stage, collectFilters(opts)) });
|
|
164
166
|
}
|
|
165
167
|
catch (e) {
|
|
166
168
|
fail(e instanceof Error ? e.message : String(e));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAA0D;AAC1D,2DAA+C;AAC/C,qCAAuC;AACvC,yCAA0C;AAC1C,qCAA+B;AAC/B,+CAIuB;AAEvB,SAAS,GAAG,CAAC,IAAa;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,cAAI,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,gCAAoB,CAAC,qBAAqB,CAAC,CAAC;IACpE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,gCAAoB,CAAC,mBAAmB,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B;IACnD,MAAM,CAAC,GAAkB,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS;QAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;IACvE,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/commands.ts
CHANGED
|
@@ -19,7 +19,6 @@ export interface Item {
|
|
|
19
19
|
id: string;
|
|
20
20
|
stage: string;
|
|
21
21
|
claimed: boolean;
|
|
22
|
-
claimed_by: string | null;
|
|
23
22
|
seq: number;
|
|
24
23
|
priority: number;
|
|
25
24
|
created: number;
|
|
@@ -29,7 +28,6 @@ export interface Item {
|
|
|
29
28
|
|
|
30
29
|
export interface FilterOptions {
|
|
31
30
|
claimed?: boolean;
|
|
32
|
-
claimed_by?: string;
|
|
33
31
|
ids?: string[];
|
|
34
32
|
created_after?: number;
|
|
35
33
|
created_before?: number;
|
|
@@ -56,7 +54,6 @@ function rowToItem(row: Record<string, unknown>, includePayload: boolean): Item
|
|
|
56
54
|
id: row.id as string,
|
|
57
55
|
stage: row.subqueue as string,
|
|
58
56
|
claimed: Boolean(row.claimed),
|
|
59
|
-
claimed_by: (row.claimed_by as string | null) ?? null,
|
|
60
57
|
seq: row.seq as number,
|
|
61
58
|
priority: (row.priority as number) ?? 0.0,
|
|
62
59
|
created: row.created as number,
|
|
@@ -130,7 +127,7 @@ export function push(pipeline: string, stage: string, id?: string, { payload, pr
|
|
|
130
127
|
|
|
131
128
|
// ── claim ─────────────────────────────────────────────────────────────────────
|
|
132
129
|
|
|
133
|
-
export function claim(pipeline: string, stage: string
|
|
130
|
+
export function claim(pipeline: string, stage: string): Item | null {
|
|
134
131
|
const db = openDb(pipeline);
|
|
135
132
|
try {
|
|
136
133
|
return inTransaction(db, () => {
|
|
@@ -142,10 +139,10 @@ export function claim(pipeline: string, stage: string, agentId?: string): Item |
|
|
|
142
139
|
|
|
143
140
|
const now = Date.now();
|
|
144
141
|
db.prepare(
|
|
145
|
-
'UPDATE messages SET claimed = 1,
|
|
146
|
-
).run(
|
|
142
|
+
'UPDATE messages SET claimed = 1, last_modified = ? WHERE id = ?'
|
|
143
|
+
).run(now, row.id as string);
|
|
147
144
|
|
|
148
|
-
return rowToItem({ ...row, claimed: 1
|
|
145
|
+
return rowToItem({ ...row, claimed: 1 }, true);
|
|
149
146
|
});
|
|
150
147
|
} finally {
|
|
151
148
|
db.close();
|
|
@@ -184,7 +181,7 @@ export function release(pipeline: string, id: string, { target, payload, replace
|
|
|
184
181
|
}
|
|
185
182
|
|
|
186
183
|
db.prepare(
|
|
187
|
-
'UPDATE messages SET claimed = 0,
|
|
184
|
+
'UPDATE messages SET claimed = 0, seq = ?, subqueue = ?, payload = ?, priority = ?, last_modified = ? WHERE id = ?'
|
|
188
185
|
).run(seq, newStage, newPayload, newPriority, now, id);
|
|
189
186
|
});
|
|
190
187
|
} finally {
|
|
@@ -192,42 +189,44 @@ export function release(pipeline: string, id: string, { target, payload, replace
|
|
|
192
189
|
}
|
|
193
190
|
}
|
|
194
191
|
|
|
195
|
-
// ──
|
|
192
|
+
// ── shared filter builder ─────────────────────────────────────────────────────
|
|
196
193
|
|
|
197
|
-
function
|
|
194
|
+
function buildFilterConditions(stage: string, filters: FilterOptions): { conditions: string[]; params: (string | number | null)[] } {
|
|
195
|
+
const conditions: string[] = ['subqueue LIKE ?'];
|
|
196
|
+
const params: (string | number | null)[] = [toGlob(stage)];
|
|
197
|
+
|
|
198
|
+
if (filters.ids?.length) {
|
|
199
|
+
conditions.push(`id IN (${filters.ids.map(() => '?').join(', ')})`);
|
|
200
|
+
params.push(...filters.ids);
|
|
201
|
+
}
|
|
202
|
+
if (filters.created_after !== undefined) {
|
|
203
|
+
conditions.push('created > ?');
|
|
204
|
+
params.push(filters.created_after);
|
|
205
|
+
}
|
|
206
|
+
if (filters.created_before !== undefined) {
|
|
207
|
+
conditions.push('created < ?');
|
|
208
|
+
params.push(filters.created_before);
|
|
209
|
+
}
|
|
210
|
+
if (filters.modified_after !== undefined) {
|
|
211
|
+
conditions.push('last_modified > ?');
|
|
212
|
+
params.push(filters.modified_after);
|
|
213
|
+
}
|
|
214
|
+
return { conditions, params };
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// ── batchRead ─────────────────────────────────────────────────────────────────
|
|
218
|
+
|
|
219
|
+
export function batchRead(pipeline: string, stage = '*', filters: FilterOptions = {}, includePayload = true): Item[] {
|
|
198
220
|
const db = openDb(pipeline);
|
|
199
221
|
try {
|
|
200
|
-
const conditions
|
|
201
|
-
const params: (string | number | null)[] = [toGlob(stage)];
|
|
222
|
+
const { conditions, params } = buildFilterConditions(stage, filters);
|
|
202
223
|
|
|
203
224
|
if (filters.claimed !== undefined) {
|
|
204
225
|
conditions.push('claimed = ?');
|
|
205
226
|
params.push(filters.claimed ? 1 : 0);
|
|
206
227
|
}
|
|
207
|
-
if (filters.claimed_by !== undefined) {
|
|
208
|
-
conditions.push('claimed_by = ?');
|
|
209
|
-
params.push(filters.claimed_by);
|
|
210
|
-
}
|
|
211
|
-
if (filters.ids?.length) {
|
|
212
|
-
conditions.push(`id IN (${filters.ids.map(() => '?').join(', ')})`);
|
|
213
|
-
params.push(...filters.ids);
|
|
214
|
-
}
|
|
215
|
-
if (filters.created_after !== undefined) {
|
|
216
|
-
conditions.push('created > ?');
|
|
217
|
-
params.push(filters.created_after);
|
|
218
|
-
}
|
|
219
|
-
if (filters.created_before !== undefined) {
|
|
220
|
-
conditions.push('created < ?');
|
|
221
|
-
params.push(filters.created_before);
|
|
222
|
-
}
|
|
223
|
-
if (filters.modified_after !== undefined) {
|
|
224
|
-
conditions.push('last_modified > ?');
|
|
225
|
-
params.push(filters.modified_after);
|
|
226
|
-
}
|
|
227
228
|
|
|
228
|
-
let sql =
|
|
229
|
-
if (conditions.length) sql += ' WHERE ' + conditions.join(' AND ');
|
|
230
|
-
sql += ' ORDER BY seq ASC';
|
|
229
|
+
let sql = `SELECT * FROM messages WHERE ${conditions.join(' AND ')} ORDER BY seq ASC`;
|
|
231
230
|
|
|
232
231
|
if (filters.limit !== undefined) {
|
|
233
232
|
sql += ' LIMIT ?';
|
|
@@ -247,10 +246,6 @@ function queryItems(pipeline: string, stage: string, filters: FilterOptions, inc
|
|
|
247
246
|
}
|
|
248
247
|
}
|
|
249
248
|
|
|
250
|
-
export function batchRead(pipeline: string, stage: string, filters: FilterOptions = {}, includePayload = true): Item[] {
|
|
251
|
-
return queryItems(pipeline, stage, filters, includePayload);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
249
|
// ── stats ─────────────────────────────────────────────────────────────────────
|
|
255
250
|
|
|
256
251
|
export function stats(pipeline: string): Record<string, { total: number; claimed: number }> {
|
|
@@ -274,19 +269,15 @@ export function stats(pipeline: string): Record<string, { total: number; claimed
|
|
|
274
269
|
|
|
275
270
|
// ── reap ──────────────────────────────────────────────────────────────────────
|
|
276
271
|
|
|
277
|
-
export function reap(pipeline: string,
|
|
272
|
+
export function reap(pipeline: string, stage = '*', filters: FilterOptions = {}): number {
|
|
278
273
|
const db = openDb(pipeline);
|
|
279
274
|
try {
|
|
280
275
|
return inTransaction(db, () => {
|
|
281
276
|
const now = Date.now();
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
: db.prepare(
|
|
287
|
-
'UPDATE messages SET claimed = 0, claimed_by = NULL, last_modified = ? WHERE claimed = 1'
|
|
288
|
-
).run(now);
|
|
289
|
-
return result.changes;
|
|
277
|
+
const { conditions, params } = buildFilterConditions(stage, filters);
|
|
278
|
+
conditions.push('claimed = 1');
|
|
279
|
+
const sql = `UPDATE messages SET claimed = 0, last_modified = ? WHERE ${conditions.join(' AND ')}`;
|
|
280
|
+
return db.prepare(sql).run(now, ...params).changes;
|
|
290
281
|
});
|
|
291
282
|
} finally {
|
|
292
283
|
db.close();
|
package/src/db.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -39,7 +39,6 @@ function parseFloatArg(value: string): number {
|
|
|
39
39
|
function collectFilters(opts: Record<string, unknown>): FilterOptions {
|
|
40
40
|
const f: FilterOptions = {};
|
|
41
41
|
if (opts['claimed'] !== undefined) f.claimed = opts['claimed'] === '1';
|
|
42
|
-
if (opts['claimedBy']) f.claimed_by = opts['claimedBy'] as string;
|
|
43
42
|
if (opts['ids']) f.ids = (opts['ids'] as string).split(',');
|
|
44
43
|
if (opts['createdAfter']) f.created_after = opts['createdAfter'] as number;
|
|
45
44
|
if (opts['createdBefore']) f.created_before = opts['createdBefore'] as number;
|
|
@@ -52,7 +51,6 @@ function collectFilters(opts: Record<string, unknown>): FilterOptions {
|
|
|
52
51
|
function addFilterOptions(cmd: Command): Command {
|
|
53
52
|
return cmd
|
|
54
53
|
.option('--claimed <0|1>')
|
|
55
|
-
.option('--claimed-by <agent>')
|
|
56
54
|
.option('--ids <id1,id2,...>')
|
|
57
55
|
.option('--created-after <epoch>', '', parseIntArg)
|
|
58
56
|
.option('--created-before <epoch>', '', parseIntArg)
|
|
@@ -61,6 +59,14 @@ function addFilterOptions(cmd: Command): Command {
|
|
|
61
59
|
.option('--offset <n>', '', parseIntArg);
|
|
62
60
|
}
|
|
63
61
|
|
|
62
|
+
function addReapFilterOptions(cmd: Command): Command {
|
|
63
|
+
return cmd
|
|
64
|
+
.option('--ids <id1,id2,...>')
|
|
65
|
+
.option('--created-after <epoch>', '', parseIntArg)
|
|
66
|
+
.option('--created-before <epoch>', '', parseIntArg)
|
|
67
|
+
.option('--modified-after <epoch>', '', parseIntArg);
|
|
68
|
+
}
|
|
69
|
+
|
|
64
70
|
const program = new Command();
|
|
65
71
|
program.name('qq').description('Persistent pipeline for Claude agent workflows');
|
|
66
72
|
|
|
@@ -98,9 +104,8 @@ program
|
|
|
98
104
|
|
|
99
105
|
program
|
|
100
106
|
.command('claim <pipeline> <stage>')
|
|
101
|
-
.
|
|
102
|
-
|
|
103
|
-
try { out(claim(pipeline, stage, opts.agentId) ?? { empty: true }); }
|
|
107
|
+
.action((pipeline, stage) => {
|
|
108
|
+
try { out(claim(pipeline, stage) ?? { empty: true }); }
|
|
104
109
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
105
110
|
});
|
|
106
111
|
|
|
@@ -117,13 +122,13 @@ program
|
|
|
117
122
|
} catch (e) { e instanceof QQError ? fail(e.message) : fail(String(e)); }
|
|
118
123
|
});
|
|
119
124
|
|
|
120
|
-
addFilterOptions(program.command('batch-read <pipeline>
|
|
125
|
+
addFilterOptions(program.command('batch-read <pipeline> [stage]'))
|
|
121
126
|
.option('--payload', 'include payload in output')
|
|
122
127
|
.action((pipeline, stage, opts) => {
|
|
123
128
|
try {
|
|
124
129
|
const filters = collectFilters(opts);
|
|
125
130
|
if (filters.claimed === undefined) filters.claimed = false;
|
|
126
|
-
out(batchRead(pipeline, stage, filters, opts.payload ?? false));
|
|
131
|
+
out(batchRead(pipeline, stage ?? '*', filters, opts.payload ?? false));
|
|
127
132
|
}
|
|
128
133
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
129
134
|
});
|
|
@@ -135,10 +140,9 @@ program
|
|
|
135
140
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
136
141
|
});
|
|
137
142
|
|
|
138
|
-
program
|
|
139
|
-
.
|
|
140
|
-
|
|
141
|
-
try { out({ reaped: reap(pipeline, agentId) }); }
|
|
143
|
+
addReapFilterOptions(program.command('reap <pipeline> [stage]'))
|
|
144
|
+
.action((pipeline, stage, opts) => {
|
|
145
|
+
try { out({ reaped: reap(pipeline, stage, collectFilters(opts)) }); }
|
|
142
146
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
143
147
|
});
|
|
144
148
|
|