robotrock 1.1.0 → 1.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/README.md +2 -2
- 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 +30 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Tool } from 'ai';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { R as RobotRock, S as SendToHumanActionInput } from './client-
|
|
4
|
-
import { A as ApproveByHumanToolDurableOptions, a as ApproveByHumanToolOptions, N as approveByHumanInputSchema, H as HumanToolResult, i as CreateSendToHumanToolDurableOptions, C as CreateSendToHumanToolOptions, a7 as sendToHumanToolInputSchema, j as CreateSendUpdateToolDurableOptions, c as CreateSendUpdateToolOptions, a9 as sendUpdateToolInputSchema, L as SendUpdateToolResult, e as RequestActionInputToolOptions, a4 as requestActionInputToolInputSchema, E as RequestActionInputToolOutput, g as ReportStatusToolOptions, a2 as reportStatusToolInputSchema, B as ReportStatusToolOutput, k as RobotRockAiContext } from './tool-approval-bridge-
|
|
3
|
+
import { R as RobotRock, S as SendToHumanActionInput } from './client-YO9Y1rkH.js';
|
|
4
|
+
import { A as ApproveByHumanToolDurableOptions, a as ApproveByHumanToolOptions, N as approveByHumanInputSchema, H as HumanToolResult, i as CreateSendToHumanToolDurableOptions, C as CreateSendToHumanToolOptions, a7 as sendToHumanToolInputSchema, j as CreateSendUpdateToolDurableOptions, c as CreateSendUpdateToolOptions, a9 as sendUpdateToolInputSchema, L as SendUpdateToolResult, e as RequestActionInputToolOptions, a4 as requestActionInputToolInputSchema, E as RequestActionInputToolOutput, g as ReportStatusToolOptions, a2 as reportStatusToolInputSchema, B as ReportStatusToolOutput, k as RobotRockAiContext } from './tool-approval-bridge-aMA79Z1B.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* AI SDK tool with fixed approve/decline actions; blocks until a human decides.
|
package/dist/workflow/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ThreadUpdateStatus, DiscriminatedApprovalResult, ThreadUpdate } from '../schemas/index.js';
|
|
2
2
|
export { ApprovalResult, TaskContextInput, TaskResult } from '../schemas/index.js';
|
|
3
|
-
import { S as SendToHumanActionInput, a as SendToHumanInput } from '../client-
|
|
3
|
+
import { S as SendToHumanActionInput, a as SendToHumanInput } from '../client-YO9Y1rkH.js';
|
|
4
4
|
import { R as RobotRockPlatformOtelFields } from '../otel-platform-DzHyHkGk.js';
|
|
5
5
|
export { a as RobotRockHandlerWebhookPayload } from '../otel-platform-DzHyHkGk.js';
|
|
6
6
|
import 'zod';
|
|
7
7
|
import '@robotrock/core';
|
|
8
|
+
import '../auth-headers-qL-ZeEtd.js';
|
|
8
9
|
import '@opentelemetry/api';
|
|
9
10
|
|
|
10
11
|
type SendToHumanWorkflowPayload<A extends readonly SendToHumanActionInput[] = readonly SendToHumanActionInput[]> = SendToHumanInput<A> & RobotRockPlatformOtelFields & {
|
package/dist/workflow/index.js
CHANGED
|
@@ -48,7 +48,7 @@ var __callDispose = (stack, error, hasError) => {
|
|
|
48
48
|
import { createWebhook, sleep as sleep2 } from "workflow";
|
|
49
49
|
|
|
50
50
|
// src/schemas/index.ts
|
|
51
|
-
import { z as
|
|
51
|
+
import { z as z4 } from "zod";
|
|
52
52
|
|
|
53
53
|
// ../core/src/utils/safe-url.ts
|
|
54
54
|
var BLOCKED_HOSTNAMES = /* @__PURE__ */ new Set([
|
|
@@ -435,13 +435,27 @@ var createAgentChatBodySchema = z.object({
|
|
|
435
435
|
eveConnectionId: z.string().min(1).optional(),
|
|
436
436
|
/** Source application id; groups the chat under an inbox section. */
|
|
437
437
|
app: z.string().min(1).optional(),
|
|
438
|
-
|
|
438
|
+
/** Email of the user who owns the chat. Required unless `parentChatId` is set. */
|
|
439
|
+
ownerEmail: z.string().email().optional(),
|
|
439
440
|
title: z.string().min(1),
|
|
440
441
|
messages: z.array(agentChatSeedMessageSchema).default([]),
|
|
441
442
|
/** Provenance label stored on the session ("cron" | "agent" | ...). */
|
|
442
443
|
source: z.string().min(1).optional()
|
|
443
444
|
}).refine((data) => Boolean(data.agentIdentifier || data.parentChatId), {
|
|
444
445
|
message: "Provide either agentIdentifier or parentChatId"
|
|
446
|
+
}).refine((data) => Boolean(data.ownerEmail || data.parentChatId), {
|
|
447
|
+
message: "Provide ownerEmail unless parentChatId is set"
|
|
448
|
+
});
|
|
449
|
+
var agentChatAuditToolBodySchema = z.object({
|
|
450
|
+
eveSessionId: z.string().min(1),
|
|
451
|
+
userId: z.string().min(1),
|
|
452
|
+
toolCallId: z.string().min(1),
|
|
453
|
+
toolName: z.string().min(1),
|
|
454
|
+
input: z.record(z.string(), z.unknown()).default({}),
|
|
455
|
+
success: z.boolean(),
|
|
456
|
+
status: z.enum(["completed", "failed", "rejected"]),
|
|
457
|
+
error: z.string().optional(),
|
|
458
|
+
idempotencyKey: z.string().optional()
|
|
445
459
|
});
|
|
446
460
|
var agentChatAuditInputBodySchema = z.object({
|
|
447
461
|
eveSessionId: z.string().min(1),
|
|
@@ -481,62 +495,175 @@ var agentChatLinkTaskBodySchema = z.object({
|
|
|
481
495
|
toolCallId: z.string().min(1)
|
|
482
496
|
});
|
|
483
497
|
|
|
498
|
+
// ../core/src/schemas/tool-result-display.ts
|
|
499
|
+
import { z as z2 } from "zod";
|
|
500
|
+
var toolDisplayMetadataSchema = z2.object({
|
|
501
|
+
widget: z2.string().optional(),
|
|
502
|
+
title: z2.string().optional(),
|
|
503
|
+
description: z2.string().optional()
|
|
504
|
+
});
|
|
505
|
+
var toolDisplayEnvelopeSchema = z2.object({
|
|
506
|
+
display: toolDisplayMetadataSchema.optional(),
|
|
507
|
+
data: z2.record(z2.string(), z2.unknown()),
|
|
508
|
+
ui: z2.record(
|
|
509
|
+
z2.string(),
|
|
510
|
+
z2.object({
|
|
511
|
+
"ui:widget": z2.string().optional(),
|
|
512
|
+
"ui:title": z2.string().optional(),
|
|
513
|
+
"ui:description": z2.string().optional(),
|
|
514
|
+
"ui:options": z2.record(z2.string(), z2.unknown()).optional()
|
|
515
|
+
}).passthrough()
|
|
516
|
+
).optional()
|
|
517
|
+
});
|
|
518
|
+
|
|
519
|
+
// ../core/src/schemas/agent-admin.ts
|
|
520
|
+
import { z as z3 } from "zod";
|
|
521
|
+
var tenantRoleSchema = z3.enum(["admin", "member"]);
|
|
522
|
+
var agentAdminUserSchema = z3.object({
|
|
523
|
+
id: z3.string(),
|
|
524
|
+
email: z3.string().email(),
|
|
525
|
+
name: z3.string()
|
|
526
|
+
});
|
|
527
|
+
var agentAdminMemberSchema = z3.object({
|
|
528
|
+
userId: z3.string(),
|
|
529
|
+
role: z3.string(),
|
|
530
|
+
membershipKind: z3.enum(["team", "assignee"]),
|
|
531
|
+
hasLoggedIn: z3.boolean(),
|
|
532
|
+
user: agentAdminUserSchema
|
|
533
|
+
});
|
|
534
|
+
var agentAdminGroupSchema = z3.object({
|
|
535
|
+
id: z3.string(),
|
|
536
|
+
name: z3.string(),
|
|
537
|
+
slug: z3.string(),
|
|
538
|
+
description: z3.string().nullable(),
|
|
539
|
+
memberCount: z3.number().optional()
|
|
540
|
+
});
|
|
541
|
+
var agentAdminGroupDetailSchema = agentAdminGroupSchema.extend({
|
|
542
|
+
members: z3.array(
|
|
543
|
+
z3.object({
|
|
544
|
+
userId: z3.string(),
|
|
545
|
+
user: agentAdminUserSchema
|
|
546
|
+
})
|
|
547
|
+
)
|
|
548
|
+
});
|
|
549
|
+
var agentAdminTaskSummarySchema = z3.object({
|
|
550
|
+
id: z3.string(),
|
|
551
|
+
convexId: z3.string(),
|
|
552
|
+
status: z3.string(),
|
|
553
|
+
type: z3.string().nullable(),
|
|
554
|
+
name: z3.string().nullable(),
|
|
555
|
+
description: z3.string().nullable(),
|
|
556
|
+
validUntil: z3.number(),
|
|
557
|
+
createdAt: z3.number(),
|
|
558
|
+
threadPriority: z3.string().nullable(),
|
|
559
|
+
handledByUserId: z3.string().nullable()
|
|
560
|
+
});
|
|
561
|
+
var inviteMemberBodySchema = z3.object({
|
|
562
|
+
email: z3.string().email(),
|
|
563
|
+
role: tenantRoleSchema.optional()
|
|
564
|
+
});
|
|
565
|
+
var updateMemberRoleBodySchema = z3.object({
|
|
566
|
+
role: tenantRoleSchema
|
|
567
|
+
});
|
|
568
|
+
var createGroupBodySchema = z3.object({
|
|
569
|
+
name: z3.string().min(1),
|
|
570
|
+
description: z3.string().optional()
|
|
571
|
+
});
|
|
572
|
+
var updateGroupBodySchema = z3.object({
|
|
573
|
+
name: z3.string().min(1).optional(),
|
|
574
|
+
description: z3.string().optional()
|
|
575
|
+
});
|
|
576
|
+
var addGroupMemberBodySchema = z3.object({
|
|
577
|
+
userId: z3.string().min(1).describe("Convex user id or member email.")
|
|
578
|
+
});
|
|
579
|
+
var listTasksQuerySchema = z3.object({
|
|
580
|
+
statusFilter: z3.enum(["all", "open", "handled", "expired"]).optional(),
|
|
581
|
+
typeFilter: z3.string().optional(),
|
|
582
|
+
appFilter: z3.string().optional(),
|
|
583
|
+
sortField: z3.enum(["type", "date", "status", "validUntil"]).optional(),
|
|
584
|
+
sortDirection: z3.enum(["asc", "desc"]).optional(),
|
|
585
|
+
limit: z3.coerce.number().int().positive().max(100).optional(),
|
|
586
|
+
cursor: z3.string().optional()
|
|
587
|
+
});
|
|
588
|
+
var searchTasksQuerySchema = z3.object({
|
|
589
|
+
q: z3.string().min(1),
|
|
590
|
+
limit: z3.coerce.number().int().positive().max(100).optional()
|
|
591
|
+
});
|
|
592
|
+
var assignTasksResultSchema = z3.object({
|
|
593
|
+
taskId: z3.string(),
|
|
594
|
+
success: z3.boolean(),
|
|
595
|
+
message: z3.string().optional(),
|
|
596
|
+
name: z3.string().nullable().optional(),
|
|
597
|
+
description: z3.string().nullable().optional(),
|
|
598
|
+
type: z3.string().nullable().optional()
|
|
599
|
+
});
|
|
600
|
+
var assignTasksResponseSchema = z3.object({
|
|
601
|
+
results: z3.array(assignTasksResultSchema)
|
|
602
|
+
});
|
|
603
|
+
var assignTasksBodySchema = z3.object({
|
|
604
|
+
taskIds: z3.array(z3.string().min(1)).min(1).max(100),
|
|
605
|
+
assignTo: assignToSchema.refine(
|
|
606
|
+
(value) => (value.users?.length ?? 0) > 0 || (value.groups?.length ?? 0) > 0,
|
|
607
|
+
{ message: "assignTo needs at least one user email or group slug." }
|
|
608
|
+
)
|
|
609
|
+
});
|
|
610
|
+
|
|
484
611
|
// src/schemas/index.ts
|
|
485
|
-
var handlerUrlSchema2 =
|
|
612
|
+
var handlerUrlSchema2 = z4.string().refine((url) => isAllowedHandlerUrl(url), {
|
|
486
613
|
message: HANDLER_URL_ERROR
|
|
487
614
|
});
|
|
488
|
-
var jsonSchema7Schema2 =
|
|
615
|
+
var jsonSchema7Schema2 = z4.custom(
|
|
489
616
|
(val) => typeof val === "object" && val !== null,
|
|
490
617
|
{ message: "Must be a valid JSON Schema object" }
|
|
491
618
|
);
|
|
492
|
-
var uiSchemaSchema2 =
|
|
619
|
+
var uiSchemaSchema2 = z4.custom((val) => typeof val === "object" && val !== null, {
|
|
493
620
|
message: "Must be a valid UiSchema object"
|
|
494
621
|
});
|
|
495
|
-
var webhookHandlerSchema2 =
|
|
496
|
-
type:
|
|
622
|
+
var webhookHandlerSchema2 = z4.object({
|
|
623
|
+
type: z4.literal("webhook"),
|
|
497
624
|
url: handlerUrlSchema2,
|
|
498
|
-
headers:
|
|
625
|
+
headers: z4.record(z4.string(), z4.string())
|
|
499
626
|
});
|
|
500
627
|
var triggerHandlerSchema2 = webhookHandlerSchema2.extend({
|
|
501
|
-
type:
|
|
502
|
-
tokenId:
|
|
628
|
+
type: z4.literal("trigger"),
|
|
629
|
+
tokenId: z4.string().min(1)
|
|
503
630
|
});
|
|
504
|
-
var handlerSchema2 =
|
|
505
|
-
var taskActionInputSchema2 =
|
|
506
|
-
id:
|
|
507
|
-
title:
|
|
508
|
-
description:
|
|
631
|
+
var handlerSchema2 = z4.discriminatedUnion("type", [webhookHandlerSchema2, triggerHandlerSchema2]);
|
|
632
|
+
var taskActionInputSchema2 = z4.object({
|
|
633
|
+
id: z4.string().min(1),
|
|
634
|
+
title: z4.string().min(1),
|
|
635
|
+
description: z4.string().optional(),
|
|
509
636
|
schema: jsonSchema7Schema2.optional(),
|
|
510
637
|
ui: uiSchemaSchema2.optional(),
|
|
511
|
-
data:
|
|
638
|
+
data: z4.record(z4.string(), z4.unknown()).optional()
|
|
512
639
|
});
|
|
513
640
|
var taskActionSchema2 = taskActionInputSchema2.extend({
|
|
514
|
-
handlers:
|
|
641
|
+
handlers: z4.array(handlerSchema2).min(1).optional()
|
|
515
642
|
});
|
|
516
|
-
var uiFieldSchemaSchema2 =
|
|
517
|
-
"ui:widget":
|
|
518
|
-
"ui:title":
|
|
519
|
-
"ui:description":
|
|
520
|
-
"ui:options":
|
|
521
|
-
items:
|
|
643
|
+
var uiFieldSchemaSchema2 = z4.object({
|
|
644
|
+
"ui:widget": z4.string().optional(),
|
|
645
|
+
"ui:title": z4.string().optional(),
|
|
646
|
+
"ui:description": z4.string().optional(),
|
|
647
|
+
"ui:options": z4.record(z4.string(), z4.unknown()).optional(),
|
|
648
|
+
items: z4.lazy(() => z4.record(z4.string(), uiFieldSchemaSchema2)).optional()
|
|
522
649
|
}).passthrough();
|
|
523
|
-
var contextUiSchema2 =
|
|
524
|
-
var contextDataSchema2 =
|
|
525
|
-
data:
|
|
650
|
+
var contextUiSchema2 = z4.record(z4.string(), uiFieldSchemaSchema2).optional();
|
|
651
|
+
var contextDataSchema2 = z4.object({
|
|
652
|
+
data: z4.record(z4.string(), z4.unknown()),
|
|
526
653
|
ui: contextUiSchema2
|
|
527
654
|
}).optional();
|
|
528
655
|
var TASK_CONTEXT_FORMAT_VERSION2 = 2;
|
|
529
|
-
var taskContextObjectBaseSchema2 =
|
|
530
|
-
app:
|
|
531
|
-
type:
|
|
532
|
-
name:
|
|
533
|
-
description:
|
|
534
|
-
validUntil:
|
|
656
|
+
var taskContextObjectBaseSchema2 = z4.object({
|
|
657
|
+
app: z4.string().min(1).optional(),
|
|
658
|
+
type: z4.string().min(1),
|
|
659
|
+
name: z4.string().min(1),
|
|
660
|
+
description: z4.string().optional(),
|
|
661
|
+
validUntil: z4.string().optional(),
|
|
535
662
|
context: contextDataSchema2,
|
|
536
|
-
contextVersion:
|
|
663
|
+
contextVersion: z4.literal(2).optional(),
|
|
537
664
|
/** @deprecated Use `contextVersion`. Accepted on ingest only. */
|
|
538
|
-
version:
|
|
539
|
-
actions:
|
|
665
|
+
version: z4.literal(2).optional(),
|
|
666
|
+
actions: z4.array(taskActionSchema2).min(1, "At least one action is required")
|
|
540
667
|
});
|
|
541
668
|
function normalizeTaskContextVersion2(data) {
|
|
542
669
|
const { version: legacyVersion, contextVersion, ...rest } = data;
|
|
@@ -552,7 +679,7 @@ function refineContextPublicUrls2(data, ctx) {
|
|
|
552
679
|
const error = validateContextPublicUrls(data.context);
|
|
553
680
|
if (error) {
|
|
554
681
|
ctx.addIssue({
|
|
555
|
-
code:
|
|
682
|
+
code: z4.ZodIssueCode.custom,
|
|
556
683
|
message: error,
|
|
557
684
|
path: ["context"]
|
|
558
685
|
});
|
|
@@ -561,9 +688,9 @@ function refineContextPublicUrls2(data, ctx) {
|
|
|
561
688
|
var taskContextSchema2 = taskContextObjectSchema2.superRefine(
|
|
562
689
|
refineContextPublicUrls2
|
|
563
690
|
);
|
|
564
|
-
var assignToSchema2 =
|
|
565
|
-
users:
|
|
566
|
-
groups:
|
|
691
|
+
var assignToSchema2 = z4.object({
|
|
692
|
+
users: z4.array(z4.string().email()).optional(),
|
|
693
|
+
groups: z4.array(z4.string().min(1)).optional()
|
|
567
694
|
}).refine(
|
|
568
695
|
(data) => {
|
|
569
696
|
const groups = data.groups ?? [];
|
|
@@ -574,7 +701,7 @@ var assignToSchema2 = z2.object({
|
|
|
574
701
|
},
|
|
575
702
|
{ message: 'Cannot combine "all" with other group slugs' }
|
|
576
703
|
);
|
|
577
|
-
var threadUpdateMessageSchema2 =
|
|
704
|
+
var threadUpdateMessageSchema2 = z4.string().min(1).max(500);
|
|
578
705
|
var threadUpdateStatuses2 = [
|
|
579
706
|
"info",
|
|
580
707
|
"queued",
|
|
@@ -584,15 +711,15 @@ var threadUpdateStatuses2 = [
|
|
|
584
711
|
"failed",
|
|
585
712
|
"cancelled"
|
|
586
713
|
];
|
|
587
|
-
var threadUpdateStatusSchema2 =
|
|
588
|
-
var threadUpdateInputSchema2 =
|
|
714
|
+
var threadUpdateStatusSchema2 = z4.enum(threadUpdateStatuses2);
|
|
715
|
+
var threadUpdateInputSchema2 = z4.object({
|
|
589
716
|
message: threadUpdateMessageSchema2,
|
|
590
717
|
status: threadUpdateStatusSchema2.optional()
|
|
591
718
|
});
|
|
592
719
|
var taskPriorities2 = ["low", "normal", "high", "urgent"];
|
|
593
|
-
var taskPrioritySchema2 =
|
|
594
|
-
var agentTelemetrySchema2 =
|
|
595
|
-
version:
|
|
720
|
+
var taskPrioritySchema2 = z4.enum(taskPriorities2);
|
|
721
|
+
var agentTelemetrySchema2 = z4.object({
|
|
722
|
+
version: z4.string().min(1)
|
|
596
723
|
});
|
|
597
724
|
var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
598
725
|
assignTo: assignToSchema2.optional(),
|
|
@@ -600,7 +727,7 @@ var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
|
600
727
|
* Groups related tasks together. When omitted, the server generates one and
|
|
601
728
|
* returns it so the caller can reuse it on later tasks in the same thread.
|
|
602
729
|
*/
|
|
603
|
-
threadId:
|
|
730
|
+
threadId: z4.string().min(1).optional(),
|
|
604
731
|
/**
|
|
605
732
|
* Optional thread priority. When set, applies to the whole thread and
|
|
606
733
|
* overwrites any previous priority. Omit on later tasks to leave unchanged.
|
|
@@ -615,6 +742,65 @@ var createTaskBodySchema2 = taskContextObjectBaseSchema2.extend({
|
|
|
615
742
|
}).transform(normalizeTaskContextVersion2).superRefine(refineContextPublicUrls2);
|
|
616
743
|
var threadUpdateBodySchema = threadUpdateInputSchema2;
|
|
617
744
|
|
|
745
|
+
// ../core/src/handler-retry.ts
|
|
746
|
+
var HANDLER_RETRY_DELAYS_MS = [
|
|
747
|
+
6e4,
|
|
748
|
+
// 1m
|
|
749
|
+
3e5,
|
|
750
|
+
// 5m
|
|
751
|
+
18e5,
|
|
752
|
+
// 30m
|
|
753
|
+
36e5,
|
|
754
|
+
// 1h
|
|
755
|
+
216e5,
|
|
756
|
+
// 6h
|
|
757
|
+
864e5,
|
|
758
|
+
// 24h
|
|
759
|
+
1728e5
|
|
760
|
+
// 48h
|
|
761
|
+
];
|
|
762
|
+
var HANDLER_MAX_ATTEMPTS = HANDLER_RETRY_DELAYS_MS.length + 1;
|
|
763
|
+
|
|
764
|
+
// ../core/src/attribution/index.ts
|
|
765
|
+
import { z as z5 } from "zod";
|
|
766
|
+
|
|
767
|
+
// ../core/src/app-url.ts
|
|
768
|
+
var PRODUCTION_APP_URL = "https://app.robotrock.io";
|
|
769
|
+
var PRODUCTION_API_URL = "https://api.robotrock.io/v1";
|
|
770
|
+
var DEV_API_URL = "http://localhost:4001/v1";
|
|
771
|
+
var APP_SIGNUP_URL = `${PRODUCTION_APP_URL}/sign-up`;
|
|
772
|
+
function normalizeRobotRockApiBaseUrl(baseUrl) {
|
|
773
|
+
const trimmed = baseUrl.trim().replace(/\/+$/, "");
|
|
774
|
+
if (trimmed.endsWith("/v1")) {
|
|
775
|
+
return trimmed;
|
|
776
|
+
}
|
|
777
|
+
return `${trimmed}/v1`;
|
|
778
|
+
}
|
|
779
|
+
function getRobotRockApiBaseUrl() {
|
|
780
|
+
const explicit = process.env.ROBOTROCK_BASE_URL?.trim() || process.env.ROBOTROCK_API_URL?.trim();
|
|
781
|
+
if (explicit) {
|
|
782
|
+
return normalizeRobotRockApiBaseUrl(explicit);
|
|
783
|
+
}
|
|
784
|
+
if (process.env.NODE_ENV === "production") {
|
|
785
|
+
return PRODUCTION_API_URL;
|
|
786
|
+
}
|
|
787
|
+
return DEV_API_URL;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
// ../core/src/attribution/index.ts
|
|
791
|
+
var ATTRIBUTION_COOKIE_MAX_AGE = 60 * 60 * 24 * 90;
|
|
792
|
+
var attributionSchema = z5.object({
|
|
793
|
+
utmSource: z5.string().optional(),
|
|
794
|
+
utmMedium: z5.string().optional(),
|
|
795
|
+
utmCampaign: z5.string().optional(),
|
|
796
|
+
utmContent: z5.string().optional(),
|
|
797
|
+
utmTerm: z5.string().optional(),
|
|
798
|
+
gclid: z5.string().optional(),
|
|
799
|
+
landingUrl: z5.string().optional(),
|
|
800
|
+
referrer: z5.string().optional(),
|
|
801
|
+
capturedAt: z5.number()
|
|
802
|
+
});
|
|
803
|
+
|
|
618
804
|
// src/approval-result.ts
|
|
619
805
|
var TaskTimeoutError = class extends Error {
|
|
620
806
|
constructor(message) {
|
|
@@ -689,77 +875,27 @@ function getErrorMessage(data, fallback) {
|
|
|
689
875
|
return fallback;
|
|
690
876
|
}
|
|
691
877
|
|
|
692
|
-
// ../core/src/handler-retry.ts
|
|
693
|
-
var HANDLER_RETRY_DELAYS_MS = [
|
|
694
|
-
6e4,
|
|
695
|
-
// 1m
|
|
696
|
-
3e5,
|
|
697
|
-
// 5m
|
|
698
|
-
18e5,
|
|
699
|
-
// 30m
|
|
700
|
-
36e5,
|
|
701
|
-
// 1h
|
|
702
|
-
216e5,
|
|
703
|
-
// 6h
|
|
704
|
-
864e5,
|
|
705
|
-
// 24h
|
|
706
|
-
1728e5
|
|
707
|
-
// 48h
|
|
708
|
-
];
|
|
709
|
-
var HANDLER_MAX_ATTEMPTS = HANDLER_RETRY_DELAYS_MS.length + 1;
|
|
710
|
-
|
|
711
|
-
// ../core/src/attribution/index.ts
|
|
712
|
-
import { z as z3 } from "zod";
|
|
713
|
-
|
|
714
|
-
// ../core/src/app-url.ts
|
|
715
|
-
var PRODUCTION_APP_URL = "https://app.robotrock.io";
|
|
716
|
-
var PRODUCTION_API_URL = "https://api.robotrock.io/v1";
|
|
717
|
-
var DEV_API_URL = "http://localhost:4001/v1";
|
|
718
|
-
var APP_SIGNUP_URL = `${PRODUCTION_APP_URL}/sign-up`;
|
|
719
|
-
function normalizeRobotRockApiBaseUrl(baseUrl) {
|
|
720
|
-
const trimmed = baseUrl.trim().replace(/\/+$/, "");
|
|
721
|
-
if (trimmed.endsWith("/v1")) {
|
|
722
|
-
return trimmed;
|
|
723
|
-
}
|
|
724
|
-
return `${trimmed}/v1`;
|
|
725
|
-
}
|
|
726
|
-
function getRobotRockApiBaseUrl() {
|
|
727
|
-
const explicit = process.env.ROBOTROCK_BASE_URL?.trim() || process.env.ROBOTROCK_API_URL?.trim();
|
|
728
|
-
if (explicit) {
|
|
729
|
-
return normalizeRobotRockApiBaseUrl(explicit);
|
|
730
|
-
}
|
|
731
|
-
if (process.env.NODE_ENV === "production") {
|
|
732
|
-
return PRODUCTION_API_URL;
|
|
733
|
-
}
|
|
734
|
-
return DEV_API_URL;
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
// ../core/src/attribution/index.ts
|
|
738
|
-
var ATTRIBUTION_COOKIE_MAX_AGE = 60 * 60 * 24 * 90;
|
|
739
|
-
var attributionSchema = z3.object({
|
|
740
|
-
utmSource: z3.string().optional(),
|
|
741
|
-
utmMedium: z3.string().optional(),
|
|
742
|
-
utmCampaign: z3.string().optional(),
|
|
743
|
-
utmContent: z3.string().optional(),
|
|
744
|
-
utmTerm: z3.string().optional(),
|
|
745
|
-
gclid: z3.string().optional(),
|
|
746
|
-
landingUrl: z3.string().optional(),
|
|
747
|
-
referrer: z3.string().optional(),
|
|
748
|
-
capturedAt: z3.number()
|
|
749
|
-
});
|
|
750
|
-
|
|
751
878
|
// src/auth-headers.ts
|
|
879
|
+
var ROBOTROCK_ACTING_USER_ID_HEADER = "x-robotrock-acting-user-id";
|
|
752
880
|
function buildRobotRockAuthHeaders(auth) {
|
|
753
881
|
if (auth.kind === "apiKey") {
|
|
754
|
-
|
|
882
|
+
const headers2 = {
|
|
755
883
|
"X-Api-Key": auth.apiKey
|
|
756
884
|
};
|
|
885
|
+
if (auth.actingUserId?.trim()) {
|
|
886
|
+
headers2[ROBOTROCK_ACTING_USER_ID_HEADER] = auth.actingUserId.trim();
|
|
887
|
+
}
|
|
888
|
+
return headers2;
|
|
757
889
|
}
|
|
758
|
-
|
|
890
|
+
const headers = {
|
|
759
891
|
Authorization: `Bearer ${auth.token}`,
|
|
760
892
|
"X-RobotRock-Tenant-Slug": auth.tenantSlug,
|
|
761
893
|
"X-RobotRock-Connection-Id": auth.connectionId
|
|
762
894
|
};
|
|
895
|
+
if (auth.actingUserId?.trim()) {
|
|
896
|
+
headers[ROBOTROCK_ACTING_USER_ID_HEADER] = auth.actingUserId.trim();
|
|
897
|
+
}
|
|
898
|
+
return headers;
|
|
763
899
|
}
|
|
764
900
|
function resolveRobotRockAuthConfig(overrides) {
|
|
765
901
|
if (overrides?.agentService) {
|
|
@@ -903,6 +1039,29 @@ function createChatsApi(config) {
|
|
|
903
1039
|
);
|
|
904
1040
|
}
|
|
905
1041
|
},
|
|
1042
|
+
async logToolExecution(input) {
|
|
1043
|
+
const validation = agentChatAuditToolBodySchema.safeParse(input);
|
|
1044
|
+
if (!validation.success) {
|
|
1045
|
+
throw new RobotRockError(
|
|
1046
|
+
`Invalid audit tool input: ${validation.error.issues[0]?.message}`,
|
|
1047
|
+
400,
|
|
1048
|
+
validation.error.issues
|
|
1049
|
+
);
|
|
1050
|
+
}
|
|
1051
|
+
const response = await fetch(`${config.baseUrl}/agent-chats/audit-tool`, {
|
|
1052
|
+
method: "POST",
|
|
1053
|
+
headers: headers(),
|
|
1054
|
+
body: JSON.stringify(validation.data)
|
|
1055
|
+
});
|
|
1056
|
+
if (!response.ok) {
|
|
1057
|
+
const data = await parseResponseBody(response);
|
|
1058
|
+
throw new RobotRockError(
|
|
1059
|
+
getErrorMessage(data, "Failed to log chat tool execution"),
|
|
1060
|
+
response.status,
|
|
1061
|
+
data
|
|
1062
|
+
);
|
|
1063
|
+
}
|
|
1064
|
+
},
|
|
906
1065
|
async linkTask(input) {
|
|
907
1066
|
const validation = agentChatLinkTaskBodySchema.safeParse(input);
|
|
908
1067
|
if (!validation.success) {
|
|
@@ -1005,7 +1164,9 @@ var RobotRock = class {
|
|
|
1005
1164
|
create: (task) => this.createTaskRequest(task),
|
|
1006
1165
|
get: (taskId) => this.getTaskById(taskId),
|
|
1007
1166
|
cancel: (taskId) => this.cancelTaskRequest(taskId),
|
|
1008
|
-
sendUpdate: (input) => this.sendThreadUpdate(input)
|
|
1167
|
+
sendUpdate: (input) => this.sendThreadUpdate(input),
|
|
1168
|
+
list: (input) => this.listTasksRequest(input),
|
|
1169
|
+
search: (input) => this.searchTasksRequest(input)
|
|
1009
1170
|
};
|
|
1010
1171
|
this.chats = createChatsApi({
|
|
1011
1172
|
baseUrl: this.baseUrl,
|
|
@@ -1202,6 +1363,47 @@ var RobotRock = class {
|
|
|
1202
1363
|
);
|
|
1203
1364
|
}
|
|
1204
1365
|
}
|
|
1366
|
+
async listTasksRequest(input) {
|
|
1367
|
+
const params = new URLSearchParams();
|
|
1368
|
+
for (const [key, value] of Object.entries(input ?? {})) {
|
|
1369
|
+
if (value !== void 0 && value !== "") {
|
|
1370
|
+
params.set(key, String(value));
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
const suffix = params.size > 0 ? `?${params.toString()}` : "";
|
|
1374
|
+
const response = await fetch(`${this.baseUrl}/tasks${suffix}`, {
|
|
1375
|
+
method: "GET",
|
|
1376
|
+
headers: this.authHeaders()
|
|
1377
|
+
});
|
|
1378
|
+
const data = await parseResponseBody(response);
|
|
1379
|
+
if (!response.ok) {
|
|
1380
|
+
throw new RobotRockError(
|
|
1381
|
+
getErrorMessage(data, "Failed to list tasks"),
|
|
1382
|
+
response.status,
|
|
1383
|
+
data
|
|
1384
|
+
);
|
|
1385
|
+
}
|
|
1386
|
+
return data;
|
|
1387
|
+
}
|
|
1388
|
+
async searchTasksRequest(input) {
|
|
1389
|
+
const params = new URLSearchParams({ q: input.q });
|
|
1390
|
+
if (input.limit !== void 0) {
|
|
1391
|
+
params.set("limit", String(input.limit));
|
|
1392
|
+
}
|
|
1393
|
+
const response = await fetch(`${this.baseUrl}/tasks/search?${params.toString()}`, {
|
|
1394
|
+
method: "GET",
|
|
1395
|
+
headers: this.authHeaders()
|
|
1396
|
+
});
|
|
1397
|
+
const data = await parseResponseBody(response);
|
|
1398
|
+
if (!response.ok) {
|
|
1399
|
+
throw new RobotRockError(
|
|
1400
|
+
getErrorMessage(data, "Failed to search tasks"),
|
|
1401
|
+
response.status,
|
|
1402
|
+
data
|
|
1403
|
+
);
|
|
1404
|
+
}
|
|
1405
|
+
return data;
|
|
1406
|
+
}
|
|
1205
1407
|
};
|
|
1206
1408
|
function createClient(config) {
|
|
1207
1409
|
return new RobotRock(config);
|