cascade-ai 0.2.11 → 0.2.12

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.d.cts CHANGED
@@ -1581,7 +1581,7 @@ declare class Telemetry {
1581
1581
  shutdown(): Promise<void>;
1582
1582
  }
1583
1583
 
1584
- declare const CASCADE_VERSION = "0.2.11";
1584
+ declare const CASCADE_VERSION = "0.2.12";
1585
1585
  declare const CASCADE_CONFIG_DIR = ".cascade";
1586
1586
  declare const CASCADE_MD_FILE = "CASCADE.md";
1587
1587
  declare const CASCADE_IGNORE_FILE = ".cascadeignore";
package/dist/index.d.ts CHANGED
@@ -1581,7 +1581,7 @@ declare class Telemetry {
1581
1581
  shutdown(): Promise<void>;
1582
1582
  }
1583
1583
 
1584
- declare const CASCADE_VERSION = "0.2.11";
1584
+ declare const CASCADE_VERSION = "0.2.12";
1585
1585
  declare const CASCADE_CONFIG_DIR = ".cascade";
1586
1586
  declare const CASCADE_MD_FILE = "CASCADE.md";
1587
1587
  declare const CASCADE_IGNORE_FILE = ".cascadeignore";
package/dist/index.js CHANGED
@@ -124,7 +124,7 @@ var require_keytar2 = __commonJS({
124
124
  });
125
125
 
126
126
  // src/constants.ts
127
- var CASCADE_VERSION = "0.2.11";
127
+ var CASCADE_VERSION = "0.2.12";
128
128
  var CASCADE_CONFIG_DIR = ".cascade";
129
129
  var CASCADE_MD_FILE = "CASCADE.md";
130
130
  var CASCADE_IGNORE_FILE = ".cascadeignore";
@@ -506,17 +506,38 @@ var AnthropicProvider = class extends BaseProvider {
506
506
  messages,
507
507
  tools: tools?.length ? tools : void 0
508
508
  });
509
+ let isThinking = false;
509
510
  for await (const event of stream) {
510
- if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
511
- const text = event.delta.text;
512
- fullContent += text;
513
- onChunk({ text, finishReason: null });
511
+ if (event.type === "content_block_delta") {
512
+ if (event.delta.type === "thinking_delta") {
513
+ if (!isThinking) {
514
+ isThinking = true;
515
+ fullContent += "<think>\n";
516
+ onChunk({ text: "<think>\n", finishReason: null });
517
+ }
518
+ const text = event.delta.thinking;
519
+ fullContent += text;
520
+ onChunk({ text, finishReason: null });
521
+ } else if (event.delta.type === "text_delta") {
522
+ if (isThinking) {
523
+ isThinking = false;
524
+ fullContent += "\n</think>\n\n";
525
+ onChunk({ text: "\n</think>\n\n", finishReason: null });
526
+ }
527
+ const text = event.delta.text;
528
+ fullContent += text;
529
+ onChunk({ text, finishReason: null });
530
+ }
514
531
  } else if (event.type === "message_delta" && event.usage) {
515
532
  outputTokens = event.usage.output_tokens;
516
533
  } else if (event.type === "message_start" && event.message.usage) {
517
534
  inputTokens = event.message.usage.input_tokens;
518
535
  }
519
536
  }
537
+ if (isThinking) {
538
+ fullContent += "\n</think>\n\n";
539
+ onChunk({ text: "\n</think>\n\n", finishReason: null });
540
+ }
520
541
  const finalMessage = await stream.finalMessage();
521
542
  const toolCalls = finalMessage.content.filter((b) => b.type === "tool_use").map((b) => ({
522
543
  id: b.id,
@@ -687,9 +708,25 @@ var OpenAIProvider = class extends BaseProvider {
687
708
  }
688
709
  }
689
710
  const toolCallsMap = {};
711
+ let isThinking = false;
690
712
  for await (const chunk of stream) {
691
713
  const delta = chunk.choices[0]?.delta;
714
+ const reasoningContent = delta?.reasoning_content;
715
+ if (reasoningContent) {
716
+ if (!isThinking) {
717
+ isThinking = true;
718
+ fullContent += "<think>\n";
719
+ onChunk({ text: "<think>\n", finishReason: null });
720
+ }
721
+ fullContent += reasoningContent;
722
+ onChunk({ text: reasoningContent, finishReason: null });
723
+ }
692
724
  if (delta?.content) {
725
+ if (isThinking) {
726
+ isThinking = false;
727
+ fullContent += "\n</think>\n\n";
728
+ onChunk({ text: "\n</think>\n\n", finishReason: null });
729
+ }
693
730
  fullContent += delta.content;
694
731
  onChunk({ text: delta.content, finishReason: null });
695
732
  }
@@ -712,6 +749,10 @@ var OpenAIProvider = class extends BaseProvider {
712
749
  outputTokens = chunk.usage.completion_tokens;
713
750
  }
714
751
  }
752
+ if (isThinking) {
753
+ fullContent += "\n</think>\n\n";
754
+ onChunk({ text: "\n</think>\n\n", finishReason: null });
755
+ }
715
756
  const toolCalls = Object.values(toolCallsMap).map((tc) => {
716
757
  let input = {};
717
758
  try {
@@ -7388,6 +7429,7 @@ var ConfigManager = class {
7388
7429
  }
7389
7430
  }
7390
7431
  async injectEnvKeys() {
7432
+ const isFirstRun = this.config.providers.length === 0;
7391
7433
  const envProviders = [
7392
7434
  { env: "ANTHROPIC_API_KEY", type: "anthropic" },
7393
7435
  { env: "OPENAI_API_KEY", type: "openai" },
@@ -7398,10 +7440,13 @@ var ConfigManager = class {
7398
7440
  const key = process.env[env];
7399
7441
  if (!key) continue;
7400
7442
  const existing = this.config.providers.find((p) => p.type === type);
7401
- if (!existing) this.config.providers.push({ type, apiKey: key });
7402
- else if (!existing.apiKey) existing.apiKey = key;
7443
+ if (!existing && isFirstRun) {
7444
+ this.config.providers.push({ type, apiKey: key });
7445
+ } else if (existing && !existing.apiKey) {
7446
+ existing.apiKey = key;
7447
+ }
7403
7448
  }
7404
- if (!this.config.providers.find((p) => p.type === "ollama")) {
7449
+ if (isFirstRun && !this.config.providers.find((p) => p.type === "ollama")) {
7405
7450
  this.config.providers.push({ type: "ollama" });
7406
7451
  }
7407
7452
  }