Files
cxyback bb4a2b3e53 Restructure repo and add named agents (#81)
- Move verticals from repo root into plugins/vertical-plugins/ and partner
  plugins into plugins/partner-built/
- Add 10 named, self-contained agent plugins under plugins/agent-plugins/
  (Pitch Agent, Market Researcher, Earnings Reviewer, Model Builder,
  Meeting Prep, GL Reconciler, Month-End Closer, Statement Auditor,
  Valuation Reviewer, KYC Screener) — each bundles its own skills so it
  installs standalone
- Add managed-agent-cookbooks/ (one per agent) with subagent isolation
  and steering examples for /v1/agents deployment
- Add fund-admin and operations verticals so the finance-ops/onboarding
  agents ship real domain skills
- Add scripts/ (check.py manifest lint, sync-agent-skills.py,
  deploy-managed-agent.sh, orchestrate.py reference loop,
  test-cookbooks.sh)
- Add .github/workflows/secret-scan.yml (gitleaks + internal-ref grep)
- Tighten agent tool grants to declared MCPs only — no Bash, WebFetch,
  or undeclared mcp__* references in any agent
- Add not-investment-advice disclaimer to README
- Rename claude-in-office to claude-for-msft-365-install (content
  unchanged)
2026-05-05 10:58:18 -04:00

28 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Dry-run every managed-agent cookbook and assert the resolved POST /v1/agents
# bodies are well-formed: valid JSON, depth-1, non-empty system prompts, no
# output_schema. Exits non-zero if any cookbook fails.
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
fail=0
for d in "$ROOT"/managed-agent-cookbooks/*/; do
slug=$(basename "$d")
if ! bash "$ROOT/scripts/deploy-managed-agent.sh" "$slug" --dry-run 2>&1 | tail -n +2 | python3 -c "
import json,sys
b=json.load(sys.stdin)
errs=[]
for i,x in enumerate(b):
if not x.get('system'): errs.append(f'{x.get(\"name\")}: empty system')
if i<len(b)-1 and x.get('callable_agents'): errs.append(f'{x.get(\"name\")}: depth>1 (subagent has callable_agents)')
if 'output_schema' in json.dumps(b): errs.append('output_schema leaked into a body')
if errs:
for e in errs: print(f' {e}', file=sys.stderr)
sys.exit(1)
print(f' ✓ {sys.argv[1]:24s} {len(b)} bodies')
" "$slug"; then
echo " ✗ $slug" >&2
fail=1
fi
done
exit $fail