@lmctl-ai/lmctl 0.2.61 → 0.2.63

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 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
+ - **Breaking: explicit properties replace implicit profile globals.** init.toml keeps its name and stores lmctl properties. Provider1..3 become PROPS.Provider1..3.Provider; Model1/2/3 become PROPS.Provider1/2/3.Model1. Directory/NonInteractive remain invocation facts. PROPS is a strict read-only hierarchical map, with dotted-key indexing; get_property/has_property/get_properties/set_property use plain values and run-local copies/overlays. Checks are profile-free with known-key suggestions; reads load the profile lazily. Nested ARGV now contains only the child arguments, matching top-level ARGV (no filename). Bare variables, ARGV, PROPS and env() are separate access forms; f-string expressions stay general.
8
+
9
+
7
10
  - **Workspace interpreter containment.** Script routes use only the declared monorepo sibling and report a missing build instead of silently running a retired checkout. Fresh clones bootstrap with `npm ci --ignore-scripts && npm run build` at the root; the ordered build now smoke-tests the script route.
8
11
 
9
12
  - **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.
@@ -12,7 +15,7 @@ All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
12
15
  - **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.
13
16
  - 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.
14
17
  - 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.
15
- - Host results use neutral status maps rather than the old bare lists/null/booleans: read `.members` from `lm_members`, `.member` from `lm_member`, `.prompts` from prompt readers, `.sessions` from `lm_session_list`, and `.batch` from `lm_batch_open`; inspect `status`/`error` for failures and `lm_batch_close`.
18
+ - The temporary status-envelope script migration is reverted: `lm_members`, prompt readers and `lm_session_list` return arrays; `lm_member` returns a direct member or null; `lm_batch_open` returns a managed handle and `lm_batch_close` a boolean. Only neutral API consumers use status+payload envelopes.
16
19
  - Top-level `args` and `ARGV` contain only arguments after the source, not the filename or `-e`. A `--` or flag-looking token after the source remains data; it is not stripped or treated as a runner option. Nested `run_script` retains its documented child invocation convention.
17
20
  - `--check` and `--dry-run` use passive module declarations without loading init.toml or opening a database. Runs load the lmctl profile only when Provider*/Model* globals are used; Directory/NonInteractive and teamfile-only calls do not require a profile.
18
21
  - Failed checks exit 2; startup/runtime failures exit 1; explicit exit codes are preserved. SIGINT/SIGTERM propagate 130/143 and release leases. Diagnostics keep the `error:`/`warning:` prefix with source location.
package/README.md CHANGED
@@ -131,3 +131,7 @@ LMCTL_DB="$test_root/state.db" MINIPLAYER_HOME="$test_root/miniplayer" \
131
131
  `LMCTL_DB` overrides lmctl's default SQLite database; an explicit `--db PATH`
132
132
  takes precedence. The integration tests also isolate `LMCTL_HOME` and native
133
133
  provider storage. Mock responses need no keys or network access.
134
+
135
+ ### lmctl properties (init.toml)
136
+
137
+ `~/.lmctl/init.toml` (or `$LMCTL_HOME/init.toml`) is lmctl's properties file, not the process environment. Managed TOML keys include `Provider1.provider` and `Provider1.model1`; top-level user keys such as `Env1` are supported. Scripts use `PROPS.Provider1.Provider`, `PROPS.Provider1.Model1` or `PROPS["Provider1.Model1"]`. The source repository documents the complete property contract. The six old bare provider/model globals are removed. `--check` uses declared keys without a profile or DB; a file-backed runtime read needs a valid profile and reports its path plus `lmctl init` guidance. `Directory` and `NonInteractive` remain core invocation facts.
package/build-info.json CHANGED
@@ -1 +1 @@
1
- {"sha": "dc8dd7280c7976d6f9ca817b8115817f7d1e5cc5", "dirty": true, "builtAt": "2026-10-05T05:02:58.000Z"}
1
+ {"sha": "73bf5b850295a40b8dd26f20f3488cc3e637c7a5", "dirty": true, "builtAt": "2026-10-05T06:39:45.000Z"}