@duvoai/cli 1.7.1 → 1.8.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/bin/duvo.js CHANGED
@@ -85,9 +85,9 @@ import { z as z47 } from "zod";
85
85
  import { z as z48 } from "zod";
86
86
  import { z as z50 } from "zod";
87
87
  import { z as z49 } from "zod";
88
+ import { z as z52 } from "zod";
88
89
  import { z as z51 } from "zod";
89
90
  import { z as z53 } from "zod";
90
- import { z as z52 } from "zod";
91
91
  import { z as z54 } from "zod";
92
92
  import { z as z55 } from "zod";
93
93
  import { z as z56 } from "zod";
@@ -99,14 +99,13 @@ import { z as z61 } from "zod";
99
99
  import { z as z62 } from "zod";
100
100
  import { z as z63 } from "zod";
101
101
  import { z as z64 } from "zod";
102
+ import { z as z66 } from "zod";
102
103
  import { z as z65 } from "zod";
103
104
  import { z as z67 } from "zod";
104
- import { z as z66 } from "zod";
105
105
  import { z as z68 } from "zod";
106
106
  import { z as z69 } from "zod";
107
107
  import { z as z70 } from "zod";
108
108
  import { z as z71 } from "zod";
109
- import { z as z72 } from "zod";
110
109
 
111
110
  // ../node_modules/.pnpm/jsonrepair@3.13.2/node_modules/jsonrepair/lib/esm/utils/JSONRepairError.js
112
111
  var JSONRepairError = class extends Error {
@@ -833,7 +832,6 @@ var PLAN_FEATURE = {
833
832
  CUSTOM_MCP_SERVERS: "custom_mcp_servers",
834
833
  CASE_QUEUE: "case_queue",
835
834
  CLARITY: "clarity",
836
- CLARITY_OVERVIEW: "clarity_overview",
837
835
  PORTFOLIO_INTELLIGENCE: "portfolio_intelligence",
838
836
  SSO: "sso",
839
837
  AUDIT_LOGS: "audit_logs",
@@ -847,7 +845,7 @@ var PLAN_FEATURE = {
847
845
  };
848
846
  var PLAN_VERSIONS = {
849
847
  free_v1: {
850
- name: "Pro Trial Plan",
848
+ name: "Free",
851
849
  basePlan: "free",
852
850
  maxAgents: "unlimited",
853
851
  maxAgentRunsPerMonth: 100,
@@ -875,7 +873,6 @@ var PLAN_VERSIONS = {
875
873
  PLAN_FEATURE.CUSTOM_MCP_SERVERS,
876
874
  PLAN_FEATURE.CASE_QUEUE,
877
875
  PLAN_FEATURE.CLARITY,
878
- PLAN_FEATURE.CLARITY_OVERVIEW,
879
876
  PLAN_FEATURE.PORTFOLIO_INTELLIGENCE,
880
877
  PLAN_FEATURE.LEARNINGS,
881
878
  PLAN_FEATURE.BROWSING_SKILL_RECORDING,
@@ -899,7 +896,6 @@ var PLAN_VERSIONS = {
899
896
  PLAN_FEATURE.CUSTOM_MCP_SERVERS,
900
897
  PLAN_FEATURE.CASE_QUEUE,
901
898
  PLAN_FEATURE.CLARITY,
902
- PLAN_FEATURE.CLARITY_OVERVIEW,
903
899
  PLAN_FEATURE.PORTFOLIO_INTELLIGENCE,
904
900
  PLAN_FEATURE.SSO,
905
901
  PLAN_FEATURE.AUDIT_LOGS,
@@ -928,11 +924,7 @@ var PLAN_VERSIONS = {
928
924
  maxAgentRunsPerMonth: 0,
929
925
  runCountingMode: "monthly",
930
926
  maxConcurrentRuns: 0,
931
- features: [
932
- PLAN_FEATURE.CLARITY,
933
- PLAN_FEATURE.CLARITY_OVERVIEW,
934
- PLAN_FEATURE.PORTFOLIO_INTELLIGENCE
935
- ],
927
+ features: [PLAN_FEATURE.CLARITY, PLAN_FEATURE.PORTFOLIO_INTELLIGENCE],
936
928
  isActive: true,
937
929
  monthlyPriceCents: 0
938
930
  // Custom pricing
@@ -1125,7 +1117,6 @@ var CAPABILITY = {
1125
1117
  ADVANCED_INTEGRATIONS: "advanced_integrations",
1126
1118
  CUSTOM_MCP_SERVERS: "custom_mcp_servers",
1127
1119
  CASE_QUEUE: "case_queue",
1128
- CLARITY_OVERVIEW: "clarity_overview",
1129
1120
  PORTFOLIO_INTELLIGENCE: "portfolio_intelligence",
1130
1121
  SSO: "sso",
1131
1122
  AUDIT_LOGS: "audit_logs",
@@ -1141,7 +1132,6 @@ var CAPABILITY_KEYS = [
1141
1132
  CAPABILITY.ADVANCED_INTEGRATIONS,
1142
1133
  CAPABILITY.CUSTOM_MCP_SERVERS,
1143
1134
  CAPABILITY.CASE_QUEUE,
1144
- CAPABILITY.CLARITY_OVERVIEW,
1145
1135
  CAPABILITY.PORTFOLIO_INTELLIGENCE,
1146
1136
  CAPABILITY.SSO,
1147
1137
  CAPABILITY.AUDIT_LOGS,
@@ -1167,7 +1157,6 @@ var CAPABILITY_PRODUCT = {
1167
1157
  [CAPABILITY.ADVANCED_INTEGRATIONS]: PRODUCT.AUTOMATION,
1168
1158
  [CAPABILITY.CUSTOM_MCP_SERVERS]: PRODUCT.AUTOMATION,
1169
1159
  [CAPABILITY.CASE_QUEUE]: PRODUCT.AUTOMATION,
1170
- [CAPABILITY.CLARITY_OVERVIEW]: PRODUCT.CLARITY,
1171
1160
  [CAPABILITY.PORTFOLIO_INTELLIGENCE]: PRODUCT.CLARITY,
1172
1161
  [CAPABILITY.SSO]: PRODUCT.PLATFORM,
1173
1162
  [CAPABILITY.AUDIT_LOGS]: PRODUCT.PLATFORM,
@@ -1183,7 +1172,6 @@ var CAPABILITY_FEATURE_COMPATIBILITY = {
1183
1172
  [CAPABILITY.ADVANCED_INTEGRATIONS]: PLAN_FEATURE.ADVANCED_INTEGRATIONS,
1184
1173
  [CAPABILITY.CUSTOM_MCP_SERVERS]: PLAN_FEATURE.CUSTOM_MCP_SERVERS,
1185
1174
  [CAPABILITY.CASE_QUEUE]: PLAN_FEATURE.CASE_QUEUE,
1186
- [CAPABILITY.CLARITY_OVERVIEW]: PLAN_FEATURE.CLARITY_OVERVIEW,
1187
1175
  [CAPABILITY.PORTFOLIO_INTELLIGENCE]: PLAN_FEATURE.PORTFOLIO_INTELLIGENCE,
1188
1176
  [CAPABILITY.SSO]: PLAN_FEATURE.SSO,
1189
1177
  [CAPABILITY.AUDIT_LOGS]: PLAN_FEATURE.AUDIT_LOGS,
@@ -1231,7 +1219,6 @@ var PLAN_PRESET_ENTITLEMENTS = {
1231
1219
  CAPABILITY.ADVANCED_INTEGRATIONS,
1232
1220
  CAPABILITY.CUSTOM_MCP_SERVERS,
1233
1221
  CAPABILITY.CASE_QUEUE,
1234
- CAPABILITY.CLARITY_OVERVIEW,
1235
1222
  CAPABILITY.PORTFOLIO_INTELLIGENCE,
1236
1223
  CAPABILITY.LEARNINGS,
1237
1224
  CAPABILITY.BROWSING_SKILL_RECORDING,
@@ -1247,7 +1234,6 @@ var PLAN_PRESET_ENTITLEMENTS = {
1247
1234
  CAPABILITY.ADVANCED_INTEGRATIONS,
1248
1235
  CAPABILITY.CUSTOM_MCP_SERVERS,
1249
1236
  CAPABILITY.CASE_QUEUE,
1250
- CAPABILITY.CLARITY_OVERVIEW,
1251
1237
  CAPABILITY.PORTFOLIO_INTELLIGENCE,
1252
1238
  CAPABILITY.SSO,
1253
1239
  CAPABILITY.AUDIT_LOGS,
@@ -1262,10 +1248,7 @@ var PLAN_PRESET_ENTITLEMENTS = {
1262
1248
  },
1263
1249
  clarity_v1: {
1264
1250
  products: [PRODUCT.CLARITY],
1265
- capabilities: [
1266
- CAPABILITY.CLARITY_OVERVIEW,
1267
- CAPABILITY.PORTFOLIO_INTELLIGENCE
1268
- ],
1251
+ capabilities: [CAPABILITY.PORTFOLIO_INTELLIGENCE],
1269
1252
  limits: getLimitsFromPlan(PLAN_VERSIONS.clarity_v1)
1270
1253
  }
1271
1254
  };
@@ -1481,7 +1464,6 @@ var PLAN_FEATURE_LABELS = {
1481
1464
  [PLAN_FEATURE.CUSTOM_MCP_SERVERS]: "Custom MCP Servers",
1482
1465
  [PLAN_FEATURE.CASE_QUEUE]: "Queue",
1483
1466
  [PLAN_FEATURE.CLARITY]: "Clarity",
1484
- [PLAN_FEATURE.CLARITY_OVERVIEW]: "Clarity Overview",
1485
1467
  [PLAN_FEATURE.PORTFOLIO_INTELLIGENCE]: "Portfolio Intelligence",
1486
1468
  [PLAN_FEATURE.SSO]: "Single Sign-On (SSO)",
1487
1469
  [PLAN_FEATURE.AUDIT_LOGS]: "Audit Logs",
@@ -1586,9 +1568,18 @@ var duvoSystemSessionStartedMessageSchema = duvoBaseSystemMessageSchema.and(
1586
1568
  type: z8.literal("session_started")
1587
1569
  })
1588
1570
  );
1571
+ var sessionPhaseTimingsSchema = z8.object({
1572
+ setupMs: z8.number().optional(),
1573
+ preflightMs: z8.number().optional(),
1574
+ warmupMs: z8.number().nullable().optional(),
1575
+ warmupOutcome: z8.enum(["warmed", "skipped", "failed"]).optional(),
1576
+ modelTtftMs: z8.number().optional(),
1577
+ firstTokenMs: z8.number().optional()
1578
+ });
1589
1579
  var duvoSystemSessionCompletedMessageSchema = duvoBaseSystemMessageSchema.and(
1590
1580
  z8.object({
1591
- type: z8.literal("session_completed")
1581
+ type: z8.literal("session_completed"),
1582
+ phases: sessionPhaseTimingsSchema.optional()
1592
1583
  })
1593
1584
  );
1594
1585
  var duvoSystemSessionInterruptedMessageSchema = duvoBaseSystemMessageSchema.and(
@@ -2620,9 +2611,10 @@ var CLARITY_CAPTURE_TYPES = [
2620
2611
  "video",
2621
2612
  "interview",
2622
2613
  "document",
2623
- "screenshare"
2614
+ "screenshare",
2615
+ "meeting"
2624
2616
  ];
2625
- var clarityCaptureTypeSchema = z13.enum(CLARITY_CAPTURE_TYPES);
2617
+ var clarityCaptureTypeSchema = extensibleEnum(CLARITY_CAPTURE_TYPES);
2626
2618
  var conversationMessageSchema = z13.object({
2627
2619
  source: z13.enum(["ai", "user", "interviewer"]),
2628
2620
  message: z13.string().min(1),
@@ -3064,6 +3056,37 @@ var initiateClarityPhoneInterviewResponseSchema = z13.object({
3064
3056
  captureId: z13.string().uuid(),
3065
3057
  status: z13.literal("calling")
3066
3058
  });
3059
+ var MEETING_PLATFORM_HOST_PATTERNS = [
3060
+ { platform: "google_meet", pattern: /(^|\.)meet\.google\.com$/ },
3061
+ {
3062
+ platform: "microsoft_teams",
3063
+ pattern: /(^|\.)(teams\.microsoft\.com|teams\.live\.com)$/
3064
+ },
3065
+ { platform: "zoom", pattern: /(^|\.)zoom\.(us|com)$/ },
3066
+ { platform: "webex", pattern: /(^|\.)webex\.com$/ }
3067
+ ];
3068
+ function detectMeetingPlatform(meetingUrl) {
3069
+ let host;
3070
+ try {
3071
+ host = new URL(meetingUrl).hostname.toLowerCase();
3072
+ } catch {
3073
+ return null;
3074
+ }
3075
+ const match = MEETING_PLATFORM_HOST_PATTERNS.find(
3076
+ ({ pattern }) => pattern.test(host)
3077
+ );
3078
+ return match?.platform ?? null;
3079
+ }
3080
+ __name(detectMeetingPlatform, "detectMeetingPlatform");
3081
+ __name2(detectMeetingPlatform, "detectMeetingPlatform");
3082
+ var inviteClarityNotetakerSchema = z13.object({
3083
+ meetingUrl: z13.url().max(2048),
3084
+ extraCaptureRequestId: z13.guid().optional()
3085
+ });
3086
+ var inviteClarityNotetakerResponseSchema = z13.object({
3087
+ captureId: z13.guid(),
3088
+ status: z13.literal("pending")
3089
+ });
3067
3090
  var publicClarityProcessSchema = z13.object({
3068
3091
  id: z13.guid(),
3069
3092
  name: z13.string(),
@@ -3861,6 +3884,11 @@ var clarityVersionStatusChangedEventDataSchema = z17.object({
3861
3884
  versionId: z17.guid(),
3862
3885
  status: clarityV2SnapshotStatusSchema
3863
3886
  });
3887
+ var clarityCaptureTranscriptReadyEventDataSchema = z17.object({
3888
+ processId: z17.guid(),
3889
+ captureId: z17.guid(),
3890
+ status: clarityCaptureStatusSchema
3891
+ });
3864
3892
  var clarityProcessRoomPayloadSchema = z17.object({
3865
3893
  processId: z17.guid()
3866
3894
  });
@@ -4040,7 +4068,10 @@ var clarityTransformationProposalSnapshotKindDetailResponseSchema = z18.object({
4040
4068
  var saveClarityProcessSnapshotBodySchema = z18.object({
4041
4069
  steps: z18.array(postprocessClarityStepBaseSchema).min(1).superRefine(refineStepGraph),
4042
4070
  baselineSnapshotId: z18.guid(),
4043
- clarityCurrentProcessId: z18.guid().optional()
4071
+ clarityCurrentProcessId: z18.guid().optional(),
4072
+ ...swotAnalysisAgentCurrentProcessSchema.shape,
4073
+ ...processSummaryAgentCurrentProcessSchema.shape,
4074
+ ...projectedImpactAgentTransformationProposalSchema.shape
4044
4075
  });
4045
4076
  var saveClarityProcessSnapshotResponseSchema = clarityProcessSnapshotDetailResponseSchema;
4046
4077
  var clarityV2ProcessReadModelSchema = z18.object({
@@ -4309,6 +4340,32 @@ function clarityStepsToEaseDocument(steps) {
4309
4340
  }
4310
4341
  __name(clarityStepsToEaseDocument, "clarityStepsToEaseDocument");
4311
4342
  __name2(clarityStepsToEaseDocument, "clarityStepsToEaseDocument");
4343
+ function pickAllowedRoots(value) {
4344
+ if (!isJsonObject(value)) {
4345
+ return {};
4346
+ }
4347
+ const roots = {};
4348
+ if (value.summary !== void 0) {
4349
+ roots.summary = value.summary;
4350
+ }
4351
+ if (value.swot !== void 0) {
4352
+ roots.swot = value.swot;
4353
+ }
4354
+ if (value.projectedImpact !== void 0) {
4355
+ roots.projectedImpact = value.projectedImpact;
4356
+ }
4357
+ return roots;
4358
+ }
4359
+ __name(pickAllowedRoots, "pickAllowedRoots");
4360
+ __name2(pickAllowedRoots, "pickAllowedRoots");
4361
+ function clarityDataToEaseDocument(data) {
4362
+ return {
4363
+ ...pickAllowedRoots(data),
4364
+ ...clarityStepsToEaseDocument(data.steps)
4365
+ };
4366
+ }
4367
+ __name(clarityDataToEaseDocument, "clarityDataToEaseDocument");
4368
+ __name2(clarityDataToEaseDocument, "clarityDataToEaseDocument");
4312
4369
  function assertEaseDocument(value) {
4313
4370
  if (!isJsonObject(value)) {
4314
4371
  throw new Error("EASE document must be an object");
@@ -4366,6 +4423,7 @@ function assertEaseDocument(value) {
4366
4423
  }
4367
4424
  }
4368
4425
  return {
4426
+ ...pickAllowedRoots(value),
4369
4427
  stepOrder,
4370
4428
  stepsById: Object.fromEntries(stepEntries)
4371
4429
  };
@@ -4375,6 +4433,7 @@ __name2(assertEaseDocument, "assertEaseDocument");
4375
4433
  function materializeEaseDocument(easeDocument) {
4376
4434
  const ease = assertEaseDocument(easeDocument);
4377
4435
  return {
4436
+ ...pickAllowedRoots(ease),
4378
4437
  steps: ease.stepOrder.map((stepId) => ({
4379
4438
  id: stepId,
4380
4439
  ...ease.stepsById[stepId]
@@ -4383,32 +4442,125 @@ function materializeEaseDocument(easeDocument) {
4383
4442
  }
4384
4443
  __name(materializeEaseDocument, "materializeEaseDocument");
4385
4444
  __name2(materializeEaseDocument, "materializeEaseDocument");
4445
+ function clarityOutputToEaseDocument(output) {
4446
+ return {
4447
+ ...pickAllowedRoots(output),
4448
+ ...clarityStepsToEaseDocument(output.steps)
4449
+ };
4450
+ }
4451
+ __name(clarityOutputToEaseDocument, "clarityOutputToEaseDocument");
4452
+ __name2(clarityOutputToEaseDocument, "clarityOutputToEaseDocument");
4386
4453
  function mergeCurrentProcessPostprocessSlices(previous, steps) {
4387
4454
  return { ...previous, steps: mergeSteps(previous.steps, steps) };
4388
4455
  }
4389
4456
  __name(mergeCurrentProcessPostprocessSlices, "mergeCurrentProcessPostprocessSlices");
4390
4457
  __name2(mergeCurrentProcessPostprocessSlices, "mergeCurrentProcessPostprocessSlices");
4458
+ function stripProposalOnlyStepSlices(steps) {
4459
+ return steps.map((step) => {
4460
+ if (typeof step !== "object" || step === null) {
4461
+ return step;
4462
+ }
4463
+ return Object.fromEntries(
4464
+ Object.entries(step).filter(
4465
+ ([key]) => key !== "readiness" && key !== "readinessRationale" && key !== "extraCaptureNeeded"
4466
+ )
4467
+ );
4468
+ });
4469
+ }
4470
+ __name(stripProposalOnlyStepSlices, "stripProposalOnlyStepSlices");
4471
+ __name2(stripProposalOnlyStepSlices, "stripProposalOnlyStepSlices");
4391
4472
  function mergeTransformationProposalPostprocessSlices(previous, steps) {
4392
4473
  return { ...previous, steps: mergeSteps(previous.steps, steps) };
4393
4474
  }
4394
4475
  __name(mergeTransformationProposalPostprocessSlices, "mergeTransformationProposalPostprocessSlices");
4395
4476
  __name2(mergeTransformationProposalPostprocessSlices, "mergeTransformationProposalPostprocessSlices");
4396
- function createBaseCurrentProcessData(previous, steps) {
4477
+ function resolveEditedRoot(edited, previous, pending = false) {
4478
+ if (edited !== void 0) {
4479
+ return edited;
4480
+ }
4481
+ return pending ? void 0 : previous;
4482
+ }
4483
+ __name(resolveEditedRoot, "resolveEditedRoot");
4484
+ __name2(resolveEditedRoot, "resolveEditedRoot");
4485
+ function materializeCurrentProcessEdit(previous, easeOutput, options = {}) {
4397
4486
  return postprocessClarityCurrentProcessDataSchema.parse({
4398
- version: previous.version,
4399
- steps: steps.map((step) => clarityStepBaseSchema.parse(step))
4487
+ ...previous,
4488
+ summary: resolveEditedRoot(
4489
+ easeOutput.summary,
4490
+ previous.summary,
4491
+ options.pendingSummary
4492
+ ),
4493
+ swot: resolveEditedRoot(
4494
+ easeOutput.swot,
4495
+ previous.swot,
4496
+ options.pendingSwot
4497
+ ),
4498
+ steps: stripProposalOnlyStepSlices(
4499
+ coerceStepsOutput([...easeOutput.steps])
4500
+ )
4400
4501
  });
4401
4502
  }
4402
- __name(createBaseCurrentProcessData, "createBaseCurrentProcessData");
4403
- __name2(createBaseCurrentProcessData, "createBaseCurrentProcessData");
4404
- function createBaseTransformationProposalData(previous, steps) {
4503
+ __name(materializeCurrentProcessEdit, "materializeCurrentProcessEdit");
4504
+ __name2(materializeCurrentProcessEdit, "materializeCurrentProcessEdit");
4505
+ function materializeProposalEdit(previous, easeOutput, options = {}) {
4506
+ const steps = coerceStepsOutput([
4507
+ ...easeOutput.steps
4508
+ ]);
4405
4509
  return postprocessClarityTransformationProposalDataSchema.parse({
4406
- version: previous.version,
4407
- steps: steps.map((step) => clarityStepBaseSchema.parse(step))
4510
+ ...previous,
4511
+ summary: resolveEditedRoot(
4512
+ easeOutput.summary,
4513
+ previous.summary,
4514
+ options.pendingSummary
4515
+ ),
4516
+ projectedImpact: resolveEditedRoot(
4517
+ easeOutput.projectedImpact,
4518
+ previous.projectedImpact,
4519
+ options.pendingProjectedImpact
4520
+ ),
4521
+ steps: options.preserveVolatileSlices ? preserveProposalVolatileSlices(previous.steps, steps) : clearProposalVolatileSlices(steps)
4522
+ });
4523
+ }
4524
+ __name(materializeProposalEdit, "materializeProposalEdit");
4525
+ __name2(materializeProposalEdit, "materializeProposalEdit");
4526
+ function clearProposalVolatileSlices(steps) {
4527
+ return steps.map((step) => {
4528
+ if (typeof step !== "object" || step === null) {
4529
+ return step;
4530
+ }
4531
+ const proposalStep = step;
4532
+ const {
4533
+ readiness: _readiness,
4534
+ readinessRationale: _readinessRationale,
4535
+ extraCaptureNeeded: _extraCaptureNeeded,
4536
+ ...baseStep
4537
+ } = proposalStep;
4538
+ return baseStep;
4539
+ });
4540
+ }
4541
+ __name(clearProposalVolatileSlices, "clearProposalVolatileSlices");
4542
+ __name2(clearProposalVolatileSlices, "clearProposalVolatileSlices");
4543
+ function preserveProposalVolatileSlices(previousSteps, steps) {
4544
+ const previousById = new Map(previousSteps.map((step) => [step.id, step]));
4545
+ return clearProposalVolatileSlices(steps).map((step) => {
4546
+ if (typeof step !== "object" || step === null || !("id" in step)) {
4547
+ return step;
4548
+ }
4549
+ const stepId = typeof step.id === "string" ? step.id : null;
4550
+ const prev = stepId === null ? void 0 : previousById.get(stepId);
4551
+ if (!prev) {
4552
+ return step;
4553
+ }
4554
+ return {
4555
+ ...step,
4556
+ ...prev.readiness === void 0 ? {} : { readiness: prev.readiness },
4557
+ ...prev.readinessRationale === void 0 ? {} : { readinessRationale: prev.readinessRationale },
4558
+ ...prev.extraCaptureNeeded === void 0 ? {} : { extraCaptureNeeded: prev.extraCaptureNeeded }
4559
+ };
4408
4560
  });
4409
4561
  }
4410
- __name(createBaseTransformationProposalData, "createBaseTransformationProposalData");
4411
- __name2(createBaseTransformationProposalData, "createBaseTransformationProposalData");
4562
+ __name(preserveProposalVolatileSlices, "preserveProposalVolatileSlices");
4563
+ __name2(preserveProposalVolatileSlices, "preserveProposalVolatileSlices");
4412
4564
  function mergeSteps(previousSteps, steps) {
4413
4565
  const previousById = new Map(previousSteps.map((step) => [step.id, step]));
4414
4566
  return steps.map((step) => {
@@ -4857,6 +5009,7 @@ var INTEGRATION_SLUGS = [
4857
5009
  "workday",
4858
5010
  "coupa",
4859
5011
  "signavio",
5012
+ "sap-ecc",
4860
5013
  "msteams",
4861
5014
  "human-in-the-loop",
4862
5015
  "email-attachments-reader",
@@ -5239,11 +5392,15 @@ var artifactMessageSchema = z24.object({
5239
5392
  // rows, whose visible text lives in `content`.
5240
5393
  message: z24.unknown().nullable().optional()
5241
5394
  });
5395
+ var artifactListScopeSchema = z24.enum(["created", "shared"]);
5242
5396
  var artifactListResponseSchema = z24.object({
5243
- created: z24.array(artifactSchema),
5244
- sharedWithMe: z24.array(artifactSchema)
5397
+ artifacts: z24.array(artifactSchema),
5398
+ total: z24.number(),
5399
+ limit: z24.number(),
5400
+ offset: z24.number()
5245
5401
  });
5246
- var artifactDetailResponseSchema = artifactSchema.extend({
5402
+ var artifactDetailResponseSchema = z24.object({
5403
+ artifact: artifactSchema,
5247
5404
  is_creator: z24.boolean(),
5248
5405
  messages: z24.array(artifactMessageSchema)
5249
5406
  });
@@ -5278,8 +5435,8 @@ var createArtifactBodySchema = z24.object({
5278
5435
  message: z24.string().min(1).max(1e4)
5279
5436
  });
5280
5437
  var createArtifactResponseSchema = z24.object({
5281
- artifactId: z24.guid(),
5282
- userMessage: artifactMessageSchema
5438
+ artifact_id: z24.guid(),
5439
+ user_message: artifactMessageSchema
5283
5440
  });
5284
5441
  var pulseSelectedElementSchema = z24.object({
5285
5442
  // Best-effort CSS path to the element (id-anchored where possible).
@@ -5302,8 +5459,7 @@ var sendArtifactMessageBodySchema = z24.object({
5302
5459
  selected_element: pulseSelectedElementSchema.optional()
5303
5460
  });
5304
5461
  var sendArtifactMessageResponseSchema = z24.object({
5305
- ok: z24.literal(true),
5306
- userMessage: artifactMessageSchema
5462
+ user_message: artifactMessageSchema
5307
5463
  });
5308
5464
  var answerArtifactQuestionBodySchema = z24.object({
5309
5465
  toolCallId: z24.string().min(1),
@@ -5318,7 +5474,7 @@ var updateArtifactBodySchema = z24.object({
5318
5474
  title: z24.string().trim().min(1).max(120)
5319
5475
  }).strict();
5320
5476
  var deleteArtifactResponseSchema = z24.object({
5321
- ok: z24.literal(true)
5477
+ success: z24.literal(true)
5322
5478
  });
5323
5479
  var browserReplayScreenshotSchema = z25.object({
5324
5480
  id: z25.guid(),
@@ -5388,7 +5544,8 @@ var startInterviewCaptureBodySchema = z26.object({
5388
5544
  type: clarityCaptureSubTypeSchema,
5389
5545
  captureId: z26.guid().optional(),
5390
5546
  language: clarityInterviewLanguageSchema.optional(),
5391
- extraCaptureRequestId: z26.guid().optional()
5547
+ extraCaptureRequestId: z26.guid().optional(),
5548
+ processNodeId: z26.guid().optional()
5392
5549
  });
5393
5550
  var startInterviewCaptureResponseSchema = clarityCaptureSchema.extend({
5394
5551
  createdAt: z26.string(),
@@ -5424,6 +5581,77 @@ var startInterviewCaptureResponseSchema = clarityCaptureSchema.extend({
5424
5581
  */
5425
5582
  extraCaptureGuidance: interviewExtraCaptureGuidanceSchema.nullable()
5426
5583
  });
5584
+ var CLARITY_INTERVIEW_STATUSES = [
5585
+ "pending",
5586
+ "recording",
5587
+ "complete",
5588
+ "failed"
5589
+ ];
5590
+ var clarityInterviewStatusSchema = z26.enum(CLARITY_INTERVIEW_STATUSES);
5591
+ var CLARITY_INTERVIEW_SCOPES = ["team", "organization"];
5592
+ var clarityInterviewScopeSchema = z26.enum(CLARITY_INTERVIEW_SCOPES);
5593
+ var teamInterviewSummarySchema = z26.object({
5594
+ id: z26.guid(),
5595
+ userId: z26.guid(),
5596
+ title: z26.string(),
5597
+ status: clarityInterviewStatusSchema,
5598
+ createdAt: z26.string(),
5599
+ updatedAt: z26.string()
5600
+ });
5601
+ var organizationInterviewSummarySchema = teamInterviewSummarySchema.extend({
5602
+ scope: clarityInterviewScopeSchema,
5603
+ teamId: z26.guid().nullable(),
5604
+ teamName: z26.string().nullable(),
5605
+ organizationId: z26.guid()
5606
+ });
5607
+ var clarityInterviewSchema = z26.object({
5608
+ id: z26.guid(),
5609
+ scope: clarityInterviewScopeSchema,
5610
+ teamId: z26.guid().nullable(),
5611
+ organizationId: z26.guid().nullable(),
5612
+ processId: z26.guid().nullable(),
5613
+ processNodeId: z26.guid().nullable(),
5614
+ userId: z26.guid(),
5615
+ title: z26.string(),
5616
+ status: clarityInterviewStatusSchema,
5617
+ recordingUrl: z26.string().nullable(),
5618
+ transcript: z26.array(conversationMessageSchema).nullable(),
5619
+ createdAt: z26.string(),
5620
+ updatedAt: z26.string()
5621
+ });
5622
+ var teamInterviewSchema = clarityInterviewSchema.extend({
5623
+ scope: z26.literal("team"),
5624
+ teamId: z26.guid()
5625
+ });
5626
+ var organizationInterviewSchema = clarityInterviewSchema.extend({
5627
+ scope: z26.literal("organization"),
5628
+ teamId: z26.null(),
5629
+ organizationId: z26.guid()
5630
+ });
5631
+ var listTeamInterviewResponseSchema = z26.object({
5632
+ interviews: z26.array(teamInterviewSummarySchema)
5633
+ });
5634
+ var listOrganizationInterviewResponseSchema = z26.object({
5635
+ interviews: z26.array(organizationInterviewSummarySchema)
5636
+ });
5637
+ var startTeamInterviewResponseSchema = teamInterviewSchema.extend({
5638
+ openaiToken: z26.string(),
5639
+ openaiTokenExpiresAt: z26.string(),
5640
+ provider: clarityInterviewVoiceProviderSchema,
5641
+ providerConfig: voiceProviderConfigSchema,
5642
+ instructions: z26.string().min(1),
5643
+ processGuidance: z26.null(),
5644
+ extraCaptureGuidance: z26.null()
5645
+ });
5646
+ var startOrganizationInterviewResponseSchema = organizationInterviewSchema.extend({
5647
+ openaiToken: z26.string(),
5648
+ openaiTokenExpiresAt: z26.string(),
5649
+ provider: clarityInterviewVoiceProviderSchema,
5650
+ providerConfig: voiceProviderConfigSchema,
5651
+ instructions: z26.string().min(1),
5652
+ processGuidance: z26.null(),
5653
+ extraCaptureGuidance: z26.null()
5654
+ });
5427
5655
  var MAX_INTERVIEW_FRAMES_PER_CAPTURE = 300;
5428
5656
  var interviewUploadUrlsBodySchema = z26.object({
5429
5657
  type: clarityCaptureSubTypeSchema,
@@ -5759,6 +5987,11 @@ var adminMemoryStoreSummarySchema = z32.object({
5759
5987
  totalSizeBytes: z32.number().int().nonnegative(),
5760
5988
  /** `memory_file_version.written_by` of the store's most recent write. */
5761
5989
  lastWriter: z32.string().nullable(),
5990
+ /** `agent_run_id` of that most recent write, when it came from an agent run
5991
+ * (the `assignment` writer). Null for non-run writers (user, meta-agent) or
5992
+ * when no run id was recorded. Lets the admin UI link the last writer to its
5993
+ * originating run (`/admin/run/:id`). */
5994
+ lastWriterAgentRunId: z32.guid().nullable(),
5762
5995
  lastUpdatedAt: z32.string(),
5763
5996
  archivedAt: z32.string().nullable(),
5764
5997
  deletedAt: z32.string().nullable(),
@@ -7435,323 +7668,75 @@ var batchQueueAgentsResponseSchema = z50.object({
7435
7668
  })
7436
7669
  )
7437
7670
  });
7438
- var CLARITY_OVERVIEW_STATUSES = [
7439
- "draft",
7440
- "collecting",
7441
- "generating",
7442
- "review",
7443
- "complete",
7444
- "generation_failed"
7445
- ];
7446
- var clarityOverviewStatusSchema = z51.enum(CLARITY_OVERVIEW_STATUSES);
7447
- var CLARITY_OVERVIEW_CAPTURE_STATUSES = [
7448
- "pending",
7449
- "recording",
7450
- "processing",
7451
- "complete",
7452
- "failed"
7453
- ];
7454
- var CLARITY_OVERVIEW_CAPTURE_TYPES = [
7455
- "video",
7456
- "interview",
7457
- "document",
7458
- "screenshare"
7459
- ];
7460
- var clarityOverviewCaptureSchema = z51.object({
7461
- id: z51.guid(),
7462
- overviewId: z51.guid(),
7463
- userId: z51.guid(),
7464
- userName: z51.string().optional(),
7465
- type: z51.enum(CLARITY_OVERVIEW_CAPTURE_TYPES),
7466
- videoUrl: z51.string().nullable(),
7467
- videoTranscript: z51.string().nullable(),
7468
- transcript: z51.array(conversationMessageSchema).nullable(),
7469
- status: z51.enum(CLARITY_OVERVIEW_CAPTURE_STATUSES),
7470
- createdAt: z51.coerce.date(),
7471
- updatedAt: z51.coerce.date()
7472
- });
7473
- var OverviewKpi = z51.object({
7474
- id: z51.guid(),
7475
- name: z51.string(),
7476
- value: z51.string(),
7477
- description: z51.string()
7478
- });
7479
- var OverviewHeadcount = z51.object({
7480
- approximate: z51.int().nonnegative(),
7481
- notes: z51.string().optional()
7482
- });
7483
- var OverviewTeamMember = z51.object({
7484
- id: z51.guid(),
7485
- name: z51.string(),
7486
- role: z51.string()
7487
- });
7488
- var OverviewTeam = z51.object({
7489
- id: z51.guid(),
7490
- name: z51.string(),
7491
- leadId: z51.guid().nullable(),
7492
- description: z51.string(),
7493
- memberCount: z51.int().nonnegative().optional(),
7494
- people: z51.array(OverviewTeamMember)
7671
+ var createTeamInviteLinkRequestSchema = z51.object({
7672
+ frontendUrl: z51.url()
7495
7673
  });
7496
- var OverviewInsight = z51.object({
7497
- id: z51.guid(),
7498
- title: z51.string(),
7499
- description: z51.string()
7674
+ var getTeamInviteLinkQuerySchema = z51.object({
7675
+ frontendUrl: z51.url()
7500
7676
  });
7501
- var OverviewHelpNeeded = z51.object({
7677
+ var teamInviteLinkCreatorSchema = z51.object({
7502
7678
  id: z51.guid(),
7503
- title: z51.string(),
7504
- description: z51.string(),
7505
- fromWhom: z51.string()
7506
- });
7507
- var DepartmentOverview = z51.object({
7508
- mission: z51.string().nullable(),
7509
- kpis: z51.array(OverviewKpi),
7510
- headcount: OverviewHeadcount.nullable(),
7511
- teams: z51.array(OverviewTeam),
7512
- worksWell: z51.array(OverviewInsight),
7513
- doesNotWorkWell: z51.array(OverviewInsight),
7514
- needsHelp: z51.array(OverviewHelpNeeded)
7515
- });
7516
- var DocumentationStatus = z51.enum(["documented", "draft", "not_started"]);
7517
- var VulnerabilitySeverity = z51.enum(["warning", "critical"]);
7518
- var AccountabilityTag = z51.enum([
7519
- "owner",
7520
- // Decision-maker, shown with "owner" badge
7521
- "spof",
7522
- // Single point of failure — highlighted as risk
7523
- "external",
7524
- // Outside the org (e.g. Supplier)
7525
- "notified"
7526
- // Receives updates but doesn't act (e.g. Supply Chain)
7527
- ]);
7528
- var SystemRef = z51.object({
7529
- /** Stable identifier for the system, used for deduplication across processes */
7530
- id: z51.string(),
7531
- /** Display name as it appears in the UI: "Product Pantry", "Rohlik Admin", "Google Sheets" */
7532
- name: z51.string(),
7533
- /** URL to the system's icon/logo. Null if we don't have one — FE shows a generic fallback */
7534
- iconUrl: z51.url().nullable()
7535
- });
7536
- var PersonRole = z51.object({
7537
- id: z51.guid(),
7538
- /** Person's display name: "Tereza", "Kristyna" */
7539
- name: z51.string(),
7540
- /**
7541
- * Their role title within this process, not their org-wide job title.
7542
- * e.g. "Listing Specialist", "Senior Category Manager"
7543
- */
7544
- role: z51.string(),
7545
- /**
7546
- * Accountability tags for this person within THIS process.
7547
- * Same person can be "owner" in one process and have no tags in another.
7548
- */
7549
- tags: z51.array(AccountabilityTag).default([]),
7550
- /**
7551
- * Full-time equivalent headcount allocated to this role.
7552
- * Optional — only set when the capture interview surfaced it.
7553
- * e.g. 2.25 FTE for a Listing Specialist team of 3 part-timers.
7554
- */
7555
- fte: z51.number().positive().optional()
7679
+ name: z51.string().nullable(),
7680
+ email: z51.email()
7556
7681
  });
7557
- var Vulnerability = z51.object({
7682
+ var teamInviteLinkSchema = z51.object({
7558
7683
  id: z51.guid(),
7559
- /** Warning = operational concern, Critical = structural/blocking risk */
7560
- severity: VulnerabilitySeverity,
7561
- /**
7562
- * Human-readable description surfaced from the interview.
7563
- * e.g. "Tereza alone covers fresh listing"
7564
- * e.g. "75-95% of obvious approvals still needs human"
7565
- */
7566
- description: z51.string(),
7567
- /**
7568
- * IDs of people directly tied to this vulnerability.
7569
- * Enables FE to highlight affected people in the detail view.
7570
- * e.g. SPOF vulnerability → [terezaId]
7571
- */
7572
- affectedPersonIds: z51.array(z51.string()).optional()
7684
+ url: z51.url().optional(),
7685
+ createdAt: z51.string(),
7686
+ createdBy: teamInviteLinkCreatorSchema
7573
7687
  });
7574
- var FrictionSignal = z51.object({
7575
- id: z51.guid(),
7576
- /**
7577
- * Operational pain point captured during interview.
7578
- * e.g. "40 unresolved bugs, periodic outages"
7579
- * These feed into the maturity score (future iteration) as penalties.
7580
- */
7581
- description: z51.string(),
7582
- /** Systems where this friction manifests — used for cross-referencing */
7583
- relatedSystemIds: z51.array(z51.string()).optional()
7688
+ var getTeamInviteLinkResponseSchema = z51.object({
7689
+ hasLink: z51.boolean(),
7690
+ link: teamInviteLinkSchema.optional()
7584
7691
  });
7585
- var Process = z51.object({
7586
- id: z51.guid(),
7587
- /** Process name as displayed in card headers: "Product Listing", "Price Proposals" */
7588
- name: z51.string(),
7589
- /**
7590
- * Tracks where this process is in the Clarity documentation pipeline.
7591
- * - "documented": fully captured and reviewed
7592
- * - "draft": interview done, output not yet validated
7593
- * - "not_started": identified but not yet interviewed
7594
- */
7595
- documentationStatus: DocumentationStatus,
7596
- clarityProcessId: z51.guid().nullable().optional(),
7597
- // --- Content ---
7598
- /**
7599
- * Short summary for overview cards (1-2 sentences).
7600
- * e.g. "End-to-end workflow of listing new products into the catalog..."
7601
- */
7602
- summary: z51.string(),
7603
- /**
7604
- * Rich description shown in the detail panel.
7605
- * May include emphasized metrics (FE handles bold rendering).
7606
- * e.g. "Listing **660–880 new SKUs every month** from the commercial decision..."
7607
- */
7608
- description: z51.string(),
7609
- /**
7610
- * Authored narrative describing the system flow / toolchain.
7611
- * Comes from the Duvo capture output, not computed.
7612
- * e.g. "Product Pantry portal → Rohlik Admin backend → ChatGPT for description rewrites → ..."
7613
- */
7614
- systemNarrative: z51.string().optional(),
7615
- /**
7616
- * Authored narrative describing who does what and how accountability flows.
7617
- * e.g. "Senior CMs decide. Junior CMs configure. The Listing Specialist team finalizes everything."
7618
- */
7619
- accountabilityNarrative: z51.string().optional(),
7620
- /**
7621
- * Free-text frequency because the real-world cadences are too varied to enumerate.
7622
- * e.g. "Continuous", "Weekly + monthly slowmover", "10–15 per CM / month", "Ad-hoc, no fixed cadence"
7623
- */
7624
- frequency: z51.string(),
7625
- // --- Relations ---
7626
- people: z51.array(PersonRole),
7627
- systems: z51.array(SystemRef),
7628
- vulnerabilities: z51.array(Vulnerability),
7629
- frictionSignals: z51.array(FrictionSignal)
7630
- });
7631
- var ProcessOverviewItem = Process.extend({
7632
- /**
7633
- * Pre-computed count so FE doesn't need to re-count the people array.
7634
- * Displayed as "5 involved" on overview cards.
7635
- */
7636
- peopleCount: z51.int(),
7637
- /**
7638
- * First N systems (typically 4) to render the icon row.
7639
- */
7640
- systemPreviews: z51.array(SystemRef),
7641
- /**
7642
- * How many systems beyond systemPreviews exist.
7643
- * Rendered as "+3" badge after the icon row. 0 means all systems fit.
7644
- */
7645
- systemOverflowCount: z51.int().default(0)
7692
+ var joinLinkInfoResponseSchema = z51.object({
7693
+ valid: z51.boolean(),
7694
+ teamName: z51.string().optional(),
7695
+ teamId: z51.guid().optional(),
7696
+ reason: z51.enum(["invalid", "expired"]).optional()
7646
7697
  });
7647
- var ClarityOverviewResponse = z51.object({
7648
- /** Explicit count for the "Processes Captured" KPI tile */
7649
- processCount: z51.int(),
7650
- /**
7651
- * Count of processes with at least one SPOF vulnerability.
7652
- * Powers the "Single point of failure" KPI tile.
7653
- */
7654
- singlePointOfFailureCount: z51.int(),
7655
- processes: z51.array(ProcessOverviewItem),
7656
- // Department-level overview sections
7657
- mission: z51.string().nullable(),
7658
- kpis: z51.array(OverviewKpi),
7659
- headcount: OverviewHeadcount.nullable(),
7660
- teams: z51.array(OverviewTeam),
7661
- worksWell: z51.array(OverviewInsight),
7662
- doesNotWorkWell: z51.array(OverviewInsight),
7663
- needsHelp: z51.array(OverviewHelpNeeded)
7664
- });
7665
- var clarityOverviewDetailSchema = z51.object({
7666
- id: z51.guid(),
7667
- teamId: z51.guid(),
7668
- userId: z51.guid(),
7669
- status: clarityOverviewStatusSchema,
7670
- processCount: z51.int(),
7671
- singlePointOfFailureCount: z51.int(),
7672
- processes: z51.array(ProcessOverviewItem),
7673
- // Department-level overview sections
7674
- mission: z51.string().nullable(),
7675
- kpis: z51.array(OverviewKpi),
7676
- headcount: OverviewHeadcount.nullable(),
7677
- teams: z51.array(OverviewTeam),
7678
- worksWell: z51.array(OverviewInsight),
7679
- doesNotWorkWell: z51.array(OverviewInsight),
7680
- needsHelp: z51.array(OverviewHelpNeeded),
7681
- generationError: z51.string().nullable(),
7682
- captures: z51.array(clarityOverviewCaptureSchema),
7683
- createdAt: z51.coerce.date(),
7684
- updatedAt: z51.coerce.date()
7685
- });
7686
- var createTeamInviteLinkRequestSchema = z52.object({
7687
- frontendUrl: z52.url()
7698
+ var acceptJoinLinkResponseSchema = z51.object({
7699
+ success: z51.boolean(),
7700
+ teamId: z51.guid()
7688
7701
  });
7689
- var getTeamInviteLinkQuerySchema = z52.object({
7702
+ var createClarityProcessInviteLinkRequestSchema = z52.object({
7690
7703
  frontendUrl: z52.url()
7691
7704
  });
7692
- var teamInviteLinkCreatorSchema = z52.object({
7693
- id: z52.guid(),
7694
- name: z52.string().nullable(),
7695
- email: z52.email()
7696
- });
7697
- var teamInviteLinkSchema = z52.object({
7698
- id: z52.guid(),
7699
- url: z52.url().optional(),
7700
- createdAt: z52.string(),
7701
- createdBy: teamInviteLinkCreatorSchema
7702
- });
7703
- var getTeamInviteLinkResponseSchema = z52.object({
7705
+ var clarityProcessInviteLinkSchema = teamInviteLinkSchema;
7706
+ var getClarityProcessInviteLinkResponseSchema = z52.object({
7704
7707
  hasLink: z52.boolean(),
7705
- link: teamInviteLinkSchema.optional()
7708
+ link: clarityProcessInviteLinkSchema.optional()
7706
7709
  });
7707
- var joinLinkInfoResponseSchema = z52.object({
7710
+ var clarityJoinLinkInfoResponseSchema = z52.object({
7708
7711
  valid: z52.boolean(),
7709
- teamName: z52.string().optional(),
7712
+ processName: z52.string().optional(),
7713
+ processId: z52.guid().optional(),
7710
7714
  teamId: z52.guid().optional(),
7711
7715
  reason: z52.enum(["invalid", "expired"]).optional()
7712
7716
  });
7713
- var acceptJoinLinkResponseSchema = z52.object({
7717
+ var acceptClarityJoinLinkResponseSchema = z52.object({
7714
7718
  success: z52.boolean(),
7715
- teamId: z52.guid()
7716
- });
7717
- var createClarityProcessInviteLinkRequestSchema = z53.object({
7718
- frontendUrl: z53.url()
7719
- });
7720
- var clarityProcessInviteLinkSchema = teamInviteLinkSchema;
7721
- var getClarityProcessInviteLinkResponseSchema = z53.object({
7722
- hasLink: z53.boolean(),
7723
- link: clarityProcessInviteLinkSchema.optional()
7724
- });
7725
- var clarityJoinLinkInfoResponseSchema = z53.object({
7726
- valid: z53.boolean(),
7727
- processName: z53.string().optional(),
7728
- processId: z53.guid().optional(),
7729
- teamId: z53.guid().optional(),
7730
- reason: z53.enum(["invalid", "expired"]).optional()
7731
- });
7732
- var acceptClarityJoinLinkResponseSchema = z53.object({
7733
- success: z53.boolean(),
7734
- processId: z53.guid()
7735
- });
7736
- var credentialPreviewSchema = z54.object({
7737
- id: z54.guid().describe("Credential ID"),
7738
- domain: z54.string().describe("Domain for the credential"),
7739
- username: z54.string().nullable().describe("Username (if any)"),
7740
- hasEnabledTOTP: z54.boolean().describe("Whether TOTP is enabled"),
7741
- hasPassword: z54.boolean().describe("Whether a password is stored"),
7742
- user_id: z54.string().nullable().describe("Owner user id; null when shared with the team")
7743
- });
7744
- var otpResponseSchema = z54.object({
7745
- code: z54.string().describe("The TOTP code"),
7746
- expiresAt: z54.number().describe("Expiration timestamp in milliseconds")
7747
- });
7748
- var encryptedDataSchema = z54.object({
7749
- encrypted_data: z54.string().describe("Base64-encoded encrypted data"),
7750
- key_version: z54.string().describe("KMS key version or 'base64' for dev")
7751
- });
7752
- var credentialDetailSchema = z54.object({
7753
- domain: z54.string().describe("Domain for the credential"),
7754
- username: z54.string().nullable().describe("Username (if any)"),
7719
+ processId: z52.guid()
7720
+ });
7721
+ var credentialPreviewSchema = z53.object({
7722
+ id: z53.guid().describe("Credential ID"),
7723
+ domain: z53.string().describe("Domain for the credential"),
7724
+ username: z53.string().nullable().describe("Username (if any)"),
7725
+ hasEnabledTOTP: z53.boolean().describe("Whether TOTP is enabled"),
7726
+ hasPassword: z53.boolean().describe("Whether a password is stored"),
7727
+ user_id: z53.string().nullable().describe("Owner user id; null when shared with the team")
7728
+ });
7729
+ var otpResponseSchema = z53.object({
7730
+ code: z53.string().describe("The TOTP code"),
7731
+ expiresAt: z53.number().describe("Expiration timestamp in milliseconds")
7732
+ });
7733
+ var encryptedDataSchema = z53.object({
7734
+ encrypted_data: z53.string().describe("Base64-encoded encrypted data"),
7735
+ key_version: z53.string().describe("KMS key version or 'base64' for dev")
7736
+ });
7737
+ var credentialDetailSchema = z53.object({
7738
+ domain: z53.string().describe("Domain for the credential"),
7739
+ username: z53.string().nullable().describe("Username (if any)"),
7755
7740
  password: encryptedDataSchema.nullable().describe("Encrypted password data")
7756
7741
  });
7757
7742
  var FEATURE_FLAG_CATALOGUE = {
@@ -7840,15 +7825,10 @@ var FEATURE_FLAG_CATALOGUE = {
7840
7825
  defaultValue: false,
7841
7826
  description: "Enables the L1-L4 Clarity process hierarchy surfaces, including the process landscape tree and related organize/auto-sort workflows."
7842
7827
  },
7843
- CLARITY_ON_DISK_CAPTURES: {
7844
- key: "clarity_on_disk_captures",
7845
- defaultValue: false,
7846
- description: "When enabled, the Clarity generation agent receives capture content (transcripts, documents, video transcripts, screenshare frames) as files on the sandbox filesystem and is instructed to read them via a hard checklist, instead of having the content inlined into the prompt."
7847
- },
7848
- CLARITY_OVERVIEW: {
7849
- key: "clarity_overview",
7828
+ CLARITY_NOTETAKER: {
7829
+ key: "clarity_notetaker",
7850
7830
  defaultValue: false,
7851
- description: "Enables the Clarity Overview executive dashboard showing high-level process KPIs, maturity scores, and drill-down cards across all captured processes."
7831
+ description: "Enables the Clarity meeting notetaker (Recall.ai bot). When disabled, the 'Meeting Notetaker' option is hidden in the Add Content menu and the POST /clarity/processes/:id/captures/meeting invite route returns 404; the Recall webhook callback is unaffected. Off-by-default for staged rollout."
7852
7832
  },
7853
7833
  CLARITY_VOICE_ELEVENLABS: {
7854
7834
  key: "clarity_voice_elevenlabs",
@@ -7963,160 +7943,160 @@ function coerceFlagValue(value) {
7963
7943
  }
7964
7944
  __name(coerceFlagValue, "coerceFlagValue");
7965
7945
  __name2(coerceFlagValue, "coerceFlagValue");
7966
- var teamFileItemSchema = z55.object({
7967
- id: z55.string(),
7968
- name: z55.string(),
7969
- path: z55.string(),
7970
- created_at: z55.string().optional(),
7971
- updated_at: z55.string().optional(),
7972
- metadata: z55.object({
7973
- mimetype: z55.string().optional(),
7974
- size: z55.number().optional()
7946
+ var teamFileItemSchema = z54.object({
7947
+ id: z54.string(),
7948
+ name: z54.string(),
7949
+ path: z54.string(),
7950
+ created_at: z54.string().optional(),
7951
+ updated_at: z54.string().optional(),
7952
+ metadata: z54.object({
7953
+ mimetype: z54.string().optional(),
7954
+ size: z54.number().optional()
7975
7955
  }).nullable().optional()
7976
7956
  });
7977
- var listTeamFilesResponseSchema = z55.object({
7978
- files: z55.array(teamFileItemSchema)
7979
- });
7980
- var createTeamFileUploadUrlBodySchema = z55.object({
7981
- fileName: z55.string().min(1),
7982
- contentType: z55.string().min(1)
7983
- });
7984
- var createTeamFileUploadUrlResponseSchema = z55.object({
7985
- signedUrl: z55.url(),
7986
- expiresAt: z55.iso.datetime(),
7987
- filePath: z55.string()
7988
- });
7989
- var renameTeamFileBodySchema = z55.object({
7990
- relativePath: z55.string().min(1),
7991
- newFilenameOnly: z55.string().min(1)
7992
- });
7993
- var teamFileSuccessResponseSchema = z55.object({
7994
- success: z55.boolean()
7995
- });
7996
- var teamFileDownloadUrlResponseSchema = z55.object({
7997
- url: z55.url(),
7998
- expiresAt: z55.iso.datetime()
7999
- });
8000
- var teamFileContentResponseSchema = z55.object({
8001
- content: z55.string(),
8002
- path: z55.string(),
8003
- contentType: z55.string().optional()
8004
- });
8005
- var updateTeamFileContentBodySchema = z55.object({
8006
- content: z55.string()
8007
- });
8008
- var globalAdminApiSchema = z56.object({
8009
- id: z56.guid(),
8010
- email: z56.string(),
8011
- userId: z56.guid(),
8012
- userName: z56.string().nullable(),
8013
- addedByUserId: z56.guid().nullable(),
8014
- createdAt: z56.string()
8015
- });
8016
- var globalAdminListResponseSchema = z56.object({
8017
- admins: z56.array(globalAdminApiSchema)
8018
- });
8019
- var globalAdminSearchResponseSchema = z56.object({
8020
- users: z56.array(
8021
- z56.object({
8022
- id: z56.guid(),
8023
- name: z56.string().nullable(),
8024
- email: z56.string(),
8025
- createdAt: z56.string().nullable()
7957
+ var listTeamFilesResponseSchema = z54.object({
7958
+ files: z54.array(teamFileItemSchema)
7959
+ });
7960
+ var createTeamFileUploadUrlBodySchema = z54.object({
7961
+ fileName: z54.string().min(1),
7962
+ contentType: z54.string().min(1)
7963
+ });
7964
+ var createTeamFileUploadUrlResponseSchema = z54.object({
7965
+ signedUrl: z54.url(),
7966
+ expiresAt: z54.iso.datetime(),
7967
+ filePath: z54.string()
7968
+ });
7969
+ var renameTeamFileBodySchema = z54.object({
7970
+ relativePath: z54.string().min(1),
7971
+ newFilenameOnly: z54.string().min(1)
7972
+ });
7973
+ var teamFileSuccessResponseSchema = z54.object({
7974
+ success: z54.boolean()
7975
+ });
7976
+ var teamFileDownloadUrlResponseSchema = z54.object({
7977
+ url: z54.url(),
7978
+ expiresAt: z54.iso.datetime()
7979
+ });
7980
+ var teamFileContentResponseSchema = z54.object({
7981
+ content: z54.string(),
7982
+ path: z54.string(),
7983
+ contentType: z54.string().optional()
7984
+ });
7985
+ var updateTeamFileContentBodySchema = z54.object({
7986
+ content: z54.string()
7987
+ });
7988
+ var globalAdminApiSchema = z55.object({
7989
+ id: z55.guid(),
7990
+ email: z55.string(),
7991
+ userId: z55.guid(),
7992
+ userName: z55.string().nullable(),
7993
+ addedByUserId: z55.guid().nullable(),
7994
+ createdAt: z55.string()
7995
+ });
7996
+ var globalAdminListResponseSchema = z55.object({
7997
+ admins: z55.array(globalAdminApiSchema)
7998
+ });
7999
+ var globalAdminSearchResponseSchema = z55.object({
8000
+ users: z55.array(
8001
+ z55.object({
8002
+ id: z55.guid(),
8003
+ name: z55.string().nullable(),
8004
+ email: z55.string(),
8005
+ createdAt: z55.string().nullable()
8026
8006
  })
8027
8007
  )
8028
8008
  });
8029
- var globalAdminCreateRequestSchema = z56.object({
8030
- userId: z56.guid()
8009
+ var globalAdminCreateRequestSchema = z55.object({
8010
+ userId: z55.guid()
8031
8011
  });
8032
- var globalAdminCreateResponseSchema = z56.object({
8012
+ var globalAdminCreateResponseSchema = z55.object({
8033
8013
  admin: globalAdminApiSchema
8034
8014
  });
8035
- var globalAdminDeleteResponseSchema = z56.object({
8036
- success: z56.literal(true)
8015
+ var globalAdminDeleteResponseSchema = z55.object({
8016
+ success: z55.literal(true)
8037
8017
  });
8038
- var adminAccessCheckResponseSchema = z56.object({
8039
- isGlobalAdmin: z56.boolean()
8018
+ var adminAccessCheckResponseSchema = z55.object({
8019
+ isGlobalAdmin: z55.boolean()
8040
8020
  });
8041
8021
  var JOB_LIST_SORT_COLUMNS = ["created_at"];
8042
- var jobListSortColumnSchema = z57.enum(JOB_LIST_SORT_COLUMNS);
8043
- var jobListIssueSeveritySchema = z57.enum(
8022
+ var jobListSortColumnSchema = z56.enum(JOB_LIST_SORT_COLUMNS);
8023
+ var jobListIssueSeveritySchema = z56.enum(
8044
8024
  ALL_EVALUATION_RUBRIC_SEVERITIES
8045
8025
  );
8046
- var jobListItemSchema = z57.object({
8047
- id: z57.guid(),
8048
- created_at: z57.coerce.date(),
8049
- updated_at: z57.coerce.date(),
8050
- started_at: z57.coerce.date().nullable(),
8051
- completed_at: z57.coerce.date().nullable(),
8026
+ var jobListItemSchema = z56.object({
8027
+ id: z56.guid(),
8028
+ created_at: z56.coerce.date(),
8029
+ updated_at: z56.coerce.date(),
8030
+ started_at: z56.coerce.date().nullable(),
8031
+ completed_at: z56.coerce.date().nullable(),
8052
8032
  status: agentRunStatusSchema,
8053
- source: z57.string().nullable(),
8054
- title: z57.string(),
8055
- run_number: z57.number(),
8033
+ source: z56.string().nullable(),
8034
+ title: z56.string(),
8035
+ run_number: z56.number(),
8056
8036
  // Agent info
8057
- agent_id: z57.guid(),
8058
- agent_name: z57.string(),
8059
- build_id: z57.guid(),
8037
+ agent_id: z56.guid(),
8038
+ agent_name: z56.string(),
8039
+ build_id: z56.guid(),
8060
8040
  // User info
8061
- user_id: z57.guid().nullable(),
8041
+ user_id: z56.guid().nullable(),
8062
8042
  // Case info
8063
- case_queue_item_id: z57.guid().nullable(),
8064
- case_queue_id: z57.guid().nullable(),
8065
- case_queue_name: z57.string().nullable(),
8066
- case_title: z57.string().nullable(),
8067
- postponed_to: z57.coerce.date().nullable(),
8068
- submitted_prompt_count: z57.number().int().min(0),
8043
+ case_queue_item_id: z56.guid().nullable(),
8044
+ case_queue_id: z56.guid().nullable(),
8045
+ case_queue_name: z56.string().nullable(),
8046
+ case_title: z56.string().nullable(),
8047
+ postponed_to: z56.coerce.date().nullable(),
8048
+ submitted_prompt_count: z56.number().int().min(0),
8069
8049
  eval_summaries: evalSummarySchema.nullable().optional()
8070
8050
  });
8071
- var jobListResponseSchema = z57.object({
8072
- data: z57.array(jobListItemSchema),
8073
- total: z57.number()
8051
+ var jobListResponseSchema = z56.object({
8052
+ data: z56.array(jobListItemSchema),
8053
+ total: z56.number()
8074
8054
  });
8075
- var jobFilterOptionsSchema = z57.object({
8076
- agents: z57.array(
8077
- z57.object({
8078
- id: z57.string(),
8079
- name: z57.string(),
8080
- folder_id: z57.string().nullable()
8055
+ var jobFilterOptionsSchema = z56.object({
8056
+ agents: z56.array(
8057
+ z56.object({
8058
+ id: z56.string(),
8059
+ name: z56.string(),
8060
+ folder_id: z56.string().nullable()
8081
8061
  })
8082
8062
  ),
8083
- folders: z57.array(
8084
- z57.object({
8085
- id: z57.string(),
8086
- name: z57.string(),
8087
- parent_folder_id: z57.string().nullable()
8063
+ folders: z56.array(
8064
+ z56.object({
8065
+ id: z56.string(),
8066
+ name: z56.string(),
8067
+ parent_folder_id: z56.string().nullable()
8088
8068
  })
8089
8069
  ),
8090
- users: z57.array(
8091
- z57.object({
8092
- id: z57.string(),
8093
- name: z57.string().nullable(),
8094
- email: z57.string()
8070
+ users: z56.array(
8071
+ z56.object({
8072
+ id: z56.string(),
8073
+ name: z56.string().nullable(),
8074
+ email: z56.string()
8095
8075
  })
8096
8076
  ),
8097
- caseQueues: z57.array(z57.object({ id: z57.string(), name: z57.string() }))
8098
- });
8099
- var mcpStepSchema = z58.object({
8100
- tool: z58.string().describe("MCP tool name (e.g., click, fill, navigate_page)"),
8101
- params: z58.record(z58.string(), z58.unknown()).describe("Tool-specific parameters"),
8102
- fallbackSelectors: z58.array(z58.string()).optional().describe("Alternative CSS selectors if primary fails"),
8103
- description: z58.string().optional().describe("Human-readable step description"),
8104
- screenshot: z58.string().optional().describe("Base64 screenshot at this step for visual context"),
8105
- snapshot: z58.string().optional().describe("DOM snapshot in accessibility tree format at this step"),
8106
- framePath: z58.array(z58.number()).optional().describe(
8077
+ caseQueues: z56.array(z56.object({ id: z56.string(), name: z56.string() }))
8078
+ });
8079
+ var mcpStepSchema = z57.object({
8080
+ tool: z57.string().describe("MCP tool name (e.g., click, fill, navigate_page)"),
8081
+ params: z57.record(z57.string(), z57.unknown()).describe("Tool-specific parameters"),
8082
+ fallbackSelectors: z57.array(z57.string()).optional().describe("Alternative CSS selectors if primary fails"),
8083
+ description: z57.string().optional().describe("Human-readable step description"),
8084
+ screenshot: z57.string().optional().describe("Base64 screenshot at this step for visual context"),
8085
+ snapshot: z57.string().optional().describe("DOM snapshot in accessibility tree format at this step"),
8086
+ framePath: z57.array(z57.number()).optional().describe(
8107
8087
  "Index-based path to the target iframe (e.g., [0] for first child iframe, [1, 0] for nested)"
8108
8088
  )
8109
8089
  });
8110
- var mcpWorkflowSchema = z58.object({
8111
- name: z58.string(),
8112
- startUrl: z58.string(),
8113
- viewport: z58.object({
8114
- width: z58.number(),
8115
- height: z58.number()
8090
+ var mcpWorkflowSchema = z57.object({
8091
+ name: z57.string(),
8092
+ startUrl: z57.string(),
8093
+ viewport: z57.object({
8094
+ width: z57.number(),
8095
+ height: z57.number()
8116
8096
  }),
8117
- steps: z58.array(mcpStepSchema)
8097
+ steps: z57.array(mcpStepSchema)
8118
8098
  });
8119
- var MCP_WORKFLOW_JSON_SCHEMA = z58.toJSONSchema(mcpWorkflowSchema, {
8099
+ var MCP_WORKFLOW_JSON_SCHEMA = z57.toJSONSchema(mcpWorkflowSchema, {
8120
8100
  reused: "inline"
8121
8101
  });
8122
8102
  var MCP_WORKFLOW_SCHEMA_DOCS = JSON.stringify(
@@ -8125,52 +8105,52 @@ var MCP_WORKFLOW_SCHEMA_DOCS = JSON.stringify(
8125
8105
  2
8126
8106
  );
8127
8107
  var ORG_BROWSER_CONFIG_VERSION = 1;
8128
- var organizationBrowserConfigDataSchema = z59.object({
8108
+ var organizationBrowserConfigDataSchema = z58.object({
8129
8109
  browserProvider: BrowserProviderTypeSchema.nullable(),
8130
8110
  dataResidency: DataResidencySchema.nullable(),
8131
8111
  dataHandling: DataHandlingSchema.nullable(),
8132
- enforced: z59.boolean()
8112
+ enforced: z58.boolean()
8133
8113
  });
8134
- var organizationBrowserConfigSchema = z59.object({
8135
- version: z59.literal(ORG_BROWSER_CONFIG_VERSION),
8114
+ var organizationBrowserConfigSchema = z58.object({
8115
+ version: z58.literal(ORG_BROWSER_CONFIG_VERSION),
8136
8116
  data: organizationBrowserConfigDataSchema
8137
8117
  });
8138
- var organizationBrowserSettingsSchema = z59.object({
8139
- organizationId: z59.guid(),
8118
+ var organizationBrowserSettingsSchema = z58.object({
8119
+ organizationId: z58.guid(),
8140
8120
  browserProvider: BrowserProviderTypeSchema.nullable(),
8141
8121
  dataResidency: DataResidencySchema.nullable(),
8142
8122
  dataHandling: DataHandlingSchema.nullable(),
8143
- enforced: z59.boolean(),
8144
- createdAt: z59.string(),
8145
- updatedAt: z59.string()
8123
+ enforced: z58.boolean(),
8124
+ createdAt: z58.string(),
8125
+ updatedAt: z58.string()
8146
8126
  });
8147
- var getOrganizationBrowserSettingsResponseSchema = z59.object({
8127
+ var getOrganizationBrowserSettingsResponseSchema = z58.object({
8148
8128
  settings: organizationBrowserSettingsSchema.nullable()
8149
8129
  });
8150
- var updateOrganizationBrowserSettingsRequestSchema = z59.object({
8130
+ var updateOrganizationBrowserSettingsRequestSchema = z58.object({
8151
8131
  browserProvider: BrowserProviderTypeSchema.nullable().optional(),
8152
8132
  dataResidency: DataResidencySchema.nullable().optional(),
8153
8133
  dataHandling: DataHandlingSchema.nullable().optional(),
8154
- enforced: z59.boolean().optional()
8134
+ enforced: z58.boolean().optional()
8155
8135
  });
8156
- var updateOrganizationBrowserSettingsResponseSchema = z59.object({
8136
+ var updateOrganizationBrowserSettingsResponseSchema = z58.object({
8157
8137
  settings: organizationBrowserSettingsSchema
8158
8138
  });
8159
- var catalogPluginSchema = z60.object({
8160
- name: z60.string().describe("Identifier to pass in the build's plugins array."),
8139
+ var catalogPluginSchema = z59.object({
8140
+ name: z59.string().describe("Identifier to pass in the build's plugins array."),
8161
8141
  type: extensibleEnum(["duvo-platform", "knowledge-work", "github"], {
8162
8142
  description: "Plugin source. 'duvo-platform' plugins are pre-baked into the Duvo runtime; 'knowledge-work' plugins are role-oriented bundles (engineering, sales, legal, \u2026) also baked into the runtime; 'github' plugins are downloaded from a user-supplied repository URL at run time."
8163
8143
  }),
8164
- description: z60.string()
8144
+ description: z59.string()
8165
8145
  });
8166
- var pluginCatalogResponseSchema = z60.object({
8167
- plugins: z60.array(catalogPluginSchema)
8146
+ var pluginCatalogResponseSchema = z59.object({
8147
+ plugins: z59.array(catalogPluginSchema)
8168
8148
  });
8169
- var limitValueSchema = z61.union([
8170
- z61.number().int().nonnegative(),
8171
- z61.literal("unlimited")
8149
+ var limitValueSchema = z60.union([
8150
+ z60.number().int().nonnegative(),
8151
+ z60.literal("unlimited")
8172
8152
  ]);
8173
- var runCountingModeSchema = z61.enum(["monthly", "lifetime"]);
8153
+ var runCountingModeSchema = z60.enum(["monthly", "lifetime"]);
8174
8154
  function addDuplicateKeyIssues({
8175
8155
  ctx,
8176
8156
  items,
@@ -8182,7 +8162,7 @@ function addDuplicateKeyIssues({
8182
8162
  const key = keyFor(item);
8183
8163
  if (seen.has(key)) {
8184
8164
  ctx.addIssue({
8185
- code: z61.ZodIssueCode.custom,
8165
+ code: z60.ZodIssueCode.custom,
8186
8166
  message: `Duplicate Product Access grant key: ${key}`,
8187
8167
  path: [...path, index]
8188
8168
  });
@@ -8193,34 +8173,34 @@ function addDuplicateKeyIssues({
8193
8173
  }
8194
8174
  __name(addDuplicateKeyIssues, "addDuplicateKeyIssues");
8195
8175
  __name2(addDuplicateKeyIssues, "addDuplicateKeyIssues");
8196
- var productAccessOwnerSchema = z61.discriminatedUnion("type", [
8197
- z61.object({
8198
- type: z61.literal("organization"),
8199
- organizationId: z61.guid()
8176
+ var productAccessOwnerSchema = z60.discriminatedUnion("type", [
8177
+ z60.object({
8178
+ type: z60.literal("organization"),
8179
+ organizationId: z60.guid()
8200
8180
  }),
8201
- z61.object({
8202
- type: z61.literal("team"),
8203
- teamId: z61.guid(),
8204
- organizationId: z61.guid().nullable()
8181
+ z60.object({
8182
+ type: z60.literal("team"),
8183
+ teamId: z60.guid(),
8184
+ organizationId: z60.guid().nullable()
8205
8185
  })
8206
8186
  ]);
8207
- var productAccessGrantSetSchema = z61.object({
8208
- products: z61.array(
8209
- z61.object({
8210
- productKey: z61.enum(PRODUCT_KEYS),
8211
- enabled: z61.boolean()
8187
+ var productAccessGrantSetSchema = z60.object({
8188
+ products: z60.array(
8189
+ z60.object({
8190
+ productKey: z60.enum(PRODUCT_KEYS),
8191
+ enabled: z60.boolean()
8212
8192
  })
8213
8193
  ),
8214
- capabilities: z61.array(
8215
- z61.object({
8216
- capabilityKey: z61.enum(PRODUCT_ACCESS_CAPABILITY_KEYS),
8217
- enabled: z61.boolean()
8194
+ capabilities: z60.array(
8195
+ z60.object({
8196
+ capabilityKey: z60.enum(PRODUCT_ACCESS_CAPABILITY_KEYS),
8197
+ enabled: z60.boolean()
8218
8198
  })
8219
8199
  ),
8220
- limits: z61.array(
8221
- z61.object({
8222
- productKey: z61.enum(PRODUCT_KEYS),
8223
- limitKey: z61.enum(ENTITLEMENT_LIMIT_KEYS),
8200
+ limits: z60.array(
8201
+ z60.object({
8202
+ productKey: z60.enum(PRODUCT_KEYS),
8203
+ limitKey: z60.enum(ENTITLEMENT_LIMIT_KEYS),
8224
8204
  limitValue: limitValueSchema,
8225
8205
  countingMode: runCountingModeSchema.nullable()
8226
8206
  })
@@ -8245,51 +8225,51 @@ var productAccessGrantSetSchema = z61.object({
8245
8225
  path: ["limits"]
8246
8226
  });
8247
8227
  });
8248
- var productAccessSnapshotSchema = z61.object({
8249
- products: z61.array(
8250
- z61.object({
8251
- productKey: z61.enum(PRODUCT_KEYS),
8252
- enabled: z61.boolean()
8228
+ var productAccessSnapshotSchema = z60.object({
8229
+ products: z60.array(
8230
+ z60.object({
8231
+ productKey: z60.enum(PRODUCT_KEYS),
8232
+ enabled: z60.boolean()
8253
8233
  })
8254
8234
  ),
8255
- capabilities: z61.array(
8256
- z61.object({
8257
- capabilityKey: z61.enum(PRODUCT_ACCESS_CAPABILITY_KEYS),
8258
- productKey: z61.enum(PRODUCT_KEYS),
8259
- enabled: z61.boolean()
8235
+ capabilities: z60.array(
8236
+ z60.object({
8237
+ capabilityKey: z60.enum(PRODUCT_ACCESS_CAPABILITY_KEYS),
8238
+ productKey: z60.enum(PRODUCT_KEYS),
8239
+ enabled: z60.boolean()
8260
8240
  })
8261
8241
  ),
8262
- limits: z61.array(
8263
- z61.object({
8264
- limitKey: z61.enum(ENTITLEMENT_LIMIT_KEYS),
8265
- productKey: z61.enum(PRODUCT_KEYS),
8242
+ limits: z60.array(
8243
+ z60.object({
8244
+ limitKey: z60.enum(ENTITLEMENT_LIMIT_KEYS),
8245
+ productKey: z60.enum(PRODUCT_KEYS),
8266
8246
  limitValue: limitValueSchema,
8267
8247
  countingMode: runCountingModeSchema.nullable(),
8268
- label: z61.literal("per_team")
8248
+ label: z60.literal("per_team")
8269
8249
  })
8270
8250
  )
8271
8251
  });
8272
- var billingPlanSchema = z61.object({
8273
- planVersionId: z61.string(),
8274
- planName: z61.string(),
8275
- basePlan: z61.enum(["free", "pro", "enterprise"])
8252
+ var billingPlanSchema = z60.object({
8253
+ planVersionId: z60.string(),
8254
+ planName: z60.string(),
8255
+ basePlan: z60.enum(["free", "pro", "enterprise"])
8276
8256
  });
8277
- var inheritedFromSchema = z61.discriminatedUnion("type", [
8278
- z61.object({
8279
- type: z61.literal("organization"),
8280
- organizationId: z61.guid()
8257
+ var inheritedFromSchema = z60.discriminatedUnion("type", [
8258
+ z60.object({
8259
+ type: z60.literal("organization"),
8260
+ organizationId: z60.guid()
8281
8261
  }),
8282
- z61.object({
8283
- type: z61.literal("team_subscription"),
8284
- planVersionId: z61.string()
8262
+ z60.object({
8263
+ type: z60.literal("team_subscription"),
8264
+ planVersionId: z60.string()
8285
8265
  })
8286
8266
  ]);
8287
- var productAccessReadResponseSchema = z61.object({
8267
+ var productAccessReadResponseSchema = z60.object({
8288
8268
  owner: productAccessOwnerSchema,
8289
- source: z61.enum(PLAN_ENTITLEMENTS_SOURCE_VALUES),
8290
- accessRevision: z61.string().min(1),
8269
+ source: z60.enum(PLAN_ENTITLEMENTS_SOURCE_VALUES),
8270
+ accessRevision: z60.string().min(1),
8291
8271
  displayPreset: displayPresetSchema,
8292
- hasExplicitTeamAccess: z61.boolean(),
8272
+ hasExplicitTeamAccess: z60.boolean(),
8293
8273
  inheritedFrom: inheritedFromSchema.nullable(),
8294
8274
  billingPlan: billingPlanSchema.nullable(),
8295
8275
  grants: productAccessSnapshotSchema,
@@ -8297,67 +8277,67 @@ var productAccessReadResponseSchema = z61.object({
8297
8277
  }).superRefine((value, ctx) => {
8298
8278
  if (value.owner.type === "team" && value.source === "organization" && value.inheritedFrom?.type !== "organization") {
8299
8279
  ctx.addIssue({
8300
- code: z61.ZodIssueCode.custom,
8280
+ code: z60.ZodIssueCode.custom,
8301
8281
  message: "inheritedFrom organization context is required when team source is organization",
8302
8282
  path: ["inheritedFrom"]
8303
8283
  });
8304
8284
  }
8305
8285
  if (value.owner.type === "team" && value.source === "team_subscription" && value.inheritedFrom?.type !== "team_subscription") {
8306
8286
  ctx.addIssue({
8307
- code: z61.ZodIssueCode.custom,
8287
+ code: z60.ZodIssueCode.custom,
8308
8288
  message: "inheritedFrom subscription context is required when team source is team_subscription",
8309
8289
  path: ["inheritedFrom"]
8310
8290
  });
8311
8291
  }
8312
8292
  if (value.owner.type === "team" && value.source === "team" && value.inheritedFrom !== null) {
8313
8293
  ctx.addIssue({
8314
- code: z61.ZodIssueCode.custom,
8294
+ code: z60.ZodIssueCode.custom,
8315
8295
  message: "inheritedFrom must be null for direct team Product Access",
8316
8296
  path: ["inheritedFrom"]
8317
8297
  });
8318
8298
  }
8319
8299
  if (value.owner.type === "organization" && value.billingPlan !== null) {
8320
8300
  ctx.addIssue({
8321
- code: z61.ZodIssueCode.custom,
8301
+ code: z60.ZodIssueCode.custom,
8322
8302
  message: "billingPlan must be null for organization Product Access",
8323
8303
  path: ["billingPlan"]
8324
8304
  });
8325
8305
  }
8326
8306
  if (value.owner.type === "organization" && value.source !== "organization") {
8327
8307
  ctx.addIssue({
8328
- code: z61.ZodIssueCode.custom,
8308
+ code: z60.ZodIssueCode.custom,
8329
8309
  message: "organization Product Access source must be organization",
8330
8310
  path: ["source"]
8331
8311
  });
8332
8312
  }
8333
8313
  if (value.owner.type === "organization" && value.inheritedFrom !== null) {
8334
8314
  ctx.addIssue({
8335
- code: z61.ZodIssueCode.custom,
8315
+ code: z60.ZodIssueCode.custom,
8336
8316
  message: "inheritedFrom must be null for organization Product Access",
8337
8317
  path: ["inheritedFrom"]
8338
8318
  });
8339
8319
  }
8340
8320
  });
8341
- var productAccessImpactRequestSchema = z61.object({
8321
+ var productAccessImpactRequestSchema = z60.object({
8342
8322
  proposedGrants: productAccessGrantSetSchema
8343
8323
  });
8344
- var productAccessWriteRequestSchema = z61.object({
8324
+ var productAccessWriteRequestSchema = z60.object({
8345
8325
  proposedGrants: productAccessGrantSetSchema,
8346
- accessRevision: z61.string().min(1),
8347
- impactFingerprint: z61.string().min(1).optional()
8348
- });
8349
- var productAccessTeamResetRequestSchema = z61.object({
8350
- accessRevision: z61.string().min(1),
8351
- impactFingerprint: z61.string().min(1).optional()
8352
- });
8353
- var productAccessChangeSummarySchema = z61.object({
8354
- addedProducts: z61.array(z61.enum(PRODUCT_KEYS)),
8355
- removedProducts: z61.array(z61.enum(PRODUCT_KEYS)),
8356
- addedCapabilities: z61.array(z61.enum(PRODUCT_ACCESS_CAPABILITY_KEYS)),
8357
- removedCapabilities: z61.array(z61.enum(PRODUCT_ACCESS_CAPABILITY_KEYS)),
8358
- limitChanges: z61.array(
8359
- z61.object({
8360
- limitKey: z61.enum(ENTITLEMENT_LIMIT_KEYS),
8326
+ accessRevision: z60.string().min(1),
8327
+ impactFingerprint: z60.string().min(1).optional()
8328
+ });
8329
+ var productAccessTeamResetRequestSchema = z60.object({
8330
+ accessRevision: z60.string().min(1),
8331
+ impactFingerprint: z60.string().min(1).optional()
8332
+ });
8333
+ var productAccessChangeSummarySchema = z60.object({
8334
+ addedProducts: z60.array(z60.enum(PRODUCT_KEYS)),
8335
+ removedProducts: z60.array(z60.enum(PRODUCT_KEYS)),
8336
+ addedCapabilities: z60.array(z60.enum(PRODUCT_ACCESS_CAPABILITY_KEYS)),
8337
+ removedCapabilities: z60.array(z60.enum(PRODUCT_ACCESS_CAPABILITY_KEYS)),
8338
+ limitChanges: z60.array(
8339
+ z60.object({
8340
+ limitKey: z60.enum(ENTITLEMENT_LIMIT_KEYS),
8361
8341
  currentValue: limitValueSchema,
8362
8342
  currentCountingMode: runCountingModeSchema.nullable(),
8363
8343
  proposedValue: limitValueSchema,
@@ -8365,61 +8345,61 @@ var productAccessChangeSummarySchema = z61.object({
8365
8345
  })
8366
8346
  )
8367
8347
  });
8368
- var productAccessImpactResponseSchema = z61.object({
8348
+ var productAccessImpactResponseSchema = z60.object({
8369
8349
  owner: productAccessOwnerSchema,
8370
- impactFingerprint: z61.string().min(1),
8371
- affectedTeamCount: z61.number().int().nonnegative(),
8372
- affectedTeamsTruncated: z61.boolean(),
8350
+ impactFingerprint: z60.string().min(1),
8351
+ affectedTeamCount: z60.number().int().nonnegative(),
8352
+ affectedTeamsTruncated: z60.boolean(),
8373
8353
  changes: productAccessChangeSummarySchema,
8374
- sideEffects: z61.object({
8375
- automationWillPause: z61.boolean(),
8376
- clarityWillHide: z61.boolean()
8354
+ sideEffects: z60.object({
8355
+ automationWillPause: z60.boolean(),
8356
+ clarityWillHide: z60.boolean()
8377
8357
  }),
8378
- affectedTeamsPreview: z61.array(
8379
- z61.object({
8380
- teamId: z61.guid(),
8381
- teamName: z61.string(),
8382
- source: z61.enum(PLAN_ENTITLEMENTS_SOURCE_VALUES),
8358
+ affectedTeamsPreview: z60.array(
8359
+ z60.object({
8360
+ teamId: z60.guid(),
8361
+ teamName: z60.string(),
8362
+ source: z60.enum(PLAN_ENTITLEMENTS_SOURCE_VALUES),
8383
8363
  changes: productAccessChangeSummarySchema
8384
8364
  })
8385
8365
  )
8386
8366
  });
8387
- var publicProfileSchema = z62.object({
8388
- id: z62.guid(),
8389
- name: z62.string().nullable(),
8390
- email: z62.email(),
8391
- teamId: z62.guid().nullable()
8367
+ var publicProfileSchema = z61.object({
8368
+ id: z61.guid(),
8369
+ name: z61.string().nullable(),
8370
+ email: z61.email(),
8371
+ teamId: z61.guid().nullable()
8392
8372
  });
8393
- var publicProfileResponseSchema = z62.object({
8373
+ var publicProfileResponseSchema = z61.object({
8394
8374
  profile: publicProfileSchema
8395
8375
  });
8396
- var elementSelectorsSchema = z63.object({
8397
- css: z63.string().optional(),
8398
- cssPath: z63.string().optional(),
8399
- xpath: z63.string().optional(),
8400
- testId: z63.string().optional(),
8401
- ariaSelector: z63.string().optional(),
8402
- text: z63.string().optional()
8376
+ var elementSelectorsSchema = z62.object({
8377
+ css: z62.string().optional(),
8378
+ cssPath: z62.string().optional(),
8379
+ xpath: z62.string().optional(),
8380
+ testId: z62.string().optional(),
8381
+ ariaSelector: z62.string().optional(),
8382
+ text: z62.string().optional()
8403
8383
  });
8404
- var elementInfoSchema = z63.object({
8405
- uid: z63.string().optional(),
8384
+ var elementInfoSchema = z62.object({
8385
+ uid: z62.string().optional(),
8406
8386
  selectors: elementSelectorsSchema,
8407
- tagName: z63.string(),
8408
- textContent: z63.string().optional(),
8409
- ariaLabel: z63.string().optional(),
8410
- computedRole: z63.string().optional(),
8411
- attributes: z63.record(z63.string(), z63.string()).optional(),
8412
- framePath: z63.array(z63.number()).optional(),
8413
- frameUrl: z63.string().optional()
8414
- });
8415
- var recordedEventSchema = z63.looseObject({
8416
- id: z63.string(),
8417
- type: z63.string(),
8418
- timestamp: z63.number(),
8419
- url: z63.string(),
8420
- tabId: z63.number().optional(),
8421
- frameId: z63.number().optional(),
8422
- framePath: z63.array(z63.number()).optional(),
8387
+ tagName: z62.string(),
8388
+ textContent: z62.string().optional(),
8389
+ ariaLabel: z62.string().optional(),
8390
+ computedRole: z62.string().optional(),
8391
+ attributes: z62.record(z62.string(), z62.string()).optional(),
8392
+ framePath: z62.array(z62.number()).optional(),
8393
+ frameUrl: z62.string().optional()
8394
+ });
8395
+ var recordedEventSchema = z62.looseObject({
8396
+ id: z62.string(),
8397
+ type: z62.string(),
8398
+ timestamp: z62.number(),
8399
+ url: z62.string(),
8400
+ tabId: z62.number().optional(),
8401
+ frameId: z62.number().optional(),
8402
+ framePath: z62.array(z62.number()).optional(),
8423
8403
  element: elementInfoSchema.optional()
8424
8404
  });
8425
8405
  var DUVO_CLIENT_HEADER = "x-duvo-client";
@@ -8439,63 +8419,63 @@ function resolveRequestSourceFromClientHeader(header) {
8439
8419
  }
8440
8420
  __name(resolveRequestSourceFromClientHeader, "resolveRequestSourceFromClientHeader");
8441
8421
  __name2(resolveRequestSourceFromClientHeader, "resolveRequestSourceFromClientHeader");
8442
- var RedactedMcpServerConfigSchema = z64.object({
8422
+ var RedactedMcpServerConfigSchema = z63.object({
8443
8423
  type: TransportTypeSchema,
8444
8424
  integrationSlug: IntegrationSlugSchema,
8445
- instanceId: z64.string().nullable()
8425
+ instanceId: z63.string().nullable()
8446
8426
  });
8447
- var ThreadContextMessageSchema = z64.object({
8448
- role: z64.enum(["user", "assistant"]),
8449
- content: z64.string()
8427
+ var ThreadContextMessageSchema = z63.object({
8428
+ role: z63.enum(["user", "assistant"]),
8429
+ content: z63.string()
8450
8430
  });
8451
- var ChatFileReferenceSchema = z64.object({
8452
- id: z64.string(),
8453
- name: z64.string(),
8454
- mimetype: z64.string(),
8455
- size: z64.number(),
8456
- platform: z64.enum(["slack", "teams"]),
8457
- workspaceId: z64.string(),
8458
- channelId: z64.string()
8459
- });
8460
- var ResolvedSubAgentSchema = z64.object({
8461
- agentId: z64.string().uuid(),
8462
- buildId: z64.string().uuid(),
8463
- name: z64.string().min(1).max(64).regex(/^[a-z0-9-]+$/).describe(
8431
+ var ChatFileReferenceSchema = z63.object({
8432
+ id: z63.string(),
8433
+ name: z63.string(),
8434
+ mimetype: z63.string(),
8435
+ size: z63.number(),
8436
+ platform: z63.enum(["slack", "teams"]),
8437
+ workspaceId: z63.string(),
8438
+ channelId: z63.string()
8439
+ });
8440
+ var ResolvedSubAgentSchema = z63.object({
8441
+ agentId: z63.string().uuid(),
8442
+ buildId: z63.string().uuid(),
8443
+ name: z63.string().min(1).max(64).regex(/^[a-z0-9-]+$/).describe(
8464
8444
  "Stable slug used as the Claude Code subagent name (kebab-case, \u226464 chars)"
8465
8445
  ),
8466
- description: z64.string().describe(
8446
+ description: z63.string().describe(
8467
8447
  "Routing description Claude uses to decide when to delegate to this subagent"
8468
8448
  ),
8469
- prompt: z64.string().describe("System prompt (AOP) for this subagent"),
8470
- model: z64.string().optional().describe("Optional Claude model identifier override for this subagent"),
8471
- mcpServers: z64.record(z64.string(), RedactedMcpServerConfigSchema).default({}).describe(
8449
+ prompt: z63.string().describe("System prompt (AOP) for this subagent"),
8450
+ model: z63.string().optional().describe("Optional Claude model identifier override for this subagent"),
8451
+ mcpServers: z63.record(z63.string(), RedactedMcpServerConfigSchema).default({}).describe(
8472
8452
  "Redacted MCP server configs scoped to this subagent. Secrets resolved at execution time."
8473
8453
  )
8474
8454
  });
8475
8455
  var RunConfigSchema = AgentConfigSchema.extend({
8476
- task: z64.string(),
8477
- mcpServers: z64.record(z64.string(), RedactedMcpServerConfigSchema),
8478
- subAgents: z64.array(ResolvedSubAgentSchema).optional().default([]),
8479
- conversationHistory: z64.array(ThreadContextMessageSchema).optional(),
8480
- chatFiles: z64.array(ChatFileReferenceSchema).optional(),
8456
+ task: z63.string(),
8457
+ mcpServers: z63.record(z63.string(), RedactedMcpServerConfigSchema),
8458
+ subAgents: z63.array(ResolvedSubAgentSchema).optional().default([]),
8459
+ conversationHistory: z63.array(ThreadContextMessageSchema).optional(),
8460
+ chatFiles: z63.array(ChatFileReferenceSchema).optional(),
8481
8461
  /** IANA timezone (e.g. `"Europe/Prague"`). Consumers should fall back to UTC when absent. */
8482
- timezone: z64.string().optional(),
8462
+ timezone: z63.string().optional(),
8483
8463
  /**
8484
8464
  * ISO 8601 timestamp captured when the run was created. Frozen at
8485
8465
  * run-creation time and never recomputed, so resumes reuse the same value —
8486
8466
  * the runtime injects it into the cached system prompt and a changing value
8487
8467
  * would bust the prompt cache.
8488
8468
  */
8489
- sessionStartedAt: z64.string().optional()
8469
+ sessionStartedAt: z63.string().optional()
8490
8470
  });
8491
- var StoredRunConfigV0Schema = z64.object({
8492
- version: z64.literal("v0")
8471
+ var StoredRunConfigV0Schema = z63.object({
8472
+ version: z63.literal("v0")
8493
8473
  });
8494
- var StoredRunConfigV1Schema = z64.object({
8495
- version: z64.literal("v1"),
8474
+ var StoredRunConfigV1Schema = z63.object({
8475
+ version: z63.literal("v1"),
8496
8476
  data: RunConfigSchema
8497
8477
  });
8498
- var StoredRunConfigSchema = z64.union([
8478
+ var StoredRunConfigSchema = z63.union([
8499
8479
  StoredRunConfigV0Schema,
8500
8480
  StoredRunConfigV1Schema
8501
8481
  ]);
@@ -8514,177 +8494,177 @@ function isRunConfig(config) {
8514
8494
  }
8515
8495
  __name(isRunConfig, "isRunConfig");
8516
8496
  __name2(isRunConfig, "isRunConfig");
8517
- var skillApiSchema = z65.object({
8518
- id: z65.string(),
8519
- name: z65.string(),
8520
- description: z65.string(),
8497
+ var skillApiSchema = z64.object({
8498
+ id: z64.string(),
8499
+ name: z64.string(),
8500
+ description: z64.string(),
8521
8501
  // System skills have null team_id.
8522
- team_id: z65.string().nullable()
8502
+ team_id: z64.string().nullable()
8523
8503
  });
8524
- var listSkillsResponseSchema = z65.object({
8525
- skills: z65.array(skillApiSchema)
8504
+ var listSkillsResponseSchema = z64.object({
8505
+ skills: z64.array(skillApiSchema)
8526
8506
  });
8527
- var systemSkillSchema = z65.object({
8528
- id: z65.string(),
8529
- name: z65.string(),
8530
- description: z65.string()
8531
- });
8532
- var listSystemSkillsResponseSchema = z65.object({
8533
- skills: z65.array(systemSkillSchema)
8534
- });
8535
- var skillFileItemSchema = z65.object({
8536
- name: z65.string(),
8537
- path: z65.string(),
8538
- size: z65.number().optional(),
8539
- contentType: z65.string().optional(),
8540
- updatedAt: z65.string().optional()
8541
- });
8542
- var listSkillFilesResponseSchema = z65.object({
8543
- files: z65.array(skillFileItemSchema)
8544
- });
8545
- var getSkillFileContentResponseSchema = z65.object({
8546
- content: z65.string(),
8547
- path: z65.string(),
8548
- contentType: z65.string().optional()
8549
- });
8550
- var updateSkillFileBodySchema = z65.object({
8551
- content: z65.string()
8552
- });
8553
- var updateSkillFileResponseSchema = z65.object({
8554
- success: z65.boolean(),
8555
- message: z65.string(),
8556
- skill: z65.object({
8557
- id: z65.string(),
8558
- name: z65.string(),
8559
- description: z65.string()
8560
- }).optional()
8507
+ var systemSkillSchema = z64.object({
8508
+ id: z64.string(),
8509
+ name: z64.string(),
8510
+ description: z64.string()
8561
8511
  });
8562
- var deleteSkillResponseSchema = z65.object({
8563
- success: z65.boolean(),
8564
- message: z65.string()
8512
+ var listSystemSkillsResponseSchema = z64.object({
8513
+ skills: z64.array(systemSkillSchema)
8565
8514
  });
8566
- var generateSkillBodySchema = z65.object({
8567
- prompt: z65.string().min(1).max(2e3),
8568
- existingContent: z65.string().max(2e4).optional()
8515
+ var skillFileItemSchema = z64.object({
8516
+ name: z64.string(),
8517
+ path: z64.string(),
8518
+ size: z64.number().optional(),
8519
+ contentType: z64.string().optional(),
8520
+ updatedAt: z64.string().optional()
8569
8521
  });
8570
- var generateSkillResponseSchema = z65.object({
8571
- content: z65.string()
8522
+ var listSkillFilesResponseSchema = z64.object({
8523
+ files: z64.array(skillFileItemSchema)
8572
8524
  });
8573
- var skillAssignmentSchema = z65.object({
8574
- id: z65.string(),
8575
- name: z65.string()
8525
+ var getSkillFileContentResponseSchema = z64.object({
8526
+ content: z64.string(),
8527
+ path: z64.string(),
8528
+ contentType: z64.string().optional()
8576
8529
  });
8577
- var listSkillAssignmentsResponseSchema = z65.object({
8578
- assignments: z65.array(skillAssignmentSchema),
8579
- total: z65.number()
8530
+ var updateSkillFileBodySchema = z64.object({
8531
+ content: z64.string()
8580
8532
  });
8581
- var teamInvitationApiSchema = z66.object({
8582
- id: z66.string(),
8583
- team_id: z66.string(),
8584
- email: z66.email(),
8585
- invited_by: z66.string(),
8586
- role: z66.string(),
8587
- status: z66.string(),
8588
- name: z66.string().nullable(),
8589
- created_at: z66.string(),
8590
- process_id: z66.guid().nullable().optional()
8533
+ var updateSkillFileResponseSchema = z64.object({
8534
+ success: z64.boolean(),
8535
+ message: z64.string(),
8536
+ skill: z64.object({
8537
+ id: z64.string(),
8538
+ name: z64.string(),
8539
+ description: z64.string()
8540
+ }).optional()
8591
8541
  });
8592
- var teamInvitationDetailApiSchema = z66.object({
8593
- id: z66.string(),
8594
- team_id: z66.string(),
8595
- email: z66.email(),
8596
- invited_by: z66.string(),
8597
- role: z66.string(),
8598
- status: z66.string(),
8599
- name: z66.string().nullable(),
8600
- created_at: z66.string(),
8601
- process_id: z66.guid().nullable().optional(),
8602
- team: z66.object({
8603
- id: z66.string(),
8604
- name: z66.string()
8542
+ var deleteSkillResponseSchema = z64.object({
8543
+ success: z64.boolean(),
8544
+ message: z64.string()
8545
+ });
8546
+ var generateSkillBodySchema = z64.object({
8547
+ prompt: z64.string().min(1).max(2e3),
8548
+ existingContent: z64.string().max(2e4).optional()
8549
+ });
8550
+ var generateSkillResponseSchema = z64.object({
8551
+ content: z64.string()
8552
+ });
8553
+ var skillAssignmentSchema = z64.object({
8554
+ id: z64.string(),
8555
+ name: z64.string()
8556
+ });
8557
+ var listSkillAssignmentsResponseSchema = z64.object({
8558
+ assignments: z64.array(skillAssignmentSchema),
8559
+ total: z64.number()
8560
+ });
8561
+ var teamInvitationApiSchema = z65.object({
8562
+ id: z65.string(),
8563
+ team_id: z65.string(),
8564
+ email: z65.email(),
8565
+ invited_by: z65.string(),
8566
+ role: z65.string(),
8567
+ status: z65.string(),
8568
+ name: z65.string().nullable(),
8569
+ created_at: z65.string(),
8570
+ process_id: z65.guid().nullable().optional()
8571
+ });
8572
+ var teamInvitationDetailApiSchema = z65.object({
8573
+ id: z65.string(),
8574
+ team_id: z65.string(),
8575
+ email: z65.email(),
8576
+ invited_by: z65.string(),
8577
+ role: z65.string(),
8578
+ status: z65.string(),
8579
+ name: z65.string().nullable(),
8580
+ created_at: z65.string(),
8581
+ process_id: z65.guid().nullable().optional(),
8582
+ team: z65.object({
8583
+ id: z65.string(),
8584
+ name: z65.string()
8605
8585
  }),
8606
- invitedBy: z66.object({
8607
- id: z66.string(),
8608
- name: z66.string().nullable(),
8609
- email: z66.email()
8586
+ invitedBy: z65.object({
8587
+ id: z65.string(),
8588
+ name: z65.string().nullable(),
8589
+ email: z65.email()
8610
8590
  }),
8611
- process: z66.object({
8612
- id: z66.string(),
8613
- name: z66.string()
8591
+ process: z65.object({
8592
+ id: z65.string(),
8593
+ name: z65.string()
8614
8594
  }).optional()
8615
8595
  });
8616
- var createTeamInvitationRequestSchema = z66.object({
8617
- email: z66.email(),
8618
- role: z66.string(),
8619
- processId: z66.guid().optional()
8596
+ var createTeamInvitationRequestSchema = z65.object({
8597
+ email: z65.email(),
8598
+ role: z65.string(),
8599
+ processId: z65.guid().optional()
8620
8600
  });
8621
- var acceptTeamInvitationRequestSchema = z66.object({
8622
- name: z66.string().optional()
8601
+ var acceptTeamInvitationRequestSchema = z65.object({
8602
+ name: z65.string().optional()
8623
8603
  });
8624
- var bulkInviteResponseSchema = z66.object({
8625
- succeeded: z66.number(),
8626
- skipped: z66.number(),
8627
- failed: z66.number()
8604
+ var bulkInviteResponseSchema = z65.object({
8605
+ succeeded: z65.number(),
8606
+ skipped: z65.number(),
8607
+ failed: z65.number()
8628
8608
  });
8629
- var teamDiscoveryModeSchema = z67.enum(["request", "auto"]);
8630
- var BrowserRegionSchema = z67.enum([
8609
+ var teamDiscoveryModeSchema = z66.enum(["request", "auto"]);
8610
+ var BrowserRegionSchema = z66.enum([
8631
8611
  "us-west-2",
8632
8612
  "us-east-1",
8633
8613
  "eu-central-1",
8634
8614
  "ap-southeast-1"
8635
8615
  ]);
8636
- var BrowserLocationSchema = z67.union([
8637
- z67.literal("cz"),
8638
- z67.literal("de"),
8639
- z67.literal("fr"),
8640
- z67.literal("gb"),
8641
- z67.literal("it"),
8642
- z67.literal("pl"),
8643
- z67.literal("sk")
8616
+ var BrowserLocationSchema = z66.union([
8617
+ z66.literal("cz"),
8618
+ z66.literal("de"),
8619
+ z66.literal("fr"),
8620
+ z66.literal("gb"),
8621
+ z66.literal("it"),
8622
+ z66.literal("pl"),
8623
+ z66.literal("sk")
8644
8624
  ]);
8645
- var teamMemberApiSchema = z67.object({
8646
- id: z67.guid(),
8647
- name: z67.string().nullable(),
8648
- email: z67.email(),
8649
- role: z67.string(),
8650
- inheritedFromOrg: z67.boolean().default(false)
8651
- });
8652
- var listTeamMembersResponseSchema = z67.object({
8653
- members: z67.array(teamMemberApiSchema),
8654
- total: z67.number().int().nonnegative(),
8655
- limit: z67.number().int().positive(),
8656
- offset: z67.number().int().nonnegative()
8657
- });
8658
- var updateMemberRoleRequestSchema = z67.object({
8659
- role: z67.string()
8660
- });
8661
- var removeMemberResponseSchema = z67.object({
8662
- success: z67.literal(true),
8663
- nextTeamId: z67.guid().nullable(),
8664
- planType: z67.enum(["pro", "enterprise"]).nullable()
8665
- });
8666
- var getMemberMeResponseSchema = z67.object({
8667
- role: z67.string().nullable()
8668
- });
8669
- var addTeamMemberRequestSchema = z67.object({
8670
- userId: z67.guid(),
8671
- role: z67.string()
8672
- });
8673
- var updateTeamRequestSchema = z67.object({
8674
- name: z67.string().min(1).optional(),
8675
- slack_team_id: z67.string().optional(),
8625
+ var teamMemberApiSchema = z66.object({
8626
+ id: z66.guid(),
8627
+ name: z66.string().nullable(),
8628
+ email: z66.email(),
8629
+ role: z66.string(),
8630
+ inheritedFromOrg: z66.boolean().default(false)
8631
+ });
8632
+ var listTeamMembersResponseSchema = z66.object({
8633
+ members: z66.array(teamMemberApiSchema),
8634
+ total: z66.number().int().nonnegative(),
8635
+ limit: z66.number().int().positive(),
8636
+ offset: z66.number().int().nonnegative()
8637
+ });
8638
+ var updateMemberRoleRequestSchema = z66.object({
8639
+ role: z66.string()
8640
+ });
8641
+ var removeMemberResponseSchema = z66.object({
8642
+ success: z66.literal(true),
8643
+ nextTeamId: z66.guid().nullable(),
8644
+ planType: z66.enum(["pro", "enterprise"]).nullable()
8645
+ });
8646
+ var getMemberMeResponseSchema = z66.object({
8647
+ role: z66.string().nullable()
8648
+ });
8649
+ var addTeamMemberRequestSchema = z66.object({
8650
+ userId: z66.guid(),
8651
+ role: z66.string()
8652
+ });
8653
+ var updateTeamRequestSchema = z66.object({
8654
+ name: z66.string().min(1).optional(),
8655
+ slack_team_id: z66.string().optional(),
8676
8656
  discovery_mode: teamDiscoveryModeSchema.optional()
8677
8657
  });
8678
- var teamApiSchema = z67.object({
8679
- id: z67.guid(),
8680
- name: z67.string(),
8681
- created_at: z67.string(),
8682
- organization_id: z67.guid().nullable(),
8683
- slack_team_id: z67.string().nullable(),
8658
+ var teamApiSchema = z66.object({
8659
+ id: z66.guid(),
8660
+ name: z66.string(),
8661
+ created_at: z66.string(),
8662
+ organization_id: z66.guid().nullable(),
8663
+ slack_team_id: z66.string().nullable(),
8684
8664
  discovery_mode: teamDiscoveryModeSchema
8685
8665
  });
8686
8666
  var TEAM_CONFIG_VERSION = 1;
8687
- var teamConfigDataSchema = z67.object({
8667
+ var teamConfigDataSchema = z66.object({
8688
8668
  browserProviderOverride: BrowserProviderTypeSchema.nullable().optional(),
8689
8669
  // Egress identity (proxy country) — what the target site sees.
8690
8670
  browserLocationOverride: BrowserLocationSchema.nullable().optional(),
@@ -8695,182 +8675,182 @@ var teamConfigDataSchema = z67.object({
8695
8675
  // Kept optional so existing v1 rows still parse; the resolver reads the new
8696
8676
  // fields first and falls back to these. Do not surface in the UI.
8697
8677
  browserRegionOverride: BrowserRegionSchema.nullable().optional(),
8698
- sessionRecordingOverride: z67.boolean().nullable().optional()
8678
+ sessionRecordingOverride: z66.boolean().nullable().optional()
8699
8679
  });
8700
- var teamConfigSchema = z67.object({
8701
- version: z67.literal(TEAM_CONFIG_VERSION),
8680
+ var teamConfigSchema = z66.object({
8681
+ version: z66.literal(TEAM_CONFIG_VERSION),
8702
8682
  data: teamConfigDataSchema
8703
8683
  });
8704
- var listTeamInvitesResponseSchema = z67.object({
8705
- invitations: z67.array(teamInvitationApiSchema)
8684
+ var listTeamInvitesResponseSchema = z66.object({
8685
+ invitations: z66.array(teamInvitationApiSchema)
8706
8686
  });
8707
- var teamInsightsCopilotSchema = z68.object({
8708
- id: z68.guid(),
8709
- name: z68.string(),
8710
- teamName: z68.string().nullable().optional(),
8711
- created_at: z68.string().nullable(),
8712
- updated_at: z68.string().nullable(),
8713
- team_id: z68.string().nullable(),
8714
- thread_id: z68.string().nullable(),
8715
- slack_enabled: z68.boolean().nullable()
8716
- });
8717
- var teamInsightsUserProfileSchema = z68.object({
8718
- id: z68.guid(),
8719
- name: z68.string().nullable(),
8720
- email: z68.string()
8687
+ var teamInsightsCopilotSchema = z67.object({
8688
+ id: z67.guid(),
8689
+ name: z67.string(),
8690
+ teamName: z67.string().nullable().optional(),
8691
+ created_at: z67.string().nullable(),
8692
+ updated_at: z67.string().nullable(),
8693
+ team_id: z67.string().nullable(),
8694
+ thread_id: z67.string().nullable(),
8695
+ slack_enabled: z67.boolean().nullable()
8696
+ });
8697
+ var teamInsightsUserProfileSchema = z67.object({
8698
+ id: z67.guid(),
8699
+ name: z67.string().nullable(),
8700
+ email: z67.string()
8721
8701
  });
8722
8702
  var teamInsightsUserUsageSchema = teamInsightsUserProfileSchema.extend(
8723
8703
  {
8724
- runCount: z68.number(),
8725
- lastRun: z68.string().nullable()
8704
+ runCount: z67.number(),
8705
+ lastRun: z67.string().nullable()
8726
8706
  }
8727
8707
  );
8728
- var teamInsightsMetricSourceSchema = z68.object({
8708
+ var teamInsightsMetricSourceSchema = z67.object({
8729
8709
  source: agentRunSourceSchema,
8730
- runsTotal: z68.number(),
8731
- completedRuns: z68.number()
8710
+ runsTotal: z67.number(),
8711
+ completedRuns: z67.number()
8732
8712
  });
8733
8713
  var teamInsightsCopilotWithRunsSchema = teamInsightsCopilotSchema.extend({
8734
- integrations: z68.array(z68.string()),
8735
- uniqueUsersCount: z68.number(),
8736
- users: z68.array(teamInsightsUserUsageSchema),
8737
- totalRuns: z68.number(),
8738
- completedRuns: z68.number(),
8739
- totalTimeSpentMs: z68.number(),
8740
- averageTimeSpentMs: z68.number(),
8741
- completedRunsWithTiming: z68.number(),
8742
- sources: z68.array(teamInsightsMetricSourceSchema)
8743
- });
8744
- var teamInsightsAgentsRunResponseSchema = z68.object({
8745
- data: z68.array(teamInsightsCopilotWithRunsSchema),
8746
- total: z68.number()
8747
- });
8748
- var teamInsightsMetricsResponseSchema = z68.object({
8749
- runsTotal: z68.number(),
8750
- completedRuns: z68.number(),
8751
- sources: z68.array(teamInsightsMetricSourceSchema)
8752
- });
8753
- var teamInsightsUserAgentRunSchema = z68.object({
8754
- id: z68.guid(),
8755
- created_at: z68.string(),
8756
- updated_at: z68.string(),
8757
- agent_id: z68.guid(),
8758
- agent_name: z68.string(),
8759
- build_id: z68.guid(),
8760
- source: z68.string().nullable(),
8761
- started_at: z68.string().nullable(),
8762
- completed_at: z68.string().nullable()
8763
- });
8764
- var teamInsightsAgentSchema = z68.object({
8765
- id: z68.guid(),
8766
- name: z68.string(),
8767
- teamName: z68.string().nullable().optional(),
8768
- runs: z68.array(teamInsightsUserAgentRunSchema)
8714
+ integrations: z67.array(z67.string()),
8715
+ uniqueUsersCount: z67.number(),
8716
+ users: z67.array(teamInsightsUserUsageSchema),
8717
+ totalRuns: z67.number(),
8718
+ completedRuns: z67.number(),
8719
+ totalTimeSpentMs: z67.number(),
8720
+ averageTimeSpentMs: z67.number(),
8721
+ completedRunsWithTiming: z67.number(),
8722
+ sources: z67.array(teamInsightsMetricSourceSchema)
8723
+ });
8724
+ var teamInsightsAgentsRunResponseSchema = z67.object({
8725
+ data: z67.array(teamInsightsCopilotWithRunsSchema),
8726
+ total: z67.number()
8727
+ });
8728
+ var teamInsightsMetricsResponseSchema = z67.object({
8729
+ runsTotal: z67.number(),
8730
+ completedRuns: z67.number(),
8731
+ sources: z67.array(teamInsightsMetricSourceSchema)
8732
+ });
8733
+ var teamInsightsUserAgentRunSchema = z67.object({
8734
+ id: z67.guid(),
8735
+ created_at: z67.string(),
8736
+ updated_at: z67.string(),
8737
+ agent_id: z67.guid(),
8738
+ agent_name: z67.string(),
8739
+ build_id: z67.guid(),
8740
+ source: z67.string().nullable(),
8741
+ started_at: z67.string().nullable(),
8742
+ completed_at: z67.string().nullable()
8743
+ });
8744
+ var teamInsightsAgentSchema = z67.object({
8745
+ id: z67.guid(),
8746
+ name: z67.string(),
8747
+ teamName: z67.string().nullable().optional(),
8748
+ runs: z67.array(teamInsightsUserAgentRunSchema)
8769
8749
  });
8770
8750
  var teamInsightsUserWithAgentsAndRunsSchema = teamInsightsUserProfileSchema.extend({
8771
- agents: z68.array(teamInsightsAgentSchema),
8772
- runs: z68.array(teamInsightsUserAgentRunSchema),
8773
- totalRuns: z68.number()
8774
- });
8775
- var teamInsightsUsersResponseSchema = z68.object({
8776
- data: z68.array(teamInsightsUserWithAgentsAndRunsSchema),
8777
- total: z68.number()
8778
- });
8779
- var guardrailsAuthorSchema = z69.object({
8780
- id: z69.guid(),
8781
- name: z69.string().nullable(),
8782
- email: z69.email()
8783
- });
8784
- var guardrailsRevisionSchema = z69.object({
8785
- id: z69.guid(),
8786
- teamId: z69.guid(),
8787
- guardrailsText: z69.string().nullable(),
8788
- blockedDomains: z69.array(z69.string()),
8789
- createdAt: z69.string(),
8751
+ agents: z67.array(teamInsightsAgentSchema),
8752
+ runs: z67.array(teamInsightsUserAgentRunSchema),
8753
+ totalRuns: z67.number()
8754
+ });
8755
+ var teamInsightsUsersResponseSchema = z67.object({
8756
+ data: z67.array(teamInsightsUserWithAgentsAndRunsSchema),
8757
+ total: z67.number()
8758
+ });
8759
+ var guardrailsAuthorSchema = z68.object({
8760
+ id: z68.guid(),
8761
+ name: z68.string().nullable(),
8762
+ email: z68.email()
8763
+ });
8764
+ var guardrailsRevisionSchema = z68.object({
8765
+ id: z68.guid(),
8766
+ teamId: z68.guid(),
8767
+ guardrailsText: z68.string().nullable(),
8768
+ blockedDomains: z68.array(z68.string()),
8769
+ createdAt: z68.string(),
8790
8770
  createdBy: guardrailsAuthorSchema
8791
8771
  });
8792
- var getTeamGuardrailsResponseSchema = z69.object({
8772
+ var getTeamGuardrailsResponseSchema = z68.object({
8793
8773
  current: guardrailsRevisionSchema.nullable()
8794
8774
  });
8795
- var listTeamGuardrailsRevisionsQuerySchema = z69.object({
8796
- limit: z69.coerce.number().int().min(1).max(100).default(20),
8797
- offset: z69.coerce.number().int().min(0).default(0)
8775
+ var listTeamGuardrailsRevisionsQuerySchema = z68.object({
8776
+ limit: z68.coerce.number().int().min(1).max(100).default(20),
8777
+ offset: z68.coerce.number().int().min(0).default(0)
8798
8778
  });
8799
- var listTeamGuardrailsRevisionsResponseSchema = z69.object({
8800
- revisions: z69.array(guardrailsRevisionSchema),
8801
- total: z69.number().int().nonnegative()
8779
+ var listTeamGuardrailsRevisionsResponseSchema = z68.object({
8780
+ revisions: z68.array(guardrailsRevisionSchema),
8781
+ total: z68.number().int().nonnegative()
8802
8782
  });
8803
- var createTeamGuardrailsRevisionRequestSchema = z69.object({
8804
- guardrailsText: z69.string().max(MAX_GUARDRAILS_TEXT_LENGTH).nullable().transform((value) => value && value.trim().length > 0 ? value : null),
8805
- blockedDomains: z69.array(z69.string()).max(MAX_BLOCKED_DOMAINS)
8783
+ var createTeamGuardrailsRevisionRequestSchema = z68.object({
8784
+ guardrailsText: z68.string().max(MAX_GUARDRAILS_TEXT_LENGTH).nullable().transform((value) => value && value.trim().length > 0 ? value : null),
8785
+ blockedDomains: z68.array(z68.string()).max(MAX_BLOCKED_DOMAINS)
8806
8786
  });
8807
- var userDismissalListResponseSchema = z70.object({
8808
- data: z70.array(z70.string())
8787
+ var userDismissalListResponseSchema = z69.object({
8788
+ data: z69.array(z69.string())
8809
8789
  });
8810
- var userDismissalMutationSchema = z70.object({
8811
- elementKey: z70.string()
8790
+ var userDismissalMutationSchema = z69.object({
8791
+ elementKey: z69.string()
8812
8792
  });
8813
8793
  var PASSWORD_MIN = 1;
8814
8794
  var PASSWORD_MAX = 1024;
8815
8795
  var NAME_MAX = 200;
8816
8796
  var URL_MAX = 500;
8817
8797
  var USERNAME_MAX = 200;
8818
- var vpnProxyConfigSummarySchema = z71.object({
8819
- id: z71.guid(),
8820
- name: z71.string(),
8821
- server: z71.string(),
8822
- username: z71.string(),
8823
- enabled: z71.boolean(),
8824
- passwordSet: z71.boolean(),
8825
- organizationCount: z71.number().int().nonnegative(),
8826
- createdAt: z71.string(),
8827
- updatedAt: z71.string()
8828
- });
8829
- var vpnProxyConfigListResponseSchema = z71.object({
8830
- configs: z71.array(vpnProxyConfigSummarySchema)
8831
- });
8832
- var vpnProxyConfigCreateRequestSchema = z71.object({
8833
- name: z71.string().trim().min(1).max(NAME_MAX),
8834
- server: z71.string().trim().min(1).max(URL_MAX).url(),
8835
- username: z71.string().trim().min(1).max(USERNAME_MAX),
8836
- password: z71.string().min(PASSWORD_MIN).max(PASSWORD_MAX),
8837
- enabled: z71.boolean().prefault(true)
8838
- });
8839
- var vpnProxyConfigCreateResponseSchema = z71.object({
8798
+ var vpnProxyConfigSummarySchema = z70.object({
8799
+ id: z70.guid(),
8800
+ name: z70.string(),
8801
+ server: z70.string(),
8802
+ username: z70.string(),
8803
+ enabled: z70.boolean(),
8804
+ passwordSet: z70.boolean(),
8805
+ organizationCount: z70.number().int().nonnegative(),
8806
+ createdAt: z70.string(),
8807
+ updatedAt: z70.string()
8808
+ });
8809
+ var vpnProxyConfigListResponseSchema = z70.object({
8810
+ configs: z70.array(vpnProxyConfigSummarySchema)
8811
+ });
8812
+ var vpnProxyConfigCreateRequestSchema = z70.object({
8813
+ name: z70.string().trim().min(1).max(NAME_MAX),
8814
+ server: z70.string().trim().min(1).max(URL_MAX).url(),
8815
+ username: z70.string().trim().min(1).max(USERNAME_MAX),
8816
+ password: z70.string().min(PASSWORD_MIN).max(PASSWORD_MAX),
8817
+ enabled: z70.boolean().prefault(true)
8818
+ });
8819
+ var vpnProxyConfigCreateResponseSchema = z70.object({
8840
8820
  config: vpnProxyConfigSummarySchema
8841
8821
  });
8842
- var vpnProxyConfigUpdateRequestSchema = z71.object({
8843
- name: z71.string().trim().min(1).max(NAME_MAX).optional(),
8844
- server: z71.string().trim().min(1).max(URL_MAX).url().optional(),
8845
- username: z71.string().trim().min(1).max(USERNAME_MAX).optional(),
8846
- password: z71.string().min(PASSWORD_MIN).max(PASSWORD_MAX).optional(),
8847
- enabled: z71.boolean().optional()
8822
+ var vpnProxyConfigUpdateRequestSchema = z70.object({
8823
+ name: z70.string().trim().min(1).max(NAME_MAX).optional(),
8824
+ server: z70.string().trim().min(1).max(URL_MAX).url().optional(),
8825
+ username: z70.string().trim().min(1).max(USERNAME_MAX).optional(),
8826
+ password: z70.string().min(PASSWORD_MIN).max(PASSWORD_MAX).optional(),
8827
+ enabled: z70.boolean().optional()
8848
8828
  });
8849
- var vpnProxyConfigUpdateResponseSchema = z71.object({
8829
+ var vpnProxyConfigUpdateResponseSchema = z70.object({
8850
8830
  config: vpnProxyConfigSummarySchema
8851
8831
  });
8852
- var vpnProxyConfigDeleteResponseSchema = z71.object({
8853
- success: z71.literal(true)
8832
+ var vpnProxyConfigDeleteResponseSchema = z70.object({
8833
+ success: z70.literal(true)
8854
8834
  });
8855
- var vpnProxyConfigOrganizationSchema = z71.object({
8856
- id: z71.guid(),
8857
- organizationId: z71.guid(),
8858
- organizationName: z71.string(),
8859
- attachedAt: z71.string()
8835
+ var vpnProxyConfigOrganizationSchema = z70.object({
8836
+ id: z70.guid(),
8837
+ organizationId: z70.guid(),
8838
+ organizationName: z70.string(),
8839
+ attachedAt: z70.string()
8860
8840
  });
8861
- var vpnProxyConfigOrganizationListResponseSchema = z71.object({
8862
- organizations: z71.array(vpnProxyConfigOrganizationSchema)
8841
+ var vpnProxyConfigOrganizationListResponseSchema = z70.object({
8842
+ organizations: z70.array(vpnProxyConfigOrganizationSchema)
8863
8843
  });
8864
- var vpnProxyConfigAttachOrganizationRequestSchema = z71.object({
8865
- organizationId: z71.guid()
8844
+ var vpnProxyConfigAttachOrganizationRequestSchema = z70.object({
8845
+ organizationId: z70.guid()
8866
8846
  });
8867
- var vpnProxyConfigAttachOrganizationResponseSchema = z71.object({
8847
+ var vpnProxyConfigAttachOrganizationResponseSchema = z70.object({
8868
8848
  attachment: vpnProxyConfigOrganizationSchema
8869
8849
  });
8870
- var vpnProxyConfigDetachOrganizationResponseSchema = z71.object({
8871
- success: z71.literal(true)
8850
+ var vpnProxyConfigDetachOrganizationResponseSchema = z70.object({
8851
+ success: z70.literal(true)
8872
8852
  });
8873
- var vpnProxyConfigForOrganizationResponseSchema = z71.object({
8853
+ var vpnProxyConfigForOrganizationResponseSchema = z70.object({
8874
8854
  config: vpnProxyConfigSummarySchema.nullable()
8875
8855
  });
8876
8856
  function canonicalizeSopInput(config) {
@@ -8891,7 +8871,7 @@ function canonicalizeSopInput(config) {
8891
8871
  }
8892
8872
  __name(canonicalizeSopInput, "canonicalizeSopInput");
8893
8873
  __name2(canonicalizeSopInput, "canonicalizeSopInput");
8894
- var caseFilterStatusSchema = z72.enum([
8874
+ var caseFilterStatusSchema = z71.enum([
8895
8875
  "pending",
8896
8876
  "claimed",
8897
8877
  "completed",
@@ -8899,19 +8879,19 @@ var caseFilterStatusSchema = z72.enum([
8899
8879
  "needs_input",
8900
8880
  "postponed"
8901
8881
  ]);
8902
- var casesFiltersSchema = z72.object({
8903
- status: z72.array(caseFilterStatusSchema).optional(),
8904
- created_at_from: z72.string().optional(),
8905
- updated_at_from: z72.string().optional(),
8906
- labels: z72.record(z72.string(), z72.array(z72.string())).optional()
8882
+ var casesFiltersSchema = z71.object({
8883
+ status: z71.array(caseFilterStatusSchema).optional(),
8884
+ created_at_from: z71.string().optional(),
8885
+ updated_at_from: z71.string().optional(),
8886
+ labels: z71.record(z71.string(), z71.array(z71.string())).optional()
8907
8887
  });
8908
- var casesListRequestBodySchema = z72.object({
8888
+ var casesListRequestBodySchema = z71.object({
8909
8889
  filters: casesFiltersSchema.default({}),
8910
- limit: z72.int().min(1).max(100).default(25),
8911
- offset: z72.int().min(0).default(0),
8912
- sort_by: z72.enum(["created_at", "updated_at", "postponed_to"]).default("created_at"),
8913
- sort_order: z72.enum(["asc", "desc"]).default("desc"),
8914
- search: z72.string().optional()
8890
+ limit: z71.int().min(1).max(100).default(25),
8891
+ offset: z71.int().min(0).default(0),
8892
+ sort_by: z71.enum(["created_at", "updated_at", "postponed_to"]).default("created_at"),
8893
+ sort_order: z71.enum(["asc", "desc"]).default("desc"),
8894
+ search: z71.string().optional()
8915
8895
  });
8916
8896
  function toBase64(input) {
8917
8897
  if (typeof btoa === "function") {
@@ -9006,7 +8986,7 @@ function setFilterValuesByCategoryKey(filters, categoryKey, values) {
9006
8986
  const { status: _, ...rest } = filters;
9007
8987
  return rest;
9008
8988
  }
9009
- const parsed = z72.array(caseFilterStatusSchema).safeParse(values);
8989
+ const parsed = z71.array(caseFilterStatusSchema).safeParse(values);
9010
8990
  if (!parsed.success) {
9011
8991
  return filters;
9012
8992
  }
@@ -9252,6 +9232,91 @@ function safeParseJson(input, log2, schema) {
9252
9232
  }
9253
9233
  __name(safeParseJson, "safeParseJson");
9254
9234
  __name2(safeParseJson, "safeParseJson");
9235
+ var QUEUE_MENTION_REGEX_SOURCE = `<DUVO:QUEUE\\s+id="((?:[^"\\\\]|\\\\.)*)"\\s+name="((?:[^"\\\\]|\\\\.)*)">`;
9236
+ function escapeAttrValue(value) {
9237
+ return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
9238
+ }
9239
+ __name(escapeAttrValue, "escapeAttrValue");
9240
+ __name2(escapeAttrValue, "escapeAttrValue");
9241
+ function unescapeAttrValue2(value) {
9242
+ return value.replace(/\\(.)/g, "$1");
9243
+ }
9244
+ __name(unescapeAttrValue2, "unescapeAttrValue2");
9245
+ __name2(unescapeAttrValue2, "unescapeAttrValue");
9246
+ function createQueueMentionRegex() {
9247
+ return new RegExp(QUEUE_MENTION_REGEX_SOURCE, "g");
9248
+ }
9249
+ __name(createQueueMentionRegex, "createQueueMentionRegex");
9250
+ __name2(createQueueMentionRegex, "createQueueMentionRegex");
9251
+ function serializeQueueMention(id, name) {
9252
+ return `<DUVO:QUEUE id="${escapeAttrValue(id)}" name="${escapeAttrValue(name)}">`;
9253
+ }
9254
+ __name(serializeQueueMention, "serializeQueueMention");
9255
+ __name2(serializeQueueMention, "serializeQueueMention");
9256
+ function parseQueueMentionSegments(text3) {
9257
+ if (!text3) {
9258
+ return [];
9259
+ }
9260
+ const segments = [];
9261
+ let lastIndex = 0;
9262
+ for (const match of text3.matchAll(createQueueMentionRegex())) {
9263
+ const matchStart = match.index ?? 0;
9264
+ if (matchStart > lastIndex) {
9265
+ segments.push({ type: "text", value: text3.slice(lastIndex, matchStart) });
9266
+ }
9267
+ segments.push({
9268
+ type: "mention",
9269
+ id: unescapeAttrValue2(match[1]),
9270
+ name: unescapeAttrValue2(match[2])
9271
+ });
9272
+ lastIndex = matchStart + match[0].length;
9273
+ }
9274
+ if (lastIndex < text3.length) {
9275
+ segments.push({ type: "text", value: text3.slice(lastIndex) });
9276
+ }
9277
+ return segments;
9278
+ }
9279
+ __name(parseQueueMentionSegments, "parseQueueMentionSegments");
9280
+ __name2(parseQueueMentionSegments, "parseQueueMentionSegments");
9281
+ function extractQueueMentions(text3) {
9282
+ if (!text3) {
9283
+ return [];
9284
+ }
9285
+ const seen = /* @__PURE__ */ new Set();
9286
+ const mentions = [];
9287
+ for (const match of text3.matchAll(createQueueMentionRegex())) {
9288
+ const id = unescapeAttrValue2(match[1]);
9289
+ if (seen.has(id)) {
9290
+ continue;
9291
+ }
9292
+ seen.add(id);
9293
+ mentions.push({ id, name: unescapeAttrValue2(match[2]) });
9294
+ }
9295
+ return mentions;
9296
+ }
9297
+ __name(extractQueueMentions, "extractQueueMentions");
9298
+ __name2(extractQueueMentions, "extractQueueMentions");
9299
+ function textContainsQueueMention(text3) {
9300
+ if (!text3) {
9301
+ return false;
9302
+ }
9303
+ return createQueueMentionRegex().test(text3);
9304
+ }
9305
+ __name(textContainsQueueMention, "textContainsQueueMention");
9306
+ __name2(textContainsQueueMention, "textContainsQueueMention");
9307
+ function formatQueueMentionsAsText(text3) {
9308
+ if (!text3) {
9309
+ return text3;
9310
+ }
9311
+ return text3.replace(
9312
+ createQueueMentionRegex(),
9313
+ (_match, _id, name) => {
9314
+ return `@${unescapeAttrValue2(name)}`;
9315
+ }
9316
+ );
9317
+ }
9318
+ __name(formatQueueMentionsAsText, "formatQueueMentionsAsText");
9319
+ __name2(formatQueueMentionsAsText, "formatQueueMentionsAsText");
9255
9320
  var BASE_HUES = [0, 30, 50, 90, 145, 175, 215, 270, 330];
9256
9321
  function isLabelHue(value) {
9257
9322
  return BASE_HUES.includes(value);
@@ -10146,11 +10211,11 @@ function emptyConfig() {
10146
10211
  __name(emptyConfig, "emptyConfig");
10147
10212
 
10148
10213
  // src/config/env.ts
10149
- import { z as z73 } from "zod";
10150
- var optionalEnvString = z73.string().optional().transform(
10214
+ import { z as z72 } from "zod";
10215
+ var optionalEnvString = z72.string().optional().transform(
10151
10216
  (value) => value === void 0 || value === "" ? void 0 : value
10152
10217
  );
10153
- var CliEnvSchema = z73.object({
10218
+ var CliEnvSchema = z72.object({
10154
10219
  DUVO_PROFILE: optionalEnvString,
10155
10220
  DUVO_API_KEY: optionalEnvString,
10156
10221
  DUVO_API_BASE_URL: optionalEnvString,
@@ -10646,9 +10711,9 @@ async function requireAuthenticatedConfig(command) {
10646
10711
  __name(requireAuthenticatedConfig, "requireAuthenticatedConfig");
10647
10712
 
10648
10713
  // src/commands/shared/team-context.ts
10649
- import { z as z74 } from "zod";
10650
- var teamSchema = z74.object({ id: z74.string() });
10651
- var listMyTeamsResponseSchema = z74.object({ teams: z74.array(teamSchema) });
10714
+ import { z as z73 } from "zod";
10715
+ var teamSchema = z73.object({ id: z73.string() });
10716
+ var listMyTeamsResponseSchema = z73.object({ teams: z73.array(teamSchema) });
10652
10717
  async function resolveRequiredTeamId(config, options = {}) {
10653
10718
  if (options.override) {
10654
10719
  return options.override;
@@ -11436,56 +11501,56 @@ import { readFile as readFile2 } from "node:fs/promises";
11436
11501
  import { confirm as confirm2, isCancel as isCancel2, text } from "@clack/prompts";
11437
11502
 
11438
11503
  // src/api/agent-schemas.ts
11439
- import { z as z76 } from "zod";
11504
+ import { z as z75 } from "zod";
11440
11505
 
11441
11506
  // src/api/json-value.ts
11442
- import { z as z75 } from "zod";
11443
- var jsonValueSchema = z75.lazy(
11444
- () => z75.union([
11445
- z75.string(),
11446
- z75.number(),
11447
- z75.boolean(),
11448
- z75.null(),
11449
- z75.array(jsonValueSchema),
11450
- z75.record(z75.string(), jsonValueSchema)
11507
+ import { z as z74 } from "zod";
11508
+ var jsonValueSchema = z74.lazy(
11509
+ () => z74.union([
11510
+ z74.string(),
11511
+ z74.number(),
11512
+ z74.boolean(),
11513
+ z74.null(),
11514
+ z74.array(jsonValueSchema),
11515
+ z74.record(z74.string(), jsonValueSchema)
11451
11516
  ])
11452
11517
  );
11453
11518
 
11454
11519
  // src/api/agent-schemas.ts
11455
- var publicAgentSchema = z76.object({
11456
- id: z76.string(),
11457
- name: z76.string(),
11458
- slack_enabled: z76.boolean().nullish(),
11459
- microsoft_teams_enabled: z76.boolean().nullish(),
11460
- agentic_memory_enabled: z76.boolean().nullish(),
11461
- thread_id: z76.string().nullish(),
11462
- created_at: z76.string().nullish(),
11463
- updated_at: z76.string().nullish(),
11464
- latest_build: z76.object({ config: jsonValueSchema.nullish() }).nullish()
11465
- });
11466
- var publicBuildSchema = z76.object({
11467
- id: z76.string(),
11468
- agent_id: z76.string(),
11469
- name: z76.string(),
11470
- revision_number: z76.number().nullish(),
11471
- created_at: z76.string().nullish(),
11472
- updated_at: z76.string().nullish()
11473
- });
11474
- var listAgentsResponseSchema = z76.object({
11475
- agents: z76.array(publicAgentSchema),
11476
- total: z76.number().nullish(),
11477
- limit: z76.number().nullish(),
11478
- offset: z76.number().nullish()
11479
- });
11480
- var getAgentResponseSchema = z76.object({
11520
+ var publicAgentSchema = z75.object({
11521
+ id: z75.string(),
11522
+ name: z75.string(),
11523
+ slack_enabled: z75.boolean().nullish(),
11524
+ microsoft_teams_enabled: z75.boolean().nullish(),
11525
+ agentic_memory_enabled: z75.boolean().nullish(),
11526
+ thread_id: z75.string().nullish(),
11527
+ created_at: z75.string().nullish(),
11528
+ updated_at: z75.string().nullish(),
11529
+ latest_build: z75.object({ config: jsonValueSchema.nullish() }).nullish()
11530
+ });
11531
+ var publicBuildSchema = z75.object({
11532
+ id: z75.string(),
11533
+ agent_id: z75.string(),
11534
+ name: z75.string(),
11535
+ revision_number: z75.number().nullish(),
11536
+ created_at: z75.string().nullish(),
11537
+ updated_at: z75.string().nullish()
11538
+ });
11539
+ var listAgentsResponseSchema = z75.object({
11540
+ agents: z75.array(publicAgentSchema),
11541
+ total: z75.number().nullish(),
11542
+ limit: z75.number().nullish(),
11543
+ offset: z75.number().nullish()
11544
+ });
11545
+ var getAgentResponseSchema = z75.object({
11481
11546
  agent: publicAgentSchema
11482
11547
  });
11483
- var createAgentResponseSchema = z76.object({
11548
+ var createAgentResponseSchema = z75.object({
11484
11549
  agent: publicAgentSchema,
11485
11550
  build: publicBuildSchema.optional()
11486
11551
  });
11487
- var deleteAgentResponseSchema = z76.object({
11488
- success: z76.literal(true)
11552
+ var deleteAgentResponseSchema = z75.object({
11553
+ success: z75.literal(true)
11489
11554
  });
11490
11555
  var buildConfigSchema = StoredAgentConfigSchemaV2;
11491
11556
  var DEFAULT_NEW_AGENT_NAME = DEFAULT_AGENT_NAME;
@@ -11935,29 +12000,29 @@ function registerAgentsEvalScores(agents) {
11935
12000
  __name(registerAgentsEvalScores, "registerAgentsEvalScores");
11936
12001
 
11937
12002
  // src/api/build-schemas.ts
11938
- import { z as z77 } from "zod";
11939
- var publicBuildSchema2 = z77.object({
11940
- id: z77.string(),
11941
- agent_id: z77.string(),
11942
- name: z77.string(),
11943
- status: z77.string().nullish(),
12003
+ import { z as z76 } from "zod";
12004
+ var publicBuildSchema2 = z76.object({
12005
+ id: z76.string(),
12006
+ agent_id: z76.string(),
12007
+ name: z76.string(),
12008
+ status: z76.string().nullish(),
11944
12009
  config: jsonValueSchema.nullish(),
11945
- revision_number: z77.number().nullish(),
11946
- created_at: z77.string().nullish(),
11947
- updated_at: z77.string().nullish()
12010
+ revision_number: z76.number().nullish(),
12011
+ created_at: z76.string().nullish(),
12012
+ updated_at: z76.string().nullish()
11948
12013
  });
11949
- var listBuildsResponseSchema2 = z77.object({
11950
- builds: z77.array(publicBuildSchema2),
11951
- total: z77.number().nullish(),
11952
- limit: z77.number().nullish(),
11953
- offset: z77.number().nullish()
12014
+ var listBuildsResponseSchema2 = z76.object({
12015
+ builds: z76.array(publicBuildSchema2),
12016
+ total: z76.number().nullish(),
12017
+ limit: z76.number().nullish(),
12018
+ offset: z76.number().nullish()
11954
12019
  });
11955
- var getBuildResponseSchema = z77.object({
12020
+ var getBuildResponseSchema = z76.object({
11956
12021
  build: publicBuildSchema2
11957
12022
  });
11958
- var createBuildResponseSchema = z77.object({
12023
+ var createBuildResponseSchema = z76.object({
11959
12024
  build: publicBuildSchema2,
11960
- agent: z77.object({ id: z77.string() })
12025
+ agent: z76.object({ id: z76.string() })
11961
12026
  });
11962
12027
 
11963
12028
  // src/commands/agents/get.ts
@@ -12207,30 +12272,30 @@ function registerAgentsModels(agents) {
12207
12272
  __name(registerAgentsModels, "registerAgentsModels");
12208
12273
 
12209
12274
  // src/api/schedule-schemas.ts
12210
- import { z as z78 } from "zod";
12211
- var publicScheduleSchema = z78.object({
12212
- id: z78.string(),
12213
- build_id: z78.string(),
12214
- agent_id: z78.string(),
12215
- user_id: z78.string(),
12216
- enabled: z78.boolean(),
12217
- frequency: z78.string(),
12218
- time: z78.string().nullish(),
12219
- timezone: z78.string(),
12220
- day: z78.string().nullish(),
12221
- day_of_month: z78.number().nullish(),
12222
- cron: z78.string().nullish(),
12223
- source: z78.string().nullish(),
12224
- task: z78.string().nullish(),
12225
- recurring: z78.boolean().nullish(),
12226
- created_at: z78.string(),
12227
- updated_at: z78.string()
12228
- });
12229
- var listSchedulesResponseSchema = z78.object({
12230
- schedules: z78.array(publicScheduleSchema)
12231
- });
12232
- var deleteScheduleResponseSchema = z78.object({
12233
- success: z78.literal(true)
12275
+ import { z as z77 } from "zod";
12276
+ var publicScheduleSchema = z77.object({
12277
+ id: z77.string(),
12278
+ build_id: z77.string(),
12279
+ agent_id: z77.string(),
12280
+ user_id: z77.string(),
12281
+ enabled: z77.boolean(),
12282
+ frequency: z77.string(),
12283
+ time: z77.string().nullish(),
12284
+ timezone: z77.string(),
12285
+ day: z77.string().nullish(),
12286
+ day_of_month: z77.number().nullish(),
12287
+ cron: z77.string().nullish(),
12288
+ source: z77.string().nullish(),
12289
+ task: z77.string().nullish(),
12290
+ recurring: z77.boolean().nullish(),
12291
+ created_at: z77.string(),
12292
+ updated_at: z77.string()
12293
+ });
12294
+ var listSchedulesResponseSchema = z77.object({
12295
+ schedules: z77.array(publicScheduleSchema)
12296
+ });
12297
+ var deleteScheduleResponseSchema = z77.object({
12298
+ success: z77.literal(true)
12234
12299
  });
12235
12300
 
12236
12301
  // src/commands/agents/schedules/render-schedule.ts
@@ -12678,33 +12743,33 @@ function registerAgentsSetModel(agents) {
12678
12743
  __name(registerAgentsSetModel, "registerAgentsSetModel");
12679
12744
 
12680
12745
  // src/api/trigger-schemas.ts
12681
- import { z as z79 } from "zod";
12682
- var triggerSchema = z79.object({
12683
- id: z79.string(),
12684
- agent_id: z79.string(),
12685
- user_id: z79.string(),
12686
- integration_slug: z79.string(),
12687
- trigger_type: z79.string(),
12688
- filter_config: z79.record(z79.string(), z79.unknown()),
12689
- integration_instance_id: z79.string(),
12690
- enabled: z79.boolean(),
12691
- created_at: z79.string(),
12692
- updated_at: z79.string()
12746
+ import { z as z78 } from "zod";
12747
+ var triggerSchema = z78.object({
12748
+ id: z78.string(),
12749
+ agent_id: z78.string(),
12750
+ user_id: z78.string(),
12751
+ integration_slug: z78.string(),
12752
+ trigger_type: z78.string(),
12753
+ filter_config: z78.record(z78.string(), z78.unknown()),
12754
+ integration_instance_id: z78.string(),
12755
+ enabled: z78.boolean(),
12756
+ created_at: z78.string(),
12757
+ updated_at: z78.string()
12693
12758
  });
12694
- var listTriggersResponseSchema = z79.object({
12695
- triggers: z79.array(triggerSchema)
12759
+ var listTriggersResponseSchema = z78.object({
12760
+ triggers: z78.array(triggerSchema)
12696
12761
  });
12697
- var triggerTypeSchema = z79.object({
12698
- integration_slug: z79.string(),
12699
- integration_name: z79.string(),
12700
- icon_url: z79.string(),
12701
- trigger_type: z79.string(),
12702
- label: z79.string(),
12703
- description: z79.string(),
12704
- filter_schema: z79.record(z79.string(), z79.unknown())
12762
+ var triggerTypeSchema = z78.object({
12763
+ integration_slug: z78.string(),
12764
+ integration_name: z78.string(),
12765
+ icon_url: z78.string(),
12766
+ trigger_type: z78.string(),
12767
+ label: z78.string(),
12768
+ description: z78.string(),
12769
+ filter_schema: z78.record(z78.string(), z78.unknown())
12705
12770
  });
12706
- var listTriggerTypesResponseSchema = z79.object({
12707
- trigger_types: z79.array(triggerTypeSchema)
12771
+ var listTriggerTypesResponseSchema = z78.object({
12772
+ trigger_types: z78.array(triggerTypeSchema)
12708
12773
  });
12709
12774
 
12710
12775
  // src/commands/agents/triggers/list.ts
@@ -13328,55 +13393,55 @@ function fieldsToSearchParams(fields) {
13328
13393
  __name(fieldsToSearchParams, "fieldsToSearchParams");
13329
13394
 
13330
13395
  // src/api/integration-schemas.ts
13331
- import { z as z80 } from "zod";
13332
- var integrationSchema = z80.object({
13333
- id: z80.string(),
13334
- name: z80.string(),
13335
- type: z80.string(),
13336
- provider: z80.string(),
13337
- user_id: z80.string().nullable(),
13338
- team_id: z80.string(),
13339
- server_url: z80.string().optional(),
13340
- transport_type: z80.string().optional(),
13341
- auth_method: z80.string().nullish(),
13342
- composio_mcp_id: z80.string().nullish(),
13343
- custom_integration_id: z80.string().nullish(),
13344
- icon_url: z80.string().nullish(),
13345
- oauth_provider: z80.string().nullish(),
13346
- oauth_provider_key: z80.string().nullish(),
13347
- oauth_scopes: z80.array(z80.string()).nullish(),
13348
- integration_id: z80.string().nullish(),
13349
- created_at: z80.string(),
13350
- updated_at: z80.string()
13351
- });
13352
- var integrationsListResponseSchema2 = z80.object({
13353
- integrations: z80.array(integrationSchema)
13396
+ import { z as z79 } from "zod";
13397
+ var integrationSchema = z79.object({
13398
+ id: z79.string(),
13399
+ name: z79.string(),
13400
+ type: z79.string(),
13401
+ provider: z79.string(),
13402
+ user_id: z79.string().nullable(),
13403
+ team_id: z79.string(),
13404
+ server_url: z79.string().optional(),
13405
+ transport_type: z79.string().optional(),
13406
+ auth_method: z79.string().nullish(),
13407
+ composio_mcp_id: z79.string().nullish(),
13408
+ custom_integration_id: z79.string().nullish(),
13409
+ icon_url: z79.string().nullish(),
13410
+ oauth_provider: z79.string().nullish(),
13411
+ oauth_provider_key: z79.string().nullish(),
13412
+ oauth_scopes: z79.array(z79.string()).nullish(),
13413
+ integration_id: z79.string().nullish(),
13414
+ created_at: z79.string(),
13415
+ updated_at: z79.string()
13416
+ });
13417
+ var integrationsListResponseSchema2 = z79.object({
13418
+ integrations: z79.array(integrationSchema)
13354
13419
  });
13355
13420
  var connectionResponseSchema = integrationSchema;
13356
- var buildIntegrationConfigSchema2 = z80.object({
13357
- id: z80.string(),
13358
- integration_id: z80.string().nullable(),
13359
- custom_integration_id: z80.string().nullable(),
13360
- integration_type: z80.string(),
13361
- integration_name: z80.string(),
13362
- created_at: z80.string()
13421
+ var buildIntegrationConfigSchema2 = z79.object({
13422
+ id: z79.string(),
13423
+ integration_id: z79.string().nullable(),
13424
+ custom_integration_id: z79.string().nullable(),
13425
+ integration_type: z79.string(),
13426
+ integration_name: z79.string(),
13427
+ created_at: z79.string()
13363
13428
  });
13364
- var listBuildIntegrationsResponseSchema2 = z80.object({
13365
- integrations: z80.array(buildIntegrationConfigSchema2)
13429
+ var listBuildIntegrationsResponseSchema2 = z79.object({
13430
+ integrations: z79.array(buildIntegrationConfigSchema2)
13366
13431
  });
13367
- var attachBuildIntegrationsResponseSchema = z80.object({
13368
- success: z80.boolean(),
13369
- count: z80.number()
13432
+ var attachBuildIntegrationsResponseSchema = z79.object({
13433
+ success: z79.boolean(),
13434
+ count: z79.number()
13370
13435
  });
13371
- var buildIntegrationConnectionSchema = z80.object({
13372
- connection_id: z80.string(),
13373
- created_at: z80.string()
13436
+ var buildIntegrationConnectionSchema = z79.object({
13437
+ connection_id: z79.string(),
13438
+ created_at: z79.string()
13374
13439
  });
13375
- var listBuildIntegrationConnectionsResponseSchema = z80.object({
13376
- connections: z80.array(buildIntegrationConnectionSchema)
13440
+ var listBuildIntegrationConnectionsResponseSchema = z79.object({
13441
+ connections: z79.array(buildIntegrationConnectionSchema)
13377
13442
  });
13378
- var successResponseSchema = z80.object({
13379
- success: z80.boolean()
13443
+ var successResponseSchema = z79.object({
13444
+ success: z79.boolean()
13380
13445
  });
13381
13446
 
13382
13447
  // src/commands/build-integrations/attach.ts
@@ -13419,15 +13484,15 @@ function registerBuildIntegrationsAttach(buildIntegrations) {
13419
13484
  __name(registerBuildIntegrationsAttach, "registerBuildIntegrationsAttach");
13420
13485
 
13421
13486
  // src/commands/build-integrations/case-queue-setup.ts
13422
- import { z as z81 } from "zod";
13423
- var slotSchema = z81.object({
13424
- config_id: z81.string(),
13425
- integration_type: z81.string(),
13426
- linked_queue_count: z81.number()
13487
+ import { z as z80 } from "zod";
13488
+ var slotSchema = z80.object({
13489
+ config_id: z80.string(),
13490
+ integration_type: z80.string(),
13491
+ linked_queue_count: z80.number()
13427
13492
  });
13428
- var responseSchema2 = z81.object({
13429
- configs: z81.array(slotSchema),
13430
- has_available_queues: z81.boolean()
13493
+ var responseSchema2 = z80.object({
13494
+ configs: z80.array(slotSchema),
13495
+ has_available_queues: z80.boolean()
13431
13496
  });
13432
13497
  var TABLE_COLUMNS10 = [
13433
13498
  { header: "SLOT ID", cell: /* @__PURE__ */ __name((row) => row.config_id, "cell") },
@@ -13922,9 +13987,9 @@ function registerBuildsList(builds) {
13922
13987
  __name(registerBuildsList, "registerBuildsList");
13923
13988
 
13924
13989
  // src/commands/builds/promote.ts
13925
- import { z as z82 } from "zod";
13926
- var promoteResponseSchema = z82.object({
13927
- success: z82.boolean()
13990
+ import { z as z81 } from "zod";
13991
+ var promoteResponseSchema = z81.object({
13992
+ success: z81.boolean()
13928
13993
  });
13929
13994
  function registerBuildsPromote(builds) {
13930
13995
  builds.command("promote <id>").description(
@@ -14935,7 +15000,7 @@ function parseSortOrder(raw) {
14935
15000
  __name(parseSortOrder, "parseSortOrder");
14936
15001
 
14937
15002
  // src/commands/cases/runs.ts
14938
- import { z as z83 } from "zod";
15003
+ import { z as z82 } from "zod";
14939
15004
  var MIN_LIMIT4 = 1;
14940
15005
  var MAX_LIMIT4 = 10;
14941
15006
  var DEFAULT_LIMIT4 = 3;
@@ -14953,17 +15018,17 @@ var RUNS_TABLE_COLUMNS = [
14953
15018
  cell: /* @__PURE__ */ __name((row) => row.has_pending_human_request ? row.pending_human_request_title ?? "(unknown)" : "", "cell")
14954
15019
  }
14955
15020
  ];
14956
- var recentMessageSchema = z83.object({
14957
- id: z83.string(),
14958
- type: z83.string(),
14959
- role: z83.string(),
14960
- timestamp: z83.string(),
14961
- text_content: z83.string().nullish(),
14962
- tool_call: z83.object({ id: z83.string(), name: z83.string() }).passthrough().nullish(),
14963
- tool_result: z83.object({ tool_call_id: z83.string() }).passthrough().nullish()
14964
- });
14965
- var recentMessagesResponseSchema = z83.object({
14966
- messages: z83.array(recentMessageSchema)
15021
+ var recentMessageSchema = z82.object({
15022
+ id: z82.string(),
15023
+ type: z82.string(),
15024
+ role: z82.string(),
15025
+ timestamp: z82.string(),
15026
+ text_content: z82.string().nullish(),
15027
+ tool_call: z82.object({ id: z82.string(), name: z82.string() }).passthrough().nullish(),
15028
+ tool_result: z82.object({ tool_call_id: z82.string() }).passthrough().nullish()
15029
+ });
15030
+ var recentMessagesResponseSchema = z82.object({
15031
+ messages: z82.array(recentMessageSchema)
14967
15032
  });
14968
15033
  var TEXT_PREVIEW_WIDTH = 60;
14969
15034
  var MESSAGES_TABLE_COLUMNS = [
@@ -15092,55 +15157,55 @@ function registerCases(program) {
15092
15157
  __name(registerCases, "registerCases");
15093
15158
 
15094
15159
  // src/api/clarity-schemas.ts
15095
- import { z as z84 } from "zod";
15096
- var clarityListProcessSchema = z84.object({
15097
- id: z84.guid(),
15098
- name: z84.string(),
15160
+ import { z as z83 } from "zod";
15161
+ var clarityListProcessSchema = z83.object({
15162
+ id: z83.guid(),
15163
+ name: z83.string(),
15099
15164
  status: clarityProcessStatusSchema,
15100
15165
  visibility: clarityProcessVisibilitySchema,
15101
- version: z84.number().int(),
15102
- capture_count: z84.number().int(),
15103
- capture_counts: z84.object({
15104
- video: z84.number().int(),
15105
- interview: z84.number().int(),
15106
- document: z84.number().int()
15166
+ version: z83.number().int(),
15167
+ capture_count: z83.number().int(),
15168
+ capture_counts: z83.object({
15169
+ video: z83.number().int(),
15170
+ interview: z83.number().int(),
15171
+ document: z83.number().int()
15107
15172
  }).optional(),
15108
- pending_invitation_count: z84.number().int(),
15109
- contributors: z84.array(
15110
- z84.object({
15111
- user_id: z84.string(),
15112
- user_name: z84.string()
15173
+ pending_invitation_count: z83.number().int(),
15174
+ contributors: z83.array(
15175
+ z83.object({
15176
+ user_id: z83.string(),
15177
+ user_name: z83.string()
15113
15178
  })
15114
15179
  ),
15115
- created_at: z84.string(),
15116
- created_by_name: z84.string().nullable()
15117
- });
15118
- var listClarityProcessesResponseSchema = z84.object({
15119
- processes: z84.array(clarityListProcessSchema),
15120
- total: z84.number().int(),
15121
- limit: z84.number().int(),
15122
- offset: z84.number().int()
15123
- });
15124
- var createClarityInviteLinkResponseSchema = z84.object({
15125
- invite_link: z84.object({
15126
- id: z84.guid(),
15127
- url: z84.url(),
15128
- created_at: z84.string(),
15129
- created_by: z84.object({
15130
- id: z84.guid(),
15131
- email: z84.email().nullable()
15180
+ created_at: z83.string(),
15181
+ created_by_name: z83.string().nullable()
15182
+ });
15183
+ var listClarityProcessesResponseSchema = z83.object({
15184
+ processes: z83.array(clarityListProcessSchema),
15185
+ total: z83.number().int(),
15186
+ limit: z83.number().int(),
15187
+ offset: z83.number().int()
15188
+ });
15189
+ var createClarityInviteLinkResponseSchema = z83.object({
15190
+ invite_link: z83.object({
15191
+ id: z83.guid(),
15192
+ url: z83.url(),
15193
+ created_at: z83.string(),
15194
+ created_by: z83.object({
15195
+ id: z83.guid(),
15196
+ email: z83.email().nullable()
15132
15197
  })
15133
15198
  })
15134
15199
  });
15135
- var createArtifactImportUploadUrlResponseSchema = z84.object({
15136
- signed_url: z84.url(),
15137
- capture_id: z84.guid(),
15138
- expires_at: z84.iso.datetime()
15200
+ var createArtifactImportUploadUrlResponseSchema = z83.object({
15201
+ signed_url: z83.url(),
15202
+ capture_id: z83.guid(),
15203
+ expires_at: z83.iso.datetime()
15139
15204
  });
15140
- var completeArtifactImportResponseSchema = z84.object({
15205
+ var completeArtifactImportResponseSchema = z83.object({
15141
15206
  capture: clarityCaptureSchema.extend({
15142
- createdAt: z84.iso.datetime(),
15143
- updatedAt: z84.iso.datetime()
15207
+ createdAt: z83.iso.datetime(),
15208
+ updatedAt: z83.iso.datetime()
15144
15209
  })
15145
15210
  });
15146
15211
  var legacyClarityProcessResponseSchema = legacyClarityProcessDetailSchema;
@@ -15579,8 +15644,8 @@ function renderCompletedImport(response) {
15579
15644
  __name(renderCompletedImport, "renderCompletedImport");
15580
15645
 
15581
15646
  // src/commands/clarity/assign-extra-capture-request.ts
15582
- import { z as z85 } from "zod";
15583
- var responseSchema3 = z85.object({
15647
+ import { z as z84 } from "zod";
15648
+ var responseSchema3 = z84.object({
15584
15649
  request: clarityProposalExtraCaptureRequestSchema
15585
15650
  });
15586
15651
  function renderRequest(request) {
@@ -15627,11 +15692,11 @@ function registerClarityAssignExtraCaptureRequest(clarity) {
15627
15692
  __name(registerClarityAssignExtraCaptureRequest, "registerClarityAssignExtraCaptureRequest");
15628
15693
 
15629
15694
  // src/commands/clarity/build-automation.ts
15630
- import { z as z86 } from "zod";
15631
- var responseSchema4 = z86.object({
15632
- automation_run: z86.object({
15633
- id: z86.string(),
15634
- status: z86.string()
15695
+ import { z as z85 } from "zod";
15696
+ var responseSchema4 = z85.object({
15697
+ automation_run: z85.object({
15698
+ id: z85.string(),
15699
+ status: z85.string()
15635
15700
  })
15636
15701
  });
15637
15702
  function registerClarityBuildAutomation(clarity) {
@@ -15702,7 +15767,7 @@ function registerClarityCreateInviteLink(clarity) {
15702
15767
  __name(registerClarityCreateInviteLink, "registerClarityCreateInviteLink");
15703
15768
 
15704
15769
  // src/commands/clarity/doctor.ts
15705
- import { z as z87 } from "zod";
15770
+ import { z as z86 } from "zod";
15706
15771
 
15707
15772
  // src/commands/clarity/render.ts
15708
15773
  var DEFAULT_HUMAN_SUMMARY_LIMIT = 1200;
@@ -16934,6 +16999,19 @@ var CLARITY_READ_TOOLS = [
16934
16999
  }
16935
17000
  ],
16936
17001
  description: "Read messages for one artifact-chat conversation in a v2 process."
17002
+ },
17003
+ {
17004
+ name: "listClarityProcessLinks",
17005
+ scope: "v1+v2",
17006
+ read_only: true,
17007
+ commands: ["duvo clarity process-links list"],
17008
+ endpoints: [
17009
+ {
17010
+ method: "GET",
17011
+ path: "/v2/teams/:teamId/clarity/hierarchy/process-links"
17012
+ }
17013
+ ],
17014
+ description: "List process-to-process links in the Clarity process landscape."
16937
17015
  }
16938
17016
  ];
16939
17017
  var CLARITY_WRITE_TOOLS = [
@@ -17131,6 +17209,45 @@ var CLARITY_WRITE_TOOLS = [
17131
17209
  }
17132
17210
  ],
17133
17211
  description: "Upload and complete a local Miro SVG, XML, PNG, or JPEG export."
17212
+ },
17213
+ {
17214
+ name: "createClarityProcessLink",
17215
+ scope: "v1+v2",
17216
+ read_only: false,
17217
+ commands: ["duvo clarity process-links create"],
17218
+ endpoints: [
17219
+ {
17220
+ method: "POST",
17221
+ path: "/v2/teams/:teamId/clarity/hierarchy/process-links"
17222
+ }
17223
+ ],
17224
+ description: "Create a process-to-process link in the Clarity landscape."
17225
+ },
17226
+ {
17227
+ name: "updateClarityProcessLink",
17228
+ scope: "v1+v2",
17229
+ read_only: false,
17230
+ commands: ["duvo clarity process-links update"],
17231
+ endpoints: [
17232
+ {
17233
+ method: "PATCH",
17234
+ path: "/v2/teams/:teamId/clarity/hierarchy/process-links/:process_link_id"
17235
+ }
17236
+ ],
17237
+ description: "Update a process-to-process link in the Clarity landscape."
17238
+ },
17239
+ {
17240
+ name: "deleteClarityProcessLink",
17241
+ scope: "v1+v2",
17242
+ read_only: false,
17243
+ commands: ["duvo clarity process-links delete"],
17244
+ endpoints: [
17245
+ {
17246
+ method: "DELETE",
17247
+ path: "/v2/teams/:teamId/clarity/hierarchy/process-links/:process_link_id"
17248
+ }
17249
+ ],
17250
+ description: "Delete a process-to-process link from the Clarity landscape."
17134
17251
  }
17135
17252
  ];
17136
17253
  var CLARITY_TOOLS = [
@@ -17160,7 +17277,7 @@ function registerClarityTools(clarity) {
17160
17277
  console.log(renderTable(CLARITY_TOOL_COLUMNS, CLARITY_TOOLS));
17161
17278
  console.log("");
17162
17279
  console.log(
17163
- "Clarity tools include read-only GET calls and explicit write commands for generation, promotion, revert, assignment, postprocess, automation, artifact import, and invite links."
17280
+ "Clarity tools include read-only GET calls and explicit write commands for generation, promotion, revert, assignment, postprocess, automation, artifact import, invite links, and process links."
17164
17281
  );
17165
17282
  });
17166
17283
  }
@@ -17303,8 +17420,8 @@ async function buildTeamContextCheck(config) {
17303
17420
  }
17304
17421
  }
17305
17422
  __name(buildTeamContextCheck, "buildTeamContextCheck");
17306
- var listMyTeamsResponseSchema2 = z87.object({
17307
- teams: z87.array(z87.object({ id: z87.string() }))
17423
+ var listMyTeamsResponseSchema2 = z86.object({
17424
+ teams: z86.array(z86.object({ id: z86.string() }))
17308
17425
  });
17309
17426
  async function buildClarityApiReachableCheck(command, config) {
17310
17427
  let teamId;
@@ -17922,19 +18039,19 @@ function buildGenerateTransformationProposalBody(options) {
17922
18039
  __name(buildGenerateTransformationProposalBody, "buildGenerateTransformationProposalBody");
17923
18040
 
17924
18041
  // src/commands/clarity/get-current-process.ts
17925
- import { z as z88 } from "zod";
17926
- var snapshotSchema = z88.object({
17927
- snapshot: z88.object({
17928
- id: z88.string(),
17929
- kind: z88.string(),
17930
- source_snapshot_id: z88.string().nullable(),
17931
- parent_id: z88.string().nullable(),
17932
- status: z88.string(),
17933
- creator_type: z88.string(),
17934
- user_id: z88.string().nullable(),
17935
- sandbox_id: z88.string().nullable(),
17936
- created_at: z88.string(),
17937
- updated_at: z88.string()
18042
+ import { z as z87 } from "zod";
18043
+ var snapshotSchema = z87.object({
18044
+ snapshot: z87.object({
18045
+ id: z87.string(),
18046
+ kind: z87.string(),
18047
+ source_snapshot_id: z87.string().nullable(),
18048
+ parent_id: z87.string().nullable(),
18049
+ status: z87.string(),
18050
+ creator_type: z87.string(),
18051
+ user_id: z87.string().nullable(),
18052
+ sandbox_id: z87.string().nullable(),
18053
+ created_at: z87.string(),
18054
+ updated_at: z87.string()
17938
18055
  })
17939
18056
  });
17940
18057
  function registerClarityGetCurrentProcess(clarity) {
@@ -17978,19 +18095,19 @@ function registerClarityGetCurrentProcess(clarity) {
17978
18095
  __name(registerClarityGetCurrentProcess, "registerClarityGetCurrentProcess");
17979
18096
 
17980
18097
  // src/commands/clarity/get-transformation-proposal.ts
17981
- import { z as z89 } from "zod";
17982
- var snapshotSchema2 = z89.object({
17983
- snapshot: z89.object({
17984
- id: z89.string(),
17985
- kind: z89.string(),
17986
- source_snapshot_id: z89.string().nullable(),
17987
- parent_id: z89.string().nullable(),
17988
- status: z89.string(),
17989
- creator_type: z89.string(),
17990
- user_id: z89.string().nullable(),
17991
- sandbox_id: z89.string().nullable(),
17992
- created_at: z89.string(),
17993
- updated_at: z89.string()
18098
+ import { z as z88 } from "zod";
18099
+ var snapshotSchema2 = z88.object({
18100
+ snapshot: z88.object({
18101
+ id: z88.string(),
18102
+ kind: z88.string(),
18103
+ source_snapshot_id: z88.string().nullable(),
18104
+ parent_id: z88.string().nullable(),
18105
+ status: z88.string(),
18106
+ creator_type: z88.string(),
18107
+ user_id: z88.string().nullable(),
18108
+ sandbox_id: z88.string().nullable(),
18109
+ created_at: z88.string(),
18110
+ updated_at: z88.string()
17994
18111
  })
17995
18112
  });
17996
18113
  function registerClarityGetTransformationProposal(clarity) {
@@ -18187,39 +18304,267 @@ function registerClarityPostprocess(clarity) {
18187
18304
  }
18188
18305
  __name(registerClarityPostprocess, "registerClarityPostprocess");
18189
18306
 
18190
- // src/commands/clarity/promote-current-process.ts
18191
- import { z as z90 } from "zod";
18192
- var snapshotSchema3 = z90.object({
18193
- snapshot: z90.object({
18194
- id: z90.string(),
18195
- status: z90.string(),
18196
- creator_type: z90.string(),
18197
- created_at: z90.string(),
18198
- updated_at: z90.string()
18199
- })
18200
- });
18201
- function registerClarityPromoteCurrentProcess(clarity) {
18202
- clarity.command("promote-current-process <process-id> <snapshot-id>").description("Promote a current-process snapshot to live").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function action(processId, snapshotId, options) {
18203
- const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
18307
+ // src/commands/clarity/process-links.ts
18308
+ import { z as z89 } from "zod";
18309
+ var MIN_LIMIT6 = 1;
18310
+ var MAX_LIMIT6 = 500;
18311
+ var DEFAULT_LIMIT6 = 100;
18312
+ var PROCESS_LINKS_RESOURCE_PATH = "/clarity/hierarchy/process-links";
18313
+ var processLinkTypeSchema = z89.enum([
18314
+ "hands_off_to",
18315
+ "shares_step_with",
18316
+ "variant_of"
18317
+ ]);
18318
+ var processLinkStateSchema = z89.enum(["suggested", "confirmed"]);
18319
+ var processLinkSchema = z89.object({
18320
+ id: z89.string(),
18321
+ source_node_id: z89.string(),
18322
+ target_node_id: z89.string(),
18323
+ type: processLinkTypeSchema,
18324
+ state: processLinkStateSchema,
18325
+ confidence: z89.number().nullable(),
18326
+ created_at: z89.string(),
18327
+ updated_at: z89.string()
18328
+ });
18329
+ var listProcessLinksResponseSchema = z89.object({
18330
+ process_links: z89.array(processLinkSchema),
18331
+ total: z89.number(),
18332
+ limit: z89.number(),
18333
+ offset: z89.number()
18334
+ });
18335
+ var processLinkMutationResponseSchema = z89.object({
18336
+ process_link: processLinkSchema,
18337
+ created: z89.boolean().optional()
18338
+ });
18339
+ var deleteProcessLinkResponseSchema = z89.object({
18340
+ deleted: z89.boolean()
18341
+ });
18342
+ var PROCESS_LINK_COLUMNS = [
18343
+ { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell"), maxWidth: 36 },
18344
+ {
18345
+ header: "SOURCE",
18346
+ cell: /* @__PURE__ */ __name((row) => row.source_node_id, "cell"),
18347
+ maxWidth: 36
18348
+ },
18349
+ {
18350
+ header: "TARGET",
18351
+ cell: /* @__PURE__ */ __name((row) => row.target_node_id, "cell"),
18352
+ maxWidth: 36
18353
+ },
18354
+ { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
18355
+ { header: "STATE", cell: /* @__PURE__ */ __name((row) => row.state, "cell") },
18356
+ {
18357
+ header: "CONF",
18358
+ cell: /* @__PURE__ */ __name((row) => row.confidence === null ? "-" : row.confidence.toFixed(2), "cell")
18359
+ }
18360
+ ];
18361
+ function registerClarityProcessLinks(clarity) {
18362
+ const processLinks = clarity.command("process-links").description("Manage Clarity process links");
18363
+ processLinks.command("list", { isDefault: true }).description("List process links in the current team").option("--node <node-id>", "only show links touching this process node").option("--limit <n>", `page size (${MIN_LIMIT6}-${MAX_LIMIT6})`).option("--offset <n>", "number of links to skip").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function listAction(options) {
18364
+ const config = await requireAuthenticatedConfig(this);
18365
+ const path = await resolveProcessLinksPath(this, config);
18366
+ const response = await listProcessLinks(config, path, options);
18367
+ if (options.json) {
18368
+ printJson(response);
18369
+ return;
18370
+ }
18371
+ renderProcessLinks(response);
18372
+ }, "listAction"));
18373
+ processLinks.command("create").description("Create a process link").requiredOption("--source-node <node-id>", "source process node id").requiredOption("--target-node <node-id>", "target process node id").requiredOption(
18374
+ "--type <type>",
18375
+ "hands_off_to, shares_step_with, or variant_of"
18376
+ ).option("--state <state>", "suggested or confirmed").option("--confidence <number>", "confidence score from 0 to 1").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function createAction(options) {
18377
+ const config = await requireAuthenticatedConfig(this);
18378
+ const path = await resolveProcessLinksPath(this, config);
18379
+ const body = buildCreateBody(options);
18204
18380
  const raw = await httpRequest({
18205
18381
  method: "POST",
18206
- path: `/v2/clarity-v2/processes/${encodeURIComponent(processId)}/snapshots/current_process/${encodeURIComponent(snapshotId)}/promote`,
18207
- apiKey,
18208
- apiBaseUrl
18382
+ path,
18383
+ apiKey: config.apiKey,
18384
+ apiBaseUrl: config.apiBaseUrl,
18385
+ body
18209
18386
  });
18387
+ const response = parseMutationResponse(raw);
18210
18388
  if (options.json) {
18211
- printJson(raw);
18389
+ printJson(response);
18212
18390
  return;
18213
18391
  }
18214
- const parsed = snapshotSchema3.safeParse(raw);
18215
- if (!parsed.success) {
18216
- throw new CliError(
18217
- `Unexpected response from the API: ${parsed.error.message}`
18218
- );
18392
+ const action = response.created === false ? "Found" : "Created";
18393
+ console.log(`${action} process link: ${response.process_link.id}`);
18394
+ }, "createAction"));
18395
+ processLinks.command("update <link-id>").description("Update a process link").option("--source-node <node-id>", "replacement source process node id").option("--target-node <node-id>", "replacement target process node id").option("--type <type>", "hands_off_to, shares_step_with, or variant_of").option("--state <state>", "suggested or confirmed").option("--confidence <number>", "confidence score from 0 to 1").option("--clear-confidence", "clear the confidence score").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function updateAction(linkId, options) {
18396
+ const config = await requireAuthenticatedConfig(this);
18397
+ const path = await resolveProcessLinksPath(this, config);
18398
+ const body = buildUpdateBody(options);
18399
+ const raw = await httpRequest({
18400
+ method: "PATCH",
18401
+ path: `${path}/${encodeURIComponent(linkId)}`,
18402
+ apiKey: config.apiKey,
18403
+ apiBaseUrl: config.apiBaseUrl,
18404
+ body
18405
+ });
18406
+ const response = parseMutationResponse(raw);
18407
+ if (options.json) {
18408
+ printJson(response);
18409
+ return;
18219
18410
  }
18220
- const { snapshot } = parsed.data;
18221
- console.log(
18222
- renderKeyValue([
18411
+ console.log(`Updated process link: ${response.process_link.id}`);
18412
+ }, "updateAction"));
18413
+ processLinks.command("delete <link-id>").description("Delete a process link").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function deleteAction(linkId, options) {
18414
+ const config = await requireAuthenticatedConfig(this);
18415
+ const path = await resolveProcessLinksPath(this, config);
18416
+ const raw = await httpRequest({
18417
+ method: "DELETE",
18418
+ path: `${path}/${encodeURIComponent(linkId)}`,
18419
+ apiKey: config.apiKey,
18420
+ apiBaseUrl: config.apiBaseUrl
18421
+ });
18422
+ const response = deleteProcessLinkResponseSchema.parse(raw);
18423
+ if (options.json) {
18424
+ printJson(response);
18425
+ return;
18426
+ }
18427
+ console.log(`Deleted process link: ${linkId}`);
18428
+ }, "deleteAction"));
18429
+ }
18430
+ __name(registerClarityProcessLinks, "registerClarityProcessLinks");
18431
+ async function listProcessLinks(config, path, options) {
18432
+ const limit = parseLimit(options.limit, {
18433
+ defaultValue: DEFAULT_LIMIT6,
18434
+ min: MIN_LIMIT6,
18435
+ max: MAX_LIMIT6
18436
+ });
18437
+ const offset = parseOffset(options.offset);
18438
+ const searchParams = new URLSearchParams({
18439
+ limit: String(limit),
18440
+ offset: String(offset)
18441
+ });
18442
+ if (options.node) {
18443
+ searchParams.set("node_id", options.node);
18444
+ }
18445
+ const raw = await httpRequest({
18446
+ method: "GET",
18447
+ path,
18448
+ apiKey: config.apiKey,
18449
+ apiBaseUrl: config.apiBaseUrl,
18450
+ searchParams
18451
+ });
18452
+ return listProcessLinksResponseSchema.parse(raw);
18453
+ }
18454
+ __name(listProcessLinks, "listProcessLinks");
18455
+ async function resolveProcessLinksPath(command, config) {
18456
+ const teamId = await resolveRequiredTeamId(config, {
18457
+ override: getTeamFlag(command)
18458
+ });
18459
+ return buildTeamPath(teamId, PROCESS_LINKS_RESOURCE_PATH);
18460
+ }
18461
+ __name(resolveProcessLinksPath, "resolveProcessLinksPath");
18462
+ function buildCreateBody(options) {
18463
+ return {
18464
+ source_node_id: options.sourceNode,
18465
+ target_node_id: options.targetNode,
18466
+ type: parseProcessLinkType(options.type),
18467
+ ...options.state !== void 0 ? { state: parseProcessLinkState(options.state) } : {},
18468
+ ...options.confidence !== void 0 ? { confidence: parseConfidence(options.confidence) } : {}
18469
+ };
18470
+ }
18471
+ __name(buildCreateBody, "buildCreateBody");
18472
+ function buildUpdateBody(options) {
18473
+ if (options.confidence !== void 0 && options.clearConfidence) {
18474
+ throw new CliError(
18475
+ "Use either --confidence or --clear-confidence, not both."
18476
+ );
18477
+ }
18478
+ const body = {
18479
+ ...options.sourceNode !== void 0 ? { source_node_id: options.sourceNode } : {},
18480
+ ...options.targetNode !== void 0 ? { target_node_id: options.targetNode } : {},
18481
+ ...options.type !== void 0 ? { type: parseProcessLinkType(options.type) } : {},
18482
+ ...options.state !== void 0 ? { state: parseProcessLinkState(options.state) } : {},
18483
+ ...options.clearConfidence ? { confidence: null } : {},
18484
+ ...options.confidence !== void 0 ? { confidence: parseConfidence(options.confidence) } : {}
18485
+ };
18486
+ if (Object.keys(body).length === 0) {
18487
+ throw new CliError("Pass at least one field to update.");
18488
+ }
18489
+ return body;
18490
+ }
18491
+ __name(buildUpdateBody, "buildUpdateBody");
18492
+ function parseProcessLinkType(value) {
18493
+ const parsed = processLinkTypeSchema.safeParse(value);
18494
+ if (!parsed.success) {
18495
+ throw new CliError(
18496
+ "Link type must be one of: hands_off_to, shares_step_with, variant_of."
18497
+ );
18498
+ }
18499
+ return parsed.data;
18500
+ }
18501
+ __name(parseProcessLinkType, "parseProcessLinkType");
18502
+ function parseProcessLinkState(value) {
18503
+ const parsed = processLinkStateSchema.safeParse(value);
18504
+ if (!parsed.success) {
18505
+ throw new CliError("Link state must be suggested or confirmed.");
18506
+ }
18507
+ return parsed.data;
18508
+ }
18509
+ __name(parseProcessLinkState, "parseProcessLinkState");
18510
+ function parseConfidence(value) {
18511
+ const parsed = Number(value);
18512
+ if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
18513
+ throw new CliError("Confidence must be a number from 0 to 1.");
18514
+ }
18515
+ return parsed;
18516
+ }
18517
+ __name(parseConfidence, "parseConfidence");
18518
+ function parseMutationResponse(raw) {
18519
+ return processLinkMutationResponseSchema.parse(raw);
18520
+ }
18521
+ __name(parseMutationResponse, "parseMutationResponse");
18522
+ function renderProcessLinks(response) {
18523
+ if (response.process_links.length === 0) {
18524
+ console.log("No process links found.");
18525
+ return;
18526
+ }
18527
+ console.log(renderTable(PROCESS_LINK_COLUMNS, response.process_links));
18528
+ console.log("");
18529
+ console.log(
18530
+ `Showing ${response.process_links.length} of ${response.total} \xB7 offset ${response.offset}`
18531
+ );
18532
+ }
18533
+ __name(renderProcessLinks, "renderProcessLinks");
18534
+
18535
+ // src/commands/clarity/promote-current-process.ts
18536
+ import { z as z90 } from "zod";
18537
+ var snapshotSchema3 = z90.object({
18538
+ snapshot: z90.object({
18539
+ id: z90.string(),
18540
+ status: z90.string(),
18541
+ creator_type: z90.string(),
18542
+ created_at: z90.string(),
18543
+ updated_at: z90.string()
18544
+ })
18545
+ });
18546
+ function registerClarityPromoteCurrentProcess(clarity) {
18547
+ clarity.command("promote-current-process <process-id> <snapshot-id>").description("Promote a current-process snapshot to live").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function action(processId, snapshotId, options) {
18548
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
18549
+ const raw = await httpRequest({
18550
+ method: "POST",
18551
+ path: `/v2/clarity-v2/processes/${encodeURIComponent(processId)}/snapshots/current_process/${encodeURIComponent(snapshotId)}/promote`,
18552
+ apiKey,
18553
+ apiBaseUrl
18554
+ });
18555
+ if (options.json) {
18556
+ printJson(raw);
18557
+ return;
18558
+ }
18559
+ const parsed = snapshotSchema3.safeParse(raw);
18560
+ if (!parsed.success) {
18561
+ throw new CliError(
18562
+ `Unexpected response from the API: ${parsed.error.message}`
18563
+ );
18564
+ }
18565
+ const { snapshot } = parsed.data;
18566
+ console.log(
18567
+ renderKeyValue([
18223
18568
  { label: "ID", value: snapshot.id },
18224
18569
  { label: "Status", value: snapshot.status },
18225
18570
  { label: "Creator type", value: snapshot.creator_type },
@@ -18316,9 +18661,14 @@ __name(registerClarityRevertTransformationProposal, "registerClarityRevertTransf
18316
18661
  // src/commands/clarity/save-snapshot.ts
18317
18662
  import { readFile as readFile6 } from "node:fs/promises";
18318
18663
  import { z as z92 } from "zod";
18319
- var stepsFileSchema = z92.union([
18664
+ var snapshotFileSchema = z92.union([
18320
18665
  saveClarityProcessSnapshotBodySchema.shape.steps,
18321
- z92.object({ steps: saveClarityProcessSnapshotBodySchema.shape.steps })
18666
+ saveClarityProcessSnapshotBodySchema.pick({
18667
+ steps: true,
18668
+ summary: true,
18669
+ swot: true,
18670
+ projectedImpact: true
18671
+ })
18322
18672
  ]);
18323
18673
  function registerClaritySaveCurrentProcess(clarity) {
18324
18674
  clarity.command("save-current-process <process-id>").description("Save edited current-process steps as the live snapshot").requiredOption(
@@ -18326,15 +18676,16 @@ function registerClaritySaveCurrentProcess(clarity) {
18326
18676
  "current-process snapshot the edits are based on"
18327
18677
  ).requiredOption(
18328
18678
  "--steps-file <path>",
18329
- "JSON file containing an array of edited steps or an object with a steps array"
18679
+ "JSON file containing an array of edited steps or an object with steps and narrative roots"
18330
18680
  ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function action(processId, options) {
18681
+ const snapshotFile = await readSnapshotFile(options.stepsFile);
18331
18682
  await saveSnapshot({
18332
18683
  command: this,
18333
18684
  processId,
18334
18685
  kind: "current_process",
18335
18686
  body: {
18336
18687
  baselineSnapshotId: options.baselineSnapshotId,
18337
- steps: await readStepsFile(options.stepsFile)
18688
+ ...snapshotFile
18338
18689
  },
18339
18690
  json: options.json === true
18340
18691
  });
@@ -18349,11 +18700,12 @@ function registerClaritySaveTransformationProposal(clarity) {
18349
18700
  "transformation-proposal snapshot the edits are based on"
18350
18701
  ).requiredOption(
18351
18702
  "--steps-file <path>",
18352
- "JSON file containing an array of edited steps or an object with a steps array"
18703
+ "JSON file containing an array of edited steps or an object with steps and narrative roots"
18353
18704
  ).option(
18354
18705
  "--current-process-id <id>",
18355
18706
  "current-process snapshot anchor expected by the edited proposal"
18356
18707
  ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function action(processId, options) {
18708
+ const snapshotFile = await readSnapshotFile(options.stepsFile);
18357
18709
  await saveSnapshot({
18358
18710
  command: this,
18359
18711
  processId,
@@ -18361,7 +18713,7 @@ function registerClaritySaveTransformationProposal(clarity) {
18361
18713
  body: {
18362
18714
  baselineSnapshotId: options.baselineSnapshotId,
18363
18715
  clarityCurrentProcessId: options.currentProcessId,
18364
- steps: await readStepsFile(options.stepsFile)
18716
+ ...snapshotFile
18365
18717
  },
18366
18718
  json: options.json === true
18367
18719
  });
@@ -18404,7 +18756,7 @@ async function saveSnapshot(args) {
18404
18756
  );
18405
18757
  }
18406
18758
  __name(saveSnapshot, "saveSnapshot");
18407
- async function readStepsFile(path) {
18759
+ async function readSnapshotFile(path) {
18408
18760
  let raw;
18409
18761
  try {
18410
18762
  raw = await readFile6(path, "utf8");
@@ -18419,15 +18771,15 @@ async function readStepsFile(path) {
18419
18771
  const message = error instanceof Error ? error.message : String(error);
18420
18772
  throw new CliError(`Invalid JSON in "${path}": ${message}`);
18421
18773
  }
18422
- const parsed = stepsFileSchema.safeParse(json);
18774
+ const parsed = snapshotFileSchema.safeParse(json);
18423
18775
  if (!parsed.success) {
18424
18776
  throw new CliError(
18425
- `Invalid steps file "${path}": expected a step array or an object with a steps array. ${parsed.error.message}`
18777
+ `Invalid steps file "${path}": expected a step array or an object with a steps array and optional narrative roots. ${parsed.error.message}`
18426
18778
  );
18427
18779
  }
18428
- return Array.isArray(parsed.data) ? parsed.data : parsed.data.steps;
18780
+ return Array.isArray(parsed.data) ? { steps: parsed.data } : parsed.data;
18429
18781
  }
18430
- __name(readStepsFile, "readStepsFile");
18782
+ __name(readSnapshotFile, "readSnapshotFile");
18431
18783
 
18432
18784
  // src/commands/clarity/stop-current-process.ts
18433
18785
  function registerClarityStopCurrentProcess(clarity) {
@@ -18468,9 +18820,9 @@ function registerClarityStopTransformationProposal(clarity) {
18468
18820
  __name(registerClarityStopTransformationProposal, "registerClarityStopTransformationProposal");
18469
18821
 
18470
18822
  // src/commands/clarity/index.ts
18471
- var DEFAULT_LIMIT6 = 50;
18472
- var MIN_LIMIT6 = 1;
18473
- var MAX_LIMIT6 = 100;
18823
+ var DEFAULT_LIMIT7 = 50;
18824
+ var MIN_LIMIT7 = 1;
18825
+ var MAX_LIMIT7 = 100;
18474
18826
  var CLARITY_V2_REQUIRED_MESSAGE = "This command requires Clarity v2. Use `duvo clarity overview <process-id>` to read legacy v1 context.";
18475
18827
  function registerClarity(program) {
18476
18828
  const clarity = program.command("clarity").description("Manage and read Clarity processes in the Duvo public API");
@@ -18509,6 +18861,7 @@ function registerClarity(program) {
18509
18861
  registerClarityRevertTransformationProposal(clarity);
18510
18862
  registerClarityAssignExtraCaptureRequest(clarity);
18511
18863
  registerClarityPostprocess(clarity);
18864
+ registerClarityProcessLinks(clarity);
18512
18865
  registerClarityBuildAutomation(clarity);
18513
18866
  registerClarityStopCurrentProcess(clarity);
18514
18867
  registerClarityStopTransformationProposal(clarity);
@@ -18517,7 +18870,7 @@ function registerClarity(program) {
18517
18870
  }
18518
18871
  __name(registerClarity, "registerClarity");
18519
18872
  function registerList(clarity) {
18520
- clarity.command("list", { isDefault: true }).description("List Clarity processes for the current team").option("--limit <n>", `page size (${MIN_LIMIT6}-${MAX_LIMIT6})`).option("--offset <n>", "number of processes to skip").option("--search <query>", "case-insensitive search across process names").option("--status <status>", "filter by lifecycle status").option(
18873
+ clarity.command("list", { isDefault: true }).description("List Clarity processes for the current team").option("--limit <n>", `page size (${MIN_LIMIT7}-${MAX_LIMIT7})`).option("--offset <n>", "number of processes to skip").option("--search <query>", "case-insensitive search across process names").option("--status <status>", "filter by lifecycle status").option(
18521
18874
  "--process-version <1|2>",
18522
18875
  "filter by Clarity process schema version"
18523
18876
  ).option("--json", "output JSON").option("--csv", "output CSV").action(/* @__PURE__ */ __name(async function listAction(options) {
@@ -18527,7 +18880,7 @@ function registerList(clarity) {
18527
18880
  }
18528
18881
  __name(registerList, "registerList");
18529
18882
  function registerSearch(clarity) {
18530
- clarity.command("search <query>").description("Search Clarity processes by name").option("--limit <n>", `page size (${MIN_LIMIT6}-${MAX_LIMIT6})`).option("--offset <n>", "number of processes to skip").option("--status <status>", "filter by lifecycle status").option(
18883
+ clarity.command("search <query>").description("Search Clarity processes by name").option("--limit <n>", `page size (${MIN_LIMIT7}-${MAX_LIMIT7})`).option("--offset <n>", "number of processes to skip").option("--status <status>", "filter by lifecycle status").option(
18531
18884
  "--process-version <1|2>",
18532
18885
  "filter by Clarity process schema version"
18533
18886
  ).option("--json", "output JSON").option("--csv", "output CSV").action(/* @__PURE__ */ __name(async function searchAction(query, options) {
@@ -18872,9 +19225,9 @@ function registerExport(clarity) {
18872
19225
  __name(registerExport, "registerExport");
18873
19226
  async function loadProcessList(command, options) {
18874
19227
  const limit = parseLimit(options.limit, {
18875
- defaultValue: DEFAULT_LIMIT6,
18876
- min: MIN_LIMIT6,
18877
- max: MAX_LIMIT6
19228
+ defaultValue: DEFAULT_LIMIT7,
19229
+ min: MIN_LIMIT7,
19230
+ max: MAX_LIMIT7
18878
19231
  });
18879
19232
  const offset = parseOffset(options.offset);
18880
19233
  const version2 = parseProcessVersion(options.processVersion);
@@ -21833,8 +22186,255 @@ function registerProfiles(program) {
21833
22186
  }
21834
22187
  __name(registerProfiles, "registerProfiles");
21835
22188
 
21836
- // src/commands/queue-labels/index.ts
22189
+ // src/commands/pulse/create.ts
22190
+ function registerPulseCreate(pulse) {
22191
+ pulse.command("create").description(
22192
+ "Create a Pulse dashboard from a prompt (e.g. 'open cases by queue this week'). Generation runs asynchronously \u2014 poll `duvo pulse get <id>` until status is completed."
22193
+ ).requiredOption(
22194
+ "--message <text>",
22195
+ "what you want the dashboard to show (max 10000 chars)"
22196
+ ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function createAction(options) {
22197
+ const message = options.message?.trim();
22198
+ if (!message) {
22199
+ throw new CliError("--message is required.");
22200
+ }
22201
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22202
+ const raw = await httpRequest({
22203
+ method: "POST",
22204
+ path: "/v1/artifacts",
22205
+ apiKey,
22206
+ apiBaseUrl,
22207
+ body: { message }
22208
+ });
22209
+ if (options.json) {
22210
+ printJson(raw);
22211
+ return;
22212
+ }
22213
+ const parsed = createArtifactResponseSchema.safeParse(raw);
22214
+ if (!parsed.success) {
22215
+ throw new CliError(
22216
+ `Unexpected response from the API: ${parsed.error.message}`
22217
+ );
22218
+ }
22219
+ const { artifact_id: artifactId } = parsed.data;
22220
+ console.log(green("Pulse dashboard created. The agent is building it\u2026"));
22221
+ console.log();
22222
+ console.log(renderKeyValue([{ label: "ID", value: artifactId }]));
22223
+ console.log();
22224
+ console.log(`Track progress with: duvo pulse get ${artifactId}`);
22225
+ }, "createAction"));
22226
+ }
22227
+ __name(registerPulseCreate, "registerPulseCreate");
22228
+
22229
+ // src/commands/pulse/delete.ts
22230
+ function registerPulseDelete(pulse) {
22231
+ pulse.command("delete <id>").description("Delete a Pulse dashboard (creator only)").option("-y, --yes", "skip the confirmation prompt").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function deleteAction(id, options) {
22232
+ const pulseId = trimRequired(id, "<id>");
22233
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22234
+ await confirmDestructive({
22235
+ message: `Delete Pulse dashboard "${pulseId}"?`,
22236
+ skip: options.yes ?? false
22237
+ });
22238
+ const raw = await httpRequest({
22239
+ method: "DELETE",
22240
+ path: `/v1/artifacts/${encodeURIComponent(pulseId)}`,
22241
+ apiKey,
22242
+ apiBaseUrl
22243
+ });
22244
+ if (options.json) {
22245
+ printJson(raw);
22246
+ return;
22247
+ }
22248
+ const parsed = deleteArtifactResponseSchema.safeParse(raw);
22249
+ if (!parsed.success) {
22250
+ throw new CliError(
22251
+ `Unexpected response from the API: ${parsed.error.message}`
22252
+ );
22253
+ }
22254
+ console.log(green(`Pulse dashboard "${pulseId}" deleted.`));
22255
+ }, "deleteAction"));
22256
+ }
22257
+ __name(registerPulseDelete, "registerPulseDelete");
22258
+
22259
+ // src/commands/pulse/get.ts
22260
+ function registerPulseGet(pulse) {
22261
+ pulse.command("get <id>").description("Get a Pulse dashboard's metadata and generation status").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function getAction(id, options) {
22262
+ const pulseId = trimRequired(id, "<id>");
22263
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22264
+ const raw = await httpRequest({
22265
+ method: "GET",
22266
+ path: `/v1/artifacts/${encodeURIComponent(pulseId)}`,
22267
+ apiKey,
22268
+ apiBaseUrl
22269
+ });
22270
+ if (options.json) {
22271
+ printJson(raw);
22272
+ return;
22273
+ }
22274
+ const parsed = artifactDetailResponseSchema.safeParse(raw);
22275
+ if (!parsed.success) {
22276
+ throw new CliError(
22277
+ `Unexpected response from the API: ${parsed.error.message}`
22278
+ );
22279
+ }
22280
+ const { artifact: dashboard } = parsed.data;
22281
+ console.log(
22282
+ renderKeyValue([
22283
+ { label: "ID", value: dashboard.id },
22284
+ { label: "Title", value: dashboard.title ?? "" },
22285
+ { label: "Status", value: dashboard.status },
22286
+ {
22287
+ label: "Rendered",
22288
+ value: dashboard.html_code_present ? "yes" : "no"
22289
+ },
22290
+ { label: "Created", value: dashboard.created_at },
22291
+ { label: "Updated", value: dashboard.updated_at }
22292
+ ])
22293
+ );
22294
+ if (dashboard.html_code_present) {
22295
+ console.log();
22296
+ console.log(
22297
+ `Read the rendered HTML with: duvo pulse html ${dashboard.id}`
22298
+ );
22299
+ }
22300
+ }, "getAction"));
22301
+ }
22302
+ __name(registerPulseGet, "registerPulseGet");
22303
+
22304
+ // src/commands/pulse/html.ts
22305
+ function registerPulseHtml(pulse) {
22306
+ pulse.command("html <id>").description(
22307
+ "Print a Pulse dashboard's rendered HTML document to stdout (pipe to a file or browser)"
22308
+ ).action(/* @__PURE__ */ __name(async function htmlAction(id) {
22309
+ const pulseId = trimRequired(id, "<id>");
22310
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22311
+ const raw = await httpRequest({
22312
+ method: "GET",
22313
+ path: `/v1/artifacts/${encodeURIComponent(pulseId)}/render`,
22314
+ apiKey,
22315
+ apiBaseUrl
22316
+ });
22317
+ if (typeof raw !== "string") {
22318
+ throw new CliError(
22319
+ "Unexpected response from the API: expected an HTML document."
22320
+ );
22321
+ }
22322
+ console.log(raw);
22323
+ }, "htmlAction"));
22324
+ }
22325
+ __name(registerPulseHtml, "registerPulseHtml");
22326
+
22327
+ // src/commands/pulse/list.ts
22328
+ var DEFAULT_LIMIT8 = 20;
22329
+ var MIN_LIMIT8 = 1;
22330
+ var MAX_LIMIT8 = 100;
21837
22331
  var TABLE_COLUMNS27 = [
22332
+ { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
22333
+ {
22334
+ header: "TITLE",
22335
+ cell: /* @__PURE__ */ __name((row) => row.title ?? "", "cell"),
22336
+ maxWidth: 50
22337
+ },
22338
+ { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
22339
+ { header: "UPDATED", cell: /* @__PURE__ */ __name((row) => row.updated_at, "cell") }
22340
+ ];
22341
+ function registerPulseList(pulse) {
22342
+ pulse.command("list", { isDefault: true }).description("List your Pulse dashboards").option(
22343
+ "--shared",
22344
+ "list dashboards shared with you (created by teammates) instead of your own"
22345
+ ).option("--limit <n>", `page size (${MIN_LIMIT8}-${MAX_LIMIT8})`).option("--offset <n>", "number of dashboards to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
22346
+ const limit = parseLimit(options.limit, {
22347
+ defaultValue: DEFAULT_LIMIT8,
22348
+ min: MIN_LIMIT8,
22349
+ max: MAX_LIMIT8
22350
+ });
22351
+ const offset = parseOffset(options.offset);
22352
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22353
+ const searchParams = new URLSearchParams();
22354
+ searchParams.append("scope", options.shared ? "shared" : "created");
22355
+ searchParams.append("limit", String(limit));
22356
+ searchParams.append("offset", String(offset));
22357
+ const raw = await httpRequest({
22358
+ method: "GET",
22359
+ path: "/v1/artifacts",
22360
+ apiKey,
22361
+ apiBaseUrl,
22362
+ searchParams
22363
+ });
22364
+ if (options.json) {
22365
+ printJson(raw);
22366
+ return;
22367
+ }
22368
+ const parsed = artifactListResponseSchema.safeParse(raw);
22369
+ if (!parsed.success) {
22370
+ throw new CliError(
22371
+ `Unexpected response from the API: ${parsed.error.message}`
22372
+ );
22373
+ }
22374
+ const response = parsed.data;
22375
+ if (response.artifacts.length === 0) {
22376
+ console.log("No Pulse dashboards found.");
22377
+ return;
22378
+ }
22379
+ console.log(renderTable(TABLE_COLUMNS27, response.artifacts));
22380
+ console.log(
22381
+ `Showing ${response.artifacts.length} of ${response.total} \xB7 offset ${response.offset}`
22382
+ );
22383
+ }, "listAction"));
22384
+ }
22385
+ __name(registerPulseList, "registerPulseList");
22386
+
22387
+ // src/commands/pulse/send-message.ts
22388
+ function registerPulseSendMessage(pulse) {
22389
+ pulse.command("send-message <id>").description(
22390
+ "Send an instruction to iterate on a dashboard (e.g. 'make it a bar chart'). Only the creator can iterate; the agent regenerates asynchronously."
22391
+ ).requiredOption("--message <text>", "the instruction (max 10000 chars)").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function sendMessageAction(id, options) {
22392
+ const pulseId = trimRequired(id, "<id>");
22393
+ const message = options.message?.trim();
22394
+ if (!message) {
22395
+ throw new CliError("--message is required.");
22396
+ }
22397
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
22398
+ const raw = await httpRequest({
22399
+ method: "POST",
22400
+ path: `/v1/artifacts/${encodeURIComponent(pulseId)}/messages`,
22401
+ apiKey,
22402
+ apiBaseUrl,
22403
+ body: { message }
22404
+ });
22405
+ if (options.json) {
22406
+ printJson(raw);
22407
+ return;
22408
+ }
22409
+ const parsed = sendArtifactMessageResponseSchema.safeParse(raw);
22410
+ if (!parsed.success) {
22411
+ throw new CliError(
22412
+ `Unexpected response from the API: ${parsed.error.message}`
22413
+ );
22414
+ }
22415
+ console.log(
22416
+ green("Instruction sent. The agent is updating the dashboard\u2026")
22417
+ );
22418
+ console.log();
22419
+ console.log(`Track progress with: duvo pulse get ${pulseId}`);
22420
+ }, "sendMessageAction"));
22421
+ }
22422
+ __name(registerPulseSendMessage, "registerPulseSendMessage");
22423
+
22424
+ // src/commands/pulse/index.ts
22425
+ function registerPulse(program) {
22426
+ const pulse = program.command("pulse").description("Manage Duvo Pulse dashboards in the public API");
22427
+ registerPulseList(pulse);
22428
+ registerPulseCreate(pulse);
22429
+ registerPulseGet(pulse);
22430
+ registerPulseHtml(pulse);
22431
+ registerPulseSendMessage(pulse);
22432
+ registerPulseDelete(pulse);
22433
+ }
22434
+ __name(registerPulse, "registerPulse");
22435
+
22436
+ // src/commands/queue-labels/index.ts
22437
+ var TABLE_COLUMNS28 = [
21838
22438
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
21839
22439
  { header: "KEY", cell: /* @__PURE__ */ __name((row) => row.key, "cell") },
21840
22440
  { header: "VALUE", cell: /* @__PURE__ */ __name((row) => row.value, "cell") },
@@ -21888,7 +22488,7 @@ function registerList3(labels) {
21888
22488
  console.log("No labels defined on this queue.");
21889
22489
  return;
21890
22490
  }
21891
- console.log(renderTable(TABLE_COLUMNS27, parsed.data.labels));
22491
+ console.log(renderTable(TABLE_COLUMNS28, parsed.data.labels));
21892
22492
  console.log(`Showing ${parsed.data.labels.length}`);
21893
22493
  }, "listAction"));
21894
22494
  }
@@ -22639,10 +23239,10 @@ function registerQueuesLinkAgent(queues) {
22639
23239
  __name(registerQueuesLinkAgent, "registerQueuesLinkAgent");
22640
23240
 
22641
23241
  // src/commands/queues/list.ts
22642
- var DEFAULT_LIMIT7 = 20;
22643
- var MIN_LIMIT7 = 1;
22644
- var MAX_LIMIT7 = 100;
22645
- var TABLE_COLUMNS28 = [
23242
+ var DEFAULT_LIMIT9 = 20;
23243
+ var MIN_LIMIT9 = 1;
23244
+ var MAX_LIMIT9 = 100;
23245
+ var TABLE_COLUMNS29 = [
22646
23246
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
22647
23247
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
22648
23248
  {
@@ -22653,11 +23253,11 @@ var TABLE_COLUMNS28 = [
22653
23253
  { header: "CREATED", cell: /* @__PURE__ */ __name((row) => row.created_at ?? "", "cell") }
22654
23254
  ];
22655
23255
  function registerQueuesList(queues) {
22656
- queues.command("list", { isDefault: true }).description("List queues for your team").option("--limit <n>", `page size (${MIN_LIMIT7}-${MAX_LIMIT7})`).option("--offset <n>", "number of queues to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
23256
+ queues.command("list", { isDefault: true }).description("List queues for your team").option("--limit <n>", `page size (${MIN_LIMIT9}-${MAX_LIMIT9})`).option("--offset <n>", "number of queues to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
22657
23257
  const limit = parseLimit(options.limit, {
22658
- defaultValue: DEFAULT_LIMIT7,
22659
- min: MIN_LIMIT7,
22660
- max: MAX_LIMIT7
23258
+ defaultValue: DEFAULT_LIMIT9,
23259
+ min: MIN_LIMIT9,
23260
+ max: MAX_LIMIT9
22661
23261
  });
22662
23262
  const offset = parseOffset(options.offset);
22663
23263
  const config = await requireAuthenticatedConfig(this);
@@ -22690,7 +23290,7 @@ function registerQueuesList(queues) {
22690
23290
  console.log("No queues found.");
22691
23291
  return;
22692
23292
  }
22693
- console.log(renderTable(TABLE_COLUMNS28, response.queues));
23293
+ console.log(renderTable(TABLE_COLUMNS29, response.queues));
22694
23294
  const resolvedOffset = response.offset ?? offset;
22695
23295
  const total = response.total ?? null;
22696
23296
  const summary = total === null ? `Showing ${response.queues.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.queues.length} of ${total} \xB7 offset ${resolvedOffset}`;
@@ -22948,7 +23548,7 @@ function registerRevisionLoginsDetach(revisionLogins) {
22948
23548
  __name(registerRevisionLoginsDetach, "registerRevisionLoginsDetach");
22949
23549
 
22950
23550
  // src/commands/revision-logins/list.ts
22951
- var TABLE_COLUMNS29 = [
23551
+ var TABLE_COLUMNS30 = [
22952
23552
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
22953
23553
  { header: "DOMAIN", cell: /* @__PURE__ */ __name((row) => row.domain, "cell") },
22954
23554
  {
@@ -22984,7 +23584,7 @@ function registerRevisionLoginsList(revisionLogins) {
22984
23584
  console.log("No browser logins attached to this revision.");
22985
23585
  return;
22986
23586
  }
22987
- console.log(renderTable(TABLE_COLUMNS29, rows));
23587
+ console.log(renderTable(TABLE_COLUMNS30, rows));
22988
23588
  console.log(`Showing ${rows.length}`);
22989
23589
  }, "listAction"));
22990
23590
  }
@@ -23057,7 +23657,7 @@ function registerRevisionSecretsDetach(revisionSecrets) {
23057
23657
  __name(registerRevisionSecretsDetach, "registerRevisionSecretsDetach");
23058
23658
 
23059
23659
  // src/commands/revision-secrets/list.ts
23060
- var TABLE_COLUMNS30 = [
23660
+ var TABLE_COLUMNS31 = [
23061
23661
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
23062
23662
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
23063
23663
  {
@@ -23095,7 +23695,7 @@ function registerRevisionSecretsList(revisionSecrets) {
23095
23695
  console.log("No secrets attached to this revision.");
23096
23696
  return;
23097
23697
  }
23098
- console.log(renderTable(TABLE_COLUMNS30, rows));
23698
+ console.log(renderTable(TABLE_COLUMNS31, rows));
23099
23699
  console.log(`Showing ${rows.length}`);
23100
23700
  }, "listAction"));
23101
23701
  }
@@ -23340,13 +23940,13 @@ function registerRunsGet(runs) {
23340
23940
  __name(registerRunsGet, "registerRunsGet");
23341
23941
 
23342
23942
  // src/commands/runs/list.ts
23343
- var DEFAULT_LIMIT8 = 20;
23344
- var MIN_LIMIT8 = 1;
23345
- var MAX_LIMIT8 = 100;
23943
+ var DEFAULT_LIMIT10 = 20;
23944
+ var MIN_LIMIT10 = 1;
23945
+ var MAX_LIMIT10 = 100;
23346
23946
  var SORT_ORDERS2 = ["asc", "desc"];
23347
23947
  var HAS_ISSUES_VALUES = ["true", "false"];
23348
23948
  var TITLE_PREVIEW_WIDTH = 50;
23349
- var TABLE_COLUMNS31 = [
23949
+ var TABLE_COLUMNS32 = [
23350
23950
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
23351
23951
  { header: "RUN#", cell: /* @__PURE__ */ __name((row) => String(row.run_number), "cell") },
23352
23952
  { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
@@ -23370,7 +23970,7 @@ function isHasIssuesValue(value) {
23370
23970
  }
23371
23971
  __name(isHasIssuesValue, "isHasIssuesValue");
23372
23972
  function registerRunsList(runs) {
23373
- runs.command("list").description("List agent runs for your team").option("--limit <n>", `page size (${MIN_LIMIT8}-${MAX_LIMIT8})`).option("--offset <n>", "number of runs to skip").option("--sort-order <order>", `sort direction (${SORT_ORDERS2.join("|")})`).option(
23973
+ runs.command("list").description("List agent runs for your team").option("--limit <n>", `page size (${MIN_LIMIT10}-${MAX_LIMIT10})`).option("--offset <n>", "number of runs to skip").option("--sort-order <order>", `sort direction (${SORT_ORDERS2.join("|")})`).option(
23374
23974
  "--status <status>",
23375
23975
  "filter by status (e.g. running, completed, failed, waiting, interrupted, stopped, needs_attention)"
23376
23976
  ).option("--agent <id>", "filter by agent ID").option("--user <id>", "filter by user ID").option("--case-queue <id>", "filter by queue ID").option("--source <source>", "filter by source").option("--search <query>", "free-text search across runs").option(
@@ -23378,9 +23978,9 @@ function registerRunsList(runs) {
23378
23978
  `show only runs with (or without) issues (${HAS_ISSUES_VALUES.join("|")})`
23379
23979
  ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
23380
23980
  const limit = parseLimit(options.limit, {
23381
- defaultValue: DEFAULT_LIMIT8,
23382
- min: MIN_LIMIT8,
23383
- max: MAX_LIMIT8
23981
+ defaultValue: DEFAULT_LIMIT10,
23982
+ min: MIN_LIMIT10,
23983
+ max: MAX_LIMIT10
23384
23984
  });
23385
23985
  const offset = parseOffset(options.offset);
23386
23986
  if (options.sortOrder !== void 0 && !isSortOrder(options.sortOrder)) {
@@ -23447,7 +24047,7 @@ function registerRunsList(runs) {
23447
24047
  console.log("No runs found.");
23448
24048
  return;
23449
24049
  }
23450
- console.log(renderTable(TABLE_COLUMNS31, response.data));
24050
+ console.log(renderTable(TABLE_COLUMNS32, response.data));
23451
24051
  console.log(
23452
24052
  `Showing ${response.data.length} of ${response.total} \xB7 offset ${offset}`
23453
24053
  );
@@ -23553,11 +24153,11 @@ function getContent(msg) {
23553
24153
  __name(getContent, "getContent");
23554
24154
 
23555
24155
  // src/commands/runs/messages.ts
23556
- var DEFAULT_LIMIT9 = 20;
23557
- var MIN_LIMIT9 = 1;
23558
- var MAX_LIMIT9 = 50;
24156
+ var DEFAULT_LIMIT11 = 20;
24157
+ var MIN_LIMIT11 = 1;
24158
+ var MAX_LIMIT11 = 50;
23559
24159
  var TEXT_PREVIEW_WIDTH2 = 60;
23560
- var TABLE_COLUMNS32 = [
24160
+ var TABLE_COLUMNS33 = [
23561
24161
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
23562
24162
  { header: "ROLE", cell: /* @__PURE__ */ __name((row) => row.role, "cell") },
23563
24163
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
@@ -23582,7 +24182,7 @@ function previewCell(row) {
23582
24182
  }
23583
24183
  __name(previewCell, "previewCell");
23584
24184
  function registerRunsMessages(runs) {
23585
- runs.command("messages <id>").description("List messages for an agent run").option("--limit <n>", `page size (${MIN_LIMIT9}-${MAX_LIMIT9})`).option("--offset <n>", "number of messages to skip").option("--follow", "poll for new messages until the job completes").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function messagesAction(id, options) {
24185
+ runs.command("messages <id>").description("List messages for an agent run").option("--limit <n>", `page size (${MIN_LIMIT11}-${MAX_LIMIT11})`).option("--offset <n>", "number of messages to skip").option("--follow", "poll for new messages until the job completes").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function messagesAction(id, options) {
23586
24186
  const offset = parseOffset(options.offset);
23587
24187
  const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
23588
24188
  if (options.follow) {
@@ -23593,9 +24193,9 @@ function registerRunsMessages(runs) {
23593
24193
  return;
23594
24194
  }
23595
24195
  const limit = parseLimit(options.limit, {
23596
- defaultValue: DEFAULT_LIMIT9,
23597
- min: MIN_LIMIT9,
23598
- max: MAX_LIMIT9
24196
+ defaultValue: DEFAULT_LIMIT11,
24197
+ min: MIN_LIMIT11,
24198
+ max: MAX_LIMIT11
23599
24199
  });
23600
24200
  const searchParams = new URLSearchParams();
23601
24201
  searchParams.append("limit", String(limit));
@@ -23622,7 +24222,7 @@ function registerRunsMessages(runs) {
23622
24222
  console.log("No messages found.");
23623
24223
  return;
23624
24224
  }
23625
- console.log(renderTable(TABLE_COLUMNS32, response.messages));
24225
+ console.log(renderTable(TABLE_COLUMNS33, response.messages));
23626
24226
  const resolvedOffset = response.offset ?? offset;
23627
24227
  const summary = response.total === null || response.total === void 0 ? `Showing ${response.messages.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.messages.length} of ${response.total} \xB7 offset ${resolvedOffset}`;
23628
24228
  console.log(summary);
@@ -23948,7 +24548,7 @@ function registerSandboxesCreate(sandboxes) {
23948
24548
  __name(registerSandboxesCreate, "registerSandboxesCreate");
23949
24549
 
23950
24550
  // src/commands/sandboxes/files.ts
23951
- var TABLE_COLUMNS33 = [
24551
+ var TABLE_COLUMNS34 = [
23952
24552
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
23953
24553
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
23954
24554
  { header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
@@ -23986,7 +24586,7 @@ function registerSandboxesFiles(sandboxes) {
23986
24586
  console.log("No files found.");
23987
24587
  return;
23988
24588
  }
23989
- console.log(renderTable(TABLE_COLUMNS33, files));
24589
+ console.log(renderTable(TABLE_COLUMNS34, files));
23990
24590
  console.log(`Showing ${files.length}`);
23991
24591
  }, "filesAction"));
23992
24592
  }
@@ -24331,7 +24931,7 @@ function registerSecretsGet(secrets) {
24331
24931
  __name(registerSecretsGet, "registerSecretsGet");
24332
24932
 
24333
24933
  // src/commands/secrets/list.ts
24334
- var TABLE_COLUMNS34 = [
24934
+ var TABLE_COLUMNS35 = [
24335
24935
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
24336
24936
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
24337
24937
  {
@@ -24375,7 +24975,7 @@ function registerSecretsList(secrets) {
24375
24975
  console.log("No secrets found.");
24376
24976
  return;
24377
24977
  }
24378
- console.log(renderTable(TABLE_COLUMNS34, rows));
24978
+ console.log(renderTable(TABLE_COLUMNS35, rows));
24379
24979
  console.log(`Showing ${rows.length}`);
24380
24980
  }, "listAction"));
24381
24981
  }
@@ -24486,7 +25086,7 @@ function registerSecrets(program) {
24486
25086
  __name(registerSecrets, "registerSecrets");
24487
25087
 
24488
25088
  // src/commands/skills/assignments.ts
24489
- var TABLE_COLUMNS35 = [
25089
+ var TABLE_COLUMNS36 = [
24490
25090
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
24491
25091
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") }
24492
25092
  ];
@@ -24514,7 +25114,7 @@ function registerSkillsAssignments(skills) {
24514
25114
  console.log("No agents use this skill.");
24515
25115
  return;
24516
25116
  }
24517
- console.log(renderTable(TABLE_COLUMNS35, assignments));
25117
+ console.log(renderTable(TABLE_COLUMNS36, assignments));
24518
25118
  console.log(`Showing ${assignments.length} of ${total}`);
24519
25119
  }, "assignmentsAction"));
24520
25120
  }
@@ -24796,7 +25396,7 @@ function readContent2(options) {
24796
25396
  __name(readContent2, "readContent");
24797
25397
 
24798
25398
  // src/commands/skills/files.ts
24799
- var TABLE_COLUMNS36 = [
25399
+ var TABLE_COLUMNS37 = [
24800
25400
  { header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
24801
25401
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
24802
25402
  {
@@ -24835,7 +25435,7 @@ function registerSkillsFiles(skills) {
24835
25435
  console.log("No files found.");
24836
25436
  return;
24837
25437
  }
24838
- console.log(renderTable(TABLE_COLUMNS36, parsed.data.files));
25438
+ console.log(renderTable(TABLE_COLUMNS37, parsed.data.files));
24839
25439
  console.log(`Showing ${parsed.data.files.length}`);
24840
25440
  }, "filesAction"));
24841
25441
  }
@@ -25213,12 +25813,12 @@ function registerSuggestionsConsume(suggestions) {
25213
25813
  __name(registerSuggestionsConsume, "registerSuggestionsConsume");
25214
25814
 
25215
25815
  // src/commands/suggestions/list.ts
25216
- var DEFAULT_LIMIT10 = 100;
25217
- var MIN_LIMIT10 = 1;
25218
- var MAX_LIMIT10 = 250;
25816
+ var DEFAULT_LIMIT12 = 100;
25817
+ var MIN_LIMIT12 = 1;
25818
+ var MAX_LIMIT12 = 250;
25219
25819
  var STATUS_FILTERS = ["pending", "history"];
25220
25820
  var TITLE_PREVIEW_WIDTH2 = 50;
25221
- var TABLE_COLUMNS37 = [
25821
+ var TABLE_COLUMNS38 = [
25222
25822
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
25223
25823
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
25224
25824
  { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
@@ -25239,11 +25839,11 @@ function registerSuggestionsList(suggestions) {
25239
25839
  ).option(
25240
25840
  "--status <filter>",
25241
25841
  `which inbox to show (${STATUS_FILTERS.join("|")}, default: pending)`
25242
- ).option("--limit <n>", `page size (${MIN_LIMIT10}-${MAX_LIMIT10})`).option("--offset <n>", "number of suggestions to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(agentId, options) {
25842
+ ).option("--limit <n>", `page size (${MIN_LIMIT12}-${MAX_LIMIT12})`).option("--offset <n>", "number of suggestions to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(agentId, options) {
25243
25843
  const limit = parseLimit(options.limit, {
25244
- defaultValue: DEFAULT_LIMIT10,
25245
- min: MIN_LIMIT10,
25246
- max: MAX_LIMIT10
25844
+ defaultValue: DEFAULT_LIMIT12,
25845
+ min: MIN_LIMIT12,
25846
+ max: MAX_LIMIT12
25247
25847
  });
25248
25848
  const offset = parseOffset(options.offset);
25249
25849
  if (options.status !== void 0 && !isStatusFilter(options.status)) {
@@ -25281,7 +25881,7 @@ function registerSuggestionsList(suggestions) {
25281
25881
  console.log(`Pending total: ${pendingCount}`);
25282
25882
  return;
25283
25883
  }
25284
- console.log(renderTable(TABLE_COLUMNS37, data));
25884
+ console.log(renderTable(TABLE_COLUMNS38, data));
25285
25885
  console.log(
25286
25886
  `Showing ${data.length} \xB7 offset ${offset} \xB7 pending total ${pendingCount}`
25287
25887
  );
@@ -25405,10 +26005,10 @@ function registerTeamGet(team) {
25405
26005
  __name(registerTeamGet, "registerTeamGet");
25406
26006
 
25407
26007
  // src/commands/team/members.ts
25408
- var DEFAULT_LIMIT11 = 50;
25409
- var MIN_LIMIT11 = 1;
25410
- var MAX_LIMIT11 = 100;
25411
- var TABLE_COLUMNS38 = [
26008
+ var DEFAULT_LIMIT13 = 50;
26009
+ var MIN_LIMIT13 = 1;
26010
+ var MAX_LIMIT13 = 100;
26011
+ var TABLE_COLUMNS39 = [
25412
26012
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
25413
26013
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name ?? "", "cell") },
25414
26014
  { header: "EMAIL", cell: /* @__PURE__ */ __name((row) => row.email, "cell") },
@@ -25422,11 +26022,11 @@ function registerTeamMembers(team) {
25422
26022
  team.command("members").description("List members of a team").option(
25423
26023
  "--team <id>",
25424
26024
  "team ID (defaults to the team scoped to your credentials)"
25425
- ).option("--limit <n>", `page size (${MIN_LIMIT11}-${MAX_LIMIT11})`).option("--offset <n>", "number of members to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function membersAction(options) {
26025
+ ).option("--limit <n>", `page size (${MIN_LIMIT13}-${MAX_LIMIT13})`).option("--offset <n>", "number of members to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function membersAction(options) {
25426
26026
  const limit = parseLimit(options.limit, {
25427
- defaultValue: DEFAULT_LIMIT11,
25428
- min: MIN_LIMIT11,
25429
- max: MAX_LIMIT11
26027
+ defaultValue: DEFAULT_LIMIT13,
26028
+ min: MIN_LIMIT13,
26029
+ max: MAX_LIMIT13
25430
26030
  });
25431
26031
  const offset = parseOffset(options.offset);
25432
26032
  const config = await requireAuthenticatedConfig(this);
@@ -25459,7 +26059,7 @@ function registerTeamMembers(team) {
25459
26059
  console.log("No members found.");
25460
26060
  return;
25461
26061
  }
25462
- console.log(renderTable(TABLE_COLUMNS38, response.members));
26062
+ console.log(renderTable(TABLE_COLUMNS39, response.members));
25463
26063
  console.log(
25464
26064
  `Showing ${response.members.length} of ${response.total} \xB7 offset ${response.offset}`
25465
26065
  );
@@ -25657,7 +26257,7 @@ __name(resolveActiveTeamId, "resolveActiveTeamId");
25657
26257
  var version = resolveVersion();
25658
26258
  function resolveVersion() {
25659
26259
  if (true) {
25660
- return "1.7.1";
26260
+ return "1.8.0";
25661
26261
  }
25662
26262
  const packageJsonPath = join3(
25663
26263
  dirname3(fileURLToPath2(import.meta.url)),
@@ -25717,6 +26317,7 @@ function createProgram() {
25717
26317
  registerRevisionSecrets(program);
25718
26318
  registerRevisionLogins(program);
25719
26319
  registerClarity(program);
26320
+ registerPulse(program);
25720
26321
  return program;
25721
26322
  }
25722
26323
  __name(createProgram, "createProgram");
@@ -25740,7 +26341,7 @@ function checkForUpdate() {
25740
26341
  __name(checkForUpdate, "checkForUpdate");
25741
26342
  function loadPackageMeta() {
25742
26343
  if (true) {
25743
- return { name: "@duvoai/cli", version: "1.7.1" };
26344
+ return { name: "@duvoai/cli", version: "1.8.0" };
25744
26345
  }
25745
26346
  const require2 = createRequire(import.meta.url);
25746
26347
  const raw = require2("../package.json");