Merge branch 'codex/tool-json-schema-dsl' into codex/canonical-tool-output
# Conflicts: # .agents/notes/implemented/feature/2026-06-30-interception-seams.md # docs/config-catalog.md # docs/cookbook/adding-a-tool.i18n.yaml # docs/cookbook/adding-a-tool.md # docs/cookbook/adding-a-tool.zh.md # docs/cordis-catalog/events.md # docs/cordis-catalog/services.md # docs/core-data-structures/tools.md # docs/event-producer-consumer.md # docs/persistence-catalog.md # examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/session.jsonl # examples/acp-agent/tests/snapshots/cordis-inspect-jsdoc/stdout.expected.jsonl # packages/bash/tool-bash/src/index.ts # packages/core/agent-loop/src/tool-calls.ts # packages/core/agent-loop/tests/cancel.spec.ts # packages/core/agent-loop/tests/contract-regressions.spec.ts # packages/core/agent-loop/tests/tool-calls.spec.ts # packages/core/tools/README.md # packages/core/tools/src/index.ts # packages/core/tools/tests/code-mode.spec.ts # packages/core/tools/tests/tools.spec.ts # packages/fs/tool-fs-search/tests/integration.spec.ts # packages/fs/tool-fs-search/tests/tools.spec.ts # packages/fs/tool-fs/tests/integration.spec.ts # packages/mcp/mcp-client/src/tools.ts # packages/timeout/timeout-policy/tests/timeout-policy.spec.ts # packages/web/tool-web/tests/integration.spec.ts # packages/web/tool-web/tests/tool-web.spec.ts
This commit is contained in:
@@ -1337,7 +1337,7 @@ export function createTuiChat(
|
||||
: event.data.reason.message
|
||||
if (!liveErrors.delete(key)) appendNotice(message, 'error')
|
||||
} else if (event.data.reason.kind === 'aborted') {
|
||||
appendNotice(event.data.reason.reason ?? 'Turn cancelled.', 'warning')
|
||||
appendNotice('Turn cancelled.', 'warning')
|
||||
} else if (event.data.reason.kind === 'max-tokens') {
|
||||
appendNotice('The model reached its output-token limit.', 'warning')
|
||||
} else if (event.data.reason.kind === 'rejected') {
|
||||
@@ -1484,7 +1484,7 @@ export function createTuiChat(
|
||||
|
||||
const requestExit = (): void => {
|
||||
if (agent.status === 'running') {
|
||||
agent.cancel('terminal exit requested')
|
||||
agent.cancel({ kind: 'user' })
|
||||
appendNotice('Cancelling the active turn before exit…', 'warning')
|
||||
void agent.whenIdle().then(() => shutdown(true))
|
||||
return
|
||||
@@ -1567,7 +1567,7 @@ export function createTuiChat(
|
||||
description: 'Cancel the active turn',
|
||||
handler: () => {
|
||||
if (agent.status !== 'running') return { kind: 'error', text: 'The agent is already idle.' }
|
||||
agent.cancel('cancelled from terminal')
|
||||
agent.cancel({ kind: 'user' })
|
||||
return { kind: 'success', text: 'Cancellation requested.' }
|
||||
},
|
||||
})
|
||||
@@ -1647,12 +1647,12 @@ export function createTuiChat(
|
||||
return { consume: true }
|
||||
}
|
||||
if (matchesKey(data, Key.escape) && agent.status === 'running') {
|
||||
agent.cancel('cancelled from terminal')
|
||||
agent.cancel({ kind: 'user' })
|
||||
return { consume: true }
|
||||
}
|
||||
if (matchesKey(data, Key.ctrl('c'))) {
|
||||
if (agent.status === 'running') {
|
||||
agent.cancel('cancelled from terminal')
|
||||
agent.cancel({ kind: 'user' })
|
||||
} else if (editor.getText() !== '') {
|
||||
editor.setText('')
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user