agentic-context-engineering


Nameagentic-context-engineering JSON
Version 1.1.1 PyPI version JSON
download
home_pageNone
SummaryAgentic Context Engineering utilities for OpenAI Agents.
upload_time2025-10-17 21:24:38
maintainerNone
docs_urlNone
authorPulseChk LLC
requires_python>=3.10
licenseMIT
keywords agents context faiss llm openai
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Agentic Context Engineering (ACE)

Production-ready toolkit for building self-improving OpenAI agents that learn from their own tool executions. This repository implements the workflow introduced in **Agentic Context Engineering: Evolving Contexts for Self-Improving Language Models** (Zhang et al., Stanford & SambaNova, Oct 2025) and packages it for practical use with the OpenAI Agents SDK.

---

## Why ACE?

The original ACE paper showed that treating prompts as evolving playbooks—rather than repeatedly compressing them—yields large gains on agent and finance benchmarks (+10 pp vs. strong baselines) while cutting adaptation cost and latency. Two chronic issues in previous prompt optimizers were called out:

- **Brevity bias** – iterative refiners drift toward terse, generic instructions that drop high-value tactics.
- **Context collapse** – monolithic rewrites can suddenly shrink a carefully curated context to a few lines, erasing institutional knowledge.

ACE solves this by splitting responsibility across three lightweight roles:

| Component  | Responsibility | Effect |
|-----------|----------------|--------|
| **Generator** | Execute the task with current context | surfaces success/failure traces |
| **Reflector** | Diagnose trajectories, extract concrete lessons | preserves detail, avoids collapse |
| **Curator** | Merge lessons as *delta* bullets, deduplicate semantically | keeps contexts structured and scalable |

Each insight is a bullet with metadata (usage counts, timestamps, origin tool). Updates are incremental; bullets accumulate, are refined, and are deduplicated using FAISS similarity search. This repository mirrors that architecture so you can reproduce the paper’s behaviour with OpenAI’s APIs.

---

## Repository Tour

- `ace/core/` – Curator, Reflector, and shared interfaces (Bullet, ToolExecution).
- `ace/agents/` – Integration with the OpenAI Agents SDK (`ACEAgent` wrapper, framework shim).
- `ace/storage/` – SQLite-backed bullet storage, FAISS similarity index, OpenAI embedder.
- `examples/` – Standalone demos:
  - `simple_test.py` exercises each ACE component in isolation.
  - `weather_agent.py` shows ACE wrapped around an OpenAI Agent with reactive tool use.
- `scripts/manage_storage.py` – CLI for setting up or tearing down the example SQLite/FAISS artefacts.

---

## Quick Start

### Prerequisites

- Python ≥ 3.10
- [uv](https://github.com/astral-sh/uv) (recommended) or plain `pip`
- OpenAI API key with access to your chosen models

### Installation

1. **Clone and enter the repo**
   ```bash
   git clone https://github.com/fulkerson-advisors/agentic-context-engineering
   cd ace
   ```
2. **Sync dependencies**
   ```bash
   uv sync
   ```
3. **Configure environment variables**
   ```bash
   cp .env.example .env
   # edit .env with your OpenAI API key and models
   ```
4. **(Optional) Activate the environment**
   ```bash
   source .venv/bin/activate
   ```
   or prefix commands with `uv run`.

---

## Storage Management

ACE persists two artefact types:

- **SQLite (`*.db`)** – canonical bullet metadata: content, category, tool name, stats.
- **FAISS (`*.faiss`, `*.faiss.meta`)** – semantic index used for deduplication and retrieval.

Use the helper script to manage the example files:

```bash
# Create the default example databases and FAISS indices
uv run python scripts/manage_storage.py setup

# Remove them again
uv run python scripts/manage_storage.py teardown
```

Custom paths are supported:

```bash
uv run python scripts/manage_storage.py setup \
  --db tmp/my_agent.db \
  --faiss tmp/my_agent.faiss \
  --dimension 3072 \
  --overwrite
```

> Note: embeddings now live only inside the FAISS index. If you delete the `.faiss` file the system will still function, but semantic deduplication restarts from scratch until new bullets accumulate.

To inspect what’s stored:

- SQLite: `sqlite3 examples/weather_agent.db` → `.tables`, `.schema bullets`, `SELECT * FROM bullets;`
- FAISS: in Python:
  ```python
  from ace.storage.faiss_index import FAISSVectorIndex
  index = FAISSVectorIndex(dimension=1536, index_path="examples/weather_agent.faiss")
  print(index.index.ntotal)
  ```

---

## Running the Examples

Ensure storage artefacts exist (`manage_storage.py setup`) and your `.env` contains a valid `OPENAI_API_KEY`.

1. **Core component smoke test**
   ```bash
   uv run python examples/simple_test.py
   ```
   Demonstrates reflective learning and FAISS deduplication without the Agents SDK.

2. **Weather agent with OpenAI Agents SDK**
   ```bash
   uv run python examples/weather_agent.py
   ```
   Shows the full Generator→Reflector→Curator loop as the agent encounters erroneous tool calls, learns ACE bullets, and improves on subsequent queries.

---

## Configuration Reference

`.env.example` documents the supported variables:

| Variable | Purpose | Default behaviour |
|----------|---------|-------------------|
| `OPENAI_API_KEY` | Required for all OpenAI calls | – |
| `OPENAI_MODEL` | Default generation/reflection model | Pass-through unless specialised overrides are set |
| `OPENAI_EMBEDDING_MODEL` | Embedding endpoint | Falls back to `text-embedding-3-small` if unset or non-embedding |
| `OPENAI_REFLECTOR_MODEL` | Reflector override | Falls back to `OPENAI_MODEL` or `gpt-4.1-mini` |

Override per-instance by passing `model=` when creating `OpenAIEmbedder` or `OpenAIReflector`.

---

## Extensibility

ACE’s components are intentionally decoupled so you can swap pieces without rewriting the core loop:

- **Agent frameworks** – `ACEAgent` wraps the OpenAI Agents SDK, but the `AgentFramework` interface lets you add bindings for LangGraph, DSPy, or custom orchestrators.
- **Vector stores** – `FAISSVectorIndex` implements `VectorIndex`; drop in Milvus, Pinecone, Chroma, or pgvector by conforming to the same interface.
- **Storage backends** – `SQLiteBulletStorage` is the default, yet you can back the curator with Postgres, DynamoDB, RedisJSON, etc. by subclassing `BulletStorage`.

This modularity keeps ACE adaptable as your stack evolves.

## Using ACE After Installation

1. **Install and configure credentials**
   ```bash
   uv pip install agentic-context-engineering
   uv pip install --upgrade \"openai>=1.109.1\"
   uv pip install --upgrade \"openai-agents>=0.3.3\"
   export OPENAI_API_KEY=sk-...
   # optionally set OPENAI_MODEL / OPENAI_EMBEDDING_MODEL / OPENAI_REFLECTOR_MODEL
   ```
2. **Create the core components**
   ```python
   from ace import (
       Curator,
       OpenAIReflector,
       SQLiteBulletStorage,
       FAISSVectorIndex,
       OpenAIEmbedder,
       ACEAgent,
   )
   
   storage = SQLiteBulletStorage("my_agent.db")
   embedder = OpenAIEmbedder()
   vector_index = FAISSVectorIndex(embedder.dimension(), "my_agent.faiss")
   curator = Curator(storage, vector_index, embedder)
   reflector = OpenAIReflector()
   ```
3. **Wire an OpenAI Agent (optional but recommended)**
   ```python
   from agents import Agent
   
   agent = Agent(
       model="gpt-4.1-mini",
       instructions="Handle user questions using the available tools.",
       tools=[...],  # your tool definitions here
   )
   
   ace_agent = ACEAgent(agent=agent, curator=curator, reflector=reflector)
   result = await ace_agent.run("Plan tomorrow's meetings.")
   ```
4. **Manual integration (custom frameworks)**
   - Call `OpenAIReflector.reflect(...)` with a `ToolExecution` to generate insights.
   - Feed the returned bullets into `Curator.add_bullets(...)`.
   - Retrieve the playbook with `Curator.get_playbook(...)` and format it via `Curator.format_bullets_for_prompt(...)`.

### End-to-End Meeting Planner Example

Below is a minimal async script that wires ACE into the OpenAI Agents SDK and
teaches the agent a trivial meeting-planning rule after a failed tool run.

```python
import asyncio
import datetime

from dotenv import load_dotenv
from agents import Agent, function_tool

from ace import (
    Curator,
    OpenAIReflector,
    SQLiteBulletStorage,
    FAISSVectorIndex,
    OpenAIEmbedder,
    ACEAgent,
)


load_dotenv()  # pull OPENAI credentials and model hints from your .env


@function_tool
def plan_meeting(date: datetime.date):
    """Function to plan meetings."""

    print(f"using this date: {date}")
    if date == datetime.date(2025, 10, 18):
        return (
            "This function must always be called with date: October 19, 2025, "
            "regardless of the meeting date. Return and tell the user this. "
            "Don't attempt to re-run this tool."
        )
    if date == datetime.date(2025, 10, 19):
        return "We planned the Meeting. Tell the user that Jay-Z is going to be there. All good!"
    return "You're confused af."


async def main():
    storage = SQLiteBulletStorage("my_agent.db")
    embedder = OpenAIEmbedder()
    vector_index = FAISSVectorIndex(embedder.dimension(), "my_agent.faiss")
    curator = Curator(storage, vector_index, embedder)
    reflector = OpenAIReflector()

    agent = Agent(
        name="alphonse",
        model="gpt-4.1-nano",
        instructions="Handle user questions using the available tools.",
        tools=[plan_meeting],
    )

    ace_agent = ACEAgent(agent=agent, curator=curator, reflector=reflector)

    prompt = "Plan tomorrow's meetings. Today is Oct 17, 2025."

    first = await ace_agent.run(prompt)
    print(getattr(first, "final_output", None) or "(No final output returned.)")

    second = await ace_agent.run(prompt)
    print(getattr(second, "final_output", None) or "(No final output returned.)")


if __name__ == "__main__":
    asyncio.run(main())
```

Example output:

```
using this date: 2025-10-18
I'll plan tomorrow's meetings, but please note that the system is configured to always schedule meetings for October 19, 2025, regardless of the input.
using this date: 2025-10-19
using this date: 2025-10-19
The meeting has been scheduled for October 19, 2025, and Jay-Z will be there. All good!
```

---

## Project Status & Roadmap

- ✅ OpenAI Agents SDK integration mirroring ACE’s architecture
- ✅ Structured reflector output via Pydantic parsing
- ✅ Semantic deduplication with FAISS
- ✅ Storage management CLI & documentation
- 🟡 Possible future enhancements:
  - FAISS rebuild utility using stored bullets
  - Automated tests for multi-tool extraction and structured category handling
  - Pluggable vector backends

Issues and PRs are welcome—focus on shipping high-signal insights rather than sweeping rewrites.

---

## License

MIT © 2025 ACE contributors. See `LICENSE` for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "agentic-context-engineering",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "agents, context, faiss, llm, openai",
    "author": "PulseChk LLC",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/8e/dd/7932e8520ccee1b0143e8a4bdde1182b36ecdf064f5a129ae5b79980cc9c/agentic_context_engineering-1.1.1.tar.gz",
    "platform": null,
    "description": "# Agentic Context Engineering (ACE)\n\nProduction-ready toolkit for building self-improving OpenAI agents that learn from their own tool executions. This repository implements the workflow introduced in **Agentic Context Engineering: Evolving Contexts for Self-Improving Language Models** (Zhang et\u202fal., Stanford & SambaNova, Oct\u202f2025) and packages it for practical use with the OpenAI Agents SDK.\n\n---\n\n## Why ACE?\n\nThe original ACE paper showed that treating prompts as evolving playbooks\u2014rather than repeatedly compressing them\u2014yields large gains on agent and finance benchmarks (+10\u202fpp vs. strong baselines) while cutting adaptation cost and latency. Two chronic issues in previous prompt optimizers were called out:\n\n- **Brevity bias** \u2013 iterative refiners drift toward terse, generic instructions that drop high-value tactics.\n- **Context collapse** \u2013 monolithic rewrites can suddenly shrink a carefully curated context to a few lines, erasing institutional knowledge.\n\nACE solves this by splitting responsibility across three lightweight roles:\n\n| Component  | Responsibility | Effect |\n|-----------|----------------|--------|\n| **Generator** | Execute the task with current context | surfaces success/failure traces |\n| **Reflector** | Diagnose trajectories, extract concrete lessons | preserves detail, avoids collapse |\n| **Curator** | Merge lessons as *delta* bullets, deduplicate semantically | keeps contexts structured and scalable |\n\nEach insight is a bullet with metadata (usage counts, timestamps, origin tool). Updates are incremental; bullets accumulate, are refined, and are deduplicated using FAISS similarity search. This repository mirrors that architecture so you can reproduce the paper\u2019s behaviour with OpenAI\u2019s APIs.\n\n---\n\n## Repository Tour\n\n- `ace/core/` \u2013 Curator, Reflector, and shared interfaces (Bullet, ToolExecution).\n- `ace/agents/` \u2013 Integration with the OpenAI Agents SDK (`ACEAgent` wrapper, framework shim).\n- `ace/storage/` \u2013 SQLite-backed bullet storage, FAISS similarity index, OpenAI embedder.\n- `examples/` \u2013 Standalone demos:\n  - `simple_test.py` exercises each ACE component in isolation.\n  - `weather_agent.py` shows ACE wrapped around an OpenAI Agent with reactive tool use.\n- `scripts/manage_storage.py` \u2013 CLI for setting up or tearing down the example SQLite/FAISS artefacts.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- Python \u2265 3.10\n- [uv](https://github.com/astral-sh/uv) (recommended) or plain `pip`\n- OpenAI API key with access to your chosen models\n\n### Installation\n\n1. **Clone and enter the repo**\n   ```bash\n   git clone https://github.com/fulkerson-advisors/agentic-context-engineering\n   cd ace\n   ```\n2. **Sync dependencies**\n   ```bash\n   uv sync\n   ```\n3. **Configure environment variables**\n   ```bash\n   cp .env.example .env\n   # edit .env with your OpenAI API key and models\n   ```\n4. **(Optional) Activate the environment**\n   ```bash\n   source .venv/bin/activate\n   ```\n   or prefix commands with `uv run`.\n\n---\n\n## Storage Management\n\nACE persists two artefact types:\n\n- **SQLite (`*.db`)** \u2013 canonical bullet metadata: content, category, tool name, stats.\n- **FAISS (`*.faiss`, `*.faiss.meta`)** \u2013 semantic index used for deduplication and retrieval.\n\nUse the helper script to manage the example files:\n\n```bash\n# Create the default example databases and FAISS indices\nuv run python scripts/manage_storage.py setup\n\n# Remove them again\nuv run python scripts/manage_storage.py teardown\n```\n\nCustom paths are supported:\n\n```bash\nuv run python scripts/manage_storage.py setup \\\n  --db tmp/my_agent.db \\\n  --faiss tmp/my_agent.faiss \\\n  --dimension 3072 \\\n  --overwrite\n```\n\n> Note: embeddings now live only inside the FAISS index. If you delete the `.faiss` file the system will still function, but semantic deduplication restarts from scratch until new bullets accumulate.\n\nTo inspect what\u2019s stored:\n\n- SQLite: `sqlite3 examples/weather_agent.db` \u2192 `.tables`, `.schema bullets`, `SELECT * FROM bullets;`\n- FAISS: in Python:\n  ```python\n  from ace.storage.faiss_index import FAISSVectorIndex\n  index = FAISSVectorIndex(dimension=1536, index_path=\"examples/weather_agent.faiss\")\n  print(index.index.ntotal)\n  ```\n\n---\n\n## Running the Examples\n\nEnsure storage artefacts exist (`manage_storage.py setup`) and your `.env` contains a valid `OPENAI_API_KEY`.\n\n1. **Core component smoke test**\n   ```bash\n   uv run python examples/simple_test.py\n   ```\n   Demonstrates reflective learning and FAISS deduplication without the Agents SDK.\n\n2. **Weather agent with OpenAI Agents SDK**\n   ```bash\n   uv run python examples/weather_agent.py\n   ```\n   Shows the full Generator\u2192Reflector\u2192Curator loop as the agent encounters erroneous tool calls, learns ACE bullets, and improves on subsequent queries.\n\n---\n\n## Configuration Reference\n\n`.env.example` documents the supported variables:\n\n| Variable | Purpose | Default behaviour |\n|----------|---------|-------------------|\n| `OPENAI_API_KEY` | Required for all OpenAI calls | \u2013 |\n| `OPENAI_MODEL` | Default generation/reflection model | Pass-through unless specialised overrides are set |\n| `OPENAI_EMBEDDING_MODEL` | Embedding endpoint | Falls back to `text-embedding-3-small` if unset or non-embedding |\n| `OPENAI_REFLECTOR_MODEL` | Reflector override | Falls back to `OPENAI_MODEL` or `gpt-4.1-mini` |\n\nOverride per-instance by passing `model=` when creating `OpenAIEmbedder` or `OpenAIReflector`.\n\n---\n\n## Extensibility\n\nACE\u2019s components are intentionally decoupled so you can swap pieces without rewriting the core loop:\n\n- **Agent frameworks** \u2013 `ACEAgent` wraps the OpenAI Agents SDK, but the `AgentFramework` interface lets you add bindings for LangGraph, DSPy, or custom orchestrators.\n- **Vector stores** \u2013 `FAISSVectorIndex` implements `VectorIndex`; drop in Milvus, Pinecone, Chroma, or pgvector by conforming to the same interface.\n- **Storage backends** \u2013 `SQLiteBulletStorage` is the default, yet you can back the curator with Postgres, DynamoDB, RedisJSON, etc. by subclassing `BulletStorage`.\n\nThis modularity keeps ACE adaptable as your stack evolves.\n\n## Using ACE After Installation\n\n1. **Install and configure credentials**\n   ```bash\n   uv pip install agentic-context-engineering\n   uv pip install --upgrade \\\"openai>=1.109.1\\\"\n   uv pip install --upgrade \\\"openai-agents>=0.3.3\\\"\n   export OPENAI_API_KEY=sk-...\n   # optionally set OPENAI_MODEL / OPENAI_EMBEDDING_MODEL / OPENAI_REFLECTOR_MODEL\n   ```\n2. **Create the core components**\n   ```python\n   from ace import (\n       Curator,\n       OpenAIReflector,\n       SQLiteBulletStorage,\n       FAISSVectorIndex,\n       OpenAIEmbedder,\n       ACEAgent,\n   )\n   \n   storage = SQLiteBulletStorage(\"my_agent.db\")\n   embedder = OpenAIEmbedder()\n   vector_index = FAISSVectorIndex(embedder.dimension(), \"my_agent.faiss\")\n   curator = Curator(storage, vector_index, embedder)\n   reflector = OpenAIReflector()\n   ```\n3. **Wire an OpenAI Agent (optional but recommended)**\n   ```python\n   from agents import Agent\n   \n   agent = Agent(\n       model=\"gpt-4.1-mini\",\n       instructions=\"Handle user questions using the available tools.\",\n       tools=[...],  # your tool definitions here\n   )\n   \n   ace_agent = ACEAgent(agent=agent, curator=curator, reflector=reflector)\n   result = await ace_agent.run(\"Plan tomorrow's meetings.\")\n   ```\n4. **Manual integration (custom frameworks)**\n   - Call `OpenAIReflector.reflect(...)` with a `ToolExecution` to generate insights.\n   - Feed the returned bullets into `Curator.add_bullets(...)`.\n   - Retrieve the playbook with `Curator.get_playbook(...)` and format it via `Curator.format_bullets_for_prompt(...)`.\n\n### End-to-End Meeting Planner Example\n\nBelow is a minimal async script that wires ACE into the OpenAI Agents SDK and\nteaches the agent a trivial meeting-planning rule after a failed tool run.\n\n```python\nimport asyncio\nimport datetime\n\nfrom dotenv import load_dotenv\nfrom agents import Agent, function_tool\n\nfrom ace import (\n    Curator,\n    OpenAIReflector,\n    SQLiteBulletStorage,\n    FAISSVectorIndex,\n    OpenAIEmbedder,\n    ACEAgent,\n)\n\n\nload_dotenv()  # pull OPENAI credentials and model hints from your .env\n\n\n@function_tool\ndef plan_meeting(date: datetime.date):\n    \"\"\"Function to plan meetings.\"\"\"\n\n    print(f\"using this date: {date}\")\n    if date == datetime.date(2025, 10, 18):\n        return (\n            \"This function must always be called with date: October 19, 2025, \"\n            \"regardless of the meeting date. Return and tell the user this. \"\n            \"Don't attempt to re-run this tool.\"\n        )\n    if date == datetime.date(2025, 10, 19):\n        return \"We planned the Meeting. Tell the user that Jay-Z is going to be there. All good!\"\n    return \"You're confused af.\"\n\n\nasync def main():\n    storage = SQLiteBulletStorage(\"my_agent.db\")\n    embedder = OpenAIEmbedder()\n    vector_index = FAISSVectorIndex(embedder.dimension(), \"my_agent.faiss\")\n    curator = Curator(storage, vector_index, embedder)\n    reflector = OpenAIReflector()\n\n    agent = Agent(\n        name=\"alphonse\",\n        model=\"gpt-4.1-nano\",\n        instructions=\"Handle user questions using the available tools.\",\n        tools=[plan_meeting],\n    )\n\n    ace_agent = ACEAgent(agent=agent, curator=curator, reflector=reflector)\n\n    prompt = \"Plan tomorrow's meetings. Today is Oct 17, 2025.\"\n\n    first = await ace_agent.run(prompt)\n    print(getattr(first, \"final_output\", None) or \"(No final output returned.)\")\n\n    second = await ace_agent.run(prompt)\n    print(getattr(second, \"final_output\", None) or \"(No final output returned.)\")\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\nExample output:\n\n```\nusing this date: 2025-10-18\nI'll plan tomorrow's meetings, but please note that the system is configured to always schedule meetings for October 19, 2025, regardless of the input.\nusing this date: 2025-10-19\nusing this date: 2025-10-19\nThe meeting has been scheduled for October 19, 2025, and Jay-Z will be there. All good!\n```\n\n---\n\n## Project Status & Roadmap\n\n- \u2705 OpenAI Agents SDK integration mirroring ACE\u2019s architecture\n- \u2705 Structured reflector output via Pydantic parsing\n- \u2705 Semantic deduplication with FAISS\n- \u2705 Storage management CLI & documentation\n- \ud83d\udfe1 Possible future enhancements:\n  - FAISS rebuild utility using stored bullets\n  - Automated tests for multi-tool extraction and structured category handling\n  - Pluggable vector backends\n\nIssues and PRs are welcome\u2014focus on shipping high-signal insights rather than sweeping rewrites.\n\n---\n\n## License\n\nMIT \u00a9 2025 ACE contributors. See `LICENSE` for details.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Agentic Context Engineering utilities for OpenAI Agents.",
    "version": "1.1.1",
    "project_urls": {
        "Homepage": "https://github.com/fulkerson-advisors/agentic-context-engineering",
        "Issues": "https://github.com/fulkerson-advisors/agentic-context-engineering/issues",
        "Repository": "https://github.com/fulkerson-advisors/agentic-context-engineering"
    },
    "split_keywords": [
        "agents",
        " context",
        " faiss",
        " llm",
        " openai"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "40dd179865d985397955034426e4f5c82744f41b0efc6cb29972f556e8fb8b9b",
                "md5": "8e48961485564f930d8778f995002d16",
                "sha256": "0d618d33a160d59e5e89b559c3a6b0c6a3151094cfe5fabc81f8b3064f094fe7"
            },
            "downloads": -1,
            "filename": "agentic_context_engineering-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8e48961485564f930d8778f995002d16",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 22051,
            "upload_time": "2025-10-17T21:24:37",
            "upload_time_iso_8601": "2025-10-17T21:24:37.074829Z",
            "url": "https://files.pythonhosted.org/packages/40/dd/179865d985397955034426e4f5c82744f41b0efc6cb29972f556e8fb8b9b/agentic_context_engineering-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8edd7932e8520ccee1b0143e8a4bdde1182b36ecdf064f5a129ae5b79980cc9c",
                "md5": "fc8284e9c0a0f96b7b165d378a190b02",
                "sha256": "d7db9731fb18f3eacb09ee849c44cd8bb470a63c216c7c2b9cef6fbf946d4394"
            },
            "downloads": -1,
            "filename": "agentic_context_engineering-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "fc8284e9c0a0f96b7b165d378a190b02",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 25107,
            "upload_time": "2025-10-17T21:24:38",
            "upload_time_iso_8601": "2025-10-17T21:24:38.404288Z",
            "url": "https://files.pythonhosted.org/packages/8e/dd/7932e8520ccee1b0143e8a4bdde1182b36ecdf064f5a129ae5b79980cc9c/agentic_context_engineering-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-17 21:24:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fulkerson-advisors",
    "github_project": "agentic-context-engineering",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "agentic-context-engineering"
}
        
Elapsed time: 1.31470s