Submatter/apps/worker/src/tools/allowlist.ts
Randall Stillwell 6ccb060bea feat(second-brain): open self-hosted Obsidian for crews — harness-agnostic v0.1
- MCP create-backlog-item for natural language Plan/Epic/Task authoring
- Worker non-code: optional worktree + per-harness allowlist + doc_review→published
- Harness registry: harness_providers/role_harness_routes, WorkerAdapter (minimal|crewai|langgraph|remote-ag-ui), AG-UI POST /api/ag-ui, Settings → Harnesses with Test
- Plans tree: backlog.listTree + createPlan/Epic/Task + Start→Convoy, web CRUD without CLI
- Fleet: /fleet rollup across workspaces + SSE /api/fleet/events

Decision: docs/decisions/2026-08-25-second-brain-os-pivot.md
Convoy: .convoys/second-brain-os-v01

Co-authored-by: orchestrator
2026-08-25 16:20:53 -05:00

11 lines
492 B
TypeScript

import { ALLOWED_COMMANDS } from "@tasks/shared/worker";
export function isAllowedCommand(
command: string,
allowedCommands?: readonly string[] | null,
): boolean {
const allowList = allowedCommands === undefined || allowedCommands === null ? ALLOWED_COMMANDS : allowedCommands;
if (allowList.length === 0) return false;
const normalized = command.trim().replace(/\s+/g, " ");
return allowList.some((allowed) => normalized === allowed || normalized.startsWith(`${allowed} `));
}