Initial implementation of TriggerShell

A Python CLI (typer) that bootstraps Node/pnpm and launches a Next.js 16 web
app for running configured shell scripts: YAML config validated by a shared
Zod schema, dynamic per-script forms mapped to shadcn controls, argv-safe
execa execution with live WebSocket streaming, SQLite/Drizzle run history,
and optional argon2 session + API token auth.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-15 18:37:30 +02:00
co-authored by Claude Sonnet 5
commit ced99a8e75
117 changed files with 17367 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env node
const args = process.argv.slice(2);
function getArg(name) {
const index = args.indexOf(name);
return index === -1 ? undefined : args[index + 1];
}
const targetDir = getArg("--dir");
const olderThanDays = getArg("--days");
const types = getArg("--types");
console.log(`Scanning ${targetDir} for files older than ${olderThanDays} days (types: ${types})`);
if (process.env.CLEANUP_API_KEY) {
console.log("Using configured external API key.");
}
console.log("No matching files found. Cleanup complete.");
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
env=""
replicas=""
dry_run="false"
while [[ $# -gt 0 ]]; do
case "$1" in
--env) env="$2"; shift 2 ;;
--replicas) replicas="$2"; shift 2 ;;
--dry-run) dry_run="true"; shift ;;
*) echo "unknown argument: $1" >&2; exit 1 ;;
esac
done
echo "Deploying to '${env}' with ${replicas} replicas (dry_run=${dry_run})"
if [[ -n "${SLACK_CHANNEL:-}" ]]; then
echo "Would notify Slack channel: ${SLACK_CHANNEL}"
fi
for i in $(seq 1 5); do
echo "[${i}/5] working..."
sleep 1
done
echo "Deploy complete."