Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .oh/cli/src/__tests__/harness-catalog.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ describe("harness catalog", () => {

it("covers all four optional harnesses", () => {
expect(optional.map((h) => h.id).sort()).toEqual([
"deepagents",
"grok-build",
"hermes",
"opencode",
Expand Down
15 changes: 1 addition & 14 deletions .oh/cli/src/__tests__/harness.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ describe("help", () => {

it("names every installable harness so `<name>` is discoverable", () => {
const help = captureStdout(printHarnessHelp);
for (const id of ["claude-code", "codex", "pi", "opencode", "grok-build", "deepagents", "hermes", "t3code"]) {
for (const id of ["claude-code", "codex", "pi", "opencode", "grok-build", "hermes", "t3code"]) {
expect(help).toContain(id);
}
});
Expand Down Expand Up @@ -289,19 +289,6 @@ describe("runHarnessInstall against the container", () => {
);
});

it("installs deepagents as the sandbox user, not root", async () => {
const root = makeRepo();
const { calls, run } = makeRunner((c, a) => {
if (isInspect(c, a)) return running;
if (isExecOf(c, a, "--version")) return { status: 1, stdout: "", stderr: "" };
return undefined;
});

await runHarnessInstall("deepagents", { cwd: root, run }, makeIo().io);
const install = execCalls(calls).find((c) => c.args.includes("deepagents-cli"));
expect(install!.args[install!.args.indexOf("-u") + 1]).toBe("sandbox");
});

it("is a no-op when the binary is already present", async () => {
const root = makeRepo();
const { calls, run } = makeRunner((c, a) => (isInspect(c, a) ? running : undefined));
Expand Down
1 change: 0 additions & 1 deletion .oh/cli/src/__tests__/init.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,6 @@ describe("runInit", () => {
expect(config.install).toEqual({
opencode: false,
grokBuild: false,
deepagents: false,
hermes: false,
agentBrowser: false,
});
Expand Down
4 changes: 0 additions & 4 deletions .oh/cli/src/commands/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -653,9 +653,6 @@ const ENV_TO_CONFIG: Record<string, ConfigSetter> = {
INSTALL_GROK_BUILD: (c, v) => {
section(c, "install").grokBuild = asBool(v);
},
INSTALL_DEEPAGENTS: (c, v) => {
section(c, "install").deepagents = asBool(v);
},
INSTALL_HERMES: (c, v) => {
section(c, "install").hermes = asBool(v);
},
Expand Down Expand Up @@ -777,7 +774,6 @@ async function runWizard(
prompt.step(2, 5, "Optional installs");
const installs: { key: string; field: string; desc: string }[] = [
{ key: "opencode", field: "opencode", desc: "OpenCode TUI coding agent" },
{ key: "deepagents", field: "deepagents", desc: "DeepAgents multi-agent runtime" },
{ key: "hermes", field: "hermes", desc: "Hermes CLI + runtime (build arg + runtime)" },
{ key: "grok_build", field: "grokBuild", desc: "Grok build tooling" },
{ key: "agent_browser", field: "agentBrowser", desc: "agent-browser + Chromium (~1 GB)" },
Expand Down
3 changes: 2 additions & 1 deletion .oh/cli/src/lib/__tests__/config-render.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ describe("renderComposeEnv", () => {
expect(text).toContain("GIT_USER_EMAIL=ada@example.com");
expect(text).toContain("INSTALL_OPENCODE=false");
expect(text).toContain("INSTALL_GROK_BUILD=false");
expect(text).toContain("INSTALL_DEEPAGENTS=false");
// #910: deepagents is retired; the key must no longer be rendered.
expect(text).not.toContain("INSTALL_DEEPAGENTS");
expect(text).toContain("INSTALL_HERMES=false");
expect(text).toContain("INSTALL_AGENT_BROWSER=false");
expect(text).toContain("DOCKER_SOCKET=true");
Expand Down
9 changes: 7 additions & 2 deletions .oh/cli/src/lib/config-render.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import type { OhConfig } from "./oh-config.js";
import { isSecretKey } from "./secrets.js";

const RETIRED_KEYS = ["WORKTREES_DIR", "PROJECTS_DIR", "CRONS_DIR", "OH_PROJECT_ROOT"] as const;
const RETIRED_KEYS = [
"WORKTREES_DIR",
"PROJECTS_DIR",
"CRONS_DIR",
"OH_PROJECT_ROOT",
"INSTALL_DEEPAGENTS",
] as const;

export interface RenderedVar {
key: string;
Expand All @@ -24,7 +30,6 @@ export function renderComposeVars(config: OhConfig): RenderedVar[] {

put("INSTALL_OPENCODE", config.install?.opencode);
put("INSTALL_GROK_BUILD", config.install?.grokBuild);
put("INSTALL_DEEPAGENTS", config.install?.deepagents);
put("INSTALL_HERMES", config.install?.hermes);
put("INSTALL_AGENT_BROWSER", config.install?.agentBrowser);

Expand Down
2 changes: 0 additions & 2 deletions .oh/cli/src/lib/env-file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ function stripQuotes(s: string): string {
export const INSTALL_FIELDS: Record<string, string> = {
opencode: "install.opencode",
grok_build: "install.grokBuild",
deepagents: "install.deepagents",
hermes: "install.hermes",
agent_browser: "install.agentBrowser",
};
Expand All @@ -34,7 +33,6 @@ export const CONFIG_FIELD_BY_ENV_KEY: Record<string, string> = {
DOCKER_SOCKET: "access.dockerSocket",
INSTALL_OPENCODE: INSTALL_FIELDS.opencode,
INSTALL_GROK_BUILD: INSTALL_FIELDS.grok_build,
INSTALL_DEEPAGENTS: INSTALL_FIELDS.deepagents,
INSTALL_HERMES: INSTALL_FIELDS.hermes,
INSTALL_AGENT_BROWSER: INSTALL_FIELDS.agent_browser,
};
Expand Down
11 changes: 0 additions & 11 deletions .oh/cli/src/lib/harnesses/catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,6 @@ export const HARNESS_CATALOG: readonly HarnessEntry[] = [
docsPath: "docs/harnesses/grok-build.md",
kind: "optional",
},
{
id: "deepagents",
title: "DeepAgents",
binary: "deepagents",
harnessKey: "deepagents",
installArgv: ["uv", "tool", "install", "deepagents-cli"],
installUser: "sandbox",
verifyArgv: ["deepagents", "--version"],
docsPath: "docs/harnesses/deepagents.md",
kind: "optional",
},
{
id: "hermes",
title: "Hermes",
Expand Down
5 changes: 1 addition & 4 deletions .oh/cli/src/lib/oh-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ export interface GitIdentity {
export interface InstallFlags {
opencode?: boolean;
grokBuild?: boolean;
deepagents?: boolean;
hermes?: boolean;
agentBrowser?: boolean;
}
Expand Down Expand Up @@ -126,7 +125,6 @@ export function defaultOhConfig(name: string): OhConfig {
install: {
opencode: false,
grokBuild: false,
deepagents: false,
hermes: false,
agentBrowser: false,
},
Expand Down Expand Up @@ -222,7 +220,7 @@ export function validateOhConfig(value: unknown): OhConfig {

const install = expectSection(record, "install");
if (install) {
for (const key of ["opencode", "grokBuild", "deepagents", "hermes", "agentBrowser"]) {
for (const key of ["opencode", "grokBuild", "hermes", "agentBrowser"]) {
expectBoolean(install, key, "install.");
}
}
Expand Down Expand Up @@ -349,7 +347,6 @@ export const OH_CONFIG_FIELDS: readonly OhConfigField[] = [
{ path: "git.userEmail", type: "string" },
{ path: "install.opencode", type: "boolean" },
{ path: "install.grokBuild", type: "boolean" },
{ path: "install.deepagents", type: "boolean" },
{ path: "install.hermes", type: "boolean" },
{ path: "install.agentBrowser", type: "boolean" },
{ path: "access.ssh", type: "boolean" },
Expand Down
Loading
Loading