@taskcast/sqlite 0.2.0 → 0.3.1

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/index.d.ts CHANGED
@@ -7,8 +7,8 @@ export interface SqliteAdapterOptions {
7
7
  path?: string;
8
8
  }
9
9
  export declare function createSqliteAdapters(options?: SqliteAdapterOptions): {
10
- shortTerm: SqliteShortTermStore;
11
- longTerm: SqliteLongTermStore;
10
+ shortTermStore: SqliteShortTermStore;
11
+ longTermStore: SqliteLongTermStore;
12
12
  db: DatabaseType;
13
13
  };
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG;IACxE,SAAS,EAAE,oBAAoB,CAAA;IAC/B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,EAAE,EAAE,YAAY,CAAA;CACjB,CAeA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAiB,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG;IACxE,cAAc,EAAE,oBAAoB,CAAA;IACpC,aAAa,EAAE,mBAAmB,CAAA;IAClC,EAAE,EAAE,YAAY,CAAA;CACjB,CAeA"}
package/dist/index.js CHANGED
@@ -15,8 +15,8 @@ export function createSqliteAdapters(options = {}) {
15
15
  const migration = readFileSync(join(__dirname, '../migrations/001_initial.sql'), 'utf8');
16
16
  db.exec(migration);
17
17
  return {
18
- shortTerm: new SqliteShortTermStore(db),
19
- longTerm: new SqliteLongTermStore(db),
18
+ shortTermStore: new SqliteShortTermStore(db),
19
+ longTermStore: new SqliteLongTermStore(db),
20
20
  db,
21
21
  };
22
22
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,QAA2C,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAMpD,MAAM,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IAKrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,eAAe,CAAA;IACrF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAA;IACxF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO;QACL,SAAS,EAAE,IAAI,oBAAoB,CAAC,EAAE,CAAC;QACvC,QAAQ,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACrC,EAAE;KACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,QAA2C,MAAM,gBAAgB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAMpD,MAAM,UAAU,oBAAoB,CAAC,UAAgC,EAAE;IAKrE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,eAAe,CAAA;IACrF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC/B,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAA;IACxF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAElB,OAAO;QACL,cAAc,EAAE,IAAI,oBAAoB,CAAC,EAAE,CAAC;QAC5C,aAAa,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC;QAC1C,EAAE;KACH,CAAA;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type Database from 'better-sqlite3';
2
- import type { Task, TaskEvent, LongTermStore, EventQueryOptions } from '@taskcast/core';
2
+ import type { Task, TaskEvent, LongTermStore, EventQueryOptions, WorkerAuditEvent } from '@taskcast/core';
3
3
  export declare class SqliteLongTermStore implements LongTermStore {
4
4
  private db;
5
5
  constructor(db: Database.Database);
@@ -7,5 +7,7 @@ export declare class SqliteLongTermStore implements LongTermStore {
7
7
  getTask(taskId: string): Promise<Task | null>;
8
8
  saveEvent(event: TaskEvent): Promise<void>;
9
9
  getEvents(taskId: string, opts?: EventQueryOptions): Promise<TaskEvent[]>;
10
+ saveWorkerEvent(event: WorkerAuditEvent): Promise<void>;
11
+ getWorkerEvents(workerId: string, opts?: EventQueryOptions): Promise<WorkerAuditEvent[]>;
10
12
  }
11
13
  //# sourceMappingURL=long-term.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"long-term.d.ts","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKvF,qBAAa,mBAAoB,YAAW,aAAa;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAgDhF"}
1
+ {"version":3,"file":"long-term.d.ts","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAKzG,qBAAa,mBAAoB,YAAW,aAAa;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB1C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmDzE,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAyC/F"}
package/dist/long-term.js CHANGED
@@ -1,4 +1,4 @@
1
- import { rowToTask, rowToEvent } from './row-mappers.js';
1
+ import { rowToTask, rowToEvent, rowToWorkerEvent } from './row-mappers.js';
2
2
  // ─── SqliteLongTermStore ──────────────────────────────────────────────────
3
3
  export class SqliteLongTermStore {
4
4
  db;
@@ -7,8 +7,8 @@ export class SqliteLongTermStore {
7
7
  }
8
8
  async saveTask(task) {
9
9
  const stmt = this.db.prepare(`
10
- INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl)
11
- VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl)
10
+ INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl, tags, assign_mode, cost, assigned_worker, disconnect_policy)
11
+ VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl, @tags, @assign_mode, @cost, @assigned_worker, @disconnect_policy)
12
12
  ON CONFLICT (id) DO UPDATE SET
13
13
  type = excluded.type,
14
14
  status = excluded.status,
@@ -21,7 +21,12 @@ export class SqliteLongTermStore {
21
21
  cleanup = excluded.cleanup,
22
22
  updated_at = excluded.updated_at,
23
23
  completed_at = excluded.completed_at,
24
- ttl = excluded.ttl
24
+ ttl = excluded.ttl,
25
+ tags = excluded.tags,
26
+ assign_mode = excluded.assign_mode,
27
+ cost = excluded.cost,
28
+ assigned_worker = excluded.assigned_worker,
29
+ disconnect_policy = excluded.disconnect_policy
25
30
  `);
26
31
  stmt.run({
27
32
  id: task.id,
@@ -38,6 +43,11 @@ export class SqliteLongTermStore {
38
43
  updated_at: task.updatedAt,
39
44
  completed_at: task.completedAt ?? null,
40
45
  ttl: task.ttl ?? null,
46
+ tags: task.tags ? JSON.stringify(task.tags) : null,
47
+ assign_mode: task.assignMode ?? null,
48
+ cost: task.cost ?? null,
49
+ assigned_worker: task.assignedWorker ?? null,
50
+ disconnect_policy: task.disconnectPolicy ?? null,
41
51
  });
42
52
  }
43
53
  async getTask(taskId) {
@@ -46,8 +56,8 @@ export class SqliteLongTermStore {
46
56
  }
47
57
  async saveEvent(event) {
48
58
  this.db
49
- .prepare(`INSERT INTO taskcast_events (id, task_id, idx, timestamp, type, level, data, series_id, series_mode)
50
- VALUES (@id, @task_id, @idx, @timestamp, @type, @level, @data, @series_id, @series_mode)
59
+ .prepare(`INSERT INTO taskcast_events (id, task_id, idx, timestamp, type, level, data, series_id, series_mode, series_acc_field)
60
+ VALUES (@id, @task_id, @idx, @timestamp, @type, @level, @data, @series_id, @series_mode, @series_acc_field)
51
61
  ON CONFLICT (id) DO NOTHING`)
52
62
  .run({
53
63
  id: event.id,
@@ -59,6 +69,7 @@ export class SqliteLongTermStore {
59
69
  data: event.data != null ? JSON.stringify(event.data) : null,
60
70
  series_id: event.seriesId ?? null,
61
71
  series_mode: event.seriesMode ?? null,
72
+ series_acc_field: event.seriesAccField ?? null,
62
73
  });
63
74
  }
64
75
  async getEvents(taskId, opts) {
@@ -108,5 +119,58 @@ export class SqliteLongTermStore {
108
119
  const rows = this.db.prepare(sql).all(...params);
109
120
  return rows.map(rowToEvent);
110
121
  }
122
+ // ─── Worker audit events ─────────────────────────────────────────────────
123
+ async saveWorkerEvent(event) {
124
+ this.db
125
+ .prepare(`INSERT INTO taskcast_worker_events (id, worker_id, timestamp, action, data)
126
+ VALUES (@id, @worker_id, @timestamp, @action, @data)
127
+ ON CONFLICT (id) DO NOTHING`)
128
+ .run({
129
+ id: event.id,
130
+ worker_id: event.workerId,
131
+ timestamp: event.timestamp,
132
+ action: event.action,
133
+ data: event.data ? JSON.stringify(event.data) : null,
134
+ });
135
+ }
136
+ async getWorkerEvents(workerId, opts) {
137
+ const since = opts?.since;
138
+ const limit = opts?.limit;
139
+ let sql;
140
+ const params = [workerId];
141
+ if (since?.timestamp !== undefined) {
142
+ sql = `
143
+ SELECT * FROM taskcast_worker_events
144
+ WHERE worker_id = ? AND timestamp > ?
145
+ ORDER BY timestamp ASC
146
+ `;
147
+ params.push(since.timestamp);
148
+ }
149
+ else if (since?.id) {
150
+ sql = `
151
+ SELECT * FROM taskcast_worker_events
152
+ WHERE worker_id = ?
153
+ AND timestamp > COALESCE(
154
+ (SELECT timestamp FROM taskcast_worker_events WHERE id = ?),
155
+ 0
156
+ )
157
+ ORDER BY timestamp ASC
158
+ `;
159
+ params.push(since.id);
160
+ }
161
+ else {
162
+ sql = `
163
+ SELECT * FROM taskcast_worker_events
164
+ WHERE worker_id = ?
165
+ ORDER BY timestamp ASC
166
+ `;
167
+ }
168
+ if (limit) {
169
+ sql += ' LIMIT ?';
170
+ params.push(limit);
171
+ }
172
+ const rows = this.db.prepare(sql).all(...params);
173
+ return rows.map(rowToWorkerEvent);
174
+ }
111
175
  }
112
176
  //# sourceMappingURL=long-term.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"long-term.js","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"long-term.js","sourceRoot":"","sources":["../src/long-term.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import type { Task, TaskEvent } from '@taskcast/core';
1
+ import type { Task, TaskEvent, Worker, WorkerAssignment, WorkerAuditEvent } from '@taskcast/core';
2
2
  export declare function rowToTask(row: Record<string, unknown>): Task;
3
+ export declare function rowToWorker(row: Record<string, unknown>): Worker;
4
+ export declare function rowToWorkerAssignment(row: Record<string, unknown>): WorkerAssignment;
5
+ export declare function rowToWorkerEvent(row: Record<string, unknown>): WorkerAuditEvent;
3
6
  export declare function rowToEvent(row: Record<string, unknown>): TaskEvent;
4
7
  //# sourceMappingURL=row-mappers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-mappers.d.ts","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAc,MAAM,gBAAgB,CAAA;AAEjE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAoB5D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAelE"}
1
+ {"version":3,"file":"row-mappers.d.ts","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,SAAS,EAET,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,gBAAgB,CAAA;AAEvB,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAyB5D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAchE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAQpF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAS/E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAgBlE"}
@@ -25,8 +25,54 @@ export function rowToTask(row) {
25
25
  task.completedAt = row['completed_at'];
26
26
  if (row['ttl'] != null)
27
27
  task.ttl = row['ttl'];
28
+ if (row['tags'] != null)
29
+ task.tags = JSON.parse(row['tags']);
30
+ if (row['assign_mode'] != null)
31
+ task.assignMode = row['assign_mode'];
32
+ if (row['cost'] != null)
33
+ task.cost = row['cost'];
34
+ if (row['assigned_worker'] != null)
35
+ task.assignedWorker = row['assigned_worker'];
36
+ if (row['disconnect_policy'] != null)
37
+ task.disconnectPolicy = row['disconnect_policy'];
28
38
  return task;
29
39
  }
40
+ export function rowToWorker(row) {
41
+ const worker = {
42
+ id: row['id'],
43
+ status: row['status'],
44
+ matchRule: JSON.parse(row['match_rule']),
45
+ capacity: row['capacity'],
46
+ usedSlots: row['used_slots'],
47
+ weight: row['weight'],
48
+ connectionMode: row['connection_mode'],
49
+ connectedAt: row['connected_at'],
50
+ lastHeartbeatAt: row['last_heartbeat_at'],
51
+ };
52
+ if (row['metadata'] != null)
53
+ worker.metadata = JSON.parse(row['metadata']);
54
+ return worker;
55
+ }
56
+ export function rowToWorkerAssignment(row) {
57
+ return {
58
+ taskId: row['task_id'],
59
+ workerId: row['worker_id'],
60
+ cost: row['cost'],
61
+ assignedAt: row['assigned_at'],
62
+ status: row['status'],
63
+ };
64
+ }
65
+ export function rowToWorkerEvent(row) {
66
+ const event = {
67
+ id: row['id'],
68
+ workerId: row['worker_id'],
69
+ timestamp: row['timestamp'],
70
+ action: row['action'],
71
+ };
72
+ if (row['data'] != null)
73
+ event.data = JSON.parse(row['data']);
74
+ return event;
75
+ }
30
76
  export function rowToEvent(row) {
31
77
  const event = {
32
78
  id: row['id'],
@@ -41,6 +87,8 @@ export function rowToEvent(row) {
41
87
  event.seriesId = row['series_id'];
42
88
  if (row['series_mode'] != null)
43
89
  event.seriesMode = row['series_mode'];
90
+ if (row['series_acc_field'] != null)
91
+ event.seriesAccField = row['series_acc_field'];
44
92
  return event;
45
93
  }
46
94
  //# sourceMappingURL=row-mappers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-mappers.js","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,GAA4B;IACpD,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAmB;QACvC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;QACtC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAW;KACvC,CAAA;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAW,CAAA;IAC1D,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC,CAAA;IAC5E,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC,CAAA;IACzE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC,CAAA;IAClF,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAW,CAAC,CAAA;IAC1F,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC,CAAA;IAClF,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,CAAA;IAC/E,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,CAAW,CAAA;IACjF,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAW,CAAA;IAEvD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAA4B;IACrD,MAAM,KAAK,GAAc;QACvB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,MAAM,EAAE,GAAG,CAAC,SAAS,CAAW;QAChC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAW;QAC3B,SAAS,EAAE,GAAG,CAAC,WAAW,CAAW;QACrC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAW;QAC3B,KAAK,EAAE,GAAG,CAAC,OAAO,CAAuB;QACzC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAW,CAAC,CAAC,CAAC,CAAC,IAAI;KACrE,CAAA;IAED,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAW,CAAA;IACzE,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI;QAAE,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,CAAe,CAAA;IAEnF,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"row-mappers.js","sourceRoot":"","sources":["../src/row-mappers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type Database from 'better-sqlite3';
2
- import type { Task, TaskEvent, ShortTermStore, EventQueryOptions } from '@taskcast/core';
2
+ import type { Task, TaskEvent, TaskStatus, ShortTermStore, EventQueryOptions, TaskFilter, Worker, WorkerFilter, WorkerAssignment } from '@taskcast/core';
3
3
  export declare class SqliteShortTermStore implements ShortTermStore {
4
4
  private db;
5
5
  constructor(db: Database.Database);
@@ -12,5 +12,17 @@ export declare class SqliteShortTermStore implements ShortTermStore {
12
12
  getSeriesLatest(taskId: string, seriesId: string): Promise<TaskEvent | null>;
13
13
  setSeriesLatest(taskId: string, seriesId: string, event: TaskEvent): Promise<void>;
14
14
  replaceLastSeriesEvent(taskId: string, seriesId: string, event: TaskEvent): Promise<void>;
15
+ listTasks(filter: TaskFilter): Promise<Task[]>;
16
+ saveWorker(worker: Worker): Promise<void>;
17
+ getWorker(workerId: string): Promise<Worker | null>;
18
+ listWorkers(filter?: WorkerFilter): Promise<Worker[]>;
19
+ deleteWorker(workerId: string): Promise<void>;
20
+ claimTask(taskId: string, workerId: string, cost: number): Promise<boolean>;
21
+ addAssignment(assignment: WorkerAssignment): Promise<void>;
22
+ removeAssignment(taskId: string): Promise<void>;
23
+ getWorkerAssignments(workerId: string): Promise<WorkerAssignment[]>;
24
+ getTaskAssignment(taskId: string): Promise<WorkerAssignment | null>;
25
+ clearTTL(_taskId: string): Promise<void>;
26
+ listByStatus(statuses: TaskStatus[]): Promise<Task[]>;
15
27
  }
16
28
  //# sourceMappingURL=short-term.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"short-term.d.ts","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKxF,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqDzE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQ5E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;CA4BjB"}
1
+ {"version":3,"file":"short-term.d.ts","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EACV,IAAI,EACJ,SAAS,EACT,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,YAAY,EACZ,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AAKvB,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ7C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqDzE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQ5E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,IAAI,CAAC;IA+BV,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA8C9C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQnD,WAAW,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBrD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyC3E,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB1D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAQnE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IASnE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAU5D"}
@@ -1,4 +1,4 @@
1
- import { rowToTask, rowToEvent } from './row-mappers.js';
1
+ import { rowToTask, rowToEvent, rowToWorker, rowToWorkerAssignment } from './row-mappers.js';
2
2
  // ─── SqliteShortTermStore ─────────────────────────────────────────────────
3
3
  export class SqliteShortTermStore {
4
4
  db;
@@ -7,8 +7,8 @@ export class SqliteShortTermStore {
7
7
  }
8
8
  async saveTask(task) {
9
9
  const stmt = this.db.prepare(`
10
- INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl)
11
- VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl)
10
+ INSERT INTO taskcast_tasks (id, type, status, params, result, error, metadata, auth_config, webhooks, cleanup, created_at, updated_at, completed_at, ttl, tags, assign_mode, cost, assigned_worker, disconnect_policy)
11
+ VALUES (@id, @type, @status, @params, @result, @error, @metadata, @auth_config, @webhooks, @cleanup, @created_at, @updated_at, @completed_at, @ttl, @tags, @assign_mode, @cost, @assigned_worker, @disconnect_policy)
12
12
  ON CONFLICT (id) DO UPDATE SET
13
13
  type = excluded.type,
14
14
  status = excluded.status,
@@ -21,7 +21,12 @@ export class SqliteShortTermStore {
21
21
  cleanup = excluded.cleanup,
22
22
  updated_at = excluded.updated_at,
23
23
  completed_at = excluded.completed_at,
24
- ttl = excluded.ttl
24
+ ttl = excluded.ttl,
25
+ tags = excluded.tags,
26
+ assign_mode = excluded.assign_mode,
27
+ cost = excluded.cost,
28
+ assigned_worker = excluded.assigned_worker,
29
+ disconnect_policy = excluded.disconnect_policy
25
30
  `);
26
31
  stmt.run({
27
32
  id: task.id,
@@ -38,6 +43,11 @@ export class SqliteShortTermStore {
38
43
  updated_at: task.updatedAt,
39
44
  completed_at: task.completedAt ?? null,
40
45
  ttl: task.ttl ?? null,
46
+ tags: task.tags ? JSON.stringify(task.tags) : null,
47
+ assign_mode: task.assignMode ?? null,
48
+ cost: task.cost ?? null,
49
+ assigned_worker: task.assignedWorker ?? null,
50
+ disconnect_policy: task.disconnectPolicy ?? null,
41
51
  });
42
52
  }
43
53
  async getTask(taskId) {
@@ -55,8 +65,8 @@ export class SqliteShortTermStore {
55
65
  }
56
66
  async appendEvent(taskId, event) {
57
67
  this.db
58
- .prepare(`INSERT INTO taskcast_events (id, task_id, idx, timestamp, type, level, data, series_id, series_mode)
59
- VALUES (@id, @task_id, @idx, @timestamp, @type, @level, @data, @series_id, @series_mode)`)
68
+ .prepare(`INSERT INTO taskcast_events (id, task_id, idx, timestamp, type, level, data, series_id, series_mode, series_acc_field)
69
+ VALUES (@id, @task_id, @idx, @timestamp, @type, @level, @data, @series_id, @series_mode, @series_acc_field)`)
60
70
  .run({
61
71
  id: event.id,
62
72
  task_id: event.taskId,
@@ -67,6 +77,7 @@ export class SqliteShortTermStore {
67
77
  data: event.data != null ? JSON.stringify(event.data) : null,
68
78
  series_id: event.seriesId ?? null,
69
79
  series_mode: event.seriesMode ?? null,
80
+ series_acc_field: event.seriesAccField ?? null,
70
81
  });
71
82
  }
72
83
  async getEvents(taskId, opts) {
@@ -161,5 +172,179 @@ export class SqliteShortTermStore {
161
172
  }
162
173
  await this.setSeriesLatest(taskId, seriesId, event);
163
174
  }
175
+ // ─── Task query ──────────────────────────────────────────────────────────
176
+ async listTasks(filter) {
177
+ let sql = 'SELECT * FROM taskcast_tasks WHERE 1=1';
178
+ const params = [];
179
+ if (filter.status?.length) {
180
+ sql += ` AND status IN (${filter.status.map(() => '?').join(', ')})`;
181
+ params.push(...filter.status);
182
+ }
183
+ if (filter.types?.length) {
184
+ sql += ` AND type IN (${filter.types.map(() => '?').join(', ')})`;
185
+ params.push(...filter.types);
186
+ }
187
+ if (filter.assignMode?.length) {
188
+ sql += ` AND assign_mode IN (${filter.assignMode.map(() => '?').join(', ')})`;
189
+ params.push(...filter.assignMode);
190
+ }
191
+ if (filter.excludeTaskIds?.length) {
192
+ sql += ` AND id NOT IN (${filter.excludeTaskIds.map(() => '?').join(', ')})`;
193
+ params.push(...filter.excludeTaskIds);
194
+ }
195
+ const rows = this.db.prepare(sql).all(...params);
196
+ let tasks = rows.map(rowToTask);
197
+ // Tag filtering is done in-memory because tags are stored as JSON text
198
+ if (filter.tags) {
199
+ const { all, any, none } = filter.tags;
200
+ tasks = tasks.filter((t) => {
201
+ const taskTags = t.tags ?? [];
202
+ if (all && !all.every((tag) => taskTags.includes(tag)))
203
+ return false;
204
+ if (any && !any.some((tag) => taskTags.includes(tag)))
205
+ return false;
206
+ if (none && none.some((tag) => taskTags.includes(tag)))
207
+ return false;
208
+ return true;
209
+ });
210
+ }
211
+ // Apply limit AFTER tag filtering to ensure correct result count
212
+ if (filter.limit !== undefined) {
213
+ tasks = tasks.slice(0, filter.limit);
214
+ }
215
+ return tasks;
216
+ }
217
+ // ─── Worker state ────────────────────────────────────────────────────────
218
+ async saveWorker(worker) {
219
+ this.db
220
+ .prepare(`INSERT INTO taskcast_workers (id, status, match_rule, capacity, used_slots, weight, connection_mode, connected_at, last_heartbeat_at, metadata)
221
+ VALUES (@id, @status, @match_rule, @capacity, @used_slots, @weight, @connection_mode, @connected_at, @last_heartbeat_at, @metadata)
222
+ ON CONFLICT (id) DO UPDATE SET
223
+ status = excluded.status,
224
+ match_rule = excluded.match_rule,
225
+ capacity = excluded.capacity,
226
+ used_slots = excluded.used_slots,
227
+ weight = excluded.weight,
228
+ connection_mode = excluded.connection_mode,
229
+ connected_at = excluded.connected_at,
230
+ last_heartbeat_at = excluded.last_heartbeat_at,
231
+ metadata = excluded.metadata`)
232
+ .run({
233
+ id: worker.id,
234
+ status: worker.status,
235
+ match_rule: JSON.stringify(worker.matchRule),
236
+ capacity: worker.capacity,
237
+ used_slots: worker.usedSlots,
238
+ weight: worker.weight,
239
+ connection_mode: worker.connectionMode,
240
+ connected_at: worker.connectedAt,
241
+ last_heartbeat_at: worker.lastHeartbeatAt,
242
+ metadata: worker.metadata ? JSON.stringify(worker.metadata) : null,
243
+ });
244
+ }
245
+ async getWorker(workerId) {
246
+ const row = this.db
247
+ .prepare('SELECT * FROM taskcast_workers WHERE id = ?')
248
+ .get(workerId);
249
+ return row ? rowToWorker(row) : null;
250
+ }
251
+ async listWorkers(filter) {
252
+ let sql = 'SELECT * FROM taskcast_workers WHERE 1=1';
253
+ const params = [];
254
+ if (filter?.status?.length) {
255
+ sql += ` AND status IN (${filter.status.map(() => '?').join(', ')})`;
256
+ params.push(...filter.status);
257
+ }
258
+ if (filter?.connectionMode?.length) {
259
+ sql += ` AND connection_mode IN (${filter.connectionMode.map(() => '?').join(', ')})`;
260
+ params.push(...filter.connectionMode);
261
+ }
262
+ const rows = this.db.prepare(sql).all(...params);
263
+ return rows.map(rowToWorker);
264
+ }
265
+ async deleteWorker(workerId) {
266
+ this.db.prepare('DELETE FROM taskcast_workers WHERE id = ?').run(workerId);
267
+ }
268
+ // ─── Atomic claim ────────────────────────────────────────────────────────
269
+ async claimTask(taskId, workerId, cost) {
270
+ // SQLite is single-writer, so a transaction provides atomicity.
271
+ const claim = this.db.transaction(() => {
272
+ const workerRow = this.db
273
+ .prepare('SELECT * FROM taskcast_workers WHERE id = ?')
274
+ .get(workerId);
275
+ if (!workerRow)
276
+ return false;
277
+ const worker = rowToWorker(workerRow);
278
+ if (worker.usedSlots + cost > worker.capacity)
279
+ return false;
280
+ const taskRow = this.db
281
+ .prepare('SELECT * FROM taskcast_tasks WHERE id = ?')
282
+ .get(taskId);
283
+ if (!taskRow)
284
+ return false;
285
+ const task = rowToTask(taskRow);
286
+ if (task.status !== 'pending' && task.status !== 'assigned')
287
+ return false;
288
+ // Update task
289
+ this.db
290
+ .prepare(`UPDATE taskcast_tasks
291
+ SET status = 'assigned', assigned_worker = ?, cost = ?, updated_at = ?
292
+ WHERE id = ?`)
293
+ .run(workerId, cost, Date.now(), taskId);
294
+ // Update worker used slots
295
+ this.db
296
+ .prepare('UPDATE taskcast_workers SET used_slots = ? WHERE id = ?')
297
+ .run(worker.usedSlots + cost, workerId);
298
+ return true;
299
+ });
300
+ return claim();
301
+ }
302
+ // ─── Worker assignments ──────────────────────────────────────────────────
303
+ async addAssignment(assignment) {
304
+ this.db
305
+ .prepare(`INSERT INTO taskcast_worker_assignments (task_id, worker_id, cost, assigned_at, status)
306
+ VALUES (@task_id, @worker_id, @cost, @assigned_at, @status)
307
+ ON CONFLICT (task_id) DO UPDATE SET
308
+ worker_id = excluded.worker_id,
309
+ cost = excluded.cost,
310
+ assigned_at = excluded.assigned_at,
311
+ status = excluded.status`)
312
+ .run({
313
+ task_id: assignment.taskId,
314
+ worker_id: assignment.workerId,
315
+ cost: assignment.cost,
316
+ assigned_at: assignment.assignedAt,
317
+ status: assignment.status,
318
+ });
319
+ }
320
+ async removeAssignment(taskId) {
321
+ this.db.prepare('DELETE FROM taskcast_worker_assignments WHERE task_id = ?').run(taskId);
322
+ }
323
+ async getWorkerAssignments(workerId) {
324
+ const rows = this.db
325
+ .prepare('SELECT * FROM taskcast_worker_assignments WHERE worker_id = ?')
326
+ .all(workerId);
327
+ return rows.map(rowToWorkerAssignment);
328
+ }
329
+ async getTaskAssignment(taskId) {
330
+ const row = this.db
331
+ .prepare('SELECT * FROM taskcast_worker_assignments WHERE task_id = ?')
332
+ .get(taskId);
333
+ return row ? rowToWorkerAssignment(row) : null;
334
+ }
335
+ // TTL management — no-op: SQLite does not support key-level TTL.
336
+ async clearTTL(_taskId) {
337
+ // No-op: SQLite does not support key-level TTL.
338
+ }
339
+ // Task query by status
340
+ async listByStatus(statuses) {
341
+ if (statuses.length === 0)
342
+ return [];
343
+ const placeholders = statuses.map(() => '?').join(', ');
344
+ const rows = this.db
345
+ .prepare(`SELECT * FROM taskcast_tasks WHERE status IN (${placeholders})`)
346
+ .all(...statuses);
347
+ return rows.map(rowToTask);
348
+ }
164
349
  }
165
350
  //# sourceMappingURL=short-term.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"short-term.js","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"short-term.js","sourceRoot":"","sources":["../src/short-term.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE5F,6EAA6E;AAE7E,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,KAAK,CAAC,QAAQ,CAAC,IAAU;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;KAqB5B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC;YACP,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9D,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;YACrE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YAC9D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3D,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAClD,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;YAC5C,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;SACjD,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,MAAM,CAEtE,CAAA;QAEb,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CACN;;;2BAGmB,CACpB;aACA,GAAG,CAAC,MAAM,CAAwB,CAAA;QAErC,OAAO,GAAG,CAAC,OAAO,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,KAAgB;QAChD,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;qHAC6G,CAC9G;aACA,GAAG,CAAC;YACH,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,GAAG,EAAE,KAAK,CAAC,KAAK;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC5D,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YACjC,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACrC,gBAAgB,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;SAC/C,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAwB;QACtD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAA;QAEzB,IAAI,GAAW,CAAA;QACf,MAAM,MAAM,GAAc,CAAC,MAAM,CAAC,CAAA;QAElC,IAAI,KAAK,EAAE,EAAE,EAAE,CAAC;YACd,oEAAoE;YACpE,kEAAkE;YAClE,iEAAiE;YACjE,wBAAwB;YACxB,GAAG,GAAG;;;;;;;;OAQL,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;aAAM,IAAI,KAAK,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,GAAG,GAAG;;;;OAIL,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;aAAM,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1C,GAAG,GAAG;;;;OAIL,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACN,GAAG,GAAG;;;;OAIL,CAAA;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,IAAI,UAAU,CAAA;YACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAA;QAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,WAAmB;QAC/C,gDAAgD;IAClD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,QAAgB;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,mFAAmF,CAAC;aAC5F,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAuC,CAAA;QAE9D,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAe,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAgB;QACtE,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;yFAEiF,CAClF;aACA,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,MAAc,EACd,QAAgB,EAChB,KAAgB;QAEhB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAEzD,IAAI,IAAI,EAAE,CAAC;YACT,qEAAqE;YACrE,kEAAkE;YAClE,0EAA0E;YAC1E,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;;;+BAGqB,CACtB;iBACA,GAAG,CAAC;gBACH,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC5D,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBACjC,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;aACtC,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,IAAI,GAAG,GAAG,wCAAwC,CAAA;QAClD,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1B,GAAG,IAAI,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACzB,GAAG,IAAI,iBAAiB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC9B,GAAG,IAAI,wBAAwB,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YAC7E,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YAClC,GAAG,IAAI,mBAAmB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAA;QAC7E,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAE/B,uEAAuE;QACvE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;YACtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;gBAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACnE,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpE,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,iEAAiE;QACjE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;;;;;wCAWgC,CACjC;aACA,GAAG,CAAC;YACH,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,MAAM,CAAC,cAAc;YACtC,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,iBAAiB,EAAE,MAAM,CAAC,eAAe;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;SACnE,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,6CAA6C,CAAC;aACtD,GAAG,CAAC,QAAQ,CAAwC,CAAA;QAEvD,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAqB;QACrC,IAAI,GAAG,GAAG,0CAA0C,CAAA;QACpD,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3B,GAAG,IAAI,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YACnC,GAAG,IAAI,4BAA4B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACrF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAA;QAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC5E,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;QAC5D,gEAAgE;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE;iBACtB,OAAO,CAAC,6CAA6C,CAAC;iBACtD,GAAG,CAAC,QAAQ,CAAwC,CAAA;YACvD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAA;YAE5B,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAA;YACrC,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAA;YAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;iBACpB,OAAO,CAAC,2CAA2C,CAAC;iBACpD,GAAG,CAAC,MAAM,CAAwC,CAAA;YACrD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAE1B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAA;YAEzE,cAAc;YACd,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;;wBAEc,CACf;iBACA,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;YAE1C,2BAA2B;YAC3B,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,yDAAyD,CAAC;iBAClE,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAA;YAEzC,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,EAAE,CAAA;IAChB,CAAC;IAED,4EAA4E;IAE5E,KAAK,CAAC,aAAa,CAAC,UAA4B;QAC9C,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;oCAM4B,CAC7B;aACA,GAAG,CAAC;YACH,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,SAAS,EAAE,UAAU,CAAC,QAAQ;YAC9B,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,UAAU;YAClC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,+DAA+D,CAAC;aACxE,GAAG,CAAC,QAAQ,CAA8B,CAAA;QAE7C,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,6DAA6D,CAAC;aACtE,GAAG,CAAC,MAAM,CAAwC,CAAA;QAErD,OAAO,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAChD,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,gDAAgD;IAClD,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,YAAY,CAAC,QAAsB;QACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAEpC,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,iDAAiD,YAAY,GAAG,CAAC;aACzE,GAAG,CAAC,GAAG,QAAQ,CAA8B,CAAA;QAEhD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;CACF"}
@@ -12,7 +12,12 @@ CREATE TABLE IF NOT EXISTS taskcast_tasks (
12
12
  created_at INTEGER NOT NULL,
13
13
  updated_at INTEGER NOT NULL,
14
14
  completed_at INTEGER,
15
- ttl INTEGER
15
+ ttl INTEGER,
16
+ tags TEXT,
17
+ assign_mode TEXT,
18
+ cost INTEGER,
19
+ assigned_worker TEXT,
20
+ disconnect_policy TEXT
16
21
  );
17
22
 
18
23
  CREATE TABLE IF NOT EXISTS taskcast_events (
@@ -25,6 +30,7 @@ CREATE TABLE IF NOT EXISTS taskcast_events (
25
30
  data TEXT,
26
31
  series_id TEXT,
27
32
  series_mode TEXT,
33
+ series_acc_field TEXT,
28
34
  UNIQUE(task_id, idx)
29
35
  );
30
36
 
@@ -42,3 +48,44 @@ CREATE TABLE IF NOT EXISTS taskcast_index_counters (
42
48
 
43
49
  CREATE INDEX IF NOT EXISTS idx_events_task_idx ON taskcast_events(task_id, idx);
44
50
  CREATE INDEX IF NOT EXISTS idx_events_task_ts ON taskcast_events(task_id, timestamp);
51
+
52
+ -- Worker assignment columns on tasks
53
+ -- SQLite does not support ADD COLUMN IF NOT EXISTS, so we use CREATE TABLE IF NOT EXISTS
54
+ -- and these columns are added to the initial schema for new databases.
55
+ -- For existing databases, a separate migration would be needed.
56
+
57
+ -- Workers table
58
+ CREATE TABLE IF NOT EXISTS taskcast_workers (
59
+ id TEXT PRIMARY KEY,
60
+ status TEXT NOT NULL,
61
+ match_rule TEXT NOT NULL,
62
+ capacity INTEGER NOT NULL,
63
+ used_slots INTEGER NOT NULL,
64
+ weight INTEGER NOT NULL,
65
+ connection_mode TEXT NOT NULL,
66
+ connected_at INTEGER NOT NULL,
67
+ last_heartbeat_at INTEGER NOT NULL,
68
+ metadata TEXT
69
+ );
70
+
71
+ -- Worker assignments table
72
+ CREATE TABLE IF NOT EXISTS taskcast_worker_assignments (
73
+ task_id TEXT PRIMARY KEY,
74
+ worker_id TEXT NOT NULL,
75
+ cost INTEGER NOT NULL,
76
+ assigned_at INTEGER NOT NULL,
77
+ status TEXT NOT NULL
78
+ );
79
+
80
+ CREATE INDEX IF NOT EXISTS idx_worker_assignments_worker_id ON taskcast_worker_assignments(worker_id);
81
+
82
+ -- Worker audit events table
83
+ CREATE TABLE IF NOT EXISTS taskcast_worker_events (
84
+ id TEXT PRIMARY KEY,
85
+ worker_id TEXT NOT NULL,
86
+ timestamp INTEGER NOT NULL,
87
+ action TEXT NOT NULL,
88
+ data TEXT
89
+ );
90
+
91
+ CREATE INDEX IF NOT EXISTS idx_worker_events_worker_id ON taskcast_worker_events(worker_id, timestamp);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taskcast/sqlite",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "SQLite local storage adapter for Taskcast.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,11 +26,12 @@
26
26
  }
27
27
  },
28
28
  "publishConfig": {
29
+ "access": "public",
29
30
  "provenance": true
30
31
  },
31
32
  "dependencies": {
32
33
  "better-sqlite3": "^11.0.0",
33
- "@taskcast/core": "0.2.0"
34
+ "@taskcast/core": "0.3.1"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/better-sqlite3": "^7.6.0",