@runtypelabs/cli 2.21.6 → 2.22.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.
Files changed (2) hide show
  1. package/dist/index.js +174 -33
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -15128,7 +15128,7 @@ function date4(params) {
15128
15128
  // ../../node_modules/.pnpm/zod@4.4.2/node_modules/zod/v4/classic/external.js
15129
15129
  config(en_default());
15130
15130
 
15131
- // ../shared/dist/chunk-R2PFJC7N.mjs
15131
+ // ../shared/dist/chunk-IZI2WRCS.mjs
15132
15132
  var apiReleaseChannelSchema = external_exports.enum(["staging", "production"]);
15133
15133
  var API_ARTIFACT_SCRIPT_PATTERN = /^api-[a-z0-9][a-z0-9-]{0,62}$/;
15134
15134
  var apiArtifactScriptNameSchema = external_exports.string().regex(
@@ -15168,6 +15168,18 @@ var apiRoutingDocSchema = external_exports.object({
15168
15168
  message: "activeScript may only be null while legacyFallback is true",
15169
15169
  path: ["api", "activeScript"]
15170
15170
  });
15171
+ var edgeContextPayloadSchema = external_exports.object({
15172
+ /** Resolved Runtype user id (`user_…`). */
15173
+ userId: external_exports.string().min(1),
15174
+ /** Resolved org id (`org_…`); null for a personal (no-org) credential. */
15175
+ orgId: external_exports.string().min(1).nullable(),
15176
+ /** Effective permission scopes for the credential (e.g. `["*"]`). */
15177
+ scopes: external_exports.array(external_exports.string()),
15178
+ /** Token id (one per mint) — replay/audit handle, never reused as a secret. */
15179
+ jti: external_exports.string().min(1),
15180
+ /** Expiry as epoch MILLISECONDS; the token is rejected once `exp <= now`. */
15181
+ exp: external_exports.number().int().positive()
15182
+ });
15171
15183
 
15172
15184
  // ../shared/dist/chunk-KR4LFVFE.mjs
15173
15185
  function getNestedValue(obj, path18) {
@@ -36768,36 +36780,36 @@ var caseExpectedSchema = external_exports.object({
36768
36780
  });
36769
36781
  var DEFAULT_MODELS_FOR_NEW_ACCOUNTS = [
36770
36782
  // Mixlayer models
36771
- { provider: "runtype", modelId: "qwen/qwen3.5-9b", isDefault: true },
36772
- { provider: "runtype", modelId: "qwen3.5-plus", isDefault: false },
36783
+ { provider: "runtype", modelId: "qwen/qwen3.6-27b", isDefault: false },
36784
+ { provider: "runtype", modelId: "qwen3.6-plus", isDefault: false },
36773
36785
  // General Compute (platform key) - explicit provider prefix, single-provider model
36774
36786
  { provider: "runtype", modelId: "general-compute/minimax-m2.7", isDefault: false },
36775
36787
  // Routed models - benefit from automatic provider optimization
36776
36788
  // OpenAI models (routed via OpenAI direct, with Vercel fallback)
36777
- { provider: "runtype", modelId: "gpt-5.4", isDefault: false },
36789
+ { provider: "runtype", modelId: "gpt-5.5", isDefault: false },
36778
36790
  { provider: "runtype", modelId: "gpt-5.4-mini", isDefault: false },
36779
36791
  { provider: "runtype", modelId: "gpt-5.4-nano", isDefault: false },
36780
36792
  // Anthropic models (routed via Anthropic direct, with Vertex/Bedrock fallback)
36781
- { provider: "runtype", modelId: "claude-sonnet-4-6", isDefault: false },
36782
36793
  { provider: "runtype", modelId: "claude-haiku-4-5", isDefault: false },
36783
- { provider: "runtype", modelId: "claude-opus-4-6", isDefault: false },
36794
+ { provider: "runtype", modelId: "claude-sonnet-4-6", isDefault: false },
36795
+ { provider: "runtype", modelId: "claude-opus-4-8", isDefault: false },
36784
36796
  // Google models (routed via Google direct, with Vertex/Vercel fallback)
36785
36797
  { provider: "runtype", modelId: "gemini-3-1-flash-lite", isDefault: false },
36798
+ { provider: "runtype", modelId: "gemini-3.5-flash", isDefault: false },
36786
36799
  { provider: "runtype", modelId: "gemini-3-1-flash-image", isDefault: false },
36787
36800
  { provider: "runtype", modelId: "gemini-3.1-pro", isDefault: false },
36788
- // xAI models (routed via Vercel, with xAI fallback when available)
36789
- { provider: "runtype", modelId: "grok-4.3", isDefault: false },
36790
- { provider: "runtype", modelId: "grok-4.1-fast-non-reasoning", isDefault: false },
36791
36801
  // Inception models (routed via Vercel)
36792
36802
  { provider: "runtype", modelId: "mercury-2", isDefault: false },
36793
- // Moonshot models (routed via Cloudflare Workers AI)
36794
- { provider: "runtype", modelId: "kimi-k2.6", isDefault: false },
36795
- // NVIDIA models (routed via Cloudflare Workers AI)
36796
- { provider: "runtype", modelId: "nemotron-3-120b-a12b", isDefault: false },
36803
+ // Moonshot models (routed via Vercel)
36804
+ // Kimi K2.6 is the default model: a reasoning + tool-use + vision model
36805
+ // already trusted as the product-generator default.
36806
+ { provider: "runtype", modelId: "kimi-k2.6", isDefault: true },
36807
+ // NVIDIA Nemotron Ultra (reasoning + tool-use flagship, routed via Vercel)
36808
+ { provider: "runtype", modelId: "nemotron-3-ultra-550b-a55b", isDefault: false },
36797
36809
  // Google models (routed via Cloudflare Workers AI)
36798
36810
  { provider: "runtype", modelId: "gemma-4-26b-a4b-it", isDefault: false }
36799
36811
  ];
36800
- var DEFAULT_MODEL_ID = DEFAULT_MODELS_FOR_NEW_ACCOUNTS.find((m2) => m2.isDefault)?.modelId ?? "qwen/qwen3.5-9b";
36812
+ var DEFAULT_MODEL_ID = DEFAULT_MODELS_FOR_NEW_ACCOUNTS.find((m2) => m2.isDefault)?.modelId ?? "kimi-k2.6";
36801
36813
  var userProfileFeaturesSchema = external_exports.object({
36802
36814
  enableAgentSkills: external_exports.boolean(),
36803
36815
  // Routed model id the product generator dispatches with. Driven by the
@@ -52726,6 +52738,32 @@ function listForkCandidates(log) {
52726
52738
  return candidates;
52727
52739
  }
52728
52740
 
52741
+ // src/marathon/steering-queue.ts
52742
+ function createSteeringQueue(options = {}) {
52743
+ const items = [];
52744
+ const notify = () => {
52745
+ options.onSizeChange?.(items.length);
52746
+ };
52747
+ return {
52748
+ push(message) {
52749
+ items.push(message);
52750
+ notify();
52751
+ },
52752
+ drain() {
52753
+ if (items.length === 0) return [];
52754
+ const drained = items.splice(0);
52755
+ notify();
52756
+ return drained;
52757
+ },
52758
+ size() {
52759
+ return items.length;
52760
+ },
52761
+ isEmpty() {
52762
+ return items.length === 0;
52763
+ }
52764
+ };
52765
+ }
52766
+
52729
52767
  // src/ink/marathon/CheckpointPrompt.tsx
52730
52768
  import { useState as useState26, useEffect as useEffect21, useRef as useRef8 } from "react";
52731
52769
  import { Box as Box23, Text as Text26 } from "ink";
@@ -55133,14 +55171,12 @@ function MarathonApp({
55133
55171
  getCallbacks: () => callbacks,
55134
55172
  getState: () => getHydratedState(),
55135
55173
  drainSteeringQueue: () => {
55136
- const drained = steeringQueueRef.current.splice(0);
55137
- if (drained.length > 0) setQueuedSteerCount(0);
55174
+ const drained = steeringQueue.drain();
55138
55175
  return drained.length > 0 ? drained : void 0;
55139
55176
  },
55140
- hasQueuedSteering: () => steeringQueueRef.current.length > 0,
55177
+ hasQueuedSteering: () => !steeringQueue.isEmpty(),
55141
55178
  drainFollowUpQueue: () => {
55142
- const drained = followUpQueueRef.current.splice(0);
55143
- if (drained.length > 0) setQueuedFollowUpCount(0);
55179
+ const drained = followUpQueue.drain();
55144
55180
  return drained.length > 0 ? drained : void 0;
55145
55181
  },
55146
55182
  appendSessionSnapshot: (snapshot) => {
@@ -55222,10 +55258,18 @@ function MarathonApp({
55222
55258
  setEscAbortArmed(false);
55223
55259
  }
55224
55260
  }, [isAgentWorkingPhase, escAbortArmed]);
55225
- const steeringQueueRef = useRef9([]);
55226
- const followUpQueueRef = useRef9([]);
55227
55261
  const [queuedSteerCount, setQueuedSteerCount] = useState31(0);
55228
55262
  const [queuedFollowUpCount, setQueuedFollowUpCount] = useState31(0);
55263
+ const steeringQueueHolder = useRef9(null);
55264
+ if (steeringQueueHolder.current === null) {
55265
+ steeringQueueHolder.current = createSteeringQueue({ onSizeChange: setQueuedSteerCount });
55266
+ }
55267
+ const steeringQueue = steeringQueueHolder.current;
55268
+ const followUpQueueHolder = useRef9(null);
55269
+ if (followUpQueueHolder.current === null) {
55270
+ followUpQueueHolder.current = createSteeringQueue({ onSizeChange: setQueuedFollowUpCount });
55271
+ }
55272
+ const followUpQueue = followUpQueueHolder.current;
55229
55273
  const [showSteerComposer, setShowSteerComposer] = useState31(false);
55230
55274
  const [steerDraft, setSteerDraft] = useState31("");
55231
55275
  const [activeScreen, setActiveScreen] = useState31("overview");
@@ -55724,8 +55768,7 @@ function MarathonApp({
55724
55768
  if (escAbortTimeout.current) clearTimeout(escAbortTimeout.current);
55725
55769
  setEscAbortArmed(false);
55726
55770
  if (onAbortTurn?.() && !noCheckpoint) {
55727
- const queued = steeringQueueRef.current.splice(0);
55728
- setQueuedSteerCount(0);
55771
+ const queued = steeringQueue.drain();
55729
55772
  const restored = [...queued, steerDraft].map((text) => text.trim()).filter(Boolean).join("\n\n");
55730
55773
  setSteerDraft("");
55731
55774
  setCheckpointInitialMessage(restored || void 0);
@@ -56457,11 +56500,9 @@ function MarathonApp({
56457
56500
  initialDraft: steerDraft,
56458
56501
  onSubmit: (message, kind) => {
56459
56502
  if (kind === "steer") {
56460
- steeringQueueRef.current.push(message);
56461
- setQueuedSteerCount(steeringQueueRef.current.length);
56503
+ steeringQueue.push(message);
56462
56504
  } else {
56463
- followUpQueueRef.current.push(message);
56464
- setQueuedFollowUpCount(followUpQueueRef.current.length);
56505
+ followUpQueue.push(message);
56465
56506
  }
56466
56507
  setSteerDraft("");
56467
56508
  setShowSteerComposer(false);
@@ -59455,7 +59496,40 @@ function resolveModelForPhase(phase, cliOverrides, milestoneModels) {
59455
59496
  }
59456
59497
  return cliOverrides.defaultModel;
59457
59498
  }
59458
- function resolveErrorHandlingForPhase(phase, cliFallbackModel, milestoneFallbackModels) {
59499
+ function resolveMaxTokensForPhase(phase, cliMaxTokens, milestoneMaxTokens, defaultMaxTokens) {
59500
+ if (phase && milestoneMaxTokens?.[phase] !== void 0) return milestoneMaxTokens[phase];
59501
+ if (cliMaxTokens !== void 0) return cliMaxTokens;
59502
+ return defaultMaxTokens;
59503
+ }
59504
+ function resolveTemperatureForPhase(phase, cliTemperature, milestoneTemperature, defaultTemperature) {
59505
+ if (phase && milestoneTemperature?.[phase] !== void 0) return milestoneTemperature[phase];
59506
+ if (cliTemperature !== void 0) return cliTemperature;
59507
+ return defaultTemperature;
59508
+ }
59509
+ function parseMaxTokensFlag(raw) {
59510
+ if (raw === void 0) return void 0;
59511
+ const value = Number(raw);
59512
+ if (!Number.isInteger(value) || value <= 0) {
59513
+ throw new Error(`Invalid --max-tokens "${raw}": expected a positive integer`);
59514
+ }
59515
+ return value;
59516
+ }
59517
+ function parseTemperatureFlag(raw) {
59518
+ if (raw === void 0) return void 0;
59519
+ const value = Number(raw);
59520
+ if (!Number.isFinite(value) || value < 0 || value > 2) {
59521
+ throw new Error(`Invalid --temperature "${raw}": expected a number between 0 and 2`);
59522
+ }
59523
+ return value;
59524
+ }
59525
+ function resolveFallbackOnEmptyForPhase(phase, milestoneFallbackOnEmpty, defaultFallbackOnEmpty) {
59526
+ if (phase && milestoneFallbackOnEmpty?.[phase] !== void 0) {
59527
+ return milestoneFallbackOnEmpty[phase];
59528
+ }
59529
+ return defaultFallbackOnEmpty ?? false;
59530
+ }
59531
+ function resolveErrorHandlingForPhase(phase, cliFallbackModel, milestoneFallbackModels, fallbackOnEmpty) {
59532
+ const triggers = fallbackOnEmpty ? [{ type: "empty-output" }, { type: "error" }] : void 0;
59459
59533
  const phaseFallbacks = phase ? milestoneFallbackModels?.[phase] : void 0;
59460
59534
  if (phaseFallbacks?.length) {
59461
59535
  return {
@@ -59468,7 +59542,8 @@ function resolveErrorHandlingForPhase(phase, cliFallbackModel, milestoneFallback
59468
59542
  ...fb.temperature !== void 0 ? { temperature: fb.temperature } : {},
59469
59543
  ...fb.maxTokens !== void 0 ? { maxTokens: fb.maxTokens } : {}
59470
59544
  }))
59471
- ]
59545
+ ],
59546
+ ...triggers ? { triggers } : {}
59472
59547
  };
59473
59548
  }
59474
59549
  if (cliFallbackModel) {
@@ -59477,7 +59552,8 @@ function resolveErrorHandlingForPhase(phase, cliFallbackModel, milestoneFallback
59477
59552
  fallbacks: [
59478
59553
  { type: "retry", delay: 5e3 },
59479
59554
  { type: "model", model: cliFallbackModel }
59480
- ]
59555
+ ],
59556
+ ...triggers ? { triggers } : {}
59481
59557
  };
59482
59558
  }
59483
59559
  return void 0;
@@ -59632,6 +59708,15 @@ function collectPlaybookWarnings(config3) {
59632
59708
  );
59633
59709
  }
59634
59710
  }
59711
+ const emptyDefault = config3.fallbackOnEmpty === true;
59712
+ for (const m2 of config3.milestones) {
59713
+ const enabled = m2.fallbackOnEmpty ?? emptyDefault;
59714
+ if (enabled && !m2.fallbackModels?.length) {
59715
+ warnings.push(
59716
+ `Playbook '${config3.name}': milestone '${m2.name}' enables fallbackOnEmpty but defines no fallbackModels \u2014 empty output has nothing to fall back to.`
59717
+ );
59718
+ }
59719
+ }
59635
59720
  return warnings;
59636
59721
  }
59637
59722
  var PLUGIN_EXTENSIONS = /* @__PURE__ */ new Set([".js", ".mjs", ".cjs"]);
@@ -59709,17 +59794,29 @@ async function loadPlaybook(nameOrPath, cwd) {
59709
59794
  });
59710
59795
  const milestoneModels = {};
59711
59796
  const milestoneFallbackModels = {};
59797
+ const milestoneMaxTokens = {};
59798
+ const milestoneTemperature = {};
59799
+ const milestoneFallbackOnEmpty = {};
59712
59800
  for (const m2 of config3.milestones) {
59713
59801
  if (m2.model) milestoneModels[m2.name] = m2.model;
59714
59802
  if (m2.fallbackModels?.length) {
59715
59803
  milestoneFallbackModels[m2.name] = m2.fallbackModels.map(normalizeFallbackModel);
59716
59804
  }
59805
+ if (m2.maxTokens !== void 0) milestoneMaxTokens[m2.name] = m2.maxTokens;
59806
+ if (m2.temperature !== void 0) milestoneTemperature[m2.name] = m2.temperature;
59807
+ if (m2.fallbackOnEmpty !== void 0) milestoneFallbackOnEmpty[m2.name] = m2.fallbackOnEmpty;
59717
59808
  }
59718
59809
  return {
59719
59810
  workflow,
59720
59811
  milestones: config3.milestones.map((m2) => m2.name),
59721
59812
  milestoneModels: Object.keys(milestoneModels).length > 0 ? milestoneModels : void 0,
59722
59813
  milestoneFallbackModels: Object.keys(milestoneFallbackModels).length > 0 ? milestoneFallbackModels : void 0,
59814
+ milestoneMaxTokens: Object.keys(milestoneMaxTokens).length > 0 ? milestoneMaxTokens : void 0,
59815
+ milestoneTemperature: Object.keys(milestoneTemperature).length > 0 ? milestoneTemperature : void 0,
59816
+ milestoneFallbackOnEmpty: Object.keys(milestoneFallbackOnEmpty).length > 0 ? milestoneFallbackOnEmpty : void 0,
59817
+ ...config3.maxTokens !== void 0 ? { defaultMaxTokens: config3.maxTokens } : {},
59818
+ ...config3.temperature !== void 0 ? { defaultTemperature: config3.temperature } : {},
59819
+ ...config3.fallbackOnEmpty !== void 0 ? { defaultFallbackOnEmpty: config3.fallbackOnEmpty } : {},
59723
59820
  verification: config3.verification,
59724
59821
  rules: config3.rules,
59725
59822
  policy: config3.policy,
@@ -60282,6 +60379,12 @@ async function taskAction(agent, options) {
60282
60379
  let playbookMilestones;
60283
60380
  let playbookMilestoneModels;
60284
60381
  let playbookMilestoneFallbackModels;
60382
+ let playbookMilestoneMaxTokens;
60383
+ let playbookMilestoneTemperature;
60384
+ let playbookMilestoneFallbackOnEmpty;
60385
+ let playbookDefaultMaxTokens;
60386
+ let playbookDefaultTemperature;
60387
+ let playbookDefaultFallbackOnEmpty;
60285
60388
  let playbookPolicy;
60286
60389
  if (options.playbook) {
60287
60390
  const result = await loadPlaybook(options.playbook);
@@ -60289,6 +60392,12 @@ async function taskAction(agent, options) {
60289
60392
  playbookMilestones = result.milestones;
60290
60393
  playbookMilestoneModels = result.milestoneModels;
60291
60394
  playbookMilestoneFallbackModels = result.milestoneFallbackModels;
60395
+ playbookMilestoneMaxTokens = result.milestoneMaxTokens;
60396
+ playbookMilestoneTemperature = result.milestoneTemperature;
60397
+ playbookMilestoneFallbackOnEmpty = result.milestoneFallbackOnEmpty;
60398
+ playbookDefaultMaxTokens = result.defaultMaxTokens;
60399
+ playbookDefaultTemperature = result.defaultTemperature;
60400
+ playbookDefaultFallbackOnEmpty = result.defaultFallbackOnEmpty;
60292
60401
  playbookPolicy = result.policy;
60293
60402
  for (const warning of result.warnings) {
60294
60403
  if (useStartupShell) {
@@ -60300,6 +60409,8 @@ async function taskAction(agent, options) {
60300
60409
  } else {
60301
60410
  playbookPolicy = void 0;
60302
60411
  }
60412
+ const cliMaxTokens = parseMaxTokensFlag(options.maxTokens);
60413
+ const cliTemperature = parseTemperatureFlag(options.temperature);
60303
60414
  if (useStartupShell && !options.model?.trim()) {
60304
60415
  if (playbookMilestoneModels && Object.keys(playbookMilestoneModels).length > 0 && startupShellRef.current) {
60305
60416
  let editableModels = { ...playbookMilestoneModels };
@@ -60439,7 +60550,12 @@ ${rulesContext}`;
60439
60550
  const initialErrorHandling = resolveErrorHandlingForPhase(
60440
60551
  currentPhase,
60441
60552
  options.fallbackModel,
60442
- playbookMilestoneFallbackModels
60553
+ playbookMilestoneFallbackModels,
60554
+ resolveFallbackOnEmptyForPhase(
60555
+ currentPhase,
60556
+ playbookMilestoneFallbackOnEmpty,
60557
+ playbookDefaultFallbackOnEmpty
60558
+ )
60443
60559
  );
60444
60560
  if (initialErrorHandling) {
60445
60561
  await client.agents.update(agentId, { config: { errorHandling: initialErrorHandling } }).catch(() => {
@@ -60773,6 +60889,18 @@ Saving state... done. Session saved to ${filePath}`);
60773
60889
  },
60774
60890
  playbookMilestoneModels
60775
60891
  );
60892
+ const phaseMaxTokens = resolveMaxTokensForPhase(
60893
+ resumeState?.workflowPhase,
60894
+ cliMaxTokens,
60895
+ playbookMilestoneMaxTokens,
60896
+ playbookDefaultMaxTokens
60897
+ );
60898
+ const phaseTemperature = resolveTemperatureForPhase(
60899
+ resumeState?.workflowPhase,
60900
+ cliTemperature,
60901
+ playbookMilestoneTemperature,
60902
+ playbookDefaultTemperature
60903
+ );
60776
60904
  const effectiveModelForContext = phaseModel || options.model || agentConfigModel || defaultConfiguredModel;
60777
60905
  const compactStrategy = resolveCompactStrategyForModel(effectiveModelForContext);
60778
60906
  const contextLimitTokens = resolveContextLimitForModel(effectiveModelForContext);
@@ -60787,6 +60915,8 @@ Saving state... done. Session saved to ${filePath}`);
60787
60915
  maxSessions: remainingSessions - accumulatedSessions,
60788
60916
  maxCost: currentRemainingCost,
60789
60917
  model: phaseModel || options.model,
60918
+ ...phaseMaxTokens !== void 0 ? { maxTokens: phaseMaxTokens } : {},
60919
+ ...phaseTemperature !== void 0 ? { temperature: phaseTemperature } : {},
60790
60920
  abortSignal: turnAbortController.signal,
60791
60921
  reasoning: !options.noReasoning,
60792
60922
  debugMode: options.debug ?? true,
@@ -60958,7 +61088,12 @@ Saving state... done. Session saved to ${filePath}`);
60958
61088
  const newErrorHandling = resolveErrorHandlingForPhase(
60959
61089
  resumeState.workflowPhase,
60960
61090
  options.fallbackModel,
60961
- playbookMilestoneFallbackModels
61091
+ playbookMilestoneFallbackModels,
61092
+ resolveFallbackOnEmptyForPhase(
61093
+ resumeState.workflowPhase,
61094
+ playbookMilestoneFallbackOnEmpty,
61095
+ playbookDefaultFallbackOnEmpty
61096
+ )
60962
61097
  );
60963
61098
  client.agents.update(agentId, {
60964
61099
  config: { errorHandling: newErrorHandling ?? null }
@@ -61468,7 +61603,13 @@ function resolveSandboxWorkflowSelection(message, sandboxProvider, resumeState)
61468
61603
  };
61469
61604
  }
61470
61605
  function applyTaskOptions(cmd) {
61471
- return cmd.argument("<agent>", "Agent ID or name").option("-g, --goal <text>", "Goal message for the agent").option("--max-sessions <n>", "Maximum sessions", "50").option("--max-cost <n>", "Budget in USD").option("--model <modelId>", "Model ID to use (overrides agent config)").option("--name <name>", "Task name (used for state file, defaults to agent name)").option("--session <name>", "Resume a specific session by name").option(
61606
+ return cmd.argument("<agent>", "Agent ID or name").option("-g, --goal <text>", "Goal message for the agent").option("--max-sessions <n>", "Maximum sessions", "50").option("--max-cost <n>", "Budget in USD").option("--model <modelId>", "Model ID to use (overrides agent config)").option(
61607
+ "--max-tokens <n>",
61608
+ "Max output-token budget per session (overrides agent config; playbook milestones can override per phase)"
61609
+ ).option(
61610
+ "--temperature <n>",
61611
+ "Sampling temperature 0-2 per session (overrides agent config; playbook milestones can override per phase)"
61612
+ ).option("--name <name>", "Task name (used for state file, defaults to agent name)").option("--session <name>", "Resume a specific session by name").option(
61472
61613
  "--state-dir <path>",
61473
61614
  "Directory for state files (default: ~/.runtype/projects/<hash>/marathons/)"
61474
61615
  ).option(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runtypelabs/cli",
3
- "version": "2.21.6",
3
+ "version": "2.22.1",
4
4
  "description": "Command-line interface for Runtype AI platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "rosie-skills": "0.8.1",
25
25
  "yaml": "^2.9.0",
26
26
  "@runtypelabs/ink-components": "0.3.2",
27
- "@runtypelabs/sdk": "4.18.0",
27
+ "@runtypelabs/sdk": "4.19.1",
28
28
  "@runtypelabs/terminal-animations": "0.2.1"
29
29
  },
30
30
  "devDependencies": {
@@ -39,7 +39,7 @@
39
39
  "tsx": "^4.7.1",
40
40
  "typescript": "^5.3.3",
41
41
  "vitest": "^4.1.0",
42
- "@runtypelabs/shared": "1.33.0"
42
+ "@runtypelabs/shared": "1.33.2"
43
43
  },
44
44
  "engines": {
45
45
  "node": ">=22.0.0"