@duvoai/cli 1.34.0 → 1.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/duvo.js CHANGED
@@ -110,9 +110,9 @@ import { z as z75 } from "zod";
110
110
  import { z as z76 } from "zod";
111
111
  import { z as z77 } from "zod";
112
112
  import { z as z78 } from "zod";
113
+ import { z as z80 } from "zod";
113
114
  import { z as z79 } from "zod";
114
115
  import { z as z81 } from "zod";
115
- import { z as z80 } from "zod";
116
116
  import { z as z82 } from "zod";
117
117
  import { z as z83 } from "zod";
118
118
  import { z as z84 } from "zod";
@@ -1640,10 +1640,26 @@ var sessionPhaseTimingsSchema = z10.object({
1640
1640
  modelTtftMs: z10.number().optional(),
1641
1641
  firstTokenMs: z10.number().optional()
1642
1642
  });
1643
+ var runMetricsSchema = z10.object({
1644
+ toolCallCount: z10.number().int().nonnegative().optional(),
1645
+ toolCallDurationMsSum: z10.number().nonnegative().optional(),
1646
+ retryCount: z10.number().int().nonnegative().optional(),
1647
+ stepCount: z10.number().int().nonnegative().optional(),
1648
+ durationMs: z10.number().nonnegative().optional(),
1649
+ totalCostUsd: z10.number().nonnegative().optional(),
1650
+ model: z10.string().optional(),
1651
+ tokenUsage: z10.object({
1652
+ inputTokens: z10.number().int().nonnegative().optional(),
1653
+ outputTokens: z10.number().int().nonnegative().optional(),
1654
+ cacheReadTokens: z10.number().int().nonnegative().optional(),
1655
+ cacheWriteTokens: z10.number().int().nonnegative().optional()
1656
+ }).optional()
1657
+ });
1643
1658
  var duvoSystemSessionCompletedMessageSchema = duvoBaseSystemMessageSchema.and(
1644
1659
  z10.object({
1645
1660
  type: z10.literal("session_completed"),
1646
- phases: sessionPhaseTimingsSchema.optional()
1661
+ phases: sessionPhaseTimingsSchema.optional(),
1662
+ runMetrics: runMetricsSchema.optional()
1647
1663
  })
1648
1664
  );
1649
1665
  var duvoSystemSessionInterruptedMessageSchema = duvoBaseSystemMessageSchema.and(
@@ -1654,7 +1670,8 @@ var duvoSystemSessionInterruptedMessageSchema = duvoBaseSystemMessageSchema.and(
1654
1670
  var duvoSystemSessionErrorMessageSchema = duvoBaseSystemMessageSchema.and(
1655
1671
  z10.object({
1656
1672
  type: z10.literal("session_error"),
1657
- error: z10.string()
1673
+ error: z10.string(),
1674
+ runMetrics: runMetricsSchema.optional()
1658
1675
  })
1659
1676
  );
1660
1677
  var duvoSystemAgentRunCreatedMessageSchema = duvoBaseSystemMessageSchema.and(
@@ -2597,7 +2614,11 @@ var CLAUDE_MODEL_IDS = [
2597
2614
  "claude-opus-4-8",
2598
2615
  "claude-opus-4-8[1m]"
2599
2616
  ];
2600
- var OSS_MODEL_IDS = ["kimi-k3", "glm-5.2"];
2617
+ var OSS_MODEL_IDS = [
2618
+ "kimi-k3",
2619
+ "glm-5.2",
2620
+ "deepseek-v4-flash"
2621
+ ];
2601
2622
  var AVAILABLE_OSS_AGENT_MODELS = {
2602
2623
  "kimi-k3": {
2603
2624
  displayName: "Kimi K3",
@@ -2606,6 +2627,10 @@ var AVAILABLE_OSS_AGENT_MODELS = {
2606
2627
  "glm-5.2": {
2607
2628
  displayName: "GLM 5.2",
2608
2629
  description: "Strong agentic coding model"
2630
+ },
2631
+ "deepseek-v4-flash": {
2632
+ displayName: "DeepSeek V4 Flash",
2633
+ description: "Fast, cost-efficient open model"
2609
2634
  }
2610
2635
  };
2611
2636
  var LEGACY_MODEL_IDS = [
@@ -2795,6 +2820,28 @@ var BUILD_STATUS = {
2795
2820
  LIVE: "live",
2796
2821
  HISTORIC: "historic"
2797
2822
  };
2823
+ var CASE_DISPLAY_STATUS_VALUES = [
2824
+ "pending",
2825
+ "in_progress",
2826
+ "needs_input",
2827
+ "postponed",
2828
+ "evaluating",
2829
+ "success",
2830
+ "issues",
2831
+ "completed",
2832
+ "failed",
2833
+ "canceled"
2834
+ ];
2835
+ var CASE_OUTCOME_SOURCE = {
2836
+ SYSTEM: "system",
2837
+ EVAL: "eval",
2838
+ MANUAL: "manual"
2839
+ };
2840
+ var CASE_OUTCOME_SEVERITY = {
2841
+ CRITICAL: "critical",
2842
+ MEDIUM: "medium",
2843
+ LOW: "low"
2844
+ };
2798
2845
  var CASE_PRIORITY = {
2799
2846
  NONE: "none",
2800
2847
  MEDIUM: "medium",
@@ -2853,6 +2900,7 @@ var CLARITY_INTERVIEW_LANGUAGES = [
2853
2900
  "en",
2854
2901
  "es",
2855
2902
  "fr",
2903
+ "hu",
2856
2904
  "pl",
2857
2905
  "pt",
2858
2906
  "pt-BR"
@@ -2869,6 +2917,7 @@ var CLARITY_LANGUAGE_DISPLAY_NAMES = {
2869
2917
  cs: "Czech",
2870
2918
  fr: "French",
2871
2919
  de: "German",
2920
+ hu: "Hungarian",
2872
2921
  pl: "Polish",
2873
2922
  es: "Spanish",
2874
2923
  pt: "Portuguese (Portugal)",
@@ -6691,6 +6740,33 @@ function domainsToBrowserbaseBypassPattern(domains) {
6691
6740
  }
6692
6741
  __name(domainsToBrowserbaseBypassPattern, "domainsToBrowserbaseBypassPattern");
6693
6742
  __name2(domainsToBrowserbaseBypassPattern, "domainsToBrowserbaseBypassPattern");
6743
+ var MCP_OAUTH_CATALOG_SERVER_URLS = {
6744
+ supabase: "https://mcp.supabase.com/mcp",
6745
+ attio: "https://mcp.attio.com/mcp",
6746
+ amplitude: "https://mcp.amplitude.com/mcp",
6747
+ asana: "https://mcp.asana.com/v2/mcp",
6748
+ "notion-native": "https://mcp.notion.com/mcp",
6749
+ granola: "https://mcp.granola.ai/mcp",
6750
+ apify: "https://mcp.apify.com",
6751
+ hubspot: "https://mcp.hubspot.com"
6752
+ };
6753
+ var NETSUITE_MCP_HOST_SUFFIX = ".suitetalk.api.netsuite.com";
6754
+ var NETSUITE_MCP_PATH_PREFIX = "/services/mcp/v1";
6755
+ function matchesMcpOAuthCatalogServer(integrationType, mcpServerUrl) {
6756
+ if (integrationType === "netsuite") {
6757
+ let url;
6758
+ try {
6759
+ url = new URL(mcpServerUrl);
6760
+ } catch {
6761
+ return false;
6762
+ }
6763
+ return url.protocol === "https:" && url.hostname.endsWith(NETSUITE_MCP_HOST_SUFFIX) && url.pathname.startsWith(`${NETSUITE_MCP_PATH_PREFIX}/`);
6764
+ }
6765
+ const registeredUrl = MCP_OAUTH_CATALOG_SERVER_URLS[integrationType];
6766
+ return registeredUrl !== void 0 && registeredUrl === mcpServerUrl;
6767
+ }
6768
+ __name(matchesMcpOAuthCatalogServer, "matchesMcpOAuthCatalogServer");
6769
+ __name2(matchesMcpOAuthCatalogServer, "matchesMcpOAuthCatalogServer");
6694
6770
  function normalizeShopDomain(input) {
6695
6771
  return input.trim().toLowerCase().replace(/^https?:\/\//, "").replace(/\/.*$/, "");
6696
6772
  }
@@ -7280,6 +7356,30 @@ function isIntegrationSlug(value) {
7280
7356
  }
7281
7357
  __name(isIntegrationSlug, "isIntegrationSlug");
7282
7358
  __name2(isIntegrationSlug, "isIntegrationSlug");
7359
+ var SERVER_RESOLVED_MCP_URL_SLUGS = /* @__PURE__ */ new Set([
7360
+ "sap-ecc",
7361
+ "tableau",
7362
+ "signavio",
7363
+ "coupa",
7364
+ "md365",
7365
+ "workday",
7366
+ "businesscentral",
7367
+ "snowflake",
7368
+ "bigquery",
7369
+ "databricks",
7370
+ "bamboohr",
7371
+ "ssh",
7372
+ "outbound-call",
7373
+ "duvo-computer-use-rdp",
7374
+ "saps4hana",
7375
+ "intercom",
7376
+ "github"
7377
+ ]);
7378
+ function isServerResolvedMcpUrlSlug(value) {
7379
+ return isIntegrationSlug(value) && SERVER_RESOLVED_MCP_URL_SLUGS.has(value);
7380
+ }
7381
+ __name(isServerResolvedMcpUrlSlug, "isServerResolvedMcpUrlSlug");
7382
+ __name2(isServerResolvedMcpUrlSlug, "isServerResolvedMcpUrlSlug");
7283
7383
  function isCaseQueueIntegrationType(type) {
7284
7384
  return type === "case-queue-producer" || type === "case-queue-consumer";
7285
7385
  }
@@ -9656,14 +9756,7 @@ var automationRunChainCaseNodeApiSchema = z53.object({
9656
9756
  title: z53.string().nullable().describe("Case title"),
9657
9757
  queue_id: z53.guid().describe("Queue the case belongs to"),
9658
9758
  queue_name: z53.string().nullable().describe("Display name of the queue the case was added to"),
9659
- status: z53.enum([
9660
- "pending",
9661
- "in_progress",
9662
- "needs_input",
9663
- "postponed",
9664
- "completed",
9665
- "failed"
9666
- ]).describe("Derived case display status"),
9759
+ status: z53.enum(CASE_DISPLAY_STATUS_VALUES).describe("Derived case display status"),
9667
9760
  producer_run_id: z53.guid().describe("Run that produced this case \u2014 its parent in the tree"),
9668
9761
  created_at: z53.string().describe("ISO 8601 creation timestamp")
9669
9762
  });
@@ -10044,18 +10137,22 @@ var caseQueueItemSchema = z63.object({
10044
10137
  /** Case priority level. `none` = default (no priority). */
10045
10138
  priority: casePrioritySchema,
10046
10139
  /**
10047
- * Derived display bucket combining the settlement status with ownership,
10048
- * open HITL tokens, and scheduling. See CASE_DISPLAY_STATUS in
10049
- * `constants/case-queue.ts` for the derivation rules.
10140
+ * The case's user-visible status — the single ten-state display machine.
10141
+ * Lifecycle states are derived at read time; terminal states come from the
10142
+ * stored `outcome`. See CASE_DISPLAY_STATUS in `constants/case-queue.ts`.
10050
10143
  */
10051
- display_status: z63.enum([
10052
- "pending",
10053
- "in_progress",
10054
- "needs_input",
10055
- "postponed",
10056
- "completed",
10057
- "failed"
10058
- ]),
10144
+ display_status: z63.enum(CASE_DISPLAY_STATUS_VALUES),
10145
+ /**
10146
+ * How a terminal outcome was reached (`system`/`eval`/`manual`). Null for
10147
+ * lifecycle states. Populated once the `outcome` columns land (Phase 1);
10148
+ * optional so pre-Phase-1 payloads validate.
10149
+ */
10150
+ outcome_source: z63.enum(CASE_OUTCOME_SOURCE).nullable().optional(),
10151
+ /**
10152
+ * Highest failing rubric severity, meaningful only for `issues`. Optional
10153
+ * until the `outcome` columns land (Phase 1).
10154
+ */
10155
+ outcome_severity: z63.enum(CASE_OUTCOME_SEVERITY).nullable().optional(),
10059
10156
  claimed_at: z63.string().nullable(),
10060
10157
  claimed_by_run_id: z63.string().nullable(),
10061
10158
  completed_at: z63.string().nullable(),
@@ -10486,10 +10583,10 @@ var FEATURE_FLAG_CATALOGUE = {
10486
10583
  defaultValue: false,
10487
10584
  description: "Enables the advisor tool (consult-a-stronger-model) on agent runs for the team. When on, cc-server injects the in-process `advisor` MCP tool, which forwards the agent's transcript + memory to Opus 4.7 [1m] for a second opinion. The cc-server `ADVISOR_ENABLED` env remains a hard global kill-switch."
10488
10585
  },
10489
- DETERMINISTIC_BROWSING_REPLAY: {
10490
- key: "deterministic_browsing_replay",
10586
+ WORKFLOWS: {
10587
+ key: "workflows",
10491
10588
  defaultValue: false,
10492
- description: "Per-team opt-in for deterministic browsing skill replay. When on, newly recorded browsing skills are generated in the deterministic format (classified step modes + parameters, driven by the `replay` MCP tool) and the on-demand 'upgrade skill' action is available. When off (default), recordings produce the legacy agent-re-drive skill format and the upgrade action is hidden. Kill switch for the whole browsing deterministic-replay feature."
10589
+ description: "Per-team opt-in for Workflows \u2014 recorded browser workflows executed deterministically by the `replay` MCP tool (classified step modes + parameters). When on, the Workflows tab is shown on the Skills & Files page, recording a workflow is available (in addition to the BROWSING_SKILL_RECORDING plan entitlement), recordings are generated in the workflow format, and workflows can be attached to agents. When off (default), the tab and recording are hidden. Renamed from `deterministic_browsing_replay`. Kill switch for the whole Workflows feature."
10493
10590
  },
10494
10591
  AGENT_CHAT: {
10495
10592
  key: "agent_chat",
@@ -10890,6 +10987,24 @@ var workflowParameterSchema = z71.object({
10890
10987
  required: z71.boolean(),
10891
10988
  example: z71.string().optional()
10892
10989
  });
10990
+ var outputCaptureSchema = z71.enum(["currentUrl", "elementText"]).describe("How the value is captured: page URL, or an element's text");
10991
+ var workflowOutputSchema = z71.object({
10992
+ name: z71.string(),
10993
+ capture: outputCaptureSchema,
10994
+ stepIndex: z71.number().int().nonnegative(),
10995
+ selector: z71.string().optional().describe(
10996
+ "CSS selector to read text from; required when capture is 'elementText'"
10997
+ ),
10998
+ description: z71.string()
10999
+ }).superRefine((output, ctx) => {
11000
+ if (output.capture === "elementText" && !output.selector) {
11001
+ ctx.addIssue({
11002
+ code: z71.ZodIssueCode.custom,
11003
+ path: ["selector"],
11004
+ message: "elementText outputs must declare a selector"
11005
+ });
11006
+ }
11007
+ });
10893
11008
  var mcpStepSchema = z71.object({
10894
11009
  tool: z71.string().describe("MCP tool name (e.g., click, fill, navigate_page)"),
10895
11010
  params: z71.record(z71.string(), z71.unknown()).describe("Tool-specific parameters"),
@@ -10914,9 +11029,10 @@ var mcpWorkflowSchema = z71.object({
10914
11029
  }),
10915
11030
  steps: z71.array(mcpStepSchema),
10916
11031
  version: z71.union([z71.literal(1), z71.literal(2)]).optional().describe(
10917
- "Workflow schema version: absent/1 = legacy, 2 = classified for deterministic replay. Unknown versions are rejected rather than silently treated as legacy."
11032
+ "Workflow schema version: absent/1 = legacy, 2 = classified for deterministic workflow execution. Unknown versions are rejected rather than silently treated as legacy."
10918
11033
  ),
10919
- parameters: z71.array(workflowParameterSchema).optional().describe("Typed parameters the agent binds at replay")
11034
+ parameters: z71.array(workflowParameterSchema).optional().describe("Typed parameters the agent binds at replay"),
11035
+ outputs: z71.array(workflowOutputSchema).optional().describe("Values the replay captures and returns to the agent")
10920
11036
  }).superRefine((workflow, ctx) => {
10921
11037
  workflow.steps.forEach((step, index) => {
10922
11038
  if (step.mode === "parameterized" && !step.variable) {
@@ -10927,6 +11043,24 @@ var mcpWorkflowSchema = z71.object({
10927
11043
  });
10928
11044
  }
10929
11045
  });
11046
+ const seenOutputNames = /* @__PURE__ */ new Set();
11047
+ (workflow.outputs ?? []).forEach((output, i) => {
11048
+ if (seenOutputNames.has(output.name)) {
11049
+ ctx.addIssue({
11050
+ code: z71.ZodIssueCode.custom,
11051
+ path: ["outputs", i, "name"],
11052
+ message: "output names must be unique"
11053
+ });
11054
+ }
11055
+ seenOutputNames.add(output.name);
11056
+ if (output.stepIndex >= workflow.steps.length) {
11057
+ ctx.addIssue({
11058
+ code: z71.ZodIssueCode.custom,
11059
+ path: ["outputs", i, "stepIndex"],
11060
+ message: "output stepIndex is out of range"
11061
+ });
11062
+ }
11063
+ });
10930
11064
  });
10931
11065
  var MCP_WORKFLOW_JSON_SCHEMA = z71.toJSONSchema(mcpWorkflowSchema, {
10932
11066
  reused: "inline"
@@ -11271,7 +11405,7 @@ var computerUseEventBaseSchema = z76.object({
11271
11405
  timestamp: z76.number(),
11272
11406
  /** Links this event to a screenshot uploaded in the same/earlier batch. */
11273
11407
  screenshotSeq: z76.number().int().nonnegative().optional(),
11274
- /** Resolved UIA element target (primary replay anchor). */
11408
+ /** Resolved UIA element target (primary workflow-execution anchor). */
11275
11409
  target: computerUseElementTargetSchema.optional()
11276
11410
  });
11277
11411
  var computerUseClickEventSchema = computerUseEventBaseSchema.extend({
@@ -11314,19 +11448,6 @@ var computerUseScreenshotSchema = z76.object({
11314
11448
  /** Base64-encoded JPEG (no data: URL prefix). */
11315
11449
  base64: z76.string()
11316
11450
  });
11317
- var replayReportSchema = z77.object({
11318
- agentRunId: z77.string(),
11319
- provider: z77.string().nullable(),
11320
- expectedProgrammatic: z77.number(),
11321
- totalSteps: z77.number(),
11322
- replayedSteps: z77.number(),
11323
- calls: z77.number(),
11324
- handoffs: z77.number(),
11325
- errors: z77.number(),
11326
- stopReasons: z77.array(z77.string()),
11327
- reachedCompletion: z77.boolean(),
11328
- programmaticExecutionRate: z77.number()
11329
- });
11330
11451
  var DUVO_CLIENT_HEADER = "x-duvo-client";
11331
11452
  var DUVO_CLIENTS = {
11332
11453
  cli: "cli",
@@ -11344,56 +11465,56 @@ function resolveRequestSourceFromClientHeader(header) {
11344
11465
  }
11345
11466
  __name(resolveRequestSourceFromClientHeader, "resolveRequestSourceFromClientHeader");
11346
11467
  __name2(resolveRequestSourceFromClientHeader, "resolveRequestSourceFromClientHeader");
11347
- var RedactedMcpServerConfigSchema = z78.object({
11468
+ var RedactedMcpServerConfigSchema = z77.object({
11348
11469
  type: TransportTypeSchema,
11349
11470
  integrationSlug: IntegrationSlugSchema,
11350
- instanceId: z78.string().nullable()
11351
- });
11352
- var ThreadContextMessageSchema = z78.object({
11353
- role: z78.enum(["user", "assistant"]),
11354
- content: z78.string()
11355
- });
11356
- var ChatFileReferenceSchema = z78.object({
11357
- id: z78.string(),
11358
- name: z78.string(),
11359
- mimetype: z78.string(),
11360
- size: z78.number(),
11361
- platform: z78.enum(["slack", "teams"]),
11362
- workspaceId: z78.string(),
11363
- channelId: z78.string()
11364
- });
11365
- var ResolvedSubAgentSchema = z78.object({
11366
- agentId: z78.string().uuid(),
11367
- buildId: z78.string().uuid(),
11368
- name: z78.string().min(1).max(64).regex(/^[a-z0-9-]+$/).describe(
11471
+ instanceId: z77.string().nullable()
11472
+ });
11473
+ var ThreadContextMessageSchema = z77.object({
11474
+ role: z77.enum(["user", "assistant"]),
11475
+ content: z77.string()
11476
+ });
11477
+ var ChatFileReferenceSchema = z77.object({
11478
+ id: z77.string(),
11479
+ name: z77.string(),
11480
+ mimetype: z77.string(),
11481
+ size: z77.number(),
11482
+ platform: z77.enum(["slack", "teams"]),
11483
+ workspaceId: z77.string(),
11484
+ channelId: z77.string()
11485
+ });
11486
+ var ResolvedSubAgentSchema = z77.object({
11487
+ agentId: z77.string().uuid(),
11488
+ buildId: z77.string().uuid(),
11489
+ name: z77.string().min(1).max(64).regex(/^[a-z0-9-]+$/).describe(
11369
11490
  "Stable slug used as the Claude Code subagent name (kebab-case, \u226464 chars)"
11370
11491
  ),
11371
- description: z78.string().describe(
11492
+ description: z77.string().describe(
11372
11493
  "Routing description Claude uses to decide when to delegate to this subagent"
11373
11494
  ),
11374
- prompt: z78.string().describe("System prompt (AOP) for this subagent"),
11375
- model: z78.string().optional().describe(
11495
+ prompt: z77.string().describe("System prompt (AOP) for this subagent"),
11496
+ model: z77.string().optional().describe(
11376
11497
  "Optional model identifier override for this subagent (Claude, or an OSS model id)"
11377
11498
  ),
11378
- mcpServers: z78.record(z78.string(), RedactedMcpServerConfigSchema).default({}).describe(
11499
+ mcpServers: z77.record(z77.string(), RedactedMcpServerConfigSchema).default({}).describe(
11379
11500
  "Redacted MCP server configs scoped to this subagent. Secrets resolved at execution time."
11380
11501
  )
11381
11502
  });
11382
11503
  var RunConfigSchema = AgentConfigSchema.extend({
11383
- task: z78.string(),
11384
- mcpServers: z78.record(z78.string(), RedactedMcpServerConfigSchema),
11385
- subAgents: z78.array(ResolvedSubAgentSchema).optional().default([]),
11386
- conversationHistory: z78.array(ThreadContextMessageSchema).optional(),
11387
- chatFiles: z78.array(ChatFileReferenceSchema).optional(),
11504
+ task: z77.string(),
11505
+ mcpServers: z77.record(z77.string(), RedactedMcpServerConfigSchema),
11506
+ subAgents: z77.array(ResolvedSubAgentSchema).optional().default([]),
11507
+ conversationHistory: z77.array(ThreadContextMessageSchema).optional(),
11508
+ chatFiles: z77.array(ChatFileReferenceSchema).optional(),
11388
11509
  /** IANA timezone (e.g. `"Europe/Prague"`). Consumers should fall back to UTC when absent. */
11389
- timezone: z78.string().optional(),
11510
+ timezone: z77.string().optional(),
11390
11511
  /**
11391
11512
  * ISO 8601 timestamp captured when the run was created. Frozen at
11392
11513
  * run-creation time and never recomputed, so resumes reuse the same value —
11393
11514
  * the runtime injects it into the cached system prompt and a changing value
11394
11515
  * would bust the prompt cache.
11395
11516
  */
11396
- sessionStartedAt: z78.string().optional(),
11517
+ sessionStartedAt: z77.string().optional(),
11397
11518
  /**
11398
11519
  * True when this dispatch resumes a run the user stopped. Derived on each
11399
11520
  * continue from the durable `agent_run.stopped_by_user` column (set only by a
@@ -11402,16 +11523,16 @@ var RunConfigSchema = AgentConfigSchema.extend({
11402
11523
  * first resumed turn. Lives here — not in cc-server memory — so it survives a
11403
11524
  * sandbox suspend/resume.
11404
11525
  */
11405
- resumedAfterStop: z78.boolean().optional()
11526
+ resumedAfterStop: z77.boolean().optional()
11406
11527
  });
11407
- var StoredRunConfigV0Schema = z78.object({
11408
- version: z78.literal("v0")
11528
+ var StoredRunConfigV0Schema = z77.object({
11529
+ version: z77.literal("v0")
11409
11530
  });
11410
- var StoredRunConfigV1Schema = z78.object({
11411
- version: z78.literal("v1"),
11531
+ var StoredRunConfigV1Schema = z77.object({
11532
+ version: z77.literal("v1"),
11412
11533
  data: RunConfigSchema
11413
11534
  });
11414
- var StoredRunConfigSchema = z78.union([
11535
+ var StoredRunConfigSchema = z77.union([
11415
11536
  StoredRunConfigV0Schema,
11416
11537
  StoredRunConfigV1Schema
11417
11538
  ]);
@@ -11430,178 +11551,178 @@ function isRunConfig(config) {
11430
11551
  }
11431
11552
  __name(isRunConfig, "isRunConfig");
11432
11553
  __name2(isRunConfig, "isRunConfig");
11433
- var skillApiSchema = z79.object({
11434
- id: z79.string(),
11435
- name: z79.string(),
11436
- description: z79.string(),
11554
+ var skillApiSchema = z78.object({
11555
+ id: z78.string(),
11556
+ name: z78.string(),
11557
+ description: z78.string(),
11437
11558
  // System skills have null team_id.
11438
- team_id: z79.string().nullable()
11559
+ team_id: z78.string().nullable()
11439
11560
  });
11440
- var listSkillsResponseSchema = z79.object({
11441
- skills: z79.array(skillApiSchema)
11561
+ var listSkillsResponseSchema = z78.object({
11562
+ skills: z78.array(skillApiSchema)
11442
11563
  });
11443
- var systemSkillSchema = z79.object({
11444
- id: z79.string(),
11445
- name: z79.string(),
11446
- description: z79.string()
11447
- });
11448
- var listSystemSkillsResponseSchema = z79.object({
11449
- skills: z79.array(systemSkillSchema)
11450
- });
11451
- var skillFileItemSchema = z79.object({
11452
- name: z79.string(),
11453
- path: z79.string(),
11454
- size: z79.number().optional(),
11455
- contentType: z79.string().optional(),
11456
- updatedAt: z79.string().optional()
11457
- });
11458
- var listSkillFilesResponseSchema = z79.object({
11459
- files: z79.array(skillFileItemSchema)
11460
- });
11461
- var getSkillFileContentResponseSchema = z79.object({
11462
- content: z79.string(),
11463
- path: z79.string(),
11464
- contentType: z79.string().optional()
11465
- });
11466
- var updateSkillFileBodySchema = z79.object({
11467
- content: z79.string()
11468
- });
11469
- var updateSkillFileResponseSchema = z79.object({
11470
- success: z79.boolean(),
11471
- message: z79.string(),
11472
- skill: z79.object({
11473
- id: z79.string(),
11474
- name: z79.string(),
11475
- description: z79.string()
11476
- }).optional()
11564
+ var systemSkillSchema = z78.object({
11565
+ id: z78.string(),
11566
+ name: z78.string(),
11567
+ description: z78.string()
11477
11568
  });
11478
- var deleteSkillResponseSchema = z79.object({
11479
- success: z79.boolean(),
11480
- message: z79.string()
11569
+ var listSystemSkillsResponseSchema = z78.object({
11570
+ skills: z78.array(systemSkillSchema)
11481
11571
  });
11482
- var generateSkillBodySchema = z79.object({
11483
- prompt: z79.string().min(1).max(2e3),
11484
- existingContent: z79.string().max(2e4).optional()
11572
+ var skillFileItemSchema = z78.object({
11573
+ name: z78.string(),
11574
+ path: z78.string(),
11575
+ size: z78.number().optional(),
11576
+ contentType: z78.string().optional(),
11577
+ updatedAt: z78.string().optional()
11485
11578
  });
11486
- var generateSkillResponseSchema = z79.object({
11487
- content: z79.string()
11579
+ var listSkillFilesResponseSchema = z78.object({
11580
+ files: z78.array(skillFileItemSchema)
11488
11581
  });
11489
- var skillAssignmentSchema = z79.object({
11490
- id: z79.string(),
11491
- name: z79.string()
11582
+ var getSkillFileContentResponseSchema = z78.object({
11583
+ content: z78.string(),
11584
+ path: z78.string(),
11585
+ contentType: z78.string().optional()
11492
11586
  });
11493
- var listSkillAssignmentsResponseSchema = z79.object({
11494
- assignments: z79.array(skillAssignmentSchema),
11495
- total: z79.number()
11587
+ var updateSkillFileBodySchema = z78.object({
11588
+ content: z78.string()
11496
11589
  });
11497
- var teamInvitationApiSchema = z80.object({
11498
- id: z80.string(),
11499
- team_id: z80.string(),
11500
- email: z80.email(),
11501
- invited_by: z80.string(),
11502
- role: z80.string(),
11503
- status: z80.string(),
11504
- name: z80.string().nullable(),
11505
- created_at: z80.string(),
11506
- process_id: z80.guid().nullable().optional()
11590
+ var updateSkillFileResponseSchema = z78.object({
11591
+ success: z78.boolean(),
11592
+ message: z78.string(),
11593
+ skill: z78.object({
11594
+ id: z78.string(),
11595
+ name: z78.string(),
11596
+ description: z78.string()
11597
+ }).optional()
11507
11598
  });
11508
- var teamInvitationDetailApiSchema = z80.object({
11509
- id: z80.string(),
11510
- team_id: z80.string(),
11511
- email: z80.email(),
11512
- invited_by: z80.string(),
11513
- role: z80.string(),
11514
- status: z80.string(),
11515
- name: z80.string().nullable(),
11516
- created_at: z80.string(),
11517
- process_id: z80.guid().nullable().optional(),
11518
- team: z80.object({
11519
- id: z80.string(),
11520
- name: z80.string()
11599
+ var deleteSkillResponseSchema = z78.object({
11600
+ success: z78.boolean(),
11601
+ message: z78.string()
11602
+ });
11603
+ var generateSkillBodySchema = z78.object({
11604
+ prompt: z78.string().min(1).max(2e3),
11605
+ existingContent: z78.string().max(2e4).optional()
11606
+ });
11607
+ var generateSkillResponseSchema = z78.object({
11608
+ content: z78.string()
11609
+ });
11610
+ var skillAssignmentSchema = z78.object({
11611
+ id: z78.string(),
11612
+ name: z78.string()
11613
+ });
11614
+ var listSkillAssignmentsResponseSchema = z78.object({
11615
+ assignments: z78.array(skillAssignmentSchema),
11616
+ total: z78.number()
11617
+ });
11618
+ var teamInvitationApiSchema = z79.object({
11619
+ id: z79.string(),
11620
+ team_id: z79.string(),
11621
+ email: z79.email(),
11622
+ invited_by: z79.string(),
11623
+ role: z79.string(),
11624
+ status: z79.string(),
11625
+ name: z79.string().nullable(),
11626
+ created_at: z79.string(),
11627
+ process_id: z79.guid().nullable().optional()
11628
+ });
11629
+ var teamInvitationDetailApiSchema = z79.object({
11630
+ id: z79.string(),
11631
+ team_id: z79.string(),
11632
+ email: z79.email(),
11633
+ invited_by: z79.string(),
11634
+ role: z79.string(),
11635
+ status: z79.string(),
11636
+ name: z79.string().nullable(),
11637
+ created_at: z79.string(),
11638
+ process_id: z79.guid().nullable().optional(),
11639
+ team: z79.object({
11640
+ id: z79.string(),
11641
+ name: z79.string()
11521
11642
  }),
11522
- invitedBy: z80.object({
11523
- id: z80.string(),
11524
- name: z80.string().nullable(),
11525
- email: z80.email()
11643
+ invitedBy: z79.object({
11644
+ id: z79.string(),
11645
+ name: z79.string().nullable(),
11646
+ email: z79.email()
11526
11647
  }),
11527
- process: z80.object({
11528
- id: z80.string(),
11529
- name: z80.string()
11648
+ process: z79.object({
11649
+ id: z79.string(),
11650
+ name: z79.string()
11530
11651
  }).optional()
11531
11652
  });
11532
- var createTeamInvitationRequestSchema = z80.object({
11533
- email: z80.email(),
11534
- role: z80.string(),
11535
- processId: z80.guid().optional()
11653
+ var createTeamInvitationRequestSchema = z79.object({
11654
+ email: z79.email(),
11655
+ role: z79.string(),
11656
+ processId: z79.guid().optional()
11536
11657
  });
11537
- var acceptTeamInvitationRequestSchema = z80.object({
11538
- name: z80.string().optional()
11658
+ var acceptTeamInvitationRequestSchema = z79.object({
11659
+ name: z79.string().optional()
11539
11660
  });
11540
- var bulkInviteResponseSchema = z80.object({
11541
- succeeded: z80.number(),
11542
- skipped: z80.number(),
11543
- failed: z80.number()
11661
+ var bulkInviteResponseSchema = z79.object({
11662
+ succeeded: z79.number(),
11663
+ skipped: z79.number(),
11664
+ failed: z79.number()
11544
11665
  });
11545
11666
  var TEAM_DISCOVERY_MODES = ["request", "auto"];
11546
- var teamDiscoveryModeSchema = z81.enum(TEAM_DISCOVERY_MODES);
11547
- var BrowserRegionSchema = z81.enum([
11667
+ var teamDiscoveryModeSchema = z80.enum(TEAM_DISCOVERY_MODES);
11668
+ var BrowserRegionSchema = z80.enum([
11548
11669
  "us-west-2",
11549
11670
  "us-east-1",
11550
11671
  "eu-central-1",
11551
11672
  "ap-southeast-1"
11552
11673
  ]);
11553
- var BrowserLocationSchema = z81.union([
11554
- z81.literal("cz"),
11555
- z81.literal("de"),
11556
- z81.literal("fr"),
11557
- z81.literal("gb"),
11558
- z81.literal("it"),
11559
- z81.literal("pl"),
11560
- z81.literal("sk")
11674
+ var BrowserLocationSchema = z80.union([
11675
+ z80.literal("cz"),
11676
+ z80.literal("de"),
11677
+ z80.literal("fr"),
11678
+ z80.literal("gb"),
11679
+ z80.literal("it"),
11680
+ z80.literal("pl"),
11681
+ z80.literal("sk")
11561
11682
  ]);
11562
- var teamMemberApiSchema = z81.object({
11563
- id: z81.guid(),
11564
- name: z81.string().nullable(),
11565
- email: z81.email(),
11566
- role: z81.string(),
11567
- inheritedFromOrg: z81.boolean().default(false)
11568
- });
11569
- var listTeamMembersResponseSchema = z81.object({
11570
- members: z81.array(teamMemberApiSchema),
11571
- total: z81.number().int().nonnegative(),
11572
- limit: z81.number().int().positive(),
11573
- offset: z81.number().int().nonnegative()
11574
- });
11575
- var updateMemberRoleRequestSchema = z81.object({
11576
- role: z81.string()
11577
- });
11578
- var removeMemberResponseSchema = z81.object({
11579
- success: z81.literal(true),
11580
- nextTeamId: z81.guid().nullable(),
11581
- planType: z81.enum(["pro", "enterprise"]).nullable()
11582
- });
11583
- var getMemberMeResponseSchema = z81.object({
11584
- role: z81.string().nullable(),
11683
+ var teamMemberApiSchema = z80.object({
11684
+ id: z80.guid(),
11685
+ name: z80.string().nullable(),
11686
+ email: z80.email(),
11687
+ role: z80.string(),
11688
+ inheritedFromOrg: z80.boolean().default(false)
11689
+ });
11690
+ var listTeamMembersResponseSchema = z80.object({
11691
+ members: z80.array(teamMemberApiSchema),
11692
+ total: z80.number().int().nonnegative(),
11693
+ limit: z80.number().int().positive(),
11694
+ offset: z80.number().int().nonnegative()
11695
+ });
11696
+ var updateMemberRoleRequestSchema = z80.object({
11697
+ role: z80.string()
11698
+ });
11699
+ var removeMemberResponseSchema = z80.object({
11700
+ success: z80.literal(true),
11701
+ nextTeamId: z80.guid().nullable(),
11702
+ planType: z80.enum(["pro", "enterprise"]).nullable()
11703
+ });
11704
+ var getMemberMeResponseSchema = z80.object({
11705
+ role: z80.string().nullable(),
11585
11706
  // True only when a real `user_team_memberships` row exists. `role` can be a
11586
11707
  // read-only *virtual* role for org leaders who haven't joined, so it is not a
11587
11708
  // membership signal on its own — use this flag to tell a real member apart.
11588
- isMember: z81.boolean()
11709
+ isMember: z80.boolean()
11589
11710
  });
11590
- var addTeamMemberRequestSchema = z81.object({
11591
- userId: z81.guid(),
11592
- role: z81.string()
11711
+ var addTeamMemberRequestSchema = z80.object({
11712
+ userId: z80.guid(),
11713
+ role: z80.string()
11593
11714
  });
11594
- var updateTeamRequestSchema = z81.object({
11595
- name: z81.string().min(1).optional(),
11596
- slack_team_id: z81.string().optional(),
11715
+ var updateTeamRequestSchema = z80.object({
11716
+ name: z80.string().min(1).optional(),
11717
+ slack_team_id: z80.string().optional(),
11597
11718
  discovery_mode: teamDiscoveryModeSchema.optional()
11598
11719
  });
11599
- var teamApiSchema = z81.object({
11600
- id: z81.guid().describe("Unique team identifier"),
11601
- name: z81.string().describe("Human-readable team name"),
11602
- created_at: z81.string().describe("ISO 8601 creation timestamp"),
11603
- organization_id: z81.guid().nullable().describe("Parent organization ID, or null if the team is standalone"),
11604
- slack_team_id: z81.string().nullable().describe("Linked Slack workspace ID, or null if Slack is not connected"),
11720
+ var teamApiSchema = z80.object({
11721
+ id: z80.guid().describe("Unique team identifier"),
11722
+ name: z80.string().describe("Human-readable team name"),
11723
+ created_at: z80.string().describe("ISO 8601 creation timestamp"),
11724
+ organization_id: z80.guid().nullable().describe("Parent organization ID, or null if the team is standalone"),
11725
+ slack_team_id: z80.string().nullable().describe("Linked Slack workspace ID, or null if Slack is not connected"),
11605
11726
  // Responses use x-extensible-enum: adding a discovery mode to a strict
11606
11727
  // response enum is breaking in oasdiff, while an added x-extensible-enum
11607
11728
  // value is not. The strict request enum (updateTeamRequestSchema) still
@@ -11610,11 +11731,11 @@ var teamApiSchema = z81.object({
11610
11731
  description: "How the team handles agent discovery"
11611
11732
  })
11612
11733
  });
11613
- var teamResponseApiSchema = z81.object({
11734
+ var teamResponseApiSchema = z80.object({
11614
11735
  team: teamApiSchema
11615
11736
  });
11616
11737
  var TEAM_CONFIG_VERSION = 1;
11617
- var teamConfigDataSchema = z81.object({
11738
+ var teamConfigDataSchema = z80.object({
11618
11739
  browserProviderOverride: BrowserProviderTypeSchema.nullable().optional(),
11619
11740
  // Egress identity (proxy country) — what the target site sees.
11620
11741
  browserLocationOverride: BrowserLocationSchema.nullable().optional(),
@@ -11626,205 +11747,219 @@ var teamConfigDataSchema = z81.object({
11626
11747
  dataHandlingOverride: DataHandlingSchema.nullable().optional(),
11627
11748
  // Domains that bypass the org VPN and connect directly (split tunnel).
11628
11749
  // Union'd at runtime with the org-default list on vpn_proxy_config.
11629
- vpnBypassDomains: z81.array(z81.string()).max(MAX_VPN_BYPASS_DOMAINS).nullable().optional(),
11750
+ vpnBypassDomains: z80.array(z80.string()).max(MAX_VPN_BYPASS_DOMAINS).nullable().optional(),
11630
11751
  // Deprecated: superseded by dataResidencyOverride / dataHandlingOverride.
11631
11752
  // Kept optional so existing v1 rows still parse; the resolver reads the new
11632
11753
  // fields first and falls back to these. Do not surface in the UI.
11633
11754
  browserRegionOverride: BrowserRegionSchema.nullable().optional(),
11634
- sessionRecordingOverride: z81.boolean().nullable().optional()
11755
+ sessionRecordingOverride: z80.boolean().nullable().optional()
11635
11756
  });
11636
- var teamConfigSchema = z81.object({
11637
- version: z81.literal(TEAM_CONFIG_VERSION),
11757
+ var teamConfigSchema = z80.object({
11758
+ version: z80.literal(TEAM_CONFIG_VERSION),
11638
11759
  data: teamConfigDataSchema
11639
11760
  });
11640
- var listTeamInvitesResponseSchema = z81.object({
11641
- invitations: z81.array(teamInvitationApiSchema)
11761
+ var listTeamInvitesResponseSchema = z80.object({
11762
+ invitations: z80.array(teamInvitationApiSchema)
11642
11763
  });
11643
- var teamInsightsCopilotSchema = z82.object({
11644
- id: z82.guid(),
11645
- name: z82.string(),
11646
- teamName: z82.string().nullable().optional(),
11647
- created_at: z82.string().nullable(),
11648
- updated_at: z82.string().nullable(),
11649
- team_id: z82.string().nullable(),
11650
- thread_id: z82.string().nullable(),
11651
- slack_enabled: z82.boolean().nullable()
11652
- });
11653
- var teamInsightsUserProfileSchema = z82.object({
11654
- id: z82.guid(),
11655
- name: z82.string().nullable(),
11656
- email: z82.string()
11764
+ var teamInsightsCopilotSchema = z81.object({
11765
+ id: z81.guid(),
11766
+ name: z81.string(),
11767
+ teamName: z81.string().nullable().optional(),
11768
+ created_at: z81.string().nullable(),
11769
+ updated_at: z81.string().nullable(),
11770
+ team_id: z81.string().nullable(),
11771
+ thread_id: z81.string().nullable(),
11772
+ slack_enabled: z81.boolean().nullable()
11773
+ });
11774
+ var teamInsightsUserProfileSchema = z81.object({
11775
+ id: z81.guid(),
11776
+ name: z81.string().nullable(),
11777
+ email: z81.string()
11657
11778
  });
11658
11779
  var teamInsightsUserUsageSchema = teamInsightsUserProfileSchema.extend(
11659
11780
  {
11660
- runCount: z82.number(),
11661
- lastRun: z82.string().nullable()
11781
+ runCount: z81.number(),
11782
+ lastRun: z81.string().nullable()
11662
11783
  }
11663
11784
  );
11664
- var teamInsightsMetricSourceSchema = z82.object({
11785
+ var teamInsightsMetricSourceSchema = z81.object({
11665
11786
  source: agentRunSourceSchema,
11666
- runsTotal: z82.number(),
11667
- completedRuns: z82.number()
11787
+ runsTotal: z81.number(),
11788
+ completedRuns: z81.number()
11668
11789
  });
11669
11790
  var teamInsightsCopilotWithRunsSchema = teamInsightsCopilotSchema.extend({
11670
- integrations: z82.array(z82.string()),
11671
- uniqueUsersCount: z82.number(),
11672
- users: z82.array(teamInsightsUserUsageSchema),
11673
- totalRuns: z82.number(),
11674
- completedRuns: z82.number(),
11675
- totalTimeSpentMs: z82.number(),
11676
- averageTimeSpentMs: z82.number(),
11677
- completedRunsWithTiming: z82.number(),
11678
- sources: z82.array(teamInsightsMetricSourceSchema)
11679
- });
11680
- var teamInsightsAgentsRunResponseSchema = z82.object({
11681
- data: z82.array(teamInsightsCopilotWithRunsSchema),
11682
- total: z82.number()
11683
- });
11684
- var teamInsightsMetricsResponseSchema = z82.object({
11685
- runsTotal: z82.number(),
11686
- completedRuns: z82.number(),
11687
- sources: z82.array(teamInsightsMetricSourceSchema)
11688
- });
11689
- var teamInsightsUserAgentRunSchema = z82.object({
11690
- id: z82.guid(),
11691
- created_at: z82.string(),
11692
- updated_at: z82.string(),
11693
- agent_id: z82.guid(),
11694
- agent_name: z82.string(),
11695
- build_id: z82.guid(),
11696
- source: z82.string().nullable(),
11697
- started_at: z82.string().nullable(),
11698
- completed_at: z82.string().nullable()
11699
- });
11700
- var teamInsightsAgentSchema = z82.object({
11701
- id: z82.guid(),
11702
- name: z82.string(),
11703
- teamName: z82.string().nullable().optional(),
11704
- runs: z82.array(teamInsightsUserAgentRunSchema)
11791
+ integrations: z81.array(z81.string()),
11792
+ uniqueUsersCount: z81.number(),
11793
+ users: z81.array(teamInsightsUserUsageSchema),
11794
+ totalRuns: z81.number(),
11795
+ completedRuns: z81.number(),
11796
+ totalTimeSpentMs: z81.number(),
11797
+ averageTimeSpentMs: z81.number(),
11798
+ completedRunsWithTiming: z81.number(),
11799
+ sources: z81.array(teamInsightsMetricSourceSchema)
11800
+ });
11801
+ var teamInsightsAgentsRunResponseSchema = z81.object({
11802
+ data: z81.array(teamInsightsCopilotWithRunsSchema),
11803
+ total: z81.number()
11804
+ });
11805
+ var teamInsightsMetricsResponseSchema = z81.object({
11806
+ runsTotal: z81.number(),
11807
+ completedRuns: z81.number(),
11808
+ sources: z81.array(teamInsightsMetricSourceSchema)
11809
+ });
11810
+ var teamInsightsUserAgentRunSchema = z81.object({
11811
+ id: z81.guid(),
11812
+ created_at: z81.string(),
11813
+ updated_at: z81.string(),
11814
+ agent_id: z81.guid(),
11815
+ agent_name: z81.string(),
11816
+ build_id: z81.guid(),
11817
+ source: z81.string().nullable(),
11818
+ started_at: z81.string().nullable(),
11819
+ completed_at: z81.string().nullable()
11820
+ });
11821
+ var teamInsightsAgentSchema = z81.object({
11822
+ id: z81.guid(),
11823
+ name: z81.string(),
11824
+ teamName: z81.string().nullable().optional(),
11825
+ runs: z81.array(teamInsightsUserAgentRunSchema)
11705
11826
  });
11706
11827
  var teamInsightsUserWithAgentsAndRunsSchema = teamInsightsUserProfileSchema.extend({
11707
- agents: z82.array(teamInsightsAgentSchema),
11708
- runs: z82.array(teamInsightsUserAgentRunSchema),
11709
- totalRuns: z82.number()
11710
- });
11711
- var teamInsightsUsersResponseSchema = z82.object({
11712
- data: z82.array(teamInsightsUserWithAgentsAndRunsSchema),
11713
- total: z82.number()
11714
- });
11715
- var guardrailsAuthorSchema = z83.object({
11716
- id: z83.guid(),
11717
- name: z83.string().nullable(),
11718
- email: z83.email()
11719
- });
11720
- var guardrailsRevisionSchema = z83.object({
11721
- id: z83.guid(),
11722
- teamId: z83.guid(),
11723
- guardrailsText: z83.string().nullable(),
11724
- blockedDomains: z83.array(z83.string()),
11725
- createdAt: z83.string(),
11828
+ agents: z81.array(teamInsightsAgentSchema),
11829
+ runs: z81.array(teamInsightsUserAgentRunSchema),
11830
+ totalRuns: z81.number()
11831
+ });
11832
+ var teamInsightsUsersResponseSchema = z81.object({
11833
+ data: z81.array(teamInsightsUserWithAgentsAndRunsSchema),
11834
+ total: z81.number()
11835
+ });
11836
+ var guardrailsAuthorSchema = z82.object({
11837
+ id: z82.guid(),
11838
+ name: z82.string().nullable(),
11839
+ email: z82.email()
11840
+ });
11841
+ var guardrailsRevisionSchema = z82.object({
11842
+ id: z82.guid(),
11843
+ teamId: z82.guid(),
11844
+ guardrailsText: z82.string().nullable(),
11845
+ blockedDomains: z82.array(z82.string()),
11846
+ createdAt: z82.string(),
11726
11847
  createdBy: guardrailsAuthorSchema
11727
11848
  });
11728
- var getTeamGuardrailsResponseSchema = z83.object({
11849
+ var getTeamGuardrailsResponseSchema = z82.object({
11729
11850
  current: guardrailsRevisionSchema.nullable()
11730
11851
  });
11731
- var listTeamGuardrailsRevisionsQuerySchema = z83.object({
11732
- limit: z83.coerce.number().int().min(1).max(100).default(20),
11733
- offset: z83.coerce.number().int().min(0).default(0)
11852
+ var listTeamGuardrailsRevisionsQuerySchema = z82.object({
11853
+ limit: z82.coerce.number().int().min(1).max(100).default(20),
11854
+ offset: z82.coerce.number().int().min(0).default(0)
11734
11855
  });
11735
- var listTeamGuardrailsRevisionsResponseSchema = z83.object({
11736
- revisions: z83.array(guardrailsRevisionSchema),
11737
- total: z83.number().int().nonnegative()
11856
+ var listTeamGuardrailsRevisionsResponseSchema = z82.object({
11857
+ revisions: z82.array(guardrailsRevisionSchema),
11858
+ total: z82.number().int().nonnegative()
11738
11859
  });
11739
- var createTeamGuardrailsRevisionRequestSchema = z83.object({
11740
- guardrailsText: z83.string().max(MAX_GUARDRAILS_TEXT_LENGTH).nullable().transform((value) => value && value.trim().length > 0 ? value : null),
11741
- blockedDomains: z83.array(z83.string()).max(MAX_BLOCKED_DOMAINS)
11860
+ var createTeamGuardrailsRevisionRequestSchema = z82.object({
11861
+ guardrailsText: z82.string().max(MAX_GUARDRAILS_TEXT_LENGTH).nullable().transform((value) => value && value.trim().length > 0 ? value : null),
11862
+ blockedDomains: z82.array(z82.string()).max(MAX_BLOCKED_DOMAINS)
11742
11863
  });
11743
- var userDismissalListResponseSchema = z84.object({
11744
- data: z84.array(z84.string())
11864
+ var userDismissalListResponseSchema = z83.object({
11865
+ data: z83.array(z83.string())
11745
11866
  });
11746
- var userDismissalMutationSchema = z84.object({
11747
- elementKey: z84.string()
11867
+ var userDismissalMutationSchema = z83.object({
11868
+ elementKey: z83.string()
11748
11869
  });
11749
11870
  var PASSWORD_MIN = 1;
11750
11871
  var PASSWORD_MAX = 1024;
11751
11872
  var NAME_MAX = 200;
11752
11873
  var URL_MAX = 500;
11753
11874
  var USERNAME_MAX = 200;
11754
- var vpnProxyConfigSummarySchema = z85.object({
11755
- id: z85.guid(),
11756
- name: z85.string(),
11757
- server: z85.string(),
11758
- username: z85.string(),
11759
- enabled: z85.boolean(),
11760
- passwordSet: z85.boolean(),
11761
- organizationCount: z85.number().int().nonnegative(),
11762
- createdAt: z85.string(),
11763
- updatedAt: z85.string()
11764
- });
11765
- var vpnProxyConfigListResponseSchema = z85.object({
11766
- configs: z85.array(vpnProxyConfigSummarySchema)
11767
- });
11768
- var vpnProxyConfigCreateRequestSchema = z85.object({
11769
- name: z85.string().trim().min(1).max(NAME_MAX),
11770
- server: z85.string().trim().min(1).max(URL_MAX).url(),
11771
- username: z85.string().trim().min(1).max(USERNAME_MAX),
11772
- password: z85.string().min(PASSWORD_MIN).max(PASSWORD_MAX),
11773
- enabled: z85.boolean().prefault(true)
11774
- });
11775
- var vpnProxyConfigCreateResponseSchema = z85.object({
11875
+ var vpnProxyConfigSummarySchema = z84.object({
11876
+ id: z84.guid(),
11877
+ name: z84.string(),
11878
+ server: z84.string(),
11879
+ username: z84.string(),
11880
+ enabled: z84.boolean(),
11881
+ passwordSet: z84.boolean(),
11882
+ organizationCount: z84.number().int().nonnegative(),
11883
+ createdAt: z84.string(),
11884
+ updatedAt: z84.string()
11885
+ });
11886
+ var vpnProxyConfigListResponseSchema = z84.object({
11887
+ configs: z84.array(vpnProxyConfigSummarySchema)
11888
+ });
11889
+ var vpnProxyConfigCreateRequestSchema = z84.object({
11890
+ name: z84.string().trim().min(1).max(NAME_MAX),
11891
+ server: z84.string().trim().min(1).max(URL_MAX).url(),
11892
+ username: z84.string().trim().min(1).max(USERNAME_MAX),
11893
+ password: z84.string().min(PASSWORD_MIN).max(PASSWORD_MAX),
11894
+ enabled: z84.boolean().prefault(true)
11895
+ });
11896
+ var vpnProxyConfigCreateResponseSchema = z84.object({
11776
11897
  config: vpnProxyConfigSummarySchema
11777
11898
  });
11778
- var vpnProxyConfigUpdateRequestSchema = z85.object({
11779
- name: z85.string().trim().min(1).max(NAME_MAX).optional(),
11780
- server: z85.string().trim().min(1).max(URL_MAX).url().optional(),
11781
- username: z85.string().trim().min(1).max(USERNAME_MAX).optional(),
11782
- password: z85.string().min(PASSWORD_MIN).max(PASSWORD_MAX).optional(),
11783
- enabled: z85.boolean().optional()
11899
+ var vpnProxyConfigUpdateRequestSchema = z84.object({
11900
+ name: z84.string().trim().min(1).max(NAME_MAX).optional(),
11901
+ server: z84.string().trim().min(1).max(URL_MAX).url().optional(),
11902
+ username: z84.string().trim().min(1).max(USERNAME_MAX).optional(),
11903
+ password: z84.string().min(PASSWORD_MIN).max(PASSWORD_MAX).optional(),
11904
+ enabled: z84.boolean().optional()
11784
11905
  });
11785
- var vpnProxyConfigUpdateResponseSchema = z85.object({
11906
+ var vpnProxyConfigUpdateResponseSchema = z84.object({
11786
11907
  config: vpnProxyConfigSummarySchema
11787
11908
  });
11788
- var vpnProxyConfigDeleteResponseSchema = z85.object({
11789
- success: z85.literal(true)
11909
+ var vpnProxyConfigDeleteResponseSchema = z84.object({
11910
+ success: z84.literal(true)
11790
11911
  });
11791
- var vpnProxyConfigOrganizationSchema = z85.object({
11792
- id: z85.guid(),
11793
- organizationId: z85.guid(),
11794
- organizationName: z85.string(),
11795
- bypassDomains: z85.array(z85.string()),
11796
- vpnEnforced: z85.boolean(),
11797
- attachedAt: z85.string()
11912
+ var vpnProxyConfigOrganizationSchema = z84.object({
11913
+ id: z84.guid(),
11914
+ organizationId: z84.guid(),
11915
+ organizationName: z84.string(),
11916
+ bypassDomains: z84.array(z84.string()),
11917
+ vpnEnforced: z84.boolean(),
11918
+ attachedAt: z84.string()
11798
11919
  });
11799
- var vpnProxyConfigOrganizationListResponseSchema = z85.object({
11800
- organizations: z85.array(vpnProxyConfigOrganizationSchema)
11920
+ var vpnProxyConfigOrganizationListResponseSchema = z84.object({
11921
+ organizations: z84.array(vpnProxyConfigOrganizationSchema)
11801
11922
  });
11802
- var vpnProxyConfigAttachOrganizationRequestSchema = z85.object({
11803
- organizationId: z85.guid(),
11804
- bypassDomains: z85.array(z85.string()).max(MAX_VPN_BYPASS_DOMAINS).prefault([]),
11805
- vpnEnforced: z85.boolean().prefault(false)
11923
+ var vpnProxyConfigAttachOrganizationRequestSchema = z84.object({
11924
+ organizationId: z84.guid(),
11925
+ bypassDomains: z84.array(z84.string()).max(MAX_VPN_BYPASS_DOMAINS).prefault([]),
11926
+ vpnEnforced: z84.boolean().prefault(false)
11806
11927
  });
11807
- var vpnProxyConfigAttachOrganizationResponseSchema = z85.object({
11928
+ var vpnProxyConfigAttachOrganizationResponseSchema = z84.object({
11808
11929
  attachment: vpnProxyConfigOrganizationSchema
11809
11930
  });
11810
- var vpnProxyConfigDetachOrganizationResponseSchema = z85.object({
11811
- success: z85.literal(true)
11931
+ var vpnProxyConfigDetachOrganizationResponseSchema = z84.object({
11932
+ success: z84.literal(true)
11812
11933
  });
11813
- var vpnProxyConfigForOrganizationAttachmentSchema = z85.object({
11814
- bypassDomains: z85.array(z85.string()),
11815
- vpnEnforced: z85.boolean()
11934
+ var vpnProxyConfigForOrganizationAttachmentSchema = z84.object({
11935
+ bypassDomains: z84.array(z84.string()),
11936
+ vpnEnforced: z84.boolean()
11816
11937
  });
11817
- var vpnProxyConfigForOrganizationResponseSchema = z85.object({
11938
+ var vpnProxyConfigForOrganizationResponseSchema = z84.object({
11818
11939
  config: vpnProxyConfigSummarySchema.nullable(),
11819
11940
  attachment: vpnProxyConfigForOrganizationAttachmentSchema.nullable()
11820
11941
  });
11821
- var vpnProxyConfigUpdateOrganizationPolicyRequestSchema = z85.object({
11822
- bypassDomains: z85.array(z85.string()).max(MAX_VPN_BYPASS_DOMAINS).optional(),
11823
- vpnEnforced: z85.boolean().optional()
11942
+ var vpnProxyConfigUpdateOrganizationPolicyRequestSchema = z84.object({
11943
+ bypassDomains: z84.array(z84.string()).max(MAX_VPN_BYPASS_DOMAINS).optional(),
11944
+ vpnEnforced: z84.boolean().optional()
11824
11945
  });
11825
- var vpnProxyConfigUpdateOrganizationPolicyResponseSchema = z85.object({
11946
+ var vpnProxyConfigUpdateOrganizationPolicyResponseSchema = z84.object({
11826
11947
  attachment: vpnProxyConfigOrganizationSchema
11827
11948
  });
11949
+ var workflowExecutionReportSchema = z85.object({
11950
+ agentRunId: z85.string(),
11951
+ provider: z85.string().nullable(),
11952
+ expectedProgrammatic: z85.number(),
11953
+ totalSteps: z85.number(),
11954
+ executedSteps: z85.number(),
11955
+ calls: z85.number(),
11956
+ executions: z85.number(),
11957
+ handoffs: z85.number(),
11958
+ errors: z85.number(),
11959
+ stopReasons: z85.array(z85.string()),
11960
+ reachedCompletion: z85.boolean(),
11961
+ programmaticExecutionRate: z85.number()
11962
+ });
11828
11963
  function canonicalizeSopInput(config) {
11829
11964
  const { input } = config.data;
11830
11965
  if (typeof input !== "string") {
@@ -11844,13 +11979,24 @@ function canonicalizeSopInput(config) {
11844
11979
  __name(canonicalizeSopInput, "canonicalizeSopInput");
11845
11980
  __name2(canonicalizeSopInput, "canonicalizeSopInput");
11846
11981
  var casePriorityFilterSchema = casePrioritySchema;
11847
- var caseFilterStatusSchema = z86.enum([
11982
+ var CASE_FILTER_STATUS_BUCKETS = [
11983
+ "all",
11848
11984
  "pending",
11985
+ "processing",
11986
+ "needs_input",
11987
+ "postponed",
11988
+ "needs_review",
11989
+ "resolved",
11990
+ "canceled"
11991
+ ];
11992
+ var CASE_FILTER_STATUS_LEGACY = [
11849
11993
  "claimed",
11850
11994
  "completed",
11851
- "failed",
11852
- "needs_input",
11853
- "postponed"
11995
+ "failed"
11996
+ ];
11997
+ var caseFilterStatusSchema = z86.enum([
11998
+ ...CASE_FILTER_STATUS_BUCKETS,
11999
+ ...CASE_FILTER_STATUS_LEGACY
11854
12000
  ]);
11855
12001
  var casesFiltersSchema = z86.object({
11856
12002
  status: z86.array(caseFilterStatusSchema).optional(),
@@ -18644,7 +18790,7 @@ var TABLE_COLUMNS18 = [
18644
18790
  function registerCasesList(cases) {
18645
18791
  cases.command("list", { isDefault: true }).description("List cases in a queue").requiredOption("--queue <id>", "ID of the queue to list cases for").option("--limit <n>", `page size (${MIN_LIMIT3}-${MAX_LIMIT3})`).option("--offset <n>", "number of cases to skip").option(
18646
18792
  "--status <statuses>",
18647
- `comma-separated case statuses (${caseFilterStatusSchema.options.join(", ")})`
18793
+ `comma-separated status buckets (${CASE_FILTER_STATUS_BUCKETS.join(", ")})`
18648
18794
  ).option(
18649
18795
  "--priority <levels>",
18650
18796
  `comma-separated priority levels (${casePriorityFilterSchema.options.join(", ")})`
@@ -18730,14 +18876,14 @@ function parseStatuses(raw) {
18730
18876
  const parts = raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
18731
18877
  if (parts.length === 0) {
18732
18878
  throw new CliError(
18733
- `Invalid --status value "${raw}". Allowed: ${caseFilterStatusSchema.options.join(", ")}.`
18879
+ `Invalid --status value "${raw}". Allowed: ${CASE_FILTER_STATUS_BUCKETS.join(", ")}.`
18734
18880
  );
18735
18881
  }
18736
18882
  const allowed = new Set(caseFilterStatusSchema.options);
18737
18883
  const invalid = parts.filter((p) => !allowed.has(p));
18738
18884
  if (invalid.length > 0) {
18739
18885
  throw new CliError(
18740
- `Invalid --status value(s): ${invalid.join(", ")}. Allowed: ${caseFilterStatusSchema.options.join(", ")}.`
18886
+ `Invalid --status value(s): ${invalid.join(", ")}. Allowed: ${CASE_FILTER_STATUS_BUCKETS.join(", ")}.`
18741
18887
  );
18742
18888
  }
18743
18889
  return parts;
@@ -26708,6 +26854,12 @@ function registerOauthMcpAuthorize(mcp) {
26708
26854
  ).option(
26709
26855
  "--reconnect-instance-id <id>",
26710
26856
  "GUID of an existing connection to reconnect (re-authorize) rather than create a new one"
26857
+ ).option(
26858
+ "--oauth-client-id <id>",
26859
+ "OAuth client ID of a client you registered on the authorization server yourself (e.g. a NetSuite Integration record); skips Dynamic Client Registration"
26860
+ ).option(
26861
+ "--oauth-client-secret <secret>",
26862
+ "client secret for --oauth-client-id; omit for public clients (PKCE-only)"
26711
26863
  ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function authorizeMcpAction(options) {
26712
26864
  const config = await requireAuthenticatedConfig(this);
26713
26865
  const { apiKey, apiBaseUrl } = config;
@@ -26752,6 +26904,25 @@ function registerOauthMcpAuthorize(mcp) {
26752
26904
  }
26753
26905
  body.reconnect_instance_id = trimmed;
26754
26906
  }
26907
+ if (options.oauthClientId !== void 0) {
26908
+ const trimmed = options.oauthClientId.trim();
26909
+ if (trimmed.length === 0) {
26910
+ throw new CliError("--oauth-client-id must not be empty");
26911
+ }
26912
+ body.oauth_client_id = trimmed;
26913
+ }
26914
+ if (options.oauthClientSecret !== void 0) {
26915
+ if (body.oauth_client_id === void 0) {
26916
+ throw new CliError(
26917
+ "--oauth-client-secret requires --oauth-client-id"
26918
+ );
26919
+ }
26920
+ const trimmed = options.oauthClientSecret.trim();
26921
+ if (trimmed.length === 0) {
26922
+ throw new CliError("--oauth-client-secret must not be empty");
26923
+ }
26924
+ body.oauth_client_secret = trimmed;
26925
+ }
26755
26926
  const raw = await httpRequest({
26756
26927
  method: "POST",
26757
26928
  path: buildTeamPath(teamId, "/connections/oauth/mcp/start"),
@@ -32632,7 +32803,7 @@ __name(isStandaloneBinary, "isStandaloneBinary");
32632
32803
  import { createRequire } from "node:module";
32633
32804
  function getPackageMeta() {
32634
32805
  if (true) {
32635
- return { name: "@duvoai/cli", version: "1.34.0" };
32806
+ return { name: "@duvoai/cli", version: "1.35.1" };
32636
32807
  }
32637
32808
  const require2 = createRequire(import.meta.url);
32638
32809
  const raw = require2("../../package.json");