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.
Files changed (150) hide show
  1. forge_hermes_plugin-0.2.19/MANIFEST.in +4 -0
  2. forge_hermes_plugin-0.2.19/PKG-INFO +81 -0
  3. forge_hermes_plugin-0.2.19/README.md +61 -0
  4. forge_hermes_plugin-0.2.19/forge_hermes/__init__.py +50 -0
  5. forge_hermes_plugin-0.2.19/forge_hermes/catalog.py +653 -0
  6. forge_hermes_plugin-0.2.19/forge_hermes/config.py +53 -0
  7. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/board-8L3uX7_O.js +6 -0
  8. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/board-8L3uX7_O.js.map +1 -0
  9. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/favicon-BCHm9dUV.ico +0 -0
  10. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-Cj1IBH_w.js +36 -0
  11. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-Cj1IBH_w.js.map +1 -0
  12. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/index-DQT6EbuS.css +1 -0
  13. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/motion-1GAqqi8M.js +10 -0
  14. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/motion-1GAqqi8M.js.map +1 -0
  15. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2 +0 -0
  16. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2 +0 -0
  17. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2 +0 -0
  18. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/sora-latin-ext-wght-normal-CawQDOvP.woff2 +0 -0
  19. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/sora-latin-wght-normal-DdqRvwsR.woff2 +0 -0
  20. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff +0 -0
  21. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2 +0 -0
  22. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff +0 -0
  23. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2 +0 -0
  24. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff +0 -0
  25. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2 +0 -0
  26. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2 +0 -0
  27. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff +0 -0
  28. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff +0 -0
  29. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2 +0 -0
  30. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2 +0 -0
  31. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff +0 -0
  32. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/table-DBGlgRjk.js +23 -0
  33. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/table-DBGlgRjk.js.map +1 -0
  34. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/ui-iTluWjC4.js +46 -0
  35. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/ui-iTluWjC4.js.map +1 -0
  36. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-BvM2F9Dp.js +503 -0
  37. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-BvM2F9Dp.js.map +1 -0
  38. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/vendor-CRS-psbw.css +1 -0
  39. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/viz-CNeunkfu.js +34 -0
  40. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/assets/viz-CNeunkfu.js.map +1 -0
  41. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/favicon.ico +0 -0
  42. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/favicon.png +0 -0
  43. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/index.html +29 -0
  44. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/api-client.d.ts +50 -0
  45. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/api-client.js +300 -0
  46. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/index.d.ts +10 -0
  47. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/index.js +11 -0
  48. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/local-runtime.d.ts +39 -0
  49. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/local-runtime.js +759 -0
  50. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/parity.d.ts +9 -0
  51. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/parity.js +30 -0
  52. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-entry-shared.d.ts +10 -0
  53. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-entry-shared.js +180 -0
  54. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-sdk-types.d.ts +56 -0
  55. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/plugin-sdk-types.js +1 -0
  56. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/routes.d.ts +36 -0
  57. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/routes.js +404 -0
  58. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/tools.d.ts +3 -0
  59. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/openclaw/tools.js +593 -0
  60. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/app.js +4851 -0
  61. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/db.js +313 -0
  62. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/demo-data.js +49 -0
  63. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/e2e-server.js +20 -0
  64. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/errors.js +15 -0
  65. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/index.js +16 -0
  66. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/base.js +17 -0
  67. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/contracts.js +47 -0
  68. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/api-gateway-manager.js +11 -0
  69. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/audit-manager.js +15 -0
  70. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/authentication-manager.js +56 -0
  71. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/authorization-manager.js +56 -0
  72. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/background-job-manager.js +10 -0
  73. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/configuration-manager.js +33 -0
  74. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/database-manager.js +14 -0
  75. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/event-bus-manager.js +7 -0
  76. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/external-service-manager.js +11 -0
  77. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/health-manager.js +7 -0
  78. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/migration-manager.js +8 -0
  79. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/search-index-manager.js +4 -0
  80. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/secrets-manager.js +62 -0
  81. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/session-manager.js +121 -0
  82. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/storage-manager.js +16 -0
  83. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/token-manager.js +37 -0
  84. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/transaction-manager.js +8 -0
  85. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/platform/trusted-network.js +39 -0
  86. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/runtime.js +58 -0
  87. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/managers/type-guards.js +4 -0
  88. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/openapi.js +5595 -0
  89. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/psyche-types.js +366 -0
  90. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/activity-events.js +157 -0
  91. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/calendar.js +1101 -0
  92. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/collaboration.js +497 -0
  93. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/deleted-entities.js +234 -0
  94. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/domains.js +30 -0
  95. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/event-log.js +64 -0
  96. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/goals.js +156 -0
  97. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/habits.js +358 -0
  98. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/notes.js +492 -0
  99. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/projects.js +243 -0
  100. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/psyche.js +1353 -0
  101. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/rewards.js +845 -0
  102. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/settings.js +441 -0
  103. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/tags.js +160 -0
  104. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/task-runs.js +526 -0
  105. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/tasks.js +440 -0
  106. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/weekly-reviews.js +109 -0
  107. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/repositories/work-adjustments.js +105 -0
  108. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/seed-demo.js +11 -0
  109. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/calendar-runtime.js +1301 -0
  110. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/context.js +224 -0
  111. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/dashboard.js +176 -0
  112. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/entity-crud.js +686 -0
  113. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/gamification.js +263 -0
  114. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/insights.js +92 -0
  115. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/projects.js +101 -0
  116. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/psyche.js +63 -0
  117. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/relations.js +28 -0
  118. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/reviews.js +103 -0
  119. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/run-recovery.js +13 -0
  120. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/tagging.js +49 -0
  121. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/task-run-watchdog.js +92 -0
  122. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/services/work-time.js +203 -0
  123. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/types.js +2082 -0
  124. forge_hermes_plugin-0.2.19/forge_hermes/runtime/dist/server/web.js +91 -0
  125. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/001_core.sql +411 -0
  126. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/002_psyche.sql +392 -0
  127. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/003_habits.sql +30 -0
  128. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/004_habit_links.sql +8 -0
  129. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/005_habit_psyche_links.sql +24 -0
  130. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/006_work_adjustments.sql +14 -0
  131. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/007_weekly_review_closures.sql +17 -0
  132. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/008_calendar_execution.sql +147 -0
  133. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/009_true_calendar_events.sql +195 -0
  134. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/010_calendar_selection_state.sql +6 -0
  135. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/011_calendar_timezone_backfill.sql +11 -0
  136. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/012_work_block_ranges.sql +7 -0
  137. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
  138. forge_hermes_plugin-0.2.19/forge_hermes/runtime/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
  139. forge_hermes_plugin-0.2.19/forge_hermes/schemas.py +15 -0
  140. forge_hermes_plugin-0.2.19/forge_hermes/scripts/ensure-runtime.mjs +91 -0
  141. forge_hermes_plugin-0.2.19/forge_hermes/skill.md +54 -0
  142. forge_hermes_plugin-0.2.19/forge_hermes/tools.py +357 -0
  143. forge_hermes_plugin-0.2.19/forge_hermes/version.py +1 -0
  144. forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/PKG-INFO +81 -0
  145. forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/SOURCES.txt +148 -0
  146. forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/dependency_links.txt +1 -0
  147. forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/entry_points.txt +2 -0
  148. forge_hermes_plugin-0.2.19/forge_hermes_plugin.egg-info/top_level.txt +1 -0
  149. forge_hermes_plugin-0.2.19/pyproject.toml +49 -0
  150. forge_hermes_plugin-0.2.19/setup.cfg +4 -0
@@ -0,0 +1,4 @@
1
+ include README.md
2
+ recursive-include forge_hermes *.md
3
+ recursive-include forge_hermes/scripts *.mjs
4
+ recursive-include forge_hermes/runtime *
@@ -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))