@quantod/qq 0.1.8 → 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 +15 -14
- 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 +16 -13
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));
|
|
@@ -121,12 +124,11 @@ program
|
|
|
121
124
|
program
|
|
122
125
|
.command('release <pipeline> <id>')
|
|
123
126
|
.option('--target <stage>')
|
|
124
|
-
.option('--payload', 'read payload from stdin')
|
|
125
127
|
.option('--replace')
|
|
126
128
|
.option('--priority <n>', 'update item priority', parseFloatArg)
|
|
127
129
|
.action((pipeline, id, opts) => {
|
|
128
130
|
try {
|
|
129
|
-
const payload =
|
|
131
|
+
const payload = readStdin() ?? undefined;
|
|
130
132
|
(0, commands_js_1.release)(pipeline, id, { target: opts.target, payload, replace: opts.replace, priority: opts.priority });
|
|
131
133
|
out({ ok: true });
|
|
132
134
|
}
|
|
@@ -134,14 +136,14 @@ program
|
|
|
134
136
|
e instanceof commands_js_1.QQError ? fail(e.message) : fail(String(e));
|
|
135
137
|
}
|
|
136
138
|
});
|
|
137
|
-
addFilterOptions(program.command('batch-read <pipeline>
|
|
139
|
+
addFilterOptions(program.command('batch-read <pipeline> [stage]'))
|
|
138
140
|
.option('--payload', 'include payload in output')
|
|
139
141
|
.action((pipeline, stage, opts) => {
|
|
140
142
|
try {
|
|
141
143
|
const filters = collectFilters(opts);
|
|
142
144
|
if (filters.claimed === undefined)
|
|
143
145
|
filters.claimed = false;
|
|
144
|
-
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));
|
|
145
147
|
}
|
|
146
148
|
catch (e) {
|
|
147
149
|
fail(e instanceof Error ? e.message : String(e));
|
|
@@ -157,11 +159,10 @@ program
|
|
|
157
159
|
fail(e instanceof Error ? e.message : String(e));
|
|
158
160
|
}
|
|
159
161
|
});
|
|
160
|
-
program
|
|
161
|
-
.
|
|
162
|
-
.action((pipeline, agentId) => {
|
|
162
|
+
addReapFilterOptions(program.command('reap <pipeline> [stage]'))
|
|
163
|
+
.action((pipeline, stage, opts) => {
|
|
163
164
|
try {
|
|
164
|
-
out({ reaped: (0, commands_js_1.reap)(pipeline,
|
|
165
|
+
out({ reaped: (0, commands_js_1.reap)(pipeline, stage, collectFilters(opts)) });
|
|
165
166
|
}
|
|
166
167
|
catch (e) {
|
|
167
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,33 +104,31 @@ 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
|
|
|
107
112
|
program
|
|
108
113
|
.command('release <pipeline> <id>')
|
|
109
114
|
.option('--target <stage>')
|
|
110
|
-
.option('--payload', 'read payload from stdin')
|
|
111
115
|
.option('--replace')
|
|
112
116
|
.option('--priority <n>', 'update item priority', parseFloatArg)
|
|
113
117
|
.action((pipeline, id, opts) => {
|
|
114
118
|
try {
|
|
115
|
-
const payload =
|
|
119
|
+
const payload = readStdin() ?? undefined;
|
|
116
120
|
release(pipeline, id, { target: opts.target, payload, replace: opts.replace, priority: opts.priority });
|
|
117
121
|
out({ ok: true });
|
|
118
122
|
} catch (e) { e instanceof QQError ? fail(e.message) : fail(String(e)); }
|
|
119
123
|
});
|
|
120
124
|
|
|
121
|
-
addFilterOptions(program.command('batch-read <pipeline>
|
|
125
|
+
addFilterOptions(program.command('batch-read <pipeline> [stage]'))
|
|
122
126
|
.option('--payload', 'include payload in output')
|
|
123
127
|
.action((pipeline, stage, opts) => {
|
|
124
128
|
try {
|
|
125
129
|
const filters = collectFilters(opts);
|
|
126
130
|
if (filters.claimed === undefined) filters.claimed = false;
|
|
127
|
-
out(batchRead(pipeline, stage, filters, opts.payload ?? false));
|
|
131
|
+
out(batchRead(pipeline, stage ?? '*', filters, opts.payload ?? false));
|
|
128
132
|
}
|
|
129
133
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
130
134
|
});
|
|
@@ -136,10 +140,9 @@ program
|
|
|
136
140
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
137
141
|
});
|
|
138
142
|
|
|
139
|
-
program
|
|
140
|
-
.
|
|
141
|
-
|
|
142
|
-
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)) }); }
|
|
143
146
|
catch (e) { fail(e instanceof Error ? e.message : String(e)); }
|
|
144
147
|
});
|
|
145
148
|
|