@duvoai/cli 1.21.0 → 1.24.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/README.md +162 -161
- package/dist/bin/duvo.js +986 -405
- package/dist/bin/duvo.js.map +4 -4
- package/package.json +1 -3
package/dist/bin/duvo.js
CHANGED
|
@@ -6,7 +6,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
6
6
|
import { readFileSync as readFileSync8 } from "node:fs";
|
|
7
7
|
import { dirname as dirname3, join as join3 } from "node:path";
|
|
8
8
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
9
|
-
import { Command } from "commander";
|
|
9
|
+
import { Command, Option as Option2 } from "commander";
|
|
10
10
|
|
|
11
11
|
// src/api/agent-folder-schemas.ts
|
|
12
12
|
import { z } from "zod";
|
|
@@ -2201,6 +2201,23 @@ var evalCountsSchema = z9.object({
|
|
|
2201
2201
|
var evalCountsByAgentResponseSchema = z9.object({
|
|
2202
2202
|
by_agent: z9.record(z9.string(), evalCountsSchema)
|
|
2203
2203
|
});
|
|
2204
|
+
var agentRunStatsSchema = z9.object({
|
|
2205
|
+
success: z9.int(),
|
|
2206
|
+
critical: z9.int(),
|
|
2207
|
+
medium: z9.int(),
|
|
2208
|
+
failed: z9.int(),
|
|
2209
|
+
need_input: z9.int(),
|
|
2210
|
+
/** Total runs in the current lookback window. */
|
|
2211
|
+
total: z9.int(),
|
|
2212
|
+
/** Week-over-week change in total runs (current window minus previous). */
|
|
2213
|
+
delta: z9.int()
|
|
2214
|
+
});
|
|
2215
|
+
var agentRunStatsByAgentResponseSchema = z9.object({
|
|
2216
|
+
run_stats_by_agent: z9.record(z9.string(), agentRunStatsSchema)
|
|
2217
|
+
});
|
|
2218
|
+
var evalCountsAndRunStatsResponseSchema = evalCountsByAgentResponseSchema.extend(
|
|
2219
|
+
agentRunStatsByAgentResponseSchema.shape
|
|
2220
|
+
);
|
|
2204
2221
|
var summarizeEvalScoresBodySchema = z9.object({
|
|
2205
2222
|
since: z9.iso.datetime(),
|
|
2206
2223
|
/** `"custom"` restricts to the target revision's runs + `custom__*` flags only. */
|
|
@@ -2630,6 +2647,11 @@ var DEFAULT_AGENT_CONFIG = {
|
|
|
2630
2647
|
browserProvider: DEFAULT_BROWSER_PROVIDER
|
|
2631
2648
|
}
|
|
2632
2649
|
};
|
|
2650
|
+
var AUTOMATION_REVISION_STATUS = {
|
|
2651
|
+
DRAFT: "draft",
|
|
2652
|
+
LIVE: "live",
|
|
2653
|
+
HISTORIC: "historic"
|
|
2654
|
+
};
|
|
2633
2655
|
var BUILD_STATUS = {
|
|
2634
2656
|
DRAFT: "draft",
|
|
2635
2657
|
LIVE: "live",
|
|
@@ -5076,7 +5098,8 @@ var listClarityProcessSnapshotsQuerySchema = z222.object({
|
|
|
5076
5098
|
offset: z222.coerce.number().int().min(0).default(0)
|
|
5077
5099
|
});
|
|
5078
5100
|
var listClarityProcessSnapshotsResponseSchema = z222.object({
|
|
5079
|
-
snapshots: z222.array(clarityProcessSnapshotVersionApiSchema)
|
|
5101
|
+
snapshots: z222.array(clarityProcessSnapshotVersionApiSchema),
|
|
5102
|
+
total: z222.number().int().nonnegative().describe("Total number of snapshots of this kind for the process")
|
|
5080
5103
|
});
|
|
5081
5104
|
var getClarityProcessSnapshotParamsSchema = listClarityProcessSnapshotsParamsSchema.extend({
|
|
5082
5105
|
snapshot_id: z222.guid().describe("Snapshot id")
|
|
@@ -5748,7 +5771,7 @@ __name(buildClarityProcessLanguageBlock, "buildClarityProcessLanguageBlock");
|
|
|
5748
5771
|
__name2(buildClarityProcessLanguageBlock, "buildClarityProcessLanguageBlock");
|
|
5749
5772
|
function buildClarityNarrativeLanguageBlock() {
|
|
5750
5773
|
return `# OUTPUT LANGUAGE
|
|
5751
|
-
Write every narrative artifact field you produce (summary, SWOT analysis entries, projected impact, assumptions, recommendations, and supporting prose) in the
|
|
5774
|
+
Write every narrative artifact field you produce (summary, SWOT analysis entries, projected impact, assumptions, recommendations, and supporting prose) in the language of the snapshot's step titles and descriptions. Judge that language from the step titles and descriptions only; ignore the language of source excerpts, evidence quotes, transcript excerpts, and previously generated narrative fields such as summary, swot, or projectedImpact. If the step titles and descriptions are in English, or their language is mixed or ambiguous, write in English. Keep JSON field keys, enum values, ids, integration or system identifiers, file paths, shell commands, and product names in English/exactly as given; do not translate them.`;
|
|
5752
5775
|
}
|
|
5753
5776
|
__name(buildClarityNarrativeLanguageBlock, "buildClarityNarrativeLanguageBlock");
|
|
5754
5777
|
__name2(buildClarityNarrativeLanguageBlock, "buildClarityNarrativeLanguageBlock");
|
|
@@ -6681,6 +6704,7 @@ var INTEGRATION_SLUGS = [
|
|
|
6681
6704
|
"googlesheets",
|
|
6682
6705
|
"googledrive",
|
|
6683
6706
|
"firecrawl",
|
|
6707
|
+
// Deprecated 2026-07: catalog rows purged, retained for API contract + historical payloads
|
|
6684
6708
|
"exa",
|
|
6685
6709
|
"exa-search",
|
|
6686
6710
|
"exa-company-search",
|
|
@@ -6925,8 +6949,20 @@ var updateIntegrationRequestSchema = z27.object({
|
|
|
6925
6949
|
shared: z27.boolean().optional()
|
|
6926
6950
|
});
|
|
6927
6951
|
var testIntegrationRequestSchema = z27.object({
|
|
6928
|
-
server_url: z27.url().describe("MCP server URL to
|
|
6929
|
-
|
|
6952
|
+
server_url: z27.url().optional().describe("Raw MCP server URL to probe (for custom MCP servers)"),
|
|
6953
|
+
integration_slug: IntegrationSlugSchema.optional().describe(
|
|
6954
|
+
"Catalog integration slug. The backend resolves the MCP server URL and dummy auth headers server-side \u2014 no server_url or headers needed."
|
|
6955
|
+
),
|
|
6956
|
+
headers: z27.record(z27.string(), z27.string()).optional().describe(
|
|
6957
|
+
"Optional HTTP headers for authentication (raw server_url mode only)"
|
|
6958
|
+
)
|
|
6959
|
+
}).refine(
|
|
6960
|
+
(data) => Boolean(data.server_url) !== Boolean(data.integration_slug),
|
|
6961
|
+
{
|
|
6962
|
+
message: "Provide exactly one of server_url or integration_slug"
|
|
6963
|
+
}
|
|
6964
|
+
).refine((data) => !(data.integration_slug && data.headers), {
|
|
6965
|
+
message: "headers are not allowed with integration_slug \u2014 the backend builds dummy auth headers server-side"
|
|
6930
6966
|
});
|
|
6931
6967
|
var SUGGESTION_TYPES = [
|
|
6932
6968
|
"aop",
|
|
@@ -7194,12 +7230,12 @@ var artifactDetailResponseSchema = z31.object({
|
|
|
7194
7230
|
// teammates when the Pulse is published to the team with `edit` permission,
|
|
7195
7231
|
// and for a member individually granted `edit` via a per-member share. Drives
|
|
7196
7232
|
// the chat/version affordances; ownership actions stay gated on `is_creator`.
|
|
7197
|
-
can_edit: z31.boolean()
|
|
7198
|
-
messages: z31.array(artifactMessageSchema)
|
|
7233
|
+
can_edit: z31.boolean()
|
|
7199
7234
|
});
|
|
7200
7235
|
var artifactMessageListResponseSchema = z31.object({
|
|
7201
7236
|
data: z31.array(artifactMessageSchema),
|
|
7202
|
-
total: z31.number().int().nonnegative()
|
|
7237
|
+
total: z31.number().int().nonnegative(),
|
|
7238
|
+
has_more: z31.boolean()
|
|
7203
7239
|
});
|
|
7204
7240
|
var artifactRevisionSchema = z31.object({
|
|
7205
7241
|
id: z31.guid(),
|
|
@@ -8830,6 +8866,117 @@ var updateAutomationResponseApiSchema = z50.object({
|
|
|
8830
8866
|
var deleteAutomationResponseApiSchema = z50.object({
|
|
8831
8867
|
success: z50.boolean()
|
|
8832
8868
|
});
|
|
8869
|
+
var automationRevisionStatusApiSchema = z50.enum(
|
|
8870
|
+
AUTOMATION_REVISION_STATUS
|
|
8871
|
+
);
|
|
8872
|
+
var automationRevisionSummaryApiSchema = z50.object({
|
|
8873
|
+
id: z50.guid().describe("Unique revision identifier"),
|
|
8874
|
+
automation_id: z50.guid().describe("ID of the automation this revision belongs to"),
|
|
8875
|
+
revision_number: z50.int().nullable().describe(
|
|
8876
|
+
"Sequential revision number, assigned on activation (null for a draft)"
|
|
8877
|
+
),
|
|
8878
|
+
status: automationRevisionStatusApiSchema.describe(
|
|
8879
|
+
"Lifecycle status: draft, live, or historic"
|
|
8880
|
+
),
|
|
8881
|
+
base_revision_id: z50.guid().nullable().describe(
|
|
8882
|
+
"Revision this draft was branched from (null when it has no base)"
|
|
8883
|
+
),
|
|
8884
|
+
name: z50.string().nullable().describe("Optional human-readable revision name"),
|
|
8885
|
+
description: z50.string().nullable().describe("Optional revision description"),
|
|
8886
|
+
is_live: z50.boolean().describe("True when this is the automation's active revision"),
|
|
8887
|
+
is_stale_base: z50.boolean().describe(
|
|
8888
|
+
"True when a draft's base is no longer the active revision and must be resolved before activation"
|
|
8889
|
+
),
|
|
8890
|
+
agent_count: z50.int().describe("Number of agent bindings in the revision"),
|
|
8891
|
+
queue_count: z50.int().describe("Number of queue bindings in the revision"),
|
|
8892
|
+
trigger_count: z50.int().describe("Number of trigger bindings in the revision"),
|
|
8893
|
+
modified_agent_ids: z50.array(z50.guid()).describe("Agents whose referenced build differs from the base revision"),
|
|
8894
|
+
created_at: z50.string().describe("ISO 8601 creation timestamp"),
|
|
8895
|
+
updated_at: z50.string().describe("ISO 8601 last-modified timestamp")
|
|
8896
|
+
});
|
|
8897
|
+
var automationRevisionsListApiSchema = z50.object({
|
|
8898
|
+
revisions: z50.array(automationRevisionSummaryApiSchema).describe("Revisions for the automation, newest first"),
|
|
8899
|
+
/**
|
|
8900
|
+
* True when older revisions exist beyond the returned window. The list is
|
|
8901
|
+
* capped (newest-first); older revisions remain inspectable individually via
|
|
8902
|
+
* `GET /automations/:automation_id/revisions/:revision_id`.
|
|
8903
|
+
*/
|
|
8904
|
+
has_more: z50.boolean().describe("True when older revisions exist beyond the returned window")
|
|
8905
|
+
});
|
|
8906
|
+
var automationRevisionAgentBindingApiSchema = z50.object({
|
|
8907
|
+
agent_id: z50.guid().describe("Agent identifier"),
|
|
8908
|
+
build_id: z50.guid().describe("Build referenced for the agent in this revision")
|
|
8909
|
+
});
|
|
8910
|
+
var automationRevisionQueueBindingApiSchema = z50.object({
|
|
8911
|
+
case_queue_id: z50.guid().describe("Queue identifier"),
|
|
8912
|
+
agent_id: z50.guid().nullable().describe(
|
|
8913
|
+
"Agent the queue routes to in this revision (null when unrouted)"
|
|
8914
|
+
),
|
|
8915
|
+
enabled: z50.boolean().describe("Whether the queue's routing is enabled"),
|
|
8916
|
+
concurrency: z50.int().nullable().describe("Per-revision concurrency limit (null for the queue default)"),
|
|
8917
|
+
name: z50.string().nullable().describe(
|
|
8918
|
+
"Per-revision queue name override (null to keep the queue's own name)"
|
|
8919
|
+
),
|
|
8920
|
+
description: z50.string().nullable().describe("Per-revision queue description override")
|
|
8921
|
+
});
|
|
8922
|
+
var automationRevisionTriggerBindingApiSchema = z50.object({
|
|
8923
|
+
trigger_id: z50.guid().describe("Stable trigger identity"),
|
|
8924
|
+
enabled: z50.boolean().describe("Whether the trigger is enabled in this revision"),
|
|
8925
|
+
filter_config: z50.record(z50.string(), z50.unknown()).describe("Per-revision trigger filter configuration")
|
|
8926
|
+
});
|
|
8927
|
+
var automationRevisionDetailApiSchema = automationRevisionSummaryApiSchema.extend({
|
|
8928
|
+
agents: z50.array(automationRevisionAgentBindingApiSchema).describe("Agent bindings in the revision"),
|
|
8929
|
+
queues: z50.array(automationRevisionQueueBindingApiSchema).describe("Queue routing bindings in the revision"),
|
|
8930
|
+
triggers: z50.array(automationRevisionTriggerBindingApiSchema).describe("Trigger config bindings in the revision")
|
|
8931
|
+
});
|
|
8932
|
+
var automationRevisionDetailResponseApiSchema = z50.object({
|
|
8933
|
+
revision: automationRevisionDetailApiSchema.describe(
|
|
8934
|
+
"The revision with its full manifest"
|
|
8935
|
+
)
|
|
8936
|
+
});
|
|
8937
|
+
var automationRevisionResponseApiSchema = z50.object({
|
|
8938
|
+
revision: automationRevisionSummaryApiSchema.describe("The revision summary")
|
|
8939
|
+
});
|
|
8940
|
+
var AUTOMATION_REVISION_NAME_MAX_LENGTH = 200;
|
|
8941
|
+
var AUTOMATION_REVISION_DESCRIPTION_MAX_LENGTH = 2e3;
|
|
8942
|
+
var revisionNameFieldSchema = z50.string().trim().min(1).max(AUTOMATION_REVISION_NAME_MAX_LENGTH);
|
|
8943
|
+
var revisionDescriptionFieldSchema = z50.string().trim().max(AUTOMATION_REVISION_DESCRIPTION_MAX_LENGTH);
|
|
8944
|
+
var createAutomationRevisionBodyApiSchema = z50.object({
|
|
8945
|
+
base_revision_id: z50.guid().optional().describe("Revision to branch from (defaults to the active revision)"),
|
|
8946
|
+
name: revisionNameFieldSchema.optional().describe("Optional draft name"),
|
|
8947
|
+
description: revisionDescriptionFieldSchema.optional().describe("Optional draft description")
|
|
8948
|
+
});
|
|
8949
|
+
var setAutomationRevisionAgentBodyApiSchema = z50.object({
|
|
8950
|
+
agent_id: z50.guid().describe("Agent to bind in the revision"),
|
|
8951
|
+
build_id: z50.guid().describe("Build to reference for the agent")
|
|
8952
|
+
});
|
|
8953
|
+
var setAutomationRevisionQueueBodyApiSchema = z50.object({
|
|
8954
|
+
case_queue_id: z50.guid().describe("Queue to route in the revision"),
|
|
8955
|
+
agent_id: z50.guid().nullable().optional().describe(
|
|
8956
|
+
"Agent the queue routes to (null clears routing; omit to keep current)"
|
|
8957
|
+
),
|
|
8958
|
+
enabled: z50.boolean().optional().describe(
|
|
8959
|
+
"Whether routing is enabled (omit to keep current; default true when new)"
|
|
8960
|
+
),
|
|
8961
|
+
concurrency: z50.int().nonnegative().nullable().optional().describe(
|
|
8962
|
+
"Per-revision concurrency limit (null for queue default; omit to keep current)"
|
|
8963
|
+
),
|
|
8964
|
+
name: revisionNameFieldSchema.nullable().optional().describe("Per-revision name override (null clears; omit to keep current)"),
|
|
8965
|
+
description: revisionDescriptionFieldSchema.nullable().optional().describe(
|
|
8966
|
+
"Per-revision description override (null clears; omit to keep current)"
|
|
8967
|
+
)
|
|
8968
|
+
});
|
|
8969
|
+
var activateAutomationRevisionBodyApiSchema = z50.object({
|
|
8970
|
+
repin_pending_cases: z50.boolean().optional().describe(
|
|
8971
|
+
"Re-pin the automation's pending, unclaimed cases onto the newly activated revision"
|
|
8972
|
+
)
|
|
8973
|
+
});
|
|
8974
|
+
var activateAutomationRevisionResponseApiSchema = z50.object({
|
|
8975
|
+
revision: automationRevisionSummaryApiSchema.describe(
|
|
8976
|
+
"The newly activated revision"
|
|
8977
|
+
),
|
|
8978
|
+
repinned_case_count: z50.int().describe("Number of pending cases re-pinned onto the activated revision")
|
|
8979
|
+
});
|
|
8833
8980
|
var DataResidencySchema = z51.enum(["us", "eu", "apac"]);
|
|
8834
8981
|
var DataHandlingSchema = z51.enum(["standard", "zdr"]);
|
|
8835
8982
|
var browserPageSchema = z52.object({
|
|
@@ -9623,11 +9770,6 @@ var FEATURE_FLAG_CATALOGUE = {
|
|
|
9623
9770
|
defaultValue: false,
|
|
9624
9771
|
description: "Exposes the versioned Automations migration entry point. When on, Managers see a 'Migrate to automations' action on the Agents page that sorts the team's standalone agents and queues into Automations (one per connected closure, via the same closure logic as the cross-team move) and stamps team.automations_migrated_at. The stamped timestamp \u2014 not this flag \u2014 drives the Automations sidebar entry. Resolved by team/org (user-level overrides are ignored by the migration gate). Off-by-default for staged, per-team rollout."
|
|
9625
9772
|
},
|
|
9626
|
-
PULSE: {
|
|
9627
|
-
key: "pulse",
|
|
9628
|
-
defaultValue: false,
|
|
9629
|
-
description: "Enables Duvo Pulse \u2014 the agent-generated visualization Artifacts surface. When disabled, the side-nav entry is hidden and every /v1/artifacts/* endpoint returns 404; the cc-server ingestion callback is unaffected."
|
|
9630
|
-
},
|
|
9631
9773
|
AGENT_SELF_SCHEDULING: {
|
|
9632
9774
|
key: "agent_self_scheduling",
|
|
9633
9775
|
defaultValue: false,
|
|
@@ -9668,6 +9810,11 @@ var FEATURE_FLAG_CATALOGUE = {
|
|
|
9668
9810
|
defaultValue: false,
|
|
9669
9811
|
description: "Enables the case approval feature end-to-end: AOP authors can @-mention team members in the agent AOP textarea (serialized as <DUVO:USER> tags), agents can request human approval on cases via the request_case_approval tool, and approvers see and respond to pending requests on the case. Off-by-default for staged rollout."
|
|
9670
9812
|
},
|
|
9813
|
+
CLARITY_AGENT_CHAT: {
|
|
9814
|
+
key: "clarity_agent_chat",
|
|
9815
|
+
defaultValue: false,
|
|
9816
|
+
description: "Routes Clarity process edits through Ask Duvo (Meta Agent) on Clarity v2 detail pages: shows the Agent Chat rail there and hides the artifact-chat composer for new edit requests while keeping artifact-chat history readable. Off-by-default for staged rollout."
|
|
9817
|
+
},
|
|
9671
9818
|
CLARITY_ARTIFACT_CHAT: {
|
|
9672
9819
|
key: "clarity_artifact_chat",
|
|
9673
9820
|
defaultValue: false,
|
|
@@ -12314,6 +12461,7 @@ import { homedir } from "node:os";
|
|
|
12314
12461
|
import { join } from "node:path";
|
|
12315
12462
|
var CONFIG_DIR_NAME = "duvo";
|
|
12316
12463
|
var CONFIG_FILE_NAME = "config.json";
|
|
12464
|
+
var UPDATE_CHECK_CACHE_FILE_NAME = "update-check.json";
|
|
12317
12465
|
function getConfigDir() {
|
|
12318
12466
|
const xdg = process.env.XDG_CONFIG_HOME;
|
|
12319
12467
|
if (xdg && xdg.length > 0) {
|
|
@@ -12326,6 +12474,10 @@ function getConfigPath() {
|
|
|
12326
12474
|
return join(getConfigDir(), CONFIG_FILE_NAME);
|
|
12327
12475
|
}
|
|
12328
12476
|
__name(getConfigPath, "getConfigPath");
|
|
12477
|
+
function getUpdateCheckCachePath() {
|
|
12478
|
+
return join(getConfigDir(), UPDATE_CHECK_CACHE_FILE_NAME);
|
|
12479
|
+
}
|
|
12480
|
+
__name(getUpdateCheckCachePath, "getUpdateCheckCachePath");
|
|
12329
12481
|
|
|
12330
12482
|
// src/config/store.ts
|
|
12331
12483
|
var FILE_MODE = 384;
|
|
@@ -13548,6 +13700,55 @@ var createAgentResponseSchema = z84.object({
|
|
|
13548
13700
|
var deleteAgentResponseSchema = z84.object({
|
|
13549
13701
|
success: z84.literal(true)
|
|
13550
13702
|
});
|
|
13703
|
+
var namedRefSchema = z84.object({
|
|
13704
|
+
id: z84.string(),
|
|
13705
|
+
name: z84.string()
|
|
13706
|
+
});
|
|
13707
|
+
var moveQueueRefSchema = z84.object({
|
|
13708
|
+
id: z84.string(),
|
|
13709
|
+
name: z84.string(),
|
|
13710
|
+
item_count: z84.number()
|
|
13711
|
+
});
|
|
13712
|
+
var connectionDecisionSchema = z84.object({
|
|
13713
|
+
agent_id: z84.string(),
|
|
13714
|
+
agent_name: z84.string(),
|
|
13715
|
+
integration_type: z84.string(),
|
|
13716
|
+
integration_name: z84.string(),
|
|
13717
|
+
instance_name: z84.string(),
|
|
13718
|
+
decision: z84.string()
|
|
13719
|
+
});
|
|
13720
|
+
var customRebuildSchema = z84.object({
|
|
13721
|
+
agent_id: z84.string(),
|
|
13722
|
+
agent_name: z84.string(),
|
|
13723
|
+
custom_integration_name: z84.string()
|
|
13724
|
+
});
|
|
13725
|
+
var moveAgentResponseSchema = z84.object({
|
|
13726
|
+
source_team_id: z84.string(),
|
|
13727
|
+
target_team_id: z84.string(),
|
|
13728
|
+
root_agent_id: z84.string(),
|
|
13729
|
+
agents: z84.array(namedRefSchema),
|
|
13730
|
+
queues: z84.array(moveQueueRefSchema),
|
|
13731
|
+
total_case_items: z84.number(),
|
|
13732
|
+
total_runs: z84.number(),
|
|
13733
|
+
skills_to_clone: z84.array(namedRefSchema),
|
|
13734
|
+
files_to_copy: z84.array(z84.object({ path: z84.string() })),
|
|
13735
|
+
warnings: z84.object({
|
|
13736
|
+
outcome: z84.object({
|
|
13737
|
+
instances_reconnected: z84.array(connectionDecisionSchema),
|
|
13738
|
+
instances_disconnected: z84.array(connectionDecisionSchema),
|
|
13739
|
+
custom_integrations_to_rebuild: z84.array(customRebuildSchema),
|
|
13740
|
+
catalog_rows_created_on_target: z84.number()
|
|
13741
|
+
}),
|
|
13742
|
+
dropped_folders: z84.array(namedRefSchema),
|
|
13743
|
+
dropped_memory_count: z84.number(),
|
|
13744
|
+
files_copied_count: z84.number(),
|
|
13745
|
+
files_skipped_conflict: z84.array(z84.string())
|
|
13746
|
+
}),
|
|
13747
|
+
options: z84.object({
|
|
13748
|
+
move_learnings: z84.boolean()
|
|
13749
|
+
}),
|
|
13750
|
+
applied: z84.boolean()
|
|
13751
|
+
});
|
|
13551
13752
|
var buildConfigSchema = StoredAgentConfigSchemaV2;
|
|
13552
13753
|
var DEFAULT_NEW_AGENT_NAME = DEFAULT_AGENT_NAME;
|
|
13553
13754
|
var DEFAULT_BUILD_NAME = "Initial build";
|
|
@@ -14535,6 +14736,151 @@ function registerAgentsModels(agents) {
|
|
|
14535
14736
|
}
|
|
14536
14737
|
__name(registerAgentsModels, "registerAgentsModels");
|
|
14537
14738
|
|
|
14739
|
+
// src/commands/agents/move.ts
|
|
14740
|
+
var NOT_STANDALONE_CODE = "ASSIGNMENT_NOT_STANDALONE";
|
|
14741
|
+
function registerAgentsMove(agents) {
|
|
14742
|
+
agents.command("move <id>").description("Move an agent (and its connected workspace) to another team").requiredOption("--to-team <id>", "ID of the team to move the agent into").option(
|
|
14743
|
+
"--all-together",
|
|
14744
|
+
"move connected queues, triggers, and handover peers along with the agent"
|
|
14745
|
+
).option(
|
|
14746
|
+
"--skip-learnings",
|
|
14747
|
+
"drop the agent's accumulated learnings instead of carrying them across"
|
|
14748
|
+
).option("--dry-run", "preview the move without applying any changes").option("-y, --yes", "skip the confirmation prompt").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function moveAction(id, options) {
|
|
14749
|
+
const agentId = trimRequired(id, "<id>");
|
|
14750
|
+
const targetTeamId = trimRequired(options.toTeam ?? "", "--to-team");
|
|
14751
|
+
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
14752
|
+
const isDryRun = options.dryRun === true;
|
|
14753
|
+
if (!isDryRun) {
|
|
14754
|
+
await confirmDestructive({
|
|
14755
|
+
message: `Move agent "${agentId}" to team "${targetTeamId}"?`,
|
|
14756
|
+
skip: options.yes === true
|
|
14757
|
+
});
|
|
14758
|
+
}
|
|
14759
|
+
const body = {
|
|
14760
|
+
target_team_id: targetTeamId,
|
|
14761
|
+
move_learnings: options.skipLearnings !== true,
|
|
14762
|
+
bypass_standalone_gate: options.allTogether === true
|
|
14763
|
+
};
|
|
14764
|
+
const searchParams = new URLSearchParams();
|
|
14765
|
+
if (isDryRun) {
|
|
14766
|
+
searchParams.append("dry_run", "true");
|
|
14767
|
+
}
|
|
14768
|
+
const raw = await requestMove({
|
|
14769
|
+
agentId,
|
|
14770
|
+
apiKey,
|
|
14771
|
+
apiBaseUrl,
|
|
14772
|
+
body,
|
|
14773
|
+
searchParams
|
|
14774
|
+
});
|
|
14775
|
+
if (options.json) {
|
|
14776
|
+
printJson(raw);
|
|
14777
|
+
return;
|
|
14778
|
+
}
|
|
14779
|
+
const parsed = moveAgentResponseSchema.safeParse(raw);
|
|
14780
|
+
if (!parsed.success) {
|
|
14781
|
+
throw new CliError(
|
|
14782
|
+
`Unexpected response from the API: ${parsed.error.message}`
|
|
14783
|
+
);
|
|
14784
|
+
}
|
|
14785
|
+
renderPlan(parsed.data, isDryRun);
|
|
14786
|
+
}, "moveAction"));
|
|
14787
|
+
}
|
|
14788
|
+
__name(registerAgentsMove, "registerAgentsMove");
|
|
14789
|
+
async function requestMove(args) {
|
|
14790
|
+
try {
|
|
14791
|
+
return await httpRequest({
|
|
14792
|
+
method: "POST",
|
|
14793
|
+
path: `/v2/agents/${encodeURIComponent(args.agentId)}/move`,
|
|
14794
|
+
apiKey: args.apiKey,
|
|
14795
|
+
apiBaseUrl: args.apiBaseUrl,
|
|
14796
|
+
body: args.body,
|
|
14797
|
+
searchParams: args.searchParams
|
|
14798
|
+
});
|
|
14799
|
+
} catch (error) {
|
|
14800
|
+
if (error instanceof CliHttpError && error.apiErrorCode === NOT_STANDALONE_CODE) {
|
|
14801
|
+
throw new CliError(
|
|
14802
|
+
"This agent is connected to queues or other agents. Re-run with --all-together to move everything as a group."
|
|
14803
|
+
);
|
|
14804
|
+
}
|
|
14805
|
+
throw error;
|
|
14806
|
+
}
|
|
14807
|
+
}
|
|
14808
|
+
__name(requestMove, "requestMove");
|
|
14809
|
+
function renderPlan(plan, isDryRun) {
|
|
14810
|
+
const otherAgents = plan.agents.filter((a) => a.id !== plan.root_agent_id);
|
|
14811
|
+
const outcome = plan.warnings.outcome;
|
|
14812
|
+
console.log(green(isDryRun ? "Move preview" : "Agent moved!"));
|
|
14813
|
+
console.log(
|
|
14814
|
+
renderKeyValue([
|
|
14815
|
+
{ label: "Target team", value: plan.target_team_id },
|
|
14816
|
+
{ label: "Agents moving", value: String(plan.agents.length) },
|
|
14817
|
+
{ label: "Queues", value: String(plan.queues.length) },
|
|
14818
|
+
{ label: "Cases", value: String(plan.total_case_items) },
|
|
14819
|
+
{ label: "Runs", value: String(plan.total_runs) },
|
|
14820
|
+
{
|
|
14821
|
+
label: "Move learnings",
|
|
14822
|
+
value: plan.options.move_learnings ? "yes" : "no"
|
|
14823
|
+
}
|
|
14824
|
+
])
|
|
14825
|
+
);
|
|
14826
|
+
if (otherAgents.length > 0) {
|
|
14827
|
+
console.log(`
|
|
14828
|
+
Connected agents coming along (${otherAgents.length}):`);
|
|
14829
|
+
for (const agent of otherAgents) {
|
|
14830
|
+
console.log(` - ${agent.name} (${agent.id})`);
|
|
14831
|
+
}
|
|
14832
|
+
}
|
|
14833
|
+
if (plan.queues.length > 0) {
|
|
14834
|
+
console.log(`
|
|
14835
|
+
Queues (${plan.queues.length}):`);
|
|
14836
|
+
for (const queue of plan.queues) {
|
|
14837
|
+
console.log(` - ${queue.name} \u2014 ${queue.item_count} case(s)`);
|
|
14838
|
+
}
|
|
14839
|
+
}
|
|
14840
|
+
if (plan.skills_to_clone.length > 0) {
|
|
14841
|
+
const names = plan.skills_to_clone.map((s) => s.name).join(", ");
|
|
14842
|
+
console.log(`
|
|
14843
|
+
Skills copied to target: ${names}`);
|
|
14844
|
+
}
|
|
14845
|
+
if (plan.files_to_copy.length > 0) {
|
|
14846
|
+
const paths = plan.files_to_copy.map((f) => f.path).join(", ");
|
|
14847
|
+
console.log(`
|
|
14848
|
+
Files copied to target: ${paths}`);
|
|
14849
|
+
}
|
|
14850
|
+
if (outcome.instances_disconnected.length > 0) {
|
|
14851
|
+
console.log("\nConnections to reconnect on the target team:");
|
|
14852
|
+
for (const c of outcome.instances_disconnected) {
|
|
14853
|
+
console.log(` - ${c.integration_name} (${c.agent_name})`);
|
|
14854
|
+
}
|
|
14855
|
+
}
|
|
14856
|
+
if (outcome.custom_integrations_to_rebuild.length > 0) {
|
|
14857
|
+
console.log("\nCustom connections to rebuild on the target team:");
|
|
14858
|
+
for (const c of outcome.custom_integrations_to_rebuild) {
|
|
14859
|
+
console.log(` - ${c.custom_integration_name} (${c.agent_name})`);
|
|
14860
|
+
}
|
|
14861
|
+
}
|
|
14862
|
+
if (plan.warnings.files_skipped_conflict.length > 0) {
|
|
14863
|
+
const paths = plan.warnings.files_skipped_conflict.join(", ");
|
|
14864
|
+
console.log(`
|
|
14865
|
+
Files not copied (already exist on target): ${paths}`);
|
|
14866
|
+
}
|
|
14867
|
+
if (plan.warnings.dropped_folders.length > 0) {
|
|
14868
|
+
const names = plan.warnings.dropped_folders.map((f) => f.name).join(", ");
|
|
14869
|
+
console.log(`
|
|
14870
|
+
Queues will be moved out of their folders: ${names}`);
|
|
14871
|
+
}
|
|
14872
|
+
if (plan.warnings.dropped_memory_count > 0) {
|
|
14873
|
+
console.log(
|
|
14874
|
+
`
|
|
14875
|
+
${plan.warnings.dropped_memory_count} AOP exception(s) will be cleared for users who aren't in the target team.`
|
|
14876
|
+
);
|
|
14877
|
+
}
|
|
14878
|
+
if (isDryRun) {
|
|
14879
|
+
console.log("\nNothing was changed. Re-run without --dry-run to apply.");
|
|
14880
|
+
}
|
|
14881
|
+
}
|
|
14882
|
+
__name(renderPlan, "renderPlan");
|
|
14883
|
+
|
|
14538
14884
|
// src/api/schedule-schemas.ts
|
|
14539
14885
|
import { z as z86 } from "zod";
|
|
14540
14886
|
var publicScheduleSchema = z86.object({
|
|
@@ -15352,6 +15698,7 @@ function registerAgents(program) {
|
|
|
15352
15698
|
registerAgentsGet(agents);
|
|
15353
15699
|
registerAgentsCreate(agents);
|
|
15354
15700
|
registerAgentsUpdate(agents);
|
|
15701
|
+
registerAgentsMove(agents);
|
|
15355
15702
|
registerAgentsModels(agents);
|
|
15356
15703
|
registerAgentsSetModel(agents);
|
|
15357
15704
|
registerAgentsDelete(agents);
|
|
@@ -19209,6 +19556,19 @@ var CLARITY_READ_TOOLS = [
|
|
|
19209
19556
|
endpoints: [{ method: "GET", path: "/v2/clarity/processes/:processId" }],
|
|
19210
19557
|
description: "Read old v1 Clarity processes with legacy analysis, transformation guidance, and captures."
|
|
19211
19558
|
},
|
|
19559
|
+
{
|
|
19560
|
+
name: "listClarityProcessSnapshots",
|
|
19561
|
+
scope: "v2",
|
|
19562
|
+
read_only: true,
|
|
19563
|
+
commands: ["duvo clarity list-snapshots"],
|
|
19564
|
+
endpoints: [
|
|
19565
|
+
{
|
|
19566
|
+
method: "GET",
|
|
19567
|
+
path: "/v2/clarity-v2/processes/:processId/snapshots/:kind"
|
|
19568
|
+
}
|
|
19569
|
+
],
|
|
19570
|
+
description: "List lightweight v2 snapshot versions of one kind (current_process or transformation_proposal) with limit/offset pagination."
|
|
19571
|
+
},
|
|
19212
19572
|
{
|
|
19213
19573
|
name: "getClarityProcessSnapshot",
|
|
19214
19574
|
scope: "v2",
|
|
@@ -21442,6 +21802,103 @@ function registerClarityProcessSummaries(clarity) {
|
|
|
21442
21802
|
}
|
|
21443
21803
|
__name(registerClarityProcessSummaries, "registerClarityProcessSummaries");
|
|
21444
21804
|
|
|
21805
|
+
// src/commands/clarity/list-snapshots.ts
|
|
21806
|
+
import { z as z99 } from "zod";
|
|
21807
|
+
var SNAPSHOT_KINDS = ["current_process", "transformation_proposal"];
|
|
21808
|
+
var DEFAULT_LIMIT7 = 50;
|
|
21809
|
+
var MIN_LIMIT7 = 1;
|
|
21810
|
+
var MAX_LIMIT7 = 100;
|
|
21811
|
+
var snapshotListItemSchema = z99.looseObject({
|
|
21812
|
+
id: z99.string(),
|
|
21813
|
+
status: z99.string(),
|
|
21814
|
+
creator_type: z99.string(),
|
|
21815
|
+
created_at: z99.string(),
|
|
21816
|
+
parent_id: z99.string().nullable().optional(),
|
|
21817
|
+
source_snapshot_id: z99.string().nullable().optional()
|
|
21818
|
+
});
|
|
21819
|
+
var listSnapshotsResponseSchema = z99.looseObject({
|
|
21820
|
+
snapshots: z99.array(snapshotListItemSchema),
|
|
21821
|
+
total: z99.number().int().optional()
|
|
21822
|
+
});
|
|
21823
|
+
var TABLE_COLUMNS21 = [
|
|
21824
|
+
{
|
|
21825
|
+
header: "ID",
|
|
21826
|
+
cell: /* @__PURE__ */ __name((row) => row.id, "cell")
|
|
21827
|
+
},
|
|
21828
|
+
{
|
|
21829
|
+
header: "STATUS",
|
|
21830
|
+
cell: /* @__PURE__ */ __name((row) => row.status, "cell")
|
|
21831
|
+
},
|
|
21832
|
+
{
|
|
21833
|
+
header: "CREATOR",
|
|
21834
|
+
cell: /* @__PURE__ */ __name((row) => row.creator_type, "cell")
|
|
21835
|
+
},
|
|
21836
|
+
{
|
|
21837
|
+
header: "PARENT",
|
|
21838
|
+
cell: /* @__PURE__ */ __name((row) => row.parent_id ?? "", "cell")
|
|
21839
|
+
},
|
|
21840
|
+
{
|
|
21841
|
+
header: "CREATED",
|
|
21842
|
+
cell: /* @__PURE__ */ __name((row) => row.created_at, "cell")
|
|
21843
|
+
}
|
|
21844
|
+
];
|
|
21845
|
+
function registerClarityListSnapshots(clarity) {
|
|
21846
|
+
clarity.command("list-snapshots <process-id> <kind>").description(
|
|
21847
|
+
`List lightweight v2 snapshot versions of one kind (${SNAPSHOT_KINDS.join(" or ")}) for a Clarity process`
|
|
21848
|
+
).option("--limit <n>", `page size (${MIN_LIMIT7}-${MAX_LIMIT7})`).option("--offset <n>", "number of snapshots to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function action(processId, rawKind, options) {
|
|
21849
|
+
const kind = parseSnapshotKind2(rawKind);
|
|
21850
|
+
const limit = parseLimit(options.limit, {
|
|
21851
|
+
defaultValue: DEFAULT_LIMIT7,
|
|
21852
|
+
min: MIN_LIMIT7,
|
|
21853
|
+
max: MAX_LIMIT7
|
|
21854
|
+
});
|
|
21855
|
+
const offset = parseOffset(options.offset);
|
|
21856
|
+
const config = await requireAuthenticatedConfig(this);
|
|
21857
|
+
const searchParams = new URLSearchParams();
|
|
21858
|
+
searchParams.append("limit", String(limit));
|
|
21859
|
+
searchParams.append("offset", String(offset));
|
|
21860
|
+
const raw = await getClarityJson(config, {
|
|
21861
|
+
method: "GET",
|
|
21862
|
+
path: `/v2/clarity-v2/processes/${encodeURIComponent(processId)}/snapshots/${kind}`,
|
|
21863
|
+
resource: "Clarity process snapshots",
|
|
21864
|
+
searchParams
|
|
21865
|
+
});
|
|
21866
|
+
if (options.json) {
|
|
21867
|
+
printJson(raw);
|
|
21868
|
+
return;
|
|
21869
|
+
}
|
|
21870
|
+
const parsed = listSnapshotsResponseSchema.safeParse(raw);
|
|
21871
|
+
if (!parsed.success) {
|
|
21872
|
+
throw new CliError(
|
|
21873
|
+
`Unexpected response from the API: ${parsed.error.message}`
|
|
21874
|
+
);
|
|
21875
|
+
}
|
|
21876
|
+
const response = parsed.data;
|
|
21877
|
+
if (response.snapshots.length === 0) {
|
|
21878
|
+
console.log("No snapshots found.");
|
|
21879
|
+
return;
|
|
21880
|
+
}
|
|
21881
|
+
console.log(renderTable(TABLE_COLUMNS21, response.snapshots));
|
|
21882
|
+
console.log(renderPaginationSummary(response, offset));
|
|
21883
|
+
}, "action"));
|
|
21884
|
+
}
|
|
21885
|
+
__name(registerClarityListSnapshots, "registerClarityListSnapshots");
|
|
21886
|
+
function parseSnapshotKind2(raw) {
|
|
21887
|
+
const kind = SNAPSHOT_KINDS.find((candidate) => candidate === raw);
|
|
21888
|
+
if (kind === void 0) {
|
|
21889
|
+
throw new CliError(`kind must be one of: ${SNAPSHOT_KINDS.join(", ")}`);
|
|
21890
|
+
}
|
|
21891
|
+
return kind;
|
|
21892
|
+
}
|
|
21893
|
+
__name(parseSnapshotKind2, "parseSnapshotKind");
|
|
21894
|
+
function renderPaginationSummary(response, offset) {
|
|
21895
|
+
if (response.total === void 0) {
|
|
21896
|
+
return `Showing ${response.snapshots.length} \xB7 offset ${offset}`;
|
|
21897
|
+
}
|
|
21898
|
+
return `Showing ${response.snapshots.length} of ${response.total} \xB7 offset ${offset}`;
|
|
21899
|
+
}
|
|
21900
|
+
__name(renderPaginationSummary, "renderPaginationSummary");
|
|
21901
|
+
|
|
21445
21902
|
// src/commands/clarity/postprocess.ts
|
|
21446
21903
|
var SNAPSHOT_TYPES = ["current_process", "transformation_proposal"];
|
|
21447
21904
|
function registerClarityPostprocess(clarity) {
|
|
@@ -21473,9 +21930,9 @@ function registerClarityPostprocess(clarity) {
|
|
|
21473
21930
|
__name(registerClarityPostprocess, "registerClarityPostprocess");
|
|
21474
21931
|
|
|
21475
21932
|
// src/commands/clarity/process-labels.ts
|
|
21476
|
-
var
|
|
21477
|
-
var
|
|
21478
|
-
var
|
|
21933
|
+
var MIN_LIMIT8 = 1;
|
|
21934
|
+
var MAX_LIMIT8 = 100;
|
|
21935
|
+
var DEFAULT_LIMIT8 = 50;
|
|
21479
21936
|
var ORG_FLAG_DESCRIPTION2 = "organization id for the org-scoped process tag palette (overrides DUVO_ORG_ID)";
|
|
21480
21937
|
var PROCESS_LABELS_RESOURCE_PATH = "/clarity/process-labels";
|
|
21481
21938
|
var LABELS_WITH_COUNT_COLUMNS = [
|
|
@@ -21512,7 +21969,7 @@ function registerClarityProcessLabels(clarity) {
|
|
|
21512
21969
|
}
|
|
21513
21970
|
__name(registerClarityProcessLabels, "registerClarityProcessLabels");
|
|
21514
21971
|
function registerList(processLabels) {
|
|
21515
|
-
processLabels.command("list", { isDefault: true }).description("List process tags in the current organization").option("--org <org-id>", ORG_FLAG_DESCRIPTION2).option("--limit <n>", `page size (${
|
|
21972
|
+
processLabels.command("list", { isDefault: true }).description("List process tags in the current organization").option("--org <org-id>", ORG_FLAG_DESCRIPTION2).option("--limit <n>", `page size (${MIN_LIMIT8}-${MAX_LIMIT8})`).option("--offset <n>", "number of tags to skip").option("--search <text>", "only show tags whose value contains this text").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
21516
21973
|
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
21517
21974
|
const raw = await httpRequest({
|
|
21518
21975
|
method: "GET",
|
|
@@ -21610,7 +22067,7 @@ function registerListProcess(processLabels) {
|
|
|
21610
22067
|
}
|
|
21611
22068
|
__name(registerListProcess, "registerListProcess");
|
|
21612
22069
|
function registerAvailable(processLabels) {
|
|
21613
|
-
processLabels.command("available").description("List tags available to assign to a process").requiredOption("--process <process-id>", "ID of the process").option("--limit <n>", `page size (${
|
|
22070
|
+
processLabels.command("available").description("List tags available to assign to a process").requiredOption("--process <process-id>", "ID of the process").option("--limit <n>", `page size (${MIN_LIMIT8}-${MAX_LIMIT8})`).option("--offset <n>", "number of tags to skip").option("--search <text>", "only show tags whose value contains this text").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function availableAction(options) {
|
|
21614
22071
|
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
21615
22072
|
const raw = await httpRequest({
|
|
21616
22073
|
method: "GET",
|
|
@@ -21697,9 +22154,9 @@ function buildAssignBody(options) {
|
|
|
21697
22154
|
__name(buildAssignBody, "buildAssignBody");
|
|
21698
22155
|
function buildListSearchParams(options) {
|
|
21699
22156
|
const limit = parseLimit(options.limit, {
|
|
21700
|
-
defaultValue:
|
|
21701
|
-
min:
|
|
21702
|
-
max:
|
|
22157
|
+
defaultValue: DEFAULT_LIMIT8,
|
|
22158
|
+
min: MIN_LIMIT8,
|
|
22159
|
+
max: MAX_LIMIT8
|
|
21703
22160
|
});
|
|
21704
22161
|
const offset = parseOffset(options.offset);
|
|
21705
22162
|
const searchParams = new URLSearchParams({
|
|
@@ -21778,40 +22235,40 @@ function renderLabelSummary(label) {
|
|
|
21778
22235
|
__name(renderLabelSummary, "renderLabelSummary");
|
|
21779
22236
|
|
|
21780
22237
|
// src/commands/clarity/process-links.ts
|
|
21781
|
-
import { z as
|
|
21782
|
-
var
|
|
21783
|
-
var
|
|
21784
|
-
var
|
|
22238
|
+
import { z as z100 } from "zod";
|
|
22239
|
+
var MIN_LIMIT9 = 1;
|
|
22240
|
+
var MAX_LIMIT9 = 500;
|
|
22241
|
+
var DEFAULT_LIMIT9 = 100;
|
|
21785
22242
|
var ORG_FLAG_DESCRIPTION3 = "organization id for the org-scoped process landscape (overrides DUVO_ORG_ID)";
|
|
21786
22243
|
var PROCESS_LINKS_RESOURCE_PATH = "/clarity/hierarchy/process-links";
|
|
21787
|
-
var processLinkTypeSchema =
|
|
22244
|
+
var processLinkTypeSchema = z100.enum([
|
|
21788
22245
|
"hands_off_to",
|
|
21789
22246
|
"shares_step_with",
|
|
21790
22247
|
"variant_of"
|
|
21791
22248
|
]);
|
|
21792
|
-
var processLinkStateSchema =
|
|
21793
|
-
var processLinkSchema =
|
|
21794
|
-
id:
|
|
21795
|
-
source_node_id:
|
|
21796
|
-
target_node_id:
|
|
22249
|
+
var processLinkStateSchema = z100.enum(["suggested", "confirmed"]);
|
|
22250
|
+
var processLinkSchema = z100.object({
|
|
22251
|
+
id: z100.string(),
|
|
22252
|
+
source_node_id: z100.string(),
|
|
22253
|
+
target_node_id: z100.string(),
|
|
21797
22254
|
type: processLinkTypeSchema,
|
|
21798
22255
|
state: processLinkStateSchema,
|
|
21799
|
-
confidence:
|
|
21800
|
-
created_at:
|
|
21801
|
-
updated_at:
|
|
22256
|
+
confidence: z100.number().nullable(),
|
|
22257
|
+
created_at: z100.string(),
|
|
22258
|
+
updated_at: z100.string()
|
|
21802
22259
|
});
|
|
21803
|
-
var listProcessLinksResponseSchema =
|
|
21804
|
-
process_links:
|
|
21805
|
-
total:
|
|
21806
|
-
limit:
|
|
21807
|
-
offset:
|
|
22260
|
+
var listProcessLinksResponseSchema = z100.object({
|
|
22261
|
+
process_links: z100.array(processLinkSchema),
|
|
22262
|
+
total: z100.number(),
|
|
22263
|
+
limit: z100.number(),
|
|
22264
|
+
offset: z100.number()
|
|
21808
22265
|
});
|
|
21809
|
-
var processLinkMutationResponseSchema =
|
|
22266
|
+
var processLinkMutationResponseSchema = z100.object({
|
|
21810
22267
|
process_link: processLinkSchema,
|
|
21811
|
-
created:
|
|
22268
|
+
created: z100.boolean().optional()
|
|
21812
22269
|
});
|
|
21813
|
-
var deleteProcessLinkResponseSchema =
|
|
21814
|
-
deleted:
|
|
22270
|
+
var deleteProcessLinkResponseSchema = z100.object({
|
|
22271
|
+
deleted: z100.boolean()
|
|
21815
22272
|
});
|
|
21816
22273
|
var PROCESS_LINK_COLUMNS = [
|
|
21817
22274
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell"), maxWidth: 36 },
|
|
@@ -21834,7 +22291,7 @@ var PROCESS_LINK_COLUMNS = [
|
|
|
21834
22291
|
];
|
|
21835
22292
|
function registerClarityProcessLinks(clarity) {
|
|
21836
22293
|
const processLinks = clarity.command("process-links").description("Manage Clarity process links");
|
|
21837
|
-
processLinks.command("list", { isDefault: true }).description("List process links in the current organization").option("--org <org-id>", ORG_FLAG_DESCRIPTION3).option("--node <node-id>", "only show links touching this process node").option("--limit <n>", `page size (${
|
|
22294
|
+
processLinks.command("list", { isDefault: true }).description("List process links in the current organization").option("--org <org-id>", ORG_FLAG_DESCRIPTION3).option("--node <node-id>", "only show links touching this process node").option("--limit <n>", `page size (${MIN_LIMIT9}-${MAX_LIMIT9})`).option("--offset <n>", "number of links to skip").option("--json", "output JSON").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
21838
22295
|
const config = await requireAuthenticatedConfig(this);
|
|
21839
22296
|
const path = await resolveProcessLinksPath(this);
|
|
21840
22297
|
const response = await listProcessLinks(config, path, options);
|
|
@@ -21904,9 +22361,9 @@ function registerClarityProcessLinks(clarity) {
|
|
|
21904
22361
|
__name(registerClarityProcessLinks, "registerClarityProcessLinks");
|
|
21905
22362
|
async function listProcessLinks(config, path, options) {
|
|
21906
22363
|
const limit = parseLimit(options.limit, {
|
|
21907
|
-
defaultValue:
|
|
21908
|
-
min:
|
|
21909
|
-
max:
|
|
22364
|
+
defaultValue: DEFAULT_LIMIT9,
|
|
22365
|
+
min: MIN_LIMIT9,
|
|
22366
|
+
max: MAX_LIMIT9
|
|
21910
22367
|
});
|
|
21911
22368
|
const offset = parseOffset(options.offset);
|
|
21912
22369
|
const searchParams = new URLSearchParams({
|
|
@@ -22004,14 +22461,14 @@ function renderProcessLinks(response) {
|
|
|
22004
22461
|
__name(renderProcessLinks, "renderProcessLinks");
|
|
22005
22462
|
|
|
22006
22463
|
// src/commands/clarity/promote-current-process.ts
|
|
22007
|
-
import { z as
|
|
22008
|
-
var snapshotSchema3 =
|
|
22009
|
-
snapshot:
|
|
22010
|
-
id:
|
|
22011
|
-
status:
|
|
22012
|
-
creator_type:
|
|
22013
|
-
created_at:
|
|
22014
|
-
updated_at:
|
|
22464
|
+
import { z as z101 } from "zod";
|
|
22465
|
+
var snapshotSchema3 = z101.object({
|
|
22466
|
+
snapshot: z101.object({
|
|
22467
|
+
id: z101.string(),
|
|
22468
|
+
status: z101.string(),
|
|
22469
|
+
creator_type: z101.string(),
|
|
22470
|
+
created_at: z101.string(),
|
|
22471
|
+
updated_at: z101.string()
|
|
22015
22472
|
})
|
|
22016
22473
|
});
|
|
22017
22474
|
function registerClarityPromoteCurrentProcess(clarity) {
|
|
@@ -22048,14 +22505,14 @@ function registerClarityPromoteCurrentProcess(clarity) {
|
|
|
22048
22505
|
__name(registerClarityPromoteCurrentProcess, "registerClarityPromoteCurrentProcess");
|
|
22049
22506
|
|
|
22050
22507
|
// src/commands/clarity/promote-transformation-proposal.ts
|
|
22051
|
-
import { z as
|
|
22052
|
-
var snapshotSchema4 =
|
|
22053
|
-
snapshot:
|
|
22054
|
-
id:
|
|
22055
|
-
status:
|
|
22056
|
-
creator_type:
|
|
22057
|
-
created_at:
|
|
22058
|
-
updated_at:
|
|
22508
|
+
import { z as z102 } from "zod";
|
|
22509
|
+
var snapshotSchema4 = z102.object({
|
|
22510
|
+
snapshot: z102.object({
|
|
22511
|
+
id: z102.string(),
|
|
22512
|
+
status: z102.string(),
|
|
22513
|
+
creator_type: z102.string(),
|
|
22514
|
+
created_at: z102.string(),
|
|
22515
|
+
updated_at: z102.string()
|
|
22059
22516
|
})
|
|
22060
22517
|
});
|
|
22061
22518
|
function registerClarityPromoteTransformationProposal(clarity) {
|
|
@@ -22131,8 +22588,8 @@ __name(registerClarityRevertTransformationProposal, "registerClarityRevertTransf
|
|
|
22131
22588
|
|
|
22132
22589
|
// src/commands/clarity/save-snapshot.ts
|
|
22133
22590
|
import { readFile as readFile7 } from "node:fs/promises";
|
|
22134
|
-
import { z as
|
|
22135
|
-
var snapshotFileSchema =
|
|
22591
|
+
import { z as z103 } from "zod";
|
|
22592
|
+
var snapshotFileSchema = z103.union([
|
|
22136
22593
|
saveClarityProcessSnapshotBodySchema.shape.steps,
|
|
22137
22594
|
saveClarityProcessSnapshotBodySchema.pick({
|
|
22138
22595
|
steps: true,
|
|
@@ -22291,9 +22748,9 @@ function registerClarityStopTransformationProposal(clarity) {
|
|
|
22291
22748
|
__name(registerClarityStopTransformationProposal, "registerClarityStopTransformationProposal");
|
|
22292
22749
|
|
|
22293
22750
|
// src/commands/clarity/index.ts
|
|
22294
|
-
var
|
|
22295
|
-
var
|
|
22296
|
-
var
|
|
22751
|
+
var DEFAULT_LIMIT10 = 50;
|
|
22752
|
+
var MIN_LIMIT10 = 1;
|
|
22753
|
+
var MAX_LIMIT10 = 100;
|
|
22297
22754
|
var CLARITY_V2_REQUIRED_MESSAGE = "This command requires Clarity v2. Use `duvo clarity overview <process-id>` to read legacy v1 context.";
|
|
22298
22755
|
function registerClarity(program) {
|
|
22299
22756
|
const clarity = program.command("clarity").description("Manage and read Clarity processes in the Duvo public API");
|
|
@@ -22319,6 +22776,7 @@ function registerClarity(program) {
|
|
|
22319
22776
|
registerClarityGetTransformationProposal(clarity);
|
|
22320
22777
|
registerClarityListExtraCaptureRequests(clarity);
|
|
22321
22778
|
registerClarityProcessSummaries(clarity);
|
|
22779
|
+
registerClarityListSnapshots(clarity);
|
|
22322
22780
|
registerClarityArtifactChatConversations(clarity);
|
|
22323
22781
|
registerClarityArtifactChatMessages(clarity);
|
|
22324
22782
|
registerClaritySendArtifactChatMessage(clarity);
|
|
@@ -22344,7 +22802,7 @@ function registerClarity(program) {
|
|
|
22344
22802
|
}
|
|
22345
22803
|
__name(registerClarity, "registerClarity");
|
|
22346
22804
|
function registerList2(clarity) {
|
|
22347
|
-
clarity.command("list", { isDefault: true }).description("List Clarity processes for the current team").option("--limit <n>", `page size (${
|
|
22805
|
+
clarity.command("list", { isDefault: true }).description("List Clarity processes for the current team").option("--limit <n>", `page size (${MIN_LIMIT10}-${MAX_LIMIT10})`).option("--offset <n>", "number of processes to skip").option("--search <query>", "case-insensitive search across process names").option("--status <status>", "filter by lifecycle status").option(
|
|
22348
22806
|
"--process-version <1|2>",
|
|
22349
22807
|
"filter by Clarity process schema version"
|
|
22350
22808
|
).option("--json", "output JSON").option("--csv", "output CSV").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
@@ -22354,7 +22812,7 @@ function registerList2(clarity) {
|
|
|
22354
22812
|
}
|
|
22355
22813
|
__name(registerList2, "registerList");
|
|
22356
22814
|
function registerSearch(clarity) {
|
|
22357
|
-
clarity.command("search <query>").description("Search Clarity processes by name").option("--limit <n>", `page size (${
|
|
22815
|
+
clarity.command("search <query>").description("Search Clarity processes by name").option("--limit <n>", `page size (${MIN_LIMIT10}-${MAX_LIMIT10})`).option("--offset <n>", "number of processes to skip").option("--status <status>", "filter by lifecycle status").option(
|
|
22358
22816
|
"--process-version <1|2>",
|
|
22359
22817
|
"filter by Clarity process schema version"
|
|
22360
22818
|
).option("--json", "output JSON").option("--csv", "output CSV").action(/* @__PURE__ */ __name(async function searchAction(query, options) {
|
|
@@ -22699,9 +23157,9 @@ function registerExport(clarity) {
|
|
|
22699
23157
|
__name(registerExport, "registerExport");
|
|
22700
23158
|
async function loadProcessList(command, options) {
|
|
22701
23159
|
const limit = parseLimit(options.limit, {
|
|
22702
|
-
defaultValue:
|
|
22703
|
-
min:
|
|
22704
|
-
max:
|
|
23160
|
+
defaultValue: DEFAULT_LIMIT10,
|
|
23161
|
+
min: MIN_LIMIT10,
|
|
23162
|
+
max: MAX_LIMIT10
|
|
22705
23163
|
});
|
|
22706
23164
|
const offset = parseOffset(options.offset);
|
|
22707
23165
|
const version2 = parseProcessVersion(options.processVersion);
|
|
@@ -23085,7 +23543,7 @@ function registerConnectionsGet(connections) {
|
|
|
23085
23543
|
__name(registerConnectionsGet, "registerConnectionsGet");
|
|
23086
23544
|
|
|
23087
23545
|
// src/commands/connections/list.ts
|
|
23088
|
-
var
|
|
23546
|
+
var TABLE_COLUMNS22 = [
|
|
23089
23547
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
23090
23548
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
23091
23549
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
@@ -23125,26 +23583,26 @@ function registerConnectionsList(connections) {
|
|
|
23125
23583
|
console.log("No connections found.");
|
|
23126
23584
|
return;
|
|
23127
23585
|
}
|
|
23128
|
-
console.log(renderTable(
|
|
23586
|
+
console.log(renderTable(TABLE_COLUMNS22, rows));
|
|
23129
23587
|
console.log(`Showing ${rows.length}`);
|
|
23130
23588
|
}, "listAction"));
|
|
23131
23589
|
}
|
|
23132
23590
|
__name(registerConnectionsList, "registerConnectionsList");
|
|
23133
23591
|
|
|
23134
23592
|
// src/commands/connections/probe.ts
|
|
23135
|
-
import { z as
|
|
23136
|
-
var toolSchema =
|
|
23137
|
-
name:
|
|
23138
|
-
description:
|
|
23139
|
-
input_schema:
|
|
23593
|
+
import { z as z104 } from "zod";
|
|
23594
|
+
var toolSchema = z104.object({
|
|
23595
|
+
name: z104.string(),
|
|
23596
|
+
description: z104.string().optional(),
|
|
23597
|
+
input_schema: z104.record(z104.string(), z104.unknown()).optional()
|
|
23140
23598
|
});
|
|
23141
|
-
var probeResponseSchema =
|
|
23142
|
-
success:
|
|
23143
|
-
tools:
|
|
23144
|
-
error:
|
|
23599
|
+
var probeResponseSchema = z104.object({
|
|
23600
|
+
success: z104.boolean(),
|
|
23601
|
+
tools: z104.array(toolSchema).optional(),
|
|
23602
|
+
error: z104.string().optional()
|
|
23145
23603
|
});
|
|
23146
23604
|
var DESCRIPTION_MAX_WIDTH = 80;
|
|
23147
|
-
var
|
|
23605
|
+
var TABLE_COLUMNS23 = [
|
|
23148
23606
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
23149
23607
|
{
|
|
23150
23608
|
header: "DESCRIPTION",
|
|
@@ -23153,7 +23611,12 @@ var TABLE_COLUMNS22 = [
|
|
|
23153
23611
|
}
|
|
23154
23612
|
];
|
|
23155
23613
|
function registerConnectionsProbe(connections) {
|
|
23156
|
-
connections.command("probe").description(
|
|
23614
|
+
connections.command("probe").description(
|
|
23615
|
+
"Probe an MCP server and list its available tools. Use --url for custom MCP servers or --slug for catalog integrations (the backend resolves the URL)."
|
|
23616
|
+
).option("--url <url>", "MCP server URL to probe (for custom MCP servers)").option(
|
|
23617
|
+
"--slug <slug>",
|
|
23618
|
+
"Catalog integration slug (backend resolves the URL and auth headers)"
|
|
23619
|
+
).option(
|
|
23157
23620
|
"--header <KEY=VALUE>",
|
|
23158
23621
|
"HTTP header to send (repeatable)",
|
|
23159
23622
|
(value, previous) => [
|
|
@@ -23161,14 +23624,13 @@ function registerConnectionsProbe(connections) {
|
|
|
23161
23624
|
value
|
|
23162
23625
|
]
|
|
23163
23626
|
).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function probeAction(options) {
|
|
23164
|
-
const url = options.url
|
|
23165
|
-
|
|
23166
|
-
|
|
23627
|
+
const url = options.url?.trim();
|
|
23628
|
+
const slug = options.slug?.trim();
|
|
23629
|
+
if (Boolean(url) === Boolean(slug)) {
|
|
23630
|
+
throw new CliError("Provide exactly one of --url or --slug");
|
|
23167
23631
|
}
|
|
23168
|
-
const body = {
|
|
23169
|
-
|
|
23170
|
-
};
|
|
23171
|
-
if (options.header && options.header.length > 0) {
|
|
23632
|
+
const body = slug ? { integration_slug: slug } : { server_url: url };
|
|
23633
|
+
if (!slug && options.header && options.header.length > 0) {
|
|
23172
23634
|
body.headers = parseHeaderPairs("--header", options.header);
|
|
23173
23635
|
}
|
|
23174
23636
|
const config = await requireAuthenticatedConfig(this);
|
|
@@ -23204,7 +23666,7 @@ function registerConnectionsProbe(connections) {
|
|
|
23204
23666
|
console.log("No tools found.");
|
|
23205
23667
|
return;
|
|
23206
23668
|
}
|
|
23207
|
-
console.log(renderTable(
|
|
23669
|
+
console.log(renderTable(TABLE_COLUMNS23, tools));
|
|
23208
23670
|
console.log(
|
|
23209
23671
|
`Showing ${tools.length} tool${tools.length === 1 ? "" : "s"}`
|
|
23210
23672
|
);
|
|
@@ -23360,48 +23822,48 @@ function registerConnections(program) {
|
|
|
23360
23822
|
__name(registerConnections, "registerConnections");
|
|
23361
23823
|
|
|
23362
23824
|
// src/api/credential-schemas.ts
|
|
23363
|
-
import { z as
|
|
23364
|
-
var dateLike =
|
|
23365
|
-
var secretSchema =
|
|
23366
|
-
id:
|
|
23367
|
-
team_id:
|
|
23368
|
-
user_id:
|
|
23369
|
-
name:
|
|
23370
|
-
service_slug:
|
|
23371
|
-
env_var_keys:
|
|
23372
|
-
created_by:
|
|
23825
|
+
import { z as z105 } from "zod";
|
|
23826
|
+
var dateLike = z105.string();
|
|
23827
|
+
var secretSchema = z105.object({
|
|
23828
|
+
id: z105.string(),
|
|
23829
|
+
team_id: z105.string(),
|
|
23830
|
+
user_id: z105.string().nullable(),
|
|
23831
|
+
name: z105.string(),
|
|
23832
|
+
service_slug: z105.string().nullable(),
|
|
23833
|
+
env_var_keys: z105.array(z105.string()),
|
|
23834
|
+
created_by: z105.string(),
|
|
23373
23835
|
created_at: dateLike,
|
|
23374
23836
|
updated_at: dateLike
|
|
23375
23837
|
});
|
|
23376
|
-
var secretsListResponseSchema =
|
|
23838
|
+
var secretsListResponseSchema = z105.array(secretSchema);
|
|
23377
23839
|
var secretResponseSchema = secretSchema;
|
|
23378
|
-
var browserLoginSchema =
|
|
23379
|
-
id:
|
|
23380
|
-
user_id:
|
|
23381
|
-
team_id:
|
|
23382
|
-
domain:
|
|
23383
|
-
username:
|
|
23840
|
+
var browserLoginSchema = z105.object({
|
|
23841
|
+
id: z105.string(),
|
|
23842
|
+
user_id: z105.string().nullable(),
|
|
23843
|
+
team_id: z105.string(),
|
|
23844
|
+
domain: z105.string(),
|
|
23845
|
+
username: z105.string().nullable(),
|
|
23384
23846
|
password: encryptedDataSchema.nullable(),
|
|
23385
23847
|
otp_secret: encryptedDataSchema.nullable(),
|
|
23386
23848
|
created_at: dateLike,
|
|
23387
23849
|
updated_at: dateLike
|
|
23388
23850
|
});
|
|
23389
|
-
var browserLoginsListResponseSchema =
|
|
23390
|
-
var revisionLoginSummarySchema =
|
|
23391
|
-
id:
|
|
23392
|
-
user_id:
|
|
23393
|
-
team_id:
|
|
23394
|
-
domain:
|
|
23395
|
-
username:
|
|
23851
|
+
var browserLoginsListResponseSchema = z105.array(credentialPreviewSchema);
|
|
23852
|
+
var revisionLoginSummarySchema = z105.object({
|
|
23853
|
+
id: z105.string(),
|
|
23854
|
+
user_id: z105.string().nullable(),
|
|
23855
|
+
team_id: z105.string().nullable(),
|
|
23856
|
+
domain: z105.string(),
|
|
23857
|
+
username: z105.string().nullable(),
|
|
23396
23858
|
created_at: dateLike,
|
|
23397
23859
|
updated_at: dateLike
|
|
23398
23860
|
});
|
|
23399
|
-
var revisionLoginsListResponseSchema =
|
|
23861
|
+
var revisionLoginsListResponseSchema = z105.array(
|
|
23400
23862
|
revisionLoginSummarySchema
|
|
23401
23863
|
);
|
|
23402
|
-
var revisionSecretsListResponseSchema =
|
|
23403
|
-
var successResponseSchema2 =
|
|
23404
|
-
success:
|
|
23864
|
+
var revisionSecretsListResponseSchema = z105.array(secretSchema);
|
|
23865
|
+
var successResponseSchema2 = z105.object({
|
|
23866
|
+
success: z105.boolean()
|
|
23405
23867
|
});
|
|
23406
23868
|
var attachSuccessResponseSchema = successResponseSchema2;
|
|
23407
23869
|
var deleteSecretResponseSchema = successResponseSchema2;
|
|
@@ -23595,7 +24057,7 @@ function registerCredentialsGet(credentials) {
|
|
|
23595
24057
|
__name(registerCredentialsGet, "registerCredentialsGet");
|
|
23596
24058
|
|
|
23597
24059
|
// src/commands/credentials/list.ts
|
|
23598
|
-
var
|
|
24060
|
+
var TABLE_COLUMNS24 = [
|
|
23599
24061
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
23600
24062
|
{ header: "DOMAIN", cell: /* @__PURE__ */ __name((row) => row.domain, "cell") },
|
|
23601
24063
|
{
|
|
@@ -23654,7 +24116,7 @@ function registerCredentialsList(credentials) {
|
|
|
23654
24116
|
console.log("No credentials found.");
|
|
23655
24117
|
return;
|
|
23656
24118
|
}
|
|
23657
|
-
console.log(renderTable(
|
|
24119
|
+
console.log(renderTable(TABLE_COLUMNS24, rows));
|
|
23658
24120
|
console.log(`Showing ${rows.length}`);
|
|
23659
24121
|
}, "listAction"));
|
|
23660
24122
|
}
|
|
@@ -23934,7 +24396,7 @@ function registerFilesDownloadUrl(files) {
|
|
|
23934
24396
|
__name(registerFilesDownloadUrl, "registerFilesDownloadUrl");
|
|
23935
24397
|
|
|
23936
24398
|
// src/commands/files/list.ts
|
|
23937
|
-
var
|
|
24399
|
+
var TABLE_COLUMNS25 = [
|
|
23938
24400
|
{ header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
|
|
23939
24401
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
23940
24402
|
{
|
|
@@ -23977,7 +24439,7 @@ function registerFilesList(files) {
|
|
|
23977
24439
|
console.log("No files found.");
|
|
23978
24440
|
return;
|
|
23979
24441
|
}
|
|
23980
|
-
console.log(renderTable(
|
|
24442
|
+
console.log(renderTable(TABLE_COLUMNS25, parsed.data.files));
|
|
23981
24443
|
console.log(`Showing ${parsed.data.files.length}`);
|
|
23982
24444
|
}, "listAction"));
|
|
23983
24445
|
}
|
|
@@ -24404,7 +24866,7 @@ function registerIntegrationsCustom(integrations) {
|
|
|
24404
24866
|
__name(registerIntegrationsCustom, "registerIntegrationsCustom");
|
|
24405
24867
|
|
|
24406
24868
|
// src/commands/integrations/list.ts
|
|
24407
|
-
var
|
|
24869
|
+
var TABLE_COLUMNS26 = [
|
|
24408
24870
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
24409
24871
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
24410
24872
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
@@ -24446,7 +24908,7 @@ function registerIntegrationsList(integrations) {
|
|
|
24446
24908
|
console.log("No integrations found.");
|
|
24447
24909
|
return;
|
|
24448
24910
|
}
|
|
24449
|
-
console.log(renderTable(
|
|
24911
|
+
console.log(renderTable(TABLE_COLUMNS26, rows));
|
|
24450
24912
|
console.log(`Showing ${rows.length}`);
|
|
24451
24913
|
}, "listAction"));
|
|
24452
24914
|
}
|
|
@@ -25289,7 +25751,7 @@ function parseHeaders(raw) {
|
|
|
25289
25751
|
return result;
|
|
25290
25752
|
}
|
|
25291
25753
|
__name(parseHeaders, "parseHeaders");
|
|
25292
|
-
var
|
|
25754
|
+
var TABLE_COLUMNS27 = [
|
|
25293
25755
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
25294
25756
|
{ header: "DESCRIPTION", cell: /* @__PURE__ */ __name((row) => row.description, "cell") }
|
|
25295
25757
|
];
|
|
@@ -25347,7 +25809,7 @@ function registerOauthMcpProbe(mcp) {
|
|
|
25347
25809
|
console.log("No tools advertised by this MCP server.");
|
|
25348
25810
|
return;
|
|
25349
25811
|
}
|
|
25350
|
-
console.log(renderTable(
|
|
25812
|
+
console.log(renderTable(TABLE_COLUMNS27, rows));
|
|
25351
25813
|
console.log(`Showing ${rows.length}`);
|
|
25352
25814
|
}, "probeMcpAction"));
|
|
25353
25815
|
}
|
|
@@ -25429,7 +25891,7 @@ function registerOauth(program) {
|
|
|
25429
25891
|
__name(registerOauth, "registerOauth");
|
|
25430
25892
|
|
|
25431
25893
|
// src/commands/plugins/list.ts
|
|
25432
|
-
var
|
|
25894
|
+
var TABLE_COLUMNS28 = [
|
|
25433
25895
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
25434
25896
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
25435
25897
|
{
|
|
@@ -25463,7 +25925,7 @@ function registerPluginsList(plugins) {
|
|
|
25463
25925
|
console.log("No plugins found.");
|
|
25464
25926
|
return;
|
|
25465
25927
|
}
|
|
25466
|
-
console.log(renderTable(
|
|
25928
|
+
console.log(renderTable(TABLE_COLUMNS28, parsed.data.plugins));
|
|
25467
25929
|
console.log(`Showing ${parsed.data.plugins.length}`);
|
|
25468
25930
|
}, "listAction"));
|
|
25469
25931
|
}
|
|
@@ -25738,7 +26200,7 @@ function registerPulseAnswer(pulse) {
|
|
|
25738
26200
|
__name(registerPulseAnswer, "registerPulseAnswer");
|
|
25739
26201
|
|
|
25740
26202
|
// src/commands/pulse/connections.ts
|
|
25741
|
-
var
|
|
26203
|
+
var TABLE_COLUMNS29 = [
|
|
25742
26204
|
{
|
|
25743
26205
|
header: "CONNECTION ID",
|
|
25744
26206
|
cell: /* @__PURE__ */ __name((row) => row.connection_id, "cell")
|
|
@@ -25770,7 +26232,7 @@ function registerList4(connections) {
|
|
|
25770
26232
|
console.log("No connections attached.");
|
|
25771
26233
|
return;
|
|
25772
26234
|
}
|
|
25773
|
-
console.log(renderTable(
|
|
26235
|
+
console.log(renderTable(TABLE_COLUMNS29, parsed.data.connections));
|
|
25774
26236
|
}, "listAction"));
|
|
25775
26237
|
}
|
|
25776
26238
|
__name(registerList4, "registerList");
|
|
@@ -26006,10 +26468,10 @@ function registerPulseHtml(pulse) {
|
|
|
26006
26468
|
__name(registerPulseHtml, "registerPulseHtml");
|
|
26007
26469
|
|
|
26008
26470
|
// src/commands/pulse/list.ts
|
|
26009
|
-
var
|
|
26010
|
-
var
|
|
26011
|
-
var
|
|
26012
|
-
var
|
|
26471
|
+
var DEFAULT_LIMIT11 = 20;
|
|
26472
|
+
var MIN_LIMIT11 = 1;
|
|
26473
|
+
var MAX_LIMIT11 = 100;
|
|
26474
|
+
var TABLE_COLUMNS30 = [
|
|
26013
26475
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
26014
26476
|
{
|
|
26015
26477
|
header: "TITLE",
|
|
@@ -26036,11 +26498,11 @@ function registerPulseList(pulse) {
|
|
|
26036
26498
|
pulse.command("list", { isDefault: true }).description("List your Pulse dashboards").option(
|
|
26037
26499
|
"--team",
|
|
26038
26500
|
"list dashboards a teammate published to your whole team instead of your own"
|
|
26039
|
-
).option("--shared", "deprecated: always returns no dashboards").option("--limit <n>", `page size (${
|
|
26501
|
+
).option("--shared", "deprecated: always returns no dashboards").option("--limit <n>", `page size (${MIN_LIMIT11}-${MAX_LIMIT11})`).option("--offset <n>", "number of dashboards to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
26040
26502
|
const limit = parseLimit(options.limit, {
|
|
26041
|
-
defaultValue:
|
|
26042
|
-
min:
|
|
26043
|
-
max:
|
|
26503
|
+
defaultValue: DEFAULT_LIMIT11,
|
|
26504
|
+
min: MIN_LIMIT11,
|
|
26505
|
+
max: MAX_LIMIT11
|
|
26044
26506
|
});
|
|
26045
26507
|
const offset = parseOffset(options.offset);
|
|
26046
26508
|
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
@@ -26071,7 +26533,7 @@ function registerPulseList(pulse) {
|
|
|
26071
26533
|
console.log("No Pulse dashboards found.");
|
|
26072
26534
|
return;
|
|
26073
26535
|
}
|
|
26074
|
-
console.log(renderTable(
|
|
26536
|
+
console.log(renderTable(TABLE_COLUMNS30, response.artifacts));
|
|
26075
26537
|
console.log(
|
|
26076
26538
|
`Showing ${response.artifacts.length} of ${response.total} \xB7 offset ${response.offset}`
|
|
26077
26539
|
);
|
|
@@ -26080,10 +26542,10 @@ function registerPulseList(pulse) {
|
|
|
26080
26542
|
__name(registerPulseList, "registerPulseList");
|
|
26081
26543
|
|
|
26082
26544
|
// src/commands/pulse/messages.ts
|
|
26083
|
-
var
|
|
26084
|
-
var
|
|
26085
|
-
var
|
|
26086
|
-
var
|
|
26545
|
+
var DEFAULT_LIMIT12 = 100;
|
|
26546
|
+
var MIN_LIMIT12 = 1;
|
|
26547
|
+
var MAX_LIMIT12 = 500;
|
|
26548
|
+
var TABLE_COLUMNS31 = [
|
|
26087
26549
|
{ header: "ROLE", cell: /* @__PURE__ */ __name((row) => row.role, "cell") },
|
|
26088
26550
|
{
|
|
26089
26551
|
header: "CONTENT",
|
|
@@ -26093,18 +26555,22 @@ var TABLE_COLUMNS30 = [
|
|
|
26093
26555
|
{ header: "CREATED", cell: /* @__PURE__ */ __name((row) => row.created_at, "cell") }
|
|
26094
26556
|
];
|
|
26095
26557
|
function registerPulseMessages(pulse) {
|
|
26096
|
-
pulse.command("messages <id>").description("List a Pulse dashboard's chat transcript (creator only)").option("--limit <n>", `page size (${
|
|
26558
|
+
pulse.command("messages <id>").description("List a Pulse dashboard's chat transcript (creator only)").option("--limit <n>", `page size (${MIN_LIMIT12}-${MAX_LIMIT12})`).option(
|
|
26559
|
+
"--before <messageId>",
|
|
26560
|
+
"return the page of messages older than this message id (omit for the most recent page)"
|
|
26561
|
+
).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function messagesAction(id, options) {
|
|
26097
26562
|
const pulseId = trimRequired(id, "<id>");
|
|
26098
26563
|
const limit = parseLimit(options.limit, {
|
|
26099
|
-
defaultValue:
|
|
26100
|
-
min:
|
|
26101
|
-
max:
|
|
26564
|
+
defaultValue: DEFAULT_LIMIT12,
|
|
26565
|
+
min: MIN_LIMIT12,
|
|
26566
|
+
max: MAX_LIMIT12
|
|
26102
26567
|
});
|
|
26103
|
-
const offset = parseOffset(options.offset);
|
|
26104
26568
|
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
26105
26569
|
const searchParams = new URLSearchParams();
|
|
26106
26570
|
searchParams.append("limit", String(limit));
|
|
26107
|
-
|
|
26571
|
+
if (options.before) {
|
|
26572
|
+
searchParams.append("before", trimRequired(options.before, "--before"));
|
|
26573
|
+
}
|
|
26108
26574
|
const raw = await httpRequest({
|
|
26109
26575
|
method: "GET",
|
|
26110
26576
|
path: `/v2/artifacts/${encodeURIComponent(pulseId)}/messages`,
|
|
@@ -26122,13 +26588,18 @@ function registerPulseMessages(pulse) {
|
|
|
26122
26588
|
`Unexpected response from the API: ${parsed.error.message}`
|
|
26123
26589
|
);
|
|
26124
26590
|
}
|
|
26125
|
-
const { data, total } = parsed.data;
|
|
26591
|
+
const { data, total, has_more: hasMore } = parsed.data;
|
|
26126
26592
|
if (data.length === 0) {
|
|
26127
26593
|
console.log("No messages yet.");
|
|
26128
26594
|
return;
|
|
26129
26595
|
}
|
|
26130
|
-
console.log(renderTable(
|
|
26131
|
-
console.log(`Showing ${data.length} of ${total}
|
|
26596
|
+
console.log(renderTable(TABLE_COLUMNS31, data));
|
|
26597
|
+
console.log(`Showing ${data.length} of ${total}`);
|
|
26598
|
+
if (hasMore) {
|
|
26599
|
+
console.log(
|
|
26600
|
+
`Older messages available. Rerun with --before ${data[0]?.id} to load them.`
|
|
26601
|
+
);
|
|
26602
|
+
}
|
|
26132
26603
|
console.log(
|
|
26133
26604
|
"Run with --json to see full message payloads, including the tool call id `duvo pulse answer` needs."
|
|
26134
26605
|
);
|
|
@@ -26520,7 +26991,7 @@ function registerPulse(program) {
|
|
|
26520
26991
|
__name(registerPulse, "registerPulse");
|
|
26521
26992
|
|
|
26522
26993
|
// src/commands/queue-labels/index.ts
|
|
26523
|
-
var
|
|
26994
|
+
var TABLE_COLUMNS32 = [
|
|
26524
26995
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
26525
26996
|
{ header: "KEY", cell: /* @__PURE__ */ __name((row) => row.key, "cell") },
|
|
26526
26997
|
{ header: "VALUE", cell: /* @__PURE__ */ __name((row) => row.value, "cell") },
|
|
@@ -26574,7 +27045,7 @@ function registerList5(labels) {
|
|
|
26574
27045
|
console.log("No labels defined on this queue.");
|
|
26575
27046
|
return;
|
|
26576
27047
|
}
|
|
26577
|
-
console.log(renderTable(
|
|
27048
|
+
console.log(renderTable(TABLE_COLUMNS32, parsed.data.labels));
|
|
26578
27049
|
console.log(`Showing ${parsed.data.labels.length}`);
|
|
26579
27050
|
}, "listAction"));
|
|
26580
27051
|
}
|
|
@@ -27325,10 +27796,10 @@ function registerQueuesLinkAgent(queues) {
|
|
|
27325
27796
|
__name(registerQueuesLinkAgent, "registerQueuesLinkAgent");
|
|
27326
27797
|
|
|
27327
27798
|
// src/commands/queues/list.ts
|
|
27328
|
-
var
|
|
27329
|
-
var
|
|
27330
|
-
var
|
|
27331
|
-
var
|
|
27799
|
+
var DEFAULT_LIMIT13 = 20;
|
|
27800
|
+
var MIN_LIMIT13 = 1;
|
|
27801
|
+
var MAX_LIMIT13 = 100;
|
|
27802
|
+
var TABLE_COLUMNS33 = [
|
|
27332
27803
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
27333
27804
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
27334
27805
|
{
|
|
@@ -27339,11 +27810,11 @@ var TABLE_COLUMNS32 = [
|
|
|
27339
27810
|
{ header: "CREATED", cell: /* @__PURE__ */ __name((row) => row.created_at ?? "", "cell") }
|
|
27340
27811
|
];
|
|
27341
27812
|
function registerQueuesList(queues) {
|
|
27342
|
-
queues.command("list", { isDefault: true }).description("List queues for your team").option("--limit <n>", `page size (${
|
|
27813
|
+
queues.command("list", { isDefault: true }).description("List queues for your team").option("--limit <n>", `page size (${MIN_LIMIT13}-${MAX_LIMIT13})`).option("--offset <n>", "number of queues to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
27343
27814
|
const limit = parseLimit(options.limit, {
|
|
27344
|
-
defaultValue:
|
|
27345
|
-
min:
|
|
27346
|
-
max:
|
|
27815
|
+
defaultValue: DEFAULT_LIMIT13,
|
|
27816
|
+
min: MIN_LIMIT13,
|
|
27817
|
+
max: MAX_LIMIT13
|
|
27347
27818
|
});
|
|
27348
27819
|
const offset = parseOffset(options.offset);
|
|
27349
27820
|
const config = await requireAuthenticatedConfig(this);
|
|
@@ -27376,7 +27847,7 @@ function registerQueuesList(queues) {
|
|
|
27376
27847
|
console.log("No queues found.");
|
|
27377
27848
|
return;
|
|
27378
27849
|
}
|
|
27379
|
-
console.log(renderTable(
|
|
27850
|
+
console.log(renderTable(TABLE_COLUMNS33, response.queues));
|
|
27380
27851
|
const resolvedOffset = response.offset ?? offset;
|
|
27381
27852
|
const total = response.total ?? null;
|
|
27382
27853
|
const summary = total === null ? `Showing ${response.queues.length} \xB7 offset ${resolvedOffset}` : `Showing ${response.queues.length} of ${total} \xB7 offset ${resolvedOffset}`;
|
|
@@ -27634,7 +28105,7 @@ function registerRevisionLoginsDetach(revisionLogins) {
|
|
|
27634
28105
|
__name(registerRevisionLoginsDetach, "registerRevisionLoginsDetach");
|
|
27635
28106
|
|
|
27636
28107
|
// src/commands/revision-logins/list.ts
|
|
27637
|
-
var
|
|
28108
|
+
var TABLE_COLUMNS34 = [
|
|
27638
28109
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
27639
28110
|
{ header: "DOMAIN", cell: /* @__PURE__ */ __name((row) => row.domain, "cell") },
|
|
27640
28111
|
{
|
|
@@ -27670,7 +28141,7 @@ function registerRevisionLoginsList(revisionLogins) {
|
|
|
27670
28141
|
console.log("No logins attached to this revision.");
|
|
27671
28142
|
return;
|
|
27672
28143
|
}
|
|
27673
|
-
console.log(renderTable(
|
|
28144
|
+
console.log(renderTable(TABLE_COLUMNS34, rows));
|
|
27674
28145
|
console.log(`Showing ${rows.length}`);
|
|
27675
28146
|
}, "listAction"));
|
|
27676
28147
|
}
|
|
@@ -27743,7 +28214,7 @@ function registerRevisionSecretsDetach(revisionSecrets) {
|
|
|
27743
28214
|
__name(registerRevisionSecretsDetach, "registerRevisionSecretsDetach");
|
|
27744
28215
|
|
|
27745
28216
|
// src/commands/revision-secrets/list.ts
|
|
27746
|
-
var
|
|
28217
|
+
var TABLE_COLUMNS35 = [
|
|
27747
28218
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
27748
28219
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
27749
28220
|
{
|
|
@@ -27781,7 +28252,7 @@ function registerRevisionSecretsList(revisionSecrets) {
|
|
|
27781
28252
|
console.log("No secrets attached to this revision.");
|
|
27782
28253
|
return;
|
|
27783
28254
|
}
|
|
27784
|
-
console.log(renderTable(
|
|
28255
|
+
console.log(renderTable(TABLE_COLUMNS35, rows));
|
|
27785
28256
|
console.log(`Showing ${rows.length}`);
|
|
27786
28257
|
}, "listAction"));
|
|
27787
28258
|
}
|
|
@@ -27797,91 +28268,91 @@ function registerRevisionSecrets(program) {
|
|
|
27797
28268
|
__name(registerRevisionSecrets, "registerRevisionSecrets");
|
|
27798
28269
|
|
|
27799
28270
|
// src/api/run-schemas.ts
|
|
27800
|
-
import { z as
|
|
27801
|
-
var publicRunSchema =
|
|
27802
|
-
id:
|
|
27803
|
-
agent_id:
|
|
27804
|
-
build_id:
|
|
27805
|
-
status:
|
|
27806
|
-
source:
|
|
27807
|
-
sandbox_id:
|
|
27808
|
-
started_at:
|
|
27809
|
-
completed_at:
|
|
27810
|
-
created_at:
|
|
27811
|
-
updated_at:
|
|
27812
|
-
human_in_the_loop_enabled:
|
|
27813
|
-
});
|
|
27814
|
-
var startRunResponseSchema =
|
|
28271
|
+
import { z as z106 } from "zod";
|
|
28272
|
+
var publicRunSchema = z106.object({
|
|
28273
|
+
id: z106.string(),
|
|
28274
|
+
agent_id: z106.string(),
|
|
28275
|
+
build_id: z106.string(),
|
|
28276
|
+
status: z106.string(),
|
|
28277
|
+
source: z106.string().nullish(),
|
|
28278
|
+
sandbox_id: z106.string().nullish(),
|
|
28279
|
+
started_at: z106.string().nullish(),
|
|
28280
|
+
completed_at: z106.string().nullish(),
|
|
28281
|
+
created_at: z106.string(),
|
|
28282
|
+
updated_at: z106.string().nullish(),
|
|
28283
|
+
human_in_the_loop_enabled: z106.boolean().nullish()
|
|
28284
|
+
});
|
|
28285
|
+
var startRunResponseSchema = z106.object({
|
|
27815
28286
|
run: publicRunSchema
|
|
27816
28287
|
});
|
|
27817
|
-
var questionOptionSchema =
|
|
27818
|
-
label:
|
|
27819
|
-
description:
|
|
27820
|
-
});
|
|
27821
|
-
var questionSchema =
|
|
27822
|
-
question:
|
|
27823
|
-
header:
|
|
27824
|
-
options:
|
|
27825
|
-
multi_select:
|
|
27826
|
-
});
|
|
27827
|
-
var pendingHumanRequestSchema =
|
|
27828
|
-
id:
|
|
27829
|
-
title:
|
|
27830
|
-
description:
|
|
27831
|
-
created_at:
|
|
27832
|
-
type:
|
|
27833
|
-
questions:
|
|
27834
|
-
});
|
|
27835
|
-
var getRunResponseSchema =
|
|
28288
|
+
var questionOptionSchema = z106.object({
|
|
28289
|
+
label: z106.string(),
|
|
28290
|
+
description: z106.string().nullish()
|
|
28291
|
+
});
|
|
28292
|
+
var questionSchema = z106.object({
|
|
28293
|
+
question: z106.string(),
|
|
28294
|
+
header: z106.string().nullish(),
|
|
28295
|
+
options: z106.array(questionOptionSchema).nullish(),
|
|
28296
|
+
multi_select: z106.boolean().nullish()
|
|
28297
|
+
});
|
|
28298
|
+
var pendingHumanRequestSchema = z106.object({
|
|
28299
|
+
id: z106.string(),
|
|
28300
|
+
title: z106.string(),
|
|
28301
|
+
description: z106.string().nullish(),
|
|
28302
|
+
created_at: z106.string(),
|
|
28303
|
+
type: z106.string(),
|
|
28304
|
+
questions: z106.array(questionSchema).nullish()
|
|
28305
|
+
});
|
|
28306
|
+
var getRunResponseSchema = z106.object({
|
|
27836
28307
|
run: publicRunSchema.nullable(),
|
|
27837
28308
|
pending_human_request: pendingHumanRequestSchema.nullish()
|
|
27838
28309
|
});
|
|
27839
|
-
var stopRunResponseSchema =
|
|
27840
|
-
success:
|
|
27841
|
-
message:
|
|
27842
|
-
});
|
|
27843
|
-
var runMessageSchema =
|
|
27844
|
-
id:
|
|
27845
|
-
type:
|
|
27846
|
-
role:
|
|
27847
|
-
timestamp:
|
|
27848
|
-
text_content:
|
|
27849
|
-
tool_call:
|
|
27850
|
-
id:
|
|
27851
|
-
name:
|
|
27852
|
-
arguments:
|
|
28310
|
+
var stopRunResponseSchema = z106.object({
|
|
28311
|
+
success: z106.boolean(),
|
|
28312
|
+
message: z106.string().nullish()
|
|
28313
|
+
});
|
|
28314
|
+
var runMessageSchema = z106.object({
|
|
28315
|
+
id: z106.string(),
|
|
28316
|
+
type: z106.string(),
|
|
28317
|
+
role: z106.string(),
|
|
28318
|
+
timestamp: z106.string(),
|
|
28319
|
+
text_content: z106.string().nullish(),
|
|
28320
|
+
tool_call: z106.object({
|
|
28321
|
+
id: z106.string(),
|
|
28322
|
+
name: z106.string(),
|
|
28323
|
+
arguments: z106.record(z106.string(), z106.unknown()).nullish()
|
|
27853
28324
|
}).nullish(),
|
|
27854
|
-
tool_result:
|
|
27855
|
-
tool_call_id:
|
|
27856
|
-
result:
|
|
27857
|
-
error:
|
|
28325
|
+
tool_result: z106.object({
|
|
28326
|
+
tool_call_id: z106.string(),
|
|
28327
|
+
result: z106.unknown().nullish(),
|
|
28328
|
+
error: z106.string().nullish()
|
|
27858
28329
|
}).nullish()
|
|
27859
28330
|
});
|
|
27860
|
-
var listRunMessagesResponseSchema =
|
|
27861
|
-
messages:
|
|
27862
|
-
total:
|
|
27863
|
-
limit:
|
|
27864
|
-
offset:
|
|
28331
|
+
var listRunMessagesResponseSchema = z106.object({
|
|
28332
|
+
messages: z106.array(runMessageSchema),
|
|
28333
|
+
total: z106.number().nullish(),
|
|
28334
|
+
limit: z106.number().nullish(),
|
|
28335
|
+
offset: z106.number().nullish()
|
|
27865
28336
|
});
|
|
27866
|
-
var postedMessageSchema =
|
|
27867
|
-
id:
|
|
27868
|
-
type:
|
|
27869
|
-
role:
|
|
27870
|
-
timestamp:
|
|
27871
|
-
text_content:
|
|
28337
|
+
var postedMessageSchema = z106.object({
|
|
28338
|
+
id: z106.string(),
|
|
28339
|
+
type: z106.string(),
|
|
28340
|
+
role: z106.string(),
|
|
28341
|
+
timestamp: z106.string(),
|
|
28342
|
+
text_content: z106.string()
|
|
27872
28343
|
});
|
|
27873
|
-
var postRunMessageResponseSchema =
|
|
28344
|
+
var postRunMessageResponseSchema = z106.object({
|
|
27874
28345
|
message: postedMessageSchema
|
|
27875
28346
|
});
|
|
27876
|
-
var respondHumanRequestResponseSchema =
|
|
27877
|
-
human_request:
|
|
27878
|
-
id:
|
|
27879
|
-
run_id:
|
|
27880
|
-
title:
|
|
27881
|
-
description:
|
|
27882
|
-
response:
|
|
27883
|
-
responded_at:
|
|
27884
|
-
created_at:
|
|
28347
|
+
var respondHumanRequestResponseSchema = z106.object({
|
|
28348
|
+
human_request: z106.object({
|
|
28349
|
+
id: z106.string(),
|
|
28350
|
+
run_id: z106.string(),
|
|
28351
|
+
title: z106.string(),
|
|
28352
|
+
description: z106.string().nullish(),
|
|
28353
|
+
response: z106.string().nullish(),
|
|
28354
|
+
responded_at: z106.string().nullish(),
|
|
28355
|
+
created_at: z106.string()
|
|
27885
28356
|
})
|
|
27886
28357
|
});
|
|
27887
28358
|
|
|
@@ -28026,13 +28497,13 @@ function registerRunsGet(runs) {
|
|
|
28026
28497
|
__name(registerRunsGet, "registerRunsGet");
|
|
28027
28498
|
|
|
28028
28499
|
// src/commands/runs/list.ts
|
|
28029
|
-
var
|
|
28030
|
-
var
|
|
28031
|
-
var
|
|
28500
|
+
var DEFAULT_LIMIT14 = 20;
|
|
28501
|
+
var MIN_LIMIT14 = 1;
|
|
28502
|
+
var MAX_LIMIT14 = 100;
|
|
28032
28503
|
var SORT_ORDERS2 = ["asc", "desc"];
|
|
28033
28504
|
var HAS_ISSUES_VALUES = ["true", "false"];
|
|
28034
28505
|
var TITLE_PREVIEW_WIDTH = 50;
|
|
28035
|
-
var
|
|
28506
|
+
var TABLE_COLUMNS36 = [
|
|
28036
28507
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
28037
28508
|
{ header: "RUN#", cell: /* @__PURE__ */ __name((row) => String(row.run_number), "cell") },
|
|
28038
28509
|
{ header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
|
|
@@ -28056,7 +28527,7 @@ function isHasIssuesValue(value) {
|
|
|
28056
28527
|
}
|
|
28057
28528
|
__name(isHasIssuesValue, "isHasIssuesValue");
|
|
28058
28529
|
function registerRunsList(runs) {
|
|
28059
|
-
runs.command("list").description("List agent runs for your team").option("--limit <n>", `page size (${
|
|
28530
|
+
runs.command("list").description("List agent runs for your team").option("--limit <n>", `page size (${MIN_LIMIT14}-${MAX_LIMIT14})`).option("--offset <n>", "number of runs to skip").option("--sort-order <order>", `sort direction (${SORT_ORDERS2.join("|")})`).option(
|
|
28060
28531
|
"--status <status>",
|
|
28061
28532
|
"filter by status (e.g. running, completed, failed, waiting, interrupted, stopped, needs_attention)"
|
|
28062
28533
|
).option("--agent <id>", "filter by agent ID").option("--user <id>", "filter by user ID").option("--case-queue <id>", "filter by queue ID").option("--source <source>", "filter by source").option("--search <query>", "free-text search across runs").option(
|
|
@@ -28064,9 +28535,9 @@ function registerRunsList(runs) {
|
|
|
28064
28535
|
`show only runs with (or without) issues (${HAS_ISSUES_VALUES.join("|")})`
|
|
28065
28536
|
).option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
28066
28537
|
const limit = parseLimit(options.limit, {
|
|
28067
|
-
defaultValue:
|
|
28068
|
-
min:
|
|
28069
|
-
max:
|
|
28538
|
+
defaultValue: DEFAULT_LIMIT14,
|
|
28539
|
+
min: MIN_LIMIT14,
|
|
28540
|
+
max: MAX_LIMIT14
|
|
28070
28541
|
});
|
|
28071
28542
|
const offset = parseOffset(options.offset);
|
|
28072
28543
|
if (options.sortOrder !== void 0 && !isSortOrder(options.sortOrder)) {
|
|
@@ -28133,7 +28604,7 @@ function registerRunsList(runs) {
|
|
|
28133
28604
|
console.log("No runs found.");
|
|
28134
28605
|
return;
|
|
28135
28606
|
}
|
|
28136
|
-
console.log(renderTable(
|
|
28607
|
+
console.log(renderTable(TABLE_COLUMNS36, response.data));
|
|
28137
28608
|
console.log(
|
|
28138
28609
|
`Showing ${response.data.length} of ${response.total} \xB7 offset ${offset}`
|
|
28139
28610
|
);
|
|
@@ -28239,11 +28710,11 @@ function getContent(msg) {
|
|
|
28239
28710
|
__name(getContent, "getContent");
|
|
28240
28711
|
|
|
28241
28712
|
// src/commands/runs/messages.ts
|
|
28242
|
-
var
|
|
28243
|
-
var
|
|
28244
|
-
var
|
|
28713
|
+
var DEFAULT_LIMIT15 = 20;
|
|
28714
|
+
var MIN_LIMIT15 = 1;
|
|
28715
|
+
var MAX_LIMIT15 = 50;
|
|
28245
28716
|
var TEXT_PREVIEW_WIDTH2 = 60;
|
|
28246
|
-
var
|
|
28717
|
+
var TABLE_COLUMNS37 = [
|
|
28247
28718
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
28248
28719
|
{ header: "ROLE", cell: /* @__PURE__ */ __name((row) => row.role, "cell") },
|
|
28249
28720
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
@@ -28268,7 +28739,7 @@ function previewCell(row) {
|
|
|
28268
28739
|
}
|
|
28269
28740
|
__name(previewCell, "previewCell");
|
|
28270
28741
|
function registerRunsMessages(runs) {
|
|
28271
|
-
runs.command("messages <id>").description("List messages for an agent run").option("--limit <n>", `page size (${
|
|
28742
|
+
runs.command("messages <id>").description("List messages for an agent run").option("--limit <n>", `page size (${MIN_LIMIT15}-${MAX_LIMIT15})`).option("--offset <n>", "number of messages to skip").option("--follow", "poll for new messages until the job completes").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function messagesAction(id, options) {
|
|
28272
28743
|
const offset = parseOffset(options.offset);
|
|
28273
28744
|
const { apiKey, apiBaseUrl } = await requireAuthenticatedConfig(this);
|
|
28274
28745
|
if (options.follow) {
|
|
@@ -28279,9 +28750,9 @@ function registerRunsMessages(runs) {
|
|
|
28279
28750
|
return;
|
|
28280
28751
|
}
|
|
28281
28752
|
const limit = parseLimit(options.limit, {
|
|
28282
|
-
defaultValue:
|
|
28283
|
-
min:
|
|
28284
|
-
max:
|
|
28753
|
+
defaultValue: DEFAULT_LIMIT15,
|
|
28754
|
+
min: MIN_LIMIT15,
|
|
28755
|
+
max: MAX_LIMIT15
|
|
28285
28756
|
});
|
|
28286
28757
|
const searchParams = new URLSearchParams();
|
|
28287
28758
|
searchParams.append("limit", String(limit));
|
|
@@ -28308,7 +28779,7 @@ function registerRunsMessages(runs) {
|
|
|
28308
28779
|
console.log("No messages found.");
|
|
28309
28780
|
return;
|
|
28310
28781
|
}
|
|
28311
|
-
console.log(renderTable(
|
|
28782
|
+
console.log(renderTable(TABLE_COLUMNS37, response.messages));
|
|
28312
28783
|
const resolvedOffset = response.offset ?? offset;
|
|
28313
28784
|
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}`;
|
|
28314
28785
|
console.log(summary);
|
|
@@ -28576,28 +29047,28 @@ function registerRuns(program) {
|
|
|
28576
29047
|
__name(registerRuns, "registerRuns");
|
|
28577
29048
|
|
|
28578
29049
|
// src/api/sandbox-schemas.ts
|
|
28579
|
-
import { z as
|
|
28580
|
-
var createSandboxResponseSchema =
|
|
28581
|
-
sandbox_id:
|
|
28582
|
-
expires_at:
|
|
29050
|
+
import { z as z107 } from "zod";
|
|
29051
|
+
var createSandboxResponseSchema = z107.object({
|
|
29052
|
+
sandbox_id: z107.string(),
|
|
29053
|
+
expires_at: z107.string()
|
|
28583
29054
|
});
|
|
28584
|
-
var createSandboxUploadUrlResponseSchema =
|
|
28585
|
-
upload_url:
|
|
28586
|
-
path:
|
|
28587
|
-
expires_in_seconds:
|
|
29055
|
+
var createSandboxUploadUrlResponseSchema = z107.object({
|
|
29056
|
+
upload_url: z107.string(),
|
|
29057
|
+
path: z107.string(),
|
|
29058
|
+
expires_in_seconds: z107.number()
|
|
28588
29059
|
});
|
|
28589
|
-
var sandboxFileSchema =
|
|
28590
|
-
name:
|
|
28591
|
-
path:
|
|
28592
|
-
type:
|
|
28593
|
-
size_bytes:
|
|
29060
|
+
var sandboxFileSchema = z107.object({
|
|
29061
|
+
name: z107.string(),
|
|
29062
|
+
path: z107.string(),
|
|
29063
|
+
type: z107.enum(["file", "dir"]),
|
|
29064
|
+
size_bytes: z107.number()
|
|
28594
29065
|
});
|
|
28595
|
-
var listSandboxFilesResponseSchema =
|
|
28596
|
-
files:
|
|
29066
|
+
var listSandboxFilesResponseSchema = z107.object({
|
|
29067
|
+
files: z107.array(sandboxFileSchema)
|
|
28597
29068
|
});
|
|
28598
|
-
var uploadSandboxFileResponseSchema =
|
|
28599
|
-
path:
|
|
28600
|
-
size_bytes:
|
|
29069
|
+
var uploadSandboxFileResponseSchema = z107.object({
|
|
29070
|
+
path: z107.string(),
|
|
29071
|
+
size_bytes: z107.number()
|
|
28601
29072
|
});
|
|
28602
29073
|
var DEFAULT_SANDBOX_FILES_PATH = "/workspace";
|
|
28603
29074
|
|
|
@@ -28634,7 +29105,7 @@ function registerSandboxesCreate(sandboxes) {
|
|
|
28634
29105
|
__name(registerSandboxesCreate, "registerSandboxesCreate");
|
|
28635
29106
|
|
|
28636
29107
|
// src/commands/sandboxes/files.ts
|
|
28637
|
-
var
|
|
29108
|
+
var TABLE_COLUMNS38 = [
|
|
28638
29109
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
28639
29110
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
28640
29111
|
{ header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
|
|
@@ -28672,7 +29143,7 @@ function registerSandboxesFiles(sandboxes) {
|
|
|
28672
29143
|
console.log("No files found.");
|
|
28673
29144
|
return;
|
|
28674
29145
|
}
|
|
28675
|
-
console.log(renderTable(
|
|
29146
|
+
console.log(renderTable(TABLE_COLUMNS38, files));
|
|
28676
29147
|
console.log(`Showing ${files.length}`);
|
|
28677
29148
|
}, "filesAction"));
|
|
28678
29149
|
}
|
|
@@ -29017,7 +29488,7 @@ function registerSecretsGet(secrets) {
|
|
|
29017
29488
|
__name(registerSecretsGet, "registerSecretsGet");
|
|
29018
29489
|
|
|
29019
29490
|
// src/commands/secrets/list.ts
|
|
29020
|
-
var
|
|
29491
|
+
var TABLE_COLUMNS39 = [
|
|
29021
29492
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
29022
29493
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
29023
29494
|
{
|
|
@@ -29061,7 +29532,7 @@ function registerSecretsList(secrets) {
|
|
|
29061
29532
|
console.log("No secrets found.");
|
|
29062
29533
|
return;
|
|
29063
29534
|
}
|
|
29064
|
-
console.log(renderTable(
|
|
29535
|
+
console.log(renderTable(TABLE_COLUMNS39, rows));
|
|
29065
29536
|
console.log(`Showing ${rows.length}`);
|
|
29066
29537
|
}, "listAction"));
|
|
29067
29538
|
}
|
|
@@ -29172,7 +29643,7 @@ function registerSecrets(program) {
|
|
|
29172
29643
|
__name(registerSecrets, "registerSecrets");
|
|
29173
29644
|
|
|
29174
29645
|
// src/commands/skills/assignments.ts
|
|
29175
|
-
var
|
|
29646
|
+
var TABLE_COLUMNS40 = [
|
|
29176
29647
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
29177
29648
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") }
|
|
29178
29649
|
];
|
|
@@ -29200,7 +29671,7 @@ function registerSkillsAssignments(skills) {
|
|
|
29200
29671
|
console.log("No agents use this skill.");
|
|
29201
29672
|
return;
|
|
29202
29673
|
}
|
|
29203
|
-
console.log(renderTable(
|
|
29674
|
+
console.log(renderTable(TABLE_COLUMNS40, assignments));
|
|
29204
29675
|
console.log(`Showing ${assignments.length} of ${total}`);
|
|
29205
29676
|
}, "assignmentsAction"));
|
|
29206
29677
|
}
|
|
@@ -29208,13 +29679,13 @@ __name(registerSkillsAssignments, "registerSkillsAssignments");
|
|
|
29208
29679
|
|
|
29209
29680
|
// src/commands/skills/create.ts
|
|
29210
29681
|
import { readFileSync as readFileSync5 } from "node:fs";
|
|
29211
|
-
import { z as
|
|
29212
|
-
var createSkillResponseSchema =
|
|
29213
|
-
skill:
|
|
29214
|
-
id:
|
|
29215
|
-
name:
|
|
29216
|
-
description:
|
|
29217
|
-
team_id:
|
|
29682
|
+
import { z as z108 } from "zod";
|
|
29683
|
+
var createSkillResponseSchema = z108.object({
|
|
29684
|
+
skill: z108.object({
|
|
29685
|
+
id: z108.string(),
|
|
29686
|
+
name: z108.string(),
|
|
29687
|
+
description: z108.string(),
|
|
29688
|
+
team_id: z108.string()
|
|
29218
29689
|
})
|
|
29219
29690
|
});
|
|
29220
29691
|
function registerSkillsCreate(skills) {
|
|
@@ -29482,7 +29953,7 @@ function readContent2(options) {
|
|
|
29482
29953
|
__name(readContent2, "readContent");
|
|
29483
29954
|
|
|
29484
29955
|
// src/commands/skills/files.ts
|
|
29485
|
-
var
|
|
29956
|
+
var TABLE_COLUMNS41 = [
|
|
29486
29957
|
{ header: "PATH", cell: /* @__PURE__ */ __name((row) => row.path, "cell") },
|
|
29487
29958
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name, "cell") },
|
|
29488
29959
|
{
|
|
@@ -29521,7 +29992,7 @@ function registerSkillsFiles(skills) {
|
|
|
29521
29992
|
console.log("No files found.");
|
|
29522
29993
|
return;
|
|
29523
29994
|
}
|
|
29524
|
-
console.log(renderTable(
|
|
29995
|
+
console.log(renderTable(TABLE_COLUMNS41, parsed.data.files));
|
|
29525
29996
|
console.log(`Showing ${parsed.data.files.length}`);
|
|
29526
29997
|
}, "filesAction"));
|
|
29527
29998
|
}
|
|
@@ -29578,13 +30049,13 @@ function readExistingContent(source) {
|
|
|
29578
30049
|
__name(readExistingContent, "readExistingContent");
|
|
29579
30050
|
|
|
29580
30051
|
// src/commands/skills/install.ts
|
|
29581
|
-
import { z as
|
|
29582
|
-
var installSkillResponseSchema =
|
|
29583
|
-
skill:
|
|
29584
|
-
id:
|
|
29585
|
-
name:
|
|
29586
|
-
description:
|
|
29587
|
-
team_id:
|
|
30052
|
+
import { z as z109 } from "zod";
|
|
30053
|
+
var installSkillResponseSchema = z109.object({
|
|
30054
|
+
skill: z109.object({
|
|
30055
|
+
id: z109.string(),
|
|
30056
|
+
name: z109.string(),
|
|
30057
|
+
description: z109.string(),
|
|
30058
|
+
team_id: z109.string()
|
|
29588
30059
|
})
|
|
29589
30060
|
});
|
|
29590
30061
|
function registerSkillsInstall(skills) {
|
|
@@ -29774,13 +30245,13 @@ __name(registerSkillsSystem, "registerSkillsSystem");
|
|
|
29774
30245
|
// src/commands/skills/upload.ts
|
|
29775
30246
|
import { readFile as readFile9, stat as stat2 } from "node:fs/promises";
|
|
29776
30247
|
import { basename as basename3 } from "node:path";
|
|
29777
|
-
import { z as
|
|
29778
|
-
var uploadSkillResponseSchema =
|
|
29779
|
-
skill:
|
|
29780
|
-
id:
|
|
29781
|
-
name:
|
|
29782
|
-
description:
|
|
29783
|
-
team_id:
|
|
30248
|
+
import { z as z110 } from "zod";
|
|
30249
|
+
var uploadSkillResponseSchema = z110.object({
|
|
30250
|
+
skill: z110.object({
|
|
30251
|
+
id: z110.string(),
|
|
30252
|
+
name: z110.string(),
|
|
30253
|
+
description: z110.string(),
|
|
30254
|
+
team_id: z110.string()
|
|
29784
30255
|
})
|
|
29785
30256
|
});
|
|
29786
30257
|
function registerSkillsUpload(skills) {
|
|
@@ -29899,12 +30370,12 @@ function registerSuggestionsConsume(suggestions) {
|
|
|
29899
30370
|
__name(registerSuggestionsConsume, "registerSuggestionsConsume");
|
|
29900
30371
|
|
|
29901
30372
|
// src/commands/suggestions/list.ts
|
|
29902
|
-
var
|
|
29903
|
-
var
|
|
29904
|
-
var
|
|
30373
|
+
var DEFAULT_LIMIT16 = 100;
|
|
30374
|
+
var MIN_LIMIT16 = 1;
|
|
30375
|
+
var MAX_LIMIT16 = 250;
|
|
29905
30376
|
var STATUS_FILTERS = ["pending", "history"];
|
|
29906
30377
|
var TITLE_PREVIEW_WIDTH2 = 50;
|
|
29907
|
-
var
|
|
30378
|
+
var TABLE_COLUMNS42 = [
|
|
29908
30379
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
29909
30380
|
{ header: "TYPE", cell: /* @__PURE__ */ __name((row) => row.type, "cell") },
|
|
29910
30381
|
{ header: "STATUS", cell: /* @__PURE__ */ __name((row) => row.status, "cell") },
|
|
@@ -29925,11 +30396,11 @@ function registerSuggestionsList(suggestions) {
|
|
|
29925
30396
|
).option(
|
|
29926
30397
|
"--status <filter>",
|
|
29927
30398
|
`which inbox to show (${STATUS_FILTERS.join("|")}, default: pending)`
|
|
29928
|
-
).option("--limit <n>", `page size (${
|
|
30399
|
+
).option("--limit <n>", `page size (${MIN_LIMIT16}-${MAX_LIMIT16})`).option("--offset <n>", "number of suggestions to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(agentId, options) {
|
|
29929
30400
|
const limit = parseLimit(options.limit, {
|
|
29930
|
-
defaultValue:
|
|
29931
|
-
min:
|
|
29932
|
-
max:
|
|
30401
|
+
defaultValue: DEFAULT_LIMIT16,
|
|
30402
|
+
min: MIN_LIMIT16,
|
|
30403
|
+
max: MAX_LIMIT16
|
|
29933
30404
|
});
|
|
29934
30405
|
const offset = parseOffset(options.offset);
|
|
29935
30406
|
if (options.status !== void 0 && !isStatusFilter(options.status)) {
|
|
@@ -29967,7 +30438,7 @@ function registerSuggestionsList(suggestions) {
|
|
|
29967
30438
|
console.log(`Pending total: ${pendingCount}`);
|
|
29968
30439
|
return;
|
|
29969
30440
|
}
|
|
29970
|
-
console.log(renderTable(
|
|
30441
|
+
console.log(renderTable(TABLE_COLUMNS42, data));
|
|
29971
30442
|
console.log(
|
|
29972
30443
|
`Showing ${data.length} \xB7 offset ${offset} \xB7 pending total ${pendingCount}`
|
|
29973
30444
|
);
|
|
@@ -30091,10 +30562,10 @@ function registerTeamGet(team) {
|
|
|
30091
30562
|
__name(registerTeamGet, "registerTeamGet");
|
|
30092
30563
|
|
|
30093
30564
|
// src/commands/team/members.ts
|
|
30094
|
-
var
|
|
30095
|
-
var
|
|
30096
|
-
var
|
|
30097
|
-
var
|
|
30565
|
+
var DEFAULT_LIMIT17 = 50;
|
|
30566
|
+
var MIN_LIMIT17 = 1;
|
|
30567
|
+
var MAX_LIMIT17 = 100;
|
|
30568
|
+
var TABLE_COLUMNS43 = [
|
|
30098
30569
|
{ header: "ID", cell: /* @__PURE__ */ __name((row) => row.id, "cell") },
|
|
30099
30570
|
{ header: "NAME", cell: /* @__PURE__ */ __name((row) => row.name ?? "", "cell") },
|
|
30100
30571
|
{ header: "EMAIL", cell: /* @__PURE__ */ __name((row) => row.email, "cell") },
|
|
@@ -30108,11 +30579,11 @@ function registerTeamMembers(team) {
|
|
|
30108
30579
|
team.command("members").description("List members of a team").option(
|
|
30109
30580
|
"--team <id>",
|
|
30110
30581
|
"team ID (defaults to the team scoped to your credentials)"
|
|
30111
|
-
).option("--limit <n>", `page size (${
|
|
30582
|
+
).option("--limit <n>", `page size (${MIN_LIMIT17}-${MAX_LIMIT17})`).option("--offset <n>", "number of members to skip").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function membersAction(options) {
|
|
30112
30583
|
const limit = parseLimit(options.limit, {
|
|
30113
|
-
defaultValue:
|
|
30114
|
-
min:
|
|
30115
|
-
max:
|
|
30584
|
+
defaultValue: DEFAULT_LIMIT17,
|
|
30585
|
+
min: MIN_LIMIT17,
|
|
30586
|
+
max: MAX_LIMIT17
|
|
30116
30587
|
});
|
|
30117
30588
|
const offset = parseOffset(options.offset);
|
|
30118
30589
|
const config = await requireAuthenticatedConfig(this);
|
|
@@ -30145,7 +30616,7 @@ function registerTeamMembers(team) {
|
|
|
30145
30616
|
console.log("No members found.");
|
|
30146
30617
|
return;
|
|
30147
30618
|
}
|
|
30148
|
-
console.log(renderTable(
|
|
30619
|
+
console.log(renderTable(TABLE_COLUMNS43, response.members));
|
|
30149
30620
|
console.log(
|
|
30150
30621
|
`Showing ${response.members.length} of ${response.total} \xB7 offset ${response.offset}`
|
|
30151
30622
|
);
|
|
@@ -30154,9 +30625,9 @@ function registerTeamMembers(team) {
|
|
|
30154
30625
|
__name(registerTeamMembers, "registerTeamMembers");
|
|
30155
30626
|
|
|
30156
30627
|
// src/commands/team/use.ts
|
|
30157
|
-
import { z as
|
|
30628
|
+
import { z as z111 } from "zod";
|
|
30158
30629
|
var TEAM_ID_SHAPE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
30159
|
-
var teamIdSchema =
|
|
30630
|
+
var teamIdSchema = z111.string().regex(TEAM_ID_SHAPE);
|
|
30160
30631
|
function registerTeamUse(team) {
|
|
30161
30632
|
team.command("use <team-id>").description(
|
|
30162
30633
|
"Set the default team for the active OAuth profile (overridable per-command via --team or DUVO_TEAM_ID)"
|
|
@@ -30242,14 +30713,14 @@ function registerTeam(program) {
|
|
|
30242
30713
|
__name(registerTeam, "registerTeam");
|
|
30243
30714
|
|
|
30244
30715
|
// src/commands/teams/list.ts
|
|
30245
|
-
import { z as
|
|
30246
|
-
var teamApiSchema2 =
|
|
30247
|
-
id:
|
|
30248
|
-
name:
|
|
30249
|
-
organization_id:
|
|
30716
|
+
import { z as z112 } from "zod";
|
|
30717
|
+
var teamApiSchema2 = z112.object({
|
|
30718
|
+
id: z112.string(),
|
|
30719
|
+
name: z112.string(),
|
|
30720
|
+
organization_id: z112.string().nullable()
|
|
30250
30721
|
});
|
|
30251
|
-
var listMyTeamsResponseSchema3 =
|
|
30252
|
-
teams:
|
|
30722
|
+
var listMyTeamsResponseSchema3 = z112.object({
|
|
30723
|
+
teams: z112.array(teamApiSchema2)
|
|
30253
30724
|
});
|
|
30254
30725
|
function registerTeamsList(teams) {
|
|
30255
30726
|
teams.command("list", { isDefault: true }).description("List every team you can act on").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function listAction(options) {
|
|
@@ -30292,21 +30763,21 @@ function registerTeamsList(teams) {
|
|
|
30292
30763
|
__name(registerTeamsList, "registerTeamsList");
|
|
30293
30764
|
|
|
30294
30765
|
// src/commands/teams/org-insights.ts
|
|
30295
|
-
import { z as
|
|
30296
|
-
var headlineSchema =
|
|
30297
|
-
total_runs:
|
|
30298
|
-
completed_runs:
|
|
30299
|
-
failed_runs:
|
|
30300
|
-
success_rate:
|
|
30301
|
-
active_agents:
|
|
30302
|
-
active_users:
|
|
30303
|
-
start_date:
|
|
30304
|
-
end_date:
|
|
30305
|
-
truncated:
|
|
30306
|
-
aggregated_teams:
|
|
30307
|
-
total_teams:
|
|
30308
|
-
});
|
|
30309
|
-
var orgInsightsHeadlineResponseSchema =
|
|
30766
|
+
import { z as z113 } from "zod";
|
|
30767
|
+
var headlineSchema = z113.object({
|
|
30768
|
+
total_runs: z113.number(),
|
|
30769
|
+
completed_runs: z113.number(),
|
|
30770
|
+
failed_runs: z113.number(),
|
|
30771
|
+
success_rate: z113.number().nullable(),
|
|
30772
|
+
active_agents: z113.number(),
|
|
30773
|
+
active_users: z113.number(),
|
|
30774
|
+
start_date: z113.string(),
|
|
30775
|
+
end_date: z113.string(),
|
|
30776
|
+
truncated: z113.boolean(),
|
|
30777
|
+
aggregated_teams: z113.number(),
|
|
30778
|
+
total_teams: z113.number()
|
|
30779
|
+
});
|
|
30780
|
+
var orgInsightsHeadlineResponseSchema = z113.object({
|
|
30310
30781
|
headline: headlineSchema
|
|
30311
30782
|
});
|
|
30312
30783
|
function formatRate(rate) {
|
|
@@ -30374,26 +30845,26 @@ function registerTeamsOrgInsights(teams) {
|
|
|
30374
30845
|
__name(registerTeamsOrgInsights, "registerTeamsOrgInsights");
|
|
30375
30846
|
|
|
30376
30847
|
// src/commands/teams/org-metrics.ts
|
|
30377
|
-
import { z as
|
|
30378
|
-
var teamMetricSchema =
|
|
30379
|
-
team_id:
|
|
30380
|
-
team_name:
|
|
30381
|
-
is_deleted:
|
|
30382
|
-
member_count:
|
|
30383
|
-
assignment_count:
|
|
30384
|
-
scheduled_job_count:
|
|
30385
|
-
total_jobs:
|
|
30386
|
-
completed_jobs:
|
|
30387
|
-
failed_jobs:
|
|
30388
|
-
total_runs:
|
|
30389
|
-
});
|
|
30390
|
-
var orgInsightsMetricsResponseSchema =
|
|
30391
|
-
teams:
|
|
30392
|
-
start_date:
|
|
30393
|
-
end_date:
|
|
30394
|
-
truncated:
|
|
30395
|
-
total_teams:
|
|
30396
|
-
org_member_count:
|
|
30848
|
+
import { z as z114 } from "zod";
|
|
30849
|
+
var teamMetricSchema = z114.object({
|
|
30850
|
+
team_id: z114.string(),
|
|
30851
|
+
team_name: z114.string(),
|
|
30852
|
+
is_deleted: z114.boolean(),
|
|
30853
|
+
member_count: z114.number(),
|
|
30854
|
+
assignment_count: z114.number(),
|
|
30855
|
+
scheduled_job_count: z114.number(),
|
|
30856
|
+
total_jobs: z114.number(),
|
|
30857
|
+
completed_jobs: z114.number(),
|
|
30858
|
+
failed_jobs: z114.number(),
|
|
30859
|
+
total_runs: z114.number()
|
|
30860
|
+
});
|
|
30861
|
+
var orgInsightsMetricsResponseSchema = z114.object({
|
|
30862
|
+
teams: z114.array(teamMetricSchema),
|
|
30863
|
+
start_date: z114.string(),
|
|
30864
|
+
end_date: z114.string(),
|
|
30865
|
+
truncated: z114.boolean(),
|
|
30866
|
+
total_teams: z114.number(),
|
|
30867
|
+
org_member_count: z114.number()
|
|
30397
30868
|
});
|
|
30398
30869
|
function registerTeamsOrgMetrics(teams) {
|
|
30399
30870
|
teams.command("org-metrics <org-id>").description("Show per-team run metrics across an organization").option("--start-date <date>", "window start (ISO 8601, default 7d ago)").option("--end-date <date>", "window end (ISO 8601, default now)").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function orgMetricsAction(orgId, options) {
|
|
@@ -30456,20 +30927,20 @@ ${total_teams} teams${suffix} \xB7 ${org_member_count} org members`
|
|
|
30456
30927
|
__name(registerTeamsOrgMetrics, "registerTeamsOrgMetrics");
|
|
30457
30928
|
|
|
30458
30929
|
// src/commands/teams/org-usage.ts
|
|
30459
|
-
import { z as
|
|
30930
|
+
import { z as z115 } from "zod";
|
|
30460
30931
|
var GRANULARITIES = ["day", "week", "month"];
|
|
30461
30932
|
var DEFAULT_LOOKBACK_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
30462
|
-
var bucketSchema =
|
|
30463
|
-
period:
|
|
30464
|
-
total_runs:
|
|
30465
|
-
scheduled_runs:
|
|
30466
|
-
on_demand_runs:
|
|
30467
|
-
});
|
|
30468
|
-
var usageChartResponseSchema =
|
|
30469
|
-
buckets:
|
|
30470
|
-
granularity:
|
|
30471
|
-
truncated:
|
|
30472
|
-
total_teams:
|
|
30933
|
+
var bucketSchema = z115.object({
|
|
30934
|
+
period: z115.string(),
|
|
30935
|
+
total_runs: z115.number(),
|
|
30936
|
+
scheduled_runs: z115.number(),
|
|
30937
|
+
on_demand_runs: z115.number()
|
|
30938
|
+
});
|
|
30939
|
+
var usageChartResponseSchema = z115.object({
|
|
30940
|
+
buckets: z115.array(bucketSchema),
|
|
30941
|
+
granularity: z115.enum(GRANULARITIES),
|
|
30942
|
+
truncated: z115.boolean(),
|
|
30943
|
+
total_teams: z115.number()
|
|
30473
30944
|
});
|
|
30474
30945
|
function registerTeamsOrgUsage(teams) {
|
|
30475
30946
|
teams.command("org-usage <org-id>").description("Show org-wide run volume over time (scheduled vs on-demand)").option("--start-date <date>", "window start (ISO 8601, default 30d ago)").option("--end-date <date>", "window end (ISO 8601, default now)").option(
|
|
@@ -30528,17 +30999,17 @@ function registerTeamsOrgUsage(teams) {
|
|
|
30528
30999
|
__name(registerTeamsOrgUsage, "registerTeamsOrgUsage");
|
|
30529
31000
|
|
|
30530
31001
|
// src/commands/teams/org.ts
|
|
30531
|
-
import { z as
|
|
30532
|
-
var orgTeamSchema =
|
|
30533
|
-
id:
|
|
30534
|
-
name:
|
|
30535
|
-
userIsMember:
|
|
30536
|
-
userRole:
|
|
30537
|
-
memberCount:
|
|
30538
|
-
});
|
|
30539
|
-
var listOrgTeamsResponseSchema =
|
|
30540
|
-
teams:
|
|
30541
|
-
total:
|
|
31002
|
+
import { z as z116 } from "zod";
|
|
31003
|
+
var orgTeamSchema = z116.object({
|
|
31004
|
+
id: z116.string(),
|
|
31005
|
+
name: z116.string(),
|
|
31006
|
+
userIsMember: z116.boolean(),
|
|
31007
|
+
userRole: z116.string().nullable(),
|
|
31008
|
+
memberCount: z116.number()
|
|
31009
|
+
});
|
|
31010
|
+
var listOrgTeamsResponseSchema = z116.object({
|
|
31011
|
+
teams: z116.array(orgTeamSchema),
|
|
31012
|
+
total: z116.number()
|
|
30542
31013
|
});
|
|
30543
31014
|
function registerTeamsOrg(teams) {
|
|
30544
31015
|
teams.command("org <org-id>").description("List all teams in an organization you belong to").option("--json", "output raw JSON from the API").action(/* @__PURE__ */ __name(async function orgAction(orgId, options) {
|
|
@@ -30643,7 +31114,7 @@ __name(resolveActiveTeamId, "resolveActiveTeamId");
|
|
|
30643
31114
|
var version = resolveVersion();
|
|
30644
31115
|
function resolveVersion() {
|
|
30645
31116
|
if (true) {
|
|
30646
|
-
return "1.
|
|
31117
|
+
return "1.24.0";
|
|
30647
31118
|
}
|
|
30648
31119
|
const packageJsonPath = join3(
|
|
30649
31120
|
dirname3(fileURLToPath2(import.meta.url)),
|
|
@@ -30661,6 +31132,11 @@ function createProgram() {
|
|
|
30661
31132
|
).option(
|
|
30662
31133
|
"--team <id>",
|
|
30663
31134
|
"use a specific team for this invocation (overrides DUVO_TEAM_ID and profile default; API-key profiles are pinned to the key's team, so a different value is rejected by the server)"
|
|
31135
|
+
).addOption(
|
|
31136
|
+
new Option2(
|
|
31137
|
+
"--no-update-notifier",
|
|
31138
|
+
"skip the update check for this invocation"
|
|
31139
|
+
).hideHelp()
|
|
30664
31140
|
);
|
|
30665
31141
|
program.addHelpText(
|
|
30666
31142
|
"before",
|
|
@@ -30709,25 +31185,130 @@ function createProgram() {
|
|
|
30709
31185
|
__name(createProgram, "createProgram");
|
|
30710
31186
|
|
|
30711
31187
|
// src/update-check.ts
|
|
31188
|
+
import { mkdir as mkdir2, readFile as readFile10, writeFile as writeFile4 } from "node:fs/promises";
|
|
30712
31189
|
import { createRequire } from "node:module";
|
|
30713
|
-
import
|
|
31190
|
+
import { dirname as dirname4 } from "node:path";
|
|
30714
31191
|
var ONE_DAY_MS = 24 * 60 * 60 * 1e3;
|
|
31192
|
+
var REGISTRY_TIMEOUT_MS = 2e3;
|
|
31193
|
+
var DIR_MODE2 = 448;
|
|
30715
31194
|
function checkForUpdate() {
|
|
31195
|
+
if (isUpdateCheckDisabled()) {
|
|
31196
|
+
return Promise.resolve();
|
|
31197
|
+
}
|
|
31198
|
+
return runUpdateCheck().catch(() => {
|
|
31199
|
+
});
|
|
31200
|
+
}
|
|
31201
|
+
__name(checkForUpdate, "checkForUpdate");
|
|
31202
|
+
function isUpdateCheckDisabled() {
|
|
31203
|
+
const ci = process.env.CI;
|
|
31204
|
+
return process.env.NO_UPDATE_NOTIFIER !== void 0 || process.env.NODE_ENV === "test" || ci !== void 0 && ci !== "" && ci !== "false" && ci !== "0" || process.argv.includes("--no-update-notifier");
|
|
31205
|
+
}
|
|
31206
|
+
__name(isUpdateCheckDisabled, "isUpdateCheckDisabled");
|
|
31207
|
+
async function runUpdateCheck() {
|
|
31208
|
+
const pkg = loadPackageMeta();
|
|
31209
|
+
const cache = await readCache();
|
|
31210
|
+
if (cache && isNewerVersion(cache.latestVersion, pkg.version)) {
|
|
31211
|
+
printUpdateNotice(pkg, cache.latestVersion);
|
|
31212
|
+
}
|
|
31213
|
+
const isFresh = cache && Date.now() - cache.lastCheckedAtMs < ONE_DAY_MS;
|
|
31214
|
+
if (isFresh) {
|
|
31215
|
+
return;
|
|
31216
|
+
}
|
|
31217
|
+
await refreshCache(pkg, cache);
|
|
31218
|
+
}
|
|
31219
|
+
__name(runUpdateCheck, "runUpdateCheck");
|
|
31220
|
+
async function refreshCache(pkg, previous) {
|
|
30716
31221
|
try {
|
|
30717
|
-
const
|
|
30718
|
-
|
|
30719
|
-
|
|
30720
|
-
|
|
30721
|
-
|
|
31222
|
+
const latestVersion = await fetchLatestVersion(pkg.name);
|
|
31223
|
+
await writeCache({ lastCheckedAtMs: Date.now(), latestVersion });
|
|
31224
|
+
} catch {
|
|
31225
|
+
await writeCache({
|
|
31226
|
+
lastCheckedAtMs: Date.now(),
|
|
31227
|
+
latestVersion: previous?.latestVersion ?? pkg.version
|
|
30722
31228
|
});
|
|
30723
|
-
|
|
31229
|
+
}
|
|
31230
|
+
}
|
|
31231
|
+
__name(refreshCache, "refreshCache");
|
|
31232
|
+
function printUpdateNotice(pkg, latestVersion) {
|
|
31233
|
+
const updateCommand = resolveUpdateCommand(pkg.name, isStandaloneBinary());
|
|
31234
|
+
console.error(
|
|
31235
|
+
`
|
|
31236
|
+
Update available for ${pkg.name}: ${pkg.version} \u2192 ${latestVersion}
|
|
31237
|
+
Run \`${updateCommand}\` to update.
|
|
31238
|
+
`
|
|
31239
|
+
);
|
|
31240
|
+
}
|
|
31241
|
+
__name(printUpdateNotice, "printUpdateNotice");
|
|
31242
|
+
function resolveUpdateCommand(packageName, isStandalone) {
|
|
31243
|
+
return isStandalone ? "curl -fsSL https://duvo.ai/install-cli.sh | sh" : `npm install -g ${packageName}`;
|
|
31244
|
+
}
|
|
31245
|
+
__name(resolveUpdateCommand, "resolveUpdateCommand");
|
|
31246
|
+
function isStandaloneBinary() {
|
|
31247
|
+
return import.meta.url.includes("$bunfs") || import.meta.url.includes("~BUN");
|
|
31248
|
+
}
|
|
31249
|
+
__name(isStandaloneBinary, "isStandaloneBinary");
|
|
31250
|
+
async function fetchLatestVersion(packageName) {
|
|
31251
|
+
const response = await fetch(
|
|
31252
|
+
`https://registry.npmjs.org/-/package/${packageName}/dist-tags`,
|
|
31253
|
+
{
|
|
31254
|
+
signal: AbortSignal.timeout(REGISTRY_TIMEOUT_MS),
|
|
31255
|
+
headers: { accept: "application/json" }
|
|
31256
|
+
}
|
|
31257
|
+
);
|
|
31258
|
+
if (!response.ok) {
|
|
31259
|
+
throw new Error(`npm registry responded with ${response.status}`);
|
|
31260
|
+
}
|
|
31261
|
+
const body = await response.json();
|
|
31262
|
+
if (body === null || typeof body !== "object" || typeof body.latest !== "string") {
|
|
31263
|
+
throw new Error("npm registry response is missing the latest dist-tag");
|
|
31264
|
+
}
|
|
31265
|
+
return body.latest;
|
|
31266
|
+
}
|
|
31267
|
+
__name(fetchLatestVersion, "fetchLatestVersion");
|
|
31268
|
+
async function readCache() {
|
|
31269
|
+
try {
|
|
31270
|
+
const raw = await readFile10(getUpdateCheckCachePath(), "utf8");
|
|
31271
|
+
const parsed = JSON.parse(raw);
|
|
31272
|
+
if (parsed === null || typeof parsed !== "object" || typeof parsed.lastCheckedAtMs !== "number" || typeof parsed.latestVersion !== "string") {
|
|
31273
|
+
return null;
|
|
31274
|
+
}
|
|
31275
|
+
return parsed;
|
|
30724
31276
|
} catch {
|
|
31277
|
+
return null;
|
|
30725
31278
|
}
|
|
30726
31279
|
}
|
|
30727
|
-
__name(
|
|
31280
|
+
__name(readCache, "readCache");
|
|
31281
|
+
async function writeCache(cache) {
|
|
31282
|
+
const path = getUpdateCheckCachePath();
|
|
31283
|
+
await mkdir2(dirname4(path), { recursive: true, mode: DIR_MODE2 });
|
|
31284
|
+
await writeFile4(path, JSON.stringify(cache), "utf8");
|
|
31285
|
+
}
|
|
31286
|
+
__name(writeCache, "writeCache");
|
|
31287
|
+
function parseVersion(version2) {
|
|
31288
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)/.exec(version2.trim());
|
|
31289
|
+
if (!match) {
|
|
31290
|
+
return null;
|
|
31291
|
+
}
|
|
31292
|
+
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
31293
|
+
}
|
|
31294
|
+
__name(parseVersion, "parseVersion");
|
|
31295
|
+
function isNewerVersion(candidate, current) {
|
|
31296
|
+
const parsedCandidate = parseVersion(candidate);
|
|
31297
|
+
const parsedCurrent = parseVersion(current);
|
|
31298
|
+
if (!parsedCandidate || !parsedCurrent) {
|
|
31299
|
+
return false;
|
|
31300
|
+
}
|
|
31301
|
+
for (let index = 0; index < 3; index += 1) {
|
|
31302
|
+
if (parsedCandidate[index] !== parsedCurrent[index]) {
|
|
31303
|
+
return parsedCandidate[index] > parsedCurrent[index];
|
|
31304
|
+
}
|
|
31305
|
+
}
|
|
31306
|
+
return false;
|
|
31307
|
+
}
|
|
31308
|
+
__name(isNewerVersion, "isNewerVersion");
|
|
30728
31309
|
function loadPackageMeta() {
|
|
30729
31310
|
if (true) {
|
|
30730
|
-
return { name: "@duvoai/cli", version: "1.
|
|
31311
|
+
return { name: "@duvoai/cli", version: "1.24.0" };
|
|
30731
31312
|
}
|
|
30732
31313
|
const require2 = createRequire(import.meta.url);
|
|
30733
31314
|
const raw = require2("../package.json");
|
|
@@ -30740,7 +31321,7 @@ function loadPackageMeta() {
|
|
|
30740
31321
|
__name(loadPackageMeta, "loadPackageMeta");
|
|
30741
31322
|
|
|
30742
31323
|
// src/bin/duvo.ts
|
|
30743
|
-
checkForUpdate();
|
|
31324
|
+
void checkForUpdate();
|
|
30744
31325
|
createProgram().parseAsync(process.argv).catch((error) => {
|
|
30745
31326
|
handleCliError(error);
|
|
30746
31327
|
});
|