@lmctl-ai/lmctl 0.1.80 → 0.1.82

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.
@@ -672,7 +672,8 @@ CREATE TABLE IF NOT EXISTS delegation_job (
672
672
  attempt_count INTEGER NOT NULL DEFAULT 0,
673
673
  permission_mode TEXT,
674
674
  idle_timeout_ms INTEGER,
675
- delivered_at TEXT
675
+ delivered_at TEXT,
676
+ meta TEXT
676
677
  );
677
678
  CREATE INDEX IF NOT EXISTS idx_delegation_job_status_created
678
679
  ON delegation_job(status, created_at DESC);
@@ -690,3 +691,13 @@ CREATE TABLE IF NOT EXISTS delegation_event (
690
691
  );
691
692
  CREATE INDEX IF NOT EXISTS idx_delegation_event_job_id
692
693
  ON delegation_event(delegation_job_id, id);
694
+
695
+ -- v43: generic runtime checkpoint substrate for meta-lead/toolkit state.
696
+ CREATE TABLE IF NOT EXISTS runtime_state (
697
+ scope TEXT NOT NULL,
698
+ key TEXT NOT NULL,
699
+ kind TEXT NOT NULL,
700
+ data TEXT NOT NULL,
701
+ updated_at TEXT NOT NULL,
702
+ PRIMARY KEY(scope, key, kind)
703
+ );
@@ -0,0 +1,25 @@
1
+ # lmctl Examples
2
+
3
+ This directory contains public examples that are safe to copy into a project and
4
+ customize. Teamfiles are intentionally unseeded: run `lmctl lint` first, edit
5
+ providers or models if needed, then run `lmctl seed` in the target project.
6
+
7
+ ## Teamfile Gallery
8
+
9
+ - [`research-team.lmctl`](research-team.lmctl) - fan out a question to multiple
10
+ researchers and consolidate the answer.
11
+ - [`book-team.lmctl`](book-team.lmctl) - plan, draft, edit, and fact-check a
12
+ long-form document or book chapter.
13
+ - [`review-team.lmctl`](review-team.lmctl) - implement code with independent
14
+ review, security review, and repair loops.
15
+
16
+ Validate all checked-in teamfile examples:
17
+
18
+ ```sh
19
+ lmctl lint examples/research-team.lmctl
20
+ lmctl lint examples/book-team.lmctl
21
+ lmctl lint examples/review-team.lmctl
22
+ ```
23
+
24
+ `opencode.json` is a sample OpenCode model catalog. Copy and adjust it only if
25
+ your teamfile uses `provider=opencode`.
@@ -0,0 +1,15 @@
1
+ # Book Team
2
+
3
+ # Use this team for long-form writing projects. Lead keeps the outline and
4
+ # acceptance criteria current, then coordinates drafting, editing, and factual
5
+ # checks. Keep chapter plans and decisions in durable-memory/ so refreshed
6
+ # sessions can recover the book state.
7
+ # Suggested flow:
8
+ # lmctl chat book-team.lmctl Lead "Draft chapter 1 from durable-memory/outline.md" --detach
9
+ # lmctl jobs watch <job_id>
10
+
11
+ _MEMBER_ alias=Lead provider=claude
12
+ _MEMBER_ alias=Outliner provider=claude
13
+ _MEMBER_ alias=Drafter provider=codex
14
+ _MEMBER_ alias=Editor provider=codex
15
+ _MEMBER_ alias=FactChecker provider=qwen
@@ -99,8 +99,8 @@
99
99
  }
100
100
  }
101
101
  },
102
- "claude-sonnet-4.6": {
103
- "name": "Claude Sonnet 4.6",
102
+ "claude-sonnet-5": {
103
+ "name": "Claude Sonnet 5",
104
104
  "reasoning": true,
105
105
  "provider": {
106
106
  "npm": "@ai-sdk/github-copilot"
@@ -108,81 +108,47 @@
108
108
  "variants": {
109
109
  "high": {
110
110
  "thinking": {
111
- "type": "adaptive"
111
+ "type": "adaptive",
112
+ "display": "summarized"
112
113
  },
113
114
  "effort": "high"
114
115
  },
116
+ "xhigh": {
117
+ "thinking": {
118
+ "type": "adaptive",
119
+ "display": "summarized"
120
+ },
121
+ "effort": "xhigh"
122
+ },
115
123
  "max": {
116
124
  "thinking": {
117
- "type": "adaptive"
125
+ "type": "adaptive",
126
+ "display": "summarized"
118
127
  },
119
128
  "effort": "max"
120
129
  }
121
130
  }
122
131
  },
123
- "gemini-3.1-pro-preview": {
124
- "name": "Gemini 3.1 Pro Preview",
125
- "provider": {
126
- "npm": "@ai-sdk/github-copilot"
127
- }
128
- },
129
- "gemini-3.5-flash": {
130
- "name": "Gemini 3.5 Flash",
131
- "provider": {
132
- "npm": "@ai-sdk/github-copilot"
133
- }
134
- },
135
- "gpt-5.5": {
136
- "name": "GPT-5.5",
137
- "reasoning": true,
138
- "provider": {
139
- "npm": "@ai-sdk/github-copilot"
140
- },
141
- "variants": {
142
- "high": {
143
- "reasoningEffort": "high",
144
- "reasoningSummary": "auto",
145
- "include": [
146
- "reasoning.encrypted_content"
147
- ]
148
- },
149
- "xhigh": {
150
- "reasoningEffort": "xhigh",
151
- "reasoningSummary": "auto",
152
- "include": [
153
- "reasoning.encrypted_content"
154
- ]
155
- }
156
- }
157
- },
158
- "gpt-5.4": {
159
- "name": "GPT-5.4",
132
+ "claude-sonnet-4.6": {
133
+ "name": "Claude Sonnet 4.6",
160
134
  "reasoning": true,
161
135
  "provider": {
162
136
  "npm": "@ai-sdk/github-copilot"
163
137
  },
164
138
  "variants": {
165
139
  "high": {
166
- "reasoningEffort": "high",
167
- "reasoningSummary": "auto",
168
- "include": [
169
- "reasoning.encrypted_content"
170
- ]
140
+ "thinking": {
141
+ "type": "adaptive"
142
+ },
143
+ "effort": "high"
171
144
  },
172
- "xhigh": {
173
- "reasoningEffort": "xhigh",
174
- "reasoningSummary": "auto",
175
- "include": [
176
- "reasoning.encrypted_content"
177
- ]
145
+ "max": {
146
+ "thinking": {
147
+ "type": "adaptive"
148
+ },
149
+ "effort": "max"
178
150
  }
179
151
  }
180
- },
181
- "gemini-2.5-pro": {
182
- "name": "Gemini 2.5 Pro",
183
- "provider": {
184
- "npm": "@ai-sdk/github-copilot"
185
- }
186
152
  }
187
153
  }
188
154
  }
@@ -0,0 +1,15 @@
1
+ # Research Team
2
+
3
+ # Use this team when the operator needs a researched answer with clear caveats.
4
+ # Lead owns the final answer. Delegate independent passes to the researchers,
5
+ # ask Critic to identify weak evidence or contradictions, then have Synthesizer
6
+ # merge the strongest findings into a concise response.
7
+ # Suggested flow:
8
+ # lmctl chat research-team.lmctl Lead "Research <question>" --detach
9
+ # lmctl jobs watch <job_id>
10
+
11
+ _MEMBER_ alias=Lead provider=claude
12
+ _MEMBER_ alias=Researcher1 provider=codex
13
+ _MEMBER_ alias=Researcher2 provider=claude
14
+ _MEMBER_ alias=Critic provider=qwen
15
+ _MEMBER_ alias=Synthesizer provider=codex
@@ -0,0 +1,15 @@
1
+ # Review Team
2
+
3
+ # Use this team for implementation tasks that need independent review. Lead
4
+ # sends implementation work to Author, asks Reviewer1 and Reviewer2 for separate
5
+ # reviews, asks SecurityReviewer for trust-boundary concerns when relevant, and
6
+ # routes findings back to Author before final signoff.
7
+ # Suggested flow:
8
+ # lmctl chat review-team.lmctl Lead "Implement <task> and get review signoff" --detach
9
+ # lmctl jobs watch <job_id>
10
+
11
+ _MEMBER_ alias=Lead provider=claude
12
+ _MEMBER_ alias=Author provider=codex
13
+ _MEMBER_ alias=Reviewer1 provider=codex
14
+ _MEMBER_ alias=Reviewer2 provider=claude
15
+ _MEMBER_ alias=SecurityReviewer provider=agy
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmctl-ai/lmctl",
3
- "version": "0.1.80",
3
+ "version": "0.1.82",
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",
@@ -38,7 +38,6 @@
38
38
  "hono": "4.6.20",
39
39
  "jexl": "^2.3.0",
40
40
  "marked": "^18.0.3",
41
- "node-pty": "^1.1.0",
42
41
  "write-excel-file": "^4.1.1",
43
42
  "zod": "4.4.3"
44
43
  }