@okrlinkhub/agent-factory 3.0.1 → 3.0.2
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/component/queue.d.ts +13 -0
- package/dist/component/queue.d.ts.map +1 -1
- package/dist/component/queue.js +38 -2
- package/dist/component/queue.js.map +1 -1
- package/dist/component/scheduler.d.ts.map +1 -1
- package/dist/component/scheduler.js +37 -10
- package/dist/component/scheduler.js.map +1 -1
- package/package.json +1 -1
- package/src/component/lib.test.ts +91 -1
- package/src/component/queue.ts +49 -2
- package/src/component/scheduler.ts +77 -14
|
@@ -98,6 +98,13 @@ export declare const getWorkerSpawnOpenClawEnv: import("convex/server").Register
|
|
|
98
98
|
OPENCLAW_SERVICE_KEY?: string;
|
|
99
99
|
OPENCLAW_LINKING_SHARED_SECRET?: string;
|
|
100
100
|
}>>;
|
|
101
|
+
export declare const getActiveConversationsForScheduler: import("convex/server").RegisteredQuery<"internal", {
|
|
102
|
+
nowMs?: number | undefined;
|
|
103
|
+
limit?: number | undefined;
|
|
104
|
+
}, Promise<{
|
|
105
|
+
conversationId: string;
|
|
106
|
+
agentKey: string;
|
|
107
|
+
}[]>>;
|
|
101
108
|
export declare const getProviderRuntimeConfig: import("convex/server").RegisteredQuery<"internal", {}, Promise<{
|
|
102
109
|
appName: string;
|
|
103
110
|
kind: "fly" | "runpod" | "ecs";
|
|
@@ -658,6 +665,12 @@ export declare const upsertWorkerState: import("convex/server").RegisteredMutati
|
|
|
658
665
|
machineId?: string | undefined;
|
|
659
666
|
scheduledShutdownAt?: number | undefined;
|
|
660
667
|
stoppedAt?: number | undefined;
|
|
668
|
+
assignment?: {
|
|
669
|
+
agentKey: string;
|
|
670
|
+
conversationId: string;
|
|
671
|
+
leaseId: string;
|
|
672
|
+
assignedAt: number;
|
|
673
|
+
} | null | undefined;
|
|
661
674
|
clearLastSnapshotId?: boolean | undefined;
|
|
662
675
|
clearMachineRef?: boolean | undefined;
|
|
663
676
|
status: "active" | "draining" | "stopping" | "stopped";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/component/queue.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/component/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/component/queue.js
CHANGED
|
@@ -121,6 +121,10 @@ const workerSpawnOpenClawEnvValidator = v.object({
|
|
|
121
121
|
OPENCLAW_SERVICE_KEY: v.optional(v.string()),
|
|
122
122
|
OPENCLAW_LINKING_SHARED_SECRET: v.optional(v.string()),
|
|
123
123
|
});
|
|
124
|
+
const schedulerConversationTargetValidator = v.object({
|
|
125
|
+
conversationId: v.string(),
|
|
126
|
+
agentKey: v.string(),
|
|
127
|
+
});
|
|
124
128
|
const messageRuntimeConfigValidator = v.object({
|
|
125
129
|
systemPrompt: v.optional(v.string()),
|
|
126
130
|
telegramAttachmentRetentionMs: v.optional(v.number()),
|
|
@@ -361,6 +365,37 @@ export const getWorkerSpawnOpenClawEnv = internalQuery({
|
|
|
361
365
|
return env;
|
|
362
366
|
},
|
|
363
367
|
});
|
|
368
|
+
export const getActiveConversationsForScheduler = internalQuery({
|
|
369
|
+
args: {
|
|
370
|
+
nowMs: v.optional(v.number()),
|
|
371
|
+
limit: v.optional(v.number()),
|
|
372
|
+
},
|
|
373
|
+
returns: v.array(schedulerConversationTargetValidator),
|
|
374
|
+
handler: async (ctx, args) => {
|
|
375
|
+
const nowMs = args.nowMs ?? Date.now();
|
|
376
|
+
const limit = Math.max(1, args.limit ?? 1000);
|
|
377
|
+
const queuedJobs = await ctx.db
|
|
378
|
+
.query("messageQueue")
|
|
379
|
+
.withIndex("by_status_and_scheduledFor", (q) => q.eq("status", "queued").lte("scheduledFor", nowMs))
|
|
380
|
+
.take(limit);
|
|
381
|
+
const processingJobs = await ctx.db
|
|
382
|
+
.query("messageQueue")
|
|
383
|
+
.withIndex("by_status_and_leaseExpiresAt", (q) => q.eq("status", "processing").gt("leaseExpiresAt", nowMs))
|
|
384
|
+
.take(limit);
|
|
385
|
+
const conversations = new Map();
|
|
386
|
+
for (const job of [...queuedJobs, ...processingJobs]) {
|
|
387
|
+
const key = `${job.agentKey}::${job.conversationId}`;
|
|
388
|
+
if (!conversations.has(key)) {
|
|
389
|
+
conversations.set(key, {
|
|
390
|
+
conversationId: job.conversationId,
|
|
391
|
+
agentKey: job.agentKey,
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return Array.from(conversations.values()).sort((left, right) => left.agentKey.localeCompare(right.agentKey) ||
|
|
396
|
+
left.conversationId.localeCompare(right.conversationId));
|
|
397
|
+
},
|
|
398
|
+
});
|
|
364
399
|
export const getProviderRuntimeConfig = internalQuery({
|
|
365
400
|
args: {},
|
|
366
401
|
returns: v.union(v.null(), providerConfigValidator),
|
|
@@ -1867,6 +1902,7 @@ export const upsertWorkerState = internalMutation({
|
|
|
1867
1902
|
machineId: v.optional(v.string()),
|
|
1868
1903
|
appName: v.optional(v.string()),
|
|
1869
1904
|
region: v.optional(v.string()),
|
|
1905
|
+
assignment: v.optional(v.union(v.null(), workerAssignmentValidator)),
|
|
1870
1906
|
clearLastSnapshotId: v.optional(v.boolean()),
|
|
1871
1907
|
clearMachineRef: v.optional(v.boolean()),
|
|
1872
1908
|
},
|
|
@@ -1888,7 +1924,7 @@ export const upsertWorkerState = internalMutation({
|
|
|
1888
1924
|
stoppedAt: args.status === "stopped" || args.status === "stopping"
|
|
1889
1925
|
? (args.stoppedAt ?? nowMs)
|
|
1890
1926
|
: undefined,
|
|
1891
|
-
assignment: undefined,
|
|
1927
|
+
assignment: args.assignment ?? undefined,
|
|
1892
1928
|
machineRef: args.machineId && args.appName
|
|
1893
1929
|
? {
|
|
1894
1930
|
appName: args.appName,
|
|
@@ -1912,7 +1948,7 @@ export const upsertWorkerState = internalMutation({
|
|
|
1912
1948
|
? (args.stoppedAt ?? worker.stoppedAt ?? nowMs)
|
|
1913
1949
|
: undefined,
|
|
1914
1950
|
lastSnapshotId: args.clearLastSnapshotId ? undefined : worker.lastSnapshotId,
|
|
1915
|
-
assignment: worker.assignment,
|
|
1951
|
+
assignment: args.assignment === undefined ? worker.assignment : (args.assignment ?? undefined),
|
|
1916
1952
|
machineRef: args.clearMachineRef
|
|
1917
1953
|
? undefined
|
|
1918
1954
|
: args.machineId && args.appName
|