mirror of
https://github.com/vicky469/aside.git
synced 2026-07-22 17:42:04 +00:00
82 lines
2.9 KiB
TypeScript
82 lines
2.9 KiB
TypeScript
import * as assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import {
|
|
getAgentRuntimeCapabilityLabel,
|
|
getAgentRuntimeOwnershipMessage,
|
|
getAgentRuntimeStatusLabel,
|
|
resolveAgentRuntimeSelection,
|
|
} from "../src/agents/agentRuntimeSelection";
|
|
import { normalizeAgentRuntimeModePreference } from "../src/core/agents/agentRuntimePreferences";
|
|
|
|
test("normalizeAgentRuntimeModePreference treats legacy remote preference as auto", () => {
|
|
assert.equal(normalizeAgentRuntimeModePreference("remote"), "auto");
|
|
});
|
|
|
|
test("resolveAgentRuntimeSelection resolves local in auto mode when local Codex is available", () => {
|
|
assert.deepEqual(resolveAgentRuntimeSelection({
|
|
target: "codex",
|
|
modePreference: "auto",
|
|
localDiagnostics: {
|
|
status: "available",
|
|
message: "Codex is available.",
|
|
},
|
|
}), {
|
|
kind: "resolved",
|
|
runtime: "direct-cli",
|
|
modePreference: "auto",
|
|
ownershipMessage: "Using your local Codex setup",
|
|
});
|
|
});
|
|
|
|
test("resolveAgentRuntimeSelection blocks in auto mode on non-filesystem devices", () => {
|
|
assert.deepEqual(resolveAgentRuntimeSelection({
|
|
target: "codex",
|
|
modePreference: "auto",
|
|
localDiagnostics: {
|
|
status: "unsupported",
|
|
message: "Built-in @codex requires desktop Obsidian.",
|
|
},
|
|
}), {
|
|
kind: "blocked",
|
|
modePreference: "auto",
|
|
notice: "Built-in @codex requires desktop Obsidian.",
|
|
});
|
|
});
|
|
|
|
test("resolveAgentRuntimeSelection honors explicit local mode", () => {
|
|
assert.deepEqual(resolveAgentRuntimeSelection({
|
|
target: "codex",
|
|
modePreference: "local",
|
|
localDiagnostics: {
|
|
status: "available",
|
|
message: "Codex is available.",
|
|
},
|
|
}), {
|
|
kind: "resolved",
|
|
runtime: "direct-cli",
|
|
modePreference: "local",
|
|
ownershipMessage: "Using your local Codex setup",
|
|
});
|
|
});
|
|
|
|
test("resolveAgentRuntimeSelection blocks in explicit local mode with the real local diagnostics", () => {
|
|
assert.deepEqual(resolveAgentRuntimeSelection({
|
|
target: "codex",
|
|
modePreference: "local",
|
|
localDiagnostics: {
|
|
status: "unsupported",
|
|
message: "Built-in @codex requires desktop Obsidian.",
|
|
},
|
|
}), {
|
|
kind: "blocked",
|
|
modePreference: "local",
|
|
notice: "Built-in @codex requires desktop Obsidian.",
|
|
});
|
|
});
|
|
|
|
test("agent runtime labels stay local and ownership-explicit", () => {
|
|
assert.equal(getAgentRuntimeOwnershipMessage("direct-cli", "codex"), "Using your local Codex setup");
|
|
assert.equal(getAgentRuntimeOwnershipMessage("direct-cli", "claude"), "Using your local Claude setup");
|
|
assert.equal(getAgentRuntimeStatusLabel("direct-cli"), "Runtime: Local");
|
|
assert.equal(getAgentRuntimeCapabilityLabel("direct-cli"), "Capability: Workspace-aware");
|
|
});
|