@lmctl-ai/lmctl 0.2.55 → 0.2.56
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 -0
- package/build-info.json +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/lmscript.js +262 -258
- package/examples/batchscript.lms +4 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,9 @@ All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
- **Gate fixes: script ABI restored.** lm_members and lm_session_list return plain arrays; lm_member returns a map-or-null; prompt reads return arrays; batch open/close use managed handles/booleans. Seed/lint/turn results retain legacy projections and snake-case prompt IDs. Neutral API envelopes remain internal, and operational failures name the script call.
|
|
8
|
+
- **Argument-tail contract clarified.** Everything after a script source, including a first `--`, is data in args/ARGV. The integration expectation was corrected; no product argument parser change or separator consumption was introduced.
|
|
9
|
+
|
|
7
10
|
- **Breaking: standalone LMScript replaces the embedded engine.** `lmctl script`, `.lms` quickrun samples (including hello), hello seed/prompt execution and the `.lms` intent route launch the packaged standalone interpreter. The embedded `src/script` tree and `./script` export are removed; the neutral lmctl API remains internal to the package.
|
|
8
11
|
- Migrate removed built-in names: `sleep` → `sleep_ms` (milliseconds); `clock` → `now`; `urlget` → `http_get`; `capitalize` → `upper_first`; `indexOf` → `index_of`; `toLowerCase` → `lower`; `toUpperCase` → `upper`; `has` → `has_key`; `match` and `search` → `regex_match`; `test` → `regex_test`; `findall` → `regex_find_all`; `count` → `len` for length or `count_matches` for substring occurrences; `json` → `json_parse` for parsing or `json_stringify` for serialization. The checker names the replacement. `size`, `hash`, `list`, `array`, `clear`, `delete_file` and `remove_file` remain supported; this migration does not remove them.
|
|
9
12
|
- Implicit `lmbee_*` functions are disabled until the standalone lmbee module exists. This includes snapshot/queue/task/cron helpers; `skills-scripts/lms-adhoc/lmbee_triage_impl.lms` and its dispatcher require that future packaged module. The separate mono-test bridge project also has a `lmbee-lmscript/examples/queue-report.lms` example and bridge-options/end-to-end/failure/facade fixtures; those require their explicitly supplied bridge and are not evidence that this package ships it. Calls fail checking before effects rather than returning empty data.
|
package/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"sha": "
|
|
1
|
+
{"sha": "373606ec3ec58a7583fd918be31f1bbf0bdc2ae0", "dirty": true, "builtAt": "2026-10-05T03:33:13.000Z"}
|
package/dist/cli/index.js
CHANGED
|
@@ -2319,7 +2319,7 @@ Legacy .lmctl templates still accept --no-seed and --no-terminal.
|
|
|
2319
2319
|
`);let S=y[0];n=await i.ask(`Provider${S?` [${S}]`:""}: `)||S}if(!n||!Object.hasOwn(Cn,n))throw new Error(`Unknown provider: ${n??"(empty)"}`);if(s?.trim()||(s=await i.ask("Prompt: ")),!s.trim())throw new Error("A prompt is required.")}catch(E){return e.stderr.write(`error: ${E instanceof Error?E.message:String(E)}
|
|
2320
2320
|
`),2}finally{i.close()}let a=r.cwd??e.cwd??process.cwd(),l=r.fetchFn??fetch,c=`${Kw}/${n}.lmctl`,d;try{d=await Ir(c,l,a)}catch(E){return e.stderr.write(`error: could not fetch ${c}: ${E instanceof Error?E.message:String(E)}
|
|
2321
2321
|
`),1}let u=Gw(a,`${n}_hello.lmctl`);for(let E=2;bM(u);E++)u=Gw(a,`${n}_hello${E}.lmctl`);kM(u,d,{encoding:"utf8",flag:"wx"}),e.stdout.write(`Wrote ${u}
|
|
2322
|
-
`);let m=`s=lm_seed(args[0]);if(s.status!="ok"){
|
|
2322
|
+
`);let m=`s=lm_seed(args[0]);if(s.status!="ok"){lm_exit(${Jw});}r=lm_prompt(args[0],"Lead",args[1]);if(r.status!="ok"){lm_error(r.error);lm_exit(1);}println(r.reply);`,f="",p=new Set,g=(E=!1)=>{let y;for(;(y=f.indexOf(`
|
|
2323
2323
|
`))>=0;){let S=f.slice(0,y);if(f=f.slice(y+1),S.startsWith("error: ")){if(p.has(S))continue;p.add(S)}e.stderr.write(S+`
|
|
2324
2324
|
`)}E&&f&&(e.stderr.write(f),f="")},_={...e,cwd:a,stderr:{write:E=>{f+=E,g()}}},h=await(r.launch??vr)(["-e",m,u,s],_);if(g(!0),h===Jw)return 1;let T=Xw(u);return e.stdout.write(`
|
|
2325
2325
|
Continue with this team:
|