This folder contains runnable code samples that map to the workshop plan. The practical flow is built around an email triage agent that classifies incoming emails into task, event, or no_action and routes them to downstream agents.
Step 01 uses a direct OpenAI-compatible HTTP call with no SDK, and falls back to naive keyword routing when OPENAI_API_KEY is not set. Step 02 uses the Google ADK (@google/adk) for one classifier agent. Later steps build specialist agents and orchestration around that classifier.
cd 2026-02-28-jsnation-workshop
node -v
npm install
npm run start:01- Agent theory. What they are in general
- See
src/runtime/README.mdfor the runtime model and architecture notes.
- See
- Developing a simple agent
- Run
npm run start:01and opensrc/01-standalone/run.js.
- Run
- Agent SDK theory
- See
src/02-sdk/README.mdfor the Google ADK overview.
- See
- Developing an agent using the SDK
- Run
npm run start:02and opensrc/02-sdk/run.js.
- Run
- Orchestration theory. What to do when there are multiple agents
- Run
npm run start:03and opensrc/03-orchestrator/run.js.
- Run
- Developing one or two more agents and integrating them into n8n
- Run
npm run start:04and opensrc/04-n8n/README.md.
- Run
- Theory of general orchestration rules. Security, monitoring, etc.
- Run
npm run start:05and opensrc/05-security-observability/run.js.
- Run
- Practice
- Use
src/examples/for exercises and tasks.
- Use
- End
src/01-standalone/raw LLM email triage over HTTP without an SDKsrc/02-sdk/Google ADK classifier agentsrc/03-orchestrator/specialist agents plus monolithic orchestration over the step 02 classifiersrc/04-n8n/n8n integration nodes for visual orchestration over the step 02 classifier and step 03 specialistssrc/05-security-observability/wrappers for prompt-injection checks and success/error observabilitysrc/examples/practice tasks and sample emailssrc/runtime/runtime model notes (kept for theory section)- Also includes the small OpenAI-compatible helper reused by step
01
- Also includes the small OpenAI-compatible helper reused by step
- Step
01uses a real model whenOPENAI_API_KEYis set, otherwise it falls back to naive keyword routing. - Step
02stays on the ADK code path even without credentials by using a local keyword-basedBaseLlmfallback. - Step
02also supports Gemini, OpenAI, or a local OpenAI-compatible endpoint viaSDK_PROVIDER; seesrc/02-sdk/README.md. - Step
03is intentionally monolithic and adds specialist agents around the step02classifier. - Step
04reuses the step02classifier and the step03specialists in n8n nodes, plus the step03router as a shortcut node. - Step
05wraps the step02classifier and step03specialists for prompt-injection blocking and success/error monitoring instead of re-implementing routing.