@duvoai/cli 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/duvo.js CHANGED
@@ -863,7 +863,7 @@ var PLAN_VERSIONS = {
863
863
  maxAgents: "unlimited",
864
864
  maxAgentRunsPerMonth: 500,
865
865
  runCountingMode: "monthly",
866
- maxConcurrentRuns: 1,
866
+ maxConcurrentRuns: 20,
867
867
  features: [
868
868
  PLAN_FEATURE.BROWSER_AUTOMATION,
869
869
  PLAN_FEATURE.ADVANCED_INTEGRATIONS,
@@ -1965,6 +1965,31 @@ var ClaudeModelIdSchema = z11.enum([
1965
1965
  ...CLAUDE_MODEL_IDS,
1966
1966
  ...LEGACY_MODEL_IDS
1967
1967
  ]);
1968
+ var AVAILABLE_AGENT_MODELS = {
1969
+ "claude-sonnet-4-6": {
1970
+ displayName: "Claude Sonnet 4.6"
1971
+ },
1972
+ "claude-sonnet-4-6[1m]": {
1973
+ displayName: "Claude Sonnet 4.6",
1974
+ description: "Fast and capable for everyday tasks"
1975
+ },
1976
+ "claude-opus-4-6": {
1977
+ displayName: "Claude Opus 4.6",
1978
+ description: "Advanced model for complex work"
1979
+ },
1980
+ "claude-opus-4-6[1m]": {
1981
+ displayName: "Claude Opus 4.6",
1982
+ description: "Advanced model for complex work"
1983
+ },
1984
+ "claude-opus-4-7": {
1985
+ displayName: "Claude Opus 4.7",
1986
+ description: "Our most capable model \u2014 best for complex work"
1987
+ },
1988
+ "claude-opus-4-7[1m]": {
1989
+ displayName: "Claude Opus 4.7",
1990
+ description: "Our most capable model \u2014 best for complex work"
1991
+ }
1992
+ };
1968
1993
  var BrowsingModelIdSchema = z11.enum([
1969
1994
  "gemini-2.5-pro",
1970
1995
  "gemini-2.5-flash",
@@ -3176,6 +3201,66 @@ function refineStepGraph(steps, ctx) {
3176
3201
  }
3177
3202
  __name(refineStepGraph, "refineStepGraph");
3178
3203
  __name2(refineStepGraph, "refineStepGraph");
3204
+ var STRING_ARRAY_FIELDS = ["assumptions", "openQuestions"];
3205
+ var NULLABLE_STRING_FIELDS = [
3206
+ "action",
3207
+ "role",
3208
+ "system",
3209
+ "input",
3210
+ "output",
3211
+ "condition",
3212
+ "exception",
3213
+ "handling"
3214
+ ];
3215
+ function isPlainObject(value) {
3216
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3217
+ }
3218
+ __name(isPlainObject, "isPlainObject");
3219
+ __name2(isPlainObject, "isPlainObject");
3220
+ function coerceStringArrayField(value) {
3221
+ if (Array.isArray(value)) {
3222
+ return value;
3223
+ }
3224
+ if (typeof value === "string") {
3225
+ const trimmed = value.trim();
3226
+ return trimmed.length === 0 ? null : [trimmed];
3227
+ }
3228
+ return value;
3229
+ }
3230
+ __name(coerceStringArrayField, "coerceStringArrayField");
3231
+ __name2(coerceStringArrayField, "coerceStringArrayField");
3232
+ function coerceNullableStringField(value) {
3233
+ if (typeof value === "string" && value.trim().length === 0) {
3234
+ return null;
3235
+ }
3236
+ return value;
3237
+ }
3238
+ __name(coerceNullableStringField, "coerceNullableStringField");
3239
+ __name2(coerceNullableStringField, "coerceNullableStringField");
3240
+ function coerceStepOutput(step) {
3241
+ if (!isPlainObject(step)) {
3242
+ return step;
3243
+ }
3244
+ const next = { ...step };
3245
+ for (const field of STRING_ARRAY_FIELDS) {
3246
+ if (field in next) {
3247
+ next[field] = coerceStringArrayField(next[field]);
3248
+ }
3249
+ }
3250
+ for (const field of NULLABLE_STRING_FIELDS) {
3251
+ if (field in next) {
3252
+ next[field] = coerceNullableStringField(next[field]);
3253
+ }
3254
+ }
3255
+ return next;
3256
+ }
3257
+ __name(coerceStepOutput, "coerceStepOutput");
3258
+ __name2(coerceStepOutput, "coerceStepOutput");
3259
+ function coerceStepsOutput(steps) {
3260
+ return steps.map(coerceStepOutput);
3261
+ }
3262
+ __name(coerceStepsOutput, "coerceStepsOutput");
3263
+ __name2(coerceStepsOutput, "coerceStepsOutput");
3179
3264
  var stepSourceSchema = z14.object({
3180
3265
  attribution: z14.string().min(1).describe(
3181
3266
  'Human-readable source label identifying who or what the evidence comes from. Examples: "Anna (sales interview)", "Onboarding SOP \xA73.2", "Slack #ops 2024-06-12"'
@@ -3712,6 +3797,151 @@ var artifactChatMessageUpsertEventDataSchema = z18.object({
3712
3797
  conversation: clarityProcessChatConversationSchema,
3713
3798
  message: clarityProcessChatMessageSchema
3714
3799
  });
3800
+ function isJsonObject(value) {
3801
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3802
+ }
3803
+ __name(isJsonObject, "isJsonObject");
3804
+ __name2(isJsonObject, "isJsonObject");
3805
+ function clarityStepsToEaseDocument(steps) {
3806
+ const stepOrder = steps.map((step) => step.id);
3807
+ const stepsById = Object.fromEntries(
3808
+ steps.map((step) => {
3809
+ const {
3810
+ id,
3811
+ readiness: _readiness,
3812
+ readinessRationale: _readinessRationale,
3813
+ extraCaptureNeeded: _extraCaptureNeeded,
3814
+ ...baseStep
3815
+ } = step;
3816
+ return [id, baseStep];
3817
+ })
3818
+ );
3819
+ return { stepOrder, stepsById };
3820
+ }
3821
+ __name(clarityStepsToEaseDocument, "clarityStepsToEaseDocument");
3822
+ __name2(clarityStepsToEaseDocument, "clarityStepsToEaseDocument");
3823
+ function assertEaseDocument(value) {
3824
+ if (!isJsonObject(value)) {
3825
+ throw new Error("EASE document must be an object");
3826
+ }
3827
+ if (!Array.isArray(value.stepOrder)) {
3828
+ throw new Error("EASE document stepOrder must be an array");
3829
+ }
3830
+ if (!isJsonObject(value.stepsById)) {
3831
+ throw new Error("EASE document stepsById must be an object");
3832
+ }
3833
+ const stepOrder = value.stepOrder.map((stepId, index) => {
3834
+ if (typeof stepId !== "string" || stepId.length === 0) {
3835
+ throw new Error(`stepOrder[${index}] must be a non-empty string`);
3836
+ }
3837
+ return stepId;
3838
+ });
3839
+ const duplicateStepIds = stepOrder.filter(
3840
+ (stepId, index) => stepOrder.indexOf(stepId) !== index
3841
+ );
3842
+ if (duplicateStepIds.length > 0) {
3843
+ throw new Error(`stepOrder contains duplicate id "${duplicateStepIds[0]}"`);
3844
+ }
3845
+ const stepOrderSet = new Set(stepOrder);
3846
+ const stepEntries = Object.entries(value.stepsById).map(([stepId, step]) => {
3847
+ if (!stepOrderSet.has(stepId)) {
3848
+ throw new Error(`stepsById contains "${stepId}" but stepOrder does not`);
3849
+ }
3850
+ if (!isJsonObject(step)) {
3851
+ throw new Error(`stepsById.${stepId} must be an object`);
3852
+ }
3853
+ if ("id" in step) {
3854
+ throw new Error(`stepsById.${stepId} must not contain an id field`);
3855
+ }
3856
+ const targetSteps = step.targetSteps;
3857
+ if (!Array.isArray(targetSteps)) {
3858
+ throw new Error(`stepsById.${stepId}.targetSteps must be an array`);
3859
+ }
3860
+ targetSteps.forEach((edge, edgeIndex) => {
3861
+ if (!isJsonObject(edge)) {
3862
+ throw new Error(
3863
+ `stepsById.${stepId}.targetSteps[${edgeIndex}] must be an object`
3864
+ );
3865
+ }
3866
+ if (typeof edge.stepId !== "string" || !stepOrderSet.has(edge.stepId)) {
3867
+ throw new Error(
3868
+ `stepsById.${stepId}.targetSteps[${edgeIndex}].stepId "${String(edge.stepId)}" does not match any step id`
3869
+ );
3870
+ }
3871
+ });
3872
+ return [stepId, step];
3873
+ });
3874
+ for (const stepId of stepOrder) {
3875
+ if (!(stepId in value.stepsById)) {
3876
+ throw new Error(`stepOrder contains "${stepId}" but stepsById does not`);
3877
+ }
3878
+ }
3879
+ return {
3880
+ stepOrder,
3881
+ stepsById: Object.fromEntries(stepEntries)
3882
+ };
3883
+ }
3884
+ __name(assertEaseDocument, "assertEaseDocument");
3885
+ __name2(assertEaseDocument, "assertEaseDocument");
3886
+ function materializeEaseDocument(easeDocument) {
3887
+ const ease = assertEaseDocument(easeDocument);
3888
+ return {
3889
+ steps: ease.stepOrder.map((stepId) => ({
3890
+ id: stepId,
3891
+ ...ease.stepsById[stepId]
3892
+ }))
3893
+ };
3894
+ }
3895
+ __name(materializeEaseDocument, "materializeEaseDocument");
3896
+ __name2(materializeEaseDocument, "materializeEaseDocument");
3897
+ function mergeCurrentProcessPostprocessSlices(previous, steps) {
3898
+ return { ...previous, steps: mergeSteps(previous.steps, steps) };
3899
+ }
3900
+ __name(mergeCurrentProcessPostprocessSlices, "mergeCurrentProcessPostprocessSlices");
3901
+ __name2(mergeCurrentProcessPostprocessSlices, "mergeCurrentProcessPostprocessSlices");
3902
+ function mergeTransformationProposalPostprocessSlices(previous, steps) {
3903
+ return { ...previous, steps: mergeSteps(previous.steps, steps) };
3904
+ }
3905
+ __name(mergeTransformationProposalPostprocessSlices, "mergeTransformationProposalPostprocessSlices");
3906
+ __name2(mergeTransformationProposalPostprocessSlices, "mergeTransformationProposalPostprocessSlices");
3907
+ function createBaseCurrentProcessData(previous, steps) {
3908
+ return postprocessClarityCurrentProcessDataSchema.parse({
3909
+ version: previous.version,
3910
+ steps: steps.map((step) => clarityStepBaseSchema.parse(step))
3911
+ });
3912
+ }
3913
+ __name(createBaseCurrentProcessData, "createBaseCurrentProcessData");
3914
+ __name2(createBaseCurrentProcessData, "createBaseCurrentProcessData");
3915
+ function createBaseTransformationProposalData(previous, steps) {
3916
+ return postprocessClarityTransformationProposalDataSchema.parse({
3917
+ version: previous.version,
3918
+ steps: steps.map((step) => clarityStepBaseSchema.parse(step))
3919
+ });
3920
+ }
3921
+ __name(createBaseTransformationProposalData, "createBaseTransformationProposalData");
3922
+ __name2(createBaseTransformationProposalData, "createBaseTransformationProposalData");
3923
+ function mergeSteps(previousSteps, steps) {
3924
+ const previousById = new Map(previousSteps.map((step) => [step.id, step]));
3925
+ return steps.map((step) => {
3926
+ const prev = previousById.get(step.id);
3927
+ if (!prev) {
3928
+ return step;
3929
+ }
3930
+ return {
3931
+ ...step,
3932
+ readiness: step.readiness ?? prev.readiness,
3933
+ readinessRationale: nonEmptyString(step.readinessRationale) ? step.readinessRationale : prev.readinessRationale,
3934
+ extraCaptureNeeded: step.extraCaptureNeeded ?? prev.extraCaptureNeeded
3935
+ };
3936
+ });
3937
+ }
3938
+ __name(mergeSteps, "mergeSteps");
3939
+ __name2(mergeSteps, "mergeSteps");
3940
+ function nonEmptyString(value) {
3941
+ return value != null && value.length > 0;
3942
+ }
3943
+ __name(nonEmptyString, "nonEmptyString");
3944
+ __name2(nonEmptyString, "nonEmptyString");
3715
3945
  var MAX_PROCESS_GUIDANCE_PROMPT_CHARS = 500;
3716
3946
  function removeControlCharacters(value) {
3717
3947
  return [...value].map((character) => {
@@ -6322,6 +6552,11 @@ var FEATURE_FLAG_CATALOGUE = {
6322
6552
  defaultValue: true,
6323
6553
  description: "Grants a team access to the Windows Remote Desktop beta. Default-on day-one (no known scaling limit); flip off to hide the Enable form and show a Request Access flow on the tile's detail page."
6324
6554
  },
6555
+ CROSS_TEAM_AGENT_MOVE: {
6556
+ key: "cross_team_agent_move",
6557
+ defaultValue: false,
6558
+ description: "Enables the Move Assignment to another team flow. Default-off while we monitor multi-table move semantics in prod; flip on for individual teams to grant access."
6559
+ },
6325
6560
  TEAM_ONTOLOGY: {
6326
6561
  key: "team_ontology",
6327
6562
  defaultValue: false,
@@ -6356,6 +6591,11 @@ var FEATURE_FLAG_CATALOGUE = {
6356
6591
  key: "portfolio_intelligence",
6357
6592
  defaultValue: false,
6358
6593
  description: "Enables portfolio intelligence analysis in the Clarity sidebar, providing cross-process insights and recommendations."
6594
+ },
6595
+ SHARED_CONNECTIONS: {
6596
+ key: "shared_connections",
6597
+ defaultValue: false,
6598
+ description: "Grants connection sharing to teams that are NOT part of an organization (org-less teams have no org-level `connections_sharing_enabled` kill-switch). Resolved with team > global precedence; a global override turns it on for every org-less team. Teams inside an organization are governed solely by their org's setting and are unaffected by this flag."
6359
6599
  }
6360
6600
  };
6361
6601
  var FEATURE_FLAGS = Object.fromEntries(
@@ -10028,40 +10268,56 @@ import { readFile as readFile2 } from "node:fs/promises";
10028
10268
  import { confirm as confirm2, isCancel as isCancel2, text } from "@clack/prompts";
10029
10269
 
10030
10270
  // src/api/agent-schemas.ts
10271
+ import { z as z68 } from "zod";
10272
+
10273
+ // src/api/json-value.ts
10031
10274
  import { z as z67 } from "zod";
10032
- var publicAgentSchema = z67.object({
10033
- id: z67.string(),
10034
- name: z67.string(),
10035
- slack_enabled: z67.boolean().nullish(),
10036
- microsoft_teams_enabled: z67.boolean().nullish(),
10037
- agentic_memory_enabled: z67.boolean().nullish(),
10038
- thread_id: z67.string().nullish(),
10039
- created_at: z67.string().nullish(),
10040
- updated_at: z67.string().nullish()
10041
- });
10042
- var publicBuildSchema = z67.object({
10043
- id: z67.string(),
10044
- agent_id: z67.string(),
10045
- name: z67.string(),
10046
- revision_number: z67.number().nullish(),
10047
- created_at: z67.string().nullish(),
10048
- updated_at: z67.string().nullish()
10049
- });
10050
- var listAgentsResponseSchema = z67.object({
10051
- agents: z67.array(publicAgentSchema),
10052
- total: z67.number().nullish(),
10053
- limit: z67.number().nullish(),
10054
- offset: z67.number().nullish()
10055
- });
10056
- var getAgentResponseSchema = z67.object({
10275
+ var jsonValueSchema = z67.lazy(
10276
+ () => z67.union([
10277
+ z67.string(),
10278
+ z67.number(),
10279
+ z67.boolean(),
10280
+ z67.null(),
10281
+ z67.array(jsonValueSchema),
10282
+ z67.record(z67.string(), jsonValueSchema)
10283
+ ])
10284
+ );
10285
+
10286
+ // src/api/agent-schemas.ts
10287
+ var publicAgentSchema = z68.object({
10288
+ id: z68.string(),
10289
+ name: z68.string(),
10290
+ slack_enabled: z68.boolean().nullish(),
10291
+ microsoft_teams_enabled: z68.boolean().nullish(),
10292
+ agentic_memory_enabled: z68.boolean().nullish(),
10293
+ thread_id: z68.string().nullish(),
10294
+ created_at: z68.string().nullish(),
10295
+ updated_at: z68.string().nullish(),
10296
+ latest_build: z68.object({ config: jsonValueSchema.nullish() }).nullish()
10297
+ });
10298
+ var publicBuildSchema = z68.object({
10299
+ id: z68.string(),
10300
+ agent_id: z68.string(),
10301
+ name: z68.string(),
10302
+ revision_number: z68.number().nullish(),
10303
+ created_at: z68.string().nullish(),
10304
+ updated_at: z68.string().nullish()
10305
+ });
10306
+ var listAgentsResponseSchema = z68.object({
10307
+ agents: z68.array(publicAgentSchema),
10308
+ total: z68.number().nullish(),
10309
+ limit: z68.number().nullish(),
10310
+ offset: z68.number().nullish()
10311
+ });
10312
+ var getAgentResponseSchema = z68.object({
10057
10313
  agent: publicAgentSchema
10058
10314
  });
10059
- var createAgentResponseSchema = z67.object({
10315
+ var createAgentResponseSchema = z68.object({
10060
10316
  agent: publicAgentSchema,
10061
10317
  build: publicBuildSchema.optional()
10062
10318
  });
10063
- var deleteAgentResponseSchema = z67.object({
10064
- success: z67.literal(true)
10319
+ var deleteAgentResponseSchema = z68.object({
10320
+ success: z68.literal(true)
10065
10321
  });
10066
10322
  var buildConfigSchema = StoredAgentConfigSchemaV2;
10067
10323
  var DEFAULT_NEW_AGENT_NAME = DEFAULT_AGENT_NAME;
@@ -10071,6 +10327,77 @@ var DEFAULT_BUILD_CONFIG = {
10071
10327
  data: DEFAULT_AGENT_CONFIG
10072
10328
  };
10073
10329
 
10330
+ // src/commands/shared/is-interactive-terminal.ts
10331
+ function isInteractiveTerminal() {
10332
+ return process.stdin.isTTY === true && process.stdout.isTTY === true;
10333
+ }
10334
+ __name(isInteractiveTerminal, "isInteractiveTerminal");
10335
+
10336
+ // src/commands/agents/model-option.ts
10337
+ var MODEL_IDS = CLAUDE_MODEL_IDS;
10338
+ var NO_MODEL_LABEL = "\u2014";
10339
+ function modelFromConfig(config) {
10340
+ if (config === null || config === void 0) {
10341
+ return NO_MODEL_LABEL;
10342
+ }
10343
+ const { config: parsed } = parseAgentConfig(config);
10344
+ return parsed ? parsed.models.agent.model : NO_MODEL_LABEL;
10345
+ }
10346
+ __name(modelFromConfig, "modelFromConfig");
10347
+ function isCoreClaudeModelId(value) {
10348
+ return MODEL_IDS.includes(value);
10349
+ }
10350
+ __name(isCoreClaudeModelId, "isCoreClaudeModelId");
10351
+ function formatModelChoices() {
10352
+ return MODEL_IDS.map(
10353
+ (id) => ` ${id} \u2014 ${AVAILABLE_AGENT_MODELS[id].displayName}`
10354
+ ).join("\n");
10355
+ }
10356
+ __name(formatModelChoices, "formatModelChoices");
10357
+ function resolveModelFlag(flag) {
10358
+ const trimmed = flag.trim();
10359
+ if (trimmed.length === 0) {
10360
+ throw new CliError("--model must not be empty");
10361
+ }
10362
+ if (!isCoreClaudeModelId(trimmed)) {
10363
+ throw new CliError(
10364
+ `Unknown model "${trimmed}". Available models:
10365
+ ${formatModelChoices()}`
10366
+ );
10367
+ }
10368
+ return trimmed;
10369
+ }
10370
+ __name(resolveModelFlag, "resolveModelFlag");
10371
+ function listAgentModels() {
10372
+ return MODEL_IDS.map((id) => ({
10373
+ id,
10374
+ displayName: AVAILABLE_AGENT_MODELS[id].displayName,
10375
+ description: AVAILABLE_AGENT_MODELS[id].description ?? "",
10376
+ isDefault: id === PLATFORM_DEFAULT_MODELS.agent.model
10377
+ }));
10378
+ }
10379
+ __name(listAgentModels, "listAgentModels");
10380
+ function buildModelPickerOptions() {
10381
+ return MODEL_IDS.map((id) => ({
10382
+ value: id,
10383
+ label: `${AVAILABLE_AGENT_MODELS[id].displayName} (${id})`
10384
+ }));
10385
+ }
10386
+ __name(buildModelPickerOptions, "buildModelPickerOptions");
10387
+ function applyModelToConfig(config, model) {
10388
+ return {
10389
+ ...config,
10390
+ data: {
10391
+ ...config.data,
10392
+ models: {
10393
+ ...config.data.models,
10394
+ agent: { ...config.data.models.agent, model }
10395
+ }
10396
+ }
10397
+ };
10398
+ }
10399
+ __name(applyModelToConfig, "applyModelToConfig");
10400
+
10074
10401
  // src/commands/agents/create.ts
10075
10402
  function registerAgentsCreate(agents) {
10076
10403
  agents.command("create").description("Create a new agent").option("--name <name>", "human-readable agent name").option(
@@ -10079,11 +10406,18 @@ function registerAgentsCreate(agents) {
10079
10406
  ).option(
10080
10407
  "--config <path>",
10081
10408
  "path to a JSON file with the full build config (overrides --input)"
10409
+ ).option(
10410
+ "--model <model>",
10411
+ "Claude model the agent should use (overrides the model in --config)"
10082
10412
  ).option("--no-build", "create the agent without an initial build").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function createAction(options) {
10083
10413
  const resolved = await requireAuthenticatedConfig(this);
10084
10414
  const teamId = await resolveRequiredTeamId(resolved, {
10085
10415
  override: getTeamFlag(this)
10086
10416
  });
10417
+ const model = options.model !== void 0 ? resolveModelFlag(options.model) : void 0;
10418
+ if (options.build === false && model !== void 0) {
10419
+ throw new CliError("--model cannot be combined with --no-build.");
10420
+ }
10087
10421
  const name = await resolveName(options.name);
10088
10422
  const body = { name };
10089
10423
  if (options.build !== false) {
@@ -10091,7 +10425,7 @@ function registerAgentsCreate(agents) {
10091
10425
  if (config) {
10092
10426
  body.build = {
10093
10427
  name: DEFAULT_BUILD_NAME,
10094
- config
10428
+ config: model ? applyModelToConfig(config, model) : config
10095
10429
  };
10096
10430
  }
10097
10431
  }
@@ -10120,6 +10454,12 @@ function registerAgentsCreate(agents) {
10120
10454
  ];
10121
10455
  if (build) {
10122
10456
  entries.push({ label: "Build", value: `${build.id} (${build.name})` });
10457
+ if (body.build) {
10458
+ entries.push({
10459
+ label: "Model",
10460
+ value: modelFromConfig(body.build.config)
10461
+ });
10462
+ }
10123
10463
  }
10124
10464
  console.log(green("Agent created!"));
10125
10465
  console.log();
@@ -10127,10 +10467,6 @@ function registerAgentsCreate(agents) {
10127
10467
  }, "createAction"));
10128
10468
  }
10129
10469
  __name(registerAgentsCreate, "registerAgentsCreate");
10130
- function isInteractiveTerminal() {
10131
- return process.stdin.isTTY === true && process.stdout.isTTY === true;
10132
- }
10133
- __name(isInteractiveTerminal, "isInteractiveTerminal");
10134
10470
  async function resolveName(flag) {
10135
10471
  if (flag !== void 0) {
10136
10472
  const trimmed2 = flag.trim();
@@ -10289,7 +10625,56 @@ function registerAgentsDelete(agents) {
10289
10625
  }
10290
10626
  __name(registerAgentsDelete, "registerAgentsDelete");
10291
10627
 
10628
+ // src/api/build-schemas.ts
10629
+ import { z as z69 } from "zod";
10630
+ var publicBuildSchema2 = z69.object({
10631
+ id: z69.string(),
10632
+ agent_id: z69.string(),
10633
+ name: z69.string(),
10634
+ status: z69.string().nullish(),
10635
+ config: jsonValueSchema.nullish(),
10636
+ revision_number: z69.number().nullish(),
10637
+ created_at: z69.string().nullish(),
10638
+ updated_at: z69.string().nullish()
10639
+ });
10640
+ var listBuildsResponseSchema2 = z69.object({
10641
+ builds: z69.array(publicBuildSchema2),
10642
+ total: z69.number().nullish(),
10643
+ limit: z69.number().nullish(),
10644
+ offset: z69.number().nullish()
10645
+ });
10646
+ var getBuildResponseSchema = z69.object({
10647
+ build: publicBuildSchema2
10648
+ });
10649
+ var createBuildResponseSchema = z69.object({
10650
+ build: publicBuildSchema2,
10651
+ agent: z69.object({ id: z69.string() })
10652
+ });
10653
+
10292
10654
  // src/commands/agents/get.ts
10655
+ async function fetchLatestModel(agentId, apiKey, apiBaseUrl) {
10656
+ const searchParams = new URLSearchParams();
10657
+ searchParams.append("limit", "1");
10658
+ searchParams.append("offset", "0");
10659
+ try {
10660
+ const raw = await httpRequest({
10661
+ method: "GET",
10662
+ path: `/v2/agents/${encodeURIComponent(agentId)}/revisions`,
10663
+ apiKey,
10664
+ apiBaseUrl,
10665
+ searchParams
10666
+ });
10667
+ const parsed = listBuildsResponseSchema2.safeParse(raw);
10668
+ if (!parsed.success) {
10669
+ return NO_MODEL_LABEL;
10670
+ }
10671
+ const latest = parsed.data.builds[0];
10672
+ return latest ? modelFromConfig(latest.config) : NO_MODEL_LABEL;
10673
+ } catch {
10674
+ return NO_MODEL_LABEL;
10675
+ }
10676
+ }
10677
+ __name(fetchLatestModel, "fetchLatestModel");
10293
10678
  function registerAgentsGet(agents) {
10294
10679
  agents.command("get <id>").description("Get an agent by ID").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function getAction(id, options) {
10295
10680
  const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
@@ -10310,10 +10695,12 @@ function registerAgentsGet(agents) {
10310
10695
  );
10311
10696
  }
10312
10697
  const { agent } = parsed.data;
10698
+ const model = await fetchLatestModel(agent.id, apiKey, apiBaseUrl);
10313
10699
  console.log(
10314
10700
  renderKeyValue([
10315
10701
  { label: "ID", value: agent.id },
10316
10702
  { label: "Name", value: agent.name },
10703
+ { label: "Model", value: model },
10317
10704
  { label: "Created", value: agent.created_at ?? "" },
10318
10705
  { label: "Updated", value: agent.updated_at ?? "" }
10319
10706
  ])
@@ -10356,6 +10743,10 @@ var MAX_LIMIT = 100;
10356
10743
  var TABLE_COLUMNS4 = [
10357
10744
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
10358
10745
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
10746
+ {
10747
+ header: "MODEL",
10748
+ cell: /* @__PURE__ */ __name((row) => modelFromConfig(row.latest_build?.config), "cell")
10749
+ },
10359
10750
  { header: "CREATED", cell: /* @__PURE__ */ __name((row) => row.created_at ?? "", "cell") }
10360
10751
  ];
10361
10752
  function registerAgentsList(agents) {
@@ -10479,31 +10870,58 @@ function registerAgentsMemory(agents) {
10479
10870
  }
10480
10871
  __name(registerAgentsMemory, "registerAgentsMemory");
10481
10872
 
10873
+ // src/commands/agents/models.ts
10874
+ var DEFAULT_MARKER = "\u2713";
10875
+ var TABLE_COLUMNS6 = [
10876
+ { header: "MODEL", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
10877
+ { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.displayName, "cell") },
10878
+ {
10879
+ header: "DEFAULT",
10880
+ cell: /* @__PURE__ */ __name((row) => row.isDefault ? DEFAULT_MARKER : "", "cell")
10881
+ },
10882
+ { header: "DESCRIPTION", cell: /* @__PURE__ */ __name((row) => row.description, "cell") }
10883
+ ];
10884
+ function registerAgentsModels(agents) {
10885
+ agents.command("models").description("List the LLM models available for agents").option("--json", "output raw JSON").action(/* @__PURE__ */ __name(function modelsAction(options) {
10886
+ const models = listAgentModels();
10887
+ if (options.json) {
10888
+ printJson(models);
10889
+ return;
10890
+ }
10891
+ console.log(renderTable(TABLE_COLUMNS6, models));
10892
+ console.log();
10893
+ console.log(
10894
+ `Use a MODEL value with \`duvo agents create --model <model>\` or \`duvo agents set-model <id> --model <model>\`.`
10895
+ );
10896
+ }, "modelsAction"));
10897
+ }
10898
+ __name(registerAgentsModels, "registerAgentsModels");
10899
+
10482
10900
  // src/api/schedule-schemas.ts
10483
- import { z as z68 } from "zod";
10484
- var publicScheduleSchema = z68.object({
10485
- id: z68.string(),
10486
- build_id: z68.string(),
10487
- agent_id: z68.string(),
10488
- user_id: z68.string(),
10489
- enabled: z68.boolean(),
10490
- frequency: z68.string(),
10491
- time: z68.string().nullish(),
10492
- timezone: z68.string(),
10493
- day: z68.string().nullish(),
10494
- day_of_month: z68.number().nullish(),
10495
- cron: z68.string().nullish(),
10496
- source: z68.string().nullish(),
10497
- task: z68.string().nullish(),
10498
- recurring: z68.boolean().nullish(),
10499
- created_at: z68.string(),
10500
- updated_at: z68.string()
10501
- });
10502
- var listSchedulesResponseSchema = z68.object({
10503
- schedules: z68.array(publicScheduleSchema)
10504
- });
10505
- var deleteScheduleResponseSchema = z68.object({
10506
- success: z68.literal(true)
10901
+ import { z as z70 } from "zod";
10902
+ var publicScheduleSchema = z70.object({
10903
+ id: z70.string(),
10904
+ build_id: z70.string(),
10905
+ agent_id: z70.string(),
10906
+ user_id: z70.string(),
10907
+ enabled: z70.boolean(),
10908
+ frequency: z70.string(),
10909
+ time: z70.string().nullish(),
10910
+ timezone: z70.string(),
10911
+ day: z70.string().nullish(),
10912
+ day_of_month: z70.number().nullish(),
10913
+ cron: z70.string().nullish(),
10914
+ source: z70.string().nullish(),
10915
+ task: z70.string().nullish(),
10916
+ recurring: z70.boolean().nullish(),
10917
+ created_at: z70.string(),
10918
+ updated_at: z70.string()
10919
+ });
10920
+ var listSchedulesResponseSchema = z70.object({
10921
+ schedules: z70.array(publicScheduleSchema)
10922
+ });
10923
+ var deleteScheduleResponseSchema = z70.object({
10924
+ success: z70.literal(true)
10507
10925
  });
10508
10926
 
10509
10927
  // src/commands/agents/schedules/render-schedule.ts
@@ -10682,7 +11100,7 @@ __name(registerAgentsSchedulesDelete, "registerAgentsSchedulesDelete");
10682
11100
 
10683
11101
  // src/commands/agents/schedules/list.ts
10684
11102
  var TASK_PREVIEW_WIDTH = 40;
10685
- var TABLE_COLUMNS6 = [
11103
+ var TABLE_COLUMNS7 = [
10686
11104
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
10687
11105
  {
10688
11106
  header: "ENABLED",
@@ -10741,7 +11159,7 @@ function registerAgentsSchedulesList(schedules) {
10741
11159
  console.log("No schedules found.");
10742
11160
  return;
10743
11161
  }
10744
- console.log(renderTable(TABLE_COLUMNS6, rows));
11162
+ console.log(renderTable(TABLE_COLUMNS7, rows));
10745
11163
  console.log(`Showing ${rows.length}`);
10746
11164
  }, "listAction"));
10747
11165
  }
@@ -10860,39 +11278,129 @@ function registerAgentsSchedules(agents) {
10860
11278
  }
10861
11279
  __name(registerAgentsSchedules, "registerAgentsSchedules");
10862
11280
 
11281
+ // src/commands/agents/set-model.ts
11282
+ import { isCancel as isCancel3, select } from "@clack/prompts";
11283
+ async function resolveModel(flag) {
11284
+ if (flag !== void 0) {
11285
+ return resolveModelFlag(flag);
11286
+ }
11287
+ if (!isInteractiveTerminal()) {
11288
+ throw new CliError(
11289
+ "--model is required in non-interactive shells (e.g. --model claude-opus-4-7)."
11290
+ );
11291
+ }
11292
+ const answer = await select({
11293
+ message: "Select a model for this agent",
11294
+ options: buildModelPickerOptions()
11295
+ });
11296
+ if (isCancel3(answer)) {
11297
+ throw new CancelCliError("Model switch cancelled.");
11298
+ }
11299
+ return answer;
11300
+ }
11301
+ __name(resolveModel, "resolveModel");
11302
+ function buildConfigWithModel(rawConfig, model) {
11303
+ const { config } = parseAgentConfig(rawConfig);
11304
+ const data = config ?? DEFAULT_AGENT_CONFIG;
11305
+ return {
11306
+ version: AGENT_CONFIG_VERSION,
11307
+ data: {
11308
+ ...data,
11309
+ models: {
11310
+ ...data.models,
11311
+ agent: { ...data.models.agent, model }
11312
+ }
11313
+ }
11314
+ };
11315
+ }
11316
+ __name(buildConfigWithModel, "buildConfigWithModel");
11317
+ function registerAgentsSetModel(agents) {
11318
+ agents.command("set-model <id>").description("Switch the LLM model used by an agent's latest revision").option(
11319
+ "--model <model>",
11320
+ "Claude model to switch to (interactive picker when omitted)"
11321
+ ).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function setModelAction(id, options) {
11322
+ const agentId = trimRequired(id, "<id>");
11323
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
11324
+ const model = await resolveModel(options.model);
11325
+ const searchParams = new URLSearchParams();
11326
+ searchParams.append("limit", "1");
11327
+ searchParams.append("offset", "0");
11328
+ const listRaw = await httpRequest({
11329
+ method: "GET",
11330
+ path: `/v2/agents/${encodeURIComponent(agentId)}/revisions`,
11331
+ apiKey,
11332
+ apiBaseUrl,
11333
+ searchParams
11334
+ });
11335
+ const listParsed = listBuildsResponseSchema2.safeParse(listRaw);
11336
+ if (!listParsed.success) {
11337
+ throw new CliError(
11338
+ `Unexpected response from the API: ${listParsed.error.message}`
11339
+ );
11340
+ }
11341
+ const latest = listParsed.data.builds[0];
11342
+ if (!latest) {
11343
+ throw new CliError(
11344
+ "This agent has no revisions yet. Create one with `duvo builds create` first."
11345
+ );
11346
+ }
11347
+ const config = buildConfigWithModel(latest.config, model);
11348
+ const raw = await httpRequest({
11349
+ method: "PATCH",
11350
+ path: `/v2/revisions/${encodeURIComponent(latest.id)}`,
11351
+ apiKey,
11352
+ apiBaseUrl,
11353
+ body: { config }
11354
+ });
11355
+ if (options.json) {
11356
+ printJson(raw);
11357
+ return;
11358
+ }
11359
+ console.log(green("Model updated!"));
11360
+ console.log(
11361
+ renderKeyValue([
11362
+ { label: "Agent", value: agentId },
11363
+ { label: "Revision", value: latest.id },
11364
+ { label: "Model", value: model }
11365
+ ])
11366
+ );
11367
+ }, "setModelAction"));
11368
+ }
11369
+ __name(registerAgentsSetModel, "registerAgentsSetModel");
11370
+
10863
11371
  // src/api/trigger-schemas.ts
10864
- import { z as z69 } from "zod";
10865
- var triggerSchema = z69.object({
10866
- id: z69.string(),
10867
- agent_id: z69.string(),
10868
- user_id: z69.string(),
10869
- integration_slug: z69.string(),
10870
- trigger_type: z69.string(),
10871
- filter_config: z69.record(z69.string(), z69.unknown()),
10872
- integration_instance_id: z69.string(),
10873
- enabled: z69.boolean(),
10874
- created_at: z69.string(),
10875
- updated_at: z69.string()
10876
- });
10877
- var listTriggersResponseSchema = z69.object({
10878
- triggers: z69.array(triggerSchema)
10879
- });
10880
- var triggerTypeSchema = z69.object({
10881
- integration_slug: z69.string(),
10882
- integration_name: z69.string(),
10883
- icon_url: z69.string(),
10884
- trigger_type: z69.string(),
10885
- label: z69.string(),
10886
- description: z69.string(),
10887
- filter_schema: z69.record(z69.string(), z69.unknown())
10888
- });
10889
- var listTriggerTypesResponseSchema = z69.object({
10890
- trigger_types: z69.array(triggerTypeSchema)
11372
+ import { z as z71 } from "zod";
11373
+ var triggerSchema = z71.object({
11374
+ id: z71.string(),
11375
+ agent_id: z71.string(),
11376
+ user_id: z71.string(),
11377
+ integration_slug: z71.string(),
11378
+ trigger_type: z71.string(),
11379
+ filter_config: z71.record(z71.string(), z71.unknown()),
11380
+ integration_instance_id: z71.string(),
11381
+ enabled: z71.boolean(),
11382
+ created_at: z71.string(),
11383
+ updated_at: z71.string()
11384
+ });
11385
+ var listTriggersResponseSchema = z71.object({
11386
+ triggers: z71.array(triggerSchema)
11387
+ });
11388
+ var triggerTypeSchema = z71.object({
11389
+ integration_slug: z71.string(),
11390
+ integration_name: z71.string(),
11391
+ icon_url: z71.string(),
11392
+ trigger_type: z71.string(),
11393
+ label: z71.string(),
11394
+ description: z71.string(),
11395
+ filter_schema: z71.record(z71.string(), z71.unknown())
11396
+ });
11397
+ var listTriggerTypesResponseSchema = z71.object({
11398
+ trigger_types: z71.array(triggerTypeSchema)
10891
11399
  });
10892
11400
 
10893
11401
  // src/commands/agents/triggers/list.ts
10894
11402
  var FILTER_PREVIEW_WIDTH = 40;
10895
- var TABLE_COLUMNS7 = [
11403
+ var TABLE_COLUMNS8 = [
10896
11404
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
10897
11405
  { header: "INTEGRATION", cell: /* @__PURE__ */ __name((row) => row.integration_slug, "cell") },
10898
11406
  { header: "TRIGGER TYPE", cell: /* @__PURE__ */ __name((row) => row.trigger_type, "cell") },
@@ -10936,7 +11444,7 @@ function registerAgentsTriggersList(triggers) {
10936
11444
  console.log("No triggers found.");
10937
11445
  return;
10938
11446
  }
10939
- console.log(renderTable(TABLE_COLUMNS7, rows));
11447
+ console.log(renderTable(TABLE_COLUMNS8, rows));
10940
11448
  console.log(`Showing ${rows.length}`);
10941
11449
  }, "listAction"));
10942
11450
  }
@@ -11018,7 +11526,7 @@ __name(registerAgentsTriggersSet, "registerAgentsTriggersSet");
11018
11526
 
11019
11527
  // src/commands/agents/triggers/types.ts
11020
11528
  var DESCRIPTION_PREVIEW_WIDTH = 50;
11021
- var TABLE_COLUMNS8 = [
11529
+ var TABLE_COLUMNS9 = [
11022
11530
  { header: "INTEGRATION", cell: /* @__PURE__ */ __name((row) => row.integration_slug, "cell") },
11023
11531
  { header: "TRIGGER TYPE", cell: /* @__PURE__ */ __name((row) => row.trigger_type, "cell") },
11024
11532
  { header: "LABEL", cell: /* @__PURE__ */ __name((row) => row.label, "cell") },
@@ -11055,7 +11563,7 @@ function registerAgentsTriggersTypes(triggers) {
11055
11563
  console.log("No trigger types available.");
11056
11564
  return;
11057
11565
  }
11058
- console.log(renderTable(TABLE_COLUMNS8, rows));
11566
+ console.log(renderTable(TABLE_COLUMNS9, rows));
11059
11567
  console.log(`Showing ${rows.length}`);
11060
11568
  }, "typesAction"));
11061
11569
  }
@@ -11201,6 +11709,8 @@ function registerAgents(program) {
11201
11709
  registerAgentsGet(agents);
11202
11710
  registerAgentsCreate(agents);
11203
11711
  registerAgentsUpdate(agents);
11712
+ registerAgentsModels(agents);
11713
+ registerAgentsSetModel(agents);
11204
11714
  registerAgentsDelete(agents);
11205
11715
  registerAgentsSchedules(agents);
11206
11716
  registerAgentsCaseTriggers(agents);
@@ -11507,55 +12017,55 @@ function fieldsToSearchParams(fields) {
11507
12017
  __name(fieldsToSearchParams, "fieldsToSearchParams");
11508
12018
 
11509
12019
  // src/api/integration-schemas.ts
11510
- import { z as z70 } from "zod";
11511
- var integrationSchema = z70.object({
11512
- id: z70.string(),
11513
- name: z70.string(),
11514
- type: z70.string(),
11515
- provider: z70.string(),
11516
- user_id: z70.string().nullable(),
11517
- team_id: z70.string(),
11518
- server_url: z70.string().optional(),
11519
- transport_type: z70.string().optional(),
11520
- auth_method: z70.string().nullish(),
11521
- composio_mcp_id: z70.string().nullish(),
11522
- custom_integration_id: z70.string().nullish(),
11523
- icon_url: z70.string().nullish(),
11524
- oauth_provider: z70.string().nullish(),
11525
- oauth_provider_key: z70.string().nullish(),
11526
- oauth_scopes: z70.array(z70.string()).nullish(),
11527
- integration_id: z70.string().nullish(),
11528
- created_at: z70.string(),
11529
- updated_at: z70.string()
11530
- });
11531
- var integrationsListResponseSchema2 = z70.object({
11532
- integrations: z70.array(integrationSchema)
12020
+ import { z as z72 } from "zod";
12021
+ var integrationSchema = z72.object({
12022
+ id: z72.string(),
12023
+ name: z72.string(),
12024
+ type: z72.string(),
12025
+ provider: z72.string(),
12026
+ user_id: z72.string().nullable(),
12027
+ team_id: z72.string(),
12028
+ server_url: z72.string().optional(),
12029
+ transport_type: z72.string().optional(),
12030
+ auth_method: z72.string().nullish(),
12031
+ composio_mcp_id: z72.string().nullish(),
12032
+ custom_integration_id: z72.string().nullish(),
12033
+ icon_url: z72.string().nullish(),
12034
+ oauth_provider: z72.string().nullish(),
12035
+ oauth_provider_key: z72.string().nullish(),
12036
+ oauth_scopes: z72.array(z72.string()).nullish(),
12037
+ integration_id: z72.string().nullish(),
12038
+ created_at: z72.string(),
12039
+ updated_at: z72.string()
12040
+ });
12041
+ var integrationsListResponseSchema2 = z72.object({
12042
+ integrations: z72.array(integrationSchema)
11533
12043
  });
11534
12044
  var connectionResponseSchema = integrationSchema;
11535
- var buildIntegrationConfigSchema2 = z70.object({
11536
- id: z70.string(),
11537
- integration_id: z70.string().nullable(),
11538
- custom_integration_id: z70.string().nullable(),
11539
- integration_type: z70.string(),
11540
- integration_name: z70.string(),
11541
- created_at: z70.string()
12045
+ var buildIntegrationConfigSchema2 = z72.object({
12046
+ id: z72.string(),
12047
+ integration_id: z72.string().nullable(),
12048
+ custom_integration_id: z72.string().nullable(),
12049
+ integration_type: z72.string(),
12050
+ integration_name: z72.string(),
12051
+ created_at: z72.string()
11542
12052
  });
11543
- var listBuildIntegrationsResponseSchema2 = z70.object({
11544
- integrations: z70.array(buildIntegrationConfigSchema2)
12053
+ var listBuildIntegrationsResponseSchema2 = z72.object({
12054
+ integrations: z72.array(buildIntegrationConfigSchema2)
11545
12055
  });
11546
- var attachBuildIntegrationsResponseSchema = z70.object({
11547
- success: z70.boolean(),
11548
- count: z70.number()
12056
+ var attachBuildIntegrationsResponseSchema = z72.object({
12057
+ success: z72.boolean(),
12058
+ count: z72.number()
11549
12059
  });
11550
- var buildIntegrationConnectionSchema = z70.object({
11551
- connection_id: z70.string(),
11552
- created_at: z70.string()
12060
+ var buildIntegrationConnectionSchema = z72.object({
12061
+ connection_id: z72.string(),
12062
+ created_at: z72.string()
11553
12063
  });
11554
- var listBuildIntegrationConnectionsResponseSchema = z70.object({
11555
- connections: z70.array(buildIntegrationConnectionSchema)
12064
+ var listBuildIntegrationConnectionsResponseSchema = z72.object({
12065
+ connections: z72.array(buildIntegrationConnectionSchema)
11556
12066
  });
11557
- var successResponseSchema = z70.object({
11558
- success: z70.boolean()
12067
+ var successResponseSchema = z72.object({
12068
+ success: z72.boolean()
11559
12069
  });
11560
12070
 
11561
12071
  // src/commands/build-integrations/attach.ts
@@ -11598,17 +12108,17 @@ function registerBuildIntegrationsAttach(buildIntegrations) {
11598
12108
  __name(registerBuildIntegrationsAttach, "registerBuildIntegrationsAttach");
11599
12109
 
11600
12110
  // src/commands/build-integrations/case-queue-setup.ts
11601
- import { z as z71 } from "zod";
11602
- var slotSchema = z71.object({
11603
- config_id: z71.string(),
11604
- integration_type: z71.string(),
11605
- linked_queue_count: z71.number()
12111
+ import { z as z73 } from "zod";
12112
+ var slotSchema = z73.object({
12113
+ config_id: z73.string(),
12114
+ integration_type: z73.string(),
12115
+ linked_queue_count: z73.number()
11606
12116
  });
11607
- var responseSchema2 = z71.object({
11608
- configs: z71.array(slotSchema),
11609
- has_available_queues: z71.boolean()
12117
+ var responseSchema2 = z73.object({
12118
+ configs: z73.array(slotSchema),
12119
+ has_available_queues: z73.boolean()
11610
12120
  });
11611
- var TABLE_COLUMNS9 = [
12121
+ var TABLE_COLUMNS10 = [
11612
12122
  { header: "SLOT ID", cell: /* @__PURE__ */ __name((row) => row.config_id, "cell") },
11613
12123
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.integration_type, "cell") },
11614
12124
  { header: "QUEUES", cell: /* @__PURE__ */ __name((row) => String(row.linked_queue_count), "cell") },
@@ -11643,7 +12153,7 @@ function registerBuildIntegrationsCaseQueueSetup(buildIntegrations) {
11643
12153
  console.log("No case-queue integration slots on this revision.");
11644
12154
  return;
11645
12155
  }
11646
- console.log(renderTable(TABLE_COLUMNS9, configs));
12156
+ console.log(renderTable(TABLE_COLUMNS10, configs));
11647
12157
  const unmapped = configs.filter((slot) => slot.linked_queue_count === 0);
11648
12158
  if (unmapped.length > 0) {
11649
12159
  console.log(
@@ -11662,7 +12172,7 @@ function registerBuildIntegrationsCaseQueueSetup(buildIntegrations) {
11662
12172
  __name(registerBuildIntegrationsCaseQueueSetup, "registerBuildIntegrationsCaseQueueSetup");
11663
12173
 
11664
12174
  // src/commands/build-integrations/connections-list.ts
11665
- var TABLE_COLUMNS10 = [
12175
+ var TABLE_COLUMNS11 = [
11666
12176
  {
11667
12177
  header: "CONNECTION ID",
11668
12178
  cell: /* @__PURE__ */ __name((row) => row.connection_id, "cell")
@@ -11701,7 +12211,7 @@ function registerBuildIntegrationsConnectionsList(connections) {
11701
12211
  console.log("No connections pinned to this slot.");
11702
12212
  return;
11703
12213
  }
11704
- console.log(renderTable(TABLE_COLUMNS10, rows));
12214
+ console.log(renderTable(TABLE_COLUMNS11, rows));
11705
12215
  console.log(`Showing ${rows.length}`);
11706
12216
  }, "listAction"));
11707
12217
  }
@@ -11771,7 +12281,7 @@ function registerBuildIntegrationsConnectionsUnpin(connections) {
11771
12281
  __name(registerBuildIntegrationsConnectionsUnpin, "registerBuildIntegrationsConnectionsUnpin");
11772
12282
 
11773
12283
  // src/commands/build-integrations/list.ts
11774
- var TABLE_COLUMNS11 = [
12284
+ var TABLE_COLUMNS12 = [
11775
12285
  {
11776
12286
  header: "INTEGRATION ID",
11777
12287
  cell: /* @__PURE__ */ __name((row) => row.integration_id ?? row.custom_integration_id ?? "", "cell")
@@ -11811,14 +12321,14 @@ function registerBuildIntegrationsList(buildIntegrations) {
11811
12321
  console.log("No integrations attached to this revision.");
11812
12322
  return;
11813
12323
  }
11814
- console.log(renderTable(TABLE_COLUMNS11, integrations));
12324
+ console.log(renderTable(TABLE_COLUMNS12, integrations));
11815
12325
  console.log(`Showing ${integrations.length}`);
11816
12326
  }, "listAction"));
11817
12327
  }
11818
12328
  __name(registerBuildIntegrationsList, "registerBuildIntegrationsList");
11819
12329
 
11820
12330
  // src/commands/build-integrations/queues-list.ts
11821
- var TABLE_COLUMNS12 = [
12331
+ var TABLE_COLUMNS13 = [
11822
12332
  { header: "QUEUE ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
11823
12333
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") }
11824
12334
  ];
@@ -11850,14 +12360,14 @@ function registerBuildIntegrationsQueuesList(queues) {
11850
12360
  console.log("No case queues linked to this integration slot.");
11851
12361
  return;
11852
12362
  }
11853
- console.log(renderTable(TABLE_COLUMNS12, parsed.data.queues));
12363
+ console.log(renderTable(TABLE_COLUMNS13, parsed.data.queues));
11854
12364
  console.log(`Showing ${parsed.data.queues.length}`);
11855
12365
  }, "listAction"));
11856
12366
  }
11857
12367
  __name(registerBuildIntegrationsQueuesList, "registerBuildIntegrationsQueuesList");
11858
12368
 
11859
12369
  // src/commands/build-integrations/queues-set.ts
11860
- var TABLE_COLUMNS13 = [
12370
+ var TABLE_COLUMNS14 = [
11861
12371
  { header: "QUEUE ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
11862
12372
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") }
11863
12373
  ];
@@ -11899,7 +12409,7 @@ function registerBuildIntegrationsQueuesSet(queues) {
11899
12409
  green(`Linked ${parsed.data.queues.length} case queue(s) to the slot.`)
11900
12410
  );
11901
12411
  if (parsed.data.queues.length > 0) {
11902
- console.log(renderTable(TABLE_COLUMNS13, parsed.data.queues));
12412
+ console.log(renderTable(TABLE_COLUMNS14, parsed.data.queues));
11903
12413
  }
11904
12414
  }, "setAction"));
11905
12415
  }
@@ -11957,47 +12467,6 @@ function registerBuildIntegrations(program) {
11957
12467
  }
11958
12468
  __name(registerBuildIntegrations, "registerBuildIntegrations");
11959
12469
 
11960
- // src/api/build-schemas.ts
11961
- import { z as z73 } from "zod";
11962
-
11963
- // src/api/json-value.ts
11964
- import { z as z72 } from "zod";
11965
- var jsonValueSchema = z72.lazy(
11966
- () => z72.union([
11967
- z72.string(),
11968
- z72.number(),
11969
- z72.boolean(),
11970
- z72.null(),
11971
- z72.array(jsonValueSchema),
11972
- z72.record(z72.string(), jsonValueSchema)
11973
- ])
11974
- );
11975
-
11976
- // src/api/build-schemas.ts
11977
- var publicBuildSchema2 = z73.object({
11978
- id: z73.string(),
11979
- agent_id: z73.string(),
11980
- name: z73.string(),
11981
- status: z73.string().nullish(),
11982
- config: jsonValueSchema.nullish(),
11983
- revision_number: z73.number().nullish(),
11984
- created_at: z73.string().nullish(),
11985
- updated_at: z73.string().nullish()
11986
- });
11987
- var listBuildsResponseSchema2 = z73.object({
11988
- builds: z73.array(publicBuildSchema2),
11989
- total: z73.number().nullish(),
11990
- limit: z73.number().nullish(),
11991
- offset: z73.number().nullish()
11992
- });
11993
- var getBuildResponseSchema = z73.object({
11994
- build: publicBuildSchema2
11995
- });
11996
- var createBuildResponseSchema = z73.object({
11997
- build: publicBuildSchema2,
11998
- agent: z73.object({ id: z73.string() })
11999
- });
12000
-
12001
12470
  // src/commands/builds/create.ts
12002
12471
  function registerBuildsCreate(builds) {
12003
12472
  builds.command("create").description("Create a new revision for an existing agent").requiredOption("--agent <id>", "ID of the agent this revision belongs to").requiredOption("--name <text>", "revision name").requiredOption(
@@ -12089,7 +12558,7 @@ __name(registerBuildsGet, "registerBuildsGet");
12089
12558
  var DEFAULT_LIMIT2 = 20;
12090
12559
  var MIN_LIMIT2 = 1;
12091
12560
  var MAX_LIMIT2 = 100;
12092
- var TABLE_COLUMNS14 = [
12561
+ var TABLE_COLUMNS15 = [
12093
12562
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
12094
12563
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
12095
12564
  {
@@ -12132,7 +12601,7 @@ function registerBuildsList(builds) {
12132
12601
  console.log("No revisions found.");
12133
12602
  return;
12134
12603
  }
12135
- console.log(renderTable(TABLE_COLUMNS14, response.builds));
12604
+ console.log(renderTable(TABLE_COLUMNS15, response.builds));
12136
12605
  const resolvedOffset = response.offset ?? offset;
12137
12606
  const total = response.total ?? null;
12138
12607
  const summary = total === null ? `Showing ${response.builds.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.builds.length} of ${total} \xB7 offset ${resolvedOffset}`;
@@ -12603,7 +13072,7 @@ __name(fetchQueueCaseCount, "fetchQueueCaseCount");
12603
13072
 
12604
13073
  // src/commands/cases/create.ts
12605
13074
  import { readFile as readFile4 } from "node:fs/promises";
12606
- var TABLE_COLUMNS15 = [
13075
+ var TABLE_COLUMNS16 = [
12607
13076
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
12608
13077
  { header: "TITLE", cell: /* @__PURE__ */ __name((row) => row.title, "cell"), maxWidth: 50 },
12609
13078
  { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") }
@@ -12646,7 +13115,7 @@ function registerCasesCreate(cases) {
12646
13115
  )
12647
13116
  );
12648
13117
  console.log();
12649
- console.log(renderTable(TABLE_COLUMNS15, addedCases));
13118
+ console.log(renderTable(TABLE_COLUMNS16, addedCases));
12650
13119
  }, "createAction"));
12651
13120
  }
12652
13121
  __name(registerCasesCreate, "registerCasesCreate");
@@ -12881,7 +13350,7 @@ __name(registerCasesGet, "registerCasesGet");
12881
13350
 
12882
13351
  // src/commands/cases/labels.ts
12883
13352
  var MAX_LABELS_PER_REQUEST = 50;
12884
- var TABLE_COLUMNS16 = [
13353
+ var TABLE_COLUMNS17 = [
12885
13354
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
12886
13355
  { header: "KEY", cell: /* @__PURE__ */ __name((row) => row.key, "cell") },
12887
13356
  { header: "VALUE", cell: /* @__PURE__ */ __name((row) => row.value, "cell") },
@@ -12911,7 +13380,7 @@ function registerCasesLabels(cases) {
12911
13380
  console.log("No labels assigned.");
12912
13381
  return;
12913
13382
  }
12914
- console.log(renderTable(TABLE_COLUMNS16, parsed.data.labels));
13383
+ console.log(renderTable(TABLE_COLUMNS17, parsed.data.labels));
12915
13384
  console.log(`Showing ${parsed.data.labels.length}`);
12916
13385
  }, "listAction"));
12917
13386
  labels.command("assign <case-id>").description(
@@ -12951,7 +13420,7 @@ function registerCasesLabels(cases) {
12951
13420
  );
12952
13421
  }
12953
13422
  console.log(green("Labels assigned!"));
12954
- console.log(renderTable(TABLE_COLUMNS16, parsed.data.labels));
13423
+ console.log(renderTable(TABLE_COLUMNS17, parsed.data.labels));
12955
13424
  }, "assignAction"));
12956
13425
  labels.command("unlink <case-id>").description(
12957
13426
  "Remove one or more labels from a case (by --label-id or --label key=value, for symmetry with assign)"
@@ -13069,7 +13538,7 @@ var MIN_LIMIT3 = 1;
13069
13538
  var MAX_LIMIT3 = 100;
13070
13539
  var SORT_FIELDS = ["created_at", "updated_at", "postponed_to"];
13071
13540
  var SORT_ORDERS = ["asc", "desc"];
13072
- var TABLE_COLUMNS17 = [
13541
+ var TABLE_COLUMNS18 = [
13073
13542
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
13074
13543
  { header: "TITLE", cell: /* @__PURE__ */ __name((row) => row.title, "cell"), maxWidth: 50 },
13075
13544
  { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
@@ -13142,7 +13611,7 @@ function registerCasesList(cases) {
13142
13611
  console.log("No cases found.");
13143
13612
  return;
13144
13613
  }
13145
- console.log(renderTable(TABLE_COLUMNS17, response.cases));
13614
+ console.log(renderTable(TABLE_COLUMNS18, response.cases));
13146
13615
  const resolvedOffset = response.offset ?? offset;
13147
13616
  const total = response.total ?? null;
13148
13617
  const summary = total === null ? `Showing ${response.cases.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.cases.length} of ${total} \xB7 offset ${resolvedOffset}`;
@@ -14510,7 +14979,7 @@ __name(registerClarityGet, "registerClarityGet");
14510
14979
  var DEFAULT_LIMIT5 = 20;
14511
14980
  var MIN_LIMIT5 = 1;
14512
14981
  var MAX_LIMIT5 = 100;
14513
- var TABLE_COLUMNS18 = [
14982
+ var TABLE_COLUMNS19 = [
14514
14983
  {
14515
14984
  header: "ID",
14516
14985
  cell: /* @__PURE__ */ __name((row) => row.id, "cell")
@@ -14571,7 +15040,7 @@ function registerClarityListExtraCaptureRequests(clarity) {
14571
15040
  console.log("No extra-capture requests found.");
14572
15041
  return;
14573
15042
  }
14574
- console.log(renderTable(TABLE_COLUMNS18, response.requests));
15043
+ console.log(renderTable(TABLE_COLUMNS19, response.requests));
14575
15044
  console.log(
14576
15045
  `Showing ${response.requests.length} of ${response.total} \xB7 offset ${response.offset}`
14577
15046
  );
@@ -16319,7 +16788,7 @@ function registerConnectionsGet(connections) {
16319
16788
  __name(registerConnectionsGet, "registerConnectionsGet");
16320
16789
 
16321
16790
  // src/commands/connections/list.ts
16322
- var TABLE_COLUMNS19 = [
16791
+ var TABLE_COLUMNS20 = [
16323
16792
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
16324
16793
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
16325
16794
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
@@ -16359,7 +16828,7 @@ function registerConnectionsList(connections) {
16359
16828
  console.log("No connections found.");
16360
16829
  return;
16361
16830
  }
16362
- console.log(renderTable(TABLE_COLUMNS19, rows));
16831
+ console.log(renderTable(TABLE_COLUMNS20, rows));
16363
16832
  console.log(`Showing ${rows.length}`);
16364
16833
  }, "listAction"));
16365
16834
  }
@@ -16378,7 +16847,7 @@ var probeResponseSchema = z80.object({
16378
16847
  error: z80.string().optional()
16379
16848
  });
16380
16849
  var DESCRIPTION_MAX_WIDTH = 80;
16381
- var TABLE_COLUMNS20 = [
16850
+ var TABLE_COLUMNS21 = [
16382
16851
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
16383
16852
  {
16384
16853
  header: "DESCRIPTION",
@@ -16438,7 +16907,7 @@ function registerConnectionsProbe(connections) {
16438
16907
  console.log("No tools found.");
16439
16908
  return;
16440
16909
  }
16441
- console.log(renderTable(TABLE_COLUMNS20, tools));
16910
+ console.log(renderTable(TABLE_COLUMNS21, tools));
16442
16911
  console.log(
16443
16912
  `Showing ${tools.length} tool${tools.length === 1 ? "" : "s"}`
16444
16913
  );
@@ -16829,7 +17298,7 @@ function registerCredentialsGet(credentials) {
16829
17298
  __name(registerCredentialsGet, "registerCredentialsGet");
16830
17299
 
16831
17300
  // src/commands/credentials/list.ts
16832
- var TABLE_COLUMNS21 = [
17301
+ var TABLE_COLUMNS22 = [
16833
17302
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
16834
17303
  { header: "DOMAIN", cell: /* @__PURE__ */ __name((row) => row.domain, "cell") },
16835
17304
  {
@@ -16888,7 +17357,7 @@ function registerCredentialsList(credentials) {
16888
17357
  console.log("No credentials found.");
16889
17358
  return;
16890
17359
  }
16891
- console.log(renderTable(TABLE_COLUMNS21, rows));
17360
+ console.log(renderTable(TABLE_COLUMNS22, rows));
16892
17361
  console.log(`Showing ${rows.length}`);
16893
17362
  }, "listAction"));
16894
17363
  }
@@ -17168,7 +17637,7 @@ function registerFilesDownloadUrl(files) {
17168
17637
  __name(registerFilesDownloadUrl, "registerFilesDownloadUrl");
17169
17638
 
17170
17639
  // src/commands/files/list.ts
17171
- var TABLE_COLUMNS22 = [
17640
+ var TABLE_COLUMNS23 = [
17172
17641
  { header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
17173
17642
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
17174
17643
  {
@@ -17211,7 +17680,7 @@ function registerFilesList(files) {
17211
17680
  console.log("No files found.");
17212
17681
  return;
17213
17682
  }
17214
- console.log(renderTable(TABLE_COLUMNS22, parsed.data.files));
17683
+ console.log(renderTable(TABLE_COLUMNS23, parsed.data.files));
17215
17684
  console.log(`Showing ${parsed.data.files.length}`);
17216
17685
  }, "listAction"));
17217
17686
  }
@@ -17473,7 +17942,7 @@ function registerIntegrationsCustom(integrations) {
17473
17942
  __name(registerIntegrationsCustom, "registerIntegrationsCustom");
17474
17943
 
17475
17944
  // src/commands/integrations/list.ts
17476
- var TABLE_COLUMNS23 = [
17945
+ var TABLE_COLUMNS24 = [
17477
17946
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
17478
17947
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
17479
17948
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
@@ -17515,7 +17984,7 @@ function registerIntegrationsList(integrations) {
17515
17984
  console.log("No integrations found.");
17516
17985
  return;
17517
17986
  }
17518
- console.log(renderTable(TABLE_COLUMNS23, rows));
17987
+ console.log(renderTable(TABLE_COLUMNS24, rows));
17519
17988
  console.log(`Showing ${rows.length}`);
17520
17989
  }, "listAction"));
17521
17990
  }
@@ -17532,7 +18001,7 @@ function registerIntegrations(program) {
17532
18001
  __name(registerIntegrations, "registerIntegrations");
17533
18002
 
17534
18003
  // src/commands/login.ts
17535
- import { isCancel as isCancel3, password, spinner, text as text2 } from "@clack/prompts";
18004
+ import { isCancel as isCancel4, password, spinner, text as text2 } from "@clack/prompts";
17536
18005
 
17537
18006
  // src/oauth/auth0-config.ts
17538
18007
  var BAKED_DOMAIN = "login.duvo.ai" ? "login.duvo.ai" : "login.dev.duvo.ai";
@@ -17924,7 +18393,7 @@ async function resolveProfileName(flag, existingCount) {
17924
18393
  return void 0;
17925
18394
  }, "validate")
17926
18395
  });
17927
- if (isCancel3(answer)) {
18396
+ if (isCancel4(answer)) {
17928
18397
  throw new CancelCliError("Login cancelled.");
17929
18398
  }
17930
18399
  return answer;
@@ -17943,7 +18412,7 @@ async function resolveApiKey(flag) {
17943
18412
  return void 0;
17944
18413
  }, "validate")
17945
18414
  });
17946
- if (isCancel3(answer)) {
18415
+ if (isCancel4(answer)) {
17947
18416
  throw new CancelCliError("Login cancelled.");
17948
18417
  }
17949
18418
  return answer;
@@ -18354,7 +18823,7 @@ function parseHeaders(raw) {
18354
18823
  return result;
18355
18824
  }
18356
18825
  __name(parseHeaders, "parseHeaders");
18357
- var TABLE_COLUMNS24 = [
18826
+ var TABLE_COLUMNS25 = [
18358
18827
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
18359
18828
  { header: "DESCRIPTION", cell: /* @__PURE__ */ __name((row) => row.description, "cell") }
18360
18829
  ];
@@ -18412,7 +18881,7 @@ function registerOauthMcpProbe(mcp) {
18412
18881
  console.log("No tools advertised by this MCP server.");
18413
18882
  return;
18414
18883
  }
18415
- console.log(renderTable(TABLE_COLUMNS24, rows));
18884
+ console.log(renderTable(TABLE_COLUMNS25, rows));
18416
18885
  console.log(`Showing ${rows.length}`);
18417
18886
  }, "probeMcpAction"));
18418
18887
  }
@@ -18494,7 +18963,7 @@ function registerOauth(program) {
18494
18963
  __name(registerOauth, "registerOauth");
18495
18964
 
18496
18965
  // src/commands/plugins/list.ts
18497
- var TABLE_COLUMNS25 = [
18966
+ var TABLE_COLUMNS26 = [
18498
18967
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
18499
18968
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
18500
18969
  {
@@ -18528,7 +18997,7 @@ function registerPluginsList(plugins) {
18528
18997
  console.log("No plugins found.");
18529
18998
  return;
18530
18999
  }
18531
- console.log(renderTable(TABLE_COLUMNS25, parsed.data.plugins));
19000
+ console.log(renderTable(TABLE_COLUMNS26, parsed.data.plugins));
18532
19001
  console.log(`Showing ${parsed.data.plugins.length}`);
18533
19002
  }, "listAction"));
18534
19003
  }
@@ -18565,12 +19034,12 @@ function padRight(value, width) {
18565
19034
  __name(padRight, "padRight");
18566
19035
 
18567
19036
  // src/commands/profiles/render-list.ts
18568
- var DEFAULT_MARKER = "\u25B6";
19037
+ var DEFAULT_MARKER2 = "\u25B6";
18569
19038
  var NON_DEFAULT_MARKER = " ";
18570
19039
  var COLUMNS = [
18571
19040
  {
18572
19041
  header: "",
18573
- cell: /* @__PURE__ */ __name((item) => item.isDefault ? DEFAULT_MARKER : NON_DEFAULT_MARKER, "cell")
19042
+ cell: /* @__PURE__ */ __name((item) => item.isDefault ? DEFAULT_MARKER2 : NON_DEFAULT_MARKER, "cell")
18574
19043
  },
18575
19044
  { header: "NAME", cell: /* @__PURE__ */ __name((item) => item.name, "cell") },
18576
19045
  {
@@ -18653,7 +19122,7 @@ function registerRename(profiles) {
18653
19122
  __name(registerRename, "registerRename");
18654
19123
 
18655
19124
  // src/commands/profiles/use.ts
18656
- import { isCancel as isCancel4, select } from "@clack/prompts";
19125
+ import { isCancel as isCancel5, select as select2 } from "@clack/prompts";
18657
19126
  var NAME_HEADER = "NAME";
18658
19127
  function registerUse(profiles) {
18659
19128
  profiles.command("use [name]").description(
@@ -18685,12 +19154,12 @@ async function pickProfileInteractively(config) {
18685
19154
  );
18686
19155
  }
18687
19156
  const options = buildPickerOptions(profiles);
18688
- const answer = await select({
19157
+ const answer = await select2({
18689
19158
  message: "Select default profile",
18690
19159
  initialValue: config.defaultProfile ?? profiles[0].name,
18691
19160
  options
18692
19161
  });
18693
- if (isCancel4(answer)) {
19162
+ if (isCancel5(answer)) {
18694
19163
  throw new CancelCliError("Profile switch cancelled.");
18695
19164
  }
18696
19165
  return answer;
@@ -18705,7 +19174,7 @@ function buildPickerOptions(profiles) {
18705
19174
  ...profiles.map((profile) => profile.name.length)
18706
19175
  );
18707
19176
  return profiles.map((profile, index) => {
18708
- const marker = profile.isDefault ? DEFAULT_MARKER : NON_DEFAULT_MARKER;
19177
+ const marker = profile.isDefault ? DEFAULT_MARKER2 : NON_DEFAULT_MARKER;
18709
19178
  const label = `${marker} ${padRight(profile.name, nameWidth)} ${maskedKeys[index]}`;
18710
19179
  return {
18711
19180
  value: profile.name,
@@ -18726,7 +19195,7 @@ function registerProfiles(program) {
18726
19195
  __name(registerProfiles, "registerProfiles");
18727
19196
 
18728
19197
  // src/commands/queue-labels/index.ts
18729
- var TABLE_COLUMNS26 = [
19198
+ var TABLE_COLUMNS27 = [
18730
19199
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
18731
19200
  { header: "KEY", cell: /* @__PURE__ */ __name((row) => row.key, "cell") },
18732
19201
  { header: "VALUE", cell: /* @__PURE__ */ __name((row) => row.value, "cell") },
@@ -18780,7 +19249,7 @@ function registerList3(labels) {
18780
19249
  console.log("No labels defined on this queue.");
18781
19250
  return;
18782
19251
  }
18783
- console.log(renderTable(TABLE_COLUMNS26, parsed.data.labels));
19252
+ console.log(renderTable(TABLE_COLUMNS27, parsed.data.labels));
18784
19253
  console.log(`Showing ${parsed.data.labels.length}`);
18785
19254
  }, "listAction"));
18786
19255
  }
@@ -19534,7 +20003,7 @@ __name(registerQueuesLinkAgent, "registerQueuesLinkAgent");
19534
20003
  var DEFAULT_LIMIT7 = 20;
19535
20004
  var MIN_LIMIT7 = 1;
19536
20005
  var MAX_LIMIT7 = 100;
19537
- var TABLE_COLUMNS27 = [
20006
+ var TABLE_COLUMNS28 = [
19538
20007
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
19539
20008
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
19540
20009
  {
@@ -19582,7 +20051,7 @@ function registerQueuesList(queues) {
19582
20051
  console.log("No queues found.");
19583
20052
  return;
19584
20053
  }
19585
- console.log(renderTable(TABLE_COLUMNS27, response.queues));
20054
+ console.log(renderTable(TABLE_COLUMNS28, response.queues));
19586
20055
  const resolvedOffset = response.offset ?? offset;
19587
20056
  const total = response.total ?? null;
19588
20057
  const summary = total === null ? `Showing ${response.queues.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.queues.length} of ${total} \xB7 offset ${resolvedOffset}`;
@@ -19840,7 +20309,7 @@ function registerRevisionLoginsDetach(revisionLogins) {
19840
20309
  __name(registerRevisionLoginsDetach, "registerRevisionLoginsDetach");
19841
20310
 
19842
20311
  // src/commands/revision-logins/list.ts
19843
- var TABLE_COLUMNS28 = [
20312
+ var TABLE_COLUMNS29 = [
19844
20313
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
19845
20314
  { header: "DOMAIN", cell: /* @__PURE__ */ __name((row) => row.domain, "cell") },
19846
20315
  {
@@ -19876,7 +20345,7 @@ function registerRevisionLoginsList(revisionLogins) {
19876
20345
  console.log("No browser logins attached to this revision.");
19877
20346
  return;
19878
20347
  }
19879
- console.log(renderTable(TABLE_COLUMNS28, rows));
20348
+ console.log(renderTable(TABLE_COLUMNS29, rows));
19880
20349
  console.log(`Showing ${rows.length}`);
19881
20350
  }, "listAction"));
19882
20351
  }
@@ -19949,7 +20418,7 @@ function registerRevisionSecretsDetach(revisionSecrets) {
19949
20418
  __name(registerRevisionSecretsDetach, "registerRevisionSecretsDetach");
19950
20419
 
19951
20420
  // src/commands/revision-secrets/list.ts
19952
- var TABLE_COLUMNS29 = [
20421
+ var TABLE_COLUMNS30 = [
19953
20422
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
19954
20423
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
19955
20424
  {
@@ -19987,7 +20456,7 @@ function registerRevisionSecretsList(revisionSecrets) {
19987
20456
  console.log("No secrets attached to this revision.");
19988
20457
  return;
19989
20458
  }
19990
- console.log(renderTable(TABLE_COLUMNS29, rows));
20459
+ console.log(renderTable(TABLE_COLUMNS30, rows));
19991
20460
  console.log(`Showing ${rows.length}`);
19992
20461
  }, "listAction"));
19993
20462
  }
@@ -20156,7 +20625,7 @@ var MAX_LIMIT8 = 100;
20156
20625
  var SORT_ORDERS2 = ["asc", "desc"];
20157
20626
  var HAS_ISSUES_VALUES = ["true", "false"];
20158
20627
  var TITLE_PREVIEW_WIDTH = 50;
20159
- var TABLE_COLUMNS30 = [
20628
+ var TABLE_COLUMNS31 = [
20160
20629
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
20161
20630
  { header: "RUN#", cell: /* @__PURE__ */ __name((row) => String(row.run_number), "cell") },
20162
20631
  { header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
@@ -20257,7 +20726,7 @@ function registerRunsList(runs) {
20257
20726
  console.log("No runs found.");
20258
20727
  return;
20259
20728
  }
20260
- console.log(renderTable(TABLE_COLUMNS30, response.data));
20729
+ console.log(renderTable(TABLE_COLUMNS31, response.data));
20261
20730
  console.log(
20262
20731
  `Showing ${response.data.length} of ${response.total} \xB7 offset ${offset}`
20263
20732
  );
@@ -20367,7 +20836,7 @@ var DEFAULT_LIMIT9 = 20;
20367
20836
  var MIN_LIMIT9 = 1;
20368
20837
  var MAX_LIMIT9 = 50;
20369
20838
  var TEXT_PREVIEW_WIDTH2 = 60;
20370
- var TABLE_COLUMNS31 = [
20839
+ var TABLE_COLUMNS32 = [
20371
20840
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
20372
20841
  { header: "ROLE", cell: /* @__PURE__ */ __name((row) => row.role, "cell") },
20373
20842
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
@@ -20432,7 +20901,7 @@ function registerRunsMessages(runs) {
20432
20901
  console.log("No messages found.");
20433
20902
  return;
20434
20903
  }
20435
- console.log(renderTable(TABLE_COLUMNS31, response.messages));
20904
+ console.log(renderTable(TABLE_COLUMNS32, response.messages));
20436
20905
  const resolvedOffset = response.offset ?? offset;
20437
20906
  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}`;
20438
20907
  console.log(summary);
@@ -20757,7 +21226,7 @@ function registerSandboxesCreate(sandboxes) {
20757
21226
  __name(registerSandboxesCreate, "registerSandboxesCreate");
20758
21227
 
20759
21228
  // src/commands/sandboxes/files.ts
20760
- var TABLE_COLUMNS32 = [
21229
+ var TABLE_COLUMNS33 = [
20761
21230
  { header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
20762
21231
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
20763
21232
  { header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
@@ -20795,7 +21264,7 @@ function registerSandboxesFiles(sandboxes) {
20795
21264
  console.log("No files found.");
20796
21265
  return;
20797
21266
  }
20798
- console.log(renderTable(TABLE_COLUMNS32, files));
21267
+ console.log(renderTable(TABLE_COLUMNS33, files));
20799
21268
  console.log(`Showing ${files.length}`);
20800
21269
  }, "filesAction"));
20801
21270
  }
@@ -21140,7 +21609,7 @@ function registerSecretsGet(secrets) {
21140
21609
  __name(registerSecretsGet, "registerSecretsGet");
21141
21610
 
21142
21611
  // src/commands/secrets/list.ts
21143
- var TABLE_COLUMNS33 = [
21612
+ var TABLE_COLUMNS34 = [
21144
21613
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
21145
21614
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
21146
21615
  {
@@ -21184,7 +21653,7 @@ function registerSecretsList(secrets) {
21184
21653
  console.log("No secrets found.");
21185
21654
  return;
21186
21655
  }
21187
- console.log(renderTable(TABLE_COLUMNS33, rows));
21656
+ console.log(renderTable(TABLE_COLUMNS34, rows));
21188
21657
  console.log(`Showing ${rows.length}`);
21189
21658
  }, "listAction"));
21190
21659
  }
@@ -21295,7 +21764,7 @@ function registerSecrets(program) {
21295
21764
  __name(registerSecrets, "registerSecrets");
21296
21765
 
21297
21766
  // src/commands/skills/assignments.ts
21298
- var TABLE_COLUMNS34 = [
21767
+ var TABLE_COLUMNS35 = [
21299
21768
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
21300
21769
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") }
21301
21770
  ];
@@ -21323,7 +21792,7 @@ function registerSkillsAssignments(skills) {
21323
21792
  console.log("No assignments use this skill.");
21324
21793
  return;
21325
21794
  }
21326
- console.log(renderTable(TABLE_COLUMNS34, assignments));
21795
+ console.log(renderTable(TABLE_COLUMNS35, assignments));
21327
21796
  console.log(`Showing ${assignments.length} of ${total}`);
21328
21797
  }, "assignmentsAction"));
21329
21798
  }
@@ -21605,7 +22074,7 @@ function readContent2(options) {
21605
22074
  __name(readContent2, "readContent");
21606
22075
 
21607
22076
  // src/commands/skills/files.ts
21608
- var TABLE_COLUMNS35 = [
22077
+ var TABLE_COLUMNS36 = [
21609
22078
  { header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
21610
22079
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
21611
22080
  {
@@ -21644,7 +22113,7 @@ function registerSkillsFiles(skills) {
21644
22113
  console.log("No files found.");
21645
22114
  return;
21646
22115
  }
21647
- console.log(renderTable(TABLE_COLUMNS35, parsed.data.files));
22116
+ console.log(renderTable(TABLE_COLUMNS36, parsed.data.files));
21648
22117
  console.log(`Showing ${parsed.data.files.length}`);
21649
22118
  }, "filesAction"));
21650
22119
  }
@@ -22058,7 +22527,7 @@ __name(registerTeamGet, "registerTeamGet");
22058
22527
  var DEFAULT_LIMIT10 = 50;
22059
22528
  var MIN_LIMIT10 = 1;
22060
22529
  var MAX_LIMIT10 = 100;
22061
- var TABLE_COLUMNS36 = [
22530
+ var TABLE_COLUMNS37 = [
22062
22531
  { header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
22063
22532
  { header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name ?? "", "cell") },
22064
22533
  { header: "EMAIL", cell: /* @__PURE__ */ __name((row) => row.email, "cell") },
@@ -22109,7 +22578,7 @@ function registerTeamMembers(team) {
22109
22578
  console.log("No members found.");
22110
22579
  return;
22111
22580
  }
22112
- console.log(renderTable(TABLE_COLUMNS36, response.members));
22581
+ console.log(renderTable(TABLE_COLUMNS37, response.members));
22113
22582
  console.log(
22114
22583
  `Showing ${response.members.length} of ${response.total} \xB7 offset ${response.offset}`
22115
22584
  );
@@ -22307,7 +22776,7 @@ __name(resolveActiveTeamId, "resolveActiveTeamId");
22307
22776
  var version = resolveVersion();
22308
22777
  function resolveVersion() {
22309
22778
  if (true) {
22310
- return "1.2.0";
22779
+ return "1.3.0";
22311
22780
  }
22312
22781
  const packageJsonPath = join2(
22313
22782
  dirname2(fileURLToPath(import.meta.url)),
@@ -22376,7 +22845,7 @@ function checkForUpdate() {
22376
22845
  __name(checkForUpdate, "checkForUpdate");
22377
22846
  function loadPackageMeta() {
22378
22847
  if (true) {
22379
- return { name: "@duvoai/cli", version: "1.2.0" };
22848
+ return { name: "@duvoai/cli", version: "1.3.0" };
22380
22849
  }
22381
22850
  const require2 = createRequire(import.meta.url);
22382
22851
  const raw = require2("../package.json");