feat(examples): add Honcho memory skill for Zo Computer#495
feat(examples): add Honcho memory skill for Zo Computer#495ajspig merged 9 commits intoplastic-labs:mainfrom
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdds a packaged Honcho Memory Skill for Zo Computer: three tools ( Changes
Sequence DiagramssequenceDiagram
actor User
participant Zo as Zo Computer
participant Save as save_memory
participant Client as get_client
participant Honcho as Honcho API
User->>Zo: Send message
Zo->>Save: save_memory(user_id, content, role, session_id)
Save->>Client: get_client()
Client->>Honcho: Init(api_key, workspace)
Save->>Honcho: get/create peer(user)
Save->>Honcho: get/create peer(assistant)
Save->>Honcho: get/create session(session_id)
Save->>Honcho: add_peers([...])
Save->>Honcho: append_message(from peer, content)
Honcho-->>Save: confirmation
Save-->>Zo: saved confirmation
sequenceDiagram
actor User
participant Zo as Zo Computer
participant Query as query_memory
participant Client as get_client
participant Dialectic as Honcho Dialectic API
User->>Zo: "What do you remember about X?"
Zo->>Query: query_memory(user_id, query, session_id)
Query->>Client: get_client()
Client->>Dialectic: Init(api_key, workspace)
Query->>Dialectic: peer.chat(query, session)
Dialectic-->>Query: response
Query-->>Zo: formatted string
Zo-->>User: display memory
sequenceDiagram
actor User
participant Zo as Zo Computer
participant Context as get_context
participant Client as get_client
participant Honcho as Honcho API
User->>Zo: Prepare LLM prompt
Zo->>Context: get_context(user_id, session_id, assistant_id, tokens)
Context->>Client: get_client()
Client->>Honcho: Init(api_key, workspace)
Context->>Honcho: get peers & session
Context->>Honcho: session.context(tokens)
Honcho-->>Context: recent context
Context->>Context: to_openai(assistant)
Context-->>Zo: list of message dicts
Zo->>LLM: inject context into prompt
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (6)
examples/zo/tools/__init__.py (1)
7-7: Consider sorting__all__alphabetically.Static analysis (RUF022) flags that
__all__is not sorted. Sorting improves readability and consistency.Proposed fix
-__all__ = ["save_memory", "query_memory", "get_context"] +__all__ = ["get_context", "query_memory", "save_memory"]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/tools/__init__.py` at line 7, The __all__ list is not alphabetically sorted; update the module-level __all__ to an alphabetically ordered sequence of export names (get_context, query_memory, save_memory) so static analysis (RUF022) passes and readability improves; locate the __all__ assignment in examples/zo/tools/__init__.py and reorder the string entries accordingly.examples/zo/tests/test_basic.py (2)
54-69: Consider moving pytest import to module level.
pytestis imported inside test functions. While functional, moving it to the top with other imports is more idiomatic.Proposed fix
import sys import os + +import pytest # Add parent directory to path so tools/ can be imported sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))Then remove the local imports from
test_save_memory_raises_on_empty_contentandtest_query_memory_raises_on_empty_query.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/tests/test_basic.py` around lines 54 - 69, Move the pytest import to module scope and remove the local imports inside the test functions: add "import pytest" at the top of the tests file (examples/zo/tests/test_basic.py) alongside other imports, then delete the in-function "import pytest" lines in test_save_memory_raises_on_empty_content and test_query_memory_raises_on_empty_query so the functions only call pytest.raises and the tools.save_memory / tools.query_memory imports remain as-is.
7-8: Consider standard import ordering.Per isort conventions, standard library imports should be sorted alphabetically.
osshould come beforesys.Proposed fix
-import sys import os +import sys🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/tests/test_basic.py` around lines 7 - 8, The standard library imports are not alphabetized: swap the two import statements so that os is imported before sys (i.e., change "import sys\nimport os" to "import os\nimport sys") to satisfy isort conventions and keep the import block for standard libraries sorted.examples/zo/SKILL.md (1)
19-27: Add blank lines around fenced code blocks.Markdown lint (MD031) flags missing blank lines around code blocks. This improves readability and compatibility with some Markdown parsers.
Proposed fix
2. Set environment variables: + ``` HONCHO_API_KEY=your-api-key HONCHO_WORKSPACE_ID=default # optional, defaults to "default" ``` + 3. Install dependencies: + ``` pip install honcho-ai python-dotenv ```🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/SKILL.md` around lines 19 - 27, Add blank lines before and after each fenced code block in the SKILL.md snippet so the Markdown has an empty line above the opening ``` and an empty line below the closing ```; specifically update the environment variables block (the triple-backtick block containing HONCHO_API_KEY/HONCHO_WORKSPACE_ID) and the dependencies block (the triple-backtick block containing pip install honcho-ai python-dotenv) to include a blank line separating the surrounding numbered list text and the fenced code blocks.examples/zo/tools/get_context.py (1)
5-5: Use explicit relative import for clarity.The import
from client import get_clientrelies onpythonpath=["."]in pyproject.toml. Consider using an explicit relative import for better clarity and to avoid confusion when the module is used in different contexts.Proposed fix
-from client import get_client +from .client import get_clientNote: This would require running from within the package context. Alternatively, keep the current import if the
pythonpathconfiguration is intentional for Zo skill compatibility.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/tools/get_context.py` at line 5, Replace the top-level import in examples/zo/tools/get_context.py that currently reads "from client import get_client" with an explicit relative import referencing the local client module (i.e., import the get_client symbol from the package-local client module) so the module resolves correctly when run inside the package; update the import to use the package-relative module path and verify get_client is referenced from that import and that the module is executed in package context (run as a module) after the change.examples/zo/tests/test_tools.py (1)
1-18: Gate these as integration tests so default local runs fail less often.Given Line 3-7 requires external server setup, add a marker/skip condition so developers can run unit tests without accidental network failures.
✅ Suggested gating snippet
import sys import os +import pytest @@ +pytestmark = pytest.mark.skipif( + not os.getenv("HONCHO_API_KEY"), + reason="Integration tests require HONCHO_API_KEY and a running Honcho server", +)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/tests/test_tools.py` around lines 1 - 18, Add a pytest gate so these external-server tests are skipped by default: import pytest and set a module-level pytestmark using pytest.mark.skipif checking an env var (e.g., RUN_INTEGRATION != "1") with a clear reason so local unit test runs won't attempt the Honcho server; add this in the tests/test_tools.py module near the top (next to existing imports) using the pytestmark symbol to control skipping.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@examples/zo/pyproject.toml`:
- Line 8: The dependency versions are inconsistent: update the dependency string
"honcho-ai>=2.1.0" to match the SKILL.md requirement "honcho-ai>=2.1.1" (or vice
versa if you prefer 2.1.0) so both sources use the same version; locate and
change the literal "honcho-ai>=2.1.0" in pyproject.toml (or update the SKILL.md
line containing "honcho-ai>=2.1.1") so the two files match exactly.
- Around line 21-22: The wheel build currently only packages the "tools" package
so the top-level module client.py won't be included and imports from tools that
reference client will fail; fix by either (A) adding the module to the hatch
wheel packages (e.g., ensure pyproject.toml's [tool.hatch.build.targets.wheel]
packages includes "client" or the correct hatch syntax for single-file modules)
or (B) move client.py into the tools package (rename to tools/client.py) and
update any imports that reference client.py to import from tools.client; update
pyproject.toml only if you choose option A.
In `@examples/zo/README.md`:
- Around line 122-134: Add blank lines before and after the fenced code blocks
inside the numbered list to satisfy markdownlint MD031: insert a blank line
before and after the directory-tree fenced block containing "Community/ └──
honcho-memory/ ├── SKILL.md ..." and likewise add a blank line before and after
the bash fenced block containing "bun validate"; update the README.md so each
fenced block is separated from the surrounding list items by an empty line (also
ensure a blank line follows each closing ``` fence).
In `@examples/zo/tests/test_tools.py`:
- Around line 25-174: Tests use hardcoded user_id/session_id values which cause
state leakage across runs; update all tests that call save_memory, query_memory,
and get_context (e.g., in TestQueryMemory, TestGetContext,
TestToolsWorkTogether) to generate unique IDs per test (for example append a
uuid4()/timestamp/random suffix or use a pytest fixture that returns unique
user/session IDs) and use those generated IDs for both save_memory and
subsequent query/get_context calls so each test runs in isolation and won’t be
affected by persistent Honcho storage.
In `@examples/zo/tools/save_memory.py`:
- Line 30: The code in save_memory.py hardcodes the assistant peer via
assistant_peer = honcho.peer("assistant"), which breaks role mapping when
get_context callers pass a different assistant_id; change save_memory to accept
or use the same assistant_id parameter as get_context (or propagate assistant_id
into save_memory) and construct the peer with honcho.peer(assistant_id) so the
to_openai() mapping correctly identifies assistant messages; update any callers
of save_memory to pass the assistant_id argument accordingly and ensure variable
names (assistant_peer, assistant_id) match across save_memory and get_context.
---
Nitpick comments:
In `@examples/zo/SKILL.md`:
- Around line 19-27: Add blank lines before and after each fenced code block in
the SKILL.md snippet so the Markdown has an empty line above the opening ``` and
an empty line below the closing ```; specifically update the environment
variables block (the triple-backtick block containing
HONCHO_API_KEY/HONCHO_WORKSPACE_ID) and the dependencies block (the
triple-backtick block containing pip install honcho-ai python-dotenv) to include
a blank line separating the surrounding numbered list text and the fenced code
blocks.
In `@examples/zo/tests/test_basic.py`:
- Around line 54-69: Move the pytest import to module scope and remove the local
imports inside the test functions: add "import pytest" at the top of the tests
file (examples/zo/tests/test_basic.py) alongside other imports, then delete the
in-function "import pytest" lines in test_save_memory_raises_on_empty_content
and test_query_memory_raises_on_empty_query so the functions only call
pytest.raises and the tools.save_memory / tools.query_memory imports remain
as-is.
- Around line 7-8: The standard library imports are not alphabetized: swap the
two import statements so that os is imported before sys (i.e., change "import
sys\nimport os" to "import os\nimport sys") to satisfy isort conventions and
keep the import block for standard libraries sorted.
In `@examples/zo/tests/test_tools.py`:
- Around line 1-18: Add a pytest gate so these external-server tests are skipped
by default: import pytest and set a module-level pytestmark using
pytest.mark.skipif checking an env var (e.g., RUN_INTEGRATION != "1") with a
clear reason so local unit test runs won't attempt the Honcho server; add this
in the tests/test_tools.py module near the top (next to existing imports) using
the pytestmark symbol to control skipping.
In `@examples/zo/tools/__init__.py`:
- Line 7: The __all__ list is not alphabetically sorted; update the module-level
__all__ to an alphabetically ordered sequence of export names (get_context,
query_memory, save_memory) so static analysis (RUF022) passes and readability
improves; locate the __all__ assignment in examples/zo/tools/__init__.py and
reorder the string entries accordingly.
In `@examples/zo/tools/get_context.py`:
- Line 5: Replace the top-level import in examples/zo/tools/get_context.py that
currently reads "from client import get_client" with an explicit relative import
referencing the local client module (i.e., import the get_client symbol from the
package-local client module) so the module resolves correctly when run inside
the package; update the import to use the package-relative module path and
verify get_client is referenced from that import and that the module is executed
in package context (run as a module) after the change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 30112961-2d1b-46aa-9e96-ec863eaa147f
⛔ Files ignored due to path filters (1)
examples/zo/uv.lockis excluded by!**/*.lock
📒 Files selected for processing (11)
.gitignoreexamples/zo/README.mdexamples/zo/SKILL.mdexamples/zo/client.pyexamples/zo/pyproject.tomlexamples/zo/tests/test_basic.pyexamples/zo/tests/test_tools.pyexamples/zo/tools/__init__.pyexamples/zo/tools/get_context.pyexamples/zo/tools/query_memory.pyexamples/zo/tools/save_memory.py
| readme = "README.md" | ||
| requires-python = ">=3.9" | ||
| dependencies = [ | ||
| "honcho-ai>=2.1.0", |
There was a problem hiding this comment.
Version inconsistency with SKILL.md.
pyproject.toml specifies honcho-ai>=2.1.0 but SKILL.md line 5 states the skill requires honcho-ai>=2.1.1. Align these versions to avoid confusion.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@examples/zo/pyproject.toml` at line 8, The dependency versions are
inconsistent: update the dependency string "honcho-ai>=2.1.0" to match the
SKILL.md requirement "honcho-ai>=2.1.1" (or vice versa if you prefer 2.1.0) so
both sources use the same version; locate and change the literal
"honcho-ai>=2.1.0" in pyproject.toml (or update the SKILL.md line containing
"honcho-ai>=2.1.1") so the two files match exactly.
| [tool.hatch.build.targets.wheel] | ||
| packages = ["tools"] |
There was a problem hiding this comment.
client.py is not included in the wheel package.
The wheel configuration only includes the tools directory. The client.py module at the package root won't be packaged, but the tools import from it. Either add client to the packages list or move client.py into the tools directory.
Option 1: Include client module in wheel
[tool.hatch.build.targets.wheel]
-packages = ["tools"]
+packages = ["tools", "client.py"]Note: Hatch may require a different syntax for single-file modules. Alternatively, restructure as shown in Option 2.
Option 2: Move client.py into tools/
Move client.py to tools/client.py and update imports in the tool files:
-from client import get_client
+from .client import get_client🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@examples/zo/pyproject.toml` around lines 21 - 22, The wheel build currently
only packages the "tools" package so the top-level module client.py won't be
included and imports from tools that reference client will fail; fix by either
(A) adding the module to the hatch wheel packages (e.g., ensure pyproject.toml's
[tool.hatch.build.targets.wheel] packages includes "client" or the correct hatch
syntax for single-file modules) or (B) move client.py into the tools package
(rename to tools/client.py) and update any imports that reference client.py to
import from tools.client; update pyproject.toml only if you choose option A.
- Fix version inconsistency: SKILL.md matches pyproject.toml (>=2.1.0) - Move client.py into tools/ package and use relative imports - Add assistant_id parameter to save_memory() for consistency with get_context() - Use UUID-based IDs in tests to prevent state leakage between runs - Add pytest.mark.skipif guard on integration tests (requires HONCHO_API_KEY) - Fix import ordering, move pytest to module level, sort __all__ alphabetically - Fix markdown blank lines around fenced code blocks (MD031) - Add rate limit delay fixture to avoid hitting Honcho free tier limits
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@examples/zo/tools/client.py`:
- Around line 24-25: Before constructing the Honcho client, explicitly validate
required env vars: read HONCHO_API_KEY with os.getenv and treat empty strings as
unset (e.g., key = os.getenv("HONCHO_API_KEY") and if not key: raise
ValueError("HONCHO_API_KEY is required")); similarly, compute resolved_workspace
by treating an empty workspace_id or an empty HONCHO_WORKSPACE_ID env value as
unset (e.g., env_ws = os.getenv("HONCHO_WORKSPACE_ID"); resolved_workspace =
workspace_id or env_ws or "default"). After these checks, pass
resolved_workspace to the Honcho(...) constructor.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8d7b4991-be89-4347-abb9-e9a4d00cd52f
📒 Files selected for processing (9)
examples/zo/README.mdexamples/zo/SKILL.mdexamples/zo/tests/test_basic.pyexamples/zo/tests/test_tools.pyexamples/zo/tools/__init__.pyexamples/zo/tools/client.pyexamples/zo/tools/get_context.pyexamples/zo/tools/query_memory.pyexamples/zo/tools/save_memory.py
✅ Files skipped from review due to trivial changes (5)
- examples/zo/tools/init.py
- examples/zo/tools/get_context.py
- examples/zo/README.md
- examples/zo/SKILL.md
- examples/zo/tests/test_tools.py
🚧 Files skipped from review as they are similar to previous changes (3)
- examples/zo/tools/query_memory.py
- examples/zo/tools/save_memory.py
- examples/zo/tests/test_basic.py
|
Hi @ajspig! I've implemented the Honcho Memory Skill for Zo Computer as described in What's included
Question on acceptance criteriaThe issue lists "Submitted to Zo skill hub/marketplace" as an acceptance Happy to do either — just want to make sure I'm doing it in the right order! |
|
woah nice! |
End-to-end testing in Zo Computer ✅After the PR was submitted I tested the skill live inside Zo Computer by
Finding: cross-peer memory in shared workspacesDuring testing I discovered that I've documented this in the README with a note recommending unique This may be worth a separate issue to discuss whether the Dialectic API |
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (1)
examples/zo/README.md (1)
136-139:⚠️ Potential issue | 🟡 MinorAdd a blank line after the fenced block to satisfy MD031.
The closing fence is immediately followed by the next list item. Add one empty line between them.
🛠️ Suggested lint fix
```bash bun validate ``` + 4. **Submit a pull request** to the upstream registry repository.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/README.md` around lines 136 - 139, MD031 lint error: the closing fenced code block (```bash) in README.md is immediately followed by the next list item; insert a single blank line between the closing fence and the subsequent list item to satisfy MD031. Edit the fenced block that starts with "```bash" and ensure there is one empty line after the closing "```" before the "4. **Submit a pull request**" list item.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@examples/zo/README.md`:
- Around line 72-80: The docs for query_memory currently list session_id as
`str` but the implementation uses `session_id: str | None = None`; update the
README table row for `session_id` to indicate it is optional/nullable (e.g.,
`str | None` or `Optional[str]`) and mention the default is None to match the
function signature in query_memory.
- Around line 57-67: Update the README entry for save_memory to match the actual
signature in examples/zo/tools/save_memory.py: add the optional assistant_id
parameter (default "assistant") to the function signature line and to the params
table, describing it as the assistant peer identifier used when
role="assistant"; ensure the table shows its type as `str` and notes the default
value and purpose so consumers know they can supply a custom assistant_id.
---
Duplicate comments:
In `@examples/zo/README.md`:
- Around line 136-139: MD031 lint error: the closing fenced code block (```bash)
in README.md is immediately followed by the next list item; insert a single
blank line between the closing fence and the subsequent list item to satisfy
MD031. Edit the fenced block that starts with "```bash" and ensure there is one
empty line after the closing "```" before the "4. **Submit a pull request**"
list item.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 67cf6814-9fd3-42e3-a057-8cfb5a1e2e3b
📒 Files selected for processing (1)
examples/zo/README.md
|
@LubaKaper thanks for your work! Go ahead and post to Zo! Have a couple of nits but no need to block that getting published on Zo |
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
examples/zo/README.md (1)
126-133:⚠️ Potential issue | 🟡 MinorThe directory tree is missing
client.py.The actual skill structure includes
client.py(the Honcho client initialization helper), but it's not shown in the marketplace submission directory tree. This could mislead users preparing their submission package.📁 Proposed fix
``` Community/ └── honcho-memory/ ├── SKILL.md ├── README.md + ├── client.py ├── pyproject.toml └── tools/ ```🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/README.md` around lines 126 - 133, The README's example directory tree for the honcho-memory skill omits the required client.py file; update examples/zo/README.md so the tree under honcho-memory includes "client.py" (place it between README.md and pyproject.toml) to accurately reflect the actual skill structure and avoid misleading submitters about the presence of the Honcho client initialization helper (client.py).
🧹 Nitpick comments (1)
examples/zo/README.md (1)
81-81: Optional: Escape the pipe character in the type column to avoid markdown parser warnings.The type
str | Nonecontains a pipe that triggers a markdownlint table column count warning. While the table renders correctly, you can silence the warning by escaping the pipe.📝 Optional markdown fix
-| `session_id` | `str | None` | Optional: scope to a specific session. Defaults to `None` (global memory) | +| `session_id` | `str \| None` | Optional: scope to a specific session. Defaults to `None` (global memory) |🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@examples/zo/README.md` at line 81, The table row for the parameter session_id shows the type as `str | None`, which triggers markdown table pipe warnings; update the type cell used for session_id to escape the pipe character (e.g., change the type text to `str \| None` or otherwise escape the '|' inside the code span) so the markdown linter no longer reports an extra column while keeping the displayed text identical.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@examples/zo/README.md`:
- Around line 139-140: Add a blank line after the closing fenced code block (the
trailing ``` that ends the bash snippet) so that there is an empty line before
the next paragraph starting with "4. **Submit a pull request**"; edit the
README.md markdown to insert a single blank line between the code fence and that
step to satisfy MD031.
---
Duplicate comments:
In `@examples/zo/README.md`:
- Around line 126-133: The README's example directory tree for the honcho-memory
skill omits the required client.py file; update examples/zo/README.md so the
tree under honcho-memory includes "client.py" (place it between README.md and
pyproject.toml) to accurately reflect the actual skill structure and avoid
misleading submitters about the presence of the Honcho client initialization
helper (client.py).
---
Nitpick comments:
In `@examples/zo/README.md`:
- Line 81: The table row for the parameter session_id shows the type as `str |
None`, which triggers markdown table pipe warnings; update the type cell used
for session_id to escape the pipe character (e.g., change the type text to `str
\| None` or otherwise escape the '|' inside the code span) so the markdown
linter no longer reports an extra column while keeping the displayed text
identical.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4d82155f-5ec2-41db-87fb-e8f5ac0dd295
📒 Files selected for processing (1)
examples/zo/README.md
|
I can see you're still making some changes. This PR looks good to me, and happy to merge it in unless you have more changes you'd like to make @LubaKaper |
|
@ajspig Thank you so much! No more changes from my side , the CI failure looks like a pre-existing issue with secrets not being passed to fork PR workflows? so it's unrelated to this PR's changes? If so feel free to merge whenever you're ready! Once it's in, I'll move on to submitting the skill to the Zo marketplace. |
|
Merged! Feel free to submit the skill to the zo marketplace. |
|
Done @ajspig! Just submitted it to the Zo marketplace: zocomputer/skills#61 |
…embedding-dimensions * origin/main: Self-hosting docs overhaul: single-provider default, restructured config guide (plastic-labs#510) docs: add Zo Computer integration page (plastic-labs#504) feat(examples): add Honcho memory skill for Zo Computer (plastic-labs#495)
…#495) * chore: add .worktrees/ to .gitignore * feat(examples): add Zo Computer memory skill integration * feat(examples): add Zo Computer memory skill integration * fix(examples): address CodeRabbit review on Zo skill integration - Fix version inconsistency: SKILL.md matches pyproject.toml (>=2.1.0) - Move client.py into tools/ package and use relative imports - Add assistant_id parameter to save_memory() for consistency with get_context() - Use UUID-based IDs in tests to prevent state leakage between runs - Add pytest.mark.skipif guard on integration tests (requires HONCHO_API_KEY) - Fix import ordering, move pytest to module level, sort __all__ alphabetically - Fix markdown blank lines around fenced code blocks (MD031) - Add rate limit delay fixture to avoid hitting Honcho free tier limits * fix(examples): validate HONCHO_API_KEY early in client initialization * docs(examples): note cross-peer memory behavior in shared workspaces * docs(examples): fix save_memory and query_memory signatures in README * docs(examples): fix markdown linting issues in README * docs(examples): add assistant_id parameter to save_memory example in SKILL.md --------- Co-authored-by: Luba Kaper <lubakaper@lubas-air.mynetworksettings.com>
What this PR does
Adds a new integration example at
examples/zo/that packages Honcho as apersistent memory skill for Zo Computer — a cloud AI
platform where users build reusable workflows called skills.
Changes
SKILL.md— Zo-compatible skill manifest with YAML frontmatter (name,description, compatibility, license, metadata)
client.py— Honcho client initialization helper using environment variablestools/save_memory.py— saves user/assistant messages to a Honcho sessiontools/query_memory.py— queries peer memory via the Dialectic APItools/get_context.py— retrieves conversation context in OpenAI messageformat for LLM prompt injection
README.md— setup instructions, tool reference, concept mapping, andZo marketplace submission steps
tests/— import tests and functional tests verified against the Honchocloud API (14/14 passing)
Problem it solves
Honcho currently has integrations for CrewAI and LangGraph, but no example
for Zo Computer. This PR closes that gap by giving Zo users a ready-to-use
skill that adds persistent memory to any AI workflow — auto-saving
conversations, answering questions like "What do you remember about me?",
and injecting relevant context into LLM prompts.
It also serves as a reference for the Honcho concept mapping
(Workspaces → accounts, Peers → users, Sessions → conversations), making
it easier for new developers to understand the SDK.
Why I picked this issue
This was a good first issue that allowed me to learn the Honcho SDK end-to-end
while delivering something immediately useful — a new distribution channel for
Honcho through the Zo skill marketplace.
Testing
All 14 tests pass against the Honcho cloud API:
14 passed in 75.91s
Closes #406
@ajspig would love your feedback on this!
Summary by CodeRabbit
New Features
Documentation
Tests
Chores