Repository navigation
feat(permission,retry): persist the DSH permission pick and auto-retry upstream drops #1415
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -77,6 +77,7 @@ A complete common override looks like this: | |
| | `codeFrameStyle` | `light` | Frame of fenced code blocks in replies: `light` is a top label plus a left rail and costs no extra rows; `full` closes the box. Very narrow terminals always use a plain fence. Applies immediately | | ||
| | `turnUsageRow` | `false` (boolean) | Show a right-aligned usage row at the end of each turn (tokens in/out, cache, duration, retries); `/tokens`, `/status` and the footer hover report the same numbers either way | | ||
| | `modes` | built-in trio | Shift+Tab session-mode cycle (plan/sandbox/approval atom bundles); defaults to default → plan → full-access | | ||
| | `upstreamRetry` | `true` | Seed a retry policy (5 attempts, transport-drop-aware failure codes including `STREAM_CLOSED`) on the `llm-pi-ai` provider route the bound session actually uses, whenever it declares no `retryPolicy` — at every bind (boot, `/model` switch, resume), through the official `llm-pi-ai` settings section (the policy the kernel's `llm-retry` plugin executes). Dormant channels are never written; routes with an explicit `retryPolicy` (cordis.yml or hand-edited settings) are never overwritten; `false` opts out entirely | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: sed -n '1,230p' src/dsh-adapter/channel/extensions.ts
sed -n '1,240p' src/dsh-adapter/channel/upstream-retry.ts
rg -n 'ensureUpstreamRetry|attempted|provider|upstreamRetry' src/dsh-adapter/channel src/dsh-adapter/plugin.ts guide/dsh-tui-guide/configuration.en.md guide/dsh-tui-guide/configuration.md
sed -n '74,86p' guide/dsh-tui-guide/configuration.en.md
sed -n '71,83p' guide/dsh-tui-guide/configuration.mdRepository: ccch1mneyyy/dsh-TUI Length of output: 41914 🏁 Script executed: printf '%s\n' '--- extensions.ts ---'
nl -ba src/dsh-adapter/channel/extensions.ts | sed -n '120,135p'
printf '%s\n' '--- binding-events.ts ---'
nl -ba src/dsh-adapter/channel/binding-events.ts | sed -n '140,165p'
printf '%s\n' '--- upstream-retry.ts ---'
nl -ba src/dsh-adapter/channel/upstream-retry.ts | sed -n '118,175p'Repository: ccch1mneyyy/dsh-TUI Length of output: 5566 Retry policy seeding on each bind.
🐛 Suggested fix- const upstreamRetryAttempted = new Set<string>()
const seedUpstreamRetry = (provider: string | undefined): void => {
if (options.upstreamRetry === false) return
if (adapterRuntime.mode === 'passive-shadow' || adapterRuntime.mode === 'replay-shadow') return
- if (provider === undefined || provider === '' || upstreamRetryAttempted.has(provider)) return
- upstreamRetryAttempted.add(provider)
+ if (provider === undefined || provider === '') return
void ensureUpstreamRetry(ctx, notify, [provider])
}🤖 Prompt for AI Agents |
||
| | `activity` | `true` | Show the live activity row | | ||
| | `activityFrames` | `moon8` | Activity animation preset; `/activity` changes it at runtime. A legacy saved value of `claude` is read as `moon8`, and the picker no longer offers that legacy preset | | ||
| | `contextBar` | `true` | Segmented context-usage bar below the input box; `false` hides the row. Both this and `/settings → statusBar.contextBar` (also on by default) must be on for it to render | | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a custom provider's
env_keyis absent from the shell,prepareCodexRuntimegives the child onlyprocess.envplus active/channeloverrides (src/backends/codex/backend.tslines 61–72), andsettingsImportsearches only that environment rather than resolving the named DSH credential ref (src/backends/codex/channels.tslines 183–193). Merely storingDEEPSEEK_API_KEYunder the matching DSH ref therefore does not inject it as claimed, leaving requests unauthenticated; remove this unrelated documentation addition or implement the credential-store lookup and child-environment injection.AGENTS.md reference: AGENTS.md:L84-L84
Useful? React with 👍 / 👎.