llmist 15.8.1 → 15.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -7972,22 +7972,24 @@ var init_openrouter_models = __esm({
7972
7972
  provider: "openrouter",
7973
7973
  modelId: "google/gemini-2.5-flash",
7974
7974
  displayName: "Gemini 2.5 Flash (OpenRouter)",
7975
- contextWindow: 1e6,
7976
- maxOutputTokens: 65536,
7975
+ contextWindow: 1048576,
7976
+ maxOutputTokens: 65535,
7977
7977
  pricing: {
7978
- input: 0.15,
7979
- output: 0.6
7978
+ input: 0.3,
7979
+ output: 2.5
7980
7980
  },
7981
- knowledgeCutoff: "2025-01",
7981
+ knowledgeCutoff: "2025-06",
7982
7982
  features: {
7983
7983
  streaming: true,
7984
7984
  functionCalling: true,
7985
7985
  vision: true,
7986
- reasoning: true
7986
+ reasoning: true,
7987
+ structuredOutputs: true
7987
7988
  },
7988
7989
  metadata: {
7989
7990
  family: "Gemini 2.5",
7990
- notes: "Google Gemini 2.5 Flash via OpenRouter. Fast and cost-effective."
7991
+ releaseDate: "2025-06-17",
7992
+ notes: "Google Gemini 2.5 Flash via OpenRouter. Workhorse model for reasoning, coding, and math."
7991
7993
  }
7992
7994
  },
7993
7995
  {
@@ -8012,6 +8014,54 @@ var init_openrouter_models = __esm({
8012
8014
  notes: "Google Gemini 2.5 Pro via OpenRouter."
8013
8015
  }
8014
8016
  },
8017
+ {
8018
+ provider: "openrouter",
8019
+ modelId: "google/gemini-3-pro-preview",
8020
+ displayName: "Gemini 3 Pro Preview (OpenRouter)",
8021
+ contextWindow: 1048576,
8022
+ maxOutputTokens: 65536,
8023
+ pricing: {
8024
+ input: 2,
8025
+ output: 12
8026
+ },
8027
+ knowledgeCutoff: "2025-11",
8028
+ features: {
8029
+ streaming: true,
8030
+ functionCalling: true,
8031
+ vision: true,
8032
+ reasoning: true,
8033
+ structuredOutputs: true
8034
+ },
8035
+ metadata: {
8036
+ family: "Gemini 3",
8037
+ releaseDate: "2025-11-18",
8038
+ notes: "Gemini 3 Pro Preview via OpenRouter. Flagship frontier model for multimodal reasoning."
8039
+ }
8040
+ },
8041
+ {
8042
+ provider: "openrouter",
8043
+ modelId: "google/gemini-3-flash-preview",
8044
+ displayName: "Gemini 3 Flash Preview (OpenRouter)",
8045
+ contextWindow: 1048576,
8046
+ maxOutputTokens: 65535,
8047
+ pricing: {
8048
+ input: 0.5,
8049
+ output: 3
8050
+ },
8051
+ knowledgeCutoff: "2025-12",
8052
+ features: {
8053
+ streaming: true,
8054
+ functionCalling: true,
8055
+ vision: true,
8056
+ reasoning: true,
8057
+ structuredOutputs: true
8058
+ },
8059
+ metadata: {
8060
+ family: "Gemini 3",
8061
+ releaseDate: "2025-12-17",
8062
+ notes: "Gemini 3 Flash Preview via OpenRouter. High-speed thinking model for agentic workflows."
8063
+ }
8064
+ },
8015
8065
  // ============================================================
8016
8066
  // Meta Llama Models (via OpenRouter)
8017
8067
  // ============================================================
@@ -8103,6 +8153,29 @@ var init_openrouter_models = __esm({
8103
8153
  notes: "DeepSeek Chat via OpenRouter. Very cost-effective."
8104
8154
  }
8105
8155
  },
8156
+ {
8157
+ provider: "openrouter",
8158
+ modelId: "deepseek/deepseek-v3.2",
8159
+ displayName: "DeepSeek V3.2 (OpenRouter)",
8160
+ contextWindow: 163840,
8161
+ maxOutputTokens: 65536,
8162
+ pricing: {
8163
+ input: 0.25,
8164
+ output: 0.38
8165
+ },
8166
+ knowledgeCutoff: "2025-12",
8167
+ features: {
8168
+ streaming: true,
8169
+ functionCalling: true,
8170
+ vision: false,
8171
+ reasoning: true
8172
+ },
8173
+ metadata: {
8174
+ family: "DeepSeek V3.2",
8175
+ releaseDate: "2025-12-01",
8176
+ notes: "DeepSeek V3.2 via OpenRouter. GPT-5 class performance with DeepSeek Sparse Attention."
8177
+ }
8178
+ },
8106
8179
  // ============================================================
8107
8180
  // Mistral Models (via OpenRouter)
8108
8181
  // ============================================================
@@ -9158,6 +9231,7 @@ var init_builder = __esm({
9158
9231
  textOnlyHandler;
9159
9232
  textWithGadgetsHandler;
9160
9233
  defaultGadgetTimeoutMs;
9234
+ gadgetExecutionMode;
9161
9235
  gadgetOutputLimit;
9162
9236
  gadgetOutputLimitPercent;
9163
9237
  compactionConfig;
@@ -9533,6 +9607,29 @@ var init_builder = __esm({
9533
9607
  this.defaultGadgetTimeoutMs = timeoutMs;
9534
9608
  return this;
9535
9609
  }
9610
+ /**
9611
+ * Set the gadget execution mode.
9612
+ *
9613
+ * Controls how multiple gadgets are executed when the LLM calls them:
9614
+ * - `'parallel'` (default): Gadgets without dependencies execute concurrently
9615
+ * - `'sequential'`: Gadgets execute one at a time, each awaiting completion
9616
+ *
9617
+ * @param mode - Execution mode ('parallel' or 'sequential')
9618
+ * @returns This builder for chaining
9619
+ *
9620
+ * @example
9621
+ * ```typescript
9622
+ * // Sequential execution for ordered file operations
9623
+ * .withGadgetExecutionMode('sequential')
9624
+ *
9625
+ * // Parallel execution (default) for independent operations
9626
+ * .withGadgetExecutionMode('parallel')
9627
+ * ```
9628
+ */
9629
+ withGadgetExecutionMode(mode) {
9630
+ this.gadgetExecutionMode = mode;
9631
+ return this;
9632
+ }
9536
9633
  /**
9537
9634
  * Enable or disable gadget output limiting.
9538
9635
  *
@@ -10013,6 +10110,7 @@ ${endPrefix}`
10013
10110
  textOnlyHandler: this.textOnlyHandler,
10014
10111
  textWithGadgetsHandler: this.textWithGadgetsHandler,
10015
10112
  defaultGadgetTimeoutMs: this.defaultGadgetTimeoutMs,
10113
+ gadgetExecutionMode: this.gadgetExecutionMode,
10016
10114
  gadgetOutputLimit: this.gadgetOutputLimit,
10017
10115
  gadgetOutputLimitPercent: this.gadgetOutputLimitPercent,
10018
10116
  compactionConfig: this.compactionConfig,
@@ -10199,6 +10297,7 @@ ${endPrefix}`
10199
10297
  textOnlyHandler: this.textOnlyHandler,
10200
10298
  textWithGadgetsHandler: this.textWithGadgetsHandler,
10201
10299
  defaultGadgetTimeoutMs: this.defaultGadgetTimeoutMs,
10300
+ gadgetExecutionMode: this.gadgetExecutionMode,
10202
10301
  gadgetOutputLimit: this.gadgetOutputLimit,
10203
10302
  gadgetOutputLimitPercent: this.gadgetOutputLimitPercent,
10204
10303
  compactionConfig: this.compactionConfig,
@@ -11795,6 +11894,8 @@ var init_stream_processor = __esm({
11795
11894
  tree;
11796
11895
  parentNodeId;
11797
11896
  baseDepth;
11897
+ // Gadget execution mode
11898
+ gadgetExecutionMode;
11798
11899
  responseText = "";
11799
11900
  observerFailureCount = 0;
11800
11901
  // Dependency tracking for gadget execution DAG
@@ -11830,6 +11931,7 @@ var init_stream_processor = __esm({
11830
11931
  this.tree = options.tree;
11831
11932
  this.parentNodeId = options.parentNodeId ?? null;
11832
11933
  this.baseDepth = options.baseDepth ?? 0;
11934
+ this.gadgetExecutionMode = options.gadgetExecutionMode ?? "parallel";
11833
11935
  this.priorCompletedInvocations = options.priorCompletedInvocations ?? /* @__PURE__ */ new Set();
11834
11936
  this.priorFailedInvocations = options.priorFailedInvocations ?? /* @__PURE__ */ new Set();
11835
11937
  this.subagentConfig = options.subagentConfig;
@@ -12141,7 +12243,13 @@ var init_stream_processor = __esm({
12141
12243
  this.concurrencyQueue.set(call.gadgetName, queue);
12142
12244
  return;
12143
12245
  }
12144
- this.startGadgetWithConcurrencyTracking(call);
12246
+ if (this.gadgetExecutionMode === "sequential") {
12247
+ for await (const evt of this.executeGadgetGenerator(call)) {
12248
+ yield evt;
12249
+ }
12250
+ } else {
12251
+ this.startGadgetWithConcurrencyTracking(call);
12252
+ }
12145
12253
  }
12146
12254
  /**
12147
12255
  * Get the effective concurrency limit for a gadget.
@@ -12593,25 +12701,37 @@ var init_stream_processor = __esm({
12593
12701
  progress = true;
12594
12702
  }
12595
12703
  if (readyToExecute.length > 0) {
12596
- this.logger.debug("Executing ready gadgets in parallel", {
12597
- count: readyToExecute.length,
12598
- invocationIds: readyToExecute.map((c) => c.invocationId)
12599
- });
12600
12704
  for (const call of readyToExecute) {
12601
12705
  this.gadgetsAwaitingDependencies.delete(call.invocationId);
12602
12706
  }
12603
- const eventSets = await Promise.all(
12604
- readyToExecute.map(async (call) => {
12605
- const events = [];
12707
+ if (this.gadgetExecutionMode === "sequential") {
12708
+ this.logger.debug("Executing ready gadgets sequentially", {
12709
+ count: readyToExecute.length,
12710
+ invocationIds: readyToExecute.map((c) => c.invocationId)
12711
+ });
12712
+ for (const call of readyToExecute) {
12606
12713
  for await (const evt of this.executeGadgetGenerator(call)) {
12607
- events.push(evt);
12714
+ yield evt;
12715
+ }
12716
+ }
12717
+ } else {
12718
+ this.logger.debug("Executing ready gadgets in parallel", {
12719
+ count: readyToExecute.length,
12720
+ invocationIds: readyToExecute.map((c) => c.invocationId)
12721
+ });
12722
+ const eventSets = await Promise.all(
12723
+ readyToExecute.map(async (call) => {
12724
+ const events = [];
12725
+ for await (const evt of this.executeGadgetGenerator(call)) {
12726
+ events.push(evt);
12727
+ }
12728
+ return events;
12729
+ })
12730
+ );
12731
+ for (const events of eventSets) {
12732
+ for (const evt of events) {
12733
+ yield evt;
12608
12734
  }
12609
- return events;
12610
- })
12611
- );
12612
- for (const events of eventSets) {
12613
- for (const evt of events) {
12614
- yield evt;
12615
12735
  }
12616
12736
  }
12617
12737
  progress = true;
@@ -12765,6 +12885,7 @@ var init_agent = __esm({
12765
12885
  textOnlyHandler;
12766
12886
  textWithGadgetsHandler;
12767
12887
  defaultGadgetTimeoutMs;
12888
+ gadgetExecutionMode;
12768
12889
  defaultMaxTokens;
12769
12890
  hasUserPrompt;
12770
12891
  // Gadget output limiting
@@ -12820,6 +12941,7 @@ var init_agent = __esm({
12820
12941
  this.textOnlyHandler = options.textOnlyHandler ?? "terminate";
12821
12942
  this.textWithGadgetsHandler = options.textWithGadgetsHandler;
12822
12943
  this.defaultGadgetTimeoutMs = options.defaultGadgetTimeoutMs;
12944
+ this.gadgetExecutionMode = options.gadgetExecutionMode ?? "parallel";
12823
12945
  this.defaultMaxTokens = this.resolveMaxTokensFromCatalog(options.model);
12824
12946
  this.outputLimitEnabled = options.gadgetOutputLimit ?? DEFAULT_GADGET_OUTPUT_LIMIT;
12825
12947
  this.outputStore = new GadgetOutputStore();
@@ -13151,6 +13273,7 @@ var init_agent = __esm({
13151
13273
  logger: this.logger.getSubLogger({ name: "stream-processor" }),
13152
13274
  requestHumanInput: this.requestHumanInput,
13153
13275
  defaultGadgetTimeoutMs: this.defaultGadgetTimeoutMs,
13276
+ gadgetExecutionMode: this.gadgetExecutionMode,
13154
13277
  client: this.client,
13155
13278
  mediaStore: this.mediaStore,
13156
13279
  agentConfig: this.agentContextConfig,