@lmctl-ai/lmctl 0.2.451 → 0.2.452
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/CHANGELOG.md +3 -2
- package/dist/cli/index.js +555 -555
- package/dist/cli/lmscript.js +434 -463
- package/dist/dsl.js +434 -463
- package/examples/git_summary.lms +6 -11
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased — schema/import review fixes
|
|
4
4
|
|
|
5
|
-
- LMScript
|
|
5
|
+
- LMScript now checks then executes once by default. Dry-run is explicit, with no default deadline, loop/work budget or PLAN clipping; an explicit dry loop limit stops the whole pass. Removed --no-preflight and --dryrun-timeout are rejected.
|
|
6
|
+
|
|
7
|
+
- LMScript hosts may provide a passive dryRun(args, context) preview without activating their real provider. Calls without one return fresh typed dummies. Public arguments are unchanged; hidden mode parameters, readonly classifications and command grants are removed.
|
|
6
8
|
|
|
7
9
|
- Provider failures are classified once, in lmctl: `src/providers/failure-class.ts` (ordered, conservative rule table over the fleet's recorded errors; `unknown` stays `unknown`). `lmctl prompt --json` failure lines carry `errorClass`, the API `promptMember` result (script `lm_prompt`) carries `errorClass` and a `usage` summary (tokens, reason, estimated cost), and the new pure operation `classifyFailure` (script `lm_classify_failure(text, {model, status})`) classifies stored error text, so consumers keep routing policy only and no regex table. Classes: quota_exhausted, binary_missing, auth_required, upstream_undisclosed, upstream_throttled, model_not_offered, stale_session, transport_interrupted, context_exhausted, receiver_busy, holder_died, unknown.
|
|
8
10
|
- LMScript strict member access (issue 003): reading a missing map key or list index is a run-time error naming the container and the member instead of `undefined`; built-in methods per type (`map.get(key, default)`, `has`, `len`, `keys`; `list.get(index, default)`, `len`; `string.len`) are the one optional form; `X.name(args)` is a method call while `pkg.fn(x)` stays a package call; unknown method names and wrong arities are check errors. Top-level functions are unchanged.
|
|
@@ -68,7 +70,6 @@ All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
|
|
|
68
70
|
|
|
69
71
|
- Resource help and executed examples now describe lexical batch ownership, id-only handles, runtime escape refusal, async acquisition and signal/lease limits. Terminal, operator-prompt and one-shot prompt ownership stays internal.
|
|
70
72
|
- LMScript SDK dry reports now bound loops and elapsed time, execute dry parallel tasks in order, freeze wall time/environment, and serialize bounded PLAN entries to text or JSON.
|
|
71
|
-
- `lmscript` and `lmctl script` now run a dry preflight before every real run: the dry pass runs with effects off, a trusted failure before the first simulated effect exits 2 without a real phase, and anything else proceeds to a fresh real phase. `--dry-run` stops after the dry pass and prints its PLAN (`--plan-format text|json`), `--no-preflight` skips it, and `--dry-loop-limit` / `--dryrun-timeout` bound it. `--check` and `--lint` stay static. Stdin sources, `-e` code and script arguments are forwarded unchanged; an interrupted dry pass exits 130/143 without a real effect.
|
|
72
73
|
- Dry preflight classifies a normal script exit with any code as clean completion, recording stop reason “script exit with code N” without failure or taint. --dry-run still exits 0 after PLAN; the default fresh real phase returns N. require/assert and resourceFailure-tagged LMScriptExit remain fatal failures; error/lm_error and other recorded errors continue and are reproduced in the real phase. Dry run_script calls are planned; real children preflight independently and report their code without making the parent inherit it automatically.
|
|
73
74
|
|
|
74
75
|
- GraphQL literal docs/help now describe raw executable strings, ten schema-free preflight rules, fragment-only composition and gh variables. Examples and exact rejection diagnostics run on both lmscript and lmctl script; field/argument/type/enum schema validation remains a future library hook.
|