Skip to content

Add Joule Exercise#26

Open
davbizer93 wants to merge 7 commits into
mainfrom
joule-capability-clean
Open

Add Joule Exercise#26
davbizer93 wants to merge 7 commits into
mainfrom
joule-capability-clean

Conversation

@davbizer93

Copy link
Copy Markdown
Contributor

Adds the Joule capability exercise for the Python A2A app, including status updates. This PR contains only the Joule-related changes.

The JavaScript track uses LangGraph JS internally but was labelled
"Investigator Crew" / investigator-crew-ts — a holdover from when it
was described as the TypeScript port of the Python CrewAI solution.
Rename to "Investigator Graph" / investigator-graph-ts throughout
exercise 07, the solution manifest, Agent Card, package.json, and
README so the JS track reads as the LangGraph JS sibling of the
Python-LangGraph track, not as a CrewAI clone.

Comparison table rows that explicitly refer to "Python (CrewAI)" are
intentionally left unchanged — they are historical comparisons, not
product names for this track.
…ph tracks

Port exercises/Python/08-integrate-agent-into-joule.md to both the
JavaScript (LangGraph TS) and Python-LangGraph tracks with per-track
naming:

- JavaScript: CF app investigator-graph-ts-<name>, agent card at
  /.well-known/agent.json, InvestigationWorkflow.kickoff()
- Python-LangGraph: CF app investigator-graph-<name>, agent card at
  /.well-known/agent-card.json, investigator_graph.invoke()

The Joule YAML (capability, scenario, function) is identical across all
three tracks since the A2A response shape — artifacts[0].parts[0].text
— is framework-agnostic.

Also scaffold project/JavaScript/solution/joule/ and
project/Python-LangGraph/solution/joule/ as reference solutions for
instructors, mirroring the existing project/Python/solution/joule/.
Ports commits 73cc89a and c4cb077 (Maximilian Hoffmann) to the current
branch, extended to the Python-LangGraph track which did not exist at
the time of those commits. Exercises 06/07/08 are renumbered to 07/08/09
to make room.

- New Intelligence Researcher agent/node in each track calls sap/sonar-pro
  via SAP AI Core to search the web for suspect backgrounds and criminal
  patterns; Lead Detective now synthesises three sources instead of two
- New exercise 06-discover-connected-crimes.md for all three tracks
- Solution code updated: investigator_crew.py, investigator_graph.py,
  tools.ts / types.ts / agentConfigs.ts / investigationWorkflow.ts
- All cross-references in exercises/ and README updated (17 files)
@davbizer93

Copy link
Copy Markdown
Contributor Author

b7e677e -> Add Joule Capability exercise to all 3 framework types

e31c655
Added Max his perplexity exercise, as well as for python langgraph (new). See changes summary:
Add Exercise 06 — Discover Connected Crimes with Web Search
Ports the Perplexity/sonar-pro web search exercise authored in commits 73cc89a and c4cb077 (Maximilian Hoffmann) to all three workshop tracks. Those commits could not be merged directly due to untrusted-author policy, and they predated the Python-LangGraph track and the Joule exercise (08→09), so this re-implements the work cleanly on the current branch.

What's new
A fourth agent — the Intelligence Researcher — is inserted between the Evidence Analyst and the Lead Detective in every track. It calls Perplexity's sonar-pro model through SAP AI Core to search the public web for suspect backgrounds, similar art thefts, and criminal network connections. The Lead Detective now synthesises three sources instead of two: internal evidence (Grounding Service) + external intelligence (sonar-pro) + insurance appraisal (RPT-1).

Changes by area
Solution code (all three tracks):

Python/CrewAI — new call_sonar_pro_search @tool, intelligence_researcher_agent + research_criminal_network in investigator_crew.py; new agent/task blocks in config/agents.yaml and config/tasks.yaml
Python/LangGraph — new call_sonar_pro_search function, intelligence_researcher_node, extended AgentState TypedDict, and rewired edges in investigator_graph.py; WEB_RESEARCHER_AGENT prompt + extended _lead_detective_prompt in config/agents.py; intelligence_report: None initialised in main.py and server.py
JavaScript/LangGraph — callSonarProSearchTool in tools.ts, intelligenceResearcherNode + rewired graph in investigationWorkflow.ts, updated agentConfigs.ts and types.ts (TypeScript build confirmed clean)
Exercises:

New exercises/{Python,Python-LangGraph,JavaScript}/06-discover-connected-crimes.md in each track
Existing exercises 06/07/08 renamed to 07/08/09 across all three tracks
All cross-references updated: README.md, exercises/readme.md, and every exercise file that linked to the old numbers (17 files total)
Notes
sap/sonar-pro must be deployed in the learner's SAP AI Core resource group — both new exercise files include a "Verify deployment" step
The Python-LangGraph exercise is freshly authored (no upstream commit existed for that track)
Pre-existing README gaps (missing entries for ex 07 CrewAI, ex 08 all tracks) are now filled in as part of the renumbering

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant