@duvoai/cli 1.26.0 → 1.27.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
@@ -3381,14 +3381,24 @@ var clarityProcessLandscapeStatsSchema = z15.object({
3381
3381
  unsortedProcesses: z15.number(),
3382
3382
  latestUpdatedAt: z15.string().nullable()
3383
3383
  });
3384
+ var landscapeGenerationResultSummarySchema = z15.object({
3385
+ changed: z15.boolean(),
3386
+ createdNodeCount: z15.number().int().nonnegative(),
3387
+ reparentedNodeCount: z15.number().int().nonnegative(),
3388
+ attachedProcessCount: z15.number().int().nonnegative(),
3389
+ unchangedWriteCount: z15.number().int().nonnegative(),
3390
+ failedWriteCount: z15.number().int().nonnegative()
3391
+ });
3384
3392
  var clarityProcessLandscapeGenerationSchema = z15.object({
3385
- eligibleCaptureCount: z15.number(),
3393
+ eligibleCaptureCount: z15.number().int().nonnegative(),
3394
+ eligibleProcessCount: z15.number().int().nonnegative(),
3386
3395
  status: z15.enum(["idle", "starting", "running", "completed", "failed"])
3387
3396
  });
3388
3397
  var generateClarityProcessLandscapeResponseSchema = z15.object({
3389
3398
  started: z15.literal(true),
3390
3399
  generationId: z15.guid(),
3391
- eligibleCaptureCount: z15.number()
3400
+ eligibleCaptureCount: z15.number().int().nonnegative(),
3401
+ eligibleProcessCount: z15.number().int().nonnegative()
3392
3402
  });
3393
3403
  var clarityProcessLandscapeResponseSchema = z15.object({
3394
3404
  nodes: z15.array(clarityProcessLandscapeNodeSchema),
@@ -5011,7 +5021,8 @@ var clarityProcessLandscapeGenerationStatusChangedEventDataSchema = z21.object({
5011
5021
  status: clarityProcessLandscapeGenerationSchema.shape.status.exclude([
5012
5022
  "idle"
5013
5023
  ]),
5014
- error: z21.string().optional()
5024
+ error: z21.string().optional(),
5025
+ result: landscapeGenerationResultSummarySchema.optional()
5015
5026
  });
5016
5027
  var clarityProcessLandscapeRoomPayloadSchema = z21.object({
5017
5028
  organizationId: z21.guid()
@@ -9880,7 +9891,7 @@ var FEATURE_FLAG_CATALOGUE = {
9880
9891
  CASE_QUEUE_EVALS: {
9881
9892
  key: "case_queue_evals",
9882
9893
  defaultValue: false,
9883
- description: "Surfaces case-level evaluation rubrics in the FE: the queue's 'Evaluation rubrics' panel + 'why changed' transparency feed, and the per-case eval-outcome pill/panel. Backend generation + evaluation run regardless of this flag; it gates display only. DUVO-6203."
9894
+ description: "Enables automatic case-level evaluations and their supporting rubrics, plus the queue's 'Evaluation rubrics' panel, 'why changed' transparency feed, and per-case evaluation outcome. DUVO-6203."
9884
9895
  },
9885
9896
  AGENTIC_MEMORY_TEAM_WIDE: {
9886
9897
  key: "agentic_memory_team_wide",
@@ -21368,7 +21379,8 @@ var deleteNodeResponseSchema = z99.object({
21368
21379
  var generateLandscapeResponseSchema = z99.object({
21369
21380
  started: z99.literal(true),
21370
21381
  generationId: z99.string(),
21371
- eligibleCaptureCount: z99.number()
21382
+ eligibleCaptureCount: z99.number(),
21383
+ eligibleProcessCount: z99.number().int().nonnegative()
21372
21384
  }).passthrough();
21373
21385
  var captureSchema = z99.object({
21374
21386
  id: z99.string(),
@@ -21543,7 +21555,7 @@ function registerClarityLandscape(clarity) {
21543
21555
  return;
21544
21556
  }
21545
21557
  console.log(
21546
- `Started process landscape generation: ${response.generationId} (${response.eligibleCaptureCount} captures)`
21558
+ `Started process landscape generation: ${response.generationId} (${response.eligibleProcessCount} processes, ${response.eligibleCaptureCount} optional captures)`
21547
21559
  );
21548
21560
  }, "generateAction"));
21549
21561
  landscape.command("captures").description("List Clarity captures eligible for the process landscape").option("--org <org-id>", ORG_FLAG_DESCRIPTION).option("--limit <n>", "page size").option("--include-transcripts", "include full transcripts in JSON output").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function capturesAction(options) {
@@ -26757,6 +26769,7 @@ function registerPulseMessages(pulse) {
26757
26769
  __name(registerPulseMessages, "registerPulseMessages");
26758
26770
 
26759
26771
  // src/commands/pulse/move.ts
26772
+ var MOVE_REQUEST_TIMEOUT_MS = 12e4;
26760
26773
  function registerPulseMove(pulse) {
26761
26774
  pulse.command("move <id>").description(
26762
26775
  "Move a Pulse dashboard to another team. Only the latest version moves \u2014 chat, raw events, older versions, and member shares are deleted; you become the owner, visibility resets to private, and the dashboard's API key is rotated. Requires Manager or above on both teams."
@@ -26790,7 +26803,8 @@ function registerPulseMove(pulse) {
26790
26803
  apiKey,
26791
26804
  apiBaseUrl,
26792
26805
  searchParams,
26793
- body: { targetTeamId }
26806
+ body: { targetTeamId },
26807
+ timeoutMs: MOVE_REQUEST_TIMEOUT_MS
26794
26808
  });
26795
26809
  if (options.json) {
26796
26810
  printJson(raw);
@@ -31313,11 +31327,63 @@ function registerTeamsOrg(teams) {
31313
31327
  }
31314
31328
  __name(registerTeamsOrg, "registerTeamsOrg");
31315
31329
 
31330
+ // src/commands/teams/orgs.ts
31331
+ import { z as z118 } from "zod";
31332
+ var orgMembershipSchema = z118.object({
31333
+ organization: z118.object({
31334
+ id: z118.string(),
31335
+ name: z118.string()
31336
+ }),
31337
+ role: z118.string(),
31338
+ memberCount: z118.number()
31339
+ });
31340
+ var listMyOrganizationsResponseSchema = z118.object({
31341
+ memberships: z118.array(orgMembershipSchema)
31342
+ });
31343
+ function registerTeamsOrgs(teams) {
31344
+ teams.command("orgs").description("List the organizations you belong to and your role in each").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function orgsAction(options) {
31345
+ const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
31346
+ const raw = await httpRequest({
31347
+ method: "GET",
31348
+ path: "/v2/organizations/mine",
31349
+ apiKey,
31350
+ apiBaseUrl
31351
+ });
31352
+ if (options.json) {
31353
+ printJson(raw);
31354
+ return;
31355
+ }
31356
+ const parsed = listMyOrganizationsResponseSchema.safeParse(raw);
31357
+ if (!parsed.success) {
31358
+ throw new CliError(
31359
+ `Unexpected response from GET /v2/organizations/mine: ${parsed.error.message}`
31360
+ );
31361
+ }
31362
+ if (parsed.data.memberships.length === 0) {
31363
+ console.log("You are not a member of any organization.");
31364
+ return;
31365
+ }
31366
+ console.log(
31367
+ renderTable(
31368
+ [
31369
+ { header: "ID", cell: /* @__PURE__ */ __name((m) => m.organization.id, "cell") },
31370
+ { header: "NAME", cell: /* @__PURE__ */ __name((m) => m.organization.name, "cell"), maxWidth: 40 },
31371
+ { header: "ROLE", cell: /* @__PURE__ */ __name((m) => m.role, "cell") },
31372
+ { header: "MEMBERS", cell: /* @__PURE__ */ __name((m) => String(m.memberCount), "cell") }
31373
+ ],
31374
+ parsed.data.memberships
31375
+ )
31376
+ );
31377
+ }, "orgsAction"));
31378
+ }
31379
+ __name(registerTeamsOrgs, "registerTeamsOrgs");
31380
+
31316
31381
  // src/commands/teams/index.ts
31317
31382
  function registerTeams(program) {
31318
31383
  const teams = program.command("teams").description("Inspect the teams your credentials can act on");
31319
31384
  registerTeamsList(teams);
31320
31385
  registerTeamsOrg(teams);
31386
+ registerTeamsOrgs(teams);
31321
31387
  registerTeamsOrgInsights(teams);
31322
31388
  registerTeamsOrgMetrics(teams);
31323
31389
  registerTeamsOrgUsage(teams);
@@ -31377,7 +31443,7 @@ __name(resolveActiveTeamId, "resolveActiveTeamId");
31377
31443
  var version = resolveVersion();
31378
31444
  function resolveVersion() {
31379
31445
  if (true) {
31380
- return "1.26.0";
31446
+ return "1.27.0";
31381
31447
  }
31382
31448
  const packageJsonPath = join3(
31383
31449
  dirname3(fileURLToPath2(import.meta.url)),
@@ -31571,7 +31637,7 @@ function isNewerVersion(candidate, current) {
31571
31637
  __name(isNewerVersion, "isNewerVersion");
31572
31638
  function loadPackageMeta() {
31573
31639
  if (true) {
31574
- return { name: "@duvoai/cli", version: "1.26.0" };
31640
+ return { name: "@duvoai/cli", version: "1.27.0" };
31575
31641
  }
31576
31642
  const require2 = createRequire(import.meta.url);
31577
31643
  const raw = require2("../package.json");