jeopi-cli 16.4.0 → 16.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "jeopi-cli",
4
- "version": "16.4.0",
4
+ "version": "16.4.1",
5
5
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://github.com/akillness/jeopi",
7
7
  "author": "Can Boluk",
@@ -57,17 +57,17 @@
57
57
  "@agentclientprotocol/sdk": "0.25.0",
58
58
  "@babel/parser": "^7.29.7",
59
59
  "@mozilla/readability": "^0.6.0",
60
- "jeopi-hashline": "16.4.0",
61
- "jeopi-stats": "16.4.0",
62
- "jeopi-agent-core": "16.4.0",
63
- "jeopi-ai": "16.4.0",
64
- "jeopi-catalog": "16.4.0",
65
- "jeopi-mnemopi": "16.4.0",
66
- "jeopi-natives": "16.4.0",
67
- "jeopi-tui": "16.4.0",
68
- "jeopi-utils": "16.4.0",
69
- "jeopi-wire": "16.4.0",
70
- "jeopi-snapcompact": "16.4.0",
60
+ "jeopi-hashline": "16.4.1",
61
+ "jeopi-stats": "16.4.1",
62
+ "jeopi-agent-core": "16.4.1",
63
+ "jeopi-ai": "16.4.1",
64
+ "jeopi-catalog": "16.4.1",
65
+ "jeopi-mnemopi": "16.4.1",
66
+ "jeopi-natives": "16.4.1",
67
+ "jeopi-tui": "16.4.1",
68
+ "jeopi-utils": "16.4.1",
69
+ "jeopi-wire": "16.4.1",
70
+ "jeopi-snapcompact": "16.4.1",
71
71
  "@opentelemetry/api": "^1.9.1",
72
72
  "@opentelemetry/context-async-hooks": "^2.7.1",
73
73
  "@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
@@ -109,6 +109,7 @@ import {
109
109
  serviceTierFamily,
110
110
  streamSimple,
111
111
  } from "jeopi-ai";
112
+ import { renderDemotedThinking } from "jeopi-ai/dialect";
112
113
  import * as AIError from "jeopi-ai/error";
113
114
  import { toolWireSchema } from "jeopi-ai/utils/schema";
114
115
  import { GeminiHeaderRunDetector, isGeminiThinkingModel } from "jeopi-ai/utils/thinking-loop";
@@ -3327,6 +3328,15 @@ export class AgentSession {
3327
3328
  * so live render, reload, and Ctrl+L rebuilds keep showing it; `convertToLlm`
3328
3329
  * strips the run from the provider request (incomplete/unsigned thinking is
3329
3330
  * rejected on resend) when this continuity message follows the assistant turn.
3331
+ *
3332
+ * The reasoning text is rendered through {@link renderDemotedThinking} (keyed
3333
+ * off `message.model`, the model resuming the turn in the overwhelming
3334
+ * majority of cases) before it reaches the template — same disguise every
3335
+ * other thinking-replay site in this codebase already applies before
3336
+ * sending a model's own prior reasoning back to it as plaintext. Raw,
3337
+ * undisguised reasoning wrapped in a "your unfinished internal work state"
3338
+ * frame is exactly the shape Anthropic's `reasoning_extraction` classifier
3339
+ * flags; this was the one remaining site that still shipped it undisguised.
3330
3340
  */
3331
3341
  #demoteInterruptedThinkingOnUserInterrupt(
3332
3342
  message: AssistantMessage,
@@ -3335,10 +3345,11 @@ export class AgentSession {
3335
3345
  const demoted = demoteInterruptedThinking(message);
3336
3346
  if (!demoted) return undefined;
3337
3347
  const interruptedAt = Date.now();
3348
+ const disguisedReasoning = renderDemotedThinking(message.model, demoted.reasoning).trimEnd();
3338
3349
  return {
3339
3350
  role: "custom",
3340
3351
  customType: INTERRUPTED_THINKING_MESSAGE_TYPE,
3341
- content: prompt.render(interruptedThinkingTemplate, { reasoning: demoted.reasoning }),
3352
+ content: prompt.render(interruptedThinkingTemplate, { reasoning: disguisedReasoning }),
3342
3353
  display: false,
3343
3354
  details: {
3344
3355
  interruptedAt,