@claypi/cli 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +348 -160
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -82972,6 +82972,13 @@ function readJsonFlag(flagName, source) {
|
|
|
82972
82972
|
throw new InvalidArgumentError(`${flagName}: not valid JSON (${err.message})`);
|
|
82973
82973
|
}
|
|
82974
82974
|
}
|
|
82975
|
+
function readJsonObjectFlag(flagName, source) {
|
|
82976
|
+
const parsed = readJsonFlag(flagName, source);
|
|
82977
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
82978
|
+
throw new InvalidArgumentError(`${flagName}: must be a JSON object`);
|
|
82979
|
+
}
|
|
82980
|
+
return parsed;
|
|
82981
|
+
}
|
|
82975
82982
|
|
|
82976
82983
|
// src/commands/tables/list.ts
|
|
82977
82984
|
function buildListCommand() {
|
|
@@ -92203,6 +92210,7 @@ var BlockSettings = external_exports.discriminatedUnion("blockType", [
|
|
|
92203
92210
|
AdSyncBlockSettings
|
|
92204
92211
|
]);
|
|
92205
92212
|
var AutoRunMode = external_exports.enum(["all", "keep_existing"]);
|
|
92213
|
+
var TableColorLabels = external_exports.record(external_exports.nativeEnum(DataTypeColor), external_exports.string());
|
|
92206
92214
|
var TableSettingsBase = external_exports.object({
|
|
92207
92215
|
AUTO_RUN_ON: external_exports.boolean().optional(),
|
|
92208
92216
|
AUTO_RUN_MODE: AutoRunMode.optional(),
|
|
@@ -92237,7 +92245,8 @@ var TableSettingsBase = external_exports.object({
|
|
|
92237
92245
|
PASS_THROUGH_TABLE_SUCCESS_CRITERIA: GridViewFilterConfigGroup.optional(),
|
|
92238
92246
|
PASS_THROUGH_TABLE_DELETE_EXCESS_RECORDS_LIMIT: external_exports.number().optional(),
|
|
92239
92247
|
/** When true, table data is synced for ClayQL queries (cross-table, NL queries). */
|
|
92240
|
-
CLAYQL_SYNC_ENABLED: external_exports.boolean().optional()
|
|
92248
|
+
CLAYQL_SYNC_ENABLED: external_exports.boolean().optional(),
|
|
92249
|
+
COLOR_LABELS: TableColorLabels.optional()
|
|
92241
92250
|
});
|
|
92242
92251
|
var TableSettings = TableSettingsBase.refine(
|
|
92243
92252
|
(data) => {
|
|
@@ -92288,7 +92297,7 @@ var TableSettingsKeys = Object.freeze(
|
|
|
92288
92297
|
);
|
|
92289
92298
|
|
|
92290
92299
|
// ../../libs/shared/src/tools/tool-id.ts
|
|
92291
|
-
var ToolType = external_exports.enum(["function", "enrichment"]);
|
|
92300
|
+
var ToolType = external_exports.enum(["function", "enrichment", "workflow"]);
|
|
92292
92301
|
|
|
92293
92302
|
// ../../libs/shared/src/tools/tool-input-schemas.ts
|
|
92294
92303
|
var ToolSurface = external_exports.enum(["api", "mcp", "claygent"]);
|
|
@@ -93722,6 +93731,235 @@ Examples:
|
|
|
93722
93731
|
});
|
|
93723
93732
|
}
|
|
93724
93733
|
|
|
93734
|
+
// ../../libs/shared/src/billing/CreditUsage.ts
|
|
93735
|
+
var CreditUsageBreakdownSchema = zod_default.object({
|
|
93736
|
+
basicCreditsUsed: zod_default.number(),
|
|
93737
|
+
longExpiryCreditsUsed: zod_default.number(),
|
|
93738
|
+
totalCost: zod_default.number(),
|
|
93739
|
+
workbookId: zod_default.string().optional(),
|
|
93740
|
+
workbookCreditsUsed: zod_default.number().optional(),
|
|
93741
|
+
workspacePlatformId: zod_default.union([zod_default.string(), zod_default.number()]).optional().transform((val) => val),
|
|
93742
|
+
workspacePlatformCreditsUsed: zod_default.number().optional(),
|
|
93743
|
+
workspaceSalesRepId: zod_default.string().optional().transform((val) => val),
|
|
93744
|
+
workspaceSalesRepCreditsUsed: zod_default.number().optional(),
|
|
93745
|
+
signalId: zod_default.string().optional().transform((val) => val),
|
|
93746
|
+
signalCreditsUsed: zod_default.number().optional(),
|
|
93747
|
+
audienceBulkEnrichmentTableId: zod_default.string().optional().transform((val) => val),
|
|
93748
|
+
audienceBulkEnrichmentTableCreditsUsed: zod_default.number().optional(),
|
|
93749
|
+
actionExecutionsUsed: zod_default.number().optional(),
|
|
93750
|
+
budgetId: zod_default.string().optional(),
|
|
93751
|
+
budgetCreditsUsed: zod_default.number().optional()
|
|
93752
|
+
});
|
|
93753
|
+
|
|
93754
|
+
// ../../libs/shared/src/signals/signal-type.ts
|
|
93755
|
+
var SignalType = /* @__PURE__ */ ((SignalType2) => {
|
|
93756
|
+
SignalType2["FakeSignal"] = "FakeSignal";
|
|
93757
|
+
SignalType2["JobChange"] = "JobChange";
|
|
93758
|
+
SignalType2["JobPost"] = "JobPost";
|
|
93759
|
+
SignalType2["WebsiteVisitorTracking"] = "WebsiteVisitorTracking";
|
|
93760
|
+
SignalType2["NewHire"] = "NewHire";
|
|
93761
|
+
SignalType2["Promotion"] = "Promotion";
|
|
93762
|
+
SignalType2["News"] = "News";
|
|
93763
|
+
SignalType2["Custom"] = "Custom";
|
|
93764
|
+
SignalType2["LinkedinPostMentions"] = "LinkedinPostMentions";
|
|
93765
|
+
return SignalType2;
|
|
93766
|
+
})(SignalType || {});
|
|
93767
|
+
|
|
93768
|
+
// ../../libs/shared/src/ActionInvocationTypes.ts
|
|
93769
|
+
var MCPServiceCallbackInfo = external_exports.object({
|
|
93770
|
+
caller: external_exports.literal("MCPService" /* MCPService */),
|
|
93771
|
+
actionInfo: MCPServiceActionInfo
|
|
93772
|
+
});
|
|
93773
|
+
var ToolServiceCallbackInfo = external_exports.discriminatedUnion("surface", [
|
|
93774
|
+
external_exports.object({
|
|
93775
|
+
caller: external_exports.literal("ToolService" /* ToolService */),
|
|
93776
|
+
surface: external_exports.literal("claygent"),
|
|
93777
|
+
callbackUrl: external_exports.string().url(),
|
|
93778
|
+
jobId: external_exports.string(),
|
|
93779
|
+
toolCallId: external_exports.string(),
|
|
93780
|
+
toolId: external_exports.string()
|
|
93781
|
+
}),
|
|
93782
|
+
external_exports.object({
|
|
93783
|
+
caller: external_exports.literal("ToolService" /* ToolService */),
|
|
93784
|
+
surface: external_exports.literal("api")
|
|
93785
|
+
})
|
|
93786
|
+
]);
|
|
93787
|
+
var ActionJobCallbackInfo = external_exports.union([
|
|
93788
|
+
external_exports.object({
|
|
93789
|
+
caller: external_exports.literal("SchedulerService" /* SchedulerService */)
|
|
93790
|
+
}),
|
|
93791
|
+
external_exports.object({
|
|
93792
|
+
caller: external_exports.literal("WebsiteSessionMonitorService" /* WebsiteSessionMonitorService */),
|
|
93793
|
+
signalId: external_exports.string(),
|
|
93794
|
+
signalType: external_exports.nativeEnum(SignalType)
|
|
93795
|
+
}),
|
|
93796
|
+
external_exports.object({
|
|
93797
|
+
caller: external_exports.literal("AudiencesService" /* AudiencesService */)
|
|
93798
|
+
}),
|
|
93799
|
+
external_exports.object({
|
|
93800
|
+
caller: external_exports.literal("CampaignsService" /* CampaignsService */),
|
|
93801
|
+
campaignId: external_exports.string(),
|
|
93802
|
+
leadId: external_exports.number(),
|
|
93803
|
+
launchBatchId: external_exports.string()
|
|
93804
|
+
}),
|
|
93805
|
+
external_exports.object({
|
|
93806
|
+
caller: external_exports.literal("WebhookDestination" /* WebhookDestination */),
|
|
93807
|
+
webhookUrl: external_exports.string().url(),
|
|
93808
|
+
responseFormat: external_exports.literal("exportly").optional()
|
|
93809
|
+
}),
|
|
93810
|
+
MCPServiceCallbackInfo,
|
|
93811
|
+
external_exports.object({
|
|
93812
|
+
caller: external_exports.literal("AgentRunService" /* AgentRunService */),
|
|
93813
|
+
agentRunId: external_exports.string()
|
|
93814
|
+
}),
|
|
93815
|
+
external_exports.object({
|
|
93816
|
+
caller: external_exports.literal("TerracottaWorkflowService" /* TerracottaWorkflowService */),
|
|
93817
|
+
stepId: external_exports.string(),
|
|
93818
|
+
workflowId: external_exports.string(),
|
|
93819
|
+
workflowRunId: external_exports.string(),
|
|
93820
|
+
nodeId: external_exports.string(),
|
|
93821
|
+
nodeName: external_exports.string()
|
|
93822
|
+
}),
|
|
93823
|
+
...ToolServiceCallbackInfo.options,
|
|
93824
|
+
external_exports.object({
|
|
93825
|
+
caller: external_exports.literal("BigSourceSyncService" /* BigSourceSyncService */)
|
|
93826
|
+
})
|
|
93827
|
+
]);
|
|
93828
|
+
var CoreActionOutputMetadata = external_exports.object({
|
|
93829
|
+
status: RunnerStatus,
|
|
93830
|
+
textPreview: external_exports.string().nullable(),
|
|
93831
|
+
imagePreview: external_exports.string().nullable(),
|
|
93832
|
+
message: external_exports.string().optional(),
|
|
93833
|
+
additionalCreditCost: external_exports.number().optional(),
|
|
93834
|
+
confidence: external_exports.string().optional(),
|
|
93835
|
+
creditCostAdditionalInfo: external_exports.string().optional()
|
|
93836
|
+
});
|
|
93837
|
+
var DestinationEnrichmentMetadata = external_exports.object({
|
|
93838
|
+
logInfo: ActionLogInfo.nullable(),
|
|
93839
|
+
inputsHash: external_exports.string().nullable(),
|
|
93840
|
+
runId: external_exports.string().nullable()
|
|
93841
|
+
});
|
|
93842
|
+
var CreditProcessingMetadata = external_exports.object({
|
|
93843
|
+
upfrontCreditUsage: CreditUsageBreakdownSchema.optional(),
|
|
93844
|
+
additionalCreditUsage: CreditUsageBreakdownSchema.optional(),
|
|
93845
|
+
isRefunded: external_exports.boolean().optional(),
|
|
93846
|
+
isPrivateKey: external_exports.boolean().optional()
|
|
93847
|
+
});
|
|
93848
|
+
var SourceExecutionMetadata = external_exports.object({
|
|
93849
|
+
nextPageCursor: external_exports.string().optional(),
|
|
93850
|
+
cumulativeCreditCost: external_exports.number().optional(),
|
|
93851
|
+
mostRecentResultCreditCost: external_exports.number().optional()
|
|
93852
|
+
});
|
|
93853
|
+
var StreamingProgressMetadata = external_exports.object({
|
|
93854
|
+
isStreamingProgress: external_exports.boolean().optional(),
|
|
93855
|
+
streamingProgressKey: external_exports.string().optional()
|
|
93856
|
+
});
|
|
93857
|
+
var ActionInvocationOutputMetadata = CoreActionOutputMetadata.merge(DestinationEnrichmentMetadata).merge(CreditProcessingMetadata).merge(SourceExecutionMetadata).merge(StreamingProgressMetadata);
|
|
93858
|
+
var ActionInvocationOutput = external_exports.object({
|
|
93859
|
+
data: external_exports.unknown(),
|
|
93860
|
+
retryPartialData: external_exports.unknown().optional(),
|
|
93861
|
+
retryCustomInputs: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
93862
|
+
retryDelayInSeconds: external_exports.number().optional(),
|
|
93863
|
+
hiddenData: external_exports.record(external_exports.string(), external_exports.unknown()).optional(),
|
|
93864
|
+
metadata: ActionInvocationOutputMetadata
|
|
93865
|
+
});
|
|
93866
|
+
var ActionTaskStatusEnum = /* @__PURE__ */ ((ActionTaskStatusEnum2) => {
|
|
93867
|
+
ActionTaskStatusEnum2["PROCESSING"] = "PROCESSING";
|
|
93868
|
+
ActionTaskStatusEnum2["COMPLETE"] = "COMPLETE";
|
|
93869
|
+
return ActionTaskStatusEnum2;
|
|
93870
|
+
})(ActionTaskStatusEnum || {});
|
|
93871
|
+
var ActionTaskData = external_exports.object({
|
|
93872
|
+
output: ActionInvocationOutput,
|
|
93873
|
+
status: external_exports.nativeEnum(ActionTaskStatusEnum)
|
|
93874
|
+
});
|
|
93875
|
+
var ActionInvocationInfo = external_exports.object({
|
|
93876
|
+
needsRetry: external_exports.boolean(),
|
|
93877
|
+
retryCount: external_exports.number(),
|
|
93878
|
+
isPartialOutput: external_exports.boolean()
|
|
93879
|
+
});
|
|
93880
|
+
|
|
93881
|
+
// ../../libs/shared/src/actions/action-enrichment-types.ts
|
|
93882
|
+
var ActionRunEnrichmentType = /* @__PURE__ */ ((ActionRunEnrichmentType2) => {
|
|
93883
|
+
ActionRunEnrichmentType2["FIND_AND_ENRICH_PERSONAL_LINKEDIN"] = "find-and-enrich-personal-linkedin";
|
|
93884
|
+
ActionRunEnrichmentType2["ENRICH_PERSONAL_LINKEDIN_URL"] = "enrich-personal-linkedin-url";
|
|
93885
|
+
ActionRunEnrichmentType2["ENRICH_COMPANY"] = "enrich-company";
|
|
93886
|
+
ActionRunEnrichmentType2["CLAYGENT"] = "claygent";
|
|
93887
|
+
ActionRunEnrichmentType2["FIND_EMPLOYEE_HEADCOUNT"] = "find-employee-headcount";
|
|
93888
|
+
ActionRunEnrichmentType2["FIND_LISTS_OF_PEOPLE_WITH_MIXRANK_SOURCE_PREVIEW"] = "find-lists-of-people-with-mixrank-source-preview";
|
|
93889
|
+
ActionRunEnrichmentType2["FIND_LISTS_OF_COMPANIES_WITH_MIXRANK_SOURCE_PREVIEW"] = "find-lists-of-companies-with-mixrank-source-preview";
|
|
93890
|
+
ActionRunEnrichmentType2["FIND_COMPANY_LOOKALIKES_CLUSTERED_PREVIEW"] = "find-company-lookalikes-clustered-preview";
|
|
93891
|
+
ActionRunEnrichmentType2["FIND_LISTS_OF_JOBS_WITH_MIXRANK_SOURCE_PREVIEW"] = "find-lists-of-jobs-with-mixrank-source-preview";
|
|
93892
|
+
ActionRunEnrichmentType2["SEARCH_COMPANIES_FROM_TABLE"] = "search-companies-from-table";
|
|
93893
|
+
return ActionRunEnrichmentType2;
|
|
93894
|
+
})(ActionRunEnrichmentType || {});
|
|
93895
|
+
var CPJ_PREVIEWS_ENRICHMENTS = [
|
|
93896
|
+
"find-lists-of-companies-with-mixrank-source-preview" /* FIND_LISTS_OF_COMPANIES_WITH_MIXRANK_SOURCE_PREVIEW */,
|
|
93897
|
+
"find-company-lookalikes-clustered-preview" /* FIND_COMPANY_LOOKALIKES_CLUSTERED_PREVIEW */,
|
|
93898
|
+
"find-lists-of-people-with-mixrank-source-preview" /* FIND_LISTS_OF_PEOPLE_WITH_MIXRANK_SOURCE_PREVIEW */,
|
|
93899
|
+
"find-lists-of-jobs-with-mixrank-source-preview" /* FIND_LISTS_OF_JOBS_WITH_MIXRANK_SOURCE_PREVIEW */
|
|
93900
|
+
];
|
|
93901
|
+
function isCPJPreviewEnrichmentType(enrichmentType) {
|
|
93902
|
+
return CPJ_PREVIEWS_ENRICHMENTS.some((type) => type === enrichmentType);
|
|
93903
|
+
}
|
|
93904
|
+
var CPJPreviewEnrichmentTypeSchema = external_exports.nativeEnum(ActionRunEnrichmentType).refine((v) => isCPJPreviewEnrichmentType(v), {
|
|
93905
|
+
message: "Must be a CPJ preview enrichment type"
|
|
93906
|
+
});
|
|
93907
|
+
|
|
93908
|
+
// ../../libs/api-contract/src/tables/action/interfaces.ts
|
|
93909
|
+
var CreateActionTaskBody = external_exports.object({
|
|
93910
|
+
workspaceId: external_exports.string(),
|
|
93911
|
+
tableId: external_exports.string().optional(),
|
|
93912
|
+
runType: external_exports.nativeEnum(ActionTaskRunType).optional(),
|
|
93913
|
+
actionTaskParams: external_exports.object({
|
|
93914
|
+
actionPreviewing: external_exports.string().optional(),
|
|
93915
|
+
actionKey: ActionKeySchema,
|
|
93916
|
+
actionPackageId: ActionPackageIdSchema,
|
|
93917
|
+
authAccountId: external_exports.string().optional(),
|
|
93918
|
+
inputs: external_exports.record(external_exports.string(), external_exports.any()),
|
|
93919
|
+
isPreviewRun: external_exports.boolean().optional(),
|
|
93920
|
+
callbackInfo: ActionJobCallbackInfo.optional()
|
|
93921
|
+
})
|
|
93922
|
+
});
|
|
93923
|
+
var DynamicFieldRequestItem = external_exports.object({
|
|
93924
|
+
actionPackageId: external_exports.string(),
|
|
93925
|
+
actionKey: external_exports.string(),
|
|
93926
|
+
authAccountId: external_exports.string().optional(),
|
|
93927
|
+
parameterPath: external_exports.string(),
|
|
93928
|
+
inputs: external_exports.any().optional(),
|
|
93929
|
+
context: external_exports.any().optional(),
|
|
93930
|
+
tableId: external_exports.string().optional(),
|
|
93931
|
+
type: external_exports.enum(["select", "input"])
|
|
93932
|
+
});
|
|
93933
|
+
var DynamicFieldsRequestBody = external_exports.object({
|
|
93934
|
+
dynamicRequests: external_exports.array(DynamicFieldRequestItem)
|
|
93935
|
+
});
|
|
93936
|
+
var DynamicFieldError = external_exports.object({
|
|
93937
|
+
errorMessage: external_exports.string(),
|
|
93938
|
+
errorDetails: external_exports.string().optional(),
|
|
93939
|
+
errorStatus: external_exports.string(),
|
|
93940
|
+
isBlocking: external_exports.boolean()
|
|
93941
|
+
});
|
|
93942
|
+
var DynamicFieldResponseItem = external_exports.object({
|
|
93943
|
+
parameterPath: external_exports.string(),
|
|
93944
|
+
dynamicData: external_exports.array(external_exports.any()).optional(),
|
|
93945
|
+
errors: external_exports.array(DynamicFieldError).optional(),
|
|
93946
|
+
logUrl: external_exports.string().optional()
|
|
93947
|
+
});
|
|
93948
|
+
var RunCPJPreviewEnrichmentBody = external_exports.object({
|
|
93949
|
+
workspaceId: external_exports.string(),
|
|
93950
|
+
enrichmentType: CPJPreviewEnrichmentTypeSchema,
|
|
93951
|
+
options: external_exports.object({
|
|
93952
|
+
returnTaskId: external_exports.boolean().optional(),
|
|
93953
|
+
returnActionMetadata: external_exports.boolean().optional()
|
|
93954
|
+
}).strict().optional(),
|
|
93955
|
+
inputs: external_exports.record(external_exports.string(), external_exports.unknown())
|
|
93956
|
+
});
|
|
93957
|
+
var RunCPJPreviewEnrichmentResponse = external_exports.object({
|
|
93958
|
+
result: external_exports.unknown(),
|
|
93959
|
+
metadata: ActionInvocationOutputMetadata.optional(),
|
|
93960
|
+
taskId: external_exports.string().optional()
|
|
93961
|
+
});
|
|
93962
|
+
|
|
93725
93963
|
// ../../libs/api-contract/src/terracotta/clay-actions/contract.ts
|
|
93726
93964
|
var terracottaClayActionsContract = {
|
|
93727
93965
|
getClayActions: {
|
|
@@ -93752,9 +93990,106 @@ var terracottaClayActionsContract = {
|
|
|
93752
93990
|
},
|
|
93753
93991
|
summary: "Get input schema for a specific Clay action by packageId and actionKey",
|
|
93754
93992
|
metadata: { team: "workflows" /* Workflows */ }
|
|
93993
|
+
},
|
|
93994
|
+
getClayActionDynamicFields: {
|
|
93995
|
+
method: "POST",
|
|
93996
|
+
path: "/workspaces/:workspaceId/tc-clay-action-dynamic-fields",
|
|
93997
|
+
pathParams: external_exports.object({
|
|
93998
|
+
workspaceId: external_exports.string()
|
|
93999
|
+
}),
|
|
94000
|
+
body: DynamicFieldsRequestBody,
|
|
94001
|
+
responses: {
|
|
94002
|
+
200: external_exports.array(DynamicFieldResponseItem),
|
|
94003
|
+
404: external_exports.object({ error: external_exports.string() })
|
|
94004
|
+
},
|
|
94005
|
+
summary: "Resolve dynamic select options / fields for Clay action parameters given chosen inputs",
|
|
94006
|
+
metadata: { team: "workflows" /* Workflows */ }
|
|
93755
94007
|
}
|
|
93756
94008
|
};
|
|
93757
94009
|
|
|
94010
|
+
// src/commands/workflows/actions/dynamic-fields.ts
|
|
94011
|
+
function prefixRevealedFieldNames(responses, parameterPath) {
|
|
94012
|
+
const prefix = parameterPath.split(".").pop() ?? parameterPath;
|
|
94013
|
+
return responses.map((response) => ({
|
|
94014
|
+
...response,
|
|
94015
|
+
dynamicData: (response.dynamicData ?? []).map((field) => {
|
|
94016
|
+
if (typeof field === "object" && field !== null && "name" in field) {
|
|
94017
|
+
const named = field;
|
|
94018
|
+
if (typeof named.name === "string") {
|
|
94019
|
+
return { ...field, name: `${prefix}|${named.name}` };
|
|
94020
|
+
}
|
|
94021
|
+
}
|
|
94022
|
+
return field;
|
|
94023
|
+
})
|
|
94024
|
+
}));
|
|
94025
|
+
}
|
|
94026
|
+
function buildDynamicFieldsCommand() {
|
|
94027
|
+
const cmd = new Command("dynamic-fields");
|
|
94028
|
+
cmd.description("Resolve an action parameter whose options or fields depend on other inputs.").argument("<packageId>", "Action package id, from `workflows actions list`").argument("<actionKey>", "Action key, from `workflows actions list`").argument("<parameterPath>", "Parameter name; dot-notation for grouped params (e.g. objectSchema.stage)").addOption(
|
|
94029
|
+
new Option(
|
|
94030
|
+
"--type <type>",
|
|
94031
|
+
"select = resolve a dependent dropdown\u2019s values; input = resolve a revealed field set."
|
|
94032
|
+
).choices(["select", "input"]).default("select")
|
|
94033
|
+
).option("--account <id>", "Connected account id (authAccountId) for actions that need auth.").option(
|
|
94034
|
+
"--inputs <json|file|->",
|
|
94035
|
+
"Already-chosen input values as a JSON object keyed by parameter name: inline JSON, a file path, or - for stdin."
|
|
94036
|
+
).addHelpText(
|
|
94037
|
+
"after",
|
|
94038
|
+
`
|
|
94039
|
+
Output (success, exit 0):
|
|
94040
|
+
[ { "parameterPath": <string>,
|
|
94041
|
+
"dynamicData": [ ... ], // shape depends on --type, see below
|
|
94042
|
+
"errors": [ { "errorMessage": <string>, "errorDetails": <string>?,
|
|
94043
|
+
"errorStatus": <string>, "isBlocking": <boolean> } ]?,
|
|
94044
|
+
"logUrl": <string>? } ]
|
|
94045
|
+
|
|
94046
|
+
--type select dynamicData: [ { "value": <string>, "displayName": <string> } ]
|
|
94047
|
+
\u2014 "value" is what you pass back in a later --inputs call.
|
|
94048
|
+
--type input dynamicData: revealed input-parameter schema objects forwarded from the
|
|
94049
|
+
server; each "name" is prefixed to pipe notation (<parameterPath>|<field>)
|
|
94050
|
+
so it can be bound directly \u2014 the bare name drops the value at run time.
|
|
94051
|
+
|
|
94052
|
+
"errors[].isBlocking" is load-bearing: when true, abort cascading input resolution.
|
|
94053
|
+
|
|
94054
|
+
Configuring cascading inputs is iterative: resolve and fill one input, then re-run
|
|
94055
|
+
with it in --inputs to resolve the next dependent parameter.
|
|
94056
|
+
|
|
94057
|
+
Common errors:
|
|
94058
|
+
validation_error (exit 2) Required arguments missing, or --inputs is unreadable, not valid JSON, or not a JSON object.
|
|
94059
|
+
auth_forbidden (exit 3) API key lacks permission for this command (insufficient scope).
|
|
94060
|
+
|
|
94061
|
+
Examples:
|
|
94062
|
+
$ clay workflows actions dynamic-fields <packageId> create-object objectType --account acc_123 | jq '.[0].dynamicData'
|
|
94063
|
+
$ clay workflows actions dynamic-fields <packageId> create-object property --account acc_123 --inputs '{"objectType":"companies"}' | jq -r '.[0].dynamicData[].value'
|
|
94064
|
+
`
|
|
94065
|
+
).action(
|
|
94066
|
+
async (packageId, actionKey, parameterPath, opts) => {
|
|
94067
|
+
const inputs = opts.inputs === void 0 ? {} : readJsonObjectFlag("--inputs", opts.inputs);
|
|
94068
|
+
const workspaceId = await currentWorkspaceId();
|
|
94069
|
+
const client = await v3Client(terracottaClayActionsContract);
|
|
94070
|
+
const result = await unwrap(
|
|
94071
|
+
client.getClayActionDynamicFields({
|
|
94072
|
+
params: { workspaceId },
|
|
94073
|
+
body: {
|
|
94074
|
+
dynamicRequests: [
|
|
94075
|
+
{
|
|
94076
|
+
actionPackageId: packageId,
|
|
94077
|
+
actionKey,
|
|
94078
|
+
parameterPath,
|
|
94079
|
+
type: opts.type,
|
|
94080
|
+
authAccountId: opts.account,
|
|
94081
|
+
inputs
|
|
94082
|
+
}
|
|
94083
|
+
]
|
|
94084
|
+
}
|
|
94085
|
+
})
|
|
94086
|
+
);
|
|
94087
|
+
writeJson(opts.type === "input" ? prefixRevealedFieldNames(result, parameterPath) : result);
|
|
94088
|
+
}
|
|
94089
|
+
);
|
|
94090
|
+
return cmd;
|
|
94091
|
+
}
|
|
94092
|
+
|
|
93758
94093
|
// src/commands/workflows/actions/projection.ts
|
|
93759
94094
|
var ACTION_FIELDS = [
|
|
93760
94095
|
"type",
|
|
@@ -93906,8 +94241,9 @@ function buildActionsCommand() {
|
|
|
93906
94241
|
"after",
|
|
93907
94242
|
`
|
|
93908
94243
|
Subcommands:
|
|
93909
|
-
list
|
|
93910
|
-
schema
|
|
94244
|
+
list Dump the full action catalog (greppable JSON).
|
|
94245
|
+
schema Fetch one action\u2019s input schema by packageId + actionKey.
|
|
94246
|
+
dynamic-fields Resolve a parameter whose options/fields depend on other inputs.
|
|
93911
94247
|
|
|
93912
94248
|
These are workflow building blocks (actions you add to a node\u2019s "tools"). For
|
|
93913
94249
|
workspace *function tools*, a different concept, see \`clay tools\`.
|
|
@@ -93915,10 +94251,12 @@ workspace *function tools*, a different concept, see \`clay tools\`.
|
|
|
93915
94251
|
Examples:
|
|
93916
94252
|
$ clay workflows actions list > catalog.json
|
|
93917
94253
|
$ clay workflows actions schema <packageId> <actionKey> | jq '.inputParameters'
|
|
94254
|
+
$ clay workflows actions dynamic-fields <packageId> <actionKey> <param> --inputs '{"objectType":"companies"}'
|
|
93918
94255
|
`
|
|
93919
94256
|
);
|
|
93920
94257
|
cmd.addCommand(applyClaySettings(buildListCommand5()));
|
|
93921
94258
|
cmd.addCommand(applyClaySettings(buildSchemaCommand()));
|
|
94259
|
+
cmd.addCommand(applyClaySettings(buildDynamicFieldsCommand()));
|
|
93922
94260
|
return cmd;
|
|
93923
94261
|
}
|
|
93924
94262
|
|
|
@@ -94108,26 +94446,6 @@ var UpdateTriggerRequest = external_exports.object({
|
|
|
94108
94446
|
status: TriggerStatus.optional()
|
|
94109
94447
|
});
|
|
94110
94448
|
|
|
94111
|
-
// ../../libs/shared/src/billing/CreditUsage.ts
|
|
94112
|
-
var CreditUsageBreakdownSchema = zod_default.object({
|
|
94113
|
-
basicCreditsUsed: zod_default.number(),
|
|
94114
|
-
longExpiryCreditsUsed: zod_default.number(),
|
|
94115
|
-
totalCost: zod_default.number(),
|
|
94116
|
-
workbookId: zod_default.string().optional(),
|
|
94117
|
-
workbookCreditsUsed: zod_default.number().optional(),
|
|
94118
|
-
workspacePlatformId: zod_default.union([zod_default.string(), zod_default.number()]).optional().transform((val) => val),
|
|
94119
|
-
workspacePlatformCreditsUsed: zod_default.number().optional(),
|
|
94120
|
-
workspaceSalesRepId: zod_default.string().optional().transform((val) => val),
|
|
94121
|
-
workspaceSalesRepCreditsUsed: zod_default.number().optional(),
|
|
94122
|
-
signalId: zod_default.string().optional().transform((val) => val),
|
|
94123
|
-
signalCreditsUsed: zod_default.number().optional(),
|
|
94124
|
-
audienceBulkEnrichmentTableId: zod_default.string().optional().transform((val) => val),
|
|
94125
|
-
audienceBulkEnrichmentTableCreditsUsed: zod_default.number().optional(),
|
|
94126
|
-
actionExecutionsUsed: zod_default.number().optional(),
|
|
94127
|
-
budgetId: zod_default.string().optional(),
|
|
94128
|
-
budgetCreditsUsed: zod_default.number().optional()
|
|
94129
|
-
});
|
|
94130
|
-
|
|
94131
94449
|
// ../../libs/shared/src/agents/task-node.ts
|
|
94132
94450
|
var TCForkNodeConfig = external_exports.object({
|
|
94133
94451
|
joinNodeId: external_exports.string().optional(),
|
|
@@ -94791,7 +95109,10 @@ var ActionToolParameters = external_exports.record(
|
|
|
94791
95109
|
type: external_exports.string(),
|
|
94792
95110
|
description: external_exports.string(),
|
|
94793
95111
|
required: external_exports.boolean(),
|
|
94794
|
-
|
|
95112
|
+
// Optional: it's a human label that static action params carry, but fields resolved
|
|
95113
|
+
// dynamically and merged into the snapshot (parent|child) have none; consumers fall
|
|
95114
|
+
// back to the param name. Required here rejected those runs with contract_mismatch.
|
|
95115
|
+
displayName: external_exports.string().optional()
|
|
94795
95116
|
})
|
|
94796
95117
|
);
|
|
94797
95118
|
var ActionToolData = external_exports.object({
|
|
@@ -95056,10 +95377,7 @@ var TCWorkflowRunStateBase = external_exports.object({
|
|
|
95056
95377
|
globalContext: external_exports.record(external_exports.unknown()).optional(),
|
|
95057
95378
|
startedAt: external_exports.string().datetime(),
|
|
95058
95379
|
standaloneActions: TerminalNodeActionsMapping.optional(),
|
|
95059
|
-
terminalNodeActionResults: TerminalNodeActionResultsMapping.optional()
|
|
95060
|
-
// Daytona sandbox API key credentials (persisted for reconnection and cleanup)
|
|
95061
|
-
sandboxApiKeyId: external_exports.string().optional(),
|
|
95062
|
-
sandboxApiKey: external_exports.string().optional()
|
|
95380
|
+
terminalNodeActionResults: TerminalNodeActionResultsMapping.optional()
|
|
95063
95381
|
});
|
|
95064
95382
|
var TCWorkflowRunState = external_exports.discriminatedUnion("status", [
|
|
95065
95383
|
TCWorkflowRunStateBase.extend({
|
|
@@ -95854,130 +96172,6 @@ Examples:
|
|
|
95854
96172
|
return cmd;
|
|
95855
96173
|
}
|
|
95856
96174
|
|
|
95857
|
-
// src/commands/workflows/runs/download-file.ts
|
|
95858
|
-
var import_node_fs11 = require("fs");
|
|
95859
|
-
var import_node_path7 = require("path");
|
|
95860
|
-
|
|
95861
|
-
// ../../libs/api-contract/src/terracotta/code-tool/interfaces.ts
|
|
95862
|
-
var ToolExecutionRequest = external_exports.object({
|
|
95863
|
-
toolId: external_exports.string().describe('Tool ID in format "actionPackageId:actionKey"'),
|
|
95864
|
-
inputs: external_exports.record(external_exports.unknown()).describe("Tool input parameters")
|
|
95865
|
-
});
|
|
95866
|
-
var ToolExecutionResponse = external_exports.object({
|
|
95867
|
-
success: external_exports.boolean(),
|
|
95868
|
-
result: external_exports.unknown().optional(),
|
|
95869
|
-
error: external_exports.string().optional()
|
|
95870
|
-
});
|
|
95871
|
-
var ToolExecutionErrorResponse = external_exports.object({
|
|
95872
|
-
error: external_exports.string()
|
|
95873
|
-
});
|
|
95874
|
-
var SandboxFileDownloadRequest = external_exports.object({
|
|
95875
|
-
filePath: external_exports.string().describe("Path to the file in the sandbox filesystem")
|
|
95876
|
-
});
|
|
95877
|
-
var SandboxFileDownloadErrorResponse = external_exports.object({
|
|
95878
|
-
error: external_exports.string()
|
|
95879
|
-
});
|
|
95880
|
-
|
|
95881
|
-
// ../../libs/api-contract/src/terracotta/code-tool/contract.ts
|
|
95882
|
-
var terracottaCodeToolContract = {
|
|
95883
|
-
executeToolFromCode: {
|
|
95884
|
-
method: "POST",
|
|
95885
|
-
path: "/terracotta/internal/workflow-run/:workflowRunId/step/:stepId/execute-tool",
|
|
95886
|
-
pathParams: external_exports.object({
|
|
95887
|
-
workflowRunId: external_exports.string(),
|
|
95888
|
-
stepId: external_exports.string()
|
|
95889
|
-
}),
|
|
95890
|
-
responses: {
|
|
95891
|
-
200: ToolExecutionResponse,
|
|
95892
|
-
401: ToolExecutionErrorResponse,
|
|
95893
|
-
403: ToolExecutionErrorResponse,
|
|
95894
|
-
422: ToolExecutionErrorResponse,
|
|
95895
|
-
500: ToolExecutionErrorResponse
|
|
95896
|
-
},
|
|
95897
|
-
body: ToolExecutionRequest,
|
|
95898
|
-
summary: "Execute a tool from code node",
|
|
95899
|
-
description: "Internal endpoint for executing Clay actions from Python code running in Daytona sandboxes",
|
|
95900
|
-
metadata: { team: "workflows" /* Workflows */ }
|
|
95901
|
-
},
|
|
95902
|
-
downloadFileFromSandbox: {
|
|
95903
|
-
method: "POST",
|
|
95904
|
-
path: "/terracotta/internal/workflow-run/:workflowRunId/download-file",
|
|
95905
|
-
pathParams: external_exports.object({
|
|
95906
|
-
workflowRunId: external_exports.string()
|
|
95907
|
-
}),
|
|
95908
|
-
responses: {
|
|
95909
|
-
200: external_exports.object({
|
|
95910
|
-
success: external_exports.literal(true),
|
|
95911
|
-
fileData: external_exports.string().describe("Base64-encoded file contents"),
|
|
95912
|
-
filename: external_exports.string().describe("Basename of the file")
|
|
95913
|
-
}),
|
|
95914
|
-
401: SandboxFileDownloadErrorResponse,
|
|
95915
|
-
403: SandboxFileDownloadErrorResponse,
|
|
95916
|
-
404: SandboxFileDownloadErrorResponse,
|
|
95917
|
-
500: SandboxFileDownloadErrorResponse
|
|
95918
|
-
},
|
|
95919
|
-
body: SandboxFileDownloadRequest,
|
|
95920
|
-
summary: "Download a file from a workflow run sandbox",
|
|
95921
|
-
description: "Downloads a file from the Daytona sandbox associated with a workflow run. Returns the raw file contents as a binary response.",
|
|
95922
|
-
metadata: { team: "workflows" /* Workflows */ }
|
|
95923
|
-
}
|
|
95924
|
-
};
|
|
95925
|
-
|
|
95926
|
-
// src/commands/workflows/runs/download-file.ts
|
|
95927
|
-
function buildDownloadFileCommand() {
|
|
95928
|
-
const cmd = new Command("download-file");
|
|
95929
|
-
cmd.description("Download a file written by a code node from a workflow run sandbox onto local disk.").argument("<workflowId>", "Workflow id, e.g. wf_abc123").argument("<runId>", "Run id, e.g. wfr_xyz789").requiredOption(
|
|
95930
|
-
"--path <sandbox-path>",
|
|
95931
|
-
"Absolute path of the file inside the run sandbox, e.g. /home/daytona/report.csv"
|
|
95932
|
-
).option(
|
|
95933
|
-
"--output <local>",
|
|
95934
|
-
"Local path to write the file to. Defaults to the basename of --path in the current directory."
|
|
95935
|
-
).addHelpText(
|
|
95936
|
-
"after",
|
|
95937
|
-
`
|
|
95938
|
-
Output (success, exit 0):
|
|
95939
|
-
{ "path": <string>, "size": <number> }
|
|
95940
|
-
|
|
95941
|
-
"path" is the local path the file was written to; "size" is its size in bytes.
|
|
95942
|
-
The file contents are written to disk only \u2014 never to stdout \u2014 so the JSON
|
|
95943
|
-
envelope stays clean for piping. Code nodes run in an ephemeral per-run sandbox
|
|
95944
|
-
(cwd /home/daytona) that is torn down after the run, so download artifacts
|
|
95945
|
-
before the run is archived.
|
|
95946
|
-
|
|
95947
|
-
The run is resolved by runId alone \u2014 workflowId is positional only for parity
|
|
95948
|
-
with the other "runs" subcommands and is NOT validated against the run. Passing
|
|
95949
|
-
a runId that belongs to a different workflow still downloads from that run, so
|
|
95950
|
-
make sure the runId is correct (e.g. from "runs get"/"runs start" output).
|
|
95951
|
-
|
|
95952
|
-
Common errors:
|
|
95953
|
-
validation_error (exit 2) workflowId, runId, or --path is missing, or --output could not be written.
|
|
95954
|
-
not_found (exit 6) No run with that runId, or no file at --path in its sandbox.
|
|
95955
|
-
auth_forbidden (exit 3) API key lacks permission for this command (insufficient scope).
|
|
95956
|
-
|
|
95957
|
-
Examples:
|
|
95958
|
-
$ clay workflows runs download-file wf_abc123 wfr_xyz789 --path /home/daytona/report.csv
|
|
95959
|
-
$ clay workflows runs download-file wf_abc123 wfr_xyz789 --path /home/daytona/out.json --output ./out.json
|
|
95960
|
-
$ clay workflows runs download-file wf_abc123 wfr_xyz789 --path /home/daytona/report.csv | jq -r '.size'
|
|
95961
|
-
`
|
|
95962
|
-
).action(async (_workflowId, runId, opts) => {
|
|
95963
|
-
const client = await v3Client(terracottaCodeToolContract, { timeout: "large-transfer" });
|
|
95964
|
-
const result = await unwrap(
|
|
95965
|
-
client.downloadFileFromSandbox({ params: { workflowRunId: runId }, body: { filePath: opts.path } })
|
|
95966
|
-
);
|
|
95967
|
-
const outputPath = opts.output ?? (0, import_node_path7.basename)(opts.path);
|
|
95968
|
-
const bytes = Buffer.from(result.fileData, "base64");
|
|
95969
|
-
try {
|
|
95970
|
-
(0, import_node_fs11.writeFileSync)(outputPath, bytes);
|
|
95971
|
-
} catch (err) {
|
|
95972
|
-
throw new FileWriteError(
|
|
95973
|
-
`Could not write to ${outputPath}: ${err instanceof Error ? err.message : String(err)}`
|
|
95974
|
-
);
|
|
95975
|
-
}
|
|
95976
|
-
writeJson({ path: outputPath, size: bytes.length });
|
|
95977
|
-
});
|
|
95978
|
-
return cmd;
|
|
95979
|
-
}
|
|
95980
|
-
|
|
95981
96175
|
// ../../libs/shared/src/agents/human-feedback.ts
|
|
95982
96176
|
var ApproveContinuation = external_exports.object({
|
|
95983
96177
|
type: external_exports.literal("ApproveContinuation")
|
|
@@ -96586,11 +96780,7 @@ Examples:
|
|
|
96586
96780
|
|
|
96587
96781
|
// src/commands/workflows/runs/input.ts
|
|
96588
96782
|
function readRunInputs(source) {
|
|
96589
|
-
|
|
96590
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
96591
|
-
throw new InvalidArgumentError("--input: must be a JSON object of workflow inputs");
|
|
96592
|
-
}
|
|
96593
|
-
return parsed;
|
|
96783
|
+
return readJsonObjectFlag("--input", source);
|
|
96594
96784
|
}
|
|
96595
96785
|
|
|
96596
96786
|
// src/commands/workflows/runs/start.ts
|
|
@@ -96735,7 +96925,6 @@ Subcommands:
|
|
|
96735
96925
|
steps List the individual execution steps of a run, with filters.
|
|
96736
96926
|
pause Pause an active run.
|
|
96737
96927
|
resume Resume a paused run.
|
|
96738
|
-
download-file Download a file written by a code node from a run sandbox.
|
|
96739
96928
|
|
|
96740
96929
|
Examples:
|
|
96741
96930
|
$ clay workflows runs start wf_abc123 | jq -r '.runId'
|
|
@@ -96748,7 +96937,6 @@ Examples:
|
|
|
96748
96937
|
cmd.addCommand(applyClaySettings(buildStepsCommand()));
|
|
96749
96938
|
cmd.addCommand(applyClaySettings(buildPauseCommand()));
|
|
96750
96939
|
cmd.addCommand(applyClaySettings(buildResumeCommand()));
|
|
96751
|
-
cmd.addCommand(applyClaySettings(buildDownloadFileCommand()));
|
|
96752
96940
|
return cmd;
|
|
96753
96941
|
}
|
|
96754
96942
|
|