@lmctl-ai/lmctl 0.2.6 → 0.2.7

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.
@@ -512,6 +512,20 @@ export interface ExecutionResult {
512
512
  export declare const LANGUAGE_DOCS: FunctionDoc[];
513
513
  export declare const BUILTIN_FUNCTION_DOCS: FunctionDoc[];
514
514
  export declare const STDLIB_FUNCTION_DOCS: FunctionDoc[];
515
+ /**
516
+ * Real C/Perl/Python printf-style substitution for sprintf()/printf()
517
+ * (math.lmctl, 2026-09-29, defect B: sprintf/printf were aliased onto
518
+ * format(), which is Python str.format brace syntax -- `sprintf("%s=%s",
519
+ * a, b)` silently returned the literal template unsubstituted, because "%s"
520
+ * is not a brace placeholder. "%s is the ONLY reason anyone reaches for the
521
+ * name sprintf" -- so these two entry points get their OWN real % syntax,
522
+ * format() keeps braces. Deliberately minimal: %s/%d/%f/%%, no width/
523
+ * precision/padding modifiers -- add more only against a concrete need.
524
+ * Extra args with no corresponding %-directive are silently unused,
525
+ * matching real printf (not folded into a "no directives -> space-join"
526
+ * fallback, which would just be a second silently-wrong behavior).
527
+ */
528
+ export declare function printfFormat(template: any, args: any[]): string;
515
529
  export declare class LMScript {
516
530
  private readonly hostFunctions;
517
531
  private readonly functionDocs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmctl-ai/lmctl",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "A provider-agnostic control plane for teams of AI coding agents — across providers, with independent review and durable memory.",
5
5
  "type": "module",
6
6
  "homepage": "https://lmctl.com",