@okrlinkhub/agent-factory 3.0.0 → 3.0.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.
Files changed (35) hide show
  1. package/dist/client/index.d.ts +42 -14
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/index.js +68 -2
  4. package/dist/client/index.js.map +1 -1
  5. package/dist/component/_generated/api.d.ts +2 -0
  6. package/dist/component/_generated/api.d.ts.map +1 -1
  7. package/dist/component/_generated/api.js.map +1 -1
  8. package/dist/component/_generated/component.d.ts +114 -0
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/component/lib.d.ts +2 -1
  11. package/dist/component/lib.d.ts.map +1 -1
  12. package/dist/component/lib.js +2 -1
  13. package/dist/component/lib.js.map +1 -1
  14. package/dist/component/messageTemplates.d.ts +37 -0
  15. package/dist/component/messageTemplates.d.ts.map +1 -0
  16. package/dist/component/messageTemplates.js +177 -0
  17. package/dist/component/messageTemplates.js.map +1 -0
  18. package/dist/component/pushing.d.ts +14 -14
  19. package/dist/component/queue.d.ts +20 -0
  20. package/dist/component/queue.d.ts.map +1 -1
  21. package/dist/component/queue.js +51 -0
  22. package/dist/component/queue.js.map +1 -1
  23. package/dist/component/schema.d.ts +34 -8
  24. package/dist/component/schema.d.ts.map +1 -1
  25. package/dist/component/schema.js +14 -0
  26. package/dist/component/schema.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/client/index.ts +69 -2
  29. package/src/component/_generated/api.ts +2 -0
  30. package/src/component/_generated/component.ts +158 -0
  31. package/src/component/lib.test.ts +125 -0
  32. package/src/component/lib.ts +8 -0
  33. package/src/component/messageTemplates.ts +205 -0
  34. package/src/component/queue.ts +61 -0
  35. package/src/component/schema.ts +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageTemplates.d.ts","sourceRoot":"","sources":["../../src/component/messageTemplates.ts"],"names":[],"mappings":"AAmFA,eAAO,MAAM,qBAAqB;;;;;;;kEA+BhC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;oBAoChC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;oBAWhC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;KAqCxC,CAAC"}
@@ -0,0 +1,177 @@
1
+ import { v } from "convex/values";
2
+ import { mutation, query } from "./_generated/server.js";
3
+ const messageTemplateViewValidator = v.object({
4
+ _id: v.id("messageTemplates"),
5
+ templateKey: v.string(),
6
+ title: v.string(),
7
+ text: v.string(),
8
+ tags: v.array(v.string()),
9
+ usageCount: v.number(),
10
+ enabled: v.boolean(),
11
+ createdBy: v.string(),
12
+ updatedBy: v.string(),
13
+ createdAt: v.number(),
14
+ updatedAt: v.number(),
15
+ });
16
+ function normalizeTemplateKey(value) {
17
+ return value.trim().toLowerCase();
18
+ }
19
+ function buildTemplateKeyBase(title) {
20
+ const normalized = title
21
+ .trim()
22
+ .toLowerCase()
23
+ .replace(/[^a-z0-9]+/g, "-")
24
+ .replace(/^-+|-+$/g, "");
25
+ return normalized || "message-template";
26
+ }
27
+ function normalizeTitle(value) {
28
+ return value.trim();
29
+ }
30
+ function normalizeText(value) {
31
+ return value.trim();
32
+ }
33
+ function normalizeTags(tags) {
34
+ return Array.from(new Set(tags
35
+ .map((tag) => tag.trim().toLowerCase())
36
+ .filter((tag) => tag.length > 0))).sort((left, right) => left.localeCompare(right));
37
+ }
38
+ function validateMessageTemplateFields(input) {
39
+ if (input.title !== undefined && input.title.length === 0) {
40
+ throw new Error("Template title is required");
41
+ }
42
+ if (input.text !== undefined && input.text.length === 0) {
43
+ throw new Error("Template text is required");
44
+ }
45
+ }
46
+ async function resolveUniqueTemplateKey(ctx, title, currentTemplateId) {
47
+ const baseKey = buildTemplateKeyBase(title);
48
+ let candidate = baseKey;
49
+ let suffix = 2;
50
+ while (true) {
51
+ const existing = await ctx.db
52
+ .query("messageTemplates")
53
+ .withIndex("by_templateKey", (q) => q.eq("templateKey", candidate))
54
+ .unique();
55
+ if (!existing || String(existing._id) === currentTemplateId) {
56
+ return candidate;
57
+ }
58
+ candidate = `${baseKey}-${suffix}`;
59
+ suffix += 1;
60
+ }
61
+ }
62
+ export const createMessageTemplate = mutation({
63
+ args: {
64
+ title: v.string(),
65
+ text: v.string(),
66
+ tags: v.array(v.string()),
67
+ enabled: v.optional(v.boolean()),
68
+ actorUserId: v.string(),
69
+ nowMs: v.optional(v.number()),
70
+ },
71
+ returns: v.id("messageTemplates"),
72
+ handler: async (ctx, args) => {
73
+ const title = normalizeTitle(args.title);
74
+ const text = normalizeText(args.text);
75
+ const tags = normalizeTags(args.tags);
76
+ validateMessageTemplateFields({ title, text });
77
+ const templateKey = normalizeTemplateKey(await resolveUniqueTemplateKey(ctx, title));
78
+ const nowMs = args.nowMs ?? Date.now();
79
+ return await ctx.db.insert("messageTemplates", {
80
+ templateKey,
81
+ title,
82
+ text,
83
+ tags,
84
+ usageCount: 0,
85
+ enabled: args.enabled ?? true,
86
+ createdBy: args.actorUserId,
87
+ updatedBy: args.actorUserId,
88
+ createdAt: nowMs,
89
+ updatedAt: nowMs,
90
+ });
91
+ },
92
+ });
93
+ export const updateMessageTemplate = mutation({
94
+ args: {
95
+ templateId: v.id("messageTemplates"),
96
+ title: v.optional(v.string()),
97
+ text: v.optional(v.string()),
98
+ tags: v.optional(v.array(v.string())),
99
+ enabled: v.optional(v.boolean()),
100
+ actorUserId: v.string(),
101
+ nowMs: v.optional(v.number()),
102
+ },
103
+ returns: v.boolean(),
104
+ handler: async (ctx, args) => {
105
+ const template = await ctx.db.get(args.templateId);
106
+ if (!template)
107
+ return false;
108
+ const title = args.title !== undefined ? normalizeTitle(args.title) : template.title;
109
+ const text = args.text !== undefined ? normalizeText(args.text) : template.text;
110
+ const tags = args.tags !== undefined ? normalizeTags(args.tags) : template.tags;
111
+ validateMessageTemplateFields({ title, text });
112
+ const templateKey = title !== template.title
113
+ ? normalizeTemplateKey(await resolveUniqueTemplateKey(ctx, title, String(template._id)))
114
+ : template.templateKey;
115
+ const nowMs = args.nowMs ?? Date.now();
116
+ await ctx.db.patch(template._id, {
117
+ templateKey,
118
+ title,
119
+ text,
120
+ tags,
121
+ enabled: args.enabled ?? template.enabled,
122
+ updatedBy: args.actorUserId,
123
+ updatedAt: nowMs,
124
+ });
125
+ return true;
126
+ },
127
+ });
128
+ export const deleteMessageTemplate = mutation({
129
+ args: {
130
+ templateId: v.id("messageTemplates"),
131
+ },
132
+ returns: v.boolean(),
133
+ handler: async (ctx, args) => {
134
+ const template = await ctx.db.get(args.templateId);
135
+ if (!template)
136
+ return false;
137
+ await ctx.db.delete(template._id);
138
+ return true;
139
+ },
140
+ });
141
+ export const listMessageTemplatesByCompany = query({
142
+ args: {
143
+ includeDisabled: v.optional(v.boolean()),
144
+ limit: v.optional(v.number()),
145
+ },
146
+ returns: v.array(messageTemplateViewValidator),
147
+ handler: async (ctx, args) => {
148
+ const includeDisabled = args.includeDisabled ?? false;
149
+ const limit = Math.max(1, Math.min(args.limit ?? 100, 200));
150
+ const rows = includeDisabled
151
+ ? await ctx.db.query("messageTemplates").take(limit)
152
+ : await ctx.db
153
+ .query("messageTemplates")
154
+ .withIndex("by_enabled", (q) => q.eq("enabled", true))
155
+ .take(limit);
156
+ rows.sort((left, right) => {
157
+ if (right.usageCount !== left.usageCount) {
158
+ return right.usageCount - left.usageCount;
159
+ }
160
+ return right.updatedAt - left.updatedAt;
161
+ });
162
+ return rows.map((row) => ({
163
+ _id: row._id,
164
+ templateKey: row.templateKey,
165
+ title: row.title,
166
+ text: row.text,
167
+ tags: row.tags,
168
+ usageCount: row.usageCount,
169
+ enabled: row.enabled,
170
+ createdBy: row.createdBy,
171
+ updatedBy: row.updatedBy,
172
+ createdAt: row.createdAt,
173
+ updatedAt: row.updatedAt,
174
+ }));
175
+ },
176
+ });
177
+ //# sourceMappingURL=messageTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageTemplates.js","sourceRoot":"","sources":["../../src/component/messageTemplates.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,11 @@ import type { Id } from "./_generated/dataModel.js";
2
2
  export declare const createPushTemplate: import("convex/server").RegisteredMutation<"public", {
3
3
  nowMs?: number | undefined;
4
4
  enabled?: boolean | undefined;
5
- companyId: string;
6
- periodicity: "manual" | "daily" | "weekly" | "monthly";
5
+ actorUserId: string;
7
6
  text: string;
8
7
  title: string;
9
- actorUserId: string;
8
+ companyId: string;
9
+ periodicity: "manual" | "daily" | "weekly" | "monthly";
10
10
  suggestedTimes: ({
11
11
  kind: "daily";
12
12
  time: string;
@@ -24,9 +24,9 @@ export declare const createPushTemplate: import("convex/server").RegisteredMutat
24
24
  export declare const updatePushTemplate: import("convex/server").RegisteredMutation<"public", {
25
25
  nowMs?: number | undefined;
26
26
  enabled?: boolean | undefined;
27
- periodicity?: "manual" | "daily" | "weekly" | "monthly" | undefined;
28
27
  text?: string | undefined;
29
28
  title?: string | undefined;
29
+ periodicity?: "manual" | "daily" | "weekly" | "monthly" | undefined;
30
30
  suggestedTimes?: ({
31
31
  kind: "daily";
32
32
  time: string;
@@ -39,8 +39,8 @@ export declare const updatePushTemplate: import("convex/server").RegisteredMutat
39
39
  time: string;
40
40
  dayOfMonth: number | "last";
41
41
  })[] | undefined;
42
- templateId: import("convex/values").GenericId<"messagePushTemplates">;
43
42
  actorUserId: string;
43
+ templateId: import("convex/values").GenericId<"messagePushTemplates">;
44
44
  }, Promise<boolean>>;
45
45
  export declare const deletePushTemplate: import("convex/server").RegisteredMutation<"public", {
46
46
  templateId: import("convex/values").GenericId<"messagePushTemplates">;
@@ -99,6 +99,8 @@ export declare const createPushJobCustom: import("convex/server").RegisteredMuta
99
99
  nowMs?: number | undefined;
100
100
  enabled?: boolean | undefined;
101
101
  consumerUserId: string;
102
+ text: string;
103
+ title: string;
102
104
  companyId: string;
103
105
  periodicity: "manual" | "daily" | "weekly" | "monthly";
104
106
  schedule: {
@@ -115,13 +117,13 @@ export declare const createPushJobCustom: import("convex/server").RegisteredMuta
115
117
  time: string;
116
118
  dayOfMonth: number | "last";
117
119
  };
118
- text: string;
119
120
  timezone: string;
120
- title: string;
121
121
  }, Promise<import("convex/values").GenericId<"messagePushJobs">>>;
122
122
  export declare const updatePushJob: import("convex/server").RegisteredMutation<"public", {
123
123
  nowMs?: number | undefined;
124
124
  enabled?: boolean | undefined;
125
+ text?: string | undefined;
126
+ title?: string | undefined;
125
127
  periodicity?: "manual" | "daily" | "weekly" | "monthly" | undefined;
126
128
  schedule?: {
127
129
  kind: "manual";
@@ -137,9 +139,7 @@ export declare const updatePushJob: import("convex/server").RegisteredMutation<"
137
139
  time: string;
138
140
  dayOfMonth: number | "last";
139
141
  } | undefined;
140
- text?: string | undefined;
141
142
  timezone?: string | undefined;
142
- title?: string | undefined;
143
143
  jobId: import("convex/values").GenericId<"messagePushJobs">;
144
144
  }, Promise<boolean>>;
145
145
  export declare const deletePushJob: import("convex/server").RegisteredMutation<"public", {
@@ -232,9 +232,9 @@ export declare const sendBroadcastToAllActiveAgents: import("convex/server").Reg
232
232
  volumePath: string;
233
233
  volumeSizeGb: number;
234
234
  } | undefined;
235
- companyId: string;
236
235
  text: string;
237
236
  title: string;
237
+ companyId: string;
238
238
  requestedBy: string;
239
239
  }, Promise<{
240
240
  broadcastId: import("convex/values").GenericId<"messagePushBroadcasts">;
@@ -316,6 +316,8 @@ export declare const createPushJobCustomForAgent: import("convex/server").Regist
316
316
  enabled?: boolean | undefined;
317
317
  agentKey: string;
318
318
  consumerUserId: string;
319
+ text: string;
320
+ title: string;
319
321
  companyId: string;
320
322
  periodicity: "manual" | "daily" | "weekly" | "monthly";
321
323
  schedule: {
@@ -332,13 +334,13 @@ export declare const createPushJobCustomForAgent: import("convex/server").Regist
332
334
  time: string;
333
335
  dayOfMonth: number | "last";
334
336
  };
335
- text: string;
336
337
  timezone: string;
337
- title: string;
338
338
  }, Promise<import("convex/values").GenericId<"messagePushJobs">>>;
339
339
  export declare const updatePushJobForAgent: import("convex/server").RegisteredMutation<"public", {
340
340
  nowMs?: number | undefined;
341
341
  enabled?: boolean | undefined;
342
+ text?: string | undefined;
343
+ title?: string | undefined;
342
344
  periodicity?: "manual" | "daily" | "weekly" | "monthly" | undefined;
343
345
  schedule?: {
344
346
  kind: "manual";
@@ -354,9 +356,7 @@ export declare const updatePushJobForAgent: import("convex/server").RegisteredMu
354
356
  time: string;
355
357
  dayOfMonth: number | "last";
356
358
  } | undefined;
357
- text?: string | undefined;
358
359
  timezone?: string | undefined;
359
- title?: string | undefined;
360
360
  agentKey: string;
361
361
  consumerUserId: string;
362
362
  jobId: import("convex/values").GenericId<"messagePushJobs">;
@@ -564,6 +564,26 @@ export declare const sendMessageToUserAgent: import("convex/server").RegisteredM
564
564
  consumerUserId: string;
565
565
  content: string;
566
566
  }, Promise<import("convex/values").GenericId<"messageQueue">>>;
567
+ export declare const sendMessageTemplateToUserAgent: import("convex/server").RegisteredMutation<"public", {
568
+ metadata?: Record<string, string> | undefined;
569
+ nowMs?: number | undefined;
570
+ providerConfig?: {
571
+ appName: string;
572
+ kind: "fly" | "runpod" | "ecs";
573
+ organizationSlug: string;
574
+ image: string;
575
+ region: string;
576
+ volumeName: string;
577
+ volumePath: string;
578
+ volumeSizeGb: number;
579
+ } | undefined;
580
+ agentKey: string;
581
+ consumerUserId: string;
582
+ templateId: import("convex/values").GenericId<"messageTemplates">;
583
+ }, Promise<{
584
+ messageId: import("convex/values").GenericId<"messageQueue">;
585
+ usageCount: number;
586
+ }>>;
567
587
  export declare const listSnapshotsForConversation: import("convex/server").RegisteredQuery<"public", {
568
588
  nowMs?: number | undefined;
569
589
  limit?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/component/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/component/queue.ts"],"names":[],"mappings":"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"}
@@ -1640,6 +1640,57 @@ export const sendMessageToUserAgent = mutation({
1640
1640
  });
1641
1641
  },
1642
1642
  });
1643
+ export const sendMessageTemplateToUserAgent = mutation({
1644
+ args: {
1645
+ consumerUserId: v.string(),
1646
+ agentKey: v.string(),
1647
+ templateId: v.id("messageTemplates"),
1648
+ metadata: v.optional(v.record(v.string(), v.string())),
1649
+ nowMs: v.optional(v.number()),
1650
+ providerConfig: v.optional(providerConfigValidator),
1651
+ },
1652
+ returns: v.object({
1653
+ messageId: v.id("messageQueue"),
1654
+ usageCount: v.number(),
1655
+ }),
1656
+ handler: async (ctx, args) => {
1657
+ const template = await ctx.db.get(args.templateId);
1658
+ if (!template || !template.enabled) {
1659
+ throw new Error("Message template not found");
1660
+ }
1661
+ const nowMs = args.nowMs ?? Date.now();
1662
+ const target = await resolveConversationTargetForUserAgent(ctx, args.consumerUserId, args.agentKey, true);
1663
+ const providerUserId = target.telegramUserId ?? target.telegramChatId ?? args.consumerUserId;
1664
+ const usageCount = template.usageCount + 1;
1665
+ const messageId = await enqueueMessageRecord(ctx, {
1666
+ conversationId: target.conversationId,
1667
+ agentKey: args.agentKey,
1668
+ payload: {
1669
+ provider: target.provider,
1670
+ providerUserId,
1671
+ messageText: template.text,
1672
+ metadata: {
1673
+ ...(args.metadata ?? {}),
1674
+ consumerUserId: args.consumerUserId,
1675
+ source: "message_template",
1676
+ templateId: String(template._id),
1677
+ templateKey: template.templateKey,
1678
+ ...(target.telegramChatId ? { telegramChatId: target.telegramChatId } : {}),
1679
+ ...(target.telegramUserId ? { telegramUserId: target.telegramUserId } : {}),
1680
+ },
1681
+ },
1682
+ scheduledFor: nowMs,
1683
+ providerConfig: args.providerConfig,
1684
+ });
1685
+ await ctx.db.patch(template._id, {
1686
+ usageCount,
1687
+ });
1688
+ return {
1689
+ messageId,
1690
+ usageCount,
1691
+ };
1692
+ },
1693
+ });
1643
1694
  export const listSnapshotsForConversation = query({
1644
1695
  args: {
1645
1696
  conversationId: v.string(),