gm-skill 2.0.1838 → 2.0.1840
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/bin/plugkit.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.840
|
package/bin/plugkit.wasm.sha256
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1c158d73707afaabe93a67270076573a4bd89a93262ff52f9c691277074b873f plugkit.wasm
|
|
@@ -32,6 +32,8 @@ screenshot\n<expression>
|
|
|
32
32
|
dom=<css-selector>\n
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
**Never a JSON object body.** The body is always one of the plain-text shapes above -- never `{"command":"launch","url":"...","timeoutMs":...}` or any other JSON-object payload. Every other spool verb (`prd-add`, `mutable-add`, `transition`, ...) takes structured JSON, which makes a JSON body an easy but wrong guess for `browser` specifically -- this verb is the one exception, string-only. A JSON-shaped body is rejected up front with a clear error naming the supported shapes; passing it anyway used to fall through to evaluating the raw JSON as a JS expression, producing an opaque `SyntaxError: Unexpected token ':'` with no indication of the real mistake. To launch and navigate: `session new` once, then `url=<target>\n<expression>` on the same or next dispatch -- there is no separate "launch" command.
|
|
36
|
+
|
|
35
37
|
**Open on the page you want to test, not a blank one.** A bare `https://...` URL body navigates the session straight to that page and returns `{url, title}` -- the simplest "show me this page." `url=<url>\n<expression>` navigates first, then runs your expression on the loaded page, so the global/DOM you assert is already there in one dispatch instead of a blank surface you must `page.goto` yourself. `url=` composes with `timeout=` and `capture` -- stack the prefix lines in order `timeout=`, then `url=`, then `capture`, the expression last; the prepended `page.goto` rides inside the capture so its navigation console/network is captured too. A bare expression with no `url=`/bare-URL prefix runs against whatever the session is already on -- a never-navigated session is on `about:blank`, so the expression evaluates an empty page and the envelope comes back with `landed_on_blank: true` and a `hint` telling you to add `url=`; navigate first and the surprise never happens. `session new` returns the id you carry. (`session close` and `session kill` are aliases.) Default per-eval timeout 120000ms; operations that legitimately exceed it prefix `timeout=<ms>\n` (wrapper clamps to 120000ms). The response carries `timeout_ms_used`; `browser.runner-timeout` fires at the cap -- read `stderr`, narrow or raise, never retry blind at the same budget.
|
|
36
38
|
|
|
37
39
|
**`capture\n<expression>` is the zero-boilerplate debug path -- prefer it.** Prefix your script with `capture` (or `profile`) on its own line and the wrapper auto-attaches `page.on('console'|'pageerror'|'requestfinished')` before your code runs, runs your script in an async wrapper (your top-level `await`/`return` work unchanged), and returns `{result: <your return>, debug: {console, pageErrors, network, performance}}` -- page console logs, uncaught errors, per-request network timing, and navigation performance, captured for free. Combine with timeout via `timeout=<ms>\ncapture\n<expr>`. Use the bare expression only when you do not want the capture overhead.
|
package/gm-plugkit/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-plugkit",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1840",
|
|
4
4
|
"description": "Bootstrap and daemon-spawn tool for gm plugkit binary. Downloads the correct platform binary, verifies SHA256, and starts the spool watcher daemon. Includes plugkit-wasm-wrapper for WASM-based spool watching.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -2772,6 +2772,17 @@ function makeHostFunctions(instanceRef) {
|
|
|
2772
2772
|
__idleClosedSessions.delete(sessionId);
|
|
2773
2773
|
stampBrowserLastUse(cwd, sessionId);
|
|
2774
2774
|
markInflight(sessionId, curPid);
|
|
2775
|
+
{
|
|
2776
|
+
const bodyForShapeCheck = trimmed.replace(/^(?:timeout=\d+\s*\n|url=\S+[ \t]*\n)*/, '').trim();
|
|
2777
|
+
if (/^\{/.test(bodyForShapeCheck)) {
|
|
2778
|
+
return writeWasmJson(instanceRef.value, {
|
|
2779
|
+
ok: false,
|
|
2780
|
+
stdout: '',
|
|
2781
|
+
stderr: 'browser verb body is a JSON object, not a supported body shape. The browser verb takes plain-text prefixed bodies only: "session new", "session close", "timeout=<ms>\\n<expr>", "url=<target>\\n<expr>", a bare URL, "screenshot[=name]\\n<expr>", "dom=<selector>\\n<expr>", or "capture|profile|trace ...\\n<expr>" -- never a {"command":...} JSON payload. Use "session new" to open a session, then "url=<target>\\n<js-expression>" to navigate and evaluate in one dispatch.',
|
|
2782
|
+
exit_code: 1,
|
|
2783
|
+
});
|
|
2784
|
+
}
|
|
2785
|
+
}
|
|
2775
2786
|
let evalBody = body;
|
|
2776
2787
|
let timeoutMs = 120000;
|
|
2777
2788
|
const timeoutMatch = body.match(/^timeout=(\d+)\s*\n([\s\S]*)$/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.840
|
package/gm.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1840",
|
|
4
4
|
"description": "Spool-dispatch orchestration engine with unified state machine, skills, and automated git enforcement",
|
|
5
5
|
"author": "AnEntrypoint",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
|
-
"plugkitVersion": "0.1.
|
|
20
|
+
"plugkitVersion": "0.1.840"
|
|
21
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gm-skill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1840",
|
|
4
4
|
"description": "Canonical universal harness — AI-native software engineering via skill-driven orchestration; bootstraps plugkit for task execution and session isolation. Install in any AI coding agent host.",
|
|
5
5
|
"author": "AnEntrypoint",
|
|
6
6
|
"license": "MIT",
|