Files
trebuchet/apps/cli/src/commands/workspaces.ts
T
Chris Farhood 1bbdd7acba feat: add K8s API server, orchestrator abstraction, and CI pipeline
- Add apps/api/ — Hono REST API server for managing pentest scans via K8s Jobs
  - POST/GET /api/scans, GET /api/scans/:id, cancel, report endpoints
  - Bearer token auth, Temporal client integration, K8s Job builder
  - Dockerfile, Kustomize manifests (Deployment, Service, RBAC)
- Add CLI orchestrator abstraction (docker.ts → Orchestrator interface)
  - DockerOrchestrator and K8sOrchestrator implementations
  - Backend detection via SHANNON_BACKEND env var or --backend flag
- Add CI workflow: type-check + lint on PR, build+push both images on main
- Switch all workflows to self-hosted runners (runners-farhoodliquor)
- Add shannon-api image build to release and release-beta workflows
- Add root infra/kustomization.yaml as Flux entry point
- Export PipelineProgress from @shannon/worker/pipeline

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 13:08:51 -04:00

25 lines
715 B
TypeScript

/**
* `shannon workspaces` command — list all workspaces.
*/
import { getOrchestrator } from '../backend.js';
import { getWorkspacesDir } from '../home.js';
export async function workspaces(version: string): Promise<void> {
const orchestrator = await getOrchestrator();
const workspacesDir = getWorkspacesDir();
const image = orchestrator.getWorkerImage(version);
try {
orchestrator.runEphemeral(
image,
['node', 'apps/worker/dist/temporal/workspaces.js'],
[`${workspacesDir}:/app/workspaces`],
);
} catch {
console.error('ERROR: Failed to list workspaces. Is the Docker image available?');
console.error(` Run: docker pull ${image}`);
process.exit(1);
}
}