@commonlyai/cli 0.1.163 → 0.1.165
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/package.json +1 -1
- package/src/commands/agent.js +1 -1
- package/src/lib/adapters/claude.js +3 -3
- package/src/lib/adapters/codex.js +2 -2
- package/src/lib/adapters/dsh.js +1 -1
- package/src/lib/adapters/goose.js +1 -1
- package/src/lib/adapters/hermes.js +3 -3
- package/src/lib/adapters/opencode.js +2 -2
- package/src/lib/adapters/pi.js +1 -1
- package/src/lib/adapters/qwen.js +1 -1
- package/src/lib/adapters/seat-model.js +5 -2
package/package.json
CHANGED
package/src/commands/agent.js
CHANGED
|
@@ -1681,7 +1681,7 @@ export const performRun = ({
|
|
|
1681
1681
|
|
|
1682
1682
|
if (adapter.requiresModel) {
|
|
1683
1683
|
try {
|
|
1684
|
-
requireSeatModel(seatEnvironment, adapter.name);
|
|
1684
|
+
requireSeatModel(seatEnvironment, adapter.name, true);
|
|
1685
1685
|
} catch (error) {
|
|
1686
1686
|
if (error.code === 'seat_model_missing' && eventPodId && !missingModelNotices.has(eventPodId)) {
|
|
1687
1687
|
try {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
* SIGKILL escalation is a post-v1 concern (ADR-005 §Spawning semantics).
|
|
44
44
|
*/
|
|
45
45
|
|
|
46
|
-
import { requireSeatModel } from './seat-model.js';
|
|
46
|
+
import { requireSeatModel, seatModelRequired } from './seat-model.js';
|
|
47
47
|
import { spawn as childSpawn, spawnSync } from 'child_process';
|
|
48
48
|
import { createHash, randomUUID } from 'crypto';
|
|
49
49
|
import { accessSync, constants, realpathSync } from 'fs';
|
|
@@ -726,7 +726,7 @@ const prepareArgv = async (innerArgv, ctx) => {
|
|
|
726
726
|
};
|
|
727
727
|
|
|
728
728
|
export default {
|
|
729
|
-
requiresModel
|
|
729
|
+
get requiresModel() { return seatModelRequired(); },
|
|
730
730
|
name: 'claude',
|
|
731
731
|
// Identity-bearing runtime tag written into AgentInstallation.config.runtime
|
|
732
732
|
// by `commonly agent attach`. The CLI command stays `commonly agent attach
|
|
@@ -812,7 +812,7 @@ export default {
|
|
|
812
812
|
// session-recovery retry, or a retry runs at a different effort than the
|
|
813
813
|
// turn it replaces.
|
|
814
814
|
const modelArgs = [
|
|
815
|
-
'--model', seatModel,
|
|
815
|
+
...(seatModel ? ['--model', seatModel] : []),
|
|
816
816
|
...(ctx.environment?.effort ? ['--effort', String(ctx.environment.effort)] : []),
|
|
817
817
|
];
|
|
818
818
|
const baseArgs = ['-p', fullPrompt, '--output-format', 'text', sessionFlag, sessionId, ...modelArgs];
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* SIGKILL escalation is a post-v1 concern (ADR-005 §Spawning semantics).
|
|
38
38
|
*/
|
|
39
39
|
|
|
40
|
-
import { requireSeatModel } from './seat-model.js';
|
|
40
|
+
import { requireSeatModel, seatModelRequired } from './seat-model.js';
|
|
41
41
|
import { spawn as childSpawn, spawnSync } from 'child_process';
|
|
42
42
|
import { createHash } from 'crypto';
|
|
43
43
|
import { accessSync, constants } from 'fs';
|
|
@@ -617,7 +617,7 @@ const runCodex = ({ args, cwd, env, timeoutMs, credentials = [], spawnImpl = chi
|
|
|
617
617
|
});
|
|
618
618
|
|
|
619
619
|
export default {
|
|
620
|
-
requiresModel
|
|
620
|
+
get requiresModel() { return seatModelRequired(); },
|
|
621
621
|
name: 'codex',
|
|
622
622
|
// See claude.js for the rationale — identity-bearing runtime tag persisted
|
|
623
623
|
// to AgentInstallation.config.runtime (paired with host:'byo') so a CLI-
|
package/src/lib/adapters/dsh.js
CHANGED
|
@@ -248,7 +248,7 @@ export default {
|
|
|
248
248
|
},
|
|
249
249
|
|
|
250
250
|
async spawn(prompt, ctx = {}) {
|
|
251
|
-
const seatModel = requireSeatModel(ctx.environment, 'dsh');
|
|
251
|
+
const seatModel = requireSeatModel(ctx.environment, 'dsh', true);
|
|
252
252
|
assertPrivateDsh(ctx.environment);
|
|
253
253
|
if (!ctx.environment?.provider || !ctx.environment?.model) {
|
|
254
254
|
throw new Error('dsh requires environment.provider and environment.model');
|
|
@@ -194,7 +194,7 @@ export default {
|
|
|
194
194
|
},
|
|
195
195
|
|
|
196
196
|
async spawn(prompt, ctx = {}) {
|
|
197
|
-
const seatModel = requireSeatModel(ctx.environment, 'goose');
|
|
197
|
+
const seatModel = requireSeatModel(ctx.environment, 'goose', true);
|
|
198
198
|
const keyFile = await this.validateEnvironment(ctx.environment, ctx.cwd);
|
|
199
199
|
const sourceEnv = ctx.env || process.env;
|
|
200
200
|
const configured = ctx.environment?.provider;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Hermes 0.22.2 local CLI wrapper. Hermes owns provider I/O; this file only spawns it. */
|
|
2
|
-
import { requireSeatModel } from './seat-model.js';
|
|
2
|
+
import { requireSeatModel, seatModelRequired } from './seat-model.js';
|
|
3
3
|
import { spawn as childSpawn, spawnSync } from 'child_process';
|
|
4
4
|
import { createHash } from 'crypto';
|
|
5
5
|
import { mkdir } from 'fs/promises';
|
|
@@ -138,7 +138,7 @@ const runHermes = ({ args, prompt, cwd, env, timeoutMs, spawnImpl, credentials }
|
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
export default {
|
|
141
|
-
requiresModel
|
|
141
|
+
get requiresModel() { return seatModelRequired(); },
|
|
142
142
|
name: 'hermes',
|
|
143
143
|
runtimeType: 'hermes',
|
|
144
144
|
supportsProvider: false,
|
|
@@ -180,7 +180,7 @@ export default {
|
|
|
180
180
|
}
|
|
181
181
|
const args = ['chat', '--oneshot', '--query-file', '-', '--format', 'stream-json',
|
|
182
182
|
'--provider', 'openrouter', '--source', 'tool', '--no-restore-cwd'];
|
|
183
|
-
args.push('--model', seatModel);
|
|
183
|
+
if (seatModel) args.push('--model', seatModel);
|
|
184
184
|
if (ctx.sessionId) args.push('--resume', ctx.sessionId);
|
|
185
185
|
const fullPrompt = buildMemoryPreamble(prompt, ctx.memoryLongTerm, {
|
|
186
186
|
freshSession: !ctx.sessionId,
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* `text.part.text`, and token counts in `step_finish.part.tokens`.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
import { requireSeatModel } from './seat-model.js';
|
|
22
|
+
import { requireSeatModel, seatModelRequired } from './seat-model.js';
|
|
23
23
|
import { spawn as childSpawn, spawnSync } from 'child_process';
|
|
24
24
|
import { createHash } from 'crypto';
|
|
25
25
|
import { realpathSync } from 'fs';
|
|
@@ -623,7 +623,7 @@ const describeOpenCodeVersionMismatch = (installedVersion) => {
|
|
|
623
623
|
};
|
|
624
624
|
|
|
625
625
|
export default {
|
|
626
|
-
requiresModel
|
|
626
|
+
get requiresModel() { return seatModelRequired(); },
|
|
627
627
|
name: 'opencode',
|
|
628
628
|
runtimeType: 'opencode',
|
|
629
629
|
supportsProvider: true,
|
package/src/lib/adapters/pi.js
CHANGED
|
@@ -410,7 +410,7 @@ export default {
|
|
|
410
410
|
},
|
|
411
411
|
|
|
412
412
|
async spawn(prompt, ctx = {}) {
|
|
413
|
-
const seatModel = requireSeatModel(ctx.environment, 'pi');
|
|
413
|
+
const seatModel = requireSeatModel(ctx.environment, 'pi', true);
|
|
414
414
|
// pi has no enforced sandbox. claude.js and codex.js refuse a public-trust
|
|
415
415
|
// seat they cannot confine; so does this adapter, and it refuses any declared
|
|
416
416
|
// sandbox mode rather than run unconfined under a spec that promised one.
|
package/src/lib/adapters/qwen.js
CHANGED
|
@@ -232,7 +232,7 @@ export default {
|
|
|
232
232
|
},
|
|
233
233
|
|
|
234
234
|
async spawn(prompt, ctx = {}) {
|
|
235
|
-
const seatModel = requireSeatModel(ctx.environment, 'qwen');
|
|
235
|
+
const seatModel = requireSeatModel(ctx.environment, 'qwen', true);
|
|
236
236
|
const sandbox = normalizeSandboxTrust(ctx.environment?.sandbox);
|
|
237
237
|
const isPublic = sandbox?.trust === 'public';
|
|
238
238
|
const mode = isPublic ? resolvePublicSandboxMode(sandbox) : null;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export const
|
|
1
|
+
/** Fleet runners opt in; BYO users retain their own CLI's model default. */
|
|
2
|
+
export const seatModelRequired = () => process.env.COMMONLY_REQUIRE_SEAT_MODEL === '1';
|
|
3
|
+
|
|
4
|
+
export const requireSeatModel = (environment, adapterName, required = seatModelRequired()) => {
|
|
3
5
|
const model = environment?.model;
|
|
4
6
|
if (typeof model !== 'string' || !model.trim()) {
|
|
7
|
+
if (!required) return undefined;
|
|
5
8
|
const error = new Error(
|
|
6
9
|
`${adapterName} requires environment.model; set the seat model with commonly agent config <name> --model <model> before running`,
|
|
7
10
|
);
|