looply-cli 0.5.3 → 0.5.4
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/dist/.src-hash +1 -1
- package/dist/agent-exec.d.ts +10 -5
- package/dist/agent-exec.d.ts.map +1 -1
- package/dist/agent-exec.js.map +1 -1
- package/dist/autonomy-tick.d.ts.map +1 -1
- package/dist/autonomy-tick.js +23 -0
- package/dist/autonomy-tick.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +110 -82
- package/dist/bin.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon-cmd.d.ts.map +1 -1
- package/dist/daemon-cmd.js +13 -0
- package/dist/daemon-cmd.js.map +1 -1
- package/dist/daemon.d.ts +15 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +21 -3
- package/dist/daemon.js.map +1 -1
- package/dist/init-detect.d.ts.map +1 -1
- package/dist/init-detect.js +1 -1
- package/dist/init-detect.js.map +1 -1
- package/dist/model-routing.d.ts +52 -7
- package/dist/model-routing.d.ts.map +1 -1
- package/dist/model-routing.js +84 -14
- package/dist/model-routing.js.map +1 -1
- package/dist/model-settings.d.ts +67 -0
- package/dist/model-settings.d.ts.map +1 -0
- package/dist/model-settings.js +177 -0
- package/dist/model-settings.js.map +1 -0
- package/dist/model-transport.d.ts +8 -0
- package/dist/model-transport.d.ts.map +1 -1
- package/dist/model-transport.js +6 -3
- package/dist/model-transport.js.map +1 -1
- package/dist/provider-cmd.d.ts +13 -4
- package/dist/provider-cmd.d.ts.map +1 -1
- package/dist/provider-cmd.js +111 -11
- package/dist/provider-cmd.js.map +1 -1
- package/dist/provider-ready.d.ts +15 -2
- package/dist/provider-ready.d.ts.map +1 -1
- package/dist/provider-ready.js +46 -2
- package/dist/provider-ready.js.map +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +4 -0
- package/dist/providers.js.map +1 -1
- package/dist/run-launcher.d.ts +13 -0
- package/dist/run-launcher.d.ts.map +1 -1
- package/dist/run-launcher.js +27 -0
- package/dist/run-launcher.js.map +1 -1
- package/dist/server-client.d.ts +12 -2
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +8 -0
- package/dist/server-client.js.map +1 -1
- package/package.json +2 -2
package/dist/model-routing.js
CHANGED
|
@@ -28,14 +28,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
28
28
|
exports.EFFORT_LEVELS = exports.MODEL_KEYS = exports.MODEL_ROLES = void 0;
|
|
29
29
|
exports.isBrainOnlyModel = isBrainOnlyModel;
|
|
30
30
|
exports.modelFor = modelFor;
|
|
31
|
+
exports.effortFor = effortFor;
|
|
32
|
+
exports.resolveRole = resolveRole;
|
|
31
33
|
exports.modelArgs = modelArgs;
|
|
32
34
|
exports.checkRoleModels = checkRoleModels;
|
|
35
|
+
const core_1 = require("@looply/core");
|
|
33
36
|
/** The roles that drive a model, in the order a round meets them. */
|
|
34
37
|
exports.MODEL_ROLES = ['implementer', 'verifier', 'scanner', 'brain'];
|
|
35
38
|
/** The keys `agent.models` may carry: every role, plus the one that covers the rest. */
|
|
36
39
|
exports.MODEL_KEYS = ['default', ...exports.MODEL_ROLES];
|
|
37
|
-
/**
|
|
38
|
-
|
|
40
|
+
/**
|
|
41
|
+
* `--effort`, as Claude Code spells it. Checked against `claude --help` on
|
|
42
|
+
* 2026-09-13. Declared in core, so the server refuses exactly what this does.
|
|
43
|
+
*/
|
|
44
|
+
exports.EFFORT_LEVELS = core_1.AGENT_EFFORTS;
|
|
39
45
|
/**
|
|
40
46
|
* Which model ids may only be the brain's.
|
|
41
47
|
*
|
|
@@ -45,25 +51,89 @@ exports.EFFORT_LEVELS = ['low', 'medium', 'high', 'xhigh', 'max'];
|
|
|
45
51
|
* one should not be able to step around a cost rule with a capital letter.
|
|
46
52
|
*/
|
|
47
53
|
function isBrainOnlyModel(model) {
|
|
48
|
-
return
|
|
54
|
+
return (0, core_1.isBrainOnlyModelId)(model);
|
|
49
55
|
}
|
|
50
|
-
/** The model
|
|
56
|
+
/** The model config.yaml names for a role, or undefined when it names none. */
|
|
51
57
|
function modelFor(role, models) {
|
|
52
58
|
return models?.[role] ?? models?.default;
|
|
53
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The effort config.yaml names for a role. `agent.effort` is either one level
|
|
62
|
+
* for every role (the original shape, still byte-compatible) or a map with an
|
|
63
|
+
* optional `default`.
|
|
64
|
+
*/
|
|
65
|
+
function effortFor(role, effort) {
|
|
66
|
+
if (effort === undefined)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (typeof effort === 'string')
|
|
69
|
+
return effort;
|
|
70
|
+
return effort[role] ?? effort.default;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The model and effort a role runs on the BUILT-IN provider, field by field:
|
|
74
|
+
*
|
|
75
|
+
* config.yaml > remote project settings > DEFAULT_AGENT_SETTINGS
|
|
76
|
+
*
|
|
77
|
+
* config.yaml wins because it is a person's decision written in the repository
|
|
78
|
+
* on the machine itself; remote settings (console, integrations) fill what the
|
|
79
|
+
* file leaves unsaid; the built-in table fills the rest. Model and effort are
|
|
80
|
+
* resolved independently, so a file naming only an effort still takes the
|
|
81
|
+
* remote or default model.
|
|
82
|
+
*
|
|
83
|
+
* ⚠️ A remote Fable model for a non-brain role is ignored here even though the
|
|
84
|
+
* validator refuses it at the API: the cache is a file on disk, and the rule
|
|
85
|
+
* is cheap to hold twice.
|
|
86
|
+
*/
|
|
87
|
+
function resolveRole(role, spec, remote) {
|
|
88
|
+
const fallback = core_1.DEFAULT_AGENT_SETTINGS[role];
|
|
89
|
+
const fromRemote = remote?.[role];
|
|
90
|
+
let model;
|
|
91
|
+
let modelFrom;
|
|
92
|
+
const configured = modelFor(role, spec.models);
|
|
93
|
+
const remoteModel = fromRemote?.model;
|
|
94
|
+
if (configured !== undefined) {
|
|
95
|
+
model = configured;
|
|
96
|
+
modelFrom = 'config.yaml';
|
|
97
|
+
}
|
|
98
|
+
else if (remoteModel !== undefined && (role === 'brain' || !(0, core_1.isBrainOnlyModelId)(remoteModel))) {
|
|
99
|
+
model = remoteModel;
|
|
100
|
+
modelFrom = 'remote';
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
model = fallback.model;
|
|
104
|
+
modelFrom = 'default';
|
|
105
|
+
}
|
|
106
|
+
let effort;
|
|
107
|
+
let effortFrom;
|
|
108
|
+
const configuredEffort = effortFor(role, spec.effort);
|
|
109
|
+
if (configuredEffort !== undefined) {
|
|
110
|
+
effort = configuredEffort;
|
|
111
|
+
effortFrom = 'config.yaml';
|
|
112
|
+
}
|
|
113
|
+
else if (fromRemote?.effort !== undefined) {
|
|
114
|
+
effort = fromRemote.effort;
|
|
115
|
+
effortFrom = 'remote';
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
effort = fallback.effort;
|
|
119
|
+
effortFrom = 'default';
|
|
120
|
+
}
|
|
121
|
+
return { model, effort, modelFrom, effortFrom };
|
|
122
|
+
}
|
|
54
123
|
/**
|
|
55
124
|
* The arguments that put a role on its model, ready to splice into a Claude
|
|
56
|
-
* Code command line.
|
|
57
|
-
*
|
|
125
|
+
* Code command line.
|
|
126
|
+
*
|
|
127
|
+
* ⚠️ CHANGED DELIBERATELY: this used to be EMPTY when nothing was configured,
|
|
128
|
+
* so the provider's own default ran (whatever Claude Code happened to pick on
|
|
129
|
+
* that machine). Every built-in turn now names its model and effort — from
|
|
130
|
+
* config.yaml, the project's remote settings, or `DEFAULT_AGENT_SETTINGS` — so
|
|
131
|
+
* what a role runs is a Looply decision that `looply doctor` can print, not an
|
|
132
|
+
* accident of the machine. Only ever called on the built-in branch.
|
|
58
133
|
*/
|
|
59
|
-
function modelArgs(role, spec) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
if (model !== undefined)
|
|
63
|
-
out.push('--model', model);
|
|
64
|
-
if (spec.effort !== undefined)
|
|
65
|
-
out.push('--effort', spec.effort);
|
|
66
|
-
return out;
|
|
134
|
+
function modelArgs(role, spec, remote) {
|
|
135
|
+
const r = resolveRole(role, spec, remote);
|
|
136
|
+
return ['--model', r.model, '--effort', r.effort];
|
|
67
137
|
}
|
|
68
138
|
/**
|
|
69
139
|
* Is this `agent.models` block one looply will drive?
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../src/model-routing.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;
|
|
1
|
+
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../src/model-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type AgentSettings } from '@looply/core';
|
|
2
|
+
import { type Effort, type RoleEfforts, type RoleModels } from './model-routing';
|
|
3
|
+
/**
|
|
4
|
+
* THE PROJECT'S REMOTE MODEL SETTINGS, AS THIS MACHINE LAST HEARD THEM.
|
|
5
|
+
*
|
|
6
|
+
* The server holds per-project model/effort choices (set from the console or
|
|
7
|
+
* by an integration). The standalone daemon pulls them on start and every few
|
|
8
|
+
* minutes and writes them HERE; every built-in model turn — a daemon-launched
|
|
9
|
+
* run, `looply run`, `scan`, `verify` — reads this file at launch time.
|
|
10
|
+
*
|
|
11
|
+
* Why a cached file rather than a field on a payload the run already fetches:
|
|
12
|
+
* a run may start with the server unreachable, and a machine that goes offline
|
|
13
|
+
* must keep running the models it was last told to — not silently fall back to
|
|
14
|
+
* the defaults mid-night. One writer (the daemon), many readers, and a reader
|
|
15
|
+
* that finds nothing, or something malformed, gets the defaults.
|
|
16
|
+
*
|
|
17
|
+
* The value is re-validated on every read with the same core rule the server
|
|
18
|
+
* applies on write, so a hand-edited or corrupted file cannot put a Fable
|
|
19
|
+
* model on an agent role or smuggle a flag into the command line.
|
|
20
|
+
*/
|
|
21
|
+
export declare const AGENT_SETTINGS_FILE = "agent-settings.json";
|
|
22
|
+
/** How often the daemon asks the server. */
|
|
23
|
+
export declare const DEFAULT_AGENT_SETTINGS_POLL_MS: number;
|
|
24
|
+
export interface AgentSettingsCache {
|
|
25
|
+
/** Null means "back to defaults", which is an answer, not an absence. */
|
|
26
|
+
settings: AgentSettings | null;
|
|
27
|
+
/** When the server says the settings last changed. */
|
|
28
|
+
updatedAt: string | null;
|
|
29
|
+
/** When this machine last heard it. */
|
|
30
|
+
fetchedAt: string;
|
|
31
|
+
}
|
|
32
|
+
/** The cached answer, or null when there is none or it does not validate. */
|
|
33
|
+
export declare function readAgentSettingsCache(stateDir: string): AgentSettingsCache | null;
|
|
34
|
+
/** Atomic: a reader never sees half a file. */
|
|
35
|
+
export declare function writeAgentSettingsCache(stateDir: string, value: AgentSettingsCache): void;
|
|
36
|
+
/**
|
|
37
|
+
* The remote settings that apply to a project directory (a worktree resolves
|
|
38
|
+
* to its repository's shared state), or null. Never throws: a model turn must
|
|
39
|
+
* not fail because a cache could not be read — it runs the defaults instead.
|
|
40
|
+
*/
|
|
41
|
+
export declare function remoteAgentSettingsFor(projectDir: string): AgentSettings | null;
|
|
42
|
+
export interface AgentSettingsPullDeps {
|
|
43
|
+
/** `GET /v1/projects/:id/agent-settings`. */
|
|
44
|
+
fetch(): Promise<unknown>;
|
|
45
|
+
stateDir: string;
|
|
46
|
+
log(line: string): void;
|
|
47
|
+
now(): number;
|
|
48
|
+
}
|
|
49
|
+
export type AgentSettingsPullResult = 'updated' | 'unchanged' | 'failed';
|
|
50
|
+
/**
|
|
51
|
+
* One pull: ask the server, and write the cache when the answer changed.
|
|
52
|
+
*
|
|
53
|
+
* A failure keeps whatever the cache holds — an outage must not reset a
|
|
54
|
+
* machine to defaults. Offline is reported by the heartbeat already; anything
|
|
55
|
+
* else (an older server without the route, a malformed answer) is said once
|
|
56
|
+
* per outage rather than every five minutes.
|
|
57
|
+
*/
|
|
58
|
+
export declare function makeAgentSettingsPull(deps: AgentSettingsPullDeps): () => Promise<AgentSettingsPullResult>;
|
|
59
|
+
/**
|
|
60
|
+
* The lines `looply doctor` and `looply status` print: per role, the model and
|
|
61
|
+
* effort and where each came from.
|
|
62
|
+
*/
|
|
63
|
+
export declare function describeModelRouting(spec: {
|
|
64
|
+
models?: RoleModels;
|
|
65
|
+
effort?: Effort | RoleEfforts;
|
|
66
|
+
}, builtIn: boolean, remote: AgentSettings | null): string[];
|
|
67
|
+
//# sourceMappingURL=model-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-settings.d.ts","sourceRoot":"","sources":["../src/model-settings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAA4B,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG3G;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,4CAA4C;AAC5C,eAAO,MAAM,8BAA8B,QAAa,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAoBlF;AAED,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAMzF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAM/E;AAED,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEzE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,CA4DzG;AAYD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,EAC5D,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,aAAa,GAAG,IAAI,GAC3B,MAAM,EAAE,CAeV"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_AGENT_SETTINGS_POLL_MS = exports.AGENT_SETTINGS_FILE = void 0;
|
|
4
|
+
exports.readAgentSettingsCache = readAgentSettingsCache;
|
|
5
|
+
exports.writeAgentSettingsCache = writeAgentSettingsCache;
|
|
6
|
+
exports.remoteAgentSettingsFor = remoteAgentSettingsFor;
|
|
7
|
+
exports.makeAgentSettingsPull = makeAgentSettingsPull;
|
|
8
|
+
exports.describeModelRouting = describeModelRouting;
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const core_1 = require("@looply/core");
|
|
12
|
+
const git_driver_1 = require("./git-driver");
|
|
13
|
+
const model_routing_1 = require("./model-routing");
|
|
14
|
+
const server_client_1 = require("./server-client");
|
|
15
|
+
/**
|
|
16
|
+
* THE PROJECT'S REMOTE MODEL SETTINGS, AS THIS MACHINE LAST HEARD THEM.
|
|
17
|
+
*
|
|
18
|
+
* The server holds per-project model/effort choices (set from the console or
|
|
19
|
+
* by an integration). The standalone daemon pulls them on start and every few
|
|
20
|
+
* minutes and writes them HERE; every built-in model turn — a daemon-launched
|
|
21
|
+
* run, `looply run`, `scan`, `verify` — reads this file at launch time.
|
|
22
|
+
*
|
|
23
|
+
* Why a cached file rather than a field on a payload the run already fetches:
|
|
24
|
+
* a run may start with the server unreachable, and a machine that goes offline
|
|
25
|
+
* must keep running the models it was last told to — not silently fall back to
|
|
26
|
+
* the defaults mid-night. One writer (the daemon), many readers, and a reader
|
|
27
|
+
* that finds nothing, or something malformed, gets the defaults.
|
|
28
|
+
*
|
|
29
|
+
* The value is re-validated on every read with the same core rule the server
|
|
30
|
+
* applies on write, so a hand-edited or corrupted file cannot put a Fable
|
|
31
|
+
* model on an agent role or smuggle a flag into the command line.
|
|
32
|
+
*/
|
|
33
|
+
exports.AGENT_SETTINGS_FILE = 'agent-settings.json';
|
|
34
|
+
/** How often the daemon asks the server. */
|
|
35
|
+
exports.DEFAULT_AGENT_SETTINGS_POLL_MS = 5 * 60_000;
|
|
36
|
+
/** The cached answer, or null when there is none or it does not validate. */
|
|
37
|
+
function readAgentSettingsCache(stateDir) {
|
|
38
|
+
let raw;
|
|
39
|
+
try {
|
|
40
|
+
raw = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(stateDir, exports.AGENT_SETTINGS_FILE), 'utf8'));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (typeof raw !== 'object' || raw === null)
|
|
46
|
+
return null;
|
|
47
|
+
const r = raw;
|
|
48
|
+
let settings = null;
|
|
49
|
+
if (r['settings'] !== null && r['settings'] !== undefined) {
|
|
50
|
+
const v = (0, core_1.validateAgentSettings)(r['settings']);
|
|
51
|
+
if (!v.ok)
|
|
52
|
+
return null;
|
|
53
|
+
settings = v.settings;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
settings,
|
|
57
|
+
updatedAt: typeof r['updatedAt'] === 'string' ? r['updatedAt'] : null,
|
|
58
|
+
fetchedAt: typeof r['fetchedAt'] === 'string' ? r['fetchedAt'] : '',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/** Atomic: a reader never sees half a file. */
|
|
62
|
+
function writeAgentSettingsCache(stateDir, value) {
|
|
63
|
+
(0, node_fs_1.mkdirSync)(stateDir, { recursive: true });
|
|
64
|
+
const target = (0, node_path_1.join)(stateDir, exports.AGENT_SETTINGS_FILE);
|
|
65
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
66
|
+
(0, node_fs_1.writeFileSync)(tmp, JSON.stringify(value, null, 2) + '\n', 'utf8');
|
|
67
|
+
(0, node_fs_1.renameSync)(tmp, target);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The remote settings that apply to a project directory (a worktree resolves
|
|
71
|
+
* to its repository's shared state), or null. Never throws: a model turn must
|
|
72
|
+
* not fail because a cache could not be read — it runs the defaults instead.
|
|
73
|
+
*/
|
|
74
|
+
function remoteAgentSettingsFor(projectDir) {
|
|
75
|
+
try {
|
|
76
|
+
return readAgentSettingsCache((0, git_driver_1.projectStateDir)(projectDir))?.settings ?? null;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* One pull: ask the server, and write the cache when the answer changed.
|
|
84
|
+
*
|
|
85
|
+
* A failure keeps whatever the cache holds — an outage must not reset a
|
|
86
|
+
* machine to defaults. Offline is reported by the heartbeat already; anything
|
|
87
|
+
* else (an older server without the route, a malformed answer) is said once
|
|
88
|
+
* per outage rather than every five minutes.
|
|
89
|
+
*/
|
|
90
|
+
function makeAgentSettingsPull(deps) {
|
|
91
|
+
let failureReported = false;
|
|
92
|
+
const reportOnce = (why) => {
|
|
93
|
+
if (failureReported)
|
|
94
|
+
return;
|
|
95
|
+
failureReported = true;
|
|
96
|
+
deps.log(`models : could not refresh the project's model settings — ${why}`);
|
|
97
|
+
};
|
|
98
|
+
return async () => {
|
|
99
|
+
let body;
|
|
100
|
+
try {
|
|
101
|
+
body = await deps.fetch();
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
if (!(e instanceof server_client_1.ServerError && (e.isOffline || e.isAuth)))
|
|
105
|
+
reportOnce(e.message);
|
|
106
|
+
return 'failed';
|
|
107
|
+
}
|
|
108
|
+
// A 200 is not an answer: a proxy page parses as a string. The envelope is
|
|
109
|
+
// checked before it is allowed to replace what the machine runs.
|
|
110
|
+
const b = body;
|
|
111
|
+
if (typeof b !== 'object' || b === null || !('settings' in b)) {
|
|
112
|
+
reportOnce('the server answered with something that is not a settings envelope');
|
|
113
|
+
return 'failed';
|
|
114
|
+
}
|
|
115
|
+
let settings = null;
|
|
116
|
+
if (b.settings !== null) {
|
|
117
|
+
const v = (0, core_1.validateAgentSettings)(b.settings);
|
|
118
|
+
if (!v.ok) {
|
|
119
|
+
reportOnce(`the server sent settings this build refuses (${v.key}: ${v.because})`);
|
|
120
|
+
return 'failed';
|
|
121
|
+
}
|
|
122
|
+
settings = v.settings;
|
|
123
|
+
}
|
|
124
|
+
const updatedAt = typeof b.updatedAt === 'string' ? b.updatedAt : null;
|
|
125
|
+
failureReported = false;
|
|
126
|
+
const before = readAgentSettingsCache(deps.stateDir);
|
|
127
|
+
if (before !== null &&
|
|
128
|
+
before.updatedAt === updatedAt &&
|
|
129
|
+
JSON.stringify(before.settings) === JSON.stringify(settings)) {
|
|
130
|
+
return 'unchanged';
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
writeAgentSettingsCache(deps.stateDir, {
|
|
134
|
+
settings,
|
|
135
|
+
updatedAt,
|
|
136
|
+
fetchedAt: new Date(deps.now()).toISOString(),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
deps.log(`models : could not write the model settings cache (${e.message})`);
|
|
141
|
+
return 'failed';
|
|
142
|
+
}
|
|
143
|
+
deps.log(settings === null
|
|
144
|
+
? 'models : project model settings are the defaults'
|
|
145
|
+
: `models : project model settings updated (${describeOverrides(settings)})`);
|
|
146
|
+
return 'updated';
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function describeOverrides(s) {
|
|
150
|
+
const parts = [];
|
|
151
|
+
for (const role of model_routing_1.MODEL_ROLES) {
|
|
152
|
+
const r = s[role];
|
|
153
|
+
if (!r || (r.model === undefined && r.effort === undefined))
|
|
154
|
+
continue;
|
|
155
|
+
parts.push(`${role} ${[r.model, r.effort].filter((x) => x !== undefined).join(' ')}`);
|
|
156
|
+
}
|
|
157
|
+
return parts.length === 0 ? 'nothing overridden' : parts.join(', ');
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The lines `looply doctor` and `looply status` print: per role, the model and
|
|
161
|
+
* effort and where each came from.
|
|
162
|
+
*/
|
|
163
|
+
function describeModelRouting(spec, builtIn, remote) {
|
|
164
|
+
if (!builtIn) {
|
|
165
|
+
return [
|
|
166
|
+
'models : a configured agent.command — Looply passes it no --model or --effort;',
|
|
167
|
+
' the binary chooses its own model.',
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
const lines = ['models : (built-in Claude Code; precedence config.yaml > remote > default)'];
|
|
171
|
+
for (const role of model_routing_1.MODEL_ROLES) {
|
|
172
|
+
const r = (0, model_routing_1.resolveRole)(role, spec, remote);
|
|
173
|
+
lines.push(` ${role.padEnd(11)} ${r.model} (${r.modelFrom}) · effort ${r.effort} (${r.effortFrom})`);
|
|
174
|
+
}
|
|
175
|
+
return lines;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=model-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-settings.js","sourceRoot":"","sources":["../src/model-settings.ts"],"names":[],"mappings":";;;AAyCA,wDAoBC;AAGD,0DAMC;AAOD,wDAMC;AAoBD,sDA4DC;AAgBD,oDAmBC;AAtMD,qCAA6E;AAC7E,yCAAiC;AACjC,uCAAyE;AACzE,6CAA+C;AAC/C,mDAA2G;AAC3G,mDAA8C;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AAEU,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,4CAA4C;AAC/B,QAAA,8BAA8B,GAAG,CAAC,GAAG,MAAM,CAAC;AAWzD,6EAA6E;AAC7E,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,QAAQ,EAAE,2BAAmB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,IAAI,QAAQ,GAAyB,IAAI,CAAC;IAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,CAAC,GAAG,IAAA,4BAAqB,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACvB,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO;QACL,QAAQ;QACR,SAAS,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;QACrE,SAAS,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;KACpE,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,SAAgB,uBAAuB,CAAC,QAAgB,EAAE,KAAyB;IACjF,IAAA,mBAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,QAAQ,EAAE,2BAAmB,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3C,IAAA,uBAAa,EAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,IAAA,oBAAU,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,UAAkB;IACvD,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,IAAA,4BAAe,EAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CAAC,IAA2B;IAC/D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,UAAU,GAAG,CAAC,GAAW,EAAQ,EAAE;QACvC,IAAI,eAAe;YAAE,OAAO;QAC5B,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,8DAA8D,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,YAAY,2BAAW,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;gBAAE,UAAU,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;YAC/F,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,2EAA2E;QAC3E,iEAAiE;QACjE,MAAM,CAAC,GAAG,IAA0D,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9D,UAAU,CAAC,oEAAoE,CAAC,CAAC;YACjF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,GAAyB,IAAI,CAAC;QAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAA,4BAAqB,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,UAAU,CAAC,gDAAgD,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;gBACnF,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,eAAe,GAAG,KAAK,CAAC;QAExB,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,IACE,MAAM,KAAK,IAAI;YACf,MAAM,CAAC,SAAS,KAAK,SAAS;YAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC5D,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,CAAC;YACH,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACrC,QAAQ;gBACR,SAAS;gBACT,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,uDAAwD,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;YACzF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,GAAG,CACN,QAAQ,KAAK,IAAI;YACf,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,6CAA6C,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAChF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAgB;IACzC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,2BAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;YAAE,SAAS;QACtE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,IAA4D,EAC5D,OAAgB,EAChB,MAA4B;IAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,iFAAiF;YACjF,6CAA6C;SAC9C,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC9F,KAAK,MAAM,IAAI,IAAI,2BAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,IAAA,2BAAW,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,UAAU,GAAG,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { type AgentInvoke, type AgentSpec } from './agent-exec';
|
|
|
3
3
|
import { checkProviderAuth } from './provider-state';
|
|
4
4
|
import { type ToolRole } from './tool-bridge';
|
|
5
5
|
import type { OwnedChildren } from './owned-children';
|
|
6
|
+
import type { AgentSettings } from '@looply/core';
|
|
6
7
|
import { type SiblingMount } from './sibling-repos';
|
|
7
8
|
/**
|
|
8
9
|
* THE MODEL RUNS HERE; THE MODEL'S TOOLS DO NOT.
|
|
@@ -79,6 +80,13 @@ export declare function mcpConfigJson(launch: McpLaunch): string;
|
|
|
79
80
|
*/
|
|
80
81
|
export declare function mcpMainPath(deps?: ModelTransportDeps): string;
|
|
81
82
|
export interface ModelTransportDeps {
|
|
83
|
+
/**
|
|
84
|
+
* The project's remote model settings, when the caller already holds them.
|
|
85
|
+
* Absent: read from the daemon's cache (`model-settings.ts`) at each launch,
|
|
86
|
+
* so a change made in the console reaches the next turn of a running night.
|
|
87
|
+
* Null: no remote settings — config.yaml, then the built-in defaults.
|
|
88
|
+
*/
|
|
89
|
+
agentSettings?: AgentSettings | null;
|
|
82
90
|
/**
|
|
83
91
|
* The run these invocations belong to, so its budget reservation can be
|
|
84
92
|
* settled at what it ACTUALLY cost rather than left to expire at an estimate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-transport.d.ts","sourceRoot":"","sources":["../src/model-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAS/E,OAAO,EAAyB,iBAAiB,EAAsB,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-transport.d.ts","sourceRoot":"","sources":["../src/model-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAS/E,OAAO,EAAyB,iBAAiB,EAAsB,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,QAAkB,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAKvG;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAMvD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAIjE;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,iBAAiB,CAAC;IACrC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAavF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAG3E;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEjE,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,QAAQ,EACd,IAAI,GAAE,SAAyB,EAC/B,IAAI,GAAE,kBAAuB;AAC7B;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,CAAC,EAAE,aAAa,GACpB,WAAW,CAoYb"}
|
package/dist/model-transport.js
CHANGED
|
@@ -25,6 +25,7 @@ const tool_bridge_1 = require("./tool-bridge");
|
|
|
25
25
|
const agent_envelope_1 = require("./agent-envelope");
|
|
26
26
|
const spend_ledger_1 = require("./spend-ledger");
|
|
27
27
|
const model_routing_1 = require("./model-routing");
|
|
28
|
+
const model_settings_1 = require("./model-settings");
|
|
28
29
|
const sibling_repos_1 = require("./sibling-repos");
|
|
29
30
|
/**
|
|
30
31
|
* THE MODEL RUNS HERE; THE MODEL'S TOOLS DO NOT.
|
|
@@ -378,14 +379,16 @@ owned) {
|
|
|
378
379
|
return fail(`the agent did not run: provider_${ready.reason} — ${ready.because}`);
|
|
379
380
|
}
|
|
380
381
|
// The role's model and effort sit between the mediation flags and the
|
|
381
|
-
// tool allowlist
|
|
382
|
-
//
|
|
382
|
+
// tool allowlist. ALWAYS present now: config.yaml, then the project's
|
|
383
|
+
// remote settings, then the built-in defaults (`resolveRole`), so no
|
|
384
|
+
// built-in turn runs whatever Claude Code happens to default to.
|
|
385
|
+
const remote = deps.agentSettings !== undefined ? deps.agentSettings : (0, model_settings_1.remoteAgentSettingsFor)(projectDir);
|
|
383
386
|
argv = [
|
|
384
387
|
...claudeMediatedArgv(launch, requested),
|
|
385
388
|
// The prover is a TOOL role, not a model role: it runs the model the
|
|
386
389
|
// implementer's routing names, exactly as it did while it borrowed the
|
|
387
390
|
// implementer's transport. Only its tools narrowed.
|
|
388
|
-
...(0, model_routing_1.modelArgs)(role === 'prover' ? 'implementer' : role, spec),
|
|
391
|
+
...(0, model_routing_1.modelArgs)(role === 'prover' ? 'implementer' : role, spec, remote),
|
|
389
392
|
...allowedToolArgs(role, launch),
|
|
390
393
|
];
|
|
391
394
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-transport.js","sourceRoot":"","sources":["../src/model-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-transport.js","sourceRoot":"","sources":["../src/model-transport.ts"],"names":[],"mappings":"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"}
|
package/dist/provider-cmd.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { type ProviderAuthState } from './provider-state';
|
|
|
5
5
|
* `looply provider` — IS CLAUDE CODE READY ON THIS MACHINE, AND IF NOT, FIX IT.
|
|
6
6
|
*
|
|
7
7
|
* looply provider [status] where Claude Code was found, and whether Looply's profile is logged in
|
|
8
|
-
* looply provider install [--yes] install Claude Code (`npm i -g @anthropic-ai/claude-code`)
|
|
8
|
+
* looply provider install [--yes] install Claude Code (`npm i -g @anthropic-ai/claude-code@latest`)
|
|
9
|
+
* looply provider update [--yes] update Claude Code (the same npm command) — an outdated one
|
|
10
|
+
* refuses the models Looply asks for (`MIN_CLAUDE_CODE_VERSION`)
|
|
9
11
|
* looply provider login sign Looply's own Claude Code profile in
|
|
10
12
|
*
|
|
11
13
|
* `looply connect` runs the same check up front (`ensureProviderReady`), so a
|
|
@@ -18,7 +20,10 @@ import { type ProviderAuthState } from './provider-state';
|
|
|
18
20
|
* Looply ready, which is exactly what tripped the first real user.
|
|
19
21
|
*/
|
|
20
22
|
export declare const PROVIDER_USAGE: string;
|
|
21
|
-
|
|
23
|
+
/** `@latest`, so an install never lands a version too old for the configured models. */
|
|
24
|
+
export declare const INSTALL_COMMAND = "npm i -g @anthropic-ai/claude-code@latest";
|
|
25
|
+
/** An update is the same command: npm replaces the global install with the latest. */
|
|
26
|
+
export declare const UPDATE_COMMAND = "npm i -g @anthropic-ai/claude-code@latest";
|
|
22
27
|
export interface ProviderDeps {
|
|
23
28
|
readonly platform: NodeJS.Platform;
|
|
24
29
|
readonly interactive: boolean;
|
|
@@ -27,14 +32,16 @@ export interface ProviderDeps {
|
|
|
27
32
|
readonly profile: string;
|
|
28
33
|
discover(): ProviderDiscovery;
|
|
29
34
|
checkAuth(executable: string): ProviderAuthState;
|
|
30
|
-
/**
|
|
35
|
+
/** `<exe> --version`'s first `x.y.z`, or null when it cannot be read (never treated as outdated). */
|
|
36
|
+
version(executable: string): string | null;
|
|
37
|
+
/** Run the npm install (also the update) in the foreground; its exit code. */
|
|
31
38
|
install(): Promise<number>;
|
|
32
39
|
/** Run `<exe> auth login` in the foreground with CLAUDE_CONFIG_DIR=<profile>; its exit code. */
|
|
33
40
|
login(executable: string): Promise<number>;
|
|
34
41
|
out(line: string): void;
|
|
35
42
|
err(line: string): void;
|
|
36
43
|
}
|
|
37
|
-
export declare function readinessOf(deps: Pick<ProviderDeps, 'discover' | 'checkAuth'>): ProviderReadiness;
|
|
44
|
+
export declare function readinessOf(deps: Pick<ProviderDeps, 'discover' | 'checkAuth' | 'version'>): ProviderReadiness;
|
|
38
45
|
/** The exact command a person types to log Looply's profile in, in their own shell. */
|
|
39
46
|
export declare function loginCommandLine(executable: string, profile: string, platform: NodeJS.Platform): string;
|
|
40
47
|
/**
|
|
@@ -43,6 +50,8 @@ export declare function loginCommandLine(executable: string, profile: string, pl
|
|
|
43
50
|
*
|
|
44
51
|
* - Not installed: explain, then install — asking y/N on a terminal, without
|
|
45
52
|
* asking under `yes`, and otherwise printing the exact command.
|
|
53
|
+
* - Outdated (older than `MIN_CLAUDE_CODE_VERSION`): explain, then update —
|
|
54
|
+
* asked, automatic or printed exactly as for an install — and check again.
|
|
46
55
|
* - Not logged in: run the login on a terminal; otherwise print the command.
|
|
47
56
|
*/
|
|
48
57
|
export declare function ensureProviderReady(deps: ProviderDeps, opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-cmd.d.ts","sourceRoot":"","sources":["../src/provider-cmd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,
|
|
1
|
+
{"version":3,"file":"provider-cmd.d.ts","sourceRoot":"","sources":["../src/provider-cmd.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAuC,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAyC,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGjG;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,cAAc,QAKf,CAAC;AAEb,wFAAwF;AACxF,eAAO,MAAM,eAAe,8CAA8C,CAAC;AAC3E,sFAAsF;AACtF,eAAO,MAAM,cAAc,8CAAkB,CAAC;AAK9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACjD,qGAAqG;IACrG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,8EAA8E;IAC9E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,gGAAgG;IAChG,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,iBAAiB,CAK7G;AAgCD,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAIvG;AAaD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuFhH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0ElG;AAgDD,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAO,GAAG,YAAY,CAuC5H"}
|