@qawolf/cli 1.14.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +43 -13
- package/package.json +2 -2
- package/skills/qawolf-cli/SKILL.md +2 -1
package/dist/cli.js
CHANGED
|
@@ -342187,7 +342187,14 @@ var makeCreateRunContract = (ids) => {
|
|
|
342187
342187
|
pullRequestNumber: exports_external.number().int().positive().describe("The number of the pull request to associate with the run.").optional(),
|
|
342188
342188
|
repository: exports_external.string().min(1).describe('The owner/name of the repository, e.g. "acme/web".').optional()
|
|
342189
342189
|
}).and(makeFlowSelectionSchema(ids));
|
|
342190
|
-
const output = resource({
|
|
342190
|
+
const output = resource({
|
|
342191
|
+
excludedFlows: exports_external.array(exports_external.object({
|
|
342192
|
+
flowId: ids.flow,
|
|
342193
|
+
name: exports_external.string().describe("The name of the flow."),
|
|
342194
|
+
reason: exports_external.enum(["deleted", "not-on-branch"]).describe('Why the flow cannot run: "deleted" means the flow was deleted, "not-on-branch" means the flow has no file at the commit the run was created from.')
|
|
342195
|
+
})).describe("Explicitly requested flows that were left out of the run, each with the reason. Flows selected through tags are not reported here."),
|
|
342196
|
+
runId: ids.run
|
|
342197
|
+
}, { urlFieldDescription: "Absolute URL of the run page." });
|
|
342191
342198
|
return {
|
|
342192
342199
|
description: "Create a run for the selected flows and/or tags in an environment.",
|
|
342193
342200
|
input,
|
|
@@ -342547,7 +342554,7 @@ var makeEnvironmentResourceSchema = (ids) => resource({
|
|
|
342547
342554
|
kind: exports_external.enum(["static", "preview"]).describe("Whether the environment is static or a preview."),
|
|
342548
342555
|
name: exports_external.string(),
|
|
342549
342556
|
runConcurrencyLimit: exports_external.string().describe('Maximum number of concurrent runs: a whole number, "unlimited", or a concurrency expression.'),
|
|
342550
|
-
status: exports_external.enum(["blocked", "needs-investigation", "ready", "running"]).describe("Standing health across the environment's runs: blocked (open blocking bugs), needs-investigation (failures awaiting triage), running (flows executing), ready (none of the above — the greenlit state)."),
|
|
342557
|
+
status: exports_external.enum(["blocked", "needs-investigation", "ready", "running"]).describe("Standing health across the environment's runs, not its Git reconciliation state: blocked (open blocking bugs), needs-investigation (failures awaiting triage), running (flows executing), ready (none of the above — the greenlit state)."),
|
|
342551
342558
|
terminatedAt: exports_external.iso.datetime().optional().describe("When the environment was terminated, if it has been.")
|
|
342552
342559
|
}, { urlFieldDescription: "Absolute URL of the environment page." });
|
|
342553
342560
|
|
|
@@ -342556,6 +342563,7 @@ var makeFindEnvironmentsContract = (ids) => {
|
|
|
342556
342563
|
const input = exports_external.object({
|
|
342557
342564
|
includeTerminated: exports_external.boolean().default(false).describe("Also list terminated environments. By default only environments that have not been terminated are listed."),
|
|
342558
342565
|
kind: exports_external.enum(["static", "preview"]).optional().describe("Only list environments of this kind. Omit to list both."),
|
|
342566
|
+
workspaceId: ids.workspace.optional().describe("The workspace to list environments from. Required when authenticating with an organization or user API key."),
|
|
342559
342567
|
...makePaginationInputFields({ defaultLimit: 20, maxLimit: 100 })
|
|
342560
342568
|
});
|
|
342561
342569
|
const output = exports_external.object({
|
|
@@ -342601,7 +342609,7 @@ var makeGetEnvironmentContract = (ids) => {
|
|
|
342601
342609
|
});
|
|
342602
342610
|
const output = makeEnvironmentResourceSchema(ids);
|
|
342603
342611
|
return {
|
|
342604
|
-
description: "Read a single environment's name, kind, health
|
|
342612
|
+
description: "Read a single environment's name, kind, standing run health, flow-code branch and reconciliation state, run concurrency limit, and termination state. If flowCodeBranch exists, use its syncStatus for Git reconciliation and read lastSyncedCommitHash only when syncStatus is reconciled.",
|
|
342605
342613
|
input,
|
|
342606
342614
|
kind: "read",
|
|
342607
342615
|
name: "environment.get",
|
|
@@ -342643,7 +342651,7 @@ var makeSetEnvironmentVariableContract = (ids) => {
|
|
|
342643
342651
|
var makeCreateEnvironmentContract = (ids) => {
|
|
342644
342652
|
const input = exports_external.object({
|
|
342645
342653
|
name: exports_external.string().min(1).max(255).regex(/\S/, "Environment name cannot be blank.").describe("Display name of the new environment."),
|
|
342646
|
-
workspaceId: ids.workspace.optional().describe("The workspace to create the environment in. Required when authenticating with an organization API key.")
|
|
342654
|
+
workspaceId: ids.workspace.optional().describe("The workspace to create the environment in. Required when authenticating with an organization or user API key.")
|
|
342647
342655
|
});
|
|
342648
342656
|
const output = makeEnvironmentResourceSchema(ids);
|
|
342649
342657
|
return {
|
|
@@ -342683,9 +342691,10 @@ var makeTagResourceSchema = () => resource({
|
|
|
342683
342691
|
}, {
|
|
342684
342692
|
urlFieldDescription: "Absolute URL of the team's tag settings page."
|
|
342685
342693
|
});
|
|
342686
|
-
var makeCreateTagContract = () => {
|
|
342694
|
+
var makeCreateTagContract = (ids) => {
|
|
342687
342695
|
const input = exports_external.object({
|
|
342688
|
-
name: exports_external.string().trim().min(1).max(255).refine((name) => !name.includes(","), "Tag names cannot include commas.")
|
|
342696
|
+
name: exports_external.string().trim().min(1).max(255).refine((name) => !name.includes(","), "Tag names cannot include commas."),
|
|
342697
|
+
workspaceId: ids.workspace.optional().describe("The workspace to create the tag in. Required when authenticating with an organization or user API key.")
|
|
342689
342698
|
});
|
|
342690
342699
|
const output = makeTagResourceSchema();
|
|
342691
342700
|
return {
|
|
@@ -342809,7 +342818,7 @@ var makeFindIssuesContract = (ids) => {
|
|
|
342809
342818
|
...makePaginationInputFields({ defaultLimit: 20, maxLimit: 100 }),
|
|
342810
342819
|
statuses: exports_external.array(issueStatusSchema).min(1).default([...openIssueStatuses]).describe("Issue statuses to include. Defaults to pending, in-progress, and paused issues."),
|
|
342811
342820
|
type: publicIssueTypeSchema.describe("The issue type to include: bug report, maintenance report, or coverage request."),
|
|
342812
|
-
workspaceId: ids.workspace.optional().describe("The workspace whose issues to list. Required when authenticating with an organization API key.")
|
|
342821
|
+
workspaceId: ids.workspace.optional().describe("The workspace whose issues to list. Required when authenticating with an organization or user API key.")
|
|
342813
342822
|
});
|
|
342814
342823
|
const output = exports_external.object({
|
|
342815
342824
|
issues: exports_external.array(makeIssueResourceSchema(ids)).describe("The team's bug reports, maintenance reports, or coverage requests, newest first."),
|
|
@@ -342863,7 +342872,7 @@ var makeCreateIssueContract = (ids) => {
|
|
|
342863
342872
|
description: exports_external.string().optional().describe("The issue description as plain text; each line becomes a paragraph. Markdown is not parsed."),
|
|
342864
342873
|
name: exports_external.string().trim().min(1).max(255),
|
|
342865
342874
|
priority: issuePrioritySchema.optional().describe('Defaults to "unprioritized".'),
|
|
342866
|
-
workspaceId: ids.workspace.optional().describe("The workspace to create the issue in. Required when authenticating with an organization API key.")
|
|
342875
|
+
workspaceId: ids.workspace.optional().describe("The workspace to create the issue in. Required when authenticating with an organization or user API key.")
|
|
342867
342876
|
};
|
|
342868
342877
|
const input = exports_external.discriminatedUnion("type", [
|
|
342869
342878
|
exports_external.object({
|
|
@@ -343025,6 +343034,25 @@ var makeGetRunContract = (ids) => {
|
|
|
343025
343034
|
};
|
|
343026
343035
|
};
|
|
343027
343036
|
|
|
343037
|
+
// node_modules/@qawolf/api-contracts/dist/v1/run/reattempt.js
|
|
343038
|
+
var makeReattemptRunContract = (ids) => {
|
|
343039
|
+
const input = exports_external.object({
|
|
343040
|
+
flowIds: exports_external.array(ids.flow).min(1).max(300).refine((flowIds) => new Set(flowIds).size === flowIds.length, "flowIds must be unique").optional().describe("The flows to reattempt. Every named flow must be eligible or the " + "whole request is rejected. Omit to reattempt every eligible flow."),
|
|
343041
|
+
runId: ids.run
|
|
343042
|
+
});
|
|
343043
|
+
const output = resource({
|
|
343044
|
+
reattemptedFlowIds: exports_external.array(ids.flow).describe("The flows a new attempt was requested for."),
|
|
343045
|
+
runId: ids.run
|
|
343046
|
+
}, { urlFieldDescription: "Absolute URL of the run page." });
|
|
343047
|
+
return {
|
|
343048
|
+
description: "Request new attempts for a run's flows, in the same run. " + "A flow is eligible once its result is failed or canceled and QA Wolf's " + "automatic retries have finished. " + "A fully investigated run no longer accepts reattempts. " + "Attempts run with the latest flow code. Poll run.get for results.",
|
|
343049
|
+
input,
|
|
343050
|
+
kind: "write",
|
|
343051
|
+
name: "run.reattempt",
|
|
343052
|
+
output
|
|
343053
|
+
};
|
|
343054
|
+
};
|
|
343055
|
+
|
|
343028
343056
|
// node_modules/@qawolf/api-contracts/dist/v1/runner/evaluateSnippet.js
|
|
343029
343057
|
var maxSnippetCodeLength = 64 * 1024;
|
|
343030
343058
|
var makeEvaluateSnippetOnRunnerContract = () => {
|
|
@@ -343253,6 +343281,7 @@ var makeListTagsContract = (ids) => {
|
|
|
343253
343281
|
const input = exports_external.object({
|
|
343254
343282
|
includeFlowIds: exports_external.boolean().default(false).describe("Also return the ids of the flows that carry each tag."),
|
|
343255
343283
|
names: exports_external.array(exports_external.string().trim().min(1)).min(1).max(100).optional().describe("Only list tags with these names. Matching is case sensitive. Omit to list all tags."),
|
|
343284
|
+
workspaceId: ids.workspace.optional().describe("The workspace to list tags from. Required when authenticating with an organization or user API key."),
|
|
343256
343285
|
...makePaginationInputFields({ defaultLimit: 20, maxLimit: 100 })
|
|
343257
343286
|
});
|
|
343258
343287
|
const output = exports_external.object({
|
|
@@ -343300,7 +343329,8 @@ var makeContractsV1 = (ids) => {
|
|
|
343300
343329
|
run: {
|
|
343301
343330
|
create: makeCreateRunContract(resolvedIds),
|
|
343302
343331
|
find: makeFindRunsContract(resolvedIds),
|
|
343303
|
-
get: makeGetRunContract(resolvedIds)
|
|
343332
|
+
get: makeGetRunContract(resolvedIds),
|
|
343333
|
+
reattempt: makeReattemptRunContract(resolvedIds)
|
|
343304
343334
|
},
|
|
343305
343335
|
runner: {
|
|
343306
343336
|
evaluateSnippet: makeEvaluateSnippetOnRunnerContract(),
|
|
@@ -343315,7 +343345,7 @@ var makeContractsV1 = (ids) => {
|
|
|
343315
343345
|
terminate: makeTerminateRunnerContract()
|
|
343316
343346
|
},
|
|
343317
343347
|
tag: {
|
|
343318
|
-
create: makeCreateTagContract(),
|
|
343348
|
+
create: makeCreateTagContract(resolvedIds),
|
|
343319
343349
|
list: makeListTagsContract(resolvedIds)
|
|
343320
343350
|
}
|
|
343321
343351
|
};
|
|
@@ -345836,7 +345866,7 @@ function startUpdateCheck(deps) {
|
|
|
345836
345866
|
// package.json
|
|
345837
345867
|
var package_default = {
|
|
345838
345868
|
name: "@qawolf/cli",
|
|
345839
|
-
version: "1.
|
|
345869
|
+
version: "1.15.0",
|
|
345840
345870
|
description: "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
|
|
345841
345871
|
keywords: [
|
|
345842
345872
|
"automation",
|
|
@@ -345896,7 +345926,7 @@ var package_default = {
|
|
|
345896
345926
|
"@clack/prompts": "1.5.1",
|
|
345897
345927
|
"@napi-rs/keyring": "1.3.0",
|
|
345898
345928
|
"@oxc-node/core": "0.1.0",
|
|
345899
|
-
"@qawolf/api-contracts": "0.
|
|
345929
|
+
"@qawolf/api-contracts": "0.30.0",
|
|
345900
345930
|
"@qawolf/emails": "1.1.1",
|
|
345901
345931
|
"@qawolf/flow-targets": "1.0.0",
|
|
345902
345932
|
"@qawolf/flows": "0.1.4",
|
|
@@ -358194,4 +358224,4 @@ createProgram({ signals }).parseAsync().catch(() => {
|
|
|
358194
358224
|
process.exitCode = 1;
|
|
358195
358225
|
}).finally(() => flushAndExit(typeof process.exitCode === "number" ? process.exitCode : 0));
|
|
358196
358226
|
|
|
358197
|
-
//# debugId=
|
|
358227
|
+
//# debugId=DD39A64EAC42A5D564756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qawolf/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"automation",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@clack/prompts": "1.5.1",
|
|
61
61
|
"@napi-rs/keyring": "1.3.0",
|
|
62
62
|
"@oxc-node/core": "0.1.0",
|
|
63
|
-
"@qawolf/api-contracts": "0.
|
|
63
|
+
"@qawolf/api-contracts": "0.30.0",
|
|
64
64
|
"@qawolf/emails": "1.1.1",
|
|
65
65
|
"@qawolf/flow-targets": "1.0.0",
|
|
66
66
|
"@qawolf/flows": "0.1.4",
|
|
@@ -118,7 +118,7 @@ current branch.
|
|
|
118
118
|
| `qawolf environment create` | write | Create an environment on the caller's team and return it in the environment.get shape. |
|
|
119
119
|
| `qawolf environment deleteVariable` | write | Remove one environment variable by name. Succeeds whether or not the variable existed. |
|
|
120
120
|
| `qawolf environment find` | read | List the team's environments, newest first. |
|
|
121
|
-
| `qawolf environment get` | read | Read a single environment's name, kind, health
|
|
121
|
+
| `qawolf environment get` | read | Read a single environment's name, kind, standing run health, flow-code branch and reconciliation state, run concurrency limit, and termination state. If flowCodeBranch exists, use its syncStatus for Git reconciliation and read lastSyncedCommitHash only when syncStatus is reconciled. |
|
|
122
122
|
| `qawolf environment getVariable` | read | Read the values of named environment variables in one call. Values are secrets. Names that do not exist go to missingNames and do not fail the call. |
|
|
123
123
|
| `qawolf environment listVariableNames` | read | Use this to answer which QA Wolf environment variables are available to test code. Returns names only; values never leave the server. |
|
|
124
124
|
| `qawolf environment setVariable` | write | Create or replace an environment variable. If the user asks to create one for "my email" without naming it, use DEFAULT_EMAIL. The value is never returned. |
|
|
@@ -141,6 +141,7 @@ current branch.
|
|
|
141
141
|
| `qawolf run create` | write | Create a run for the selected flows and/or tags in an environment. |
|
|
142
142
|
| `qawolf run find` | read | List an environment's recent runs, newest first. |
|
|
143
143
|
| `qawolf run get` | read | Get a run's status, per-flow results, and links. |
|
|
144
|
+
| `qawolf run reattempt` | write | Request new attempts for a run's flows, in the same run. A flow is eligible once its result is failed or canceled and QA Wolf's automatic retries have finished. A fully investigated run no longer accepts reattempts. Attempts run with the latest flow code. Poll run.get for results. |
|
|
144
145
|
| `qawolf runner act` | write | Perform one raw action on a runner's screen: click, double_click, scroll, move, drag, keypress, navigate or type. Use - to read a whole action as JSON from stdin |
|
|
145
146
|
| `qawolf runner events` | read | Print a runner's journal, one entry per line. QA Wolf writes console, recorder, run-events, run-logs, run-status |
|
|
146
147
|
| `qawolf runner exec` | write | Evaluate a snippet against a runner's live page. Use - to read the snippet from stdin |
|