akm-cli
Version:
akm (Agent Knowledge Manager) — a portable, local-first capability library for AI agents. Discover, load, share, and improve reusable skills, scripts, workflows, and knowledge across any shell-capable coding agent, including Claude Code, OpenCode, and Cur
29 lines (28 loc) • 2.25 kB
JavaScript
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
export const HARNESS_ID_TABLE = [
{ id: "opencode", agentDispatch: true, enforcesModelWorkTools: true, nativeAgentSelector: true },
{ id: "claude", agentDispatch: true, enforcesModelWorkTools: true, nativeAgentSelector: true },
{ id: "opencode-sdk", agentDispatch: true, enforcesModelWorkTools: true, nativeAgentSelector: true },
{ id: "codex", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "copilot", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "pi", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "gemini", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "aider", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "amazonq", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
{ id: "openhands", agentDispatch: true, enforcesModelWorkTools: false, nativeAgentSelector: false },
];
/**
* Canonical, ordered list of valid harness / platform ids — the
* dependency-free counterpart of `./index.ts`'s `VALID_HARNESS_IDS` (which
* remains the barrel's own derivation for its own consumers). Both are
* asserted equal at `HARNESS_REGISTRY` construction time.
*/
export const VALID_HARNESS_IDS = Object.freeze(HARNESS_ID_TABLE.map((h) => h.id));
/** Harness ids whose `capabilities.agentDispatch` is `true`. */
export const HARNESS_AGENT_DISPATCH_IDS = new Set(HARNESS_ID_TABLE.filter((h) => h.agentDispatch).map((h) => h.id));
/** Harness ids that confine the model-work tool policy, so unattended model work may run on them. */
export const HARNESS_MODEL_WORK_IDS = new Set(HARNESS_ID_TABLE.filter((h) => h.enforcesModelWorkTools).map((h) => h.id));
/** Harness ids that can run a named native agent, so an engine may name a default `agent`. */
export const HARNESS_NATIVE_AGENT_IDS = new Set(HARNESS_ID_TABLE.filter((h) => h.nativeAgentSelector).map((h) => h.id));