@drip-apex/apex-cli 0.9.0 → 0.10.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 +5 -1
- package/dist/cli.js +11 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -129,7 +129,7 @@ including every subcommand, argument, option, and alias.
|
|
|
129
129
|
- `apex experiments` — create, inspect, operate, and synchronize experiments.
|
|
130
130
|
Use `apex experiments screenshots <id-or-slug>` to force-assign every capture, including control, to its variation server-side for deterministic screenshots. Resume a job that outlives the CLI timeout with `--job <id>`; polling continues without creating another job, and the stored job's devices and variations win, so `--devices`/`--variations` are ignored (the CLI warns). The command attaches terminal jobs to the QA run by default; use `--no-attach-qa` to opt out. Choose devices with `--devices`, filter treatments with `--variations`, and use `--json` for the signed result payload. Use `apex experiments qa evidence` with `--job`, repeatable `--file`, or `--records` to write QA evidence directly.
|
|
131
131
|
- `apex push` — synchronize `.drip.config.ts` with Apex.
|
|
132
|
-
- `apex preview` — open a variation QA preview.
|
|
132
|
+
- `apex preview` — open a variation QA preview; `--proxy` returns a `qa_run` receipt. Its `automated_evidence_count` counts the normalized `evidenceRecords` across all evidence kinds, matching the list shown by `apex experiments qa status`.
|
|
133
133
|
- `apex roadmap` — consume approved roadmap ideas and handoffs.
|
|
134
134
|
- `apex harness` — develop AB Test Harness projects with live QA sessions.
|
|
135
135
|
- `apex workspace` — check out, preview, and publish draft workspace files.
|
|
@@ -328,3 +328,7 @@ optimistic concurrency token.
|
|
|
328
328
|
| --- | --- |
|
|
329
329
|
| `approval` | Roadmap decision status (`proposed` without a decision), item stage, and decision's nullable `decided_at`. Top-level `status` remains the item lifecycle status. |
|
|
330
330
|
| `goals` | `apex_goal_id` is the linked experiment goal or null. |
|
|
331
|
+
|
|
332
|
+
QA status creates a run only when none exists. Reading an existing run never writes
|
|
333
|
+
to it: `updatedAt` is its last stored mutation time, while `computedAt` is the ISO
|
|
334
|
+
timestamp when the current checklist and summary were computed.
|
package/dist/cli.js
CHANGED
|
@@ -7112,7 +7112,7 @@ var import_node_os3 = __toESM(require("node:os"));
|
|
|
7112
7112
|
// package.json
|
|
7113
7113
|
var package_default = {
|
|
7114
7114
|
name: "@drip-apex/apex-cli",
|
|
7115
|
-
version: "0.
|
|
7115
|
+
version: "0.10.0",
|
|
7116
7116
|
license: "MIT",
|
|
7117
7117
|
description: "Apex CLI for managing experiments, approved roadmap ideas, and draft workspaces.",
|
|
7118
7118
|
private: false,
|
|
@@ -9639,6 +9639,7 @@ function printQaPreviewUrls(experimentId, result) {
|
|
|
9639
9639
|
function printQaRun(run3) {
|
|
9640
9640
|
console.log();
|
|
9641
9641
|
console.log(source_default.bold(`QA run ${run3.id}`));
|
|
9642
|
+
console.log(` computedAt: ${run3.computedAt}`);
|
|
9642
9643
|
console.log(` Status: ${statusBadge(run3.summary.status)}`);
|
|
9643
9644
|
console.log(` Required: ${run3.summary.completedRequired}/${run3.summary.required}`);
|
|
9644
9645
|
if (run3.approvedAt) console.log(` Approved: ${run3.approvedAt}`);
|
|
@@ -10826,7 +10827,9 @@ var applyFilesystem = new Command("apply").option("--sync", "Refresh local autho
|
|
|
10826
10827
|
fail(this, error instanceof Error ? error.message : String(error));
|
|
10827
10828
|
}
|
|
10828
10829
|
});
|
|
10829
|
-
var qaStatus = new Command("status").description(
|
|
10830
|
+
var qaStatus = new Command("status").description(
|
|
10831
|
+
"Show the latest experiment QA run (creates one only when none exists; reads never change updatedAt)"
|
|
10832
|
+
).argument(
|
|
10830
10833
|
"[folder-or-id]",
|
|
10831
10834
|
"Experiment filesystem folder, ID, slug, or test key (for example BIO-085)",
|
|
10832
10835
|
"."
|
|
@@ -11791,7 +11794,9 @@ var pushCommand = new Command("push").description("Push experiment definitions f
|
|
|
11791
11794
|
|
|
11792
11795
|
// src/commands/preview.ts
|
|
11793
11796
|
init_source();
|
|
11794
|
-
var previewCommand = new Command("preview").description(
|
|
11797
|
+
var previewCommand = new Command("preview").description(
|
|
11798
|
+
"Open QA preview URL for an experiment variation; proxy previews return a QA run receipt"
|
|
11799
|
+
).argument("<id-or-slug>", "Experiment ID or slug").argument("[variation-id]", "Variation ID (defaults to first non-control)").option("--store-url <url>", "Override experiment store_url (target website URL)").option("--proxy", "Create an artifact-injecting proxy preview").option("--ttl <hours>", "Proxy preview lifetime in hours (1-168)").option("--no-open", "Print URL instead of opening browser").action(
|
|
11795
11800
|
async (idOrSlug, variationId, opts) => {
|
|
11796
11801
|
const creds = requireCredentials();
|
|
11797
11802
|
if (opts?.proxy) {
|
|
@@ -11819,6 +11824,9 @@ var previewCommand = new Command("preview").description("Open QA preview URL for
|
|
|
11819
11824
|
const data = created.data;
|
|
11820
11825
|
output(previewCommand, data, () => {
|
|
11821
11826
|
console.log(source_default.cyan(data.preview_url));
|
|
11827
|
+
console.log(
|
|
11828
|
+
data.qa_run.created ? `QA run ${data.qa_run.id} created` : `QA run ${data.qa_run.id} refreshed (${data.qa_run.automated_evidence_count} automated evidence records)`
|
|
11829
|
+
);
|
|
11822
11830
|
const expiresAt = new Date(data.expires_at);
|
|
11823
11831
|
const remainingMs = expiresAt.getTime() - Date.now();
|
|
11824
11832
|
const value = remainingMs < 864e5 ? Math.max(1, Math.round(remainingMs / 36e5)) : Math.round(remainingMs / 864e5);
|