@hera-al/server 1.6.1

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 (348) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/bundled/apple-notes/SKILL.md +77 -0
  4. package/bundled/apple-reminders/SKILL.md +96 -0
  5. package/bundled/blogwatcher/SKILL.md +69 -0
  6. package/bundled/camsnap/SKILL.md +45 -0
  7. package/bundled/discord/SKILL.md +578 -0
  8. package/bundled/gemini/SKILL.md +43 -0
  9. package/bundled/gifgrep/SKILL.md +79 -0
  10. package/bundled/github/SKILL.md +77 -0
  11. package/bundled/gog/SKILL.md +116 -0
  12. package/bundled/goplaces/SKILL.md +52 -0
  13. package/bundled/himalaya/SKILL.md +257 -0
  14. package/bundled/himalaya/references/configuration.md +184 -0
  15. package/bundled/himalaya/references/message-composition.md +199 -0
  16. package/bundled/homebrew/SKILL.md +82 -0
  17. package/bundled/local-places/SERVER_README.md +101 -0
  18. package/bundled/local-places/SKILL.md +102 -0
  19. package/bundled/local-places/pyproject.toml +21 -0
  20. package/bundled/local-places/src/local_places/__init__.py +2 -0
  21. package/bundled/local-places/src/local_places/google_places.py +314 -0
  22. package/bundled/local-places/src/local_places/main.py +65 -0
  23. package/bundled/local-places/src/local_places/schemas.py +107 -0
  24. package/bundled/markitdown/SKILL.md +96 -0
  25. package/bundled/mcporter/SKILL.md +61 -0
  26. package/bundled/merge-pr/SKILL.md +187 -0
  27. package/bundled/merge-pr/agents/openai.yaml +4 -0
  28. package/bundled/nano-banana-pro/SKILL.md +58 -0
  29. package/bundled/nano-banana-pro/scripts/generate_image.py +184 -0
  30. package/bundled/nano-pdf/SKILL.md +38 -0
  31. package/bundled/open-prose/README.md +25 -0
  32. package/bundled/open-prose/index.ts +5 -0
  33. package/bundled/open-prose/openclaw.plugin.json +11 -0
  34. package/bundled/open-prose/package.json +15 -0
  35. package/bundled/open-prose/skills/prose/LICENSE +21 -0
  36. package/bundled/open-prose/skills/prose/SKILL.md +323 -0
  37. package/bundled/open-prose/skills/prose/alt-borges.md +141 -0
  38. package/bundled/open-prose/skills/prose/alts/arabian-nights.md +358 -0
  39. package/bundled/open-prose/skills/prose/alts/borges.md +360 -0
  40. package/bundled/open-prose/skills/prose/alts/folk.md +322 -0
  41. package/bundled/open-prose/skills/prose/alts/homer.md +346 -0
  42. package/bundled/open-prose/skills/prose/alts/kafka.md +373 -0
  43. package/bundled/open-prose/skills/prose/compiler.md +2971 -0
  44. package/bundled/open-prose/skills/prose/examples/01-hello-world.prose +4 -0
  45. package/bundled/open-prose/skills/prose/examples/02-research-and-summarize.prose +6 -0
  46. package/bundled/open-prose/skills/prose/examples/03-code-review.prose +17 -0
  47. package/bundled/open-prose/skills/prose/examples/04-write-and-refine.prose +14 -0
  48. package/bundled/open-prose/skills/prose/examples/05-debug-issue.prose +20 -0
  49. package/bundled/open-prose/skills/prose/examples/06-explain-codebase.prose +17 -0
  50. package/bundled/open-prose/skills/prose/examples/07-refactor.prose +20 -0
  51. package/bundled/open-prose/skills/prose/examples/08-blog-post.prose +20 -0
  52. package/bundled/open-prose/skills/prose/examples/09-research-with-agents.prose +25 -0
  53. package/bundled/open-prose/skills/prose/examples/10-code-review-agents.prose +32 -0
  54. package/bundled/open-prose/skills/prose/examples/11-skills-and-imports.prose +27 -0
  55. package/bundled/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +43 -0
  56. package/bundled/open-prose/skills/prose/examples/13-variables-and-context.prose +51 -0
  57. package/bundled/open-prose/skills/prose/examples/14-composition-blocks.prose +48 -0
  58. package/bundled/open-prose/skills/prose/examples/15-inline-sequences.prose +23 -0
  59. package/bundled/open-prose/skills/prose/examples/16-parallel-reviews.prose +19 -0
  60. package/bundled/open-prose/skills/prose/examples/17-parallel-research.prose +19 -0
  61. package/bundled/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +36 -0
  62. package/bundled/open-prose/skills/prose/examples/19-advanced-parallel.prose +71 -0
  63. package/bundled/open-prose/skills/prose/examples/20-fixed-loops.prose +20 -0
  64. package/bundled/open-prose/skills/prose/examples/21-pipeline-operations.prose +35 -0
  65. package/bundled/open-prose/skills/prose/examples/22-error-handling.prose +51 -0
  66. package/bundled/open-prose/skills/prose/examples/23-retry-with-backoff.prose +63 -0
  67. package/bundled/open-prose/skills/prose/examples/24-choice-blocks.prose +86 -0
  68. package/bundled/open-prose/skills/prose/examples/25-conditionals.prose +114 -0
  69. package/bundled/open-prose/skills/prose/examples/26-parameterized-blocks.prose +100 -0
  70. package/bundled/open-prose/skills/prose/examples/27-string-interpolation.prose +105 -0
  71. package/bundled/open-prose/skills/prose/examples/28-automated-pr-review.prose +37 -0
  72. package/bundled/open-prose/skills/prose/examples/28-gas-town.prose +1572 -0
  73. package/bundled/open-prose/skills/prose/examples/29-captains-chair.prose +218 -0
  74. package/bundled/open-prose/skills/prose/examples/30-captains-chair-simple.prose +42 -0
  75. package/bundled/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +145 -0
  76. package/bundled/open-prose/skills/prose/examples/33-pr-review-autofix.prose +168 -0
  77. package/bundled/open-prose/skills/prose/examples/34-content-pipeline.prose +204 -0
  78. package/bundled/open-prose/skills/prose/examples/35-feature-factory.prose +296 -0
  79. package/bundled/open-prose/skills/prose/examples/36-bug-hunter.prose +237 -0
  80. package/bundled/open-prose/skills/prose/examples/37-the-forge.prose +1474 -0
  81. package/bundled/open-prose/skills/prose/examples/38-skill-scan.prose +455 -0
  82. package/bundled/open-prose/skills/prose/examples/39-architect-by-simulation.prose +277 -0
  83. package/bundled/open-prose/skills/prose/examples/40-rlm-self-refine.prose +32 -0
  84. package/bundled/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +38 -0
  85. package/bundled/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +46 -0
  86. package/bundled/open-prose/skills/prose/examples/43-rlm-pairwise.prose +50 -0
  87. package/bundled/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +261 -0
  88. package/bundled/open-prose/skills/prose/examples/45-plugin-release.prose +159 -0
  89. package/bundled/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +637 -0
  90. package/bundled/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +148 -0
  91. package/bundled/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +225 -0
  92. package/bundled/open-prose/skills/prose/examples/47-language-self-improvement.prose +356 -0
  93. package/bundled/open-prose/skills/prose/examples/48-habit-miner.prose +445 -0
  94. package/bundled/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +210 -0
  95. package/bundled/open-prose/skills/prose/examples/README.md +391 -0
  96. package/bundled/open-prose/skills/prose/examples/roadmap/README.md +22 -0
  97. package/bundled/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +20 -0
  98. package/bundled/open-prose/skills/prose/examples/roadmap/parallel-review.prose +18 -0
  99. package/bundled/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +17 -0
  100. package/bundled/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +223 -0
  101. package/bundled/open-prose/skills/prose/guidance/antipatterns.md +951 -0
  102. package/bundled/open-prose/skills/prose/guidance/patterns.md +700 -0
  103. package/bundled/open-prose/skills/prose/guidance/system-prompt.md +180 -0
  104. package/bundled/open-prose/skills/prose/help.md +144 -0
  105. package/bundled/open-prose/skills/prose/lib/README.md +108 -0
  106. package/bundled/open-prose/skills/prose/lib/calibrator.prose +215 -0
  107. package/bundled/open-prose/skills/prose/lib/cost-analyzer.prose +174 -0
  108. package/bundled/open-prose/skills/prose/lib/error-forensics.prose +250 -0
  109. package/bundled/open-prose/skills/prose/lib/inspector.prose +196 -0
  110. package/bundled/open-prose/skills/prose/lib/profiler.prose +460 -0
  111. package/bundled/open-prose/skills/prose/lib/program-improver.prose +275 -0
  112. package/bundled/open-prose/skills/prose/lib/project-memory.prose +118 -0
  113. package/bundled/open-prose/skills/prose/lib/user-memory.prose +93 -0
  114. package/bundled/open-prose/skills/prose/lib/vm-improver.prose +243 -0
  115. package/bundled/open-prose/skills/prose/primitives/session.md +593 -0
  116. package/bundled/open-prose/skills/prose/prose.md +1237 -0
  117. package/bundled/open-prose/skills/prose/state/filesystem.md +498 -0
  118. package/bundled/open-prose/skills/prose/state/in-context.md +384 -0
  119. package/bundled/open-prose/skills/prose/state/postgres.md +880 -0
  120. package/bundled/open-prose/skills/prose/state/sqlite.md +574 -0
  121. package/bundled/peekaboo/SKILL.md +190 -0
  122. package/bundled/prepare-pr/SKILL.md +277 -0
  123. package/bundled/prepare-pr/agents/openai.yaml +4 -0
  124. package/bundled/review-pr/SKILL.md +228 -0
  125. package/bundled/review-pr/agents/openai.yaml +4 -0
  126. package/bundled/sag/SKILL.md +87 -0
  127. package/bundled/skill-creator/SKILL.md +370 -0
  128. package/bundled/skill-creator/license.txt +202 -0
  129. package/bundled/skill-creator/scripts/init_skill.py +378 -0
  130. package/bundled/skill-creator/scripts/package_skill.py +111 -0
  131. package/bundled/skill-creator/scripts/quick_validate.py +101 -0
  132. package/bundled/spotify-player/SKILL.md +64 -0
  133. package/bundled/ssh/SKILL.md +119 -0
  134. package/bundled/summarize/SKILL.md +87 -0
  135. package/bundled/video-frames/SKILL.md +46 -0
  136. package/bundled/video-frames/scripts/frame.sh +81 -0
  137. package/bundled/voice-call/SKILL.md +45 -0
  138. package/bundled/wacli/SKILL.md +72 -0
  139. package/bundled/weather/SKILL.md +54 -0
  140. package/dist/agent/agent-service.d.ts +88 -0
  141. package/dist/agent/agent-service.js +1 -0
  142. package/dist/agent/message-queue.d.ts +24 -0
  143. package/dist/agent/message-queue.js +1 -0
  144. package/dist/agent/prompt-builder.d.ts +58 -0
  145. package/dist/agent/prompt-builder.js +1 -0
  146. package/dist/agent/session-agent.d.ts +197 -0
  147. package/dist/agent/session-agent.js +1 -0
  148. package/dist/agent/session-db.d.ts +26 -0
  149. package/dist/agent/session-db.js +1 -0
  150. package/dist/agent/session-error-handler.d.ts +37 -0
  151. package/dist/agent/session-error-handler.js +1 -0
  152. package/dist/agent/session-manager.d.ts +19 -0
  153. package/dist/agent/session-manager.js +1 -0
  154. package/dist/agent/workspace-files.d.ts +51 -0
  155. package/dist/agent/workspace-files.js +1 -0
  156. package/dist/auth/auth-middleware.d.ts +9 -0
  157. package/dist/auth/auth-middleware.js +1 -0
  158. package/dist/auth/node-signature-db.d.ts +30 -0
  159. package/dist/auth/node-signature-db.js +1 -0
  160. package/dist/auth/token-db.d.ts +38 -0
  161. package/dist/auth/token-db.js +1 -0
  162. package/dist/browser/browser-service.d.ts +9 -0
  163. package/dist/browser/browser-service.js +1 -0
  164. package/dist/channels/channel.d.ts +2 -0
  165. package/dist/channels/channel.js +1 -0
  166. package/dist/channels/responses.d.ts +21 -0
  167. package/dist/channels/responses.js +1 -0
  168. package/dist/commands/clear.d.ts +7 -0
  169. package/dist/commands/clear.js +1 -0
  170. package/dist/commands/cmd.d.ts +7 -0
  171. package/dist/commands/cmd.js +1 -0
  172. package/dist/commands/coder.d.ts +12 -0
  173. package/dist/commands/coder.js +1 -0
  174. package/dist/commands/command-registry.d.ts +12 -0
  175. package/dist/commands/command-registry.js +1 -0
  176. package/dist/commands/command.d.ts +22 -0
  177. package/dist/commands/command.js +1 -0
  178. package/dist/commands/compact.d.ts +7 -0
  179. package/dist/commands/compact.js +1 -0
  180. package/dist/commands/customsubagents.d.ts +15 -0
  181. package/dist/commands/customsubagents.js +1 -0
  182. package/dist/commands/help.d.ts +9 -0
  183. package/dist/commands/help.js +1 -0
  184. package/dist/commands/mcp.d.ts +9 -0
  185. package/dist/commands/mcp.js +1 -0
  186. package/dist/commands/model.d.ts +22 -0
  187. package/dist/commands/model.js +1 -0
  188. package/dist/commands/models.d.ts +11 -0
  189. package/dist/commands/models.js +1 -0
  190. package/dist/commands/new.d.ts +7 -0
  191. package/dist/commands/new.js +1 -0
  192. package/dist/commands/plugin.d.ts +7 -0
  193. package/dist/commands/plugin.js +1 -0
  194. package/dist/commands/sandbox.d.ts +12 -0
  195. package/dist/commands/sandbox.js +1 -0
  196. package/dist/commands/showtool.d.ts +12 -0
  197. package/dist/commands/showtool.js +1 -0
  198. package/dist/commands/status.d.ts +24 -0
  199. package/dist/commands/status.js +1 -0
  200. package/dist/commands/stop.d.ts +10 -0
  201. package/dist/commands/stop.js +1 -0
  202. package/dist/commands/subagents.d.ts +12 -0
  203. package/dist/commands/subagents.js +1 -0
  204. package/dist/commands/usage.d.ts +25 -0
  205. package/dist/commands/usage.js +1 -0
  206. package/dist/commands/useplugin.d.ts +7 -0
  207. package/dist/commands/useplugin.js +1 -0
  208. package/dist/config-watcher.d.ts +14 -0
  209. package/dist/config-watcher.js +1 -0
  210. package/dist/config.d.ts +267 -0
  211. package/dist/config.js +1 -0
  212. package/dist/cron/cron-service.d.ts +57 -0
  213. package/dist/cron/cron-service.js +1 -0
  214. package/dist/cron/heartbeat-token.d.ts +29 -0
  215. package/dist/cron/heartbeat-token.js +1 -0
  216. package/dist/cron/schedule.d.ts +3 -0
  217. package/dist/cron/schedule.js +1 -0
  218. package/dist/cron/store.d.ts +4 -0
  219. package/dist/cron/store.js +1 -0
  220. package/dist/cron/types.d.ts +47 -0
  221. package/dist/cron/types.js +1 -0
  222. package/dist/gateway/bridge.d.ts +38 -0
  223. package/dist/gateway/bridge.js +1 -0
  224. package/dist/gateway/channel-manager.d.ts +45 -0
  225. package/dist/gateway/channel-manager.js +1 -0
  226. package/dist/gateway/channels/qr-image.d.ts +5 -0
  227. package/dist/gateway/channels/qr-image.js +1 -0
  228. package/dist/gateway/channels/telegram.d.ts +39 -0
  229. package/dist/gateway/channels/telegram.js +1 -0
  230. package/dist/gateway/channels/webchat.d.ts +51 -0
  231. package/dist/gateway/channels/webchat.js +1 -0
  232. package/dist/gateway/channels/whatsapp.d.ts +40 -0
  233. package/dist/gateway/channels/whatsapp.js +1 -0
  234. package/dist/gateway/node-registry.d.ts +38 -0
  235. package/dist/gateway/node-registry.js +1 -0
  236. package/dist/heracli/index.d.ts +3 -0
  237. package/dist/heracli/index.js +2 -0
  238. package/dist/heracli/logs.d.ts +13 -0
  239. package/dist/heracli/logs.js +1 -0
  240. package/dist/heracli/security/audit.d.ts +17 -0
  241. package/dist/heracli/security/audit.js +1 -0
  242. package/dist/heracli/security/checks/channel-policies.d.ts +6 -0
  243. package/dist/heracli/security/checks/channel-policies.js +1 -0
  244. package/dist/heracli/security/checks/credentials.d.ts +6 -0
  245. package/dist/heracli/security/checks/credentials.js +1 -0
  246. package/dist/heracli/security/checks/fs-permissions.d.ts +6 -0
  247. package/dist/heracli/security/checks/fs-permissions.js +1 -0
  248. package/dist/heracli/security/checks/network.d.ts +4 -0
  249. package/dist/heracli/security/checks/network.js +1 -0
  250. package/dist/heracli/security/report.d.ts +4 -0
  251. package/dist/heracli/security/report.js +1 -0
  252. package/dist/index.d.ts +3 -0
  253. package/dist/index.js +2 -0
  254. package/dist/installer/hera.d.ts +3 -0
  255. package/dist/installer/hera.js +2 -0
  256. package/dist/media/message-processor.d.ts +23 -0
  257. package/dist/media/message-processor.js +1 -0
  258. package/dist/memory/memory-manager.d.ts +21 -0
  259. package/dist/memory/memory-manager.js +1 -0
  260. package/dist/memory/memory-provider.d.ts +22 -0
  261. package/dist/memory/memory-provider.js +1 -0
  262. package/dist/memory/memory-search.d.ts +102 -0
  263. package/dist/memory/memory-search.js +1 -0
  264. package/dist/memory/recall-strategies.d.ts +2 -0
  265. package/dist/memory/recall-strategies.js +1 -0
  266. package/dist/nostromo/auth.d.ts +29 -0
  267. package/dist/nostromo/auth.js +1 -0
  268. package/dist/nostromo/nostromo.d.ts +23 -0
  269. package/dist/nostromo/nostromo.js +1 -0
  270. package/dist/nostromo/ui-html-layout.d.ts +3 -0
  271. package/dist/nostromo/ui-html-layout.js +1 -0
  272. package/dist/nostromo/ui-html-modals.d.ts +3 -0
  273. package/dist/nostromo/ui-html-modals.js +1 -0
  274. package/dist/nostromo/ui-js-agent.d.ts +3 -0
  275. package/dist/nostromo/ui-js-agent.js +1 -0
  276. package/dist/nostromo/ui-js-channels.d.ts +3 -0
  277. package/dist/nostromo/ui-js-channels.js +1 -0
  278. package/dist/nostromo/ui-js-competences.d.ts +3 -0
  279. package/dist/nostromo/ui-js-competences.js +1 -0
  280. package/dist/nostromo/ui-js-config.d.ts +3 -0
  281. package/dist/nostromo/ui-js-config.js +1 -0
  282. package/dist/nostromo/ui-js-core.d.ts +3 -0
  283. package/dist/nostromo/ui-js-core.js +1 -0
  284. package/dist/nostromo/ui-js-ops.d.ts +3 -0
  285. package/dist/nostromo/ui-js-ops.js +1 -0
  286. package/dist/nostromo/ui-js-prompts.d.ts +3 -0
  287. package/dist/nostromo/ui-js-prompts.js +1 -0
  288. package/dist/nostromo/ui-styles.d.ts +3 -0
  289. package/dist/nostromo/ui-styles.js +1 -0
  290. package/dist/nostromo/ui.d.ts +2 -0
  291. package/dist/nostromo/ui.js +1 -0
  292. package/dist/server.d.ts +80 -0
  293. package/dist/server.js +1 -0
  294. package/dist/stt/local-whisper.d.ts +9 -0
  295. package/dist/stt/local-whisper.js +1 -0
  296. package/dist/stt/openai-whisper.d.ts +14 -0
  297. package/dist/stt/openai-whisper.js +1 -0
  298. package/dist/stt/stt-loader.d.ts +4 -0
  299. package/dist/stt/stt-loader.js +1 -0
  300. package/dist/stt/stt-provider.d.ts +4 -0
  301. package/dist/stt/stt-provider.js +1 -0
  302. package/dist/tools/browser-tools.d.ts +9 -0
  303. package/dist/tools/browser-tools.js +1 -0
  304. package/dist/tools/cron-tools.d.ts +4 -0
  305. package/dist/tools/cron-tools.js +1 -0
  306. package/dist/tools/memory-tools.d.ts +3 -0
  307. package/dist/tools/memory-tools.js +1 -0
  308. package/dist/tools/message-tools.d.ts +5 -0
  309. package/dist/tools/message-tools.js +1 -0
  310. package/dist/tools/node-tools.d.ts +3 -0
  311. package/dist/tools/node-tools.js +1 -0
  312. package/dist/tools/server-tools.d.ts +2 -0
  313. package/dist/tools/server-tools.js +1 -0
  314. package/dist/tools/tts-tools.d.ts +3 -0
  315. package/dist/tools/tts-tools.js +1 -0
  316. package/dist/tts/tts-service.d.ts +19 -0
  317. package/dist/tts/tts-service.js +1 -0
  318. package/dist/utils/chunk.d.ts +3 -0
  319. package/dist/utils/chunk.js +1 -0
  320. package/dist/utils/logger.d.ts +16 -0
  321. package/dist/utils/logger.js +1 -0
  322. package/dist/utils/markdown/fences.d.ts +11 -0
  323. package/dist/utils/markdown/fences.js +1 -0
  324. package/dist/utils/markdown/ir.d.ts +33 -0
  325. package/dist/utils/markdown/ir.js +1 -0
  326. package/dist/utils/markdown/render.d.ts +19 -0
  327. package/dist/utils/markdown/render.js +1 -0
  328. package/dist/utils/markdown/tables.d.ts +3 -0
  329. package/dist/utils/markdown/tables.js +1 -0
  330. package/dist/utils/media-response.d.ts +29 -0
  331. package/dist/utils/media-response.js +1 -0
  332. package/dist/utils/package-paths.d.ts +5 -0
  333. package/dist/utils/package-paths.js +1 -0
  334. package/dist/utils/telegram-format.d.ts +13 -0
  335. package/dist/utils/telegram-format.js +1 -0
  336. package/installationPkg/.env.example +26 -0
  337. package/installationPkg/AGENTS.md +143 -0
  338. package/installationPkg/BOOTSTRAP.md +45 -0
  339. package/installationPkg/CBINT.json +16 -0
  340. package/installationPkg/HEARTBEAT.md +5 -0
  341. package/installationPkg/IDENTITY.md +7 -0
  342. package/installationPkg/SOUL.md +36 -0
  343. package/installationPkg/SYSTEM_PROMPT.md +55 -0
  344. package/installationPkg/SYSTEM_PROMPT_SUBAGENT.md +40 -0
  345. package/installationPkg/TOOLS.md +36 -0
  346. package/installationPkg/USER.md +11 -0
  347. package/installationPkg/config.example.yaml +291 -0
  348. package/package.json +95 -0
@@ -0,0 +1,199 @@
1
+ # Message Composition with MML (MIME Meta Language)
2
+
3
+ Himalaya uses MML for composing emails. MML is a simple XML-based syntax that compiles to MIME messages.
4
+
5
+ ## Basic Message Structure
6
+
7
+ An email message is a list of **headers** followed by a **body**, separated by a blank line:
8
+
9
+ ```
10
+ From: sender@example.com
11
+ To: recipient@example.com
12
+ Subject: Hello World
13
+
14
+ This is the message body.
15
+ ```
16
+
17
+ ## Headers
18
+
19
+ Common headers:
20
+
21
+ - `From`: Sender address
22
+ - `To`: Primary recipient(s)
23
+ - `Cc`: Carbon copy recipients
24
+ - `Bcc`: Blind carbon copy recipients
25
+ - `Subject`: Message subject
26
+ - `Reply-To`: Address for replies (if different from From)
27
+ - `In-Reply-To`: Message ID being replied to
28
+
29
+ ### Address Formats
30
+
31
+ ```
32
+ To: user@example.com
33
+ To: John Doe <john@example.com>
34
+ To: "John Doe" <john@example.com>
35
+ To: user1@example.com, user2@example.com, "Jane" <jane@example.com>
36
+ ```
37
+
38
+ ## Plain Text Body
39
+
40
+ Simple plain text email:
41
+
42
+ ```
43
+ From: alice@localhost
44
+ To: bob@localhost
45
+ Subject: Plain Text Example
46
+
47
+ Hello, this is a plain text email.
48
+ No special formatting needed.
49
+
50
+ Best,
51
+ Alice
52
+ ```
53
+
54
+ ## MML for Rich Emails
55
+
56
+ ### Multipart Messages
57
+
58
+ Alternative text/html parts:
59
+
60
+ ```
61
+ From: alice@localhost
62
+ To: bob@localhost
63
+ Subject: Multipart Example
64
+
65
+ <#multipart type=alternative>
66
+ This is the plain text version.
67
+ <#part type=text/html>
68
+ <html><body><h1>This is the HTML version</h1></body></html>
69
+ <#/multipart>
70
+ ```
71
+
72
+ ### Attachments
73
+
74
+ Attach a file:
75
+
76
+ ```
77
+ From: alice@localhost
78
+ To: bob@localhost
79
+ Subject: With Attachment
80
+
81
+ Here is the document you requested.
82
+
83
+ <#part filename=/path/to/document.pdf><#/part>
84
+ ```
85
+
86
+ Attachment with custom name:
87
+
88
+ ```
89
+ <#part filename=/path/to/file.pdf name=report.pdf><#/part>
90
+ ```
91
+
92
+ Multiple attachments:
93
+
94
+ ```
95
+ <#part filename=/path/to/doc1.pdf><#/part>
96
+ <#part filename=/path/to/doc2.pdf><#/part>
97
+ ```
98
+
99
+ ### Inline Images
100
+
101
+ Embed an image inline:
102
+
103
+ ```
104
+ From: alice@localhost
105
+ To: bob@localhost
106
+ Subject: Inline Image
107
+
108
+ <#multipart type=related>
109
+ <#part type=text/html>
110
+ <html><body>
111
+ <p>Check out this image:</p>
112
+ <img src="cid:image1">
113
+ </body></html>
114
+ <#part disposition=inline id=image1 filename=/path/to/image.png><#/part>
115
+ <#/multipart>
116
+ ```
117
+
118
+ ### Mixed Content (Text + Attachments)
119
+
120
+ ```
121
+ From: alice@localhost
122
+ To: bob@localhost
123
+ Subject: Mixed Content
124
+
125
+ <#multipart type=mixed>
126
+ <#part type=text/plain>
127
+ Please find the attached files.
128
+
129
+ Best,
130
+ Alice
131
+ <#part filename=/path/to/file1.pdf><#/part>
132
+ <#part filename=/path/to/file2.zip><#/part>
133
+ <#/multipart>
134
+ ```
135
+
136
+ ## MML Tag Reference
137
+
138
+ ### `<#multipart>`
139
+
140
+ Groups multiple parts together.
141
+
142
+ - `type=alternative`: Different representations of same content
143
+ - `type=mixed`: Independent parts (text + attachments)
144
+ - `type=related`: Parts that reference each other (HTML + images)
145
+
146
+ ### `<#part>`
147
+
148
+ Defines a message part.
149
+
150
+ - `type=<mime-type>`: Content type (e.g., `text/html`, `application/pdf`)
151
+ - `filename=<path>`: File to attach
152
+ - `name=<name>`: Display name for attachment
153
+ - `disposition=inline`: Display inline instead of as attachment
154
+ - `id=<cid>`: Content ID for referencing in HTML
155
+
156
+ ## Composing from CLI
157
+
158
+ ### Interactive compose
159
+
160
+ Opens your `$EDITOR`:
161
+
162
+ ```bash
163
+ himalaya message write
164
+ ```
165
+
166
+ ### Reply (opens editor with quoted message)
167
+
168
+ ```bash
169
+ himalaya message reply 42
170
+ himalaya message reply 42 --all # reply-all
171
+ ```
172
+
173
+ ### Forward
174
+
175
+ ```bash
176
+ himalaya message forward 42
177
+ ```
178
+
179
+ ### Send from stdin
180
+
181
+ ```bash
182
+ cat message.txt | himalaya template send
183
+ ```
184
+
185
+ ### Prefill headers from CLI
186
+
187
+ ```bash
188
+ himalaya message write \
189
+ -H "To:recipient@example.com" \
190
+ -H "Subject:Quick Message" \
191
+ "Message body here"
192
+ ```
193
+
194
+ ## Tips
195
+
196
+ - The editor opens with a template; fill in headers and body.
197
+ - Save and exit the editor to send; exit without saving to cancel.
198
+ - MML parts are compiled to proper MIME when sending.
199
+ - Use `himalaya message export --full` to inspect the raw MIME structure of received emails.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: homebrew
3
+ description: Homebrew package manager for macOS. Search, install, manage, and troubleshoot packages and casks.
4
+ ---
5
+
6
+ # Homebrew Package Manager
7
+
8
+ Complete Homebrew command reference for installing, managing, and troubleshooting macOS packages.
9
+
10
+ ## When to Use
11
+ - Installing packages or applications (`brew install X`)
12
+ - Searching for available packages (`brew search X`)
13
+ - Updating and upgrading existing packages
14
+ - Checking package information and dependencies
15
+ - Troubleshooting installation issues
16
+
17
+ ## Command Reference
18
+
19
+ ### Search & Info
20
+
21
+ ```bash
22
+ brew search python # Search by name
23
+ brew search /^node/ # Search by regex
24
+ brew info python # Package details, deps, options
25
+ ```
26
+
27
+ ### Install & Upgrade
28
+
29
+ ```bash
30
+ brew install python # Install CLI tool (formula)
31
+ brew install google-chrome # Install GUI app (cask)
32
+ brew install git python nodejs # Install multiple
33
+ brew update # Update package list (not packages)
34
+ brew upgrade # Upgrade all outdated
35
+ brew upgrade python # Upgrade specific package
36
+ ```
37
+
38
+ ### Manage & Remove
39
+
40
+ ```bash
41
+ brew list # List all installed
42
+ brew list python # Show files installed by package
43
+ brew uninstall python # Remove package
44
+ brew autoremove # Remove unused dependencies
45
+ brew cleanup # Remove old versions and cache
46
+ ```
47
+
48
+ ### Troubleshooting
49
+
50
+ ```bash
51
+ brew doctor # Check for problems
52
+ brew config # Show configuration
53
+ brew install --verbose --debug X # Debug failed install
54
+ ```
55
+
56
+ ### Taps (Third-party repos)
57
+
58
+ ```bash
59
+ brew tap # List taps
60
+ brew tap user/repo # Add tap
61
+ brew untap user/repo # Remove tap
62
+ ```
63
+
64
+ ### Services
65
+
66
+ ```bash
67
+ brew services list # List managed services
68
+ brew services start postgresql # Start service
69
+ brew services stop postgresql # Stop service
70
+ brew services restart postgresql # Restart service
71
+ ```
72
+
73
+ ## Key Concepts
74
+
75
+ - **FORMULA:** CLI tools and libraries (python, git, node)
76
+ - **CASK:** GUI applications (google-chrome, vscode, slack)
77
+ - **TAP:** Third-party formula repositories
78
+ - **Prefix:** `/opt/homebrew` (Apple Silicon) or `/usr/local` (Intel)
79
+
80
+ ## Resources
81
+ - Docs: https://docs.brew.sh
82
+ - Formulae: https://formulae.brew.sh
@@ -0,0 +1,101 @@
1
+ # Local Places
2
+
3
+ This repo is a fusion of two pieces:
4
+
5
+ - A FastAPI server that exposes endpoints for searching and resolving places via the Google Maps Places API.
6
+ - A companion agent skill that explains how to use the API and can call it to find places efficiently.
7
+
8
+ Together, the skill and server let an agent turn natural-language place queries into structured results quickly.
9
+
10
+ ## Run locally
11
+
12
+ ```bash
13
+ # copy skill definition into the relevant folder (where the agent looks for it)
14
+ # then run the server
15
+
16
+ uv venv
17
+ uv pip install -e ".[dev]"
18
+ uv run --env-file .env uvicorn local_places.main:app --host 0.0.0.0 --reload
19
+ ```
20
+
21
+ Open the API docs at http://127.0.0.1:8000/docs.
22
+
23
+ ## Places API
24
+
25
+ Set the Google Places API key before running:
26
+
27
+ ```bash
28
+ export GOOGLE_PLACES_API_KEY="your-key"
29
+ ```
30
+
31
+ Endpoints:
32
+
33
+ - `POST /places/search` (free-text query + filters)
34
+ - `GET /places/{place_id}` (place details)
35
+ - `POST /locations/resolve` (resolve a user-provided location string)
36
+
37
+ Example search request:
38
+
39
+ ```json
40
+ {
41
+ "query": "italian restaurant",
42
+ "filters": {
43
+ "types": ["restaurant"],
44
+ "open_now": true,
45
+ "min_rating": 4.0,
46
+ "price_levels": [1, 2]
47
+ },
48
+ "limit": 10
49
+ }
50
+ ```
51
+
52
+ Notes:
53
+
54
+ - `filters.types` supports a single type (mapped to Google `includedType`).
55
+
56
+ Example search request (curl):
57
+
58
+ ```bash
59
+ curl -X POST http://127.0.0.1:8000/places/search \
60
+ -H "Content-Type: application/json" \
61
+ -d '{
62
+ "query": "italian restaurant",
63
+ "location_bias": {
64
+ "lat": 40.8065,
65
+ "lng": -73.9719,
66
+ "radius_m": 3000
67
+ },
68
+ "filters": {
69
+ "types": ["restaurant"],
70
+ "open_now": true,
71
+ "min_rating": 4.0,
72
+ "price_levels": [1, 2, 3]
73
+ },
74
+ "limit": 10
75
+ }'
76
+ ```
77
+
78
+ Example resolve request (curl):
79
+
80
+ ```bash
81
+ curl -X POST http://127.0.0.1:8000/locations/resolve \
82
+ -H "Content-Type: application/json" \
83
+ -d '{
84
+ "location_text": "Riverside Park, New York",
85
+ "limit": 5
86
+ }'
87
+ ```
88
+
89
+ ## Test
90
+
91
+ ```bash
92
+ uv run pytest
93
+ ```
94
+
95
+ ## OpenAPI
96
+
97
+ Generate the OpenAPI schema:
98
+
99
+ ```bash
100
+ uv run python scripts/generate_openapi.py
101
+ ```
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: local-places
3
+ description: Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
4
+ homepage: https://github.com/Hyaxia/local_places
5
+ metadata:
6
+ {
7
+ "openclaw":
8
+ {
9
+ "emoji": "📍",
10
+ "requires": { "bins": ["uv"], "env": ["GOOGLE_PLACES_API_KEY"] },
11
+ "primaryEnv": "GOOGLE_PLACES_API_KEY",
12
+ },
13
+ }
14
+ ---
15
+
16
+ # 📍 Local Places
17
+
18
+ _Find places, Go fast_
19
+
20
+ Search for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.
21
+
22
+ ## Setup
23
+
24
+ ```bash
25
+ cd {baseDir}
26
+ echo "GOOGLE_PLACES_API_KEY=your-key" > .env
27
+ uv venv && uv pip install -e ".[dev]"
28
+ uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
29
+ ```
30
+
31
+ Requires `GOOGLE_PLACES_API_KEY` in `.env` or environment.
32
+
33
+ ## Quick Start
34
+
35
+ 1. **Check server:** `curl http://127.0.0.1:8000/ping`
36
+
37
+ 2. **Resolve location:**
38
+
39
+ ```bash
40
+ curl -X POST http://127.0.0.1:8000/locations/resolve \
41
+ -H "Content-Type: application/json" \
42
+ -d '{"location_text": "Soho, London", "limit": 5}'
43
+ ```
44
+
45
+ 3. **Search places:**
46
+
47
+ ```bash
48
+ curl -X POST http://127.0.0.1:8000/places/search \
49
+ -H "Content-Type: application/json" \
50
+ -d '{
51
+ "query": "coffee shop",
52
+ "location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000},
53
+ "filters": {"open_now": true, "min_rating": 4.0},
54
+ "limit": 10
55
+ }'
56
+ ```
57
+
58
+ 4. **Get details:**
59
+
60
+ ```bash
61
+ curl http://127.0.0.1:8000/places/{place_id}
62
+ ```
63
+
64
+ ## Conversation Flow
65
+
66
+ 1. If user says "near me" or gives vague location → resolve it first
67
+ 2. If multiple results → show numbered list, ask user to pick
68
+ 3. Ask for preferences: type, open now, rating, price level
69
+ 4. Search with `location_bias` from chosen location
70
+ 5. Present results with name, rating, address, open status
71
+ 6. Offer to fetch details or refine search
72
+
73
+ ## Filter Constraints
74
+
75
+ - `filters.types`: exactly ONE type (e.g., "restaurant", "cafe", "gym")
76
+ - `filters.price_levels`: integers 0-4 (0=free, 4=very expensive)
77
+ - `filters.min_rating`: 0-5 in 0.5 increments
78
+ - `filters.open_now`: boolean
79
+ - `limit`: 1-20 for search, 1-10 for resolve
80
+ - `location_bias.radius_m`: must be > 0
81
+
82
+ ## Response Format
83
+
84
+ ```json
85
+ {
86
+ "results": [
87
+ {
88
+ "place_id": "ChIJ...",
89
+ "name": "Coffee Shop",
90
+ "address": "123 Main St",
91
+ "location": { "lat": 51.5, "lng": -0.1 },
92
+ "rating": 4.6,
93
+ "price_level": 2,
94
+ "types": ["cafe", "food"],
95
+ "open_now": true
96
+ }
97
+ ],
98
+ "next_page_token": "..."
99
+ }
100
+ ```
101
+
102
+ Use `next_page_token` as `page_token` in next request for more results.
@@ -0,0 +1,21 @@
1
+ [project]
2
+ name = "my-api"
3
+ version = "0.1.0"
4
+ description = "FastAPI server"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ dependencies = ["fastapi>=0.110.0", "httpx>=0.27.0", "uvicorn[standard]>=0.29.0"]
8
+
9
+ [project.optional-dependencies]
10
+ dev = ["pytest>=8.0.0"]
11
+
12
+ [build-system]
13
+ requires = ["hatchling"]
14
+ build-backend = "hatchling.build"
15
+
16
+ [tool.hatch.build.targets.wheel]
17
+ packages = ["src/local_places"]
18
+
19
+ [tool.pytest.ini_options]
20
+ addopts = "-q"
21
+ testpaths = ["tests"]
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "0.1.0"