@stigmer/cli 3.14.1 → 3.15.1
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/client/client.d.ts +20 -1
- package/client/client.d.ts.map +1 -1
- package/client/client.js +32 -5
- package/client/client.js.map +1 -1
- package/commands/auth/index.d.ts.map +1 -1
- package/commands/auth/index.js +7 -36
- package/commands/auth/index.js.map +1 -1
- package/commands/auth/login.d.ts +13 -0
- package/commands/auth/login.d.ts.map +1 -0
- package/commands/auth/login.js +58 -0
- package/commands/auth/login.js.map +1 -0
- package/commands/auth/whoami.d.ts +18 -0
- package/commands/auth/whoami.d.ts.map +1 -0
- package/commands/auth/whoami.js +58 -0
- package/commands/auth/whoami.js.map +1 -0
- package/commands/draft.d.ts.map +1 -1
- package/commands/draft.js +24 -8
- package/commands/draft.js.map +1 -1
- package/commands/internal-daemon.d.ts.map +1 -1
- package/commands/internal-daemon.js +2 -9
- package/commands/internal-daemon.js.map +1 -1
- package/commands/run.d.ts.map +1 -1
- package/commands/run.js +15 -6
- package/commands/run.js.map +1 -1
- package/commands/up.d.ts.map +1 -1
- package/commands/up.js +37 -8
- package/commands/up.js.map +1 -1
- package/local/artifact.d.ts +13 -3
- package/local/artifact.d.ts.map +1 -1
- package/local/artifact.js +31 -10
- package/local/artifact.js.map +1 -1
- package/local/daemon/components.d.ts.map +1 -1
- package/local/daemon/components.js +2 -0
- package/local/daemon/components.js.map +1 -1
- package/local/daemon/host.d.ts +8 -0
- package/local/daemon/host.d.ts.map +1 -1
- package/local/daemon/host.js +42 -1
- package/local/daemon/host.js.map +1 -1
- package/local/daemon/index.d.ts +3 -3
- package/local/daemon/index.d.ts.map +1 -1
- package/local/daemon/index.js +2 -2
- package/local/daemon/index.js.map +1 -1
- package/local/daemon/launch.d.ts +29 -1
- package/local/daemon/launch.d.ts.map +1 -1
- package/local/daemon/launch.js +73 -23
- package/local/daemon/launch.js.map +1 -1
- package/local/daemon/process.d.ts +16 -2
- package/local/daemon/process.d.ts.map +1 -1
- package/local/daemon/process.js +16 -2
- package/local/daemon/process.js.map +1 -1
- package/local/daemon/types.d.ts +2 -0
- package/local/daemon/types.d.ts.map +1 -1
- package/local/paths.d.ts +14 -4
- package/local/paths.d.ts.map +1 -1
- package/local/paths.js +17 -4
- package/local/paths.js.map +1 -1
- package/local/runtime/runner.d.ts +4 -0
- package/local/runtime/runner.d.ts.map +1 -1
- package/local/runtime/runner.js +10 -6
- package/local/runtime/runner.js.map +1 -1
- package/local/runtime/server.d.ts +5 -0
- package/local/runtime/server.d.ts.map +1 -1
- package/local/runtime/server.js +13 -8
- package/local/runtime/server.js.map +1 -1
- package/local/seedpack/content.d.ts +4 -0
- package/local/seedpack/content.d.ts.map +1 -1
- package/local/seedpack/content.js +11 -11
- package/local/seedpack/content.js.map +1 -1
- package/local/state/lock.d.ts +3 -2
- package/local/state/lock.d.ts.map +1 -1
- package/local/state/lock.js +23 -9
- package/local/state/lock.js.map +1 -1
- package/local/state/proc.d.ts +13 -0
- package/local/state/proc.d.ts.map +1 -1
- package/local/state/proc.js +15 -0
- package/local/state/proc.js.map +1 -1
- package/local/temporal/download.d.ts +7 -1
- package/local/temporal/download.d.ts.map +1 -1
- package/local/temporal/download.js +21 -11
- package/local/temporal/download.js.map +1 -1
- package/local/temporal/index.d.ts +3 -3
- package/local/temporal/index.d.ts.map +1 -1
- package/local/temporal/index.js +2 -2
- package/local/temporal/index.js.map +1 -1
- package/local/temporal/inspect.d.ts +10 -3
- package/local/temporal/inspect.d.ts.map +1 -1
- package/local/temporal/inspect.js +52 -13
- package/local/temporal/inspect.js.map +1 -1
- package/local/temporal/manager.d.ts +16 -4
- package/local/temporal/manager.d.ts.map +1 -1
- package/local/temporal/manager.js +19 -6
- package/local/temporal/manager.js.map +1 -1
- package/package.json +5 -5
- package/resources/run/prepare.d.ts +10 -8
- package/resources/run/prepare.d.ts.map +1 -1
- package/resources/run/prepare.js +18 -4
- package/resources/run/prepare.js.map +1 -1
- package/src/client/client.test.ts +89 -1
- package/src/client/client.ts +82 -9
- package/src/commands/auth/index.ts +7 -56
- package/src/commands/auth/login.test.ts +52 -0
- package/src/commands/auth/login.ts +70 -0
- package/src/commands/auth/whoami.test.ts +96 -0
- package/src/commands/auth/whoami.ts +87 -0
- package/src/commands/draft.ts +85 -26
- package/src/commands/internal-daemon.ts +2 -10
- package/src/commands/run.ts +77 -35
- package/src/commands/up.ts +52 -8
- package/src/local/artifact.test.ts +27 -1
- package/src/local/artifact.ts +35 -13
- package/src/local/daemon/components.ts +2 -0
- package/src/local/daemon/daemon.integration.test.ts +33 -0
- package/src/local/daemon/host.ts +50 -1
- package/src/local/daemon/index.ts +3 -3
- package/src/local/daemon/launch.test.ts +136 -0
- package/src/local/daemon/launch.ts +108 -27
- package/src/local/daemon/process.ts +31 -4
- package/src/local/daemon/supervisor.test.ts +1 -1
- package/src/local/daemon/types.ts +2 -0
- package/src/local/paths.ts +17 -4
- package/src/local/runtime/runner.ts +10 -6
- package/src/local/runtime/runtime.test.ts +15 -0
- package/src/local/runtime/server.test.ts +37 -0
- package/src/local/runtime/server.ts +17 -12
- package/src/local/seedpack/content.test.ts +21 -0
- package/src/local/seedpack/content.ts +15 -16
- package/src/local/state/lock.ts +24 -9
- package/src/local/state/proc.ts +16 -0
- package/src/local/state/state.test.ts +25 -1
- package/src/local/temporal/download.test.ts +79 -11
- package/src/local/temporal/download.ts +24 -11
- package/src/local/temporal/index.ts +11 -3
- package/src/local/temporal/inspect.test.ts +83 -0
- package/src/local/temporal/inspect.ts +60 -12
- package/src/local/temporal/manager.test.ts +34 -1
- package/src/local/temporal/manager.ts +22 -8
- package/src/resources/run/prepare.test.ts +28 -26
- package/src/resources/run/prepare.ts +48 -18
|
@@ -93,18 +93,20 @@ export interface PreparedRun {
|
|
|
93
93
|
/** Optional behavior switches for {@link prepareAgentExec}. */
|
|
94
94
|
export interface PrepareAgentExecOptions {
|
|
95
95
|
/**
|
|
96
|
-
* When `true`
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* `
|
|
101
|
-
*
|
|
96
|
+
* When `true` and `--model` is omitted, the model is filled from the
|
|
97
|
+
* caller's account preference (`IdentityAccountPreferences.default_*_model`
|
|
98
|
+
* for the resolved harness) via `whoAmI()`. The caller answers this from
|
|
99
|
+
* the connected server's edition and the kind's tier —
|
|
100
|
+
* `client.isResourceAvailable(ApiResourceKind.identity_account)` — never
|
|
101
|
+
* from the config's backend type (20260911.11 A3): a server that does not
|
|
102
|
+
* serve identity accounts is not even asked, and the omitted model keeps
|
|
103
|
+
* resolving to the platform default.
|
|
102
104
|
*/
|
|
103
|
-
readonly
|
|
105
|
+
readonly accountPreferencesAvailable?: boolean;
|
|
104
106
|
/**
|
|
105
107
|
* When `true` and `--harness` is omitted, the harness is filled from the
|
|
106
108
|
* caller's account preference (`IdentityAccountPreferences.default_harness`)
|
|
107
|
-
*
|
|
109
|
+
* where the kind is served. `run` opts in; `draft` deliberately does not: draft executes the
|
|
108
110
|
* seedpack's system creator agents (a utility flow, not the user's own
|
|
109
111
|
* conversation), which are built and exercised on the native harness —
|
|
110
112
|
* silently rerouting them onto the cursor engine (different toolset,
|
|
@@ -133,27 +135,38 @@ export async function prepareAgentExec(
|
|
|
133
135
|
validateHarness(flags.harness);
|
|
134
136
|
|
|
135
137
|
// Layered seeds (oss#293, DD-003): explicit flag > account preference
|
|
136
|
-
// (
|
|
138
|
+
// (where the server serves identity accounts) > platform default. Harness resolves first because the model
|
|
137
139
|
// fill is harness-aware: a cursor session fills from default_cursor_model,
|
|
138
140
|
// everything else from default_native_model. `run` and `draft` always
|
|
139
141
|
// create a NEW session (threading lives in `resume`, which does not pass
|
|
140
142
|
// through here), so neither fill can ever contradict an existing session's
|
|
141
143
|
// immutable harness. One whoAmI round trip serves both fills, and it is
|
|
142
144
|
// skipped entirely when explicit flags leave nothing to fill.
|
|
143
|
-
const wantsHarnessFill =
|
|
145
|
+
const wantsHarnessFill =
|
|
146
|
+
flags.harness === "" && options?.applyAccountHarnessDefault === true;
|
|
144
147
|
const wantsModelFill = flags.model === "";
|
|
145
148
|
const accountDefaults =
|
|
146
|
-
options?.
|
|
149
|
+
options?.accountPreferencesAvailable === true &&
|
|
150
|
+
(wantsHarnessFill || wantsModelFill)
|
|
147
151
|
? await resolveAccountExecutionDefaults(client)
|
|
148
152
|
: NO_ACCOUNT_DEFAULTS;
|
|
149
|
-
const harness =
|
|
153
|
+
const harness =
|
|
154
|
+
flags.harness !== ""
|
|
155
|
+
? flags.harness
|
|
156
|
+
: wantsHarnessFill
|
|
157
|
+
? accountDefaults.harness
|
|
158
|
+
: "";
|
|
150
159
|
const model = wantsModelFill
|
|
151
160
|
? harness === "cursor"
|
|
152
161
|
? accountDefaults.cursorModel
|
|
153
162
|
: accountDefaults.nativeModel
|
|
154
163
|
: flags.model;
|
|
155
164
|
|
|
156
|
-
const workspaceEntries = parseWorkspaceEntries(
|
|
165
|
+
const workspaceEntries = parseWorkspaceEntries(
|
|
166
|
+
flags.workspace,
|
|
167
|
+
flags.branch,
|
|
168
|
+
flags.commit,
|
|
169
|
+
);
|
|
157
170
|
|
|
158
171
|
const runtimeEnv = loadAndMergeEnv({
|
|
159
172
|
envFlags: flags.env,
|
|
@@ -197,7 +210,11 @@ interface AccountExecutionDefaults {
|
|
|
197
210
|
readonly cursorModel: string;
|
|
198
211
|
}
|
|
199
212
|
|
|
200
|
-
const NO_ACCOUNT_DEFAULTS: AccountExecutionDefaults = {
|
|
213
|
+
const NO_ACCOUNT_DEFAULTS: AccountExecutionDefaults = {
|
|
214
|
+
harness: "",
|
|
215
|
+
nativeModel: "",
|
|
216
|
+
cursorModel: "",
|
|
217
|
+
};
|
|
201
218
|
|
|
202
219
|
/**
|
|
203
220
|
* Best-effort read of the caller's execution defaults
|
|
@@ -206,12 +223,19 @@ const NO_ACCOUNT_DEFAULTS: AccountExecutionDefaults = { harness: "", nativeModel
|
|
|
206
223
|
* IdentityAccount — resolves to no defaults and the run proceeds exactly as
|
|
207
224
|
* unfilled flags do today: a missing preference must never fail a run.
|
|
208
225
|
*
|
|
226
|
+
* This reads `whoAmI` directly and never the SDK's ensureMyIdentityAccount:
|
|
227
|
+
* a run must not create an account as a side effect, so NOT_FOUND here means
|
|
228
|
+
* "no preferences yet". Provisioning belongs to `auth login` and `auth
|
|
229
|
+
* whoami`, the commands whose purpose is the caller's identity.
|
|
230
|
+
*
|
|
209
231
|
* The persisted harness value is allowlist-guarded to the shipped engines
|
|
210
232
|
* (the same guard the web launcher's useAccountExecutionDefaults applies):
|
|
211
233
|
* a client must not trust stored data it did not write, so anything outside
|
|
212
234
|
* native/cursor is treated as undeclared rather than stamped on the wire.
|
|
213
235
|
*/
|
|
214
|
-
async function resolveAccountExecutionDefaults(
|
|
236
|
+
async function resolveAccountExecutionDefaults(
|
|
237
|
+
client: Stigmer,
|
|
238
|
+
): Promise<AccountExecutionDefaults> {
|
|
215
239
|
try {
|
|
216
240
|
const account = await client.identityAccount.whoAmI();
|
|
217
241
|
const prefs = account.spec?.preferences;
|
|
@@ -257,7 +281,9 @@ export function parseApprovalAction(value: string): ApprovalAction {
|
|
|
257
281
|
*/
|
|
258
282
|
export function validateMode(mode: string): asserts mode is RunMode {
|
|
259
283
|
if (mode !== "" && mode !== "agent" && mode !== "plan") {
|
|
260
|
-
throw new UsageError(
|
|
284
|
+
throw new UsageError(
|
|
285
|
+
`invalid --mode value "${mode}": must be "agent" or "plan"`,
|
|
286
|
+
);
|
|
261
287
|
}
|
|
262
288
|
}
|
|
263
289
|
|
|
@@ -267,7 +293,9 @@ export function validateMode(mode: string): asserts mode is RunMode {
|
|
|
267
293
|
* server refuses fast on models without a registry fast variant; this check
|
|
268
294
|
* only catches spelling errors before a network round trip.
|
|
269
295
|
*/
|
|
270
|
-
export function validateServiceTier(
|
|
296
|
+
export function validateServiceTier(
|
|
297
|
+
tier: string,
|
|
298
|
+
): asserts tier is ServiceTierFlag {
|
|
271
299
|
if (tier !== "" && tier !== "standard" && tier !== "fast") {
|
|
272
300
|
throw new UsageError(
|
|
273
301
|
`invalid --service-tier value "${tier}": must be "standard" or "fast"`,
|
|
@@ -298,7 +326,9 @@ export function validateThinking(mode: string): asserts mode is ThinkingFlag {
|
|
|
298
326
|
* them here is honest, and this check catches spelling errors before a
|
|
299
327
|
* network round trip.
|
|
300
328
|
*/
|
|
301
|
-
export function validateHarness(
|
|
329
|
+
export function validateHarness(
|
|
330
|
+
harness: string,
|
|
331
|
+
): asserts harness is HarnessFlag {
|
|
302
332
|
if (harness !== "" && harness !== "native" && harness !== "cursor") {
|
|
303
333
|
throw new UsageError(
|
|
304
334
|
`invalid --harness value "${harness}": must be "native" or "cursor"`,
|