jeo-code 0.6.20 → 0.6.21
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/CHANGELOG.md +9 -0
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/package.json +1 -1
- package/src/agent/engine.ts +7 -0
- package/src/agent/loop.ts +5 -0
- package/src/commands/launch.ts +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,15 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
7
|
The README mirrors the latest 5 entries — regenerate with `bun run changelog:sync`.
|
|
8
|
+
+
|
|
9
|
+
## [0.6.21] - 2026-06-18
|
|
10
|
+
_Session thinking level now reaches the provider's actual reasoning depth, not just the token ceiling._
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **`/thinking`, `--thinking`, and `/fast` now change real provider reasoning depth.** Previously a live session thinking change only adjusted the per-step `maxTokens` budget; the provider's reasoning effort (Anthropic `thinking.budget_tokens`, OpenAI `reasoning_effort`, Gemini `thinkingConfig.thinkingBudget`) still came from the global `~/.jeo/config.json` `thinkingLevel`. `reasoningEffort` is now threaded from the session level through `AgentLoopOptions` → `ChatOptions` → the model manager, so the session setting actually controls how deeply the model reasons. When unset it still falls back to the global config.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **`thinkingToReasoningEffort` mapping test** locking the session-level → provider-tier contract (minimal/low → low, medium → medium, high/xhigh → high, unset → undefined).
|
|
8
17
|
|
|
9
18
|
## [0.6.20] - 2026-06-18
|
|
10
19
|
_Launch REPL internals decomposed into testable modules: `@mention` path completion, slash-command view renderers, and slash-command handlers extracted from the monolithic `launch.ts` into dedicated files with full unit-test coverage._
|
package/README.ja.md
CHANGED
|
@@ -200,11 +200,11 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
|
|
|
200
200
|
## 変更履歴 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.21]** (2026-06-18) — Session thinking level now reaches the provider's actual reasoning depth, not just the token ceiling.
|
|
203
204
|
- **[0.6.20]** (2026-06-18) — Launch REPL internals decomposed into testable modules: `@mention` path completion, slash-command view renderers, and slash-command handlers extracted from the monolithic `launch.ts` into dedicated files with full unit-test coverage.
|
|
204
205
|
- **[0.6.19]** (2026-06-18) — Post-turn hooks run once per batch (not per edit), local hook reads are mtime-cached, tool-result formatting is parallelized, and wrapped colored text keeps its tint.
|
|
205
206
|
- **[0.6.18]** (2026-06-17) — Memory data-flow diagram and a README "Memory flow" section documenting the actual runtime behavior.
|
|
206
207
|
- **[0.6.17]** (2026-06-17) — Legacy MEMORY.md migrates losslessly into the OKF concept bundle, with a one-shot command and a rollback toggle.
|
|
207
|
-
- **[0.6.16]** (2026-06-17) — OKF memory grows a concept cross-link graph: 1-hop search expansion, bundle lint, graphify-optional.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.ko.md
CHANGED
|
@@ -200,11 +200,11 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
|
|
|
200
200
|
## 변경 이력 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.21]** (2026-06-18) — Session thinking level now reaches the provider's actual reasoning depth, not just the token ceiling.
|
|
203
204
|
- **[0.6.20]** (2026-06-18) — Launch REPL internals decomposed into testable modules: `@mention` path completion, slash-command view renderers, and slash-command handlers extracted from the monolithic `launch.ts` into dedicated files with full unit-test coverage.
|
|
204
205
|
- **[0.6.19]** (2026-06-18) — Post-turn hooks run once per batch (not per edit), local hook reads are mtime-cached, tool-result formatting is parallelized, and wrapped colored text keeps its tint.
|
|
205
206
|
- **[0.6.18]** (2026-06-17) — Memory data-flow diagram and a README "Memory flow" section documenting the actual runtime behavior.
|
|
206
207
|
- **[0.6.17]** (2026-06-17) — Legacy MEMORY.md migrates losslessly into the OKF concept bundle, with a one-shot command and a rollback toggle.
|
|
207
|
-
- **[0.6.16]** (2026-06-17) — OKF memory grows a concept cross-link graph: 1-hop search expansion, bundle lint, graphify-optional.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.md
CHANGED
|
@@ -200,11 +200,11 @@ Required npm token permissions (repository secret `NPM_TOKEN`):
|
|
|
200
200
|
## Changelog
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.21]** (2026-06-18) — Session thinking level now reaches the provider's actual reasoning depth, not just the token ceiling.
|
|
203
204
|
- **[0.6.20]** (2026-06-18) — Launch REPL internals decomposed into testable modules: `@mention` path completion, slash-command view renderers, and slash-command handlers extracted from the monolithic `launch.ts` into dedicated files with full unit-test coverage.
|
|
204
205
|
- **[0.6.19]** (2026-06-18) — Post-turn hooks run once per batch (not per edit), local hook reads are mtime-cached, tool-result formatting is parallelized, and wrapped colored text keeps its tint.
|
|
205
206
|
- **[0.6.18]** (2026-06-17) — Memory data-flow diagram and a README "Memory flow" section documenting the actual runtime behavior.
|
|
206
207
|
- **[0.6.17]** (2026-06-17) — Legacy MEMORY.md migrates losslessly into the OKF concept bundle, with a one-shot command and a rollback toggle.
|
|
207
|
-
- **[0.6.16]** (2026-06-17) — OKF memory grows a concept cross-link graph: 1-hop search expansion, bundle lint, graphify-optional.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/README.zh.md
CHANGED
|
@@ -200,11 +200,11 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
|
|
|
200
200
|
## 更新日志 (Changelog)
|
|
201
201
|
|
|
202
202
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
203
|
+
- **[0.6.21]** (2026-06-18) — Session thinking level now reaches the provider's actual reasoning depth, not just the token ceiling.
|
|
203
204
|
- **[0.6.20]** (2026-06-18) — Launch REPL internals decomposed into testable modules: `@mention` path completion, slash-command view renderers, and slash-command handlers extracted from the monolithic `launch.ts` into dedicated files with full unit-test coverage.
|
|
204
205
|
- **[0.6.19]** (2026-06-18) — Post-turn hooks run once per batch (not per edit), local hook reads are mtime-cached, tool-result formatting is parallelized, and wrapped colored text keeps its tint.
|
|
205
206
|
- **[0.6.18]** (2026-06-17) — Memory data-flow diagram and a README "Memory flow" section documenting the actual runtime behavior.
|
|
206
207
|
- **[0.6.17]** (2026-06-17) — Legacy MEMORY.md migrates losslessly into the OKF concept bundle, with a one-shot command and a rollback toggle.
|
|
207
|
-
- **[0.6.16]** (2026-06-17) — OKF memory grows a concept cross-link graph: 1-hop search expansion, bundle lint, graphify-optional.
|
|
208
208
|
|
|
209
209
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
210
210
|
<!-- CHANGELOG:END -->
|
package/package.json
CHANGED
package/src/agent/engine.ts
CHANGED
|
@@ -28,6 +28,7 @@ async function invokeCallLlm(history: Message[], options: {
|
|
|
28
28
|
jsonMode: boolean;
|
|
29
29
|
model?: string;
|
|
30
30
|
maxTokens?: number;
|
|
31
|
+
reasoningEffort?: import("../ai/types").CallOptions["reasoningEffort"];
|
|
31
32
|
signal?: AbortSignal;
|
|
32
33
|
onUsage?: (u: { inputTokens?: number; outputTokens?: number }) => void;
|
|
33
34
|
onRetry?: (attempt: number, err: unknown, delayMs: number) => void;
|
|
@@ -205,6 +206,11 @@ export interface AgentLoopOptions {
|
|
|
205
206
|
model?: string;
|
|
206
207
|
/** Max generation tokens per step (drives the thinking budget). */
|
|
207
208
|
maxTokens?: number;
|
|
209
|
+
/** Provider reasoning depth (mapped from the live session thinking level). Threaded to
|
|
210
|
+
* callLlm so `/thinking`, `--thinking`, and `/fast` reach the provider's actual reasoning
|
|
211
|
+
* budget (Anthropic budget_tokens / OpenAI reasoning_effort / Gemini thinkingBudget), not
|
|
212
|
+
* just the max-token ceiling. When unset the model-manager falls back to the global config. */
|
|
213
|
+
reasoningEffort?: import("../ai/types").CallOptions["reasoningEffort"];
|
|
208
214
|
tools?: Record<string, ToolHandler>;
|
|
209
215
|
signal?: AbortSignal;
|
|
210
216
|
events?: AgentLoopEvents;
|
|
@@ -499,6 +505,7 @@ export async function runAgentLoop(history: Message[], opts: AgentLoopOptions):
|
|
|
499
505
|
tools: nativeToolSchemasFor(Object.keys(tools)),
|
|
500
506
|
model: opts.model,
|
|
501
507
|
maxTokens: opts.maxTokens,
|
|
508
|
+
reasoningEffort: opts.reasoningEffort,
|
|
502
509
|
signal: opts.signal,
|
|
503
510
|
onUsage: u => { acc.inputTokens += u.inputTokens ?? 0; acc.outputTokens += u.outputTokens ?? 0; sawUsage = true; },
|
|
504
511
|
onToken,
|
package/src/agent/loop.ts
CHANGED
|
@@ -10,6 +10,11 @@ export interface ChatOptions {
|
|
|
10
10
|
systemPrompt?: string;
|
|
11
11
|
temperature?: number;
|
|
12
12
|
maxTokens?: number;
|
|
13
|
+
/** Provider reasoning depth (mapped from the live session thinking level). When set it
|
|
14
|
+
* overrides the global config-derived effort, so `/thinking` and `--thinking` reach the
|
|
15
|
+
* provider's actual reasoning budget (Anthropic budget_tokens / OpenAI reasoning_effort /
|
|
16
|
+
* Gemini thinkingBudget), not just the max-token ceiling. */
|
|
17
|
+
reasoningEffort?: import("../ai/types").CallOptions["reasoningEffort"];
|
|
13
18
|
jsonMode?: boolean;
|
|
14
19
|
signal?: AbortSignal;
|
|
15
20
|
onUsage?: (usage: import("../ai/types").Usage) => void;
|
package/src/commands/launch.ts
CHANGED
|
@@ -36,7 +36,7 @@ import { callLlm, type Message } from "../agent/loop";
|
|
|
36
36
|
import { friendlyProviderError } from "../util/provider-error";
|
|
37
37
|
import { readGlobalConfig, saveConfigPatch } from "../agent/state";
|
|
38
38
|
import { rememberModelPatch, recentModelsForDisplay } from "../agent/model-recency";
|
|
39
|
-
import { describeModel, describeAllProviders, thinkingMaxTokens, discoverModels, flattenModels, resolveSelection, catalogMetadata, resolveRoleModel, CODEX_MODELS, qualifyModelId } from "../ai";
|
|
39
|
+
import { describeModel, describeAllProviders, thinkingMaxTokens, thinkingToReasoningEffort, discoverModels, flattenModels, resolveSelection, catalogMetadata, resolveRoleModel, CODEX_MODELS, qualifyModelId } from "../ai";
|
|
40
40
|
import type { ProviderModelsResult, PickEntry, ProviderName, ModelRole, ThinkLevel } from "../ai";
|
|
41
41
|
import { readGoalState, writeGoalState, clearGoalState, verifyGoal } from "../agent/goal-verifier";
|
|
42
42
|
|
|
@@ -786,6 +786,7 @@ export async function runLaunchCommand(args: string[]): Promise<void> {
|
|
|
786
786
|
maxSteps: flags.maxSteps,
|
|
787
787
|
model: sessionModel,
|
|
788
788
|
maxTokens: sessionThinking ? thinkingMaxTokens(sessionThinking) : undefined,
|
|
789
|
+
reasoningEffort: sessionThinking ? thinkingToReasoningEffort(sessionThinking) : undefined,
|
|
789
790
|
signal: ac.signal,
|
|
790
791
|
steer: drainSteer,
|
|
791
792
|
events: wrapEvents(withStepPersistence({ ...withToolDetailCapture(tui ? tui.events() : streamEvents), onBeforeDone }, persistTurnTail), opik),
|
|
@@ -804,6 +805,7 @@ export async function runLaunchCommand(args: string[]): Promise<void> {
|
|
|
804
805
|
budget: { maxExtensions: 0 },
|
|
805
806
|
model: sessionModel,
|
|
806
807
|
maxTokens: sessionThinking ? thinkingMaxTokens(sessionThinking) : undefined,
|
|
808
|
+
reasoningEffort: sessionThinking ? thinkingToReasoningEffort(sessionThinking) : undefined,
|
|
807
809
|
signal: ac.signal,
|
|
808
810
|
steer: drainSteer,
|
|
809
811
|
events: wrapEvents(withToolDetailCapture(tui ? tui.events() : streamEvents), opik),
|