fips-agents-cli 0.5.1__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/PKG-INFO +42 -2
  2. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/README.md +41 -1
  3. fips_agents_cli-0.6.0/planning/agent-registry-roadmap.md +156 -0
  4. fips_agents_cli-0.6.0/planning/composable-agent-capabilities.md +126 -0
  5. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/pyproject.toml +1 -1
  6. fips_agents_cli-0.6.0/retrospectives/2026-04-10_full-stack-integration/RETRO.md +64 -0
  7. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/create.py +754 -81
  8. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/project.py +175 -0
  9. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/version.py +1 -1
  10. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.claude/commands/create-release.md +0 -0
  11. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.claude/docs-state.json +0 -0
  12. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/agents/README.md +0 -0
  13. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/agents/create-release.agent.md +0 -0
  14. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/workflows/test.yml +0 -0
  15. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.github/workflows/workflow.yaml +0 -0
  16. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/.gitignore +0 -0
  17. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/CLAUDE.md +0 -0
  18. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/LICENSE +0 -0
  19. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/RELEASE_CHECKLIST.md +0 -0
  20. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/PUBLISHING.md +0 -0
  21. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/QUICK_START_PUBLISHING.md +0 -0
  22. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/docs/README.md +0 -0
  23. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/llms.txt +0 -0
  24. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/AGENT_FRAMEWORK_PLAN.md +0 -0
  25. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/GENERATOR_IMPLEMENTATION_PLAN.md +0 -0
  26. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/IMPLEMENTATION_SUMMARY.md +0 -0
  27. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/MVP-PLAN.md +0 -0
  28. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/PLAN.md +0 -0
  29. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/PROMPT_ISSUE.md +0 -0
  30. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/planning/agent-template-gaps.md +0 -0
  31. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/research/BAML_RESEARCH_REPORT.md +0 -0
  32. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/research/Ignite-CLI-Architecture-Analysis.md +0 -0
  33. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/retrospectives/2026-04-06_issue-triage-v0.3.0/RETRO.md +0 -0
  34. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/scripts/README.md +0 -0
  35. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/scripts/release.sh +0 -0
  36. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/__init__.py +0 -0
  37. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/__main__.py +0 -0
  38. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/cli.py +0 -0
  39. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/__init__.py +0 -0
  40. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/generate.py +0 -0
  41. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/model_car.py +0 -0
  42. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/commands/patch.py +0 -0
  43. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/__init__.py +0 -0
  44. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/filesystem.py +0 -0
  45. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/generators.py +0 -0
  46. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/git.py +0 -0
  47. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/github.py +0 -0
  48. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/patching.py +0 -0
  49. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/src/fips_agents_cli/tools/validation.py +0 -0
  50. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/__init__.py +0 -0
  51. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/conftest.py +0 -0
  52. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_create.py +0 -0
  53. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_filesystem.py +0 -0
  54. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_generate.py +0 -0
  55. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_generators.py +0 -0
  56. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_github.py +0 -0
  57. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_model_car.py +0 -0
  58. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_project.py +0 -0
  59. {fips_agents_cli-0.5.1 → fips_agents_cli-0.6.0}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fips-agents-cli
3
- Version: 0.5.1
3
+ Version: 0.6.0
4
4
  Summary: CLI tool for creating and managing FIPS-compliant AI agent projects
5
5
  Project-URL: Homepage, https://github.com/rdwj/fips-agents-cli
6
6
  Project-URL: Repository, https://github.com/rdwj/fips-agents-cli
@@ -38,7 +38,7 @@ A command-line tool for creating and managing FIPS-compliant AI agent projects.
38
38
  ## Features
39
39
 
40
40
  - 🚀 Quick project scaffolding from templates
41
- - 📦 MCP server, AI agent, Go gateway, chat UI, and ModelCar project generation
41
+ - 📦 MCP server, AI agent, Go gateway, chat UI, sandbox, and ModelCar project generation
42
42
  - 🔧 Automatic project customization (pyproject.toml, module names, entry points)
43
43
  - ⚡ Component generation (tools, resources, prompts, middleware) with Jinja2 templates
44
44
  - 🎨 Beautiful CLI output with Rich
@@ -106,6 +106,9 @@ fips-agents create gateway my-gateway
106
106
  # Chat UI (connects to a gateway or agent)
107
107
  fips-agents create ui my-chat-ui
108
108
 
109
+ # Code execution sandbox (sidecar for agents)
110
+ fips-agents create sandbox my-sandbox
111
+
109
112
  # ModelCar (HuggingFace model as container)
110
113
  fips-agents create model-car ibm-granite/granite-3.1-2b-instruct \
111
114
  quay.io/user/models:granite-3.1-2b-instruct
@@ -273,6 +276,33 @@ fips-agents create ui my-chat-ui
273
276
  fips-agents create ui my-chat-ui --github --private
274
277
  ```
275
278
 
279
+ #### `create sandbox`
280
+
281
+ ```bash
282
+ fips-agents create sandbox <project-name> [OPTIONS]
283
+ ```
284
+
285
+ Creates a code execution sandbox project from the [code-sandbox](https://github.com/fips-agents/code-sandbox) repository. The sandbox provides a FastAPI-based sidecar for secure code execution inside agent pods, with multiple language profiles (base, data-science).
286
+
287
+ **Arguments:**
288
+
289
+ - `project-name` -- Name for your sandbox project
290
+
291
+ **Options:** Same shared options as above.
292
+
293
+ **Examples:**
294
+
295
+ ```bash
296
+ # Create sandbox project
297
+ fips-agents create sandbox my-sandbox
298
+
299
+ # Create with GitHub repo
300
+ fips-agents create sandbox my-sandbox --github --private
301
+
302
+ # Non-interactive mode
303
+ fips-agents create sandbox my-sandbox --yes --local
304
+ ```
305
+
276
306
  #### `create model-car`
277
307
 
278
308
  ```bash
@@ -625,6 +655,16 @@ make build-openshift PROJECT=my-chat-ui # Build on OpenShift
625
655
  make deploy PROJECT=my-chat-ui # Deploy via Helm
626
656
  ```
627
657
 
658
+ ### Sandbox
659
+
660
+ ```bash
661
+ cd my-sandbox
662
+ make install # Install dependencies
663
+ make test # Run tests
664
+ make build # Build container
665
+ make build PROFILE=data-science # Build with profile
666
+ ```
667
+
628
668
  ### ModelCar
629
669
 
630
670
  ```bash
@@ -5,7 +5,7 @@ A command-line tool for creating and managing FIPS-compliant AI agent projects.
5
5
  ## Features
6
6
 
7
7
  - 🚀 Quick project scaffolding from templates
8
- - 📦 MCP server, AI agent, Go gateway, chat UI, and ModelCar project generation
8
+ - 📦 MCP server, AI agent, Go gateway, chat UI, sandbox, and ModelCar project generation
9
9
  - 🔧 Automatic project customization (pyproject.toml, module names, entry points)
10
10
  - ⚡ Component generation (tools, resources, prompts, middleware) with Jinja2 templates
11
11
  - 🎨 Beautiful CLI output with Rich
@@ -73,6 +73,9 @@ fips-agents create gateway my-gateway
73
73
  # Chat UI (connects to a gateway or agent)
74
74
  fips-agents create ui my-chat-ui
75
75
 
76
+ # Code execution sandbox (sidecar for agents)
77
+ fips-agents create sandbox my-sandbox
78
+
76
79
  # ModelCar (HuggingFace model as container)
77
80
  fips-agents create model-car ibm-granite/granite-3.1-2b-instruct \
78
81
  quay.io/user/models:granite-3.1-2b-instruct
@@ -240,6 +243,33 @@ fips-agents create ui my-chat-ui
240
243
  fips-agents create ui my-chat-ui --github --private
241
244
  ```
242
245
 
246
+ #### `create sandbox`
247
+
248
+ ```bash
249
+ fips-agents create sandbox <project-name> [OPTIONS]
250
+ ```
251
+
252
+ Creates a code execution sandbox project from the [code-sandbox](https://github.com/fips-agents/code-sandbox) repository. The sandbox provides a FastAPI-based sidecar for secure code execution inside agent pods, with multiple language profiles (base, data-science).
253
+
254
+ **Arguments:**
255
+
256
+ - `project-name` -- Name for your sandbox project
257
+
258
+ **Options:** Same shared options as above.
259
+
260
+ **Examples:**
261
+
262
+ ```bash
263
+ # Create sandbox project
264
+ fips-agents create sandbox my-sandbox
265
+
266
+ # Create with GitHub repo
267
+ fips-agents create sandbox my-sandbox --github --private
268
+
269
+ # Non-interactive mode
270
+ fips-agents create sandbox my-sandbox --yes --local
271
+ ```
272
+
243
273
  #### `create model-car`
244
274
 
245
275
  ```bash
@@ -592,6 +622,16 @@ make build-openshift PROJECT=my-chat-ui # Build on OpenShift
592
622
  make deploy PROJECT=my-chat-ui # Deploy via Helm
593
623
  ```
594
624
 
625
+ ### Sandbox
626
+
627
+ ```bash
628
+ cd my-sandbox
629
+ make install # Install dependencies
630
+ make test # Run tests
631
+ make build # Build container
632
+ make build PROFILE=data-science # Build with profile
633
+ ```
634
+
595
635
  ### ModelCar
596
636
 
597
637
  ```bash
@@ -0,0 +1,156 @@
1
+ # Agent Registry — Research and Roadmap
2
+
3
+ **Date:** 2026-04-10
4
+ **Status:** Research complete, not yet planned for implementation
5
+
6
+ ## Concept
7
+
8
+ `fips-agents create registry my-registry` deploys a self-hosted registry to OpenShift with a UI for browsing and managing registered agents, MCP servers, tools, and prompts. Teams register their deployed services with `fips-agents register`, making them discoverable across the organization.
9
+
10
+ ## Industry Landscape (April 2026)
11
+
12
+ ### What exists
13
+
14
+ **Agent discovery standards:**
15
+ - **A2A Agent Cards** — JSON metadata at `/.well-known/agent.json` describing an agent's capabilities, endpoints, and auth. Linux Foundation stewardship. No registry standard yet (active discussion in a2aproject/A2A#741).
16
+ - **MCP Server Cards** — `.well-known` metadata for MCP servers, on the 2026 MCP roadmap. The official MCP Registry (registry.modelcontextprotocol.io) has ~2,000 entries but is public/community-oriented, not enterprise.
17
+ - **Agent Connect Protocol (ACP)** — Cisco-led (AGNTCY/Linux Foundation), defines REST/OpenAPI for invoking and configuring agents. Complements A2A.
18
+
19
+ **Cloud provider registries:**
20
+ - **AWS Agent Registry** (preview April 2026) — private governed catalog for agents, tools, skills, MCP servers. Semantic search, approval workflows, IAM + OAuth, CloudTrail audit. Auto-discovers from live A2A/MCP endpoints.
21
+ - **Microsoft Entra Agent Registry** — agent identity and governance in the Microsoft ecosystem.
22
+ - **Google Vertex AI Agent Builder** — tool governance layer with admin-curated catalogs.
23
+
24
+ **Open source:**
25
+ - **mcp-gateway-registry** (agentic-community) — OAuth (Keycloak/Entra), per-tool RBAC, audit trails, reverse proxy to MCP servers. Closest to what we'd want.
26
+ - **kagent** — Kubernetes-native agentic AI, CRD-based. Early stage.
27
+
28
+ **Prompt registries:**
29
+ - MLflow Prompt Registry, Langfuse, PromptLayer, LangSmith — versioning, environment aliases, A/B testing. Standalone products, not integrated with agent/tool registries.
30
+
31
+ **Red Hat direction:**
32
+ - MCP registry, catalog, and gateway stack planned for OpenShift AI
33
+ - MCP servers as items in the AI Assets catalog
34
+ - Longer-term "MCP-as-a-Service" vision
35
+
36
+ ### What's missing
37
+
38
+ No single open-source system unifies agents, MCP servers, tools, and prompts in one governed catalog with Kubernetes-native lifecycle. The pieces exist in isolation:
39
+ - AWS has the richest registry but is cloud-locked
40
+ - MCP has a public registry but no enterprise governance
41
+ - Prompt registries are standalone products
42
+ - RBAC is protocol-specific (no cross-protocol standard)
43
+ - A2A deliberately punts on the registry problem
44
+
45
+ ### RBAC for agents
46
+
47
+ Traditional RBAC is insufficient — agents chain multi-step plans autonomously. Emerging model is **dynamic RBAC**: bind an agent's declared purpose + operational context + verified identity to minimal, temporary permissions. Per-tool RBAC (mcp-gateway-registry), relationship-based access (Oso ReBAC), and IAM-based governance (AWS) are the main approaches.
48
+
49
+ ## What We'd Build
50
+
51
+ ### Phase 1: Discovery registry (near-term, after composable capabilities)
52
+
53
+ A lightweight catalog service that stores and serves metadata:
54
+
55
+ ```
56
+ fips-agents create registry my-registry # Deploy to OpenShift
57
+ fips-agents register # Register current project
58
+ ```
59
+
60
+ **What it stores:**
61
+ - Agent Cards (A2A-compatible JSON) — name, description, capabilities, endpoint, version
62
+ - MCP Server Cards — name, tools list, endpoint, transport
63
+ - Tool manifests — name, description, parameters, which agent/MCP server provides them
64
+ - Prompt entries — name, description, version, variables, template preview
65
+
66
+ **How registration works:**
67
+ - `fips-agents register` reads the current project type and metadata:
68
+ - Agent: reads `/.well-known/agent.json` from the running service (or generates from agent.yaml)
69
+ - MCP server: reads tool list from the running server (or from project structure)
70
+ - Prompts: reads from `prompts/` directory
71
+ - Pushes the metadata to the registry's API
72
+ - Registry stores it and makes it browsable
73
+
74
+ **UI:**
75
+ - Browse agents, MCP servers, tools, prompts in a web dashboard
76
+ - Search by name, capability, description
77
+ - View agent cards, tool schemas, prompt templates
78
+ - Show deployment status (healthy/unhealthy via health probes)
79
+ - Links to OpenShift console for the underlying deployments
80
+
81
+ **Tech stack:**
82
+ - Go server (consistent with gateway/UI templates) or Python FastAPI
83
+ - PostgreSQL for metadata storage
84
+ - OpenShift Route for the UI
85
+ - Helm chart for deployment
86
+ - Periodic health checks against registered endpoints
87
+
88
+ ### Phase 2: Governance (later)
89
+
90
+ Add approval workflows, RBAC, and audit:
91
+ - Admin approval required before an agent/tool is visible to others
92
+ - Role-based access: who can register, who can discover, who can invoke
93
+ - Audit trail: who registered what, when, who accessed it
94
+ - Integration with OpenShift RBAC (ServiceAccounts, Roles)
95
+ - Keycloak/OIDC for auth (follow mcp-gateway-registry pattern)
96
+
97
+ ### Phase 3: Enterprise tool/prompt catalog (distant)
98
+
99
+ - Curated enterprise tools that any agent can use (governed, versioned)
100
+ - Enterprise prompt library with approval workflows
101
+ - Agent RBAC: which agents can use which tools (policy-based)
102
+ - Integration with Red Hat's AI Hub / OpenShift AI catalog
103
+
104
+ ## CLI Integration
105
+
106
+ ```bash
107
+ # Deploy a registry
108
+ fips-agents create registry my-registry
109
+ cd my-registry && make deploy PROJECT=my-registry
110
+
111
+ # Register the thing you're working on
112
+ cd ../my-agent
113
+ fips-agents register # auto-detect project type, register with default registry
114
+ fips-agents register --registry my-registry # explicit registry
115
+ fips-agents register --type agent # force type
116
+ fips-agents register --type mcp-server
117
+
118
+ # Browse
119
+ fips-agents registry list # list all registered items
120
+ fips-agents registry list --type agent # filter by type
121
+ fips-agents registry search "web search" # semantic search
122
+ ```
123
+
124
+ The `register` command could also be a post-deploy hook in the Makefile:
125
+ ```makefile
126
+ deploy: ## Deploy to OpenShift and register
127
+ helm upgrade --install ...
128
+ fips-agents register --registry $(REGISTRY_URL)
129
+ ```
130
+
131
+ ## Open Questions
132
+
133
+ 1. **Storage**: PostgreSQL vs CRDs? CRDs are more Kubernetes-native but harder to query. PostgreSQL is simpler for search and UI.
134
+ 2. **Health monitoring**: Should the registry actively poll registered endpoints, or rely on passive registration updates?
135
+ 3. **Scope**: Should the registry be namespace-scoped, cluster-scoped, or multi-cluster?
136
+ 4. **Red Hat alignment**: How does this relate to Red Hat's planned MCP catalog in OpenShift AI? Complement or conflict?
137
+ 5. **Standards**: Should agent cards be A2A-native, or a superset that includes MCP/tool/prompt metadata?
138
+ 6. **Auth for registration**: How does `fips-agents register` authenticate with the registry? OpenShift token? API key?
139
+
140
+ ## Relationship to Other Roadmap Items
141
+
142
+ - **HTTP mode** (Phase 1 of composable capabilities) must ship first — agents need `/.well-known/agent.json` to be registerable
143
+ - **A2A agent cards** are already in the gateway template — the registry reads these
144
+ - **MCP server template** already produces discoverable tools — the registry catalogs them
145
+ - **Multi-agent orchestration** benefits most from a registry — orchestrator agents can discover specialized agents dynamically
146
+
147
+ ## References
148
+
149
+ - A2A Protocol: https://a2a-protocol.org/latest/specification/
150
+ - A2A Registry Discussion: https://github.com/a2aproject/A2A/discussions/741
151
+ - MCP Registry: https://registry.modelcontextprotocol.io/
152
+ - MCP 2026 Roadmap: https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/
153
+ - mcp-gateway-registry: https://github.com/agentic-community/mcp-gateway-registry
154
+ - AWS Agent Registry: https://aws.amazon.com/blogs/machine-learning/the-future-of-managing-agents-at-scale-aws-agent-registry-now-in-preview/
155
+ - AGNTCY ACP Spec: https://github.com/agntcy/acp-spec
156
+ - kagent: https://kagent.dev/
@@ -0,0 +1,126 @@
1
+ # Composable Agent Capabilities — Planning
2
+
3
+ **Date:** 2026-04-10
4
+ **Status:** Discussion, not yet implemented
5
+
6
+ ## Vision
7
+
8
+ The CLI evolves from "scaffold once" to "scaffold + compose." Agents start lean and gain capabilities through `add` commands. Each capability is a template fragment (files, deps, config) that the CLI layers into an existing project.
9
+
10
+ ## Command Design
11
+
12
+ ### Current commands
13
+ - `create agent|mcp-server|gateway|ui` — scaffold a new project
14
+ - `generate tool|resource|prompt|middleware` — add a single MCP component from Jinja2 template
15
+
16
+ ### Proposed: `add` command
17
+ - `add http` — FastAPI server + health probes + agent card + uvicorn CMD
18
+ - `add tool <name>` — add a pre-built tool (web-search, code-executor, etc.)
19
+ - `add memory` — MemoryHub integration (config init, dependency, schema)
20
+ - `add rag` — RAG client (LlamaStack or equivalent connection, retrieval tool)
21
+ - `add sessions` — conversation state persistence (Redis/PostgreSQL)
22
+ - `add observability` — structured logging, metrics
23
+
24
+ ### Command relationship
25
+ - `generate` creates a **single component file** from a Jinja2 template (MCP-oriented)
26
+ - `add` layers a **whole capability** (multiple files, dependencies, config, tests)
27
+ - `add tool` should detect project type (MCP server vs agent) and generate the right decorator/structure. This requires consistent tree structure across templates.
28
+
29
+ ### Slash command relationship
30
+ - CLI `add` commands handle **structural changes** (files, deps, Containerfile)
31
+ - Slash commands handle **behavioral configuration** (agent.yaml tuning, prompt design, tool parameters)
32
+ - Example flow: `fips-agents add tool web-search` → `/configure-search` in Claude Code
33
+
34
+ ## Capability Tiers
35
+
36
+ ### Tier 1 — Almost every agent
37
+ 1. **HTTP mode** — FastAPI, /v1/chat/completions, health probes, A2A agent card
38
+ 2. **Web search** — Tavily/Brave with rate limiting
39
+ 3. **Observability** — structured logging, optional Prometheus metrics
40
+
41
+ ### Tier 2 — Common
42
+ 4. **Memory** — MemoryHub integration (already partially wired in base_agent)
43
+ 5. **Code execution** — sandboxed Python/shell via sidecar container
44
+ 6. **RAG** — client-side connection to LlamaStack or equivalent (not rebuilding RAG infra)
45
+ 7. **Sessions** — Redis/PostgreSQL conversation state
46
+
47
+ ### Tier 3 — Specialized
48
+ 8. **A2A discovery** — agent-to-agent calling, registry
49
+ 9. **Auth** — OAuth2/OIDC middleware
50
+ 10. **Multi-model routing** — cheap model for classification, expensive for generation
51
+ 11. **File handling** — upload/download, temp storage
52
+
53
+ ## Code Execution Design
54
+
55
+ Recommended: **sidecar container** approach.
56
+ - `add tool code-executor` adds the tool to the agent AND a sidecar to the Helm chart
57
+ - Agent sends code to sidecar via localhost HTTP
58
+ - Sidecar runs in a locked-down container (no network, resource limits, timeout)
59
+ - Stronger isolation than in-process subprocess, simpler than managing a separate MCP server
60
+ - Advanced path: MCP code-execution server for shared infrastructure
61
+
62
+ ## RAG Design
63
+
64
+ Don't rebuild RAG — connect to it.
65
+ - LlamaStack provides vector store, embedding, retrieval out of the box
66
+ - `add rag` sets up the client side: config for the RAG endpoint, retrieval tool, ingestion tool
67
+ - The RAG infrastructure (LlamaStack, vLLM for embeddings, vector DB) is separate
68
+ - Agent template provides the wiring pattern, not the infrastructure
69
+ - This will likely need a full session to design and implement properly
70
+
71
+ ## Multi-Agent Design
72
+
73
+ Building blocks already exist:
74
+ - Each agent has `/.well-known/agent.json` (A2A agent card)
75
+ - Gateway routes between agents
76
+ - UI connects to any OpenAI-compatible endpoint
77
+
78
+ Orchestration pattern:
79
+ - An "orchestrator" agent discovers other agents via their agent cards
80
+ - Delegates subtasks via HTTP to specialized agents
81
+ - Each agent is independently deployable and scalable
82
+ - Gateway provides the routing layer
83
+
84
+ This is the natural evolution of the current stack (agent + gateway + UI) into a multi-agent system. The `add a2a` command would wire up the discovery and calling patterns.
85
+
86
+ ## Memory Design
87
+
88
+ MemoryHub integration is partially wired into base_agent already:
89
+ - `agent.yaml` has a `memory:` section pointing to `.memoryhub.yaml`
90
+ - `base_agent/memory.py` has `create_memory_client()` that falls back to NullMemoryClient
91
+ - `add memory` command would: install memoryhub dep, run `memoryhub config init`, offer `/configure-memory` slash command for schema design
92
+
93
+ This is a quick win — most of the framework code exists.
94
+
95
+ ## Prioritization
96
+
97
+ ### Phase 1: HTTP mode + `add` framework
98
+ - HTTP mode is the #1 blocker (every agent that needs a URL)
99
+ - Building the `add` infrastructure enables everything else
100
+ - Reference implementation: `demo-fips-agent-builder/src/server.py`
101
+
102
+ ### Phase 2: Memory + web search as first `add` capabilities
103
+ - Memory (MemoryHub) is partially wired, quick to finish
104
+ - Web search validates the `add tool` pattern (we have a working Tavily implementation)
105
+ - These are two different shapes: memory is config/framework, web search is a tool file
106
+
107
+ ### Phase 3: Code executor + RAG client
108
+ - Code executor validates the sidecar pattern (Helm chart changes)
109
+ - RAG client connects to LlamaStack (full session needed for design)
110
+
111
+ ### Phase 4: Multi-agent orchestration
112
+ - A2A discovery and inter-agent calling
113
+ - Orchestrator pattern on top of the gateway
114
+ - Builds on HTTP mode foundation
115
+
116
+ ## Open Questions
117
+
118
+ 1. Should `add tool` auto-detect project type (MCP vs agent) or require explicit context?
119
+ 2. Where do capability template fragments live — in the CLI package, or in the template repos?
120
+ 3. How do we version capability fragments independently from the base templates?
121
+ 4. For RAG: do we standardize on LlamaStack, or support multiple backends?
122
+ 5. For multi-agent: does the gateway need to become aware of multiple backends, or is that a separate orchestration layer?
123
+
124
+ ## Key Bug Found This Session
125
+
126
+ redhat-ai-americas/agent-template#19: The example agent doesn't append the assistant's tool_use message before tool_result messages, violating the Anthropic API contract. Must fix before HTTP mode ships, since it affects every agent using Anthropic.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "fips-agents-cli"
7
- version = "0.5.1"
7
+ version = "0.6.0"
8
8
  description = "CLI tool for creating and managing FIPS-compliant AI agent projects"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,64 @@
1
+ # Retrospective: Full Stack Integration and Agent Template Fixes
2
+
3
+ **Date:** 2026-04-10
4
+ **Effort:** Integration test UI → Gateway → Agent on OpenShift, fix all agent template bugs, close gateway/UI issues, release v0.5.1, build a working search agent, plan composable capabilities
5
+ **Issues closed:** gateway-template #1, #4, #5; ui-template #2, #5; agent-template 12 bugs (no issue tracker)
6
+ **Filed:** agent-template #19 (tool_use message ordering)
7
+ **Release:** v0.5.1 (PyPI)
8
+ **Commits:** 9748e0b..03927b7 (CLI), 4993c05..cc36289 (gateway), add7901..84ef204 (UI), 9efa650..4093298 (agent-template)
9
+
10
+ ## What We Set Out To Do
11
+
12
+ 1. Integration test the full stack (UI → Gateway → Agent) on OpenShift
13
+ 2. Fix bugs found during testing
14
+ 3. Close high-priority issues on gateway (#5 tests, #1 logging, #4 BuildConfig) and UI (#5 tests, #2 markdown)
15
+ 4. Fix all 12 agent-template bugs from the gap analysis
16
+ 5. Add HTTP mode to the agent template (stretch goal)
17
+
18
+ ## What Changed
19
+
20
+ | Change | Type | Rationale |
21
+ |--------|------|-----------|
22
+ | Added reverse proxy to UI server | Good pivot | CORS issue discovered during integration — browser can't cross-origin fetch to gateway. Proxy is the correct architecture (keeps internal URLs internal). |
23
+ | HTTP mode deferred | Scope deferral | Enough shipped without it. Building `add` command framework first makes the feature composable rather than baked-in. |
24
+ | Composable capabilities planning | Good pivot | Search agent experience crystallized the vision — agents need layered capabilities, not monolithic templates. |
25
+ | Agent registry research | Good pivot | User-initiated strategic planning. AWS launched Agent Registry the same day — validated the concept. |
26
+ | v0.5.0 → v0.5.1 re-cut | Missed | Pre-existing Black formatting drift in two test files. Local `black --check` caught it but only on changed files; CI checks all files. |
27
+
28
+ ## What Went Well
29
+
30
+ - **Full stack worked on first deploy** — agent, gateway, UI all running and streaming through three layers with no proxy/SSE bugs
31
+ - **Parallel agent execution** — gateway tests, UI tests, and markdown rendering all built concurrently. Agent-template Python fixes and infra fixes also ran in parallel. Significant time savings.
32
+ - **OpenShift BuildConfig** replaced ec2-dev remote builds cleanly — simpler, no external dependency
33
+ - **Search agent validated the scaffolding end-to-end** — `create agent` → customize → real Tavily + Anthropic → working agent in minutes
34
+ - **Bug fix thoroughness** — all 12 template bugs fixed, verified by separate review agent, 360 tests passing
35
+ - **Chat UI was surprisingly polished** — streaming, markdown rendering, responsive design all worked well in the browser
36
+
37
+ ## Gaps Identified
38
+
39
+ | Gap | Severity | Resolution |
40
+ |-----|----------|------------|
41
+ | v0.5.0 CI failed (Black drift in test files we didn't touch) | Fixed | Committed formatting, re-cut as v0.5.1 |
42
+ | Tool_use/tool_result message ordering bug in example agent | Follow-up issue | agent-template#19 |
43
+ | No CI workflows on gateway-template or ui-template repos | Follow-up | Tests exist and pass locally but no GitHub Actions |
44
+ | `generate tool` vs `add tool` command overlap unresolved | Follow-up | Design captured in planning/composable-agent-capabilities.md |
45
+ | ResearchAssistant example is overcomplex for a starting point | Accept | Will simplify when HTTP mode ships |
46
+
47
+ ## Action Items
48
+
49
+ - [ ] Fix agent-template#19 (tool_use ordering) — blocks Anthropic-powered agents
50
+ - [ ] Add CI workflows to gateway-template and ui-template repos
51
+ - [ ] Build HTTP mode and `add` command framework (next session priority)
52
+ - [ ] Add MemoryHub and web-search as first `add` capabilities
53
+
54
+ ## Patterns
55
+
56
+ **Start:** Run `black --check src tests` (all files, not just changed) before cutting a release. The CI checks everything; local checks should match.
57
+
58
+ **Start:** When building agent step loops that use tool calling, always append the assistant message (with tool_calls) before appending tool results. This is an Anthropic API requirement and should be documented in the template.
59
+
60
+ **Continue:** Parallel sub-agent execution for independent work streams — consistently saves time with no coordination overhead.
61
+
62
+ **Continue:** OpenShift BuildConfig for builds — simpler than remote builds, no external infrastructure needed.
63
+
64
+ **Continue:** Deploying and testing the real stack on OpenShift rather than just running unit tests locally. The CORS issue, WORKDIR permissions, and tool_use ordering bug were all found only through integration testing.