agent-foundry-runtime 0.4.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 (27) hide show
  1. agent_foundry_runtime-0.4.0/AUTHORSHIP.md +7 -0
  2. agent_foundry_runtime-0.4.0/LICENSE +21 -0
  3. agent_foundry_runtime-0.4.0/PKG-INFO +382 -0
  4. agent_foundry_runtime-0.4.0/README.md +359 -0
  5. agent_foundry_runtime-0.4.0/agent_foundry/__init__.py +2 -0
  6. agent_foundry_runtime-0.4.0/agent_foundry/__main__.py +5 -0
  7. agent_foundry_runtime-0.4.0/agent_foundry/cli.py +613 -0
  8. agent_foundry_runtime-0.4.0/agent_foundry/config.py +190 -0
  9. agent_foundry_runtime-0.4.0/agent_foundry/daemon.py +220 -0
  10. agent_foundry_runtime-0.4.0/agent_foundry/eval.py +93 -0
  11. agent_foundry_runtime-0.4.0/agent_foundry/executor.py +159 -0
  12. agent_foundry_runtime-0.4.0/agent_foundry/indexer.py +272 -0
  13. agent_foundry_runtime-0.4.0/agent_foundry/judge.py +88 -0
  14. agent_foundry_runtime-0.4.0/agent_foundry/logging_db.py +437 -0
  15. agent_foundry_runtime-0.4.0/agent_foundry/loop.py +226 -0
  16. agent_foundry_runtime-0.4.0/agent_foundry/mcp_server.py +191 -0
  17. agent_foundry_runtime-0.4.0/agent_foundry/models.py +166 -0
  18. agent_foundry_runtime-0.4.0/agent_foundry/planner.py +288 -0
  19. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/PKG-INFO +382 -0
  20. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/SOURCES.txt +25 -0
  21. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/dependency_links.txt +1 -0
  22. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/entry_points.txt +2 -0
  23. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/requires.txt +14 -0
  24. agent_foundry_runtime-0.4.0/agent_foundry_runtime.egg-info/top_level.txt +1 -0
  25. agent_foundry_runtime-0.4.0/pyproject.toml +35 -0
  26. agent_foundry_runtime-0.4.0/setup.cfg +4 -0
  27. agent_foundry_runtime-0.4.0/tests/test_core.py +195 -0
@@ -0,0 +1,7 @@
1
+ # Authorship
2
+
3
+ Every skill, agent, and other authored artifact in the Agent Foundry catalog is **original work by the Agent Foundry Contributors**, released under the MIT license.
4
+
5
+ The catalog is a curated, synthetic body of engineering discipline. Skills describe methodology; agents are role definitions written for this project's orchestrator. Nothing here is a fork, port, or republication of another project.
6
+
7
+ If, after a good-faith read of any specific skill or agent, you believe it contains copied expression from a third-party work, please open an issue titled `AUTHORS REVIEW` and we will replace that material with original language.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Youcisla Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,382 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-foundry-runtime
3
+ Version: 0.4.0
4
+ Summary: Curated runtime skill orchestrator for AI coding assistants: plan, execute, verify.
5
+ Author: Agent Foundry Contributors
6
+ License: MIT
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ License-File: AUTHORSHIP.md
11
+ Requires-Dist: pydantic>=2.5
12
+ Requires-Dist: click>=8.1
13
+ Requires-Dist: fastapi>=0.110
14
+ Requires-Dist: uvicorn[standard]>=0.27
15
+ Requires-Dist: httpx>=0.27
16
+ Requires-Dist: pyyaml>=6.0
17
+ Requires-Dist: python-frontmatter>=1.0
18
+ Requires-Dist: litellm>=1.40
19
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
20
+ Provides-Extra: semantic
21
+ Requires-Dist: sentence-transformers>=2.7; extra == "semantic"
22
+ Dynamic: license-file
23
+
24
+ <!-- mcp-name: io.github.youcisla/agent-foundry -->
25
+ <div align="center">
26
+
27
+ # Agent Foundry
28
+
29
+ **Skill and agent runtime for AI coding assistants.**
30
+
31
+ Plan → execute → verify. Skills, agents, a local daemon.
32
+ MIT, local, no cloud. 35 original skills, no third-party skill content.
33
+
34
+ <br>
35
+
36
+ [![MIT License](https://img.shields.io/badge/License-MIT-f5a623.svg)](LICENSE)
37
+ [![Version](https://img.shields.io/badge/version-0.4.0-4ade80.svg)](CHANGELOG.md)
38
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-6496ff.svg)](https://www.python.org)
39
+ [![npm](https://img.shields.io/badge/npm-%40youcisla%2Fagent--foundry-6496ff.svg)](https://www.npmjs.com/package/@youcisla/agent-foundry)
40
+ [![Skills](https://img.shields.io/badge/skills-35-f5a623.svg)](#catalog)
41
+ [![Agents](https://img.shields.io/badge/agents-3-4ade80.svg)](#catalog)
42
+ [![Gates](https://img.shields.io/badge/quality%20gates-3%20green-4ade80.svg)](#quality-gates)
43
+ [![External refs](https://img.shields.io/badge/external%20refs-0-4ade80.svg)](https://github.com/youcisla/Agent-Foundry/blob/main/scripts/nox.sh)
44
+ [![Web](https://img.shields.io/badge/live%20demo-youcisla--agents.vercel.app-f5a623)](https://youcisla-agents.vercel.app)
45
+
46
+ <br>
47
+
48
+ [**Quick start**](#quick-start) · [**Catalog**](#catalog) · [**Architecture**](#architecture) · [**Commands**](#commands) · [**Web app**](https://youcisla-agents.vercel.app)
49
+
50
+ </div>
51
+
52
+ ---
53
+
54
+ ## Why Agent Foundry
55
+
56
+ > Models hallucinate. They over-comment. They reach for `npm install` when
57
+ > you asked for a one-line fix. Agent Foundry steers the model back to the
58
+ > actual work.
59
+
60
+ Three layers:
61
+
62
+ | Layer | What | Lives in |
63
+ |---|---|---|
64
+ | **🧠 Skills** | Disciplines the model applies (how to think, not what to know) | `skills/core/<name>/SKILL.md` |
65
+ | **🤖 Agents** | Roles the orchestrator can dispatch (critic, planner, orchestrator) | `agents/af-*/AGENT.md` |
66
+ | **⚙️ Orchestrator** | Local daemon that ranks, dispatches, executes, logs, judges | `agent_foundry/` (Python) |
67
+
68
+ Each layer is portable. A skill body is a plain markdown file with a trigger
69
+ phrase. An agent is a role definition. The orchestrator is a Python package
70
+ you can `pip install` or run from source.
71
+
72
+ ---
73
+
74
+ ## Quick start
75
+
76
+ ### 1. Install
77
+
78
+ macOS / Linux / Git Bash:
79
+
80
+ ```bash
81
+ curl -fsSL https://raw.githubusercontent.com/youcisla/Agent-Foundry/main/install.sh | bash
82
+ ```
83
+
84
+ Windows (PowerShell):
85
+
86
+ ```powershell
87
+ irm https://raw.githubusercontent.com/youcisla/Agent-Foundry/main/scripts/install.ps1 | iex
88
+ ```
89
+
90
+ Or from npm (cross-platform, Node 18+):
91
+
92
+ ```bash
93
+ npm install -g @youcisla/agent-foundry
94
+ agent-foundry # auto-detect harness and install
95
+ ```
96
+
97
+ Then set an API key:
98
+
99
+ ```bash
100
+ export ANTHROPIC_API_KEY=sk-... # or OPENAI_API_KEY
101
+ ```
102
+
103
+ ### 2. Use it
104
+
105
+ In Claude Code (or any harness that accepts slash commands):
106
+
107
+ ```bash
108
+ /af "build a react component" # plan + execute
109
+ /plan "audit this API" # see which skills match
110
+ ```
111
+
112
+ Without a harness:
113
+
114
+ ```bash
115
+ agent-foundry plan "kill generic AI slop"
116
+ agent-foundry run "refactor the API design"
117
+ agent-foundry doctor
118
+ ```
119
+
120
+ ### 3. Or browse first
121
+
122
+ → **[youcisla-agents.vercel.app](https://youcisla-agents.vercel.app)** has the
123
+ full catalog, an interactive knowledge graph, and one-click install.
124
+
125
+ ### 4. Or connect over MCP
126
+
127
+ ```bash
128
+ agent-foundry mcp # stdio MCP server: plan, execute, list_skills, get_skill
129
+ ```
130
+
131
+ Registered name: `io.github.youcisla/agent-foundry`.
132
+
133
+ ### 5. Measure a skill instead of trusting it
134
+
135
+ ```bash
136
+ agent-foundry eval --tasks tasks.json
137
+ ```
138
+
139
+ Each task runs twice, with and without the skill, and reports the pass-rate
140
+ lift. Task format: `{"id", "prompt", "skill", "verify"}` where `verify` is a
141
+ shell command that receives the output on stdin. The layout matches
142
+ SkillsBench v1.1 (`benchflow/skillsbench`), so published benchmarks can be
143
+ reused.
144
+
145
+ ---
146
+
147
+ ## Architecture
148
+
149
+ ```text
150
+ Your prompt (/af build a react component)
151
+ └─▶ Agent Foundry daemon
152
+ └─▶ planner · rank_skills
153
+ └─▶ executor · LiteLLM ⇄ LLM provider (Claude, OpenAI, …)
154
+ └─▶ SQLite · executions.db
155
+ └─▶ Response to user
156
+ ```
157
+
158
+ > Interactive versions of every diagram live on the site:
159
+ > **[/graph](https://youcisla-agents.vercel.app/graph)** (knowledge graph + orchestration) and **[/audit](https://youcisla-agents.vercel.app/audit)**.
160
+
161
+ ### What's in the box
162
+
163
+ ```text
164
+ skills/ 35 disciplines (25 core + 10 optional) ─┐ feed
165
+ agents/ af-planner · af-critic · af-orchestrator │ the
166
+ ▼ indexer
167
+ agent_foundry/ config.py ─▶ daemon.py (FastAPI)
168
+ indexer.py ─▶ planner.py ─▶ loop.py ⇄ executor.py
169
+ loop.py ─▶ judge.py (af-critic) ─▶ logging_db.py
170
+ ```
171
+
172
+ The daemon is lazy-started by the CLI, so there is no systemd/launchd requirement.
173
+ Everything runs locally. Your data stays in `~/.config/agent-foundry/executions.db`.
174
+
175
+ ### The loop, end to end
176
+
177
+ ```text
178
+ 1. user → run_loop : /af "kill generic AI slop"
179
+ 2. run_loop → planner : rank_skills(prompt, index)
180
+ 3. planner → run_loop : top match (e.g. anti-slop, 0.24)
181
+ 4. run_loop → run_loop : budget guard
182
+ 5. run_loop → executor : build_messages(prompt, body)
183
+ 6. executor → LiteLLM : POST /v1/messages
184
+ 7. LiteLLM → executor : response text
185
+ 8. executor → run_loop : response + cost
186
+ 9. (judge=true) run_loop → af-critic : score → {corr, slop, scope, verdict}
187
+ 10. run_loop → SQLite : log_execution(...)
188
+ 11. run_loop → user : LoopResponse {output, plan, judge_score?}
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Catalog
194
+
195
+ **35 skills, 3 agents.** All original work under MIT. Each skill:
196
+
197
+ - 📏 **≤150 lines / ≤8 KB** (Codex cap, no exceptions)
198
+ - 🎯 **Exactly one trigger phrase** (`Use when...` so the model knows when to fire)
199
+ - 🚫 **Anti-patterns + Verification checklist** (teach what *not* to do, then confirm it was done)
200
+ - ⚡ **Action verbs, not tool names** (`examine` not `Read`, `create` not `Write`)
201
+
202
+ ### Core skills (25)
203
+
204
+ | Skill | Trigger |
205
+ |---|---|
206
+ | [`anti-slop`](skills/core/anti-slop/SKILL.md) | Kill generic AI patterns before they ship |
207
+ | [`api-design`](skills/core/api-design/SKILL.md) | Use when creating a new API endpoint or reviewing API consistency |
208
+ | [`automation-pick`](skills/core/automation-pick/SKILL.md) | Decide whether to automate a task before automating |
209
+ | [`bottleneck-gating`](skills/core/bottleneck-gating/SKILL.md) | Phase a project by measured bottleneck, not intuition |
210
+ | [`constraint-then-solve`](skills/core/constraint-then-solve/SKILL.md) | Restate the problem, catalog constraints, then solve |
211
+ | [`context-optimization`](skills/core/context-optimization/SKILL.md) | Use on any task with >2K-token outputs, big files, or repeated reads |
212
+ | [`cron-troubleshoot`](skills/core/cron-troubleshoot/SKILL.md) | Debug a missing or wrong cron job |
213
+ | [`e2e-test-strategy`](skills/core/e2e-test-strategy/SKILL.md) | Use when designing test coverage for a web app or API |
214
+ | [`engram-routing`](skills/core/engram-routing/SKILL.md) | Route prompts via O(1) N-gram lookup when trigger patterns should match fast |
215
+ | [`feedback-loop`](skills/core/feedback-loop/SKILL.md) | After shipping, instrument → measure → iterate |
216
+ | [`knowledge-extract`](skills/core/knowledge-extract/SKILL.md) | Turn a session into a skill draft |
217
+ | [`landscape-first`](skills/core/landscape-first/SKILL.md) | Research the space before building |
218
+ | [`measure-first`](skills/core/measure-first/SKILL.md) | Use when about to optimize, refactor, or claim a system is slow |
219
+ | [`plan-before-code`](skills/core/plan-before-code/SKILL.md) | Use before writing any non-trivial code change |
220
+ | [`plan-then-act`](skills/core/plan-then-act/SKILL.md) | Use when a task has multiple steps and the order matters |
221
+ | [`prompt-discipline`](skills/core/prompt-discipline/SKILL.md) | Use on every non-trivial task: think, simplify, edit surgical, stay goal-driven |
222
+ | [`pushback-when-wrong`](skills/core/pushback-when-wrong/SKILL.md) | Use when reviewing an assertion that smells off |
223
+ | [`quality-protocol`](skills/core/quality-protocol/SKILL.md) | Use before declaring a task complete |
224
+ | [`re-verify-findings`](skills/core/re-verify-findings/SKILL.md) | Use after any prior verification claimed a finding |
225
+ | [`read-before-build`](skills/core/read-before-build/SKILL.md) | Read source files before writing code |
226
+ | [`session-closeout`](skills/core/session-closeout/SKILL.md) | Apply at the end of any multi-step project |
227
+ | [`session-distill`](skills/core/session-distill/SKILL.md) | Extract patterns from every session |
228
+ | [`show-your-work`](skills/core/show-your-work/SKILL.md) | Output a thinking trace after complex tasks |
229
+ | [`verify-first`](skills/core/verify-first/SKILL.md) | Apply before committing to any claim |
230
+ | [`workflow-decompose`](skills/core/workflow-decompose/SKILL.md) | Use when designing or debugging an automation |
231
+
232
+ ### Optional skills (10)
233
+
234
+ | Skill | Trigger |
235
+ |---|---|
236
+ | [`persistent-memory`](skills/optional/persistent-memory/SKILL.md) | Use when persisting context across sessions or threading memory across agents |
237
+ | [`token-compression`](skills/optional/token-compression/SKILL.md) | Compress tool outputs before they consume context |
238
+ | [`chrome-devtools-mcp-bridge`](skills/optional/chrome-devtools-mcp-bridge/SKILL.md) | Drive Chrome DevTools from an agent |
239
+ | [`design-language`](skills/optional/design-language/SKILL.md) | Apply Apple-grade UI polish |
240
+ | [`funnel-pr-guard`](skills/optional/funnel-pr-guard/SKILL.md) | Guard conversion-critical paths from breaking |
241
+ | [`sql-migration-trio`](skills/optional/sql-migration-trio/SKILL.md) | Three-file migration pattern (up/down/schema) |
242
+ | [`agent-memory-vault`](skills/optional/agent-memory-vault/SKILL.md) | Shared structured memory that survives agent sessions |
243
+ | [`agent-team-standards`](skills/optional/agent-team-standards/SKILL.md) | Per-project locked agent skill set with version pins |
244
+ | [`autonomous-briefing`](skills/optional/autonomous-briefing/SKILL.md) | Run a fully autonomous morning briefing |
245
+ | [`book-to-skill`](skills/optional/book-to-skill/SKILL.md) | Convert book chapters or long articles into a runnable skill |
246
+
247
+ ### Agents (3)
248
+
249
+ | Agent | Model | Job |
250
+ |---|---|---|
251
+ | [`af-critic`](agents/af-critic/AGENT.md) | `opus` | Score output on correctness, slop, scope. Returns JSON. |
252
+ | [`af-planner`](agents/af-planner/AGENT.md) | `opus` | Decompose a request into a skill/agent plan. Returns JSON. |
253
+ | [`af-orchestrator`](agents/af-orchestrator/AGENT.md) | `opus` | Dispatch subtasks to specialized agents and skills, then merge results. |
254
+
255
+ ---
256
+
257
+ ## Commands
258
+
259
+ | Command | What it does |
260
+ |---|---|
261
+ | `agent-foundry plan "<prompt>"` | Rank skills for a prompt |
262
+ | `agent-foundry run "<prompt>"` | Plan + execute the top-ranked skill |
263
+ | `agent-foundry resume <session_id> "<prompt>"` | Continue a loop session with a follow-up |
264
+ | `agent-foundry session <session_id>` | Inspect a stored loop session |
265
+ | `agent-foundry execute <skill_id> "<prompt>"` | Run a specific skill |
266
+ | `agent-foundry doctor` | Health-check: config, index, daemon, API key |
267
+ | `agent-foundry status` | Routing accuracy, fallback rate, average cost |
268
+ | `agent-foundry consult "<need>"` | Recommend skills for a need |
269
+ | `agent-foundry cost-report` | Token and time estimates per skill |
270
+ | `agent-foundry index` | Rebuild the skill index from disk |
271
+ | `agent-foundry browse` | Browse/search the catalog, or `--read <id>` |
272
+ | `agent-foundry mcp` | Start the MCP stdio server (plan/execute/list_skills/get_skill) |
273
+ | `agent-foundry eval --tasks <file>` | Paired skill eval: with vs without, reports lift |
274
+ | `agent-foundry serve` | Start the daemon (lazy-started on first command) |
275
+
276
+ Every command also has an HTTP endpoint on the daemon (`/plan`, `/execute`, `/loop`, `/loop/resume`, `/loop/{id}`, `/index`, `/health`) for programmatic use.
277
+
278
+ ---
279
+
280
+ ## Install profiles
281
+
282
+ The shell installer takes a profile:
283
+
284
+ ```bash
285
+ AF_PROFILE=minimal ./install.sh # Skills only (no daemon)
286
+ AF_PROFILE=core ./install.sh # Skills + daemon (default)
287
+ AF_PROFILE=full ./install.sh # Skills + daemon + hooks
288
+ ```
289
+
290
+ Run from source (any OS):
291
+
292
+ ```bash
293
+ git clone https://github.com/youcisla/Agent-Foundry.git ~/.agent-foundry
294
+ cd ~/.agent-foundry && pip install -e .
295
+ ```
296
+
297
+ See [INSTALL.md](INSTALL.md) for the full matrix of harnesses, profiles, and platforms.
298
+
299
+ ---
300
+
301
+ ## Requirements
302
+
303
+ - **Python 3.10+** (for the daemon) or **Node 18+** (for the cross-platform installer)
304
+ - macOS, Linux, or Windows
305
+ - A supported harness: Claude Code, Codex, Gemini, Hermes, OpenCode, or any of the 13 adapters
306
+ - An API key (Anthropic, OpenAI, or any provider LiteLLM supports)
307
+ - ~50 MB disk for the catalog and generated index
308
+
309
+ ---
310
+
311
+ ## Quality gates
312
+
313
+ Every commit runs three gates. **All green right now.**
314
+
315
+ ```bash
316
+ # 34 assets pass static quality checks (trigger phrase, body size, anti-patterns)
317
+ python scripts/foundry-eval.py
318
+
319
+ # All skills have correct frontmatter (name, description, version, author)
320
+ ./scripts/validate.sh
321
+
322
+ # No external-reference names in tracked files (provenance gate)
323
+ bash scripts/nox.sh
324
+ ```
325
+
326
+ **Current:**
327
+
328
+ | Gate | Result |
329
+ |---|---|
330
+ | `foundry-eval.py` | **34 passed, 0 failed** ✅ |
331
+ | `validate.sh` | **35 skills, 0 failed** ✅ |
332
+ | `nox.sh` | **0 external references** ✅ |
333
+
334
+ The `nox.sh` gate is the strongest guarantee: it scans every tracked file for
335
+ project-handle names so that the catalog stays original work.
336
+
337
+ ---
338
+
339
+ ## Web app
340
+
341
+ Browse the catalog, the knowledge graph, and the audit at
342
+ **[youcisla-agents.vercel.app](https://youcisla-agents.vercel.app)**:
343
+
344
+ | Page | What |
345
+ |---|---|
346
+ | [Catalog](https://youcisla-agents.vercel.app/catalog) | All 35 skills + 3 agents with live search |
347
+ | [Graph](https://youcisla-agents.vercel.app/graph) | Interactive React Flow knowledge graph (555 nodes, 898 edges, 54 communities) |
348
+ | [Audit](https://youcisla-agents.vercel.app/audit) | God nodes, surprising connections, interactive React Flow diagrams |
349
+
350
+ The site regenerates from live repo state on every commit via
351
+ `scripts/gen-site-data.py` → Vercel build → deploy.
352
+
353
+ ---
354
+
355
+ ## Roadmap
356
+
357
+ | Status | Item |
358
+ |---|---|
359
+ | ✅ v0.1 | Python package + FastAPI daemon + Claude Code plugin |
360
+ | ✅ v0.2 | Foundational audit, frozen Config, multi-page web app, knowledge graph, interactive React Flow diagrams |
361
+ | ✅ v0.3 | npm package, Engram O(1) routing, af-orchestrator agent, 13 harness adapters (3 tested) |
362
+ | 📋 v0.4 | `af verify` signed-manifest integrity |
363
+
364
+ See [docs/launch-plan.md](docs/launch-plan.md) for the full design spec.
365
+
366
+ ---
367
+
368
+ ## License
369
+
370
+ **MIT.** All skills, agents, and authored artifacts are original work by
371
+ the Agent Foundry Contributors. See [AUTHORSHIP.md](AUTHORSHIP.md) for
372
+ the attribution policy.
373
+
374
+ ---
375
+
376
+ <div align="center">
377
+
378
+ Built by [Youcisla](https://github.com/youcisla) ·
379
+ [Contribute](CONTRIBUTING.md) ·
380
+ [Report an issue](https://github.com/youcisla/Agent-Foundry/issues)
381
+
382
+ </div>