forge-hermes-plugin 0.2.19__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.
- forge_hermes_plugin-0.2.19/MANIFEST.in +4 -0
- forge_hermes_plugin-0.2.19/PKG-INFO +81 -0
- forge_hermes_plugin-0.2.19/README.md +61 -0
- forge_hermes_plugin-0.2.19/forge_hermes/__init__.py +50 -0
- forge_hermes_plugin-0.2.19/forge_hermes/catalog.py +653 -0
- forge_hermes_plugin-0.2.19/forge_hermes/config.py +53 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/board-8L3uX7_O.js +6 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/board-8L3uX7_O.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/favicon-BCHm9dUV.ico +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-Cj1IBH_w.js +36 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-Cj1IBH_w.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-DQT6EbuS.css +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/motion-1GAqqi8M.js +10 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/motion-1GAqqi8M.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/sora-latin-ext-wght-normal-CawQDOvP.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/sora-latin-wght-normal-DdqRvwsR.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2 +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/table-DBGlgRjk.js +23 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/table-DBGlgRjk.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/ui-iTluWjC4.js +46 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/ui-iTluWjC4.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-BvM2F9Dp.js +503 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-BvM2F9Dp.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-CRS-psbw.css +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/viz-CNeunkfu.js +34 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/viz-CNeunkfu.js.map +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/favicon.ico +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/favicon.png +0 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/index.html +29 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/api-client.d.ts +50 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/api-client.js +300 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/index.d.ts +10 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/index.js +11 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/local-runtime.d.ts +39 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/local-runtime.js +759 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/parity.d.ts +9 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/parity.js +30 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-entry-shared.d.ts +10 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-entry-shared.js +180 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-sdk-types.d.ts +56 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-sdk-types.js +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/routes.d.ts +36 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/routes.js +404 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/tools.d.ts +3 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/tools.js +593 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/app.js +4851 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/db.js +313 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/demo-data.js +49 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/e2e-server.js +20 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/errors.js +15 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/index.js +16 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/base.js +17 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/contracts.js +47 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/api-gateway-manager.js +11 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/audit-manager.js +15 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/authentication-manager.js +56 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/authorization-manager.js +56 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/background-job-manager.js +10 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/configuration-manager.js +33 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/database-manager.js +14 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/event-bus-manager.js +7 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/external-service-manager.js +11 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/health-manager.js +7 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/migration-manager.js +8 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/search-index-manager.js +4 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/secrets-manager.js +62 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/session-manager.js +121 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/storage-manager.js +16 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/token-manager.js +37 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/transaction-manager.js +8 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/trusted-network.js +39 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/runtime.js +58 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/type-guards.js +4 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/openapi.js +5595 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/psyche-types.js +366 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/activity-events.js +157 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/calendar.js +1101 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/collaboration.js +497 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/deleted-entities.js +234 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/domains.js +30 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/event-log.js +64 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/goals.js +156 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/habits.js +358 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/notes.js +492 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/projects.js +243 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/psyche.js +1353 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/rewards.js +845 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/settings.js +441 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/tags.js +160 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/task-runs.js +526 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/tasks.js +440 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/weekly-reviews.js +109 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/work-adjustments.js +105 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/seed-demo.js +11 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/calendar-runtime.js +1301 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/context.js +224 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/dashboard.js +176 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/entity-crud.js +686 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/gamification.js +263 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/insights.js +92 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/projects.js +101 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/psyche.js +63 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/relations.js +28 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/reviews.js +103 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/run-recovery.js +13 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/tagging.js +49 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/task-run-watchdog.js +92 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/work-time.js +203 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/types.js +2082 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/web.js +91 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/001_core.sql +411 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/002_psyche.sql +392 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/003_habits.sql +30 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/004_habit_links.sql +8 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/005_habit_psyche_links.sql +24 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/006_work_adjustments.sql +14 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/007_weekly_review_closures.sql +17 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/008_calendar_execution.sql +147 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/009_true_calendar_events.sql +195 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/010_calendar_selection_state.sql +6 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/011_calendar_timezone_backfill.sql +11 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/012_work_block_ranges.sql +7 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
- forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
- forge_hermes_plugin-0.2.19/forge_hermes/schemas.py +15 -0
- forge_hermes_plugin-0.2.19/forge_hermes/scripts/ensure-runtime.mjs +91 -0
- forge_hermes_plugin-0.2.19/forge_hermes/skill.md +54 -0
- forge_hermes_plugin-0.2.19/forge_hermes/tools.py +357 -0
- forge_hermes_plugin-0.2.19/forge_hermes/version.py +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/PKG-INFO +81 -0
- forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/SOURCES.txt +148 -0
- forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/dependency_links.txt +1 -0
- forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/entry_points.txt +2 -0
- forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/top_level.txt +1 -0
- forge_hermes_plugin-0.2.19/pyproject.toml +49 -0
- forge_hermes_plugin-0.2.19/setup.cfg +4 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: forge-hermes-plugin
|
|
3
|
+
Version: 0.2.19
|
|
4
|
+
Summary: Curated Hermes plugin for the Forge life operating system
|
|
5
|
+
Author: Forge
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/albertbuchard/forge/tree/main/plugins/forge-hermes
|
|
8
|
+
Project-URL: Repository, https://github.com/albertbuchard/forge
|
|
9
|
+
Project-URL: Issues, https://github.com/albertbuchard/forge/issues
|
|
10
|
+
Keywords: forge,hermes,agent,plugin,productivity
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# Forge Hermes Plugin
|
|
22
|
+
|
|
23
|
+
Hermes plugin for Forge.
|
|
24
|
+
|
|
25
|
+
This plugin follows the Hermes plugin guide directly:
|
|
26
|
+
|
|
27
|
+
- a Python package with a `hermes_agent.plugins` entry point for pip discovery
|
|
28
|
+
- a Hermes plugin manifest and registration module that expose Forge to Hermes
|
|
29
|
+
- bundled Forge runtime assets so Hermes can start Forge safely without repo-only runtime imports
|
|
30
|
+
|
|
31
|
+
It exposes the same curated Forge contract as the OpenClaw adapter, but through Hermes' Python plugin system.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
From the Forge repo:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
~/.hermes/hermes-agent/venv/bin/python -m ensurepip --upgrade
|
|
39
|
+
~/.hermes/hermes-agent/venv/bin/python -m pip install --upgrade ./plugins/forge-hermes
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
That installs the package into Hermes' own Python environment through `pip`, creates
|
|
43
|
+
`~/.hermes/forge/config.json` automatically on first plugin load if it is missing, and defaults the Forge runtime data root to
|
|
44
|
+
`~/.hermes/forge` so local Hermes usage does not write into the repo root.
|
|
45
|
+
|
|
46
|
+
Use `~/.hermes/hermes-agent/venv/bin/python` so the package lands in the Python
|
|
47
|
+
environment Hermes actually runs and Hermes can discover Forge through the package
|
|
48
|
+
entry point on the next startup.
|
|
49
|
+
|
|
50
|
+
If you want editable package mode while developing from this repo:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
~/.hermes/hermes-agent/venv/bin/python -m ensurepip --upgrade
|
|
54
|
+
~/.hermes/hermes-agent/venv/bin/python -m pip install --upgrade --editable ./plugins/forge-hermes
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Runtime behavior
|
|
58
|
+
|
|
59
|
+
- defaults to `FORGE_ORIGIN=http://127.0.0.1` and `FORGE_PORT=4317`
|
|
60
|
+
- defaults `FORGE_ACTOR_LABEL` to `hermes`
|
|
61
|
+
- defaults `FORGE_DATA_ROOT` to `~/.hermes/forge`
|
|
62
|
+
- supports `FORGE_API_TOKEN` for remote or explicitly scoped access
|
|
63
|
+
- supports `FORGE_DATA_ROOT` when you want Forge to use a specific local data folder
|
|
64
|
+
- when Forge is local and not already running, the plugin calls the repo's tested Forge local-runtime bootstrap helper instead of maintaining a separate startup implementation
|
|
65
|
+
- when port `4317` is busy and not explicitly pinned, the shared runtime helper can move Forge to the next free localhost port and remember that preferred port
|
|
66
|
+
- if another Forge runtime is already serving the wrong storage root, startup fails loudly instead of attaching to the wrong database
|
|
67
|
+
|
|
68
|
+
## Environment variables
|
|
69
|
+
|
|
70
|
+
- `FORGE_ORIGIN`
|
|
71
|
+
- `FORGE_PORT`
|
|
72
|
+
- `FORGE_API_TOKEN`
|
|
73
|
+
- `FORGE_ACTOR_LABEL`
|
|
74
|
+
- `FORGE_TIMEOUT_MS`
|
|
75
|
+
- `FORGE_DATA_ROOT`
|
|
76
|
+
|
|
77
|
+
## Notes
|
|
78
|
+
|
|
79
|
+
- the recommended install path is now pip-based Hermes entry-point discovery, not the old folder-plugin symlink
|
|
80
|
+
- edit `~/.hermes/forge/config.json` if you want to move the data root or pin a different local port
|
|
81
|
+
- the bundled skill is installed automatically on first plugin load if `~/.hermes/skills/forge-hermes/SKILL.md` does not already exist
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Forge Hermes Plugin
|
|
2
|
+
|
|
3
|
+
Hermes plugin for Forge.
|
|
4
|
+
|
|
5
|
+
This plugin follows the Hermes plugin guide directly:
|
|
6
|
+
|
|
7
|
+
- a Python package with a `hermes_agent.plugins` entry point for pip discovery
|
|
8
|
+
- a Hermes plugin manifest and registration module that expose Forge to Hermes
|
|
9
|
+
- bundled Forge runtime assets so Hermes can start Forge safely without repo-only runtime imports
|
|
10
|
+
|
|
11
|
+
It exposes the same curated Forge contract as the OpenClaw adapter, but through Hermes' Python plugin system.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
From the Forge repo:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
~/.hermes/hermes-agent/venv/bin/python -m ensurepip --upgrade
|
|
19
|
+
~/.hermes/hermes-agent/venv/bin/python -m pip install --upgrade ./plugins/forge-hermes
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
That installs the package into Hermes' own Python environment through `pip`, creates
|
|
23
|
+
`~/.hermes/forge/config.json` automatically on first plugin load if it is missing, and defaults the Forge runtime data root to
|
|
24
|
+
`~/.hermes/forge` so local Hermes usage does not write into the repo root.
|
|
25
|
+
|
|
26
|
+
Use `~/.hermes/hermes-agent/venv/bin/python` so the package lands in the Python
|
|
27
|
+
environment Hermes actually runs and Hermes can discover Forge through the package
|
|
28
|
+
entry point on the next startup.
|
|
29
|
+
|
|
30
|
+
If you want editable package mode while developing from this repo:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
~/.hermes/hermes-agent/venv/bin/python -m ensurepip --upgrade
|
|
34
|
+
~/.hermes/hermes-agent/venv/bin/python -m pip install --upgrade --editable ./plugins/forge-hermes
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Runtime behavior
|
|
38
|
+
|
|
39
|
+
- defaults to `FORGE_ORIGIN=http://127.0.0.1` and `FORGE_PORT=4317`
|
|
40
|
+
- defaults `FORGE_ACTOR_LABEL` to `hermes`
|
|
41
|
+
- defaults `FORGE_DATA_ROOT` to `~/.hermes/forge`
|
|
42
|
+
- supports `FORGE_API_TOKEN` for remote or explicitly scoped access
|
|
43
|
+
- supports `FORGE_DATA_ROOT` when you want Forge to use a specific local data folder
|
|
44
|
+
- when Forge is local and not already running, the plugin calls the repo's tested Forge local-runtime bootstrap helper instead of maintaining a separate startup implementation
|
|
45
|
+
- when port `4317` is busy and not explicitly pinned, the shared runtime helper can move Forge to the next free localhost port and remember that preferred port
|
|
46
|
+
- if another Forge runtime is already serving the wrong storage root, startup fails loudly instead of attaching to the wrong database
|
|
47
|
+
|
|
48
|
+
## Environment variables
|
|
49
|
+
|
|
50
|
+
- `FORGE_ORIGIN`
|
|
51
|
+
- `FORGE_PORT`
|
|
52
|
+
- `FORGE_API_TOKEN`
|
|
53
|
+
- `FORGE_ACTOR_LABEL`
|
|
54
|
+
- `FORGE_TIMEOUT_MS`
|
|
55
|
+
- `FORGE_DATA_ROOT`
|
|
56
|
+
|
|
57
|
+
## Notes
|
|
58
|
+
|
|
59
|
+
- the recommended install path is now pip-based Hermes entry-point discovery, not the old folder-plugin symlink
|
|
60
|
+
- edit `~/.hermes/forge/config.json` if you want to move the data root or pin a different local port
|
|
61
|
+
- the bundled skill is installed automatically on first plugin load if `~/.hermes/skills/forge-hermes/SKILL.md` does not already exist
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Forge Hermes plugin package."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import shutil
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from .catalog import TOOL_CATALOG
|
|
10
|
+
from .config import ensure_plugin_config
|
|
11
|
+
from .schemas import SCHEMAS
|
|
12
|
+
from .tools import build_handler
|
|
13
|
+
from .version import __version__
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
PACKAGE_DIR = Path(__file__).resolve().parent
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _install_skill() -> None:
|
|
20
|
+
try:
|
|
21
|
+
from hermes_cli.config import get_hermes_home # type: ignore
|
|
22
|
+
|
|
23
|
+
destination = get_hermes_home() / "skills" / "forge-hermes" / "SKILL.md"
|
|
24
|
+
except Exception:
|
|
25
|
+
destination = Path.home() / ".hermes" / "skills" / "forge-hermes" / "SKILL.md"
|
|
26
|
+
|
|
27
|
+
if destination.exists():
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
source = PACKAGE_DIR / "skill.md"
|
|
31
|
+
if not source.exists():
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
destination.parent.mkdir(parents=True, exist_ok=True)
|
|
35
|
+
shutil.copy2(source, destination)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def register(ctx) -> None:
|
|
39
|
+
ensure_plugin_config()
|
|
40
|
+
|
|
41
|
+
for spec in TOOL_CATALOG:
|
|
42
|
+
ctx.register_tool(
|
|
43
|
+
name=spec["name"],
|
|
44
|
+
toolset="forge",
|
|
45
|
+
schema=SCHEMAS[spec["name"]],
|
|
46
|
+
handler=build_handler(spec["name"]),
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
_install_skill()
|
|
50
|
+
logger.info("Registered Forge Hermes plugin with %s tools", len(TOOL_CATALOG))
|