proof-artifacts 0.1.0-preview.0 → 0.1.0-preview.1
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 +2 -1
- package/bin/proof-artifacts.js +13 -10
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/VPS.md +1 -0
- package/package.json +1 -1
- package/skills/proof-artifacts/SKILL.md +2 -1
package/README.md
CHANGED
|
@@ -26,6 +26,7 @@ proof-artifacts stop --name demo
|
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
The noVNC desktop is bound to `127.0.0.1` with a Docker-assigned port by default. The CLI prints the exact URL and writes it to the session manifest.
|
|
29
|
+
The default desktop runtime image is pulled from `ghcr.io/notkainoa/proof-artifacts-desktop:0.1.0-preview.0`; if pulling fails, the CLI can still build the local runtime image as a fallback.
|
|
29
30
|
If your app is running on the VPS host at `localhost`, pass the URL when starting and the CLI will infer host networking:
|
|
30
31
|
|
|
31
32
|
```sh
|
|
@@ -83,7 +84,7 @@ The agent should then:
|
|
|
83
84
|
|
|
84
85
|
## Still Planned
|
|
85
86
|
|
|
86
|
-
-
|
|
87
|
+
- Automating public runtime image publishing from CI.
|
|
87
88
|
- More project-type detectors and runtime images for common Linux desktop dependencies.
|
|
88
89
|
- An MCP server that wraps the stable CLI lifecycle.
|
|
89
90
|
|
package/bin/proof-artifacts.js
CHANGED
|
@@ -17,7 +17,8 @@ import { fileURLToPath } from "node:url";
|
|
|
17
17
|
|
|
18
18
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
19
19
|
const rootDir = path.resolve(__dirname, "..");
|
|
20
|
-
const defaultImage = "proof-artifacts
|
|
20
|
+
const defaultImage = "ghcr.io/notkainoa/proof-artifacts-desktop:0.1.0-preview.0";
|
|
21
|
+
const localBuildImage = "proof-artifacts/desktop:0.1.0-preview.0";
|
|
21
22
|
const defaultName = "default";
|
|
22
23
|
const defaultWidth = "1280";
|
|
23
24
|
const defaultHeight = "800";
|
|
@@ -208,20 +209,22 @@ function buildImage(image) {
|
|
|
208
209
|
|
|
209
210
|
function ensureRuntimeImage(opts = {}) {
|
|
210
211
|
const requestedImage = opts.image ?? process.env.PROOF_ARTIFACTS_IMAGE ?? defaultImage;
|
|
212
|
+
const usesDefaultImage = requestedImage === defaultImage;
|
|
211
213
|
if (isTruthy(opts.rebuild)) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
+
const image = usesDefaultImage ? localBuildImage : requestedImage;
|
|
215
|
+
buildImage(image);
|
|
216
|
+
return { image, requestedImage, imageSource: "rebuilt" };
|
|
214
217
|
}
|
|
215
218
|
|
|
216
219
|
if (imageExists(requestedImage)) {
|
|
217
220
|
return { image: requestedImage, requestedImage, imageSource: "local" };
|
|
218
221
|
}
|
|
219
222
|
|
|
220
|
-
if (
|
|
223
|
+
if (!usesDefaultImage && !isTruthy(opts.pull)) {
|
|
221
224
|
throw new Error(`Runtime image ${requestedImage} is not available locally. Build it locally first or pass --pull to pull a remote image explicitly.`);
|
|
222
225
|
}
|
|
223
226
|
|
|
224
|
-
const shouldPull = isTruthy(opts.pull);
|
|
227
|
+
const shouldPull = usesDefaultImage || isTruthy(opts.pull);
|
|
225
228
|
if (shouldPull) {
|
|
226
229
|
console.log(`Runtime image not found locally. Pulling ${requestedImage}...`);
|
|
227
230
|
const pull = dockerTry(["pull", requestedImage], { stdio: "inherit" });
|
|
@@ -231,18 +234,18 @@ function ensureRuntimeImage(opts = {}) {
|
|
|
231
234
|
if (isTruthy(opts["no-build"])) {
|
|
232
235
|
throw new Error(`Could not pull runtime image ${requestedImage}, and --no-build was set.`);
|
|
233
236
|
}
|
|
234
|
-
console.log(`Pull failed; building local runtime image ${
|
|
237
|
+
console.log(`Pull failed; building local runtime image ${localBuildImage} instead.`);
|
|
235
238
|
}
|
|
236
239
|
|
|
237
240
|
if (isTruthy(opts["no-build"])) {
|
|
238
241
|
throw new Error(`Runtime image ${requestedImage} is not available locally, and --no-build was set.`);
|
|
239
242
|
}
|
|
240
243
|
|
|
241
|
-
buildImage(
|
|
244
|
+
buildImage(localBuildImage);
|
|
242
245
|
return {
|
|
243
|
-
image:
|
|
246
|
+
image: localBuildImage,
|
|
244
247
|
requestedImage,
|
|
245
|
-
imageSource:
|
|
248
|
+
imageSource: "built-fallback",
|
|
246
249
|
};
|
|
247
250
|
}
|
|
248
251
|
|
|
@@ -1175,7 +1178,7 @@ function cmdDoctor(input = []) {
|
|
|
1175
1178
|
if (dockerAvailable) {
|
|
1176
1179
|
const dockerDaemon = spawnSync("docker", ["info"], { encoding: "utf8", stdio: "pipe" });
|
|
1177
1180
|
addCheck(dockerDaemon.status === 0 ? "pass" : "fail", "Docker daemon", dockerDaemon.status === 0 ? "reachable" : dockerDaemon.stderr.trim());
|
|
1178
|
-
addCheck(imageExists(defaultImage) ? "pass" : "warn", "Default runtime image", imageExists(defaultImage) ? defaultImage : "not
|
|
1181
|
+
addCheck(imageExists(defaultImage) ? "pass" : "warn", "Default runtime image", imageExists(defaultImage) ? defaultImage : "not available locally; first start/smoke will pull it or build a local fallback");
|
|
1179
1182
|
}
|
|
1180
1183
|
|
|
1181
1184
|
try {
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -29,7 +29,7 @@ Each session is one Docker container:
|
|
|
29
29
|
On Unix hosts, the container runs as the invoking UID/GID when available so screenshots, recordings, and reports stay removable by the VPS user.
|
|
30
30
|
Bridge-mode sessions also add `host.docker.internal` as a Docker host-gateway alias for VPS-host app access when the provider allows bridge-to-host traffic. That path is best-effort: some VPS firewall/Docker setups block bridge-to-host traffic. For localhost dev servers on the VPS host, `start --url http://127.0.0.1:<port>` infers host networking so Chromium can use the same network namespace as the app. Host-network sessions bind noVNC to VPS localhost and auto-probe noVNC/VNC ports when possible.
|
|
31
31
|
|
|
32
|
-
The CLI
|
|
32
|
+
The CLI defaults to the preview GHCR runtime image at `ghcr.io/notkainoa/proof-artifacts-desktop:0.1.0-preview.0` and falls back to a local Docker build when pulling fails. CI should publish the image automatically before stable release so the npm package and runtime image stay version-matched.
|
|
33
33
|
|
|
34
34
|
The host keeps artifacts at:
|
|
35
35
|
|
|
@@ -99,4 +99,4 @@ Linux lets us create virtual displays without OS-private APIs or driver installa
|
|
|
99
99
|
- `proof-artifacts list/status` lets agents understand existing sessions before starting, stopping, or replacing anything.
|
|
100
100
|
- `proof-artifacts install-skill` gives Codex agents the workflow.
|
|
101
101
|
|
|
102
|
-
Future v0 success criteria should include CI
|
|
102
|
+
Future v0 success criteria should include automated CI image publishing, more project/runtime coverage, and an MCP wrapper after CLI semantics settle.
|
package/docs/VPS.md
CHANGED
|
@@ -16,6 +16,7 @@ proof-artifacts smoke
|
|
|
16
16
|
|
|
17
17
|
Some providers ship newer Docker packages through their own images. If `docker.io` is old or unavailable, install Docker Engine from Docker's official apt repository instead.
|
|
18
18
|
After the package is published, replace the local source install with `npm install -g proof-artifacts`.
|
|
19
|
+
The first desktop start pulls `ghcr.io/notkainoa/proof-artifacts-desktop:0.1.0-preview.0` by default. Use `proof-artifacts smoke --rebuild` only when testing local runtime changes or when you intentionally want to bypass the published image.
|
|
19
20
|
|
|
20
21
|
## Start A Desktop
|
|
21
22
|
|
package/package.json
CHANGED
|
@@ -36,6 +36,7 @@ proof-artifacts doctor
|
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
If Node/npm is missing, install Node.js 18+ first or tell the user the machine needs Node.js before the skill can continue. If Docker is missing or the user cannot access the Docker daemon, explain that Docker Engine is the required Linux desktop substrate and give the exact next command for the detected distro when it is obvious. On a new VPS, run `proof-artifacts doctor --deep` when you want the CLI to perform a disposable smoke capture.
|
|
39
|
+
The CLI pulls the preview GHCR desktop runtime by default and falls back to a local Docker build if the pull fails. Use `--rebuild` only when testing local runtime changes.
|
|
39
40
|
|
|
40
41
|
## Workflow
|
|
41
42
|
|
|
@@ -134,7 +135,7 @@ Do not put secrets in scripts passed over stdin; the CLI does not record stdin c
|
|
|
134
135
|
|
|
135
136
|
- `proof-artifacts smoke --keep` leaves the test desktop running for inspection.
|
|
136
137
|
- `proof-artifacts smoke --rebuild` rebuilds the local runtime image before testing local runtime changes.
|
|
137
|
-
- `proof-artifacts start --image <image> --pull` tries a
|
|
138
|
+
- `proof-artifacts start --image <image> --pull` tries a custom runtime image before local build fallback.
|
|
138
139
|
- `proof-artifacts open <url> --name <task-name> --fullscreen` opens Chromium as a full-display browser window with browser chrome still visible.
|
|
139
140
|
- `proof-artifacts detect --project <repo-path>` suggests whether the project is web, Linux desktop, or unsupported in the Linux runtime.
|
|
140
141
|
- `proof-artifacts launch --name <task-name> --window-match <title> -- <command...>` starts a Linux desktop app inside the session.
|