@qawolf/cli 1.23.0 → 1.25.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 +2215 -640
- package/dist/runner-sdk.js +839 -139
- package/dist/types/runnerSdk/types.d.ts +6 -2
- package/package.json +2 -2
- package/skills/qawolf-cli/SKILL.md +11 -3
|
@@ -108,11 +108,15 @@ export type SubmittedRun = {
|
|
|
108
108
|
fileSync: FileSync;
|
|
109
109
|
runId: string;
|
|
110
110
|
};
|
|
111
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* A runner running on the team. `isDefault` and `launchedHere` are this working
|
|
113
|
+
* directory's own knowledge, which the API has no notion of.
|
|
114
|
+
*/
|
|
112
115
|
export type ListedRunner = {
|
|
113
116
|
id: string;
|
|
114
117
|
isDefault: boolean;
|
|
115
|
-
|
|
118
|
+
launchedHere: boolean;
|
|
119
|
+
runnerName: string;
|
|
116
120
|
};
|
|
117
121
|
export type KeptAlive = {
|
|
118
122
|
id: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qawolf/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "Run and manage QA Wolf flows from the terminal, CI, or an AI agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"automation",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@clack/prompts": "1.5.1",
|
|
72
72
|
"@napi-rs/keyring": "1.3.0",
|
|
73
73
|
"@oxc-node/core": "0.1.0",
|
|
74
|
-
"@qawolf/api-contracts": "0.
|
|
74
|
+
"@qawolf/api-contracts": "0.47.0",
|
|
75
75
|
"@qawolf/emails": "1.1.1",
|
|
76
76
|
"@qawolf/flow-targets": "1.0.0",
|
|
77
77
|
"@qawolf/flows": "0.1.4",
|
|
@@ -127,11 +127,17 @@ that `url`; never guess a route and never send a repository link in its place.
|
|
|
127
127
|
| --- | --- | --- |
|
|
128
128
|
| `qawolf agent get` | read | Read what the QA Wolf AI has said and whether it is still working. Poll this after agent.send until the status settles. A status of "waiting-for-you" means the last reply is a question the work is blocked on, and answering it with agent.send is what unblocks it. Replies accumulate, so a caller that polls repeatedly sees the earlier ones again. |
|
|
129
129
|
| `qawolf agent send` | write | Ask the QA Wolf AI to do a piece of work in plain language, such as covering a user journey, investigating a failing run, or fixing a broken flow. This is the one verb that starts work from nothing: every other write acts on a flow, run or issue that already exists. Answers as soon as the request is accepted, with the id to follow it by, because the work runs for minutes to tens of minutes. Poll agent.get for progress, and send here again to answer a question or add context to work already running. |
|
|
130
|
-
| `qawolf auth login` | local | Authenticate with
|
|
130
|
+
| `qawolf auth login` | local | Authenticate with QA Wolf in a browser or with an API key |
|
|
131
131
|
| `qawolf auth logout` | local | Remove stored credentials |
|
|
132
|
+
| `qawolf auth switch` | local | Choose which workspace to work in |
|
|
132
133
|
| `qawolf auth whoami` | read | Show authentication status |
|
|
133
134
|
| `qawolf automate` | write | Request automation for draft flows. First create a named local .flow.ts draft for every requested journey that does not already have a matching draft; never reuse a generic starter or placeholder. Each new draft must start with a JSDoc Goal: description, import flow from @qawolf/flows/web, and use export default flow(...); a comment-only file or direct test(...) call is not a valid draft. Commit and push all changes with Git to publish them, then list remote drafts to resolve every selected ID. Do not use patch to create or rename a selected flow. Finally make one automation request containing all requested flow IDs. |
|
|
134
135
|
| `qawolf doctor` | local | Diagnose problems running flows locally |
|
|
136
|
+
| `qawolf email find` | read | List the workspace's inbox, or its sent mail, newest first. Read a message body with email.get. |
|
|
137
|
+
| `qawolf email get` | read | Read one email of the workspace, with its plain text and HTML bodies. Use it to pull a sign-in code or a verification link out of a message. |
|
|
138
|
+
| `qawolf email getAttachment` | read | Read one attachment of a workspace email as base64 content, by file name or by position. email.get lists both. |
|
|
139
|
+
| `qawolf email listAddresses` | read | List the workspace's inbox addresses, alphabetical. A flow can sign up with a plus-suffixed form of any of them, and email.find reads what arrives. |
|
|
140
|
+
| `qawolf email send` | write | Send an email from one of the workspace's inbox addresses, for example to exercise a flow that reacts to incoming mail. Returns the sent email; read it back with email.get. |
|
|
135
141
|
| `qawolf environment create` | write | Create an environment on the caller's team and return it in the environment.get shape. |
|
|
136
142
|
| `qawolf environment deleteVariable` | write | Remove one environment variable by name. Succeeds whether or not the variable existed. |
|
|
137
143
|
| `qawolf environment find` | read | List the team's environments, newest first. |
|
|
@@ -140,7 +146,8 @@ that `url`; never guess a route and never send a repository link in its place.
|
|
|
140
146
|
| `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. |
|
|
141
147
|
| `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. |
|
|
142
148
|
| `qawolf environment update` | write | Update an environment owned by the caller's team and return it in the environment.get shape. Omitted fields remain unchanged. |
|
|
143
|
-
| `qawolf flow addTag` | write | Assign an existing tag to the selected flows. Create tags with tag.create. |
|
|
149
|
+
| `qawolf flow addTag` | write | Assign an existing tag to the selected flows. Create tags with tag.create. Flows that already carry the tag are reported in skippedFlows. |
|
|
150
|
+
| `qawolf flow removeTag` | write | Remove a tag from the selected flows. Succeeds whether or not each flow carried the tag; the flows that did not are reported in skippedFlows. |
|
|
144
151
|
| `qawolf flow update` | write | Move a flow between draft and active readiness. The other statuses shown in the app are derived and cannot be set. |
|
|
145
152
|
| `qawolf flows list` | local (read with --remote) | List flows matching [pattern] from the local project, or from a QA Wolf environment with --remote |
|
|
146
153
|
| `qawolf flows pull` | read | Download an environment's flows into the local .qawolf/<env>/ cache |
|
|
@@ -154,6 +161,7 @@ that `url`; never guess a route and never send a repository link in its place.
|
|
|
154
161
|
| `qawolf issue create` | write | Create a bug or coverage request issue for the caller's team. Maintenance issues cannot be created through the public API. |
|
|
155
162
|
| `qawolf issue find` | read | List the team's bug reports, maintenance reports, or coverage requests, newest first. |
|
|
156
163
|
| `qawolf issue get` | read | Get an issue by id. |
|
|
164
|
+
| `qawolf issue removeFlows` | write | Remove flows from a coverage request owned by the caller's team. Flows the request does not cover are left alone. Bug and maintenance reports link to flows through the runs that reproduce them, so their flows cannot be set directly. |
|
|
157
165
|
| `qawolf issue update` | write | Update an issue owned by the caller's team. Omitted fields remain unchanged. |
|
|
158
166
|
| `qawolf run create` | write | Create a run for the selected flows and/or tags in an environment. |
|
|
159
167
|
| `qawolf run diagnose` | write | Diagnose failed flows in a run as reproductions of a bug or maintenance report owned by the caller's team. The issue's type selects the diagnosis. Each flow must have failed in the run. A flow that is already diagnosed moves to this issue. The diagnosis appears on the run, and the reproduction appears under the issue's reproductions. Coverage requests cannot be diagnosed; use issue.addFlows to cover flows instead. |
|
|
@@ -174,7 +182,7 @@ that `url`; never guess a route and never send a repository link in its place.
|
|
|
174
182
|
| `qawolf runner inspect variable` | read | Print a top-level variable's value from the running workflow |
|
|
175
183
|
| `qawolf runner keepalive` | read | Reset a runner's inactivity clock, for a caller that pauses between actions |
|
|
176
184
|
| `qawolf runner launch` | write | Launch an interactive runner and make it this directory's default |
|
|
177
|
-
| `qawolf runner list` | read | List the runners
|
|
185
|
+
| `qawolf runner list` | read | List the runners running on your team |
|
|
178
186
|
| `qawolf runner promote-snapshot` | write | Accept a run's screenshot as the new baseline for an image diff, on the runner that produced it |
|
|
179
187
|
| `qawolf runner run` | write | Run a flow on an interactive runner, shipping the flow and what it imports |
|
|
180
188
|
| `qawolf runner screenshot` | read | Save a JPEG of an interactive runner's screen to a file |
|