@okrlinkhub/agent-factory 0.2.12 → 0.2.13
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/client/index.d.ts +29 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +61 -2
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/component.d.ts +78 -0
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/config.d.ts.map +1 -1
- package/dist/component/config.js +5 -0
- package/dist/component/config.js.map +1 -1
- package/dist/component/queue.d.ts +78 -0
- package/dist/component/queue.d.ts.map +1 -1
- package/dist/component/queue.js +354 -0
- package/dist/component/queue.js.map +1 -1
- package/dist/component/schema.d.ts +62 -0
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +42 -0
- package/dist/component/schema.js.map +1 -1
- package/package.json +1 -1
- package/src/client/index.ts +61 -2
- package/src/component/_generated/component.ts +102 -0
- package/src/component/config.ts +5 -0
- package/src/component/queue.ts +426 -0
- package/src/component/schema.ts +45 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/component/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AA4DlC,MAAM,CAAC,MAAM,oBAAoB,GAC/B,EAAE,CAAC;AACL,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAC;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IAChE,QAAQ,EAAE,YAAY;IACtB,qBAAqB,EAAE,WAAW;IAClC,qBAAqB,EAAE,OAAO;IAC9B,oBAAoB,EAAE,wBAAwB;IAC9C,kBAAkB,EAAE,iBAAiB;IACrC,sBAAsB,EAAE,iBAAiB;IACzC,oBAAoB,EAAE,+BAA+B;IACrD,2BAA2B,EAAE,MAAM;IACnC,kBAAkB,EAAE,OAAO;IAC3B,yBAAyB,EAAE,OAAO;IAClC,wBAAwB,EAAE,gCAAgC;IAC1D,iCAAiC,EAAE,OAAO;IAC1C,8BAA8B,EAAE,KAAK;IACrC,+BAA+B,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/component/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,6 +120,84 @@ export declare const setProviderRuntimeConfig: import("convex/server").Registere
|
|
|
120
120
|
volumeSizeGb: number;
|
|
121
121
|
};
|
|
122
122
|
}, Promise<null>>;
|
|
123
|
+
export declare const deployGlobalSkill: import("convex/server").RegisteredMutation<"public", {
|
|
124
|
+
nowMs?: number | undefined;
|
|
125
|
+
actor?: string | undefined;
|
|
126
|
+
description?: string | undefined;
|
|
127
|
+
displayName?: string | undefined;
|
|
128
|
+
entryPoint?: string | undefined;
|
|
129
|
+
moduleFormat?: "esm" | "cjs" | undefined;
|
|
130
|
+
releaseChannel?: "stable" | "canary" | undefined;
|
|
131
|
+
version: string;
|
|
132
|
+
slug: string;
|
|
133
|
+
sourceJs: string;
|
|
134
|
+
}, Promise<{
|
|
135
|
+
skillId: import("convex/values").GenericId<"globalSkills">;
|
|
136
|
+
versionId: import("convex/values").GenericId<"globalSkillVersions">;
|
|
137
|
+
releaseId: import("convex/values").GenericId<"globalSkillReleases">;
|
|
138
|
+
slug: string;
|
|
139
|
+
version: string;
|
|
140
|
+
sha256: string;
|
|
141
|
+
releaseChannel: "stable" | "canary";
|
|
142
|
+
}>>;
|
|
143
|
+
export declare const listGlobalSkills: import("convex/server").RegisteredQuery<"public", {
|
|
144
|
+
status?: "active" | "disabled" | undefined;
|
|
145
|
+
limit?: number | undefined;
|
|
146
|
+
releaseChannel?: "stable" | "canary" | undefined;
|
|
147
|
+
}, Promise<{
|
|
148
|
+
skillId: any;
|
|
149
|
+
slug: string;
|
|
150
|
+
displayName: string;
|
|
151
|
+
description?: string;
|
|
152
|
+
status: "active" | "disabled";
|
|
153
|
+
updatedAt: number;
|
|
154
|
+
activeRelease: {
|
|
155
|
+
releaseId: any;
|
|
156
|
+
versionId: any;
|
|
157
|
+
version: string;
|
|
158
|
+
sha256: string;
|
|
159
|
+
moduleFormat: "esm" | "cjs";
|
|
160
|
+
entryPoint: string;
|
|
161
|
+
releaseChannel: "stable" | "canary";
|
|
162
|
+
activatedAt: number;
|
|
163
|
+
} | null;
|
|
164
|
+
}[]>>;
|
|
165
|
+
export declare const getWorkerGlobalSkillsManifest: import("convex/server").RegisteredQuery<"public", {
|
|
166
|
+
workspaceId?: string | undefined;
|
|
167
|
+
workerId?: string | undefined;
|
|
168
|
+
releaseChannel?: "stable" | "canary" | undefined;
|
|
169
|
+
}, Promise<{
|
|
170
|
+
manifestVersion: string;
|
|
171
|
+
generatedAt: number;
|
|
172
|
+
releaseChannel: "stable" | "canary";
|
|
173
|
+
workspaceId: string;
|
|
174
|
+
skills: {
|
|
175
|
+
slug: string;
|
|
176
|
+
version: string;
|
|
177
|
+
moduleFormat: "esm" | "cjs";
|
|
178
|
+
entryPoint: string;
|
|
179
|
+
sourceJs: string;
|
|
180
|
+
sha256: string;
|
|
181
|
+
}[];
|
|
182
|
+
}>>;
|
|
183
|
+
export declare const setGlobalSkillStatus: import("convex/server").RegisteredMutation<"public", {
|
|
184
|
+
nowMs?: number | undefined;
|
|
185
|
+
actor?: string | undefined;
|
|
186
|
+
status: "active" | "disabled";
|
|
187
|
+
slug: string;
|
|
188
|
+
}, Promise<{
|
|
189
|
+
updated: boolean;
|
|
190
|
+
slug: string;
|
|
191
|
+
status: "active" | "disabled";
|
|
192
|
+
}>>;
|
|
193
|
+
export declare const deleteGlobalSkill: import("convex/server").RegisteredMutation<"public", {
|
|
194
|
+
slug: string;
|
|
195
|
+
}, Promise<{
|
|
196
|
+
deleted: boolean;
|
|
197
|
+
slug: string;
|
|
198
|
+
deletedVersions: number;
|
|
199
|
+
deletedReleases: number;
|
|
200
|
+
}>>;
|
|
123
201
|
export declare const generateMediaUploadUrl: import("convex/server").RegisteredMutation<"public", {}, Promise<{
|
|
124
202
|
uploadUrl: string;
|
|
125
203
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/component/queue.ts"],"names":[],"mappings":"
|
|
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
|
@@ -42,6 +42,17 @@ const bridgeRuntimeConfigValidator = v.object({
|
|
|
42
42
|
serviceKey: v.union(v.null(), v.string()),
|
|
43
43
|
serviceKeySecretRef: v.union(v.null(), v.string()),
|
|
44
44
|
});
|
|
45
|
+
const globalSkillStatusValidator = v.union(v.literal("active"), v.literal("disabled"));
|
|
46
|
+
const globalSkillReleaseChannelValidator = v.union(v.literal("stable"), v.literal("canary"));
|
|
47
|
+
const globalSkillModuleFormatValidator = v.union(v.literal("esm"), v.literal("cjs"));
|
|
48
|
+
const globalSkillManifestItemValidator = v.object({
|
|
49
|
+
slug: v.string(),
|
|
50
|
+
version: v.string(),
|
|
51
|
+
moduleFormat: globalSkillModuleFormatValidator,
|
|
52
|
+
entryPoint: v.string(),
|
|
53
|
+
sourceJs: v.string(),
|
|
54
|
+
sha256: v.string(),
|
|
55
|
+
});
|
|
45
56
|
const BRIDGE_SECRET_REFS = {
|
|
46
57
|
serviceKey: "agent-bridge.serviceKey",
|
|
47
58
|
baseUrl: "agent-bridge.baseUrl",
|
|
@@ -371,6 +382,342 @@ export const setProviderRuntimeConfig = mutation({
|
|
|
371
382
|
return null;
|
|
372
383
|
},
|
|
373
384
|
});
|
|
385
|
+
export const deployGlobalSkill = mutation({
|
|
386
|
+
args: {
|
|
387
|
+
slug: v.string(),
|
|
388
|
+
displayName: v.optional(v.string()),
|
|
389
|
+
description: v.optional(v.string()),
|
|
390
|
+
version: v.string(),
|
|
391
|
+
sourceJs: v.string(),
|
|
392
|
+
entryPoint: v.optional(v.string()),
|
|
393
|
+
moduleFormat: v.optional(globalSkillModuleFormatValidator),
|
|
394
|
+
releaseChannel: v.optional(globalSkillReleaseChannelValidator),
|
|
395
|
+
actor: v.optional(v.string()),
|
|
396
|
+
nowMs: v.optional(v.number()),
|
|
397
|
+
},
|
|
398
|
+
returns: v.object({
|
|
399
|
+
skillId: v.id("globalSkills"),
|
|
400
|
+
versionId: v.id("globalSkillVersions"),
|
|
401
|
+
releaseId: v.id("globalSkillReleases"),
|
|
402
|
+
slug: v.string(),
|
|
403
|
+
version: v.string(),
|
|
404
|
+
sha256: v.string(),
|
|
405
|
+
releaseChannel: globalSkillReleaseChannelValidator,
|
|
406
|
+
}),
|
|
407
|
+
handler: async (ctx, args) => {
|
|
408
|
+
const nowMs = args.nowMs ?? Date.now();
|
|
409
|
+
const slug = args.slug.trim().toLowerCase();
|
|
410
|
+
const version = args.version.trim();
|
|
411
|
+
const entryPoint = (args.entryPoint ?? "default").trim();
|
|
412
|
+
const releaseChannel = args.releaseChannel ?? "stable";
|
|
413
|
+
const moduleFormat = args.moduleFormat ?? "esm";
|
|
414
|
+
const actor = args.actor?.trim() || "system";
|
|
415
|
+
const sourceJs = args.sourceJs.trim();
|
|
416
|
+
if (!/^[a-z0-9][a-z0-9-_]{1,127}$/.test(slug)) {
|
|
417
|
+
throw new Error("Invalid skill slug. Use lowercase letters, numbers, '-' and '_'.");
|
|
418
|
+
}
|
|
419
|
+
if (!/^\d+\.\d+\.\d+(?:[-+][A-Za-z0-9.-]+)?$/.test(version)) {
|
|
420
|
+
throw new Error("Invalid skill version. Use semantic versioning format.");
|
|
421
|
+
}
|
|
422
|
+
if (sourceJs.length < 16) {
|
|
423
|
+
throw new Error("Skill source is too short.");
|
|
424
|
+
}
|
|
425
|
+
if (sourceJs.length > 200_000) {
|
|
426
|
+
throw new Error("Skill source too large (max 200KB).");
|
|
427
|
+
}
|
|
428
|
+
if (!entryPoint) {
|
|
429
|
+
throw new Error("entryPoint is required.");
|
|
430
|
+
}
|
|
431
|
+
const sha256 = await computeSha256Hex(sourceJs);
|
|
432
|
+
const existingSkill = await ctx.db
|
|
433
|
+
.query("globalSkills")
|
|
434
|
+
.withIndex("by_slug", (q) => q.eq("slug", slug))
|
|
435
|
+
.unique();
|
|
436
|
+
const skillId = existingSkill?._id ??
|
|
437
|
+
(await ctx.db.insert("globalSkills", {
|
|
438
|
+
slug,
|
|
439
|
+
displayName: args.displayName?.trim() || slug,
|
|
440
|
+
description: args.description?.trim(),
|
|
441
|
+
status: "active",
|
|
442
|
+
createdBy: actor,
|
|
443
|
+
updatedBy: actor,
|
|
444
|
+
createdAt: nowMs,
|
|
445
|
+
updatedAt: nowMs,
|
|
446
|
+
}));
|
|
447
|
+
if (existingSkill) {
|
|
448
|
+
await ctx.db.patch(skillId, {
|
|
449
|
+
displayName: args.displayName?.trim() || existingSkill.displayName,
|
|
450
|
+
description: args.description !== undefined ? args.description.trim() : existingSkill.description,
|
|
451
|
+
status: "active",
|
|
452
|
+
updatedBy: actor,
|
|
453
|
+
updatedAt: nowMs,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
const existingVersion = await ctx.db
|
|
457
|
+
.query("globalSkillVersions")
|
|
458
|
+
.withIndex("by_skillId_and_version", (q) => q.eq("skillId", skillId).eq("version", version))
|
|
459
|
+
.unique();
|
|
460
|
+
let versionId = existingVersion?._id;
|
|
461
|
+
if (!existingVersion) {
|
|
462
|
+
versionId = await ctx.db.insert("globalSkillVersions", {
|
|
463
|
+
skillId,
|
|
464
|
+
version,
|
|
465
|
+
moduleFormat,
|
|
466
|
+
entryPoint,
|
|
467
|
+
sourceJs,
|
|
468
|
+
sha256,
|
|
469
|
+
createdBy: actor,
|
|
470
|
+
createdAt: nowMs,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
else if (existingVersion.sha256 !== sha256) {
|
|
474
|
+
throw new Error(`Skill ${slug}@${version} already exists with a different source.`);
|
|
475
|
+
}
|
|
476
|
+
const activeReleases = await ctx.db
|
|
477
|
+
.query("globalSkillReleases")
|
|
478
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skillId).eq("releaseChannel", releaseChannel).eq("isActive", true))
|
|
479
|
+
.collect();
|
|
480
|
+
for (const release of activeReleases) {
|
|
481
|
+
await ctx.db.patch(release._id, { isActive: false });
|
|
482
|
+
}
|
|
483
|
+
const releaseId = await ctx.db.insert("globalSkillReleases", {
|
|
484
|
+
skillId,
|
|
485
|
+
versionId: versionId,
|
|
486
|
+
releaseChannel,
|
|
487
|
+
isActive: true,
|
|
488
|
+
activatedBy: actor,
|
|
489
|
+
activatedAt: nowMs,
|
|
490
|
+
});
|
|
491
|
+
return {
|
|
492
|
+
skillId,
|
|
493
|
+
versionId: versionId,
|
|
494
|
+
releaseId,
|
|
495
|
+
slug,
|
|
496
|
+
version,
|
|
497
|
+
sha256,
|
|
498
|
+
releaseChannel,
|
|
499
|
+
};
|
|
500
|
+
},
|
|
501
|
+
});
|
|
502
|
+
export const listGlobalSkills = query({
|
|
503
|
+
args: {
|
|
504
|
+
releaseChannel: v.optional(globalSkillReleaseChannelValidator),
|
|
505
|
+
status: v.optional(globalSkillStatusValidator),
|
|
506
|
+
limit: v.optional(v.number()),
|
|
507
|
+
},
|
|
508
|
+
returns: v.array(v.object({
|
|
509
|
+
skillId: v.id("globalSkills"),
|
|
510
|
+
slug: v.string(),
|
|
511
|
+
displayName: v.string(),
|
|
512
|
+
description: v.optional(v.string()),
|
|
513
|
+
status: globalSkillStatusValidator,
|
|
514
|
+
updatedAt: v.number(),
|
|
515
|
+
activeRelease: v.union(v.null(), v.object({
|
|
516
|
+
releaseId: v.id("globalSkillReleases"),
|
|
517
|
+
versionId: v.id("globalSkillVersions"),
|
|
518
|
+
version: v.string(),
|
|
519
|
+
sha256: v.string(),
|
|
520
|
+
moduleFormat: globalSkillModuleFormatValidator,
|
|
521
|
+
entryPoint: v.string(),
|
|
522
|
+
releaseChannel: globalSkillReleaseChannelValidator,
|
|
523
|
+
activatedAt: v.number(),
|
|
524
|
+
})),
|
|
525
|
+
})),
|
|
526
|
+
handler: async (ctx, args) => {
|
|
527
|
+
const releaseChannel = args.releaseChannel ?? "stable";
|
|
528
|
+
const limit = Math.max(1, Math.min(args.limit ?? 200, 500));
|
|
529
|
+
const skills = args.status !== undefined
|
|
530
|
+
? await ctx.db
|
|
531
|
+
.query("globalSkills")
|
|
532
|
+
.withIndex("by_status", (q) => q.eq("status", args.status))
|
|
533
|
+
.take(limit)
|
|
534
|
+
: await ctx.db.query("globalSkills").take(limit);
|
|
535
|
+
const sortedSkills = [...skills].sort((a, b) => a.slug.localeCompare(b.slug));
|
|
536
|
+
const out = [];
|
|
537
|
+
for (const skill of sortedSkills) {
|
|
538
|
+
const activeRelease = await ctx.db
|
|
539
|
+
.query("globalSkillReleases")
|
|
540
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", releaseChannel).eq("isActive", true))
|
|
541
|
+
.first();
|
|
542
|
+
let activeReleaseRow = null;
|
|
543
|
+
if (activeRelease) {
|
|
544
|
+
const version = await ctx.db.get(activeRelease.versionId);
|
|
545
|
+
if (version) {
|
|
546
|
+
activeReleaseRow = {
|
|
547
|
+
releaseId: activeRelease._id,
|
|
548
|
+
versionId: version._id,
|
|
549
|
+
version: version.version,
|
|
550
|
+
sha256: version.sha256,
|
|
551
|
+
moduleFormat: version.moduleFormat,
|
|
552
|
+
entryPoint: version.entryPoint,
|
|
553
|
+
releaseChannel: activeRelease.releaseChannel,
|
|
554
|
+
activatedAt: activeRelease.activatedAt,
|
|
555
|
+
};
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
out.push({
|
|
559
|
+
skillId: skill._id,
|
|
560
|
+
slug: skill.slug,
|
|
561
|
+
displayName: skill.displayName,
|
|
562
|
+
description: skill.description,
|
|
563
|
+
status: skill.status,
|
|
564
|
+
updatedAt: skill.updatedAt,
|
|
565
|
+
activeRelease: activeReleaseRow,
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
return out;
|
|
569
|
+
},
|
|
570
|
+
});
|
|
571
|
+
export const getWorkerGlobalSkillsManifest = query({
|
|
572
|
+
args: {
|
|
573
|
+
workspaceId: v.optional(v.string()),
|
|
574
|
+
workerId: v.optional(v.string()),
|
|
575
|
+
releaseChannel: v.optional(globalSkillReleaseChannelValidator),
|
|
576
|
+
},
|
|
577
|
+
returns: v.object({
|
|
578
|
+
manifestVersion: v.string(),
|
|
579
|
+
generatedAt: v.number(),
|
|
580
|
+
releaseChannel: globalSkillReleaseChannelValidator,
|
|
581
|
+
workspaceId: v.string(),
|
|
582
|
+
skills: v.array(globalSkillManifestItemValidator),
|
|
583
|
+
}),
|
|
584
|
+
handler: async (ctx, args) => {
|
|
585
|
+
const nowMs = Date.now();
|
|
586
|
+
const releaseChannel = args.releaseChannel ?? "stable";
|
|
587
|
+
const activeSkills = await ctx.db
|
|
588
|
+
.query("globalSkills")
|
|
589
|
+
.withIndex("by_status", (q) => q.eq("status", "active"))
|
|
590
|
+
.collect();
|
|
591
|
+
const sortedSkills = [...activeSkills].sort((a, b) => a.slug.localeCompare(b.slug));
|
|
592
|
+
const manifestSkills = [];
|
|
593
|
+
for (const skill of sortedSkills) {
|
|
594
|
+
const activeRelease = await ctx.db
|
|
595
|
+
.query("globalSkillReleases")
|
|
596
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", releaseChannel).eq("isActive", true))
|
|
597
|
+
.first();
|
|
598
|
+
if (!activeRelease)
|
|
599
|
+
continue;
|
|
600
|
+
const version = await ctx.db.get(activeRelease.versionId);
|
|
601
|
+
if (!version)
|
|
602
|
+
continue;
|
|
603
|
+
manifestSkills.push({
|
|
604
|
+
slug: skill.slug,
|
|
605
|
+
version: version.version,
|
|
606
|
+
moduleFormat: version.moduleFormat,
|
|
607
|
+
entryPoint: version.entryPoint,
|
|
608
|
+
sourceJs: version.sourceJs,
|
|
609
|
+
sha256: version.sha256,
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
manifestSkills.sort((a, b) => {
|
|
613
|
+
if (a.slug !== b.slug)
|
|
614
|
+
return a.slug.localeCompare(b.slug);
|
|
615
|
+
return a.version.localeCompare(b.version);
|
|
616
|
+
});
|
|
617
|
+
const fingerprintSeed = manifestSkills
|
|
618
|
+
.map((row) => `${row.slug}@${row.version}:${row.sha256}`)
|
|
619
|
+
.join("|");
|
|
620
|
+
const manifestVersion = await computeSha256Hex(fingerprintSeed || "empty");
|
|
621
|
+
return {
|
|
622
|
+
manifestVersion,
|
|
623
|
+
generatedAt: nowMs,
|
|
624
|
+
releaseChannel,
|
|
625
|
+
workspaceId: args.workspaceId ?? "default",
|
|
626
|
+
skills: manifestSkills,
|
|
627
|
+
};
|
|
628
|
+
},
|
|
629
|
+
});
|
|
630
|
+
export const setGlobalSkillStatus = mutation({
|
|
631
|
+
args: {
|
|
632
|
+
slug: v.string(),
|
|
633
|
+
status: globalSkillStatusValidator,
|
|
634
|
+
actor: v.optional(v.string()),
|
|
635
|
+
nowMs: v.optional(v.number()),
|
|
636
|
+
},
|
|
637
|
+
returns: v.object({
|
|
638
|
+
updated: v.boolean(),
|
|
639
|
+
slug: v.string(),
|
|
640
|
+
status: globalSkillStatusValidator,
|
|
641
|
+
}),
|
|
642
|
+
handler: async (ctx, args) => {
|
|
643
|
+
const slug = args.slug.trim().toLowerCase();
|
|
644
|
+
const nowMs = args.nowMs ?? Date.now();
|
|
645
|
+
const actor = args.actor?.trim() || "system";
|
|
646
|
+
const skill = await ctx.db
|
|
647
|
+
.query("globalSkills")
|
|
648
|
+
.withIndex("by_slug", (q) => q.eq("slug", slug))
|
|
649
|
+
.unique();
|
|
650
|
+
if (!skill) {
|
|
651
|
+
return { updated: false, slug, status: args.status };
|
|
652
|
+
}
|
|
653
|
+
await ctx.db.patch(skill._id, {
|
|
654
|
+
status: args.status,
|
|
655
|
+
updatedBy: actor,
|
|
656
|
+
updatedAt: nowMs,
|
|
657
|
+
});
|
|
658
|
+
return { updated: true, slug, status: args.status };
|
|
659
|
+
},
|
|
660
|
+
});
|
|
661
|
+
export const deleteGlobalSkill = mutation({
|
|
662
|
+
args: {
|
|
663
|
+
slug: v.string(),
|
|
664
|
+
},
|
|
665
|
+
returns: v.object({
|
|
666
|
+
deleted: v.boolean(),
|
|
667
|
+
slug: v.string(),
|
|
668
|
+
deletedVersions: v.number(),
|
|
669
|
+
deletedReleases: v.number(),
|
|
670
|
+
}),
|
|
671
|
+
handler: async (ctx, args) => {
|
|
672
|
+
const slug = args.slug.trim().toLowerCase();
|
|
673
|
+
const skill = await ctx.db
|
|
674
|
+
.query("globalSkills")
|
|
675
|
+
.withIndex("by_slug", (q) => q.eq("slug", slug))
|
|
676
|
+
.unique();
|
|
677
|
+
if (!skill) {
|
|
678
|
+
return { deleted: false, slug, deletedVersions: 0, deletedReleases: 0 };
|
|
679
|
+
}
|
|
680
|
+
const stableActiveReleases = await ctx.db
|
|
681
|
+
.query("globalSkillReleases")
|
|
682
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", "stable").eq("isActive", true))
|
|
683
|
+
.collect();
|
|
684
|
+
const stableInactiveReleases = await ctx.db
|
|
685
|
+
.query("globalSkillReleases")
|
|
686
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", "stable").eq("isActive", false))
|
|
687
|
+
.collect();
|
|
688
|
+
const canaryActiveReleases = await ctx.db
|
|
689
|
+
.query("globalSkillReleases")
|
|
690
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", "canary").eq("isActive", true))
|
|
691
|
+
.collect();
|
|
692
|
+
const canaryInactiveReleases = await ctx.db
|
|
693
|
+
.query("globalSkillReleases")
|
|
694
|
+
.withIndex("by_skillId_and_releaseChannel_and_isActive", (q) => q.eq("skillId", skill._id).eq("releaseChannel", "canary").eq("isActive", false))
|
|
695
|
+
.collect();
|
|
696
|
+
const allReleases = [
|
|
697
|
+
...stableActiveReleases,
|
|
698
|
+
...stableInactiveReleases,
|
|
699
|
+
...canaryActiveReleases,
|
|
700
|
+
...canaryInactiveReleases,
|
|
701
|
+
];
|
|
702
|
+
const versions = await ctx.db
|
|
703
|
+
.query("globalSkillVersions")
|
|
704
|
+
.withIndex("by_skillId_and_createdAt", (q) => q.eq("skillId", skill._id))
|
|
705
|
+
.collect();
|
|
706
|
+
for (const release of allReleases) {
|
|
707
|
+
await ctx.db.delete(release._id);
|
|
708
|
+
}
|
|
709
|
+
for (const version of versions) {
|
|
710
|
+
await ctx.db.delete(version._id);
|
|
711
|
+
}
|
|
712
|
+
await ctx.db.delete(skill._id);
|
|
713
|
+
return {
|
|
714
|
+
deleted: true,
|
|
715
|
+
slug,
|
|
716
|
+
deletedVersions: versions.length,
|
|
717
|
+
deletedReleases: allReleases.length,
|
|
718
|
+
};
|
|
719
|
+
},
|
|
720
|
+
});
|
|
374
721
|
export const generateMediaUploadUrl = mutation({
|
|
375
722
|
args: {},
|
|
376
723
|
returns: v.object({
|
|
@@ -1375,6 +1722,13 @@ function fingerprintConversationDelta(deltaContext) {
|
|
|
1375
1722
|
}
|
|
1376
1723
|
return `f${(hash >>> 0).toString(16)}`;
|
|
1377
1724
|
}
|
|
1725
|
+
async function computeSha256Hex(input) {
|
|
1726
|
+
const bytes = new TextEncoder().encode(input);
|
|
1727
|
+
const digest = await crypto.subtle.digest("SHA-256", bytes);
|
|
1728
|
+
return Array.from(new Uint8Array(digest))
|
|
1729
|
+
.map((value) => value.toString(16).padStart(2, "0"))
|
|
1730
|
+
.join("");
|
|
1731
|
+
}
|
|
1378
1732
|
function encryptSecretValue(plaintext) {
|
|
1379
1733
|
const units = Array.from(plaintext);
|
|
1380
1734
|
return units
|