robotrock 1.1.0 → 1.3.0
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/agent-admin.d.ts +82 -0
- package/dist/agent-admin.js +938 -0
- package/dist/agent-admin.js.map +1 -0
- package/dist/ai/index.d.ts +6 -5
- package/dist/ai/index.js +407 -188
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/trigger.d.ts +4 -3
- package/dist/ai/trigger.js +407 -188
- package/dist/ai/trigger.js.map +1 -1
- package/dist/ai/workflow.d.ts +4 -3
- package/dist/ai/workflow.js +404 -185
- package/dist/ai/workflow.js.map +1 -1
- package/dist/auth-headers-qL-ZeEtd.d.ts +13 -0
- package/dist/{client-XTnFHGFE.d.ts → client-YO9Y1rkH.d.ts} +29 -17
- package/dist/eve/agent/index.d.ts +11 -35
- package/dist/eve/agent/index.js +678 -146
- package/dist/eve/agent/index.js.map +1 -1
- package/dist/eve/index.d.ts +5 -2
- package/dist/eve/index.js +195 -2
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/tools/admin/assign-tasks.d.ts +39 -0
- package/dist/eve/tools/admin/assign-tasks.js +1060 -0
- package/dist/eve/tools/admin/assign-tasks.js.map +1 -0
- package/dist/eve/tools/admin/manage-groups.d.ts +53 -0
- package/dist/eve/tools/admin/manage-groups.js +1218 -0
- package/dist/eve/tools/admin/manage-groups.js.map +1 -0
- package/dist/eve/tools/admin/manage-team-members.d.ts +45 -0
- package/dist/eve/tools/admin/manage-team-members.js +1160 -0
- package/dist/eve/tools/admin/manage-team-members.js.map +1 -0
- package/dist/eve/tools/admin/query-tasks.d.ts +71 -0
- package/dist/eve/tools/admin/query-tasks.js +1161 -0
- package/dist/eve/tools/admin/query-tasks.js.map +1 -0
- package/dist/eve/tools/catalog/search-products.d.ts +57 -0
- package/dist/eve/tools/catalog/search-products.js +94 -0
- package/dist/eve/tools/catalog/search-products.js.map +1 -0
- package/dist/eve/tools/identity/index.d.ts +2 -0
- package/dist/eve/tools/identity/index.js +117 -27
- package/dist/eve/tools/identity/index.js.map +1 -1
- package/dist/eve/tools/identity/my-access.d.ts +6 -46
- package/dist/eve/tools/identity/my-access.js +91 -10
- package/dist/eve/tools/identity/my-access.js.map +1 -1
- package/dist/eve/tools/identity/whoami.d.ts +7 -8
- package/dist/eve/tools/identity/whoami.js +33 -17
- package/dist/eve/tools/identity/whoami.js.map +1 -1
- package/dist/eve/tools/inbox/create-task.d.ts +5 -4
- package/dist/eve/tools/inbox/create-task.js +365 -137
- package/dist/eve/tools/inbox/create-task.js.map +1 -1
- package/dist/eve/tools/inbox/index.d.ts +1 -0
- package/dist/eve/tools/inbox/index.js +365 -137
- package/dist/eve/tools/inbox/index.js.map +1 -1
- package/dist/eve/tools/index.d.ts +7 -0
- package/dist/eve/tools/index.js +1362 -168
- package/dist/eve/tools/index.js.map +1 -1
- package/dist/{index-BL9qKHA8.d.ts → index-DoQN48Bm.d.ts} +61 -2
- package/dist/index.d.ts +6 -3
- package/dist/index.js +325 -119
- package/dist/index.js.map +1 -1
- package/dist/schemas/index.d.ts +6 -1
- package/dist/schemas/index.js +177 -48
- package/dist/schemas/index.js.map +1 -1
- package/dist/{tool-approval-bridge-C4bTm8vu.d.ts → tool-approval-bridge-aMA79Z1B.d.ts} +1 -1
- package/dist/tool-reply-guidance-C3qrT1In.d.ts +25 -0
- package/dist/trigger/index.d.ts +2 -1
- package/dist/trigger/index.js +310 -108
- package/dist/trigger/index.js.map +1 -1
- package/dist/{trigger-Dn0DFiyU.d.ts → trigger-CXrbKVCL.d.ts} +2 -2
- package/dist/workflow/index.d.ts +2 -1
- package/dist/workflow/index.js +310 -108
- package/dist/workflow/index.js.map +1 -1
- package/package.json +28 -4
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/schemas/index.ts
|
|
2
|
-
import { z as
|
|
2
|
+
import { z as z4 } from "zod";
|
|
3
3
|
|
|
4
4
|
// ../core/src/utils/safe-url.ts
|
|
5
5
|
var BLOCKED_HOSTNAMES = /* @__PURE__ */ new Set([
|
|
@@ -386,13 +386,27 @@ var createAgentChatBodySchema = z.object({
|
|
|
386
386
|
eveConnectionId: z.string().min(1).optional(),
|
|
387
387
|
/** Source application id; groups the chat under an inbox section. */
|
|
388
388
|
app: z.string().min(1).optional(),
|
|
389
|
-
|
|
389
|
+
/** Email of the user who owns the chat. Required unless `parentChatId` is set. */
|
|
390
|
+
ownerEmail: z.string().email().optional(),
|
|
390
391
|
title: z.string().min(1),
|
|
391
392
|
messages: z.array(agentChatSeedMessageSchema).default([]),
|
|
392
393
|
/** Provenance label stored on the session ("cron" | "agent" | ...). */
|
|
393
394
|
source: z.string().min(1).optional()
|
|
394
395
|
}).refine((data) => Boolean(data.agentIdentifier || data.parentChatId), {
|
|
395
396
|
message: "Provide either agentIdentifier or parentChatId"
|
|
397
|
+
}).refine((data) => Boolean(data.ownerEmail || data.parentChatId), {
|
|
398
|
+
message: "Provide ownerEmail unless parentChatId is set"
|
|
399
|
+
});
|
|
400
|
+
var agentChatAuditToolBodySchema = z.object({
|
|
401
|
+
eveSessionId: z.string().min(1),
|
|
402
|
+
userId: z.string().min(1),
|
|
403
|
+
toolCallId: z.string().min(1),
|
|
404
|
+
toolName: z.string().min(1),
|
|
405
|
+
input: z.record(z.string(), z.unknown()).default({}),
|
|
406
|
+
success: z.boolean(),
|
|
407
|
+
status: z.enum(["completed", "failed", "rejected"]),
|
|
408
|
+
error: z.string().optional(),
|
|
409
|
+
idempotencyKey: z.string().optional()
|
|
396
410
|
});
|
|
397
411
|
var agentChatAuditInputBodySchema = z.object({
|
|
398
412
|
eveSessionId: z.string().min(1),
|
|
@@ -432,62 +446,175 @@ var agentChatLinkTaskBodySchema = z.object({
|
|
|
432
446
|
toolCallId: z.string().min(1)
|
|
433
447
|
});
|
|
434
448
|
|
|
449
|
+
// ../core/src/schemas/tool-result-display.ts
|
|
450
|
+
import { z as z2 } from "zod";
|
|
451
|
+
var toolDisplayMetadataSchema = z2.object({
|
|
452
|
+
widget: z2.string().optional(),
|
|
453
|
+
title: z2.string().optional(),
|
|
454
|
+
description: z2.string().optional()
|
|
455
|
+
});
|
|
456
|
+
var toolDisplayEnvelopeSchema = z2.object({
|
|
457
|
+
display: toolDisplayMetadataSchema.optional(),
|
|
458
|
+
data: z2.record(z2.string(), z2.unknown()),
|
|
459
|
+
ui: z2.record(
|
|
460
|
+
z2.string(),
|
|
461
|
+
z2.object({
|
|
462
|
+
"ui:widget": z2.string().optional(),
|
|
463
|
+
"ui:title": z2.string().optional(),
|
|
464
|
+
"ui:description": z2.string().optional(),
|
|
465
|
+
"ui:options": z2.record(z2.string(), z2.unknown()).optional()
|
|
466
|
+
}).passthrough()
|
|
467
|
+
).optional()
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
// ../core/src/schemas/agent-admin.ts
|
|
471
|
+
import { z as z3 } from "zod";
|
|
472
|
+
var tenantRoleSchema = z3.enum(["admin", "member"]);
|
|
473
|
+
var agentAdminUserSchema = z3.object({
|
|
474
|
+
id: z3.string(),
|
|
475
|
+
email: z3.string().email(),
|
|
476
|
+
name: z3.string()
|
|
477
|
+
});
|
|
478
|
+
var agentAdminMemberSchema = z3.object({
|
|
479
|
+
userId: z3.string(),
|
|
480
|
+
role: z3.string(),
|
|
481
|
+
membershipKind: z3.enum(["team", "assignee"]),
|
|
482
|
+
hasLoggedIn: z3.boolean(),
|
|
483
|
+
user: agentAdminUserSchema
|
|
484
|
+
});
|
|
485
|
+
var agentAdminGroupSchema = z3.object({
|
|
486
|
+
id: z3.string(),
|
|
487
|
+
name: z3.string(),
|
|
488
|
+
slug: z3.string(),
|
|
489
|
+
description: z3.string().nullable(),
|
|
490
|
+
memberCount: z3.number().optional()
|
|
491
|
+
});
|
|
492
|
+
var agentAdminGroupDetailSchema = agentAdminGroupSchema.extend({
|
|
493
|
+
members: z3.array(
|
|
494
|
+
z3.object({
|
|
495
|
+
userId: z3.string(),
|
|
496
|
+
user: agentAdminUserSchema
|
|
497
|
+
})
|
|
498
|
+
)
|
|
499
|
+
});
|
|
500
|
+
var agentAdminTaskSummarySchema = z3.object({
|
|
501
|
+
id: z3.string(),
|
|
502
|
+
convexId: z3.string(),
|
|
503
|
+
status: z3.string(),
|
|
504
|
+
type: z3.string().nullable(),
|
|
505
|
+
name: z3.string().nullable(),
|
|
506
|
+
description: z3.string().nullable(),
|
|
507
|
+
validUntil: z3.number(),
|
|
508
|
+
createdAt: z3.number(),
|
|
509
|
+
threadPriority: z3.string().nullable(),
|
|
510
|
+
handledByUserId: z3.string().nullable()
|
|
511
|
+
});
|
|
512
|
+
var inviteMemberBodySchema = z3.object({
|
|
513
|
+
email: z3.string().email(),
|
|
514
|
+
role: tenantRoleSchema.optional()
|
|
515
|
+
});
|
|
516
|
+
var updateMemberRoleBodySchema = z3.object({
|
|
517
|
+
role: tenantRoleSchema
|
|
518
|
+
});
|
|
519
|
+
var createGroupBodySchema = z3.object({
|
|
520
|
+
name: z3.string().min(1),
|
|
521
|
+
description: z3.string().optional()
|
|
522
|
+
});
|
|
523
|
+
var updateGroupBodySchema = z3.object({
|
|
524
|
+
name: z3.string().min(1).optional(),
|
|
525
|
+
description: z3.string().optional()
|
|
526
|
+
});
|
|
527
|
+
var addGroupMemberBodySchema = z3.object({
|
|
528
|
+
userId: z3.string().min(1).describe("Convex user id or member email.")
|
|
529
|
+
});
|
|
530
|
+
var listTasksQuerySchema = z3.object({
|
|
531
|
+
statusFilter: z3.enum(["all", "open", "handled", "expired"]).optional(),
|
|
532
|
+
typeFilter: z3.string().optional(),
|
|
533
|
+
appFilter: z3.string().optional(),
|
|
534
|
+
sortField: z3.enum(["type", "date", "status", "validUntil"]).optional(),
|
|
535
|
+
sortDirection: z3.enum(["asc", "desc"]).optional(),
|
|
536
|
+
limit: z3.coerce.number().int().positive().max(100).optional(),
|
|
537
|
+
cursor: z3.string().optional()
|
|
538
|
+
});
|
|
539
|
+
var searchTasksQuerySchema = z3.object({
|
|
540
|
+
q: z3.string().min(1),
|
|
541
|
+
limit: z3.coerce.number().int().positive().max(100).optional()
|
|
542
|
+
});
|
|
543
|
+
var assignTasksResultSchema = z3.object({
|
|
544
|
+
taskId: z3.string(),
|
|
545
|
+
success: z3.boolean(),
|
|
546
|
+
message: z3.string().optional(),
|
|
547
|
+
name: z3.string().nullable().optional(),
|
|
548
|
+
description: z3.string().nullable().optional(),
|
|
549
|
+
type: z3.string().nullable().optional()
|
|
550
|
+
});
|
|
551
|
+
var assignTasksResponseSchema = z3.object({
|
|
552
|
+
results: z3.array(assignTasksResultSchema)
|
|
553
|
+
});
|
|
554
|
+
var assignTasksBodySchema = z3.object({
|
|
555
|
+
taskIds: z3.array(z3.string().min(1)).min(1).max(100),
|
|
556
|
+
assignTo: assignToSchema.refine(
|
|
557
|
+
(value) => (value.users?.length ?? 0) > 0 || (value.groups?.length ?? 0) > 0,
|
|
558
|
+
{ message: "assignTo needs at least one user email or group slug." }
|
|
559
|
+
)
|
|
560
|
+
});
|
|
561
|
+
|
|
435
562
|
// src/schemas/index.ts
|
|
436
|
-
var handlerUrlSchema2 =
|
|
563
|
+
var handlerUrlSchema2 = z4.string().refine((url) => isAllowedHandlerUrl(url), {
|
|
437
564
|
message: HANDLER_URL_ERROR
|
|
438
565
|
});
|
|
439
|
-
var jsonSchema7Schema2 =
|
|
566
|
+
var jsonSchema7Schema2 = z4.custom(
|
|
440
567
|
(val) => typeof val === "object" && val !== null,
|
|
441
568
|
{ message: "Must be a valid JSON Schema object" }
|
|
442
569
|
);
|
|
443
|
-
var uiSchemaSchema2 =
|
|
570
|
+
var uiSchemaSchema2 = z4.custom((val) => typeof val === "object" && val !== null, {
|
|
444
571
|
message: "Must be a valid UiSchema object"
|
|
445
572
|
});
|
|
446
|
-
var webhookHandlerSchema2 =
|
|
447
|
-
type:
|
|
573
|
+
var webhookHandlerSchema2 = z4.object({
|
|
574
|
+
type: z4.literal("webhook"),
|
|
448
575
|
url: handlerUrlSchema2,
|
|
449
|
-
headers:
|
|
576
|
+
headers: z4.record(z4.string(), z4.string())
|
|
450
577
|
});
|
|
451
578
|
var triggerHandlerSchema2 = webhookHandlerSchema2.extend({
|
|
452
|
-
type:
|
|
453
|
-
tokenId:
|
|
579
|
+
type: z4.literal("trigger"),
|
|
580
|
+
tokenId: z4.string().min(1)
|
|
454
581
|
});
|
|
455
|
-
var handlerSchema2 =
|
|
456
|
-
var taskActionInputSchema2 =
|
|
457
|
-
id:
|
|
458
|
-
title:
|
|
459
|
-
description:
|
|
582
|
+
var handlerSchema2 = z4.discriminatedUnion("type", [webhookHandlerSchema2, triggerHandlerSchema2]);
|
|
583
|
+
var taskActionInputSchema2 = z4.object({
|
|
584
|
+
id: z4.string().min(1),
|
|
585
|
+
title: z4.string().min(1),
|
|
586
|
+
description: z4.string().optional(),
|
|
460
587
|
schema: jsonSchema7Schema2.optional(),
|
|
461
588
|
ui: uiSchemaSchema2.optional(),
|
|
462
|
-
data:
|
|
589
|
+
data: z4.record(z4.string(), z4.unknown()).optional()
|
|
463
590
|
});
|
|
464
591
|
var taskActionSchema2 = taskActionInputSchema2.extend({
|
|
465
|
-
handlers:
|
|
592
|
+
handlers: z4.array(handlerSchema2).min(1).optional()
|
|
466
593
|
});
|
|
467
|
-
var uiFieldSchemaSchema2 =
|
|
468
|
-
"ui:widget":
|
|
469
|
-
"ui:title":
|
|
470
|
-
"ui:description":
|
|
471
|
-
"ui:options":
|
|
472
|
-
items:
|
|
594
|
+
var uiFieldSchemaSchema2 = z4.object({
|
|
595
|
+
"ui:widget": z4.string().optional(),
|
|
596
|
+
"ui:title": z4.string().optional(),
|
|
597
|
+
"ui:description": z4.string().optional(),
|
|
598
|
+
"ui:options": z4.record(z4.string(), z4.unknown()).optional(),
|
|
599
|
+
items: z4.lazy(() => z4.record(z4.string(), uiFieldSchemaSchema2)).optional()
|
|
473
600
|
}).passthrough();
|
|
474
|
-
var contextUiSchema2 =
|
|
475
|
-
var contextDataSchema2 =
|
|
476
|
-
data:
|
|
601
|
+
var contextUiSchema2 = z4.record(z4.string(), uiFieldSchemaSchema2).optional();
|
|
602
|
+
var contextDataSchema2 = z4.object({
|
|
603
|
+
data: z4.record(z4.string(), z4.unknown()),
|
|
477
604
|
ui: contextUiSchema2
|
|
478
605
|
}).optional();
|
|
479
606
|
var TASK_CONTEXT_FORMAT_VERSION2 = 2;
|
|
480
|
-
var taskContextObjectBaseSchema2 =
|
|
481
|
-
app:
|
|
482
|
-
type:
|
|
483
|
-
name:
|
|
484
|
-
description:
|
|
485
|
-
validUntil:
|
|
607
|
+
var taskContextObjectBaseSchema2 = z4.object({
|
|
608
|
+
app: z4.string().min(1).optional(),
|
|
609
|
+
type: z4.string().min(1),
|
|
610
|
+
name: z4.string().min(1),
|
|
611
|
+
description: z4.string().optional(),
|
|
612
|
+
validUntil: z4.string().optional(),
|
|
486
613
|
context: contextDataSchema2,
|
|
487
|
-
contextVersion:
|
|
614
|
+
contextVersion: z4.literal(2).optional(),
|
|
488
615
|
/** @deprecated Use `contextVersion`. Accepted on ingest only. */
|
|
489
|
-
version:
|
|
490
|
-
actions:
|
|
616
|
+
version: z4.literal(2).optional(),
|
|
617
|
+
actions: z4.array(taskActionSchema2).min(1, "At least one action is required")
|
|
491
618
|
});
|
|
492
619
|
function normalizeTaskContextVersion2(data) {
|
|
493
620
|
const { version: legacyVersion, contextVersion, ...rest } = data;
|
|
@@ -503,7 +630,7 @@ function refineContextPublicUrls2(data, ctx) {
|
|
|
503
630
|
const error = validateContextPublicUrls(data.context);
|
|
504
631
|
if (error) {
|
|
505
632
|
ctx.addIssue({
|
|
506
|
-
code:
|
|
633
|
+
code: z4.ZodIssueCode.custom,
|
|
507
634
|
message: error,
|
|
508
635
|
path: ["context"]
|
|
509
636
|
});
|
|
@@ -512,9 +639,9 @@ function refineContextPublicUrls2(data, ctx) {
|
|
|
512
639
|
var taskContextSchema2 = taskContextObjectSchema2.superRefine(
|
|
513
640
|
refineContextPublicUrls2
|
|
514
641
|
);
|
|
515
|
-
var assignToSchema2 =
|
|
516
|
-
users:
|
|
517
|
-
groups:
|
|
642
|
+
var assignToSchema2 = z4.object({
|
|
643
|
+
users: z4.array(z4.string().email()).optional(),
|
|
644
|
+
groups: z4.array(z4.string().min(1)).optional()
|
|
518
645
|
}).refine(
|
|
519
646
|
(data) => {
|
|
520
647
|
const groups = data.groups ?? [];
|
|
@@ -525,7 +652,7 @@ var assignToSchema2 = z2.object({
|
|
|
525
652
|
},
|
|
526
653
|
{ message: 'Cannot combine "all" with other group slugs' }
|
|
527
654
|
);
|
|
528
|
-
var threadUpdateMessageSchema2 =
|
|
655
|
+
var threadUpdateMessageSchema2 = z4.string().min(1).max(500);
|
|
529
656
|
var threadUpdateStatuses2 = [
|
|
530
657
|
"info",
|
|
531
658
|
"queued",
|
|
@@ -535,14 +662,14 @@ var threadUpdateStatuses2 = [
|
|
|
535
662
|
"failed",
|
|
536
663
|
"cancelled"
|
|
537
664
|
];
|
|
538
|
-
var threadUpdateStatusSchema2 =
|
|
665
|
+
var threadUpdateStatusSchema2 = z4.enum(threadUpdateStatuses2);
|
|
539
666
|
var DEFAULT_THREAD_UPDATE_STATUS = "info";
|
|
540
|
-
var threadUpdateInputSchema2 =
|
|
667
|
+
var threadUpdateInputSchema2 = z4.object({
|
|
541
668
|
message: threadUpdateMessageSchema2,
|
|
542
669
|
status: threadUpdateStatusSchema2.optional()
|
|
543
670
|
});
|
|
544
671
|
var taskPriorities2 = ["low", "normal", "high", "urgent"];
|
|
545
|
-
var taskPrioritySchema2 =
|
|
672
|
+
var taskPrioritySchema2 = z4.enum(taskPriorities2);
|
|
546
673
|
var DEFAULT_TASK_PRIORITY = "normal";
|
|
547
674
|
var LOWEST_TASK_PRIORITY = "low";
|
|
548
675
|
var TASK_PRIORITY_RANK = {
|
|
@@ -551,8 +678,8 @@ var TASK_PRIORITY_RANK = {
|
|
|
551
678
|
high: 3,
|
|
552
679
|
urgent: 4
|
|
553
680
|
};
|
|
554
|
-
var agentTelemetrySchema2 =
|
|
555
|
-
version:
|
|
681
|
+
var agentTelemetrySchema2 = z4.object({
|
|
682
|
+
version: z4.string().min(1)
|
|
556
683
|
});
|
|
557
684
|
var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
558
685
|
assignTo: assignToSchema2.optional(),
|
|
@@ -560,7 +687,7 @@ var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
|
560
687
|
* Groups related tasks together. When omitted, the server generates one and
|
|
561
688
|
* returns it so the caller can reuse it on later tasks in the same thread.
|
|
562
689
|
*/
|
|
563
|
-
threadId:
|
|
690
|
+
threadId: z4.string().min(1).optional(),
|
|
564
691
|
/**
|
|
565
692
|
* Optional thread priority. When set, applies to the whole thread and
|
|
566
693
|
* overwrites any previous priority. Omit on later tasks to leave unchanged.
|
|
@@ -575,6 +702,65 @@ var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
|
575
702
|
}).transform(normalizeTaskContextVersion2).superRefine(refineContextPublicUrls2);
|
|
576
703
|
var threadUpdateBodySchema = threadUpdateInputSchema2;
|
|
577
704
|
|
|
705
|
+
// ../core/src/handler-retry.ts
|
|
706
|
+
var HANDLER_RETRY_DELAYS_MS = [
|
|
707
|
+
6e4,
|
|
708
|
+
// 1m
|
|
709
|
+
3e5,
|
|
710
|
+
// 5m
|
|
711
|
+
18e5,
|
|
712
|
+
// 30m
|
|
713
|
+
36e5,
|
|
714
|
+
// 1h
|
|
715
|
+
216e5,
|
|
716
|
+
// 6h
|
|
717
|
+
864e5,
|
|
718
|
+
// 24h
|
|
719
|
+
1728e5
|
|
720
|
+
// 48h
|
|
721
|
+
];
|
|
722
|
+
var HANDLER_MAX_ATTEMPTS = HANDLER_RETRY_DELAYS_MS.length + 1;
|
|
723
|
+
|
|
724
|
+
// ../core/src/attribution/index.ts
|
|
725
|
+
import { z as z5 } from "zod";
|
|
726
|
+
|
|
727
|
+
// ../core/src/app-url.ts
|
|
728
|
+
var PRODUCTION_APP_URL = "https://app.robotrock.io";
|
|
729
|
+
var PRODUCTION_API_URL = "https://api.robotrock.io/v1";
|
|
730
|
+
var DEV_API_URL = "http://localhost:4001/v1";
|
|
731
|
+
var APP_SIGNUP_URL = `${PRODUCTION_APP_URL}/sign-up`;
|
|
732
|
+
function normalizeRobotRockApiBaseUrl(baseUrl) {
|
|
733
|
+
const trimmed = baseUrl.trim().replace(/\/+$/, "");
|
|
734
|
+
if (trimmed.endsWith("/v1")) {
|
|
735
|
+
return trimmed;
|
|
736
|
+
}
|
|
737
|
+
return `${trimmed}/v1`;
|
|
738
|
+
}
|
|
739
|
+
function getRobotRockApiBaseUrl() {
|
|
740
|
+
const explicit = process.env.ROBOTROCK_BASE_URL?.trim() || process.env.ROBOTROCK_API_URL?.trim();
|
|
741
|
+
if (explicit) {
|
|
742
|
+
return normalizeRobotRockApiBaseUrl(explicit);
|
|
743
|
+
}
|
|
744
|
+
if (process.env.NODE_ENV === "production") {
|
|
745
|
+
return PRODUCTION_API_URL;
|
|
746
|
+
}
|
|
747
|
+
return DEV_API_URL;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// ../core/src/attribution/index.ts
|
|
751
|
+
var ATTRIBUTION_COOKIE_MAX_AGE = 60 * 60 * 24 * 90;
|
|
752
|
+
var attributionSchema = z5.object({
|
|
753
|
+
utmSource: z5.string().optional(),
|
|
754
|
+
utmMedium: z5.string().optional(),
|
|
755
|
+
utmCampaign: z5.string().optional(),
|
|
756
|
+
utmContent: z5.string().optional(),
|
|
757
|
+
utmTerm: z5.string().optional(),
|
|
758
|
+
gclid: z5.string().optional(),
|
|
759
|
+
landingUrl: z5.string().optional(),
|
|
760
|
+
referrer: z5.string().optional(),
|
|
761
|
+
capturedAt: z5.number()
|
|
762
|
+
});
|
|
763
|
+
|
|
578
764
|
// src/approval-result.ts
|
|
579
765
|
var TaskTimeoutError = class extends Error {
|
|
580
766
|
constructor(message) {
|
|
@@ -649,77 +835,27 @@ function getErrorMessage(data, fallback) {
|
|
|
649
835
|
return fallback;
|
|
650
836
|
}
|
|
651
837
|
|
|
652
|
-
// ../core/src/handler-retry.ts
|
|
653
|
-
var HANDLER_RETRY_DELAYS_MS = [
|
|
654
|
-
6e4,
|
|
655
|
-
// 1m
|
|
656
|
-
3e5,
|
|
657
|
-
// 5m
|
|
658
|
-
18e5,
|
|
659
|
-
// 30m
|
|
660
|
-
36e5,
|
|
661
|
-
// 1h
|
|
662
|
-
216e5,
|
|
663
|
-
// 6h
|
|
664
|
-
864e5,
|
|
665
|
-
// 24h
|
|
666
|
-
1728e5
|
|
667
|
-
// 48h
|
|
668
|
-
];
|
|
669
|
-
var HANDLER_MAX_ATTEMPTS = HANDLER_RETRY_DELAYS_MS.length + 1;
|
|
670
|
-
|
|
671
|
-
// ../core/src/attribution/index.ts
|
|
672
|
-
import { z as z3 } from "zod";
|
|
673
|
-
|
|
674
|
-
// ../core/src/app-url.ts
|
|
675
|
-
var PRODUCTION_APP_URL = "https://app.robotrock.io";
|
|
676
|
-
var PRODUCTION_API_URL = "https://api.robotrock.io/v1";
|
|
677
|
-
var DEV_API_URL = "http://localhost:4001/v1";
|
|
678
|
-
var APP_SIGNUP_URL = `${PRODUCTION_APP_URL}/sign-up`;
|
|
679
|
-
function normalizeRobotRockApiBaseUrl(baseUrl) {
|
|
680
|
-
const trimmed = baseUrl.trim().replace(/\/+$/, "");
|
|
681
|
-
if (trimmed.endsWith("/v1")) {
|
|
682
|
-
return trimmed;
|
|
683
|
-
}
|
|
684
|
-
return `${trimmed}/v1`;
|
|
685
|
-
}
|
|
686
|
-
function getRobotRockApiBaseUrl() {
|
|
687
|
-
const explicit = process.env.ROBOTROCK_BASE_URL?.trim() || process.env.ROBOTROCK_API_URL?.trim();
|
|
688
|
-
if (explicit) {
|
|
689
|
-
return normalizeRobotRockApiBaseUrl(explicit);
|
|
690
|
-
}
|
|
691
|
-
if (process.env.NODE_ENV === "production") {
|
|
692
|
-
return PRODUCTION_API_URL;
|
|
693
|
-
}
|
|
694
|
-
return DEV_API_URL;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
// ../core/src/attribution/index.ts
|
|
698
|
-
var ATTRIBUTION_COOKIE_MAX_AGE = 60 * 60 * 24 * 90;
|
|
699
|
-
var attributionSchema = z3.object({
|
|
700
|
-
utmSource: z3.string().optional(),
|
|
701
|
-
utmMedium: z3.string().optional(),
|
|
702
|
-
utmCampaign: z3.string().optional(),
|
|
703
|
-
utmContent: z3.string().optional(),
|
|
704
|
-
utmTerm: z3.string().optional(),
|
|
705
|
-
gclid: z3.string().optional(),
|
|
706
|
-
landingUrl: z3.string().optional(),
|
|
707
|
-
referrer: z3.string().optional(),
|
|
708
|
-
capturedAt: z3.number()
|
|
709
|
-
});
|
|
710
|
-
|
|
711
838
|
// src/auth-headers.ts
|
|
839
|
+
var ROBOTROCK_ACTING_USER_ID_HEADER = "x-robotrock-acting-user-id";
|
|
712
840
|
function buildRobotRockAuthHeaders(auth) {
|
|
713
841
|
if (auth.kind === "apiKey") {
|
|
714
|
-
|
|
842
|
+
const headers2 = {
|
|
715
843
|
"X-Api-Key": auth.apiKey
|
|
716
844
|
};
|
|
845
|
+
if (auth.actingUserId?.trim()) {
|
|
846
|
+
headers2[ROBOTROCK_ACTING_USER_ID_HEADER] = auth.actingUserId.trim();
|
|
847
|
+
}
|
|
848
|
+
return headers2;
|
|
717
849
|
}
|
|
718
|
-
|
|
850
|
+
const headers = {
|
|
719
851
|
Authorization: `Bearer ${auth.token}`,
|
|
720
852
|
"X-RobotRock-Tenant-Slug": auth.tenantSlug,
|
|
721
853
|
"X-RobotRock-Connection-Id": auth.connectionId
|
|
722
854
|
};
|
|
855
|
+
if (auth.actingUserId?.trim()) {
|
|
856
|
+
headers[ROBOTROCK_ACTING_USER_ID_HEADER] = auth.actingUserId.trim();
|
|
857
|
+
}
|
|
858
|
+
return headers;
|
|
723
859
|
}
|
|
724
860
|
function resolveRobotRockAuthConfig(overrides) {
|
|
725
861
|
if (overrides?.agentService) {
|
|
@@ -863,6 +999,29 @@ function createChatsApi(config) {
|
|
|
863
999
|
);
|
|
864
1000
|
}
|
|
865
1001
|
},
|
|
1002
|
+
async logToolExecution(input) {
|
|
1003
|
+
const validation = agentChatAuditToolBodySchema.safeParse(input);
|
|
1004
|
+
if (!validation.success) {
|
|
1005
|
+
throw new RobotRockError(
|
|
1006
|
+
`Invalid audit tool input: ${validation.error.issues[0]?.message}`,
|
|
1007
|
+
400,
|
|
1008
|
+
validation.error.issues
|
|
1009
|
+
);
|
|
1010
|
+
}
|
|
1011
|
+
const response = await fetch(`${config.baseUrl}/agent-chats/audit-tool`, {
|
|
1012
|
+
method: "POST",
|
|
1013
|
+
headers: headers(),
|
|
1014
|
+
body: JSON.stringify(validation.data)
|
|
1015
|
+
});
|
|
1016
|
+
if (!response.ok) {
|
|
1017
|
+
const data = await parseResponseBody(response);
|
|
1018
|
+
throw new RobotRockError(
|
|
1019
|
+
getErrorMessage(data, "Failed to log chat tool execution"),
|
|
1020
|
+
response.status,
|
|
1021
|
+
data
|
|
1022
|
+
);
|
|
1023
|
+
}
|
|
1024
|
+
},
|
|
866
1025
|
async linkTask(input) {
|
|
867
1026
|
const validation = agentChatLinkTaskBodySchema.safeParse(input);
|
|
868
1027
|
if (!validation.success) {
|
|
@@ -965,7 +1124,9 @@ var RobotRock = class {
|
|
|
965
1124
|
create: (task) => this.createTaskRequest(task),
|
|
966
1125
|
get: (taskId) => this.getTaskById(taskId),
|
|
967
1126
|
cancel: (taskId) => this.cancelTaskRequest(taskId),
|
|
968
|
-
sendUpdate: (input) => this.sendThreadUpdate(input)
|
|
1127
|
+
sendUpdate: (input) => this.sendThreadUpdate(input),
|
|
1128
|
+
list: (input) => this.listTasksRequest(input),
|
|
1129
|
+
search: (input) => this.searchTasksRequest(input)
|
|
969
1130
|
};
|
|
970
1131
|
this.chats = createChatsApi({
|
|
971
1132
|
baseUrl: this.baseUrl,
|
|
@@ -1162,6 +1323,47 @@ var RobotRock = class {
|
|
|
1162
1323
|
);
|
|
1163
1324
|
}
|
|
1164
1325
|
}
|
|
1326
|
+
async listTasksRequest(input) {
|
|
1327
|
+
const params = new URLSearchParams();
|
|
1328
|
+
for (const [key, value] of Object.entries(input ?? {})) {
|
|
1329
|
+
if (value !== void 0 && value !== "") {
|
|
1330
|
+
params.set(key, String(value));
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
const suffix = params.size > 0 ? `?${params.toString()}` : "";
|
|
1334
|
+
const response = await fetch(`${this.baseUrl}/tasks${suffix}`, {
|
|
1335
|
+
method: "GET",
|
|
1336
|
+
headers: this.authHeaders()
|
|
1337
|
+
});
|
|
1338
|
+
const data = await parseResponseBody(response);
|
|
1339
|
+
if (!response.ok) {
|
|
1340
|
+
throw new RobotRockError(
|
|
1341
|
+
getErrorMessage(data, "Failed to list tasks"),
|
|
1342
|
+
response.status,
|
|
1343
|
+
data
|
|
1344
|
+
);
|
|
1345
|
+
}
|
|
1346
|
+
return data;
|
|
1347
|
+
}
|
|
1348
|
+
async searchTasksRequest(input) {
|
|
1349
|
+
const params = new URLSearchParams({ q: input.q });
|
|
1350
|
+
if (input.limit !== void 0) {
|
|
1351
|
+
params.set("limit", String(input.limit));
|
|
1352
|
+
}
|
|
1353
|
+
const response = await fetch(`${this.baseUrl}/tasks/search?${params.toString()}`, {
|
|
1354
|
+
method: "GET",
|
|
1355
|
+
headers: this.authHeaders()
|
|
1356
|
+
});
|
|
1357
|
+
const data = await parseResponseBody(response);
|
|
1358
|
+
if (!response.ok) {
|
|
1359
|
+
throw new RobotRockError(
|
|
1360
|
+
getErrorMessage(data, "Failed to search tasks"),
|
|
1361
|
+
response.status,
|
|
1362
|
+
data
|
|
1363
|
+
);
|
|
1364
|
+
}
|
|
1365
|
+
return data;
|
|
1366
|
+
}
|
|
1165
1367
|
};
|
|
1166
1368
|
function createClient(config) {
|
|
1167
1369
|
return new RobotRock(config);
|
|
@@ -1558,7 +1760,11 @@ var DEFAULT_TOOL_DISPLAY_LABELS = {
|
|
|
1558
1760
|
get_weather: "Get weather",
|
|
1559
1761
|
get_my_access: "Check my access",
|
|
1560
1762
|
whoami: "Who am I",
|
|
1561
|
-
create_robotrock_task: "Create a RobotRock task"
|
|
1763
|
+
create_robotrock_task: "Create a RobotRock task",
|
|
1764
|
+
search_products: "Search products",
|
|
1765
|
+
manage_team_members: "Manage team members",
|
|
1766
|
+
manage_groups: "Manage groups",
|
|
1767
|
+
query_tasks: "Query tasks"
|
|
1562
1768
|
};
|
|
1563
1769
|
var toolDisplayLabelOverrides = {};
|
|
1564
1770
|
function setToolDisplayLabelOverrides(overrides) {
|
|
@@ -1598,18 +1804,18 @@ var ROBOTROCK_READY_HOOK_SLUG = "robotrock-ready";
|
|
|
1598
1804
|
|
|
1599
1805
|
// src/webhook.ts
|
|
1600
1806
|
import { createHmac, timingSafeEqual } from "crypto";
|
|
1601
|
-
import { z as
|
|
1807
|
+
import { z as z6 } from "zod";
|
|
1602
1808
|
var ROBOTROCK_SIGNATURE_HEADER = "x-robotrock-signature";
|
|
1603
|
-
var robotRockWebhookPayloadBodySchema =
|
|
1604
|
-
taskId:
|
|
1605
|
-
action:
|
|
1606
|
-
id:
|
|
1607
|
-
title:
|
|
1608
|
-
data:
|
|
1809
|
+
var robotRockWebhookPayloadBodySchema = z6.object({
|
|
1810
|
+
taskId: z6.string().min(1),
|
|
1811
|
+
action: z6.object({
|
|
1812
|
+
id: z6.string().min(1),
|
|
1813
|
+
title: z6.string().min(1),
|
|
1814
|
+
data: z6.unknown()
|
|
1609
1815
|
}),
|
|
1610
|
-
handledBy:
|
|
1611
|
-
handledAt:
|
|
1612
|
-
handlerType:
|
|
1816
|
+
handledBy: z6.string().min(1).optional(),
|
|
1817
|
+
handledAt: z6.string().min(1),
|
|
1818
|
+
handlerType: z6.string().min(1)
|
|
1613
1819
|
});
|
|
1614
1820
|
var RobotRockWebhookError = class extends Error {
|
|
1615
1821
|
constructor(message, code, details) {
|