Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
- Sandbox: add `agent.sandbox.workspaceAccess` (`none`/`ro`/`rw`) to control agent workspace visibility inside the container; `ro` hard-disables `write`/`edit`.
|
- Sandbox: add `agent.sandbox.workspaceAccess` (`none`/`ro`/`rw`) to control agent workspace visibility inside the container; `ro` hard-disables `write`/`edit`.
|
||||||
- Routing: allow per-agent sandbox overrides (including `workspaceAccess` and `sandbox.tools`) plus per-agent tool policies in multi-agent configs. Thanks @pasogott for PR #380.
|
- Routing: allow per-agent sandbox overrides (including `workspaceAccess` and `sandbox.tools`) plus per-agent tool policies in multi-agent configs. Thanks @pasogott for PR #380.
|
||||||
- Cron: clamp timer delay to avoid TimeoutOverflowWarning. Thanks @emanuelst for PR #412.
|
- Cron: clamp timer delay to avoid TimeoutOverflowWarning. Thanks @emanuelst for PR #412.
|
||||||
|
- ClawdbotKit: fix SwiftPM resource bundling path for `tool-display.json`. Thanks @fcatuhe for PR #398.
|
||||||
- Tools: add Telegram/WhatsApp reaction tools (with per-provider gating). Thanks @zats for PR #353.
|
- Tools: add Telegram/WhatsApp reaction tools (with per-provider gating). Thanks @zats for PR #353.
|
||||||
- Tools: flatten literal-union schemas for Claude on Vertex AI. Thanks @carlulsoe for PR #409.
|
- Tools: flatten literal-union schemas for Claude on Vertex AI. Thanks @carlulsoe for PR #409.
|
||||||
- Tools: unify reaction removal semantics across Discord/Slack/Telegram/WhatsApp and allow WhatsApp reaction routing across accounts.
|
- Tools: unify reaction removal semantics across Discord/Slack/Telegram/WhatsApp and allow WhatsApp reaction routing across accounts.
|
||||||
@@ -88,6 +89,7 @@
|
|||||||
- Typing indicators: fix a race that could keep the typing indicator stuck after quick replies. Thanks @thewilloftheshadow for PR #270.
|
- Typing indicators: fix a race that could keep the typing indicator stuck after quick replies. Thanks @thewilloftheshadow for PR #270.
|
||||||
- Google: merge consecutive messages to satisfy strict role alternation for Google provider models. Thanks @Asleep123 for PR #266.
|
- Google: merge consecutive messages to satisfy strict role alternation for Google provider models. Thanks @Asleep123 for PR #266.
|
||||||
- Postinstall: handle targetDir symlinks in the install script. Thanks @obviyus for PR #272.
|
- Postinstall: handle targetDir symlinks in the install script. Thanks @obviyus for PR #272.
|
||||||
|
- Status: show configured model in `/status` (override-aware). Thanks @azade-c for PR #396.
|
||||||
- WhatsApp/Telegram: add groupPolicy handling for group messages and normalize allowFrom matching (tg/telegram prefixes). Thanks @mneves75.
|
- WhatsApp/Telegram: add groupPolicy handling for group messages and normalize allowFrom matching (tg/telegram prefixes). Thanks @mneves75.
|
||||||
- Auto-reply: add configurable ack reactions for inbound messages (default 👀 or `identity.emoji`) with scope controls. Thanks @obviyus for PR #178.
|
- Auto-reply: add configurable ack reactions for inbound messages (default 👀 or `identity.emoji`) with scope controls. Thanks @obviyus for PR #178.
|
||||||
- Polls: unify WhatsApp + Discord poll sends via the gateway + CLI (`clawdbot poll`). (#123) — thanks @dbhurley
|
- Polls: unify WhatsApp + Discord poll sends via the gateway + CLI (`clawdbot poll`). (#123) — thanks @dbhurley
|
||||||
|
|||||||
@@ -45,6 +45,29 @@ describe("buildStatusMessage", () => {
|
|||||||
expect(text).toContain("Queue: collect");
|
expect(text).toContain("Queue: collect");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("prefers model overrides over last-run model", () => {
|
||||||
|
const text = buildStatusMessage({
|
||||||
|
agent: {
|
||||||
|
model: "anthropic/claude-opus-4-5",
|
||||||
|
contextTokens: 32_000,
|
||||||
|
},
|
||||||
|
sessionEntry: {
|
||||||
|
sessionId: "override-1",
|
||||||
|
updatedAt: 0,
|
||||||
|
providerOverride: "openai",
|
||||||
|
modelOverride: "gpt-4.1-mini",
|
||||||
|
modelProvider: "anthropic",
|
||||||
|
model: "claude-haiku-4-5",
|
||||||
|
contextTokens: 32_000,
|
||||||
|
},
|
||||||
|
sessionKey: "agent:main:main",
|
||||||
|
sessionScope: "per-sender",
|
||||||
|
queue: { mode: "collect", depth: 0 },
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(text).toContain("🧠 Model: openai/gpt-4.1-mini");
|
||||||
|
});
|
||||||
|
|
||||||
it("handles missing agent config gracefully", () => {
|
it("handles missing agent config gracefully", () => {
|
||||||
const text = buildStatusMessage({
|
const text = buildStatusMessage({
|
||||||
agent: {},
|
agent: {},
|
||||||
|
|||||||
@@ -250,8 +250,8 @@ export function buildStatusMessage(args: StatusArgs): string {
|
|||||||
defaultModel: DEFAULT_MODEL,
|
defaultModel: DEFAULT_MODEL,
|
||||||
});
|
});
|
||||||
const provider =
|
const provider =
|
||||||
entry?.modelProvider ?? resolved.provider ?? DEFAULT_PROVIDER;
|
entry?.providerOverride ?? resolved.provider ?? DEFAULT_PROVIDER;
|
||||||
let model = entry?.model ?? resolved.model ?? DEFAULT_MODEL;
|
let model = entry?.modelOverride ?? resolved.model ?? DEFAULT_MODEL;
|
||||||
let contextTokens =
|
let contextTokens =
|
||||||
entry?.contextTokens ??
|
entry?.contextTokens ??
|
||||||
args.agent?.contextTokens ??
|
args.agent?.contextTokens ??
|
||||||
|
|||||||
Reference in New Issue
Block a user