@jieee/coder 1.0.0 → 1.0.2

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.js +426 -292
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -32730,6 +32730,7 @@ var init_exports = __esm(() => {
32730
32730
  init_array();
32731
32731
  init_array_buffer();
32732
32732
  init_string();
32733
+ init_contents();
32733
32734
  });
32734
32735
 
32735
32736
  // node_modules/get-stream/source/index.js
@@ -32743,7 +32744,7 @@ var init_source2 = __esm(() => {
32743
32744
 
32744
32745
  // node_modules/execa/lib/io/max-buffer.js
32745
32746
  var handleMaxBuffer = ({ error: error2, stream: stream4, readableObjectMode, lines, encoding, fdNumber }) => {
32746
- if (!(error2 instanceof MaxBufferError2)) {
32747
+ if (!(error2 instanceof MaxBufferError)) {
32747
32748
  throw error2;
32748
32749
  }
32749
32750
  if (fdNumber === "all") {
@@ -32768,7 +32769,7 @@ var handleMaxBuffer = ({ error: error2, stream: stream4, readableObjectMode, lin
32768
32769
  if (ipcOutput.length !== maxBuffer) {
32769
32770
  return;
32770
32771
  }
32771
- const error2 = new MaxBufferError2;
32772
+ const error2 = new MaxBufferError;
32772
32773
  error2.maxBufferInfo = { fdNumber: "ipc" };
32773
32774
  throw error2;
32774
32775
  }, getMaxBufferMessage = (error2, maxBuffer) => {
@@ -36643,7 +36644,7 @@ var execaCoreAsync = (rawFile, rawArguments, rawOptions, createNested) => {
36643
36644
  timedOut: context.terminationReason === "timeout",
36644
36645
  isCanceled: context.terminationReason === "cancel" || context.terminationReason === "gracefulCancel",
36645
36646
  isGracefullyCanceled: context.terminationReason === "gracefulCancel",
36646
- isMaxBuffer: errorInfo.error instanceof MaxBufferError2,
36647
+ isMaxBuffer: errorInfo.error instanceof MaxBufferError,
36647
36648
  isForcefullyTerminated: context.isForcefullyTerminated,
36648
36649
  exitCode,
36649
36650
  signal,
@@ -115220,13 +115221,13 @@ async function fetchGitHubCopilotModels(token) {
115220
115221
  if (!id || item.model_picker_enabled === false) {
115221
115222
  continue;
115222
115223
  }
115223
- modelProtocols[id] = isCopilotResponsesModel(id) ? "openai-responses" : "openai-chat-completions";
115224
+ modelProtocols[id] = isCopilotResponsesModel(id) ? "responses" : "chat";
115224
115225
  }
115225
115226
  const models = Object.keys(modelProtocols).sort();
115226
115227
  if (models.length === 0) {
115227
115228
  logForDebugging("[Copilot models] /models returned no selectable entries; using static fallback list");
115228
115229
  for (const id of FALLBACK_COPILOT_MODELS) {
115229
- modelProtocols[id] = isCopilotResponsesModel(id) ? "openai-responses" : "openai-chat-completions";
115230
+ modelProtocols[id] = isCopilotResponsesModel(id) ? "responses" : "chat";
115230
115231
  }
115231
115232
  }
115232
115233
  return {
@@ -115306,7 +115307,7 @@ var init_codingPlanProviders = __esm(() => {
115306
115307
  displayName: "Alibaba Coding Plan",
115307
115308
  envKey: "ALIBABA_CODING_PLAN_API_KEY",
115308
115309
  baseUrl: "https://coding.dashscope.aliyuncs.com/apps/anthropic",
115309
- protocol: "anthropic-messages",
115310
+ protocol: "anthropic",
115310
115311
  models: [
115311
115312
  "qwen3.5-plus",
115312
115313
  "qwen3-coder-next",
@@ -115323,7 +115324,7 @@ var init_codingPlanProviders = __esm(() => {
115323
115324
  displayName: "Zhipu AI Coding Plan",
115324
115325
  envKey: "ZHIPU_API_KEY",
115325
115326
  baseUrl: "https://open.bigmodel.cn/api/anthropic",
115326
- protocol: "anthropic-messages",
115327
+ protocol: "anthropic",
115327
115328
  models: [
115328
115329
  "glm-5.1",
115329
115330
  "glm-4.6v-flash",
@@ -115345,7 +115346,7 @@ var init_codingPlanProviders = __esm(() => {
115345
115346
  displayName: "MiniMax Coding Plan",
115346
115347
  envKey: "MINIMAX_API_KEY",
115347
115348
  baseUrl: "https://api.minimaxi.com/anthropic/v1",
115348
- protocol: "anthropic-messages",
115349
+ protocol: "anthropic",
115349
115350
  models: [
115350
115351
  "MiniMax-M2.7",
115351
115352
  "MiniMax-M2.1",
@@ -115360,7 +115361,7 @@ var init_codingPlanProviders = __esm(() => {
115360
115361
  displayName: "Tencent Coding Plan",
115361
115362
  envKey: "TENCENT_CODING_PLAN_API_KEY",
115362
115363
  baseUrl: "https://api.lkeap.cloud.tencent.com/coding/anthropic",
115363
- protocol: "anthropic-messages",
115364
+ protocol: "anthropic",
115364
115365
  models: [
115365
115366
  "hunyuan-2.0-instruct",
115366
115367
  "kimi-k2.5",
@@ -115377,7 +115378,7 @@ var init_codingPlanProviders = __esm(() => {
115377
115378
  displayName: "Xiaomi Coding Plan",
115378
115379
  envKey: "XIAOMI_CODING_PLAN_API_KEY",
115379
115380
  baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic",
115380
- protocol: "anthropic-messages",
115381
+ protocol: "anthropic",
115381
115382
  models: ["mimo-v2-pro", "mimo-v2-omni"]
115382
115383
  }
115383
115384
  ];
@@ -115394,12 +115395,20 @@ import { mkdirSync as mkdirSync3 } from "fs";
115394
115395
  function getProvidersConfigPath() {
115395
115396
  return join20(getClaudeConfigHomeDir(), "providers.json");
115396
115397
  }
115398
+ function createEmptyModelConfig() {
115399
+ return {
115400
+ current: null,
115401
+ opus: null,
115402
+ sonnet: null,
115403
+ haiku: null,
115404
+ subagent: null
115405
+ };
115406
+ }
115397
115407
  function createEmptyConfig(error2) {
115398
115408
  return {
115399
115409
  opencodeZenApiKey: null,
115400
115410
  githubCopilotToken: null,
115401
- currentProvider: null,
115402
- currentModel: null,
115411
+ model: createEmptyModelConfig(),
115403
115412
  providers: [],
115404
115413
  ...error2 ? { error: error2 } : {}
115405
115414
  };
@@ -115408,14 +115417,28 @@ function createInitialProvidersConfig() {
115408
115417
  return {
115409
115418
  opencodeZenApiKey: null,
115410
115419
  githubCopilotToken: null,
115411
- currentProvider: null,
115412
- currentModel: null,
115420
+ model: createEmptyModelConfig(),
115413
115421
  providers: []
115414
115422
  };
115415
115423
  }
115416
115424
  function isBuiltinProvider(name) {
115417
115425
  return name === ZEN_PROVIDER_NAME || name === COPILOT_PROVIDER_NAME;
115418
115426
  }
115427
+ function normalizeProviderProtocol(protocol) {
115428
+ switch (protocol) {
115429
+ case "anthropic":
115430
+ case "anthropic-messages":
115431
+ return "anthropic";
115432
+ case "chat":
115433
+ case "openai-chat-completions":
115434
+ return "chat";
115435
+ case "responses":
115436
+ case "openai-responses":
115437
+ return "responses";
115438
+ default:
115439
+ return "anthropic";
115440
+ }
115441
+ }
115419
115442
  function stripBuiltinProviders(providers) {
115420
115443
  return providers.filter((provider) => !isBuiltinProvider(provider.name));
115421
115444
  }
@@ -115423,7 +115446,8 @@ function getZenProvider(cfg) {
115423
115446
  if (!cfg.opencodeZenApiKey) {
115424
115447
  return null;
115425
115448
  }
115426
- const models = zenState.models.length > 0 ? zenState.models : cfg.currentProvider === ZEN_PROVIDER_NAME && cfg.currentModel ? [cfg.currentModel] : [];
115449
+ const currentSlot = cfg.model.current;
115450
+ const models = zenState.models.length > 0 ? zenState.models : currentSlot?.provider === ZEN_PROVIDER_NAME && currentSlot.model ? [currentSlot.model] : [];
115427
115451
  if (models.length === 0) {
115428
115452
  return null;
115429
115453
  }
@@ -115432,7 +115456,7 @@ function getZenProvider(cfg) {
115432
115456
  url: ZEN_PROVIDER_URL,
115433
115457
  apiKey: cfg.opencodeZenApiKey,
115434
115458
  models,
115435
- protocol: resolveZenProtocolForModel(cfg.currentModel) ?? "anthropic-messages"
115459
+ protocol: resolveZenProtocolForModel(currentSlot?.model) ?? "anthropic"
115436
115460
  };
115437
115461
  }
115438
115462
  function resolveZenProtocolForModel(model) {
@@ -115445,7 +115469,8 @@ function getCopilotProvider(cfg) {
115445
115469
  if (!cfg.githubCopilotToken) {
115446
115470
  return null;
115447
115471
  }
115448
- const models = copilotState.models.length > 0 ? copilotState.models : cfg.currentProvider === COPILOT_PROVIDER_NAME && cfg.currentModel ? [cfg.currentModel] : [];
115472
+ const currentSlot = cfg.model.current;
115473
+ const models = copilotState.models.length > 0 ? copilotState.models : currentSlot?.provider === COPILOT_PROVIDER_NAME && currentSlot.model ? [currentSlot.model] : [];
115449
115474
  if (models.length === 0) {
115450
115475
  return null;
115451
115476
  }
@@ -115454,7 +115479,7 @@ function getCopilotProvider(cfg) {
115454
115479
  url: getCopilotBaseUrl(),
115455
115480
  apiKey: cfg.githubCopilotToken,
115456
115481
  models,
115457
- protocol: resolveCopilotProtocolForModel(cfg.currentModel) ?? "openai-chat-completions"
115482
+ protocol: resolveCopilotProtocolForModel(currentSlot?.model) ?? "chat"
115458
115483
  };
115459
115484
  }
115460
115485
  function resolveCopilotProtocolForModel(model) {
@@ -115469,6 +115494,31 @@ function getBuiltinErrors(raw) {
115469
115494
  raw.githubCopilotToken && copilotState.error ? copilotState.error : null
115470
115495
  ].filter((value) => !!value);
115471
115496
  }
115497
+ function resolveModelSlotSelection(providers, slot) {
115498
+ if (!slot) {
115499
+ return null;
115500
+ }
115501
+ const provider = providers.find((entry) => entry.name === slot.provider.trim());
115502
+ if (!provider) {
115503
+ return null;
115504
+ }
115505
+ const model = slot.model.trim();
115506
+ if (!model || !provider.models.includes(model)) {
115507
+ return null;
115508
+ }
115509
+ return {
115510
+ provider: provider.name,
115511
+ model
115512
+ };
115513
+ }
115514
+ function getLegacyCurrentSlot(raw) {
115515
+ const provider = raw.currentProvider?.trim();
115516
+ const model = raw.currentModel?.trim();
115517
+ if (!provider || !model) {
115518
+ return null;
115519
+ }
115520
+ return { provider, model };
115521
+ }
115472
115522
  function normalizeProvidersConfig(raw) {
115473
115523
  const seen = new Set;
115474
115524
  const providers = [];
@@ -115477,7 +115527,7 @@ function normalizeProvidersConfig(raw) {
115477
115527
  const url2 = provider.url.trim();
115478
115528
  const apiKey = provider.apiKey.trim();
115479
115529
  const models = Array.from(new Set(provider.models.map((model) => model.trim()).filter(Boolean)));
115480
- const protocol = provider.protocol ?? "anthropic-messages";
115530
+ const protocol = normalizeProviderProtocol(provider.protocol);
115481
115531
  if (!name) {
115482
115532
  return createEmptyConfig("Provider name cannot be empty");
115483
115533
  }
@@ -115507,14 +115557,20 @@ function normalizeProvidersConfig(raw) {
115507
115557
  if (providers.length === 0) {
115508
115558
  return createEmptyConfig([`No providers configured in ${getProvidersConfigPath()}.`, ...getBuiltinErrors(raw)].join(" ").trim());
115509
115559
  }
115510
- const selectedProvider = providers.find((provider) => provider.name === raw.currentProvider) ?? providers[0];
115511
- const selectedModel = raw.currentModel && selectedProvider.models.includes(raw.currentModel.trim()) && raw.currentModel.trim() || selectedProvider.models[0];
115512
115560
  const errors = getBuiltinErrors(raw);
115561
+ const normalizedModel = createEmptyModelConfig();
115562
+ const rawCurrentSlot = raw.model.current ?? getLegacyCurrentSlot(raw);
115563
+ normalizedModel.current = resolveModelSlotSelection(providers, rawCurrentSlot);
115564
+ for (const slot of MODEL_SLOT_KEYS) {
115565
+ if (slot === "current") {
115566
+ continue;
115567
+ }
115568
+ normalizedModel[slot] = resolveModelSlotSelection(providers, raw.model[slot]);
115569
+ }
115513
115570
  return {
115514
115571
  opencodeZenApiKey: raw.opencodeZenApiKey ?? null,
115515
115572
  githubCopilotToken: raw.githubCopilotToken ?? null,
115516
- currentProvider: selectedProvider.name,
115517
- currentModel: selectedModel,
115573
+ model: normalizedModel,
115518
115574
  providers,
115519
115575
  ...errors.length > 0 ? { error: errors.join(" ") } : {}
115520
115576
  };
@@ -115534,9 +115590,13 @@ function readProvidersConfigUncached() {
115534
115590
  return normalizeProvidersConfig({
115535
115591
  opencodeZenApiKey: parsed.data.opencodeZenApiKey ?? null,
115536
115592
  githubCopilotToken: parsed.data.githubCopilotToken ?? null,
115537
- currentProvider: parsed.data.currentProvider,
115538
- currentModel: parsed.data.currentModel,
115539
- providers: parsed.data.providers
115593
+ model: {
115594
+ ...createEmptyModelConfig(),
115595
+ ...parsed.data.model
115596
+ },
115597
+ providers: parsed.data.providers,
115598
+ currentProvider: parsed.data.currentProvider ?? null,
115599
+ currentModel: parsed.data.currentModel ?? null
115540
115600
  });
115541
115601
  } catch (error2) {
115542
115602
  logError2(error2);
@@ -115582,11 +115642,11 @@ async function fetchZenModelProtocols(key) {
115582
115642
  const providerNpm = info.provider?.npm ?? "@ai-sdk/openai-compatible";
115583
115643
  const interleavedField = typeof info.interleaved === "object" ? info.interleaved?.field : undefined;
115584
115644
  if (providerNpm === "@ai-sdk/anthropic") {
115585
- modelProtocols[id] = "anthropic-messages";
115645
+ modelProtocols[id] = "anthropic";
115586
115646
  } else if (shouldUseZenResponsesProtocol({ id, providerNpm })) {
115587
- modelProtocols[id] = "openai-responses";
115647
+ modelProtocols[id] = "responses";
115588
115648
  } else {
115589
- modelProtocols[id] = "openai-chat-completions";
115649
+ modelProtocols[id] = "chat";
115590
115650
  }
115591
115651
  modelMetadata[id] = {
115592
115652
  providerNpm,
@@ -115726,8 +115786,7 @@ async function validateAndStoreZenApiKey(apiKey) {
115726
115786
  writeProvidersConfig({
115727
115787
  opencodeZenApiKey: key,
115728
115788
  githubCopilotToken: current.githubCopilotToken,
115729
- currentProvider: current.currentProvider,
115730
- currentModel: current.currentModel,
115789
+ model: current.model,
115731
115790
  providers: stripBuiltinProviders(current.providers)
115732
115791
  });
115733
115792
  return { ok: true, models };
@@ -115760,8 +115819,7 @@ async function validateAndStoreGitHubCopilotToken(token) {
115760
115819
  writeProvidersConfig({
115761
115820
  opencodeZenApiKey: current.opencodeZenApiKey,
115762
115821
  githubCopilotToken: key,
115763
- currentProvider: current.currentProvider,
115764
- currentModel: current.currentModel,
115822
+ model: current.model,
115765
115823
  providers: stripBuiltinProviders(current.providers)
115766
115824
  });
115767
115825
  return { ok: true, models };
@@ -115800,34 +115858,56 @@ function getProvidersConfig() {
115800
115858
  return cachedConfig;
115801
115859
  }
115802
115860
  }
115803
- function getCurrentProviderSelection() {
115861
+ function getProtocolForSelection(provider, model) {
115862
+ if (provider.name === ZEN_PROVIDER_NAME) {
115863
+ return resolveZenProtocolForModel(model) ?? provider.protocol;
115864
+ }
115865
+ if (provider.name === COPILOT_PROVIDER_NAME) {
115866
+ return resolveCopilotProtocolForModel(model) ?? provider.protocol;
115867
+ }
115868
+ return provider.protocol;
115869
+ }
115870
+ function getConfiguredModelSelection(slot) {
115804
115871
  const config = getProvidersConfig();
115805
- if (config.providers.length === 0 || !config.currentProvider || !config.currentModel) {
115872
+ const configuredSlot = config.model[slot] ?? config.model.current;
115873
+ if (!configuredSlot) {
115806
115874
  return {
115807
115875
  provider: null,
115808
115876
  model: null,
115809
- ...config.error ? { error: config.error } : {}
115877
+ error: config.error ?? `No model configured in ${getProvidersConfigPath()}`
115810
115878
  };
115811
115879
  }
115812
- const provider = config.providers.find((entry) => entry.name === config.currentProvider) ?? null;
115880
+ const provider = config.providers.find((entry) => entry.name === configuredSlot.provider) ?? null;
115813
115881
  if (!provider) {
115814
115882
  return {
115815
115883
  provider: null,
115816
115884
  model: null,
115817
- error: config.error ?? `Current provider "${config.currentProvider}" is not defined in ${getProvidersConfigPath()}`
115885
+ error: config.error ?? `Configured provider "${configuredSlot.provider}" is not defined in ${getProvidersConfigPath()}`
115886
+ };
115887
+ }
115888
+ if (!provider.models.includes(configuredSlot.model)) {
115889
+ return {
115890
+ provider: null,
115891
+ model: null,
115892
+ error: config.error ?? `Configured model "${configuredSlot.model}" is not available for provider "${provider.name}"`
115818
115893
  };
115819
115894
  }
115820
- const protocol = provider.name === ZEN_PROVIDER_NAME ? resolveZenProtocolForModel(config.currentModel) ?? provider.protocol : provider.name === COPILOT_PROVIDER_NAME ? resolveCopilotProtocolForModel(config.currentModel) ?? provider.protocol : provider.protocol;
115821
115895
  return {
115822
115896
  provider,
115823
- model: config.currentModel,
115824
- protocol,
115897
+ model: configuredSlot.model,
115898
+ protocol: getProtocolForSelection(provider, configuredSlot.model),
115825
115899
  ...config.error ? { error: config.error } : {}
115826
115900
  };
115827
115901
  }
115902
+ function getCurrentProviderSelection() {
115903
+ return getConfiguredModelSelection("current");
115904
+ }
115828
115905
  function getCurrentConfiguredModel() {
115829
115906
  return getCurrentProviderSelection().model;
115830
115907
  }
115908
+ function getStoredModelSlot(slot) {
115909
+ return getProvidersConfig().model[slot];
115910
+ }
115831
115911
  function getProviderForModel(model, preferredProviderName) {
115832
115912
  const config = getProvidersConfig();
115833
115913
  if (!model)
@@ -115845,6 +115925,9 @@ function getProviderForModel(model, preferredProviderName) {
115845
115925
  return null;
115846
115926
  }
115847
115927
  function setCurrentProviderModel(providerName, model) {
115928
+ return setProviderModelForSlot("current", providerName, model);
115929
+ }
115930
+ function setProviderModelForSlot(slot, providerName, model) {
115848
115931
  const config = getProvidersConfig();
115849
115932
  const provider = config.providers.find((entry) => entry.name === providerName);
115850
115933
  if (!provider) {
@@ -115856,8 +115939,13 @@ function setCurrentProviderModel(providerName, model) {
115856
115939
  writeProvidersConfig({
115857
115940
  opencodeZenApiKey: config.opencodeZenApiKey,
115858
115941
  githubCopilotToken: config.githubCopilotToken,
115859
- currentProvider: provider.name,
115860
- currentModel: model,
115942
+ model: {
115943
+ ...config.model,
115944
+ [slot]: {
115945
+ provider: provider.name,
115946
+ model
115947
+ }
115948
+ },
115861
115949
  providers: stripBuiltinProviders(config.providers)
115862
115950
  });
115863
115951
  return {};
@@ -115876,8 +115964,13 @@ function tryPersistCurrentModelSelection(model) {
115876
115964
  writeProvidersConfig({
115877
115965
  opencodeZenApiKey: config.opencodeZenApiKey,
115878
115966
  githubCopilotToken: config.githubCopilotToken,
115879
- currentProvider: provider.name,
115880
- currentModel: model,
115967
+ model: {
115968
+ ...config.model,
115969
+ current: {
115970
+ provider: provider.name,
115971
+ model
115972
+ }
115973
+ },
115881
115974
  providers: stripBuiltinProviders(config.providers)
115882
115975
  });
115883
115976
  } catch (error2) {
@@ -115929,13 +116022,12 @@ async function registerBuiltinCodingPlanProvider(providerName, apiKey) {
115929
116022
  writeProvidersConfig({
115930
116023
  opencodeZenApiKey: current.opencodeZenApiKey,
115931
116024
  githubCopilotToken: current.githubCopilotToken,
115932
- currentProvider: current.currentProvider,
115933
- currentModel: current.currentModel,
116025
+ model: current.model,
115934
116026
  providers
115935
116027
  });
115936
116028
  return { ok: true, models: provider.models, providerName: resolvedProviderName };
115937
116029
  }
115938
- var ZEN_PROVIDER_NAME = "opencode", ZEN_PROVIDER_URL = "https://opencode.ai/zen", ZEN_MODELS_URL, MODELS_DEV_URL = "https://models.dev/api.json", PROVIDER_PROTOCOLS, ProviderEntrySchema, ProvidersFileSchema, UNCONFIGURED_MODEL = "__UNCONFIGURED_PROVIDER_MODEL__", cachedConfig = null, cachedMtimeMs = null, zenState, copilotState;
116030
+ var ZEN_PROVIDER_NAME = "opencode", ZEN_PROVIDER_URL = "https://opencode.ai/zen", ZEN_MODELS_URL, MODELS_DEV_URL = "https://models.dev/api.json", PROVIDER_PROTOCOLS, LEGACY_PROVIDER_PROTOCOLS, ProviderEntrySchema, ModelSlotSchema, ModelConfigSchema, ProvidersFileSchema, MODEL_SLOT_KEYS, UNCONFIGURED_MODEL = "__UNCONFIGURED_PROVIDER_MODEL__", cachedConfig = null, cachedMtimeMs = null, zenState, copilotState;
115939
116031
  var init_providersConfig = __esm(() => {
115940
116032
  init_envUtils();
115941
116033
  init_file();
@@ -115948,7 +116040,8 @@ var init_providersConfig = __esm(() => {
115948
116040
  init_slowOperations();
115949
116041
  init_debug();
115950
116042
  ZEN_MODELS_URL = `${ZEN_PROVIDER_URL}/v1/models`;
115951
- PROVIDER_PROTOCOLS = [
116043
+ PROVIDER_PROTOCOLS = ["anthropic", "chat", "responses"];
116044
+ LEGACY_PROVIDER_PROTOCOLS = [
115952
116045
  "anthropic-messages",
115953
116046
  "openai-chat-completions",
115954
116047
  "openai-responses"
@@ -115958,15 +116051,34 @@ var init_providersConfig = __esm(() => {
115958
116051
  url: z10.string(),
115959
116052
  apiKey: z10.string(),
115960
116053
  models: z10.array(z10.string()),
115961
- protocol: z10.enum(PROVIDER_PROTOCOLS).optional()
116054
+ protocol: z10.union([z10.enum(PROVIDER_PROTOCOLS), z10.enum(LEGACY_PROVIDER_PROTOCOLS)]).optional()
116055
+ });
116056
+ ModelSlotSchema = z10.object({
116057
+ provider: z10.string(),
116058
+ model: z10.string()
116059
+ });
116060
+ ModelConfigSchema = z10.object({
116061
+ current: ModelSlotSchema.nullable().optional(),
116062
+ opus: ModelSlotSchema.nullable().optional(),
116063
+ sonnet: ModelSlotSchema.nullable().optional(),
116064
+ haiku: ModelSlotSchema.nullable().optional(),
116065
+ subagent: ModelSlotSchema.nullable().optional()
115962
116066
  });
115963
116067
  ProvidersFileSchema = z10.object({
115964
116068
  opencodeZenApiKey: z10.string().nullable().optional(),
115965
116069
  githubCopilotToken: z10.string().nullable().optional(),
115966
- currentProvider: z10.string().nullable(),
115967
- currentModel: z10.string().nullable(),
116070
+ currentProvider: z10.string().nullable().optional(),
116071
+ currentModel: z10.string().nullable().optional(),
116072
+ model: ModelConfigSchema.optional(),
115968
116073
  providers: z10.array(ProviderEntrySchema)
115969
116074
  });
116075
+ MODEL_SLOT_KEYS = [
116076
+ "current",
116077
+ "opus",
116078
+ "sonnet",
116079
+ "haiku",
116080
+ "subagent"
116081
+ ];
115970
116082
  zenState = {
115971
116083
  loaded: false,
115972
116084
  models: [],
@@ -116038,29 +116150,17 @@ function getMainLoopModel() {
116038
116150
  function getBestModel() {
116039
116151
  return getDefaultOpusModel();
116040
116152
  }
116153
+ function getConfiguredDefaultModel(slot) {
116154
+ return getConfiguredModelSelection(slot).model ?? UNCONFIGURED_MODEL;
116155
+ }
116041
116156
  function getDefaultOpusModel() {
116042
- if (process.env.ANTHROPIC_DEFAULT_OPUS_MODEL) {
116043
- return process.env.ANTHROPIC_DEFAULT_OPUS_MODEL;
116044
- }
116045
- if (getAPIProvider() !== "firstParty") {
116046
- return getModelStrings2().opus46;
116047
- }
116048
- return getModelStrings2().opus46;
116157
+ return getConfiguredDefaultModel("opus");
116049
116158
  }
116050
116159
  function getDefaultSonnetModel() {
116051
- if (process.env.ANTHROPIC_DEFAULT_SONNET_MODEL) {
116052
- return process.env.ANTHROPIC_DEFAULT_SONNET_MODEL;
116053
- }
116054
- if (getAPIProvider() !== "firstParty") {
116055
- return getModelStrings2().sonnet45;
116056
- }
116057
- return getModelStrings2().sonnet46;
116160
+ return getConfiguredDefaultModel("sonnet");
116058
116161
  }
116059
116162
  function getDefaultHaikuModel() {
116060
- if (process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL) {
116061
- return process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL;
116062
- }
116063
- return getModelStrings2().haiku45;
116163
+ return getConfiguredDefaultModel("haiku");
116064
116164
  }
116065
116165
  function getRuntimeMainLoopModel(params) {
116066
116166
  const { permissionMode, mainLoopModel, exceeds200kTokens = false } = params;
@@ -116077,16 +116177,7 @@ function getDefaultMainLoopModelSetting() {
116077
116177
  if (configuredModel) {
116078
116178
  return configuredModel;
116079
116179
  }
116080
- if (process.env.USER_TYPE === "ant") {
116081
- return getAntModelOverrideConfig()?.defaultModel ?? getDefaultOpusModel() + "[1m]";
116082
- }
116083
- if (isMaxSubscriber()) {
116084
- return getDefaultOpusModel() + (isOpus1mMergeEnabled() ? "[1m]" : "");
116085
- }
116086
- if (isTeamPremiumSubscriber()) {
116087
- return getDefaultOpusModel() + (isOpus1mMergeEnabled() ? "[1m]" : "");
116088
- }
116089
- return getDefaultSonnetModel();
116180
+ return UNCONFIGURED_MODEL;
116090
116181
  }
116091
116182
  function getDefaultMainLoopModel() {
116092
116183
  const configuredModel = getCurrentConfiguredModel();
@@ -116149,6 +116240,10 @@ function getCanonicalName(fullModelName) {
116149
116240
  return firstPartyNameToCanonical(resolveOverriddenModel(fullModelName));
116150
116241
  }
116151
116242
  function getClaudeAiUserDefaultModelDescription(fastMode = false) {
116243
+ const defaultModelSetting = getDefaultMainLoopModelSetting();
116244
+ if (defaultModelSetting === UNCONFIGURED_MODEL) {
116245
+ return "No model configured";
116246
+ }
116152
116247
  if (isMaxSubscriber() || isTeamPremiumSubscriber()) {
116153
116248
  if (isOpus1mMergeEnabled()) {
116154
116249
  return `Opus 4.6 with 1M context · Most capable for complex work${fastMode ? getOpus46PricingSuffix(true) : ""}`;
@@ -116159,7 +116254,7 @@ function getClaudeAiUserDefaultModelDescription(fastMode = false) {
116159
116254
  }
116160
116255
  function renderDefaultModelSetting(setting) {
116161
116256
  if (setting === UNCONFIGURED_MODEL) {
116162
- return "No provider configured";
116257
+ return "No model configured";
116163
116258
  }
116164
116259
  if (setting === "opusplan") {
116165
116260
  return "Opus 4.6 in plan mode, else Sonnet 4.6";
@@ -116184,7 +116279,7 @@ function isOpus1mMergeEnabled() {
116184
116279
  }
116185
116280
  function renderModelSetting(setting) {
116186
116281
  if (setting === UNCONFIGURED_MODEL) {
116187
- return "No provider configured";
116282
+ return "No model configured";
116188
116283
  }
116189
116284
  if (setting === "opusplan") {
116190
116285
  return "Opus Plan";
@@ -116271,23 +116366,24 @@ function parseUserSpecifiedModel(modelInput) {
116271
116366
  const normalizedModel = modelInputTrimmed.toLowerCase();
116272
116367
  const has1mTag = has1mContext(normalizedModel);
116273
116368
  const modelString = has1mTag ? normalizedModel.replace(/\[1m]$/i, "").trim() : normalizedModel;
116369
+ const append1mIfConfigured = (resolvedModel) => resolvedModel === UNCONFIGURED_MODEL || !has1mTag ? resolvedModel : resolvedModel + "[1m]";
116274
116370
  if (isModelAlias(modelString)) {
116275
116371
  switch (modelString) {
116276
116372
  case "opusplan":
116277
- return getDefaultSonnetModel() + (has1mTag ? "[1m]" : "");
116373
+ return append1mIfConfigured(getDefaultSonnetModel());
116278
116374
  case "sonnet":
116279
- return getDefaultSonnetModel() + (has1mTag ? "[1m]" : "");
116375
+ return append1mIfConfigured(getDefaultSonnetModel());
116280
116376
  case "haiku":
116281
- return getDefaultHaikuModel() + (has1mTag ? "[1m]" : "");
116377
+ return append1mIfConfigured(getDefaultHaikuModel());
116282
116378
  case "opus":
116283
- return getDefaultOpusModel() + (has1mTag ? "[1m]" : "");
116379
+ return append1mIfConfigured(getDefaultOpusModel());
116284
116380
  case "best":
116285
116381
  return getBestModel();
116286
116382
  default:
116287
116383
  }
116288
116384
  }
116289
116385
  if (getAPIProvider() === "firstParty" && isLegacyOpusFirstParty(modelString) && isLegacyModelRemapEnabled()) {
116290
- return getDefaultOpusModel() + (has1mTag ? "[1m]" : "");
116386
+ return append1mIfConfigured(getDefaultOpusModel());
116291
116387
  }
116292
116388
  if (process.env.USER_TYPE === "ant") {
116293
116389
  const has1mAntTag = has1mContext(normalizedModel);
@@ -116323,7 +116419,7 @@ function modelDisplayString(model) {
116323
116419
  if (model === null) {
116324
116420
  const currentModel = getCurrentConfiguredModel();
116325
116421
  if (!currentModel) {
116326
- return "No provider configured";
116422
+ return "No model configured";
116327
116423
  }
116328
116424
  return providerName ? `${providerName} / ${currentModel}` : currentModel;
116329
116425
  }
@@ -116461,8 +116557,8 @@ async function getAnthropicClient({
116461
116557
  fetchOverride,
116462
116558
  source
116463
116559
  });
116464
- if (requestConfig.protocol !== "anthropic-messages") {
116465
- throw new Error(`Provider "${requestConfig.provider.name}" uses protocol "${requestConfig.protocol}", not anthropic-messages`);
116560
+ if (requestConfig.protocol !== "anthropic") {
116561
+ throw new Error(`Provider "${requestConfig.provider.name}" uses protocol "${requestConfig.protocol}", not anthropic`);
116466
116562
  }
116467
116563
  const ARGS = {
116468
116564
  defaultHeaders: requestConfig.defaultHeaders,
@@ -116820,29 +116916,17 @@ var init_context = __esm(() => {
116820
116916
  var TIERS, get3PModelCapabilityOverride;
116821
116917
  var init_modelSupportOverrides = __esm(() => {
116822
116918
  init_memoize();
116919
+ init_providersConfig();
116823
116920
  init_providers();
116824
- TIERS = [
116825
- {
116826
- modelEnvVar: "ANTHROPIC_DEFAULT_OPUS_MODEL",
116827
- capabilitiesEnvVar: "ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES"
116828
- },
116829
- {
116830
- modelEnvVar: "ANTHROPIC_DEFAULT_SONNET_MODEL",
116831
- capabilitiesEnvVar: "ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES"
116832
- },
116833
- {
116834
- modelEnvVar: "ANTHROPIC_DEFAULT_HAIKU_MODEL",
116835
- capabilitiesEnvVar: "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES"
116836
- }
116837
- ];
116921
+ TIERS = ["opus", "sonnet", "haiku"];
116838
116922
  get3PModelCapabilityOverride = memoize_default((model, capability) => {
116839
116923
  if (getAPIProvider() === "firstParty") {
116840
116924
  return;
116841
116925
  }
116842
116926
  const m = model.toLowerCase();
116843
116927
  for (const tier of TIERS) {
116844
- const pinned = process.env[tier.modelEnvVar];
116845
- const capabilities = process.env[tier.capabilitiesEnvVar];
116928
+ const pinned = getConfiguredModelSelection(tier).model;
116929
+ const capabilities = process.env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL_SUPPORTED_CAPABILITIES`];
116846
116930
  if (!pinned || capabilities === undefined)
116847
116931
  continue;
116848
116932
  if (m !== pinned.toLowerCase())
@@ -135114,7 +135198,7 @@ var init_auth = __esm(() => {
135114
135198
 
135115
135199
  // src/utils/userAgent.ts
135116
135200
  function getClaudeCodeUserAgent() {
135117
- return `claude-code/${"v2.1.88.1.beta0"}`;
135201
+ return `claude-code/${"1.0.2"}`;
135118
135202
  }
135119
135203
 
135120
135204
  // src/utils/workloadContext.ts
@@ -135136,7 +135220,7 @@ function getUserAgent() {
135136
135220
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
135137
135221
  const workload = getWorkload();
135138
135222
  const workloadSuffix = workload ? `, workload/${workload}` : "";
135139
- return `claude-cli/${"v2.1.88.1.beta0"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
135223
+ return `claude-cli/${"1.0.2"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
135140
135224
  }
135141
135225
  function getMCPUserAgent() {
135142
135226
  const parts = [];
@@ -135150,10 +135234,10 @@ function getMCPUserAgent() {
135150
135234
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
135151
135235
  }
135152
135236
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
135153
- return `claude-code/${"v2.1.88.1.beta0"}${suffix}`;
135237
+ return `claude-code/${"1.0.2"}${suffix}`;
135154
135238
  }
135155
135239
  function getCopilotUserAgent() {
135156
- return `opencode/latest/${"v2.1.88.1.beta0"}`;
135240
+ return `opencode/latest/${"1.0.2"}`;
135157
135241
  }
135158
135242
  function getWebFetchUserAgent() {
135159
135243
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -135291,7 +135375,7 @@ var init_user = __esm(() => {
135291
135375
  deviceId,
135292
135376
  sessionId: getSessionId(),
135293
135377
  email: getEmail(),
135294
- appVersion: "v2.1.88.1.beta0",
135378
+ appVersion: "1.0.2",
135295
135379
  platform: getHostPlatformForAnalytics(),
135296
135380
  organizationUuid,
135297
135381
  accountUuid,
@@ -142985,7 +143069,7 @@ var init_metadata = __esm(() => {
142985
143069
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
142986
143070
  WHITESPACE_REGEX = /\s+/;
142987
143071
  getVersionBase = memoize_default(() => {
142988
- const match = "v2.1.88.1.beta0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
143072
+ const match = "1.0.2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
142989
143073
  return match ? match[0] : undefined;
142990
143074
  });
142991
143075
  buildEnvContext = memoize_default(async () => {
@@ -143025,9 +143109,9 @@ var init_metadata = __esm(() => {
143025
143109
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
143026
143110
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
143027
143111
  isClaudeAiAuth: isClaudeAISubscriber(),
143028
- version: "v2.1.88.1.beta0",
143112
+ version: "1.0.2",
143029
143113
  versionBase: getVersionBase(),
143030
- buildTime: "2026-04-04T13:15:01.581Z",
143114
+ buildTime: "2026-04-05T13:36:52.170Z",
143031
143115
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
143032
143116
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
143033
143117
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -143695,7 +143779,7 @@ function initialize1PEventLogging() {
143695
143779
  const platform2 = getPlatform();
143696
143780
  const attributes = {
143697
143781
  [import_semantic_conventions.ATTR_SERVICE_NAME]: "claude-code",
143698
- [import_semantic_conventions.ATTR_SERVICE_VERSION]: "v2.1.88.1.beta0"
143782
+ [import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.0.2"
143699
143783
  };
143700
143784
  if (platform2 === "wsl") {
143701
143785
  const wslVersion = getWslVersion();
@@ -143722,7 +143806,7 @@ function initialize1PEventLogging() {
143722
143806
  })
143723
143807
  ]
143724
143808
  });
143725
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "v2.1.88.1.beta0");
143809
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "1.0.2");
143726
143810
  }
143727
143811
  async function reinitialize1PEventLoggingIfConfigChanged() {
143728
143812
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -145587,7 +145671,7 @@ function getAttributionHeader(fingerprint) {
145587
145671
  if (!isAttributionHeaderEnabled()) {
145588
145672
  return "";
145589
145673
  }
145590
- const version = `${"v2.1.88.1.beta0"}.${fingerprint}`;
145674
+ const version = `${"1.0.2"}.${fingerprint}`;
145591
145675
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
145592
145676
  const cch = "";
145593
145677
  const workload = getWorkload();
@@ -171933,7 +172017,6 @@ function applyPositionedHighlight(screen, stylePool, positions, rowOffset, curre
171933
172017
  }
171934
172018
  var import_constants15, timing;
171935
172019
  var init_render_to_screen = __esm(() => {
171936
- init_noop();
171937
172020
  init_debug();
171938
172021
  init_dom();
171939
172022
  init_focus();
@@ -242236,7 +242319,7 @@ function getTelemetryAttributes() {
242236
242319
  attributes["session.id"] = sessionId;
242237
242320
  }
242238
242321
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
242239
- attributes["app.version"] = "v2.1.88.1.beta0";
242322
+ attributes["app.version"] = "1.0.2";
242240
242323
  }
242241
242324
  const oauthAccount = getOauthAccountInfo();
242242
242325
  if (oauthAccount) {
@@ -273963,7 +274046,7 @@ function getInstallationEnv() {
273963
274046
  return;
273964
274047
  }
273965
274048
  function getClaudeCodeVersion() {
273966
- return "v2.1.88.1.beta0";
274049
+ return "1.0.2";
273967
274050
  }
273968
274051
  async function getInstalledVSCodeExtensionVersion(command) {
273969
274052
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -279569,7 +279652,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
279569
279652
  const client2 = new Client({
279570
279653
  name: "claude-code",
279571
279654
  title: "Jieee Coder",
279572
- version: "v2.1.88.1.beta0",
279655
+ version: "1.0.2",
279573
279656
  description: "Anthropic's agentic coding tool",
279574
279657
  websiteUrl: PRODUCT_URL
279575
279658
  }, {
@@ -279924,7 +280007,7 @@ var init_client6 = __esm(() => {
279924
280007
  const client2 = new Client({
279925
280008
  name: "claude-code",
279926
280009
  title: "Jieee Coder",
279927
- version: "v2.1.88.1.beta0",
280010
+ version: "1.0.2",
279928
280011
  description: "Anthropic's agentic coding tool",
279929
280012
  websiteUrl: PRODUCT_URL
279930
280013
  }, {
@@ -280984,8 +281067,9 @@ function getDefaultSubagentModel() {
280984
281067
  return "inherit";
280985
281068
  }
280986
281069
  function getAgentModel(agentModel, parentModel, toolSpecifiedModel, permissionMode) {
280987
- if (process.env.CLAUDE_CODE_SUBAGENT_MODEL) {
280988
- return parseUserSpecifiedModel(process.env.CLAUDE_CODE_SUBAGENT_MODEL);
281070
+ const configuredSubagentModel = getConfiguredModelSelection("subagent").model;
281071
+ if (configuredSubagentModel) {
281072
+ return configuredSubagentModel;
280989
281073
  }
280990
281074
  const parentRegionPrefix = getBedrockRegionPrefix(parentModel);
280991
281075
  const applyParentRegionPrefix = (resolvedModel, originalSpec) => {
@@ -281067,6 +281151,7 @@ var init_agent = __esm(() => {
281067
281151
  init_aliases();
281068
281152
  init_bedrock();
281069
281153
  init_model();
281154
+ init_providersConfig();
281070
281155
  init_providers();
281071
281156
  AGENT_MODEL_OPTIONS = [...MODEL_ALIASES, "inherit"];
281072
281157
  });
@@ -325302,7 +325387,7 @@ async function initializeBetaTracing(resource) {
325302
325387
  });
325303
325388
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
325304
325389
  setLoggerProvider(loggerProvider);
325305
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "v2.1.88.1.beta0");
325390
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.0.2");
325306
325391
  setEventLogger(eventLogger);
325307
325392
  process.on("beforeExit", async () => {
325308
325393
  await loggerProvider?.forceFlush();
@@ -325342,7 +325427,7 @@ async function initializeTelemetry() {
325342
325427
  const platform4 = getPlatform();
325343
325428
  const baseAttributes = {
325344
325429
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
325345
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "v2.1.88.1.beta0"
325430
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.0.2"
325346
325431
  };
325347
325432
  if (platform4 === "wsl") {
325348
325433
  const wslVersion = getWslVersion();
@@ -325387,7 +325472,7 @@ async function initializeTelemetry() {
325387
325472
  } catch {}
325388
325473
  };
325389
325474
  registerCleanup(shutdownTelemetry2);
325390
- return meterProvider2.getMeter("com.anthropic.claude_code", "v2.1.88.1.beta0");
325475
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.0.2");
325391
325476
  }
325392
325477
  const meterProvider = new import_sdk_metrics2.MeterProvider({
325393
325478
  resource,
@@ -325407,7 +325492,7 @@ async function initializeTelemetry() {
325407
325492
  });
325408
325493
  import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
325409
325494
  setLoggerProvider(loggerProvider);
325410
- const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "v2.1.88.1.beta0");
325495
+ const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.0.2");
325411
325496
  setEventLogger(eventLogger);
325412
325497
  logForDebugging("[3P telemetry] Event logger set successfully");
325413
325498
  process.on("beforeExit", async () => {
@@ -325469,7 +325554,7 @@ Current timeout: ${timeoutMs}ms
325469
325554
  }
325470
325555
  };
325471
325556
  registerCleanup(shutdownTelemetry);
325472
- return meterProvider.getMeter("com.anthropic.claude_code", "v2.1.88.1.beta0");
325557
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.0.2");
325473
325558
  }
325474
325559
  async function flushTelemetry() {
325475
325560
  const meterProvider = getMeterProvider();
@@ -326155,9 +326240,9 @@ async function assertMinVersion() {
326155
326240
  if (false) {}
326156
326241
  try {
326157
326242
  const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
326158
- if (versionConfig.minVersion && lt("v2.1.88.1.beta0", versionConfig.minVersion)) {
326243
+ if (versionConfig.minVersion && lt("1.0.2", versionConfig.minVersion)) {
326159
326244
  console.error(`
326160
- It looks like your version of Jieee Coder (${"v2.1.88.1.beta0"}) needs an update.
326245
+ It looks like your version of Jieee Coder (${"1.0.2"}) needs an update.
326161
326246
  A newer version (${versionConfig.minVersion} or higher) is required to continue.
326162
326247
 
326163
326248
  To update, please run:
@@ -326373,7 +326458,7 @@ async function installGlobalPackage(specificVersion) {
326373
326458
  logError2(new AutoUpdaterError("Another process is currently installing an update"));
326374
326459
  logEvent("tengu_auto_updater_lock_contention", {
326375
326460
  pid: process.pid,
326376
- currentVersion: "v2.1.88.1.beta0"
326461
+ currentVersion: "1.0.2"
326377
326462
  });
326378
326463
  return "in_progress";
326379
326464
  }
@@ -326382,7 +326467,7 @@ async function installGlobalPackage(specificVersion) {
326382
326467
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
326383
326468
  logError2(new Error("Windows NPM detected in WSL environment"));
326384
326469
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
326385
- currentVersion: "v2.1.88.1.beta0"
326470
+ currentVersion: "1.0.2"
326386
326471
  });
326387
326472
  console.error(`
326388
326473
  Error: Windows NPM detected in WSL
@@ -326915,7 +327000,7 @@ function detectLinuxGlobPatternWarnings() {
326915
327000
  }
326916
327001
  async function getDoctorDiagnostic() {
326917
327002
  const installationType = await getCurrentInstallationType();
326918
- const version = typeof MACRO !== "undefined" ? "v2.1.88.1.beta0" : "unknown";
327003
+ const version = typeof MACRO !== "undefined" ? "1.0.2" : "unknown";
326919
327004
  const installationPath = await getInstallationPath();
326920
327005
  const invokedBinary = getInvokedBinary();
326921
327006
  const multipleInstallations = await detectMultipleInstallations();
@@ -327848,8 +327933,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
327848
327933
  const maxVersion = await getMaxVersion();
327849
327934
  if (maxVersion && gt(version, maxVersion)) {
327850
327935
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
327851
- if (gte("v2.1.88.1.beta0", maxVersion)) {
327852
- logForDebugging(`Native installer: current version ${"v2.1.88.1.beta0"} is already at or above maxVersion ${maxVersion}, skipping update`);
327936
+ if (gte("1.0.2", maxVersion)) {
327937
+ logForDebugging(`Native installer: current version ${"1.0.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
327853
327938
  logEvent("tengu_native_update_skipped_max_version", {
327854
327939
  latency_ms: Date.now() - startTime,
327855
327940
  max_version: maxVersion,
@@ -327860,7 +327945,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
327860
327945
  version = maxVersion;
327861
327946
  }
327862
327947
  }
327863
- if (!forceReinstall && version === "v2.1.88.1.beta0" && await versionIsAvailable(version) && await isPossibleClaudeBinary(executablePath)) {
327948
+ if (!forceReinstall && version === "1.0.2" && await versionIsAvailable(version) && await isPossibleClaudeBinary(executablePath)) {
327864
327949
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
327865
327950
  logEvent("tengu_native_update_complete", {
327866
327951
  latency_ms: Date.now() - startTime,
@@ -328995,6 +329080,10 @@ function buildAPIProviderProperties() {
328995
329080
  return properties;
328996
329081
  }
328997
329082
  function getModelDisplayLabel(mainLoopModel) {
329083
+ const selection = getCurrentProviderSelection();
329084
+ if (selection.provider?.name && selection.model) {
329085
+ return `${selection.provider.name} / ${mainLoopModel ?? selection.model}`;
329086
+ }
328998
329087
  let modelLabel = modelDisplayString(mainLoopModel);
328999
329088
  if (mainLoopModel === null && isClaudeAISubscriber()) {
329000
329089
  const description = getClaudeAiUserDefaultModelDescription();
@@ -329018,6 +329107,7 @@ var init_status = __esm(() => {
329018
329107
  init_providers();
329019
329108
  init_mtls();
329020
329109
  init_nativeInstaller();
329110
+ init_providersConfig();
329021
329111
  init_proxy();
329022
329112
  init_sandbox_adapter();
329023
329113
  init_allErrors();
@@ -410118,14 +410208,14 @@ function getDefaultOptionForUser(fastMode = false) {
410118
410208
  }
410119
410209
  function getCustomSonnetOption() {
410120
410210
  const is3P = getAPIProvider() !== "firstParty";
410121
- const customSonnetModel = process.env.ANTHROPIC_DEFAULT_SONNET_MODEL;
410211
+ const customSonnetModel = getStoredModelSlot("sonnet")?.model;
410122
410212
  if (is3P && customSonnetModel) {
410123
410213
  const is1m = has1mContext(customSonnetModel);
410124
410214
  return {
410125
410215
  value: "sonnet",
410126
- label: process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_NAME ?? customSonnetModel,
410127
- description: process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION ?? `Custom Sonnet model${is1m ? " (1M context)" : ""}`,
410128
- descriptionForModel: `${process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION ?? `Custom Sonnet model${is1m ? " with 1M context" : ""}`} (${customSonnetModel})`
410216
+ label: customSonnetModel,
410217
+ description: `Custom Sonnet model${is1m ? " (1M context)" : ""}`,
410218
+ descriptionForModel: `Custom Sonnet model${is1m ? " with 1M context" : ""} (${customSonnetModel})`
410129
410219
  };
410130
410220
  }
410131
410221
  }
@@ -410140,14 +410230,14 @@ function getSonnet46Option() {
410140
410230
  }
410141
410231
  function getCustomOpusOption() {
410142
410232
  const is3P = getAPIProvider() !== "firstParty";
410143
- const customOpusModel = process.env.ANTHROPIC_DEFAULT_OPUS_MODEL;
410233
+ const customOpusModel = getStoredModelSlot("opus")?.model;
410144
410234
  if (is3P && customOpusModel) {
410145
410235
  const is1m = has1mContext(customOpusModel);
410146
410236
  return {
410147
410237
  value: "opus",
410148
- label: process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_NAME ?? customOpusModel,
410149
- description: process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION ?? `Custom Opus model${is1m ? " (1M context)" : ""}`,
410150
- descriptionForModel: `${process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION ?? `Custom Opus model${is1m ? " with 1M context" : ""}`} (${customOpusModel})`
410238
+ label: customOpusModel,
410239
+ description: `Custom Opus model${is1m ? " (1M context)" : ""}`,
410240
+ descriptionForModel: `Custom Opus model${is1m ? " with 1M context" : ""} (${customOpusModel})`
410151
410241
  };
410152
410242
  }
410153
410243
  }
@@ -410188,13 +410278,13 @@ function getOpus46_1MOption(fastMode = false) {
410188
410278
  }
410189
410279
  function getCustomHaikuOption() {
410190
410280
  const is3P = getAPIProvider() !== "firstParty";
410191
- const customHaikuModel = process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL;
410281
+ const customHaikuModel = getStoredModelSlot("haiku")?.model;
410192
410282
  if (is3P && customHaikuModel) {
410193
410283
  return {
410194
410284
  value: "haiku",
410195
- label: process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME ?? customHaikuModel,
410196
- description: process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION ?? "Custom Haiku model",
410197
- descriptionForModel: `${process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION ?? "Custom Haiku model"} (${customHaikuModel})`
410285
+ label: customHaikuModel,
410286
+ description: "Custom Haiku model",
410287
+ descriptionForModel: `Custom Haiku model (${customHaikuModel})`
410198
410288
  };
410199
410289
  }
410200
410290
  }
@@ -424434,7 +424524,7 @@ function getAnthropicEnvMetadata() {
424434
424524
  function getBuildAgeMinutes() {
424435
424525
  if (false)
424436
424526
  ;
424437
- const buildTime = new Date("2026-04-04T13:15:01.581Z").getTime();
424527
+ const buildTime = new Date("2026-04-05T13:36:52.170Z").getTime();
424438
424528
  if (isNaN(buildTime))
424439
424529
  return;
424440
424530
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -448094,7 +448184,7 @@ function Feedback({
448094
448184
  platform: env4.platform,
448095
448185
  gitRepo: envInfo.isGit,
448096
448186
  terminal: env4.terminal,
448097
- version: "v2.1.88.1.beta0",
448187
+ version: "1.0.2",
448098
448188
  transcript: normalizeMessagesForAPI(messages),
448099
448189
  errors: sanitizedErrors,
448100
448190
  lastApiRequest: getLastAPIRequest(),
@@ -448286,7 +448376,7 @@ function Feedback({
448286
448376
  ", ",
448287
448377
  env4.terminal,
448288
448378
  ", v",
448289
- "v2.1.88.1.beta0"
448379
+ "1.0.2"
448290
448380
  ]
448291
448381
  })
448292
448382
  ]
@@ -448392,7 +448482,7 @@ ${sanitizedDescription}
448392
448482
  ` + `**Environment Info**
448393
448483
  ` + `- Platform: ${env4.platform}
448394
448484
  ` + `- Terminal: ${env4.terminal}
448395
- ` + `- Version: ${"v2.1.88.1.beta0"}
448485
+ ` + `- Version: ${"1.0.2"}
448396
448486
  ` + `- Feedback ID: ${feedbackId}
448397
448487
  ` + `
448398
448488
  **Errors**
@@ -449946,7 +450036,7 @@ async function activateZenModelSelection(apiKey) {
449946
450036
  }
449947
450037
  const cfg = getProvidersConfig();
449948
450038
  const current = getCurrentProviderSelection();
449949
- if (!current.provider || !current.model || cfg.currentProvider === null) {
450039
+ if (!current.provider || !current.model || cfg.model.current === null) {
449950
450040
  const first = result.models[0];
449951
450041
  if (first) {
449952
450042
  const persisted = setCurrentProviderModel("opencode", first);
@@ -452010,7 +452100,7 @@ function buildPrimarySection() {
452010
452100
  });
452011
452101
  return [{
452012
452102
  label: "Version",
452013
- value: "v2.1.88.1.beta0"
452103
+ value: "1.0.2"
452014
452104
  }, {
452015
452105
  label: "Session name",
452016
452106
  value: nameValue
@@ -452794,7 +452884,9 @@ function ModelPicker({
452794
452884
  onCancel,
452795
452885
  isStandaloneCommand,
452796
452886
  headerText,
452797
- sessionModel
452887
+ sessionModel,
452888
+ skipSettingsWrite,
452889
+ targetSlot = "current"
452798
452890
  }) {
452799
452891
  const exitState = useExitOnCtrlCDWithKeybindings();
452800
452892
  const [loadingBuiltinProviders, setLoadingBuiltinProviders] = import_react101.useState(false);
@@ -452815,7 +452907,8 @@ function ModelPicker({
452815
452907
  };
452816
452908
  }, []);
452817
452909
  const config = getProvidersConfig();
452818
- const selection = getCurrentProviderSelection();
452910
+ const currentSelection = getCurrentProviderSelection();
452911
+ const targetSelection = getConfiguredModelSelection(targetSlot);
452819
452912
  const modelOptions = config.providers.flatMap((provider) => provider.models.map((model) => ({
452820
452913
  value: encodeValue(provider.name, model),
452821
452914
  label: `${provider.name} / ${model}`,
@@ -452843,7 +452936,7 @@ function ModelPicker({
452843
452936
  },
452844
452937
  ...filteredModelOptions
452845
452938
  ];
452846
- const defaultValue = selection.provider && selection.model ? filteredModelOptions.some((option) => option.value === encodeValue(selection.provider.name, selection.model)) ? encodeValue(selection.provider.name, selection.model) : "__filter__" : "__filter__";
452939
+ const defaultValue = targetSelection.provider && targetSelection.model ? filteredModelOptions.some((option) => option.value === encodeValue(targetSelection.provider.name, targetSelection.model)) ? encodeValue(targetSelection.provider.name, targetSelection.model) : "__filter__" : currentSelection.provider && currentSelection.model ? filteredModelOptions.some((option) => option.value === encodeValue(currentSelection.provider.name, currentSelection.model)) ? encodeValue(currentSelection.provider.name, currentSelection.model) : "__filter__" : "__filter__";
452847
452940
  use_input_default((input, key) => {
452848
452941
  if (focusedValue === "__filter__") {
452849
452942
  return;
@@ -452930,10 +453023,12 @@ function ModelPicker({
452930
453023
  onCancel?.();
452931
453024
  return;
452932
453025
  }
452933
- const result = setCurrentProviderModel(decoded.provider, decoded.model);
452934
- if (result.error) {
452935
- onCancel?.();
452936
- return;
453026
+ if (!skipSettingsWrite) {
453027
+ const result = targetSlot === "current" ? setCurrentProviderModel(decoded.provider, decoded.model) : setProviderModelForSlot(targetSlot, decoded.provider, decoded.model);
453028
+ if (result.error) {
453029
+ onCancel?.();
453030
+ return;
453031
+ }
452937
453032
  }
452938
453033
  onSelect(decoded.model, undefined);
452939
453034
  }
@@ -454543,7 +454638,7 @@ function Config({
454543
454638
  {
454544
454639
  id: "model",
454545
454640
  label: "Model",
454546
- value: mainLoopModel === null ? "Default (recommended)" : mainLoopModel,
454641
+ value: getModelDisplayLabel(mainLoopModel),
454547
454642
  type: "managedEnum",
454548
454643
  onChange: onChangeMainModelConfig
454549
454644
  },
@@ -455360,7 +455455,7 @@ function Config({
455360
455455
  }
455361
455456
  })
455362
455457
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime175.jsx(ChannelDowngradeDialog, {
455363
- currentVersion: "v2.1.88.1.beta0",
455458
+ currentVersion: "1.0.2",
455364
455459
  onChoice: (choice) => {
455365
455460
  setShowSubmenu(null);
455366
455461
  setTabsHidden(false);
@@ -455372,7 +455467,7 @@ function Config({
455372
455467
  autoUpdatesChannel: "stable"
455373
455468
  };
455374
455469
  if (choice === "stay") {
455375
- newSettings.minimumVersion = "v2.1.88.1.beta0";
455470
+ newSettings.minimumVersion = "1.0.2";
455376
455471
  }
455377
455472
  updateSettingsForSource("userSettings", newSettings);
455378
455473
  setSettingsData((prev_27) => ({
@@ -455694,6 +455789,7 @@ var init_Config = __esm(() => {
455694
455789
  init_AppState();
455695
455790
  init_ModelPicker();
455696
455791
  init_model();
455792
+ init_status();
455697
455793
  init_extraUsage();
455698
455794
  init_ClaudeMdExternalIncludesDialog();
455699
455795
  init_ChannelDowngradeDialog();
@@ -463458,7 +463554,7 @@ function HelpV2(t0) {
463458
463554
  let t6;
463459
463555
  if ($3[31] !== tabs) {
463460
463556
  t6 = /* @__PURE__ */ jsx_runtime202.jsx(Tabs, {
463461
- title: `Jieee Coder v${"v2.1.88.1.beta0"}`,
463557
+ title: `Jieee Coder v${"1.0.2"}`,
463462
463558
  color: "professionalBlue",
463463
463559
  defaultTab: "general",
463464
463560
  children: tabs
@@ -487676,7 +487772,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
487676
487772
  return [];
487677
487773
  }
487678
487774
  }
487679
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "v2.1.88.1.beta0") {
487775
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.2") {
487680
487776
  if (process.env.USER_TYPE === "ant") {
487681
487777
  const changelog = "CHANGELOG.md";
487682
487778
  if (changelog) {
@@ -487703,7 +487799,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "v2.1.88.1
487703
487799
  releaseNotes
487704
487800
  };
487705
487801
  }
487706
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "v2.1.88.1.beta0") {
487802
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.2") {
487707
487803
  if (process.env.USER_TYPE === "ant") {
487708
487804
  const changelog = "CHANGELOG.md";
487709
487805
  if (changelog) {
@@ -488873,7 +488969,7 @@ function getRecentActivitySync() {
488873
488969
  return cachedActivity;
488874
488970
  }
488875
488971
  function getLogoDisplayData() {
488876
- const version = process.env.DEMO_VERSION ?? "v2.1.88.1.beta0";
488972
+ const version = process.env.DEMO_VERSION ?? "1.0.2";
488877
488973
  const serverUrl = getDirectConnectServerUrl();
488878
488974
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
488879
488975
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -488886,6 +488982,13 @@ function getLogoDisplayData() {
488886
488982
  agentName
488887
488983
  };
488888
488984
  }
488985
+ function formatLogoModelDisplay(modelName) {
488986
+ const providerName = getCurrentProviderSelection().provider?.name;
488987
+ if (!providerName || modelName === "No model configured") {
488988
+ return modelName;
488989
+ }
488990
+ return `${providerName} / ${modelName}`;
488991
+ }
488889
488992
  function getRecentReleaseNotesSync(maxItems) {
488890
488993
  if (process.env.USER_TYPE === "ant") {
488891
488994
  const changelog2 = "CHANGELOG.md";
@@ -488927,6 +489030,7 @@ var init_logoV2Utils = __esm(() => {
488927
489030
  init_releaseNotes();
488928
489031
  init_sessionStorage();
488929
489032
  init_settings2();
489033
+ init_providersConfig();
488930
489034
  cachedActivity = [];
488931
489035
  });
488932
489036
 
@@ -489827,7 +489931,7 @@ function LogoV2() {
489827
489931
  if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
489828
489932
  t2 = () => {
489829
489933
  const currentConfig = getGlobalConfig();
489830
- if (currentConfig.lastReleaseNotesSeen === "v2.1.88.1.beta0") {
489934
+ if (currentConfig.lastReleaseNotesSeen === "1.0.2") {
489831
489935
  return;
489832
489936
  }
489833
489937
  saveGlobalConfig(_temp328);
@@ -489892,7 +489996,7 @@ function LogoV2() {
489892
489996
  }
489893
489997
  import_react151.useEffect(t7, t8);
489894
489998
  const model = useMainLoopModel();
489895
- const fullModelDisplayName = renderModelSetting(model);
489999
+ const fullModelDisplayName = formatLogoModelDisplay(renderModelSetting(model));
489896
490000
  const {
489897
490001
  version,
489898
490002
  cwd: cwd2,
@@ -490366,12 +490470,12 @@ function LogoV2() {
490366
490470
  return t41;
490367
490471
  }
490368
490472
  function _temp328(current) {
490369
- if (current.lastReleaseNotesSeen === "v2.1.88.1.beta0") {
490473
+ if (current.lastReleaseNotesSeen === "1.0.2") {
490370
490474
  return current;
490371
490475
  }
490372
490476
  return {
490373
490477
  ...current,
490374
- lastReleaseNotesSeen: "v2.1.88.1.beta0"
490478
+ lastReleaseNotesSeen: "1.0.2"
490375
490479
  };
490376
490480
  }
490377
490481
  function _temp241(s_0) {
@@ -516670,7 +516774,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
516670
516774
  smapsRollup,
516671
516775
  platform: process.platform,
516672
516776
  nodeVersion: process.version,
516673
- ccVersion: "v2.1.88.1.beta0"
516777
+ ccVersion: "1.0.2"
516674
516778
  };
516675
516779
  }
516676
516780
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -517256,7 +517360,7 @@ var init_bridge_kick = __esm(() => {
517256
517360
  var call57 = async () => {
517257
517361
  return {
517258
517362
  type: "text",
517259
- value: `${"v2.1.88.1.beta0"} (built ${"2026-04-04T13:15:01.581Z"})`
517363
+ value: `${"1.0.2"} (built ${"2026-04-05T13:36:52.170Z"})`
517260
517364
  };
517261
517365
  }, version, version_default;
517262
517366
  var init_version = __esm(() => {
@@ -520159,26 +520263,38 @@ var exports_model2 = {};
520159
520263
  __export(exports_model2, {
520160
520264
  call: () => call64
520161
520265
  });
520162
- function renderModelLabel(model) {
520163
- const selection = getCurrentProviderSelection();
520266
+ function getSlotLabel(slot) {
520267
+ switch (slot) {
520268
+ case "current":
520269
+ return "current";
520270
+ case "subagent":
520271
+ return "agent";
520272
+ default:
520273
+ return slot;
520274
+ }
520275
+ }
520276
+ function renderModelLabel(model, slot = "current") {
520277
+ const selection = getConfiguredModelSelection(slot);
520164
520278
  if (!selection.provider || !selection.model) {
520165
- return "No provider configured";
520279
+ return "No model configured";
520166
520280
  }
520167
520281
  const selectedModel = model ?? selection.model;
520168
520282
  return `${selection.provider.name} / ${selectedModel}`;
520169
520283
  }
520170
520284
  function ModelPickerWrapper({
520171
- onDone
520285
+ onDone,
520286
+ targetSlot = "current"
520172
520287
  }) {
520173
520288
  const mainLoopModel = useAppState((s2) => s2.mainLoopModel);
520174
520289
  const mainLoopModelForSession = useAppState((s2) => s2.mainLoopModelForSession);
520175
520290
  const isFastMode = useAppState((s2) => s2.fastMode);
520176
520291
  const setAppState = useSetAppState();
520292
+ const slotLabel = getSlotLabel(targetSlot);
520177
520293
  function handleCancel() {
520178
520294
  logEvent("tengu_model_command_menu", {
520179
520295
  action: "cancel"
520180
520296
  });
520181
- onDone(`Kept model as ${source_default.bold(renderModelLabel(mainLoopModel))}`, {
520297
+ onDone(`Kept ${slotLabel} model as ${source_default.bold(renderModelLabel(targetSlot === "current" ? mainLoopModel : null, targetSlot))}`, {
520182
520298
  display: "system"
520183
520299
  });
520184
520300
  }
@@ -520189,20 +520305,22 @@ function ModelPickerWrapper({
520189
520305
  to_model: model
520190
520306
  });
520191
520307
  let wasFastModeToggledOff = false;
520192
- setAppState((prev) => {
520193
- wasFastModeToggledOff = isFastModeEnabled() && !isFastModeSupportedByModel(model) && !!prev.fastMode;
520194
- return {
520195
- ...prev,
520196
- mainLoopModel: model,
520197
- mainLoopModelForSession: null,
520198
- ...wasFastModeToggledOff ? { fastMode: false } : {}
520199
- };
520200
- });
520201
- if (wasFastModeToggledOff) {
520202
- clearFastModeCooldown();
520308
+ if (targetSlot === "current") {
520309
+ setAppState((prev) => {
520310
+ wasFastModeToggledOff = isFastModeEnabled() && !isFastModeSupportedByModel(model) && !!prev.fastMode;
520311
+ return {
520312
+ ...prev,
520313
+ mainLoopModel: model,
520314
+ mainLoopModelForSession: null,
520315
+ ...wasFastModeToggledOff ? { fastMode: false } : {}
520316
+ };
520317
+ });
520318
+ if (wasFastModeToggledOff) {
520319
+ clearFastModeCooldown();
520320
+ }
520203
520321
  }
520204
- let message = `Set model to ${source_default.bold(renderModelLabel(model))}`;
520205
- if (wasFastModeToggledOff) {
520322
+ let message = `Set ${slotLabel} model to ${source_default.bold(renderModelLabel(model, targetSlot))}`;
520323
+ if (targetSlot === "current" && wasFastModeToggledOff) {
520206
520324
  message += " · Fast mode OFF";
520207
520325
  }
520208
520326
  onDone(message);
@@ -520214,12 +520332,15 @@ function ModelPickerWrapper({
520214
520332
  onSelect: handleSelect,
520215
520333
  onCancel: handleCancel,
520216
520334
  isStandaloneCommand: true,
520217
- showFastModeNotice
520335
+ showFastModeNotice,
520336
+ headerText: `Select ${slotLabel} model`,
520337
+ targetSlot
520218
520338
  });
520219
520339
  }
520220
520340
  function SetModelAndClose({
520221
520341
  args,
520222
- onDone
520342
+ onDone,
520343
+ targetSlot
520223
520344
  }) {
520224
520345
  const setAppState = useSetAppState();
520225
520346
  React107.useEffect(() => {
@@ -520252,26 +520373,28 @@ function SetModelAndClose({
520252
520373
  onDone('Specify a model as "provider/model" or use a model name that is uniquely configured.', { display: "system" });
520253
520374
  return;
520254
520375
  }
520255
- const result = setCurrentProviderModel(providerName, modelName);
520376
+ const result = targetSlot === "current" ? setCurrentProviderModel(providerName, modelName) : setProviderModelForSlot(targetSlot, providerName, modelName);
520256
520377
  if (result.error) {
520257
520378
  onDone(result.error, { display: "system" });
520258
520379
  return;
520259
520380
  }
520260
520381
  let wasFastModeToggledOff = false;
520261
- setAppState((prev) => {
520262
- wasFastModeToggledOff = isFastModeEnabled() && !isFastModeSupportedByModel(modelName) && !!prev.fastMode;
520263
- return {
520264
- ...prev,
520265
- mainLoopModel: modelName,
520266
- mainLoopModelForSession: null,
520267
- ...wasFastModeToggledOff ? { fastMode: false } : {}
520268
- };
520269
- });
520270
- if (wasFastModeToggledOff) {
520271
- clearFastModeCooldown();
520382
+ if (targetSlot === "current") {
520383
+ setAppState((prev) => {
520384
+ wasFastModeToggledOff = isFastModeEnabled() && !isFastModeSupportedByModel(modelName) && !!prev.fastMode;
520385
+ return {
520386
+ ...prev,
520387
+ mainLoopModel: modelName,
520388
+ mainLoopModelForSession: null,
520389
+ ...wasFastModeToggledOff ? { fastMode: false } : {}
520390
+ };
520391
+ });
520392
+ if (wasFastModeToggledOff) {
520393
+ clearFastModeCooldown();
520394
+ }
520272
520395
  }
520273
- let message = `Set model to ${source_default.bold(`${providerName} / ${modelName}`)}`;
520274
- if (wasFastModeToggledOff) {
520396
+ let message = `Set ${getSlotLabel(targetSlot)} model to ${source_default.bold(`${providerName} / ${modelName}`)}`;
520397
+ if (targetSlot === "current" && wasFastModeToggledOff) {
520275
520398
  message += " · Fast mode OFF";
520276
520399
  }
520277
520400
  onDone(message);
@@ -520279,7 +520402,7 @@ function SetModelAndClose({
520279
520402
  return () => {
520280
520403
  mounted = false;
520281
520404
  };
520282
- }, [args, onDone, setAppState]);
520405
+ }, [args, onDone, setAppState, targetSlot]);
520283
520406
  return null;
520284
520407
  }
520285
520408
  function ShowModelAndClose({
@@ -520289,7 +520412,7 @@ function ShowModelAndClose({
520289
520412
  const mainLoopModelForSession = useAppState((s2) => s2.mainLoopModelForSession);
520290
520413
  const selection = getCurrentProviderSelection();
520291
520414
  if (!selection.provider || !selection.model) {
520292
- onDone(selection.error ?? "No provider configured", { display: "system" });
520415
+ onDone(selection.error ?? "No model configured", { display: "system" });
520293
520416
  return null;
520294
520417
  }
520295
520418
  const current = mainLoopModelForSession ?? mainLoopModel ?? selection.model;
@@ -520301,6 +520424,36 @@ Base model: ${selection.provider.name} / ${selection.model}`);
520301
520424
  }
520302
520425
  return null;
520303
520426
  }
520427
+ function parseModelCommandArgs(args) {
520428
+ const tokens = args.trim().split(/\s+/).filter(Boolean);
520429
+ const targetFlags = new Map([
520430
+ ["--opus", "opus"],
520431
+ ["--sonnet", "sonnet"],
520432
+ ["--haiku", "haiku"],
520433
+ ["--agent", "subagent"]
520434
+ ]);
520435
+ let targetSlot = "current";
520436
+ const remaining = [];
520437
+ for (const token of tokens) {
520438
+ const slot = targetFlags.get(token);
520439
+ if (!slot) {
520440
+ remaining.push(token);
520441
+ continue;
520442
+ }
520443
+ if (targetSlot !== "current") {
520444
+ return {
520445
+ targetSlot,
520446
+ input: "",
520447
+ error: "Specify only one target flag for /model."
520448
+ };
520449
+ }
520450
+ targetSlot = slot;
520451
+ }
520452
+ return {
520453
+ targetSlot,
520454
+ input: remaining.join(" ").trim()
520455
+ };
520456
+ }
520304
520457
  var React107, jsx_runtime348, call64 = async (onDone, _context, args) => {
520305
520458
  args = args?.trim() || "";
520306
520459
  if (COMMON_INFO_ARGS.includes(args)) {
@@ -520312,20 +520465,27 @@ var React107, jsx_runtime348, call64 = async (onDone, _context, args) => {
520312
520465
  });
520313
520466
  }
520314
520467
  if (COMMON_HELP_ARGS.includes(args)) {
520315
- onDone("Run /model to open the provider/model selection menu, or /model provider/model to set it directly.", { display: "system" });
520468
+ onDone("Run /model to edit the current model, or use /model --sonnet|--opus|--haiku|--agent to edit a target model slot.", { display: "system" });
520316
520469
  return;
520317
520470
  }
520318
- if (args) {
520471
+ const parsedArgs = parseModelCommandArgs(args);
520472
+ if (parsedArgs.error) {
520473
+ onDone(parsedArgs.error, { display: "system" });
520474
+ return;
520475
+ }
520476
+ if (parsedArgs.input) {
520319
520477
  logEvent("tengu_model_command_inline", {
520320
520478
  args
520321
520479
  });
520322
520480
  return /* @__PURE__ */ jsx_runtime348.jsx(SetModelAndClose, {
520323
- args,
520481
+ args: parsedArgs.input,
520482
+ targetSlot: parsedArgs.targetSlot,
520324
520483
  onDone
520325
520484
  });
520326
520485
  }
520327
520486
  return /* @__PURE__ */ jsx_runtime348.jsx(ModelPickerWrapper, {
520328
- onDone
520487
+ onDone,
520488
+ targetSlot: parsedArgs.targetSlot
520329
520489
  });
520330
520490
  };
520331
520491
  var init_model2 = __esm(() => {
@@ -526099,7 +526259,7 @@ function generateHtmlReport(data, insights) {
526099
526259
  </html>`;
526100
526260
  }
526101
526261
  function buildExportData(data, insights, facets, remoteStats) {
526102
- const version2 = typeof MACRO !== "undefined" ? "v2.1.88.1.beta0" : "unknown";
526262
+ const version2 = typeof MACRO !== "undefined" ? "1.0.2" : "unknown";
526103
526263
  const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
526104
526264
  const facets_summary = {
526105
526265
  total: facets.size,
@@ -530210,7 +530370,7 @@ var init_sessionStorage = __esm(() => {
530210
530370
  init_settings2();
530211
530371
  init_slowOperations();
530212
530372
  init_uuid();
530213
- VERSION5 = typeof MACRO !== "undefined" ? "v2.1.88.1.beta0" : "unknown";
530373
+ VERSION5 = typeof MACRO !== "undefined" ? "1.0.2" : "unknown";
530214
530374
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
530215
530375
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
530216
530376
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -531415,7 +531575,7 @@ var init_filesystem = __esm(() => {
531415
531575
  });
531416
531576
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
531417
531577
  const nonce = randomBytes18(16).toString("hex");
531418
- return join130(getClaudeTempDir(), "bundled-skills", "v2.1.88.1.beta0", nonce);
531578
+ return join130(getClaudeTempDir(), "bundled-skills", "1.0.2", nonce);
531419
531579
  });
531420
531580
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
531421
531581
  });
@@ -537411,7 +537571,7 @@ function computeFingerprint(messageText, version2) {
537411
537571
  }
537412
537572
  function computeFingerprintFromMessages(messages) {
537413
537573
  const firstMessageText = extractFirstMessageText(messages);
537414
- return computeFingerprint(firstMessageText, "v2.1.88.1.beta0");
537574
+ return computeFingerprint(firstMessageText, "1.0.2");
537415
537575
  }
537416
537576
  var FINGERPRINT_SALT = "59cf53e54c78";
537417
537577
  var init_fingerprint = () => {};
@@ -538191,7 +538351,7 @@ async function sendChatCompletionRequest({
538191
538351
  source
538192
538352
  }) {
538193
538353
  const requestConfig = await getProviderRequestConfig({ source });
538194
- if (requestConfig.protocol !== "openai-chat-completions") {
538354
+ if (requestConfig.protocol !== "chat") {
538195
538355
  throw new Error(`Provider "${requestConfig.provider.name}" does not support chat/completions`);
538196
538356
  }
538197
538357
  if (requestConfig.provider.name === COPILOT_PROVIDER_NAME) {
@@ -539005,7 +539165,7 @@ async function sendResponsesRequest({
539005
539165
  source
539006
539166
  }) {
539007
539167
  const requestConfig = await getProviderRequestConfig({ source });
539008
- if (requestConfig.protocol !== "openai-responses") {
539168
+ if (requestConfig.protocol !== "responses") {
539009
539169
  throw new Error(`Provider "${requestConfig.provider.name}" does not support responses`);
539010
539170
  }
539011
539171
  const response = await requestConfig.fetch(buildEndpoint2(requestConfig.provider.url), {
@@ -540882,7 +541042,7 @@ ${deferredToolList}
540882
541042
  const currentProviderProtocol = currentProviderSelection.protocol;
540883
541043
  const zenMessagesForAPI = currentProviderSelection.provider?.name === "opencode" ? applyZenCapabilityTransform(messagesForAPI, options.model) : messagesForAPI;
540884
541044
  const zenExtraBodyParams = currentProviderSelection.provider?.name === "opencode" ? getZenExtraBodyParams(options.model, getSessionId()) : undefined;
540885
- if (currentProviderProtocol === "openai-chat-completions") {
541045
+ if (currentProviderProtocol === "chat") {
540886
541046
  yield* queryOpenAIChatCompletions({
540887
541047
  messagesForAPI: zenMessagesForAPI,
540888
541048
  system,
@@ -540900,7 +541060,7 @@ ${deferredToolList}
540900
541060
  });
540901
541061
  return;
540902
541062
  }
540903
- if (currentProviderProtocol === "openai-responses") {
541063
+ if (currentProviderProtocol === "responses") {
540904
541064
  yield* queryOpenAIResponses({
540905
541065
  messagesForAPI: zenMessagesForAPI,
540906
541066
  system,
@@ -542119,7 +542279,7 @@ async function sideQuery(opts) {
542119
542279
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
542120
542280
  }
542121
542281
  const messageText = extractFirstUserMessageText(messages);
542122
- const fingerprint = computeFingerprint(messageText, "v2.1.88.1.beta0");
542282
+ const fingerprint = computeFingerprint(messageText, "1.0.2");
542123
542283
  const attributionHeader = getAttributionHeader(fingerprint);
542124
542284
  const systemBlocks = [
542125
542285
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -544959,21 +545119,8 @@ var init_managedEnvConstants = __esm(() => {
544959
545119
  "CLAUDE_CODE_SKIP_VERTEX_AUTH",
544960
545120
  "CLAUDE_CODE_SKIP_FOUNDRY_AUTH",
544961
545121
  "ANTHROPIC_MODEL",
544962
- "ANTHROPIC_DEFAULT_HAIKU_MODEL",
544963
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION",
544964
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME",
544965
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES",
544966
- "ANTHROPIC_DEFAULT_OPUS_MODEL",
544967
- "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION",
544968
- "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME",
544969
- "ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES",
544970
- "ANTHROPIC_DEFAULT_SONNET_MODEL",
544971
- "ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION",
544972
- "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME",
544973
- "ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES",
544974
545122
  "ANTHROPIC_SMALL_FAST_MODEL",
544975
- "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION",
544976
- "CLAUDE_CODE_SUBAGENT_MODEL"
545123
+ "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION"
544977
545124
  ]);
544978
545125
  PROVIDER_MANAGED_ENV_PREFIXES = [
544979
545126
  "VERTEX_REGION_CLAUDE_"
@@ -544983,18 +545130,6 @@ var init_managedEnvConstants = __esm(() => {
544983
545130
  "ANTHROPIC_CUSTOM_MODEL_OPTION",
544984
545131
  "ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION",
544985
545132
  "ANTHROPIC_CUSTOM_MODEL_OPTION_NAME",
544986
- "ANTHROPIC_DEFAULT_HAIKU_MODEL",
544987
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION",
544988
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME",
544989
- "ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES",
544990
- "ANTHROPIC_DEFAULT_OPUS_MODEL",
544991
- "ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION",
544992
- "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME",
544993
- "ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES",
544994
- "ANTHROPIC_DEFAULT_SONNET_MODEL",
544995
- "ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION",
544996
- "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME",
544997
- "ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES",
544998
545133
  "ANTHROPIC_FOUNDRY_API_KEY",
544999
545134
  "ANTHROPIC_MODEL",
545000
545135
  "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION",
@@ -545017,7 +545152,6 @@ var init_managedEnvConstants = __esm(() => {
545017
545152
  "CLAUDE_CODE_SKIP_BEDROCK_AUTH",
545018
545153
  "CLAUDE_CODE_SKIP_FOUNDRY_AUTH",
545019
545154
  "CLAUDE_CODE_SKIP_VERTEX_AUTH",
545020
- "CLAUDE_CODE_SUBAGENT_MODEL",
545021
545155
  "CLAUDE_CODE_USE_BEDROCK",
545022
545156
  "CLAUDE_CODE_USE_FOUNDRY",
545023
545157
  "CLAUDE_CODE_USE_VERTEX",
@@ -547109,7 +547243,7 @@ function buildSystemInitMessage(inputs) {
547109
547243
  slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
547110
547244
  apiKeySource: getAnthropicApiKeyWithSource().source,
547111
547245
  betas: getSdkBetas(),
547112
- claude_code_version: "v2.1.88.1.beta0",
547246
+ claude_code_version: "1.0.2",
547113
547247
  output_style: outputStyle2,
547114
547248
  agents: inputs.agents.map((agent) => agent.agentType),
547115
547249
  skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
@@ -561922,7 +562056,7 @@ var init_useVoiceEnabled = __esm(() => {
561922
562056
  function getSemverPart(version2) {
561923
562057
  return `${import_semver13.major(version2, { loose: true })}.${import_semver13.minor(version2, { loose: true })}.${import_semver13.patch(version2, { loose: true })}`;
561924
562058
  }
561925
- function useUpdateNotification(updatedVersion, initialVersion = "v2.1.88.1.beta0") {
562059
+ function useUpdateNotification(updatedVersion, initialVersion = "1.0.2") {
561926
562060
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
561927
562061
  if (!updatedVersion) {
561928
562062
  return null;
@@ -561962,7 +562096,7 @@ function AutoUpdater({
561962
562096
  return;
561963
562097
  }
561964
562098
  if (false) {}
561965
- const currentVersion = "v2.1.88.1.beta0";
562099
+ const currentVersion = "1.0.2";
561966
562100
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
561967
562101
  let latestVersion = await getLatestVersion(channel);
561968
562102
  const isDisabled = isAutoUpdaterDisabled();
@@ -562175,12 +562309,12 @@ function NativeAutoUpdater({
562175
562309
  logEvent("tengu_native_auto_updater_start", {});
562176
562310
  try {
562177
562311
  const maxVersion = await getMaxVersion();
562178
- if (maxVersion && gt("v2.1.88.1.beta0", maxVersion)) {
562312
+ if (maxVersion && gt("1.0.2", maxVersion)) {
562179
562313
  const msg = await getMaxVersionMessage();
562180
562314
  setMaxVersionIssue(msg ?? "affects your version");
562181
562315
  }
562182
562316
  const result = await installLatest(channel);
562183
- const currentVersion = "v2.1.88.1.beta0";
562317
+ const currentVersion = "1.0.2";
562184
562318
  const latencyMs = Date.now() - startTime;
562185
562319
  if (result.lockFailed) {
562186
562320
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -562317,17 +562451,17 @@ function PackageManagerAutoUpdater(t0) {
562317
562451
  const maxVersion = await getMaxVersion();
562318
562452
  if (maxVersion && latest && gt(latest, maxVersion)) {
562319
562453
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
562320
- if (gte("v2.1.88.1.beta0", maxVersion)) {
562321
- logForDebugging(`PackageManagerAutoUpdater: current version ${"v2.1.88.1.beta0"} is already at or above maxVersion ${maxVersion}, skipping update`);
562454
+ if (gte("1.0.2", maxVersion)) {
562455
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.2"} is already at or above maxVersion ${maxVersion}, skipping update`);
562322
562456
  setUpdateAvailable(false);
562323
562457
  return;
562324
562458
  }
562325
562459
  latest = maxVersion;
562326
562460
  }
562327
- const hasUpdate = latest && !gte("v2.1.88.1.beta0", latest) && !shouldSkipVersion(latest);
562461
+ const hasUpdate = latest && !gte("1.0.2", latest) && !shouldSkipVersion(latest);
562328
562462
  setUpdateAvailable(!!hasUpdate);
562329
562463
  if (hasUpdate) {
562330
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"v2.1.88.1.beta0"} -> ${latest}`);
562464
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.2"} -> ${latest}`);
562331
562465
  }
562332
562466
  };
562333
562467
  $3[0] = t1;
@@ -562361,7 +562495,7 @@ function PackageManagerAutoUpdater(t0) {
562361
562495
  wrap: "truncate",
562362
562496
  children: [
562363
562497
  "currentVersion: ",
562364
- "v2.1.88.1.beta0"
562498
+ "1.0.2"
562365
562499
  ]
562366
562500
  });
562367
562501
  $3[3] = verbose;
@@ -569873,7 +570007,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
569873
570007
  project_dir: getOriginalCwd(),
569874
570008
  added_dirs: addedDirs
569875
570009
  },
569876
- version: "v2.1.88.1.beta0",
570010
+ version: "1.0.2",
569877
570011
  output_style: {
569878
570012
  name: outputStyleName
569879
570013
  },
@@ -590494,7 +590628,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
590494
590628
  } catch {}
590495
590629
  const data = {
590496
590630
  trigger,
590497
- version: "v2.1.88.1.beta0",
590631
+ version: "1.0.2",
590498
590632
  platform: process.platform,
590499
590633
  transcript,
590500
590634
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -602455,7 +602589,7 @@ function WelcomeV2() {
602455
602589
  dimColor: true,
602456
602590
  children: [
602457
602591
  "v",
602458
- "v2.1.88.1.beta0",
602592
+ "1.0.2",
602459
602593
  " "
602460
602594
  ]
602461
602595
  })
@@ -602655,7 +602789,7 @@ function WelcomeV2() {
602655
602789
  dimColor: true,
602656
602790
  children: [
602657
602791
  "v",
602658
- "v2.1.88.1.beta0",
602792
+ "1.0.2",
602659
602793
  " "
602660
602794
  ]
602661
602795
  })
@@ -602881,7 +603015,7 @@ function AppleTerminalWelcomeV2(t0) {
602881
603015
  dimColor: true,
602882
603016
  children: [
602883
603017
  "v",
602884
- "v2.1.88.1.beta0",
603018
+ "1.0.2",
602885
603019
  " "
602886
603020
  ]
602887
603021
  });
@@ -603135,7 +603269,7 @@ function AppleTerminalWelcomeV2(t0) {
603135
603269
  dimColor: true,
603136
603270
  children: [
603137
603271
  "v",
603138
- "v2.1.88.1.beta0",
603272
+ "1.0.2",
603139
603273
  " "
603140
603274
  ]
603141
603275
  });
@@ -604639,7 +604773,7 @@ function completeOnboarding() {
604639
604773
  saveGlobalConfig((current) => ({
604640
604774
  ...current,
604641
604775
  hasCompletedOnboarding: true,
604642
- lastOnboardingVersion: "v2.1.88.1.beta0"
604776
+ lastOnboardingVersion: "1.0.2"
604643
604777
  }));
604644
604778
  }
604645
604779
  function showDialog(root2, renderer) {
@@ -609127,7 +609261,7 @@ function appendToLog(path22, message) {
609127
609261
  cwd: getFsImplementation().cwd(),
609128
609262
  userType: process.env.USER_TYPE,
609129
609263
  sessionId: getSessionId(),
609130
- version: "v2.1.88.1.beta0"
609264
+ version: "1.0.2"
609131
609265
  };
609132
609266
  getLogWriter(path22).write(messageWithTimestamp);
609133
609267
  }
@@ -612714,8 +612848,8 @@ async function getEnvLessBridgeConfig() {
612714
612848
  }
612715
612849
  async function checkEnvLessBridgeMinVersion() {
612716
612850
  const cfg = await getEnvLessBridgeConfig();
612717
- if (cfg.min_version && lt("v2.1.88.1.beta0", cfg.min_version)) {
612718
- return `Your version of Jieee Coder (${"v2.1.88.1.beta0"}) is too old for Remote Control.
612851
+ if (cfg.min_version && lt("1.0.2", cfg.min_version)) {
612852
+ return `Your version of Jieee Coder (${"1.0.2"}) is too old for Remote Control.
612719
612853
  Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
612720
612854
  }
612721
612855
  return null;
@@ -613188,7 +613322,7 @@ async function initBridgeCore(params) {
613188
613322
  const rawApi = createBridgeApiClient({
613189
613323
  baseUrl,
613190
613324
  getAccessToken,
613191
- runnerVersion: "v2.1.88.1.beta0",
613325
+ runnerVersion: "1.0.2",
613192
613326
  onDebug: logForDebugging,
613193
613327
  onAuth401,
613194
613328
  getTrustedDeviceToken
@@ -618852,7 +618986,7 @@ async function startMCPServer(cwd3, debug2, verbose) {
618852
618986
  setCwd(cwd3);
618853
618987
  const server = new Server({
618854
618988
  name: "claude/tengu",
618855
- version: "v2.1.88.1.beta0"
618989
+ version: "1.0.2"
618856
618990
  }, {
618857
618991
  capabilities: {
618858
618992
  tools: {}
@@ -620464,7 +620598,7 @@ __export(exports_update, {
620464
620598
  });
620465
620599
  async function update() {
620466
620600
  logEvent("tengu_update_check", {});
620467
- writeToStdout(`Current version: ${"v2.1.88.1.beta0"}
620601
+ writeToStdout(`Current version: ${"1.0.2"}
620468
620602
  `);
620469
620603
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
620470
620604
  writeToStdout(`Checking for updates to ${channel} version...
@@ -620539,8 +620673,8 @@ async function update() {
620539
620673
  writeToStdout(`Claude is managed by Homebrew.
620540
620674
  `);
620541
620675
  const latest = await getLatestVersion(channel);
620542
- if (latest && !gte("v2.1.88.1.beta0", latest)) {
620543
- writeToStdout(`Update available: ${"v2.1.88.1.beta0"} → ${latest}
620676
+ if (latest && !gte("1.0.2", latest)) {
620677
+ writeToStdout(`Update available: ${"1.0.2"} → ${latest}
620544
620678
  `);
620545
620679
  writeToStdout(`
620546
620680
  `);
@@ -620556,8 +620690,8 @@ async function update() {
620556
620690
  writeToStdout(`Claude is managed by winget.
620557
620691
  `);
620558
620692
  const latest = await getLatestVersion(channel);
620559
- if (latest && !gte("v2.1.88.1.beta0", latest)) {
620560
- writeToStdout(`Update available: ${"v2.1.88.1.beta0"} → ${latest}
620693
+ if (latest && !gte("1.0.2", latest)) {
620694
+ writeToStdout(`Update available: ${"1.0.2"} → ${latest}
620561
620695
  `);
620562
620696
  writeToStdout(`
620563
620697
  `);
@@ -620573,8 +620707,8 @@ async function update() {
620573
620707
  writeToStdout(`Claude is managed by apk.
620574
620708
  `);
620575
620709
  const latest = await getLatestVersion(channel);
620576
- if (latest && !gte("v2.1.88.1.beta0", latest)) {
620577
- writeToStdout(`Update available: ${"v2.1.88.1.beta0"} → ${latest}
620710
+ if (latest && !gte("1.0.2", latest)) {
620711
+ writeToStdout(`Update available: ${"1.0.2"} → ${latest}
620578
620712
  `);
620579
620713
  writeToStdout(`
620580
620714
  `);
@@ -620639,11 +620773,11 @@ async function update() {
620639
620773
  `);
620640
620774
  await gracefulShutdown(1);
620641
620775
  }
620642
- if (result.latestVersion === "v2.1.88.1.beta0") {
620643
- writeToStdout(source_default.green(`Jieee Coder is up to date (${"v2.1.88.1.beta0"})`) + `
620776
+ if (result.latestVersion === "1.0.2") {
620777
+ writeToStdout(source_default.green(`Jieee Coder is up to date (${"1.0.2"})`) + `
620644
620778
  `);
620645
620779
  } else {
620646
- writeToStdout(source_default.green(`Successfully updated from ${"v2.1.88.1.beta0"} to version ${result.latestVersion}`) + `
620780
+ writeToStdout(source_default.green(`Successfully updated from ${"1.0.2"} to version ${result.latestVersion}`) + `
620647
620781
  `);
620648
620782
  await regenerateCompletionCache();
620649
620783
  }
@@ -620703,12 +620837,12 @@ async function update() {
620703
620837
  `);
620704
620838
  await gracefulShutdown(1);
620705
620839
  }
620706
- if (latestVersion === "v2.1.88.1.beta0") {
620707
- writeToStdout(source_default.green(`Jieee Coder is up to date (${"v2.1.88.1.beta0"})`) + `
620840
+ if (latestVersion === "1.0.2") {
620841
+ writeToStdout(source_default.green(`Jieee Coder is up to date (${"1.0.2"})`) + `
620708
620842
  `);
620709
620843
  await gracefulShutdown(0);
620710
620844
  }
620711
- writeToStdout(`New version available: ${latestVersion} (current: ${"v2.1.88.1.beta0"})
620845
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.2"})
620712
620846
  `);
620713
620847
  writeToStdout(`Installing update...
620714
620848
  `);
@@ -620753,7 +620887,7 @@ async function update() {
620753
620887
  logForDebugging(`update: Installation status: ${status2}`);
620754
620888
  switch (status2) {
620755
620889
  case "success":
620756
- writeToStdout(source_default.green(`Successfully updated from ${"v2.1.88.1.beta0"} to version ${latestVersion}`) + `
620890
+ writeToStdout(source_default.green(`Successfully updated from ${"1.0.2"} to version ${latestVersion}`) + `
620757
620891
  `);
620758
620892
  await regenerateCompletionCache();
620759
620893
  break;
@@ -621146,7 +621280,7 @@ async function run() {
621146
621280
  await init();
621147
621281
  profileCheckpoint("preAction_after_init");
621148
621282
  if (!isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_TERMINAL_TITLE)) {
621149
- process.title = "claude";
621283
+ process.title = "jcode";
621150
621284
  }
621151
621285
  const {
621152
621286
  initSinks: initSinks2
@@ -621997,7 +622131,7 @@ ${customInstructions}` : customInstructions;
621997
622131
  }
621998
622132
  }
621999
622133
  logForDiagnosticsNoPII("info", "started", {
622000
- version: "v2.1.88.1.beta0",
622134
+ version: "1.0.2",
622001
622135
  is_native_binary: isInBundledMode()
622002
622136
  });
622003
622137
  registerCleanup(async () => {
@@ -622781,7 +622915,7 @@ Usage: claude --remote "your task description"`, () => gracefulShutdown(1));
622781
622915
  pendingHookMessages
622782
622916
  }, renderAndRun);
622783
622917
  }
622784
- }).version("v2.1.88.1.beta0 (Jieee Coder)", "-v, --version", "Output the version number");
622918
+ }).version("1.0.2 (Jieee Coder)", "-v, --version", "Output the version number");
622785
622919
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
622786
622920
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
622787
622921
  if (canUserConfigureAdvisor()) {
@@ -623294,7 +623428,7 @@ if (false) {}
623294
623428
  async function main2() {
623295
623429
  const args = process.argv.slice(2);
623296
623430
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
623297
- console.log(`${"v2.1.88.1.beta0"} (Jieee Coder)`);
623431
+ console.log(`${"1.0.2"} (Jieee Coder)`);
623298
623432
  return;
623299
623433
  }
623300
623434
  const {
@@ -623378,5 +623512,5 @@ async function main2() {
623378
623512
  }
623379
623513
  main2();
623380
623514
 
623381
- //# debugId=862940EF4978151564756E2164756E21
623515
+ //# debugId=E6858C311518419D64756E2164756E21
623382
623516
  //# sourceMappingURL=cli.js.map