@maximoai/maximo-syntax-cli 0.1.34 → 0.1.36

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/cli.mjs +79 -66
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -124000,7 +124000,7 @@ var init_metadata = __esm(() => {
124000
124000
  isMaximoAiAuth: isMaximoAISubscriber(),
124001
124001
  version: "99.0.0",
124002
124002
  versionBase: getVersionBase(),
124003
- buildTime: "2026-08-15T17:26:52.338Z",
124003
+ buildTime: "2026-08-15T17:46:38.288Z",
124004
124004
  deploymentEnvironment: env3.detectDeploymentEnvironment(),
124005
124005
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
124006
124006
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -165977,20 +165977,10 @@ var init_thinking = __esm(() => {
165977
165977
  // src/utils/effort.ts
165978
165978
  function getSupportedEffortLevelsForModel(model) {
165979
165979
  const providerConfig = getCachedMaximoModelEffortConfig(model);
165980
- if (providerConfig) {
165981
- return providerConfig.supportedEfforts.filter(isEffortLevel);
165982
- }
165983
- const m = model.toLowerCase();
165984
- if (m.includes("maximo-atlas-1.2")) {
165985
- return ["low", "medium", "high", "xhigh", "max"];
165986
- }
165987
- if (m.includes("opus-4-6")) {
165988
- return ["low", "medium", "high", "max"];
165989
- }
165990
- if (m.includes("sonnet-4-6")) {
165991
- return ["low", "medium", "high"];
165980
+ if (!providerConfig) {
165981
+ return;
165992
165982
  }
165993
- return;
165983
+ return providerConfig.supportedEfforts;
165994
165984
  }
165995
165985
  function modelSupportsEffort(model) {
165996
165986
  if (isEnvTruthy(process.env.MAXIMO_SYNTAX_ALWAYS_ENABLE_EFFORT)) {
@@ -166010,23 +166000,6 @@ function modelSupportsEffort(model) {
166010
166000
  }
166011
166001
  return getAPIProvider() === "firstParty";
166012
166002
  }
166013
- function modelSupportsMaxEffort(model) {
166014
- const providerLevels = getSupportedEffortLevelsForModel(model);
166015
- if (providerLevels !== undefined) {
166016
- return providerLevels.includes("max");
166017
- }
166018
- const supported3P = get3PModelCapabilityOverride(model, "max_effort");
166019
- if (supported3P !== undefined) {
166020
- return supported3P;
166021
- }
166022
- if (model.toLowerCase().includes("opus-4-6")) {
166023
- return true;
166024
- }
166025
- if (process.env.USER_TYPE === "ant" && resolveAntModel(model)) {
166026
- return true;
166027
- }
166028
- return false;
166029
- }
166030
166003
  function isEffortLevel(value) {
166031
166004
  return EFFORT_LEVELS.includes(value);
166032
166005
  }
@@ -166081,8 +166054,6 @@ function resolveAppliedEffort(model, appStateEffortValue) {
166081
166054
  if (!supportedLevels.includes(resolved)) {
166082
166055
  return getDefaultEffortForModel(model) ?? supportedLevels[supportedLevels.length - 1];
166083
166056
  }
166084
- } else if (resolved === "max" && !modelSupportsMaxEffort(model)) {
166085
- return "high";
166086
166057
  }
166087
166058
  }
166088
166059
  return resolved;
@@ -277246,7 +277217,7 @@ import { access as access3, writeFile as writeFile13 } from "fs/promises";
277246
277217
  import { homedir as homedir22 } from "os";
277247
277218
  import { join as join65 } from "path";
277248
277219
  function getCurrentRealVersion() {
277249
- return "0.1.34";
277220
+ return "0.1.36";
277250
277221
  }
277251
277222
  async function getRolloutConfig() {
277252
277223
  try {
@@ -300915,7 +300886,8 @@ async function* runAgent({
300915
300886
  }
300916
300887
  };
300917
300888
  }
300918
- const effortValue = effort !== undefined ? effort : agentDefinition.effort !== undefined ? agentDefinition.effort : state.effortValue;
300889
+ const requestedEffort = effort !== undefined ? effort : agentDefinition.effort !== undefined ? agentDefinition.effort : state.effortValue;
300890
+ const effortValue = resolveAppliedEffort(resolvedAgentModel, requestedEffort);
300919
300891
  if (toolPermissionContext === state.toolPermissionContext && effortValue === state.effortValue) {
300920
300892
  return state;
300921
300893
  }
@@ -301179,6 +301151,7 @@ var init_runAgent = __esm(() => {
301179
301151
  init_hooks5();
301180
301152
  init_messages3();
301181
301153
  init_agent();
301154
+ init_effort();
301182
301155
  init_sessionStorage();
301183
301156
  init_pluginOnlyPolicy();
301184
301157
  init_perfettoTracing();
@@ -354432,26 +354405,32 @@ function normalizeAgentToolInput(value) {
354432
354405
  return out;
354433
354406
  }
354434
354407
  function listSubagentModelSlugs() {
354435
- const slugs = new Set(["inherit"]);
354408
+ return listSubagentDelegationCatalog().map((entry) => entry.slug);
354409
+ }
354410
+ function listSubagentDelegationCatalog() {
354411
+ const entries = [
354412
+ { slug: "inherit", efforts: [] }
354413
+ ];
354414
+ const seen = new Set(["inherit"]);
354415
+ const add = (slug) => {
354416
+ const trimmed = slug.trim();
354417
+ if (!trimmed || seen.has(trimmed))
354418
+ return;
354419
+ seen.add(trimmed);
354420
+ const config2 = getCachedMaximoModelEffortConfig(trimmed);
354421
+ entries.push({
354422
+ slug: trimmed,
354423
+ efforts: config2?.supportedEfforts ? [...config2.supportedEfforts] : [],
354424
+ ...config2?.defaultEffort ? { defaultEffort: config2.defaultEffort } : {}
354425
+ });
354426
+ };
354436
354427
  try {
354437
354428
  for (const option of getModelOptions()) {
354438
- if (typeof option.value === "string" && option.value.trim()) {
354439
- slugs.add(option.value.trim());
354440
- }
354429
+ if (typeof option.value === "string")
354430
+ add(option.value);
354441
354431
  }
354442
354432
  } catch {}
354443
- for (const alias of ["sonnet", "opus", "haiku"]) {
354444
- slugs.add(alias);
354445
- }
354446
- return [...slugs];
354447
- }
354448
- function listSubagentEffortLevels(model) {
354449
- if (model) {
354450
- const supported = getSupportedEffortLevelsForModel(model);
354451
- if (supported?.length)
354452
- return [...supported];
354453
- }
354454
- return [...EFFORT_LEVELS];
354433
+ return entries;
354455
354434
  }
354456
354435
  function formatSubagentModelList(slugs) {
354457
354436
  if (slugs.length === 0)
@@ -354460,8 +354439,32 @@ function formatSubagentModelList(slugs) {
354460
354439
  const extra = slugs.length - shown.length;
354461
354440
  return extra > 0 ? `${shown.join(", ")}, and ${extra} more` : shown.join(", ");
354462
354441
  }
354442
+ function formatSubagentDelegationCatalog(entries, limit = 40) {
354443
+ const models = entries.filter((entry) => entry.slug !== "inherit");
354444
+ if (models.length === 0) {
354445
+ return "The live provider catalog is not loaded yet. Omit `model` and `effort` to inherit the parent conversation, or pass a known slug from this session.";
354446
+ }
354447
+ const shown = entries.slice(0, limit);
354448
+ const extra = entries.length - shown.length;
354449
+ const lines = shown.map((entry) => {
354450
+ if (entry.slug === "inherit") {
354451
+ return "- inherit — use the parent conversation model and effort";
354452
+ }
354453
+ if (entry.efforts.length === 0) {
354454
+ return `- ${entry.slug} — omit effort (no advertised effort levels)`;
354455
+ }
354456
+ const defaultSuffix = entry.defaultEffort ? ` (default ${entry.defaultEffort})` : "";
354457
+ return `- ${entry.slug} — efforts: ${entry.efforts.join(", ")}${defaultSuffix}`;
354458
+ });
354459
+ if (extra > 0) {
354460
+ lines.push(`- …and ${extra} more slugs from the same provider catalog`);
354461
+ }
354462
+ return lines.join(`
354463
+ `);
354464
+ }
354463
354465
  var SENTINEL_STRINGS, SHARED_ISOLATION_STRINGS, WORKTREE_ISOLATION_STRINGS;
354464
354466
  var init_agentToolParams = __esm(() => {
354467
+ init_maximoModels();
354465
354468
  init_effort();
354466
354469
  init_agent();
354467
354470
  init_modelOptions();
@@ -355697,8 +355700,11 @@ Forks are cheap because they share your prompt cache. Don't set \`model\` on a f
355697
355700
 
355698
355701
  **Writing a fork prompt.** Since the fork inherits your context, the prompt is a *directive* — what to do, not what the situation is. Be specific about scope: what's in, what's out, what another agent is handling. Don't re-explain background.
355699
355702
  ` : "";
355703
+ try {
355704
+ await getModelOptionsAsync();
355705
+ } catch {}
355700
355706
  const availableModels = formatSubagentModelList(listSubagentModelSlugs());
355701
- const availableEfforts = listSubagentEffortLevels().join(", ");
355707
+ const catalogText = formatSubagentDelegationCatalog(listSubagentDelegationCatalog());
355702
355708
  const requiredCallShapeSection = `
355703
355709
 
355704
355710
  ## Required call shape
@@ -355711,11 +355717,17 @@ A call that omits \`description\` or \`prompt\` is rejected. Do not start the su
355711
355717
 
355712
355718
  Optional but supported on every spawn:
355713
355719
  - \`subagent_type\`: one of the types listed above. If omitted, ${forkEnabled ? "a fork of yourself is created" : "the general-purpose agent is used"}.
355714
- - \`model\`: any available model slug, a family alias (\`sonnet\`, \`opus\`, \`haiku\`), or \`inherit\`. Omit to inherit the parent model. Available models right now: ${availableModels}.
355715
- - \`effort\`: any effort the chosen model supports (${availableEfforts}, plus display aliases like Extra High). Omit to inherit the parent effort.
355720
+ - \`model\`: an exact slug from the live catalog below, a family alias (\`sonnet\`, \`opus\`, \`haiku\`), or \`inherit\`. Do not invent slugs. Omit to inherit the parent model. Compact list: ${availableModels}.
355721
+ - \`effort\`: a level listed for that model in the catalog below. Omit to inherit the parent effort. Never pass an effort the chosen model does not list.
355716
355722
  - \`isolation\`: \`"none"\` (default, shared workspace) or \`"worktree"\` (isolated git worktree). Never pass any other value. \`"none"\` is valid and means "do not isolate".
355717
355723
  - \`run_in_background\`: \`true\` to return immediately and get a completion notification later.
355718
355724
 
355725
+ ## Live model and effort catalog
355726
+
355727
+ This is the same provider catalog the CLI uses for \`/model\` and \`/effort\`. Use these exact \`model\` slugs and only the efforts listed on that row:
355728
+
355729
+ ${catalogText}
355730
+
355719
355731
  Example of a correct call:
355720
355732
 
355721
355733
  ${AGENT_TOOL_NAME}({
@@ -355835,7 +355847,7 @@ ${agentListSection}
355835
355847
 
355836
355848
  ${forkEnabled ? `When using the ${AGENT_TOOL_NAME} tool, specify a subagent_type to use a specialized agent, or omit it to fork yourself — a fork inherits your full conversation context.` : `When using the ${AGENT_TOOL_NAME} tool, specify a subagent_type parameter to select which agent type to use. If omitted, the general-purpose agent is used.`}
355837
355849
 
355838
- Always pass both \`description\` (3-5 word title) and \`prompt\` (full task). You may set \`model\` to any available model slug and \`effort\` to any effort that model supports; omit them to inherit the parent. \`isolation\` accepts only \`"none"\` (default, shared workspace) or \`"worktree"\`.`;
355850
+ Always pass both \`description\` (3-5 word title) and \`prompt\` (full task). You may set \`model\` to a slug from the live catalog and \`effort\` to a level listed for that model; omit them to inherit the parent. \`isolation\` accepts only \`"none"\` (default, shared workspace) or \`"worktree"\`.`;
355839
355851
  if (isCoordinator) {
355840
355852
  return shared2;
355841
355853
  }
@@ -355864,7 +355876,7 @@ Usage notes:
355864
355876
  - Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.)${forkEnabled ? "" : ", since it is not aware of the user's intent"}
355865
355877
  - If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first. Use your judgement.
355866
355878
  - If the user specifies that they want you to run agents "in parallel", you MUST send a single message with multiple ${AGENT_TOOL_NAME} tool use content blocks. For example, if you need to launch both a build-validator agent and a test-runner agent in parallel, send a single message with both tool calls.
355867
- - You can optionally set \`model\` to any available model slug listed above (or \`inherit\`) and \`effort\` to any effort that model supports. Omit both to inherit the parent conversation's model and effort.
355879
+ - You can optionally set \`model\` to a slug from the live catalog (or \`inherit\`) and \`effort\` to a level listed for that model. Omit both to inherit the parent conversation's model and effort.
355868
355880
  - You can optionally set \`isolation: "none"\` (default, shared workspace) or \`isolation: "worktree"\` to run the agent in a temporary git worktree, giving it an isolated copy of the repository. The worktree is automatically cleaned up if the agent makes no changes; if changes are made, the worktree path and branch are returned in the result. Do not pass any isolation value other than \`"none"\` or \`"worktree"\`.${process.env.USER_TYPE === "ant" ? `
355869
355881
  - You can set \`isolation: "remote"\` to run the agent in a remote CCR environment. This is always a background task; you'll be notified when it completes. Use for long-running tasks that need a fresh sandbox.` : ""}${isInProcessTeammate() ? `
355870
355882
  - The run_in_background, name, team_name, and mode parameters are not available in this context. Only synchronous subagents are supported.` : isTeammate() ? `
@@ -355877,6 +355889,7 @@ var init_prompt20 = __esm(() => {
355877
355889
  init_auth2();
355878
355890
  init_embeddedTools();
355879
355891
  init_envUtils();
355892
+ init_modelOptions();
355880
355893
  init_teammate();
355881
355894
  init_teammateContext();
355882
355895
  init_prompt2();
@@ -355954,8 +355967,8 @@ var init_AgentTool = __esm(() => {
355954
355967
  description: exports_external.string().describe("A short (3-5 word) title for the task. Required. Shown in the UI as the subagent name."),
355955
355968
  prompt: exports_external.string().describe("The full task for the agent to perform. Required. The subagent starts with zero conversation context, so include everything it needs."),
355956
355969
  subagent_type: exports_external.string().optional().describe("The type of specialized agent to use for this task. Built-in types include general-purpose, Explore, and Plan when enabled. If omitted, the general-purpose agent is used (or a fork, when forking is enabled)."),
355957
- model: exports_external.string().optional().describe(`Optional model slug for this subagent. Pass any available model id from the current provider catalog, a family alias (sonnet, opus, haiku), or "inherit". If omitted, uses the agent definition's model or inherits the parent. Only set this when you intend a different model than the parent.`),
355958
- effort: exports_external.string().optional().describe("Optional reasoning effort for this subagent. Pass any effort the chosen model supports (minimal, low, medium, high, xhigh, max, ultra — plus Extra High / extra_high aliases). If omitted, inherits the parent effort or the agent definition's effort."),
355970
+ model: exports_external.string().optional().describe(`Optional model slug for this subagent. Pass an exact slug from the live catalog in this tool's description, a family alias (sonnet, opus, haiku), or "inherit". If omitted, uses the agent definition's model or inherits the parent. Do not invent slugs.`),
355971
+ effort: exports_external.string().optional().describe("Optional reasoning effort for this subagent. Pass a level from the chosen model's row in this tool's live catalog. If omitted, inherits the parent effort or the agent definition's effort. Do not invent effort names."),
355959
355972
  run_in_background: exports_external.boolean().optional().describe("Set to true to run this agent in the background. You will be notified when it completes.")
355960
355973
  }));
355961
355974
  fullInputSchema2 = lazySchema(() => {
@@ -366705,7 +366718,7 @@ function getAnthropicEnvMetadata() {
366705
366718
  function getBuildAgeMinutes() {
366706
366719
  if (false)
366707
366720
  ;
366708
- const buildTime = new Date("2026-08-15T17:26:52.338Z").getTime();
366721
+ const buildTime = new Date("2026-08-15T17:46:38.288Z").getTime();
366709
366722
  if (isNaN(buildTime))
366710
366723
  return;
366711
366724
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -432783,7 +432796,7 @@ function getRecentActivitySync() {
432783
432796
  return cachedActivity;
432784
432797
  }
432785
432798
  function getLogoDisplayData() {
432786
- const version2 = process.env.DEMO_VERSION ?? "0.1.34" ?? "99.0.0";
432799
+ const version2 = process.env.DEMO_VERSION ?? "0.1.36" ?? "99.0.0";
432787
432800
  const serverUrl = getDirectConnectServerUrl();
432788
432801
  const displayPath = process.env.DEMO_VERSION ? "/code/maximo" : getDisplayPath(getCwd());
432789
432802
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -462248,7 +462261,7 @@ var init_bridge_kick = __esm(() => {
462248
462261
  var call57 = async () => {
462249
462262
  return {
462250
462263
  type: "text",
462251
- value: `${"99.0.0"} (built ${"2026-08-15T17:26:52.338Z"})`
462264
+ value: `${"99.0.0"} (built ${"2026-08-15T17:46:38.288Z"})`
462252
462265
  };
462253
462266
  }, version2, version_default;
462254
462267
  var init_version = __esm(() => {
@@ -482131,7 +482144,7 @@ function getUsingYourToolsSection(enabledTools) {
482131
482144
  `);
482132
482145
  }
482133
482146
  function getAgentToolSection() {
482134
- return isForkSubagentEnabled() ? `Calling ${AGENT_TOOL_NAME} without a subagent_type creates a fork, which runs in the background and keeps its tool output out of your context — so you can keep chatting with the user while it works. Reach for it when research or multi-step implementation work would otherwise fill your context with raw output you won't need again. **If you ARE the fork** — execute directly; do not re-delegate.` : `Use the ${AGENT_TOOL_NAME} tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself. Every ${AGENT_TOOL_NAME} call must include \`description\` (3-5 word title) and \`prompt\` (full task). You may set \`model\` to any available model slug and \`effort\` to any effort that model supports; omit them to inherit the parent. \`isolation\` is \`"none"\` (default) or \`"worktree"\` — never any other value.`;
482147
+ return isForkSubagentEnabled() ? `Calling ${AGENT_TOOL_NAME} without a subagent_type creates a fork, which runs in the background and keeps its tool output out of your context — so you can keep chatting with the user while it works. Reach for it when research or multi-step implementation work would otherwise fill your context with raw output you won't need again. **If you ARE the fork** — execute directly; do not re-delegate.` : `Use the ${AGENT_TOOL_NAME} tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself. Every ${AGENT_TOOL_NAME} call must include \`description\` (3-5 word title) and \`prompt\` (full task). You may set \`model\` to a slug from the live provider catalog and \`effort\` to a level that catalog lists for that model; omit them to inherit the parent. \`isolation\` is \`"none"\` (default) or \`"worktree"\` — never any other value.`;
482135
482148
  }
482136
482149
  function getDiscoverSkillsGuidance() {
482137
482150
  if (false) {}
@@ -536780,7 +536793,7 @@ function SetupRow({ children }) {
536780
536793
  }
536781
536794
  function WelcomeV2() {
536782
536795
  const { columns } = useTerminalSize();
536783
- const version3 = "0.1.34";
536796
+ const version3 = "0.1.36";
536784
536797
  const width = Math.max(48, Math.min(columns || 92, 92));
536785
536798
  const stacked = width < OCTOPUS_COMPACT_WIDTH + 42;
536786
536799
  return /* @__PURE__ */ jsx_runtime479.jsx(ThemedBox_default, {
@@ -556716,7 +556729,7 @@ Usage: maximo --remote "your task description"`, () => gracefulShutdown(1));
556716
556729
  pendingHookMessages
556717
556730
  }, renderAndRun);
556718
556731
  }
556719
- }).version("0.1.34 (Maximo Syntax)", "-v, --version", "Output the version number");
556732
+ }).version("0.1.36 (Maximo Syntax)", "-v, --version", "Output the version number");
556720
556733
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
556721
556734
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
556722
556735
  if (canUserConfigureAdvisor()) {
@@ -557255,7 +557268,7 @@ function validateProviderEnvOrExit() {
557255
557268
  async function main2() {
557256
557269
  const args = process.argv.slice(2);
557257
557270
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
557258
- console.log(`${"0.1.34"} (Maximo Syntax)`);
557271
+ console.log(`${"0.1.36"} (Maximo Syntax)`);
557259
557272
  return;
557260
557273
  }
557261
557274
  validateProviderEnvOrExit();
@@ -557332,4 +557345,4 @@ async function main2() {
557332
557345
  }
557333
557346
  main2();
557334
557347
 
557335
- //# debugId=48AE7DC8230AA9A764756E2164756E21
557348
+ //# debugId=137C1FE392A2B04A64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maximoai/maximo-syntax-cli",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "description": "Maximo Syntax CLI - A powerful AI-powered command-line interface for code development with any LLM",
5
5
  "type": "module",
6
6
  "bin": {