@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.
- package/LICENSE +21 -0
- package/README.md +325 -0
- package/bundled/apple-notes/SKILL.md +77 -0
- package/bundled/apple-reminders/SKILL.md +96 -0
- package/bundled/blogwatcher/SKILL.md +69 -0
- package/bundled/camsnap/SKILL.md +45 -0
- package/bundled/discord/SKILL.md +578 -0
- package/bundled/gemini/SKILL.md +43 -0
- package/bundled/gifgrep/SKILL.md +79 -0
- package/bundled/github/SKILL.md +77 -0
- package/bundled/gog/SKILL.md +116 -0
- package/bundled/goplaces/SKILL.md +52 -0
- package/bundled/himalaya/SKILL.md +257 -0
- package/bundled/himalaya/references/configuration.md +184 -0
- package/bundled/himalaya/references/message-composition.md +199 -0
- package/bundled/homebrew/SKILL.md +82 -0
- package/bundled/local-places/SERVER_README.md +101 -0
- package/bundled/local-places/SKILL.md +102 -0
- package/bundled/local-places/pyproject.toml +21 -0
- package/bundled/local-places/src/local_places/__init__.py +2 -0
- package/bundled/local-places/src/local_places/google_places.py +314 -0
- package/bundled/local-places/src/local_places/main.py +65 -0
- package/bundled/local-places/src/local_places/schemas.py +107 -0
- package/bundled/markitdown/SKILL.md +96 -0
- package/bundled/mcporter/SKILL.md +61 -0
- package/bundled/merge-pr/SKILL.md +187 -0
- package/bundled/merge-pr/agents/openai.yaml +4 -0
- package/bundled/nano-banana-pro/SKILL.md +58 -0
- package/bundled/nano-banana-pro/scripts/generate_image.py +184 -0
- package/bundled/nano-pdf/SKILL.md +38 -0
- package/bundled/open-prose/README.md +25 -0
- package/bundled/open-prose/index.ts +5 -0
- package/bundled/open-prose/openclaw.plugin.json +11 -0
- package/bundled/open-prose/package.json +15 -0
- package/bundled/open-prose/skills/prose/LICENSE +21 -0
- package/bundled/open-prose/skills/prose/SKILL.md +323 -0
- package/bundled/open-prose/skills/prose/alt-borges.md +141 -0
- package/bundled/open-prose/skills/prose/alts/arabian-nights.md +358 -0
- package/bundled/open-prose/skills/prose/alts/borges.md +360 -0
- package/bundled/open-prose/skills/prose/alts/folk.md +322 -0
- package/bundled/open-prose/skills/prose/alts/homer.md +346 -0
- package/bundled/open-prose/skills/prose/alts/kafka.md +373 -0
- package/bundled/open-prose/skills/prose/compiler.md +2971 -0
- package/bundled/open-prose/skills/prose/examples/01-hello-world.prose +4 -0
- package/bundled/open-prose/skills/prose/examples/02-research-and-summarize.prose +6 -0
- package/bundled/open-prose/skills/prose/examples/03-code-review.prose +17 -0
- package/bundled/open-prose/skills/prose/examples/04-write-and-refine.prose +14 -0
- package/bundled/open-prose/skills/prose/examples/05-debug-issue.prose +20 -0
- package/bundled/open-prose/skills/prose/examples/06-explain-codebase.prose +17 -0
- package/bundled/open-prose/skills/prose/examples/07-refactor.prose +20 -0
- package/bundled/open-prose/skills/prose/examples/08-blog-post.prose +20 -0
- package/bundled/open-prose/skills/prose/examples/09-research-with-agents.prose +25 -0
- package/bundled/open-prose/skills/prose/examples/10-code-review-agents.prose +32 -0
- package/bundled/open-prose/skills/prose/examples/11-skills-and-imports.prose +27 -0
- package/bundled/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +43 -0
- package/bundled/open-prose/skills/prose/examples/13-variables-and-context.prose +51 -0
- package/bundled/open-prose/skills/prose/examples/14-composition-blocks.prose +48 -0
- package/bundled/open-prose/skills/prose/examples/15-inline-sequences.prose +23 -0
- package/bundled/open-prose/skills/prose/examples/16-parallel-reviews.prose +19 -0
- package/bundled/open-prose/skills/prose/examples/17-parallel-research.prose +19 -0
- package/bundled/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +36 -0
- package/bundled/open-prose/skills/prose/examples/19-advanced-parallel.prose +71 -0
- package/bundled/open-prose/skills/prose/examples/20-fixed-loops.prose +20 -0
- package/bundled/open-prose/skills/prose/examples/21-pipeline-operations.prose +35 -0
- package/bundled/open-prose/skills/prose/examples/22-error-handling.prose +51 -0
- package/bundled/open-prose/skills/prose/examples/23-retry-with-backoff.prose +63 -0
- package/bundled/open-prose/skills/prose/examples/24-choice-blocks.prose +86 -0
- package/bundled/open-prose/skills/prose/examples/25-conditionals.prose +114 -0
- package/bundled/open-prose/skills/prose/examples/26-parameterized-blocks.prose +100 -0
- package/bundled/open-prose/skills/prose/examples/27-string-interpolation.prose +105 -0
- package/bundled/open-prose/skills/prose/examples/28-automated-pr-review.prose +37 -0
- package/bundled/open-prose/skills/prose/examples/28-gas-town.prose +1572 -0
- package/bundled/open-prose/skills/prose/examples/29-captains-chair.prose +218 -0
- package/bundled/open-prose/skills/prose/examples/30-captains-chair-simple.prose +42 -0
- package/bundled/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +145 -0
- package/bundled/open-prose/skills/prose/examples/33-pr-review-autofix.prose +168 -0
- package/bundled/open-prose/skills/prose/examples/34-content-pipeline.prose +204 -0
- package/bundled/open-prose/skills/prose/examples/35-feature-factory.prose +296 -0
- package/bundled/open-prose/skills/prose/examples/36-bug-hunter.prose +237 -0
- package/bundled/open-prose/skills/prose/examples/37-the-forge.prose +1474 -0
- package/bundled/open-prose/skills/prose/examples/38-skill-scan.prose +455 -0
- package/bundled/open-prose/skills/prose/examples/39-architect-by-simulation.prose +277 -0
- package/bundled/open-prose/skills/prose/examples/40-rlm-self-refine.prose +32 -0
- package/bundled/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +38 -0
- package/bundled/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +46 -0
- package/bundled/open-prose/skills/prose/examples/43-rlm-pairwise.prose +50 -0
- package/bundled/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +261 -0
- package/bundled/open-prose/skills/prose/examples/45-plugin-release.prose +159 -0
- package/bundled/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +637 -0
- package/bundled/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +148 -0
- package/bundled/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +225 -0
- package/bundled/open-prose/skills/prose/examples/47-language-self-improvement.prose +356 -0
- package/bundled/open-prose/skills/prose/examples/48-habit-miner.prose +445 -0
- package/bundled/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +210 -0
- package/bundled/open-prose/skills/prose/examples/README.md +391 -0
- package/bundled/open-prose/skills/prose/examples/roadmap/README.md +22 -0
- package/bundled/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +20 -0
- package/bundled/open-prose/skills/prose/examples/roadmap/parallel-review.prose +18 -0
- package/bundled/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +17 -0
- package/bundled/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +223 -0
- package/bundled/open-prose/skills/prose/guidance/antipatterns.md +951 -0
- package/bundled/open-prose/skills/prose/guidance/patterns.md +700 -0
- package/bundled/open-prose/skills/prose/guidance/system-prompt.md +180 -0
- package/bundled/open-prose/skills/prose/help.md +144 -0
- package/bundled/open-prose/skills/prose/lib/README.md +108 -0
- package/bundled/open-prose/skills/prose/lib/calibrator.prose +215 -0
- package/bundled/open-prose/skills/prose/lib/cost-analyzer.prose +174 -0
- package/bundled/open-prose/skills/prose/lib/error-forensics.prose +250 -0
- package/bundled/open-prose/skills/prose/lib/inspector.prose +196 -0
- package/bundled/open-prose/skills/prose/lib/profiler.prose +460 -0
- package/bundled/open-prose/skills/prose/lib/program-improver.prose +275 -0
- package/bundled/open-prose/skills/prose/lib/project-memory.prose +118 -0
- package/bundled/open-prose/skills/prose/lib/user-memory.prose +93 -0
- package/bundled/open-prose/skills/prose/lib/vm-improver.prose +243 -0
- package/bundled/open-prose/skills/prose/primitives/session.md +593 -0
- package/bundled/open-prose/skills/prose/prose.md +1237 -0
- package/bundled/open-prose/skills/prose/state/filesystem.md +498 -0
- package/bundled/open-prose/skills/prose/state/in-context.md +384 -0
- package/bundled/open-prose/skills/prose/state/postgres.md +880 -0
- package/bundled/open-prose/skills/prose/state/sqlite.md +574 -0
- package/bundled/peekaboo/SKILL.md +190 -0
- package/bundled/prepare-pr/SKILL.md +277 -0
- package/bundled/prepare-pr/agents/openai.yaml +4 -0
- package/bundled/review-pr/SKILL.md +228 -0
- package/bundled/review-pr/agents/openai.yaml +4 -0
- package/bundled/sag/SKILL.md +87 -0
- package/bundled/skill-creator/SKILL.md +370 -0
- package/bundled/skill-creator/license.txt +202 -0
- package/bundled/skill-creator/scripts/init_skill.py +378 -0
- package/bundled/skill-creator/scripts/package_skill.py +111 -0
- package/bundled/skill-creator/scripts/quick_validate.py +101 -0
- package/bundled/spotify-player/SKILL.md +64 -0
- package/bundled/ssh/SKILL.md +119 -0
- package/bundled/summarize/SKILL.md +87 -0
- package/bundled/video-frames/SKILL.md +46 -0
- package/bundled/video-frames/scripts/frame.sh +81 -0
- package/bundled/voice-call/SKILL.md +45 -0
- package/bundled/wacli/SKILL.md +72 -0
- package/bundled/weather/SKILL.md +54 -0
- package/dist/agent/agent-service.d.ts +88 -0
- package/dist/agent/agent-service.js +1 -0
- package/dist/agent/message-queue.d.ts +24 -0
- package/dist/agent/message-queue.js +1 -0
- package/dist/agent/prompt-builder.d.ts +58 -0
- package/dist/agent/prompt-builder.js +1 -0
- package/dist/agent/session-agent.d.ts +197 -0
- package/dist/agent/session-agent.js +1 -0
- package/dist/agent/session-db.d.ts +26 -0
- package/dist/agent/session-db.js +1 -0
- package/dist/agent/session-error-handler.d.ts +37 -0
- package/dist/agent/session-error-handler.js +1 -0
- package/dist/agent/session-manager.d.ts +19 -0
- package/dist/agent/session-manager.js +1 -0
- package/dist/agent/workspace-files.d.ts +51 -0
- package/dist/agent/workspace-files.js +1 -0
- package/dist/auth/auth-middleware.d.ts +9 -0
- package/dist/auth/auth-middleware.js +1 -0
- package/dist/auth/node-signature-db.d.ts +30 -0
- package/dist/auth/node-signature-db.js +1 -0
- package/dist/auth/token-db.d.ts +38 -0
- package/dist/auth/token-db.js +1 -0
- package/dist/browser/browser-service.d.ts +9 -0
- package/dist/browser/browser-service.js +1 -0
- package/dist/channels/channel.d.ts +2 -0
- package/dist/channels/channel.js +1 -0
- package/dist/channels/responses.d.ts +21 -0
- package/dist/channels/responses.js +1 -0
- package/dist/commands/clear.d.ts +7 -0
- package/dist/commands/clear.js +1 -0
- package/dist/commands/cmd.d.ts +7 -0
- package/dist/commands/cmd.js +1 -0
- package/dist/commands/coder.d.ts +12 -0
- package/dist/commands/coder.js +1 -0
- package/dist/commands/command-registry.d.ts +12 -0
- package/dist/commands/command-registry.js +1 -0
- package/dist/commands/command.d.ts +22 -0
- package/dist/commands/command.js +1 -0
- package/dist/commands/compact.d.ts +7 -0
- package/dist/commands/compact.js +1 -0
- package/dist/commands/customsubagents.d.ts +15 -0
- package/dist/commands/customsubagents.js +1 -0
- package/dist/commands/help.d.ts +9 -0
- package/dist/commands/help.js +1 -0
- package/dist/commands/mcp.d.ts +9 -0
- package/dist/commands/mcp.js +1 -0
- package/dist/commands/model.d.ts +22 -0
- package/dist/commands/model.js +1 -0
- package/dist/commands/models.d.ts +11 -0
- package/dist/commands/models.js +1 -0
- package/dist/commands/new.d.ts +7 -0
- package/dist/commands/new.js +1 -0
- package/dist/commands/plugin.d.ts +7 -0
- package/dist/commands/plugin.js +1 -0
- package/dist/commands/sandbox.d.ts +12 -0
- package/dist/commands/sandbox.js +1 -0
- package/dist/commands/showtool.d.ts +12 -0
- package/dist/commands/showtool.js +1 -0
- package/dist/commands/status.d.ts +24 -0
- package/dist/commands/status.js +1 -0
- package/dist/commands/stop.d.ts +10 -0
- package/dist/commands/stop.js +1 -0
- package/dist/commands/subagents.d.ts +12 -0
- package/dist/commands/subagents.js +1 -0
- package/dist/commands/usage.d.ts +25 -0
- package/dist/commands/usage.js +1 -0
- package/dist/commands/useplugin.d.ts +7 -0
- package/dist/commands/useplugin.js +1 -0
- package/dist/config-watcher.d.ts +14 -0
- package/dist/config-watcher.js +1 -0
- package/dist/config.d.ts +267 -0
- package/dist/config.js +1 -0
- package/dist/cron/cron-service.d.ts +57 -0
- package/dist/cron/cron-service.js +1 -0
- package/dist/cron/heartbeat-token.d.ts +29 -0
- package/dist/cron/heartbeat-token.js +1 -0
- package/dist/cron/schedule.d.ts +3 -0
- package/dist/cron/schedule.js +1 -0
- package/dist/cron/store.d.ts +4 -0
- package/dist/cron/store.js +1 -0
- package/dist/cron/types.d.ts +47 -0
- package/dist/cron/types.js +1 -0
- package/dist/gateway/bridge.d.ts +38 -0
- package/dist/gateway/bridge.js +1 -0
- package/dist/gateway/channel-manager.d.ts +45 -0
- package/dist/gateway/channel-manager.js +1 -0
- package/dist/gateway/channels/qr-image.d.ts +5 -0
- package/dist/gateway/channels/qr-image.js +1 -0
- package/dist/gateway/channels/telegram.d.ts +39 -0
- package/dist/gateway/channels/telegram.js +1 -0
- package/dist/gateway/channels/webchat.d.ts +51 -0
- package/dist/gateway/channels/webchat.js +1 -0
- package/dist/gateway/channels/whatsapp.d.ts +40 -0
- package/dist/gateway/channels/whatsapp.js +1 -0
- package/dist/gateway/node-registry.d.ts +38 -0
- package/dist/gateway/node-registry.js +1 -0
- package/dist/heracli/index.d.ts +3 -0
- package/dist/heracli/index.js +2 -0
- package/dist/heracli/logs.d.ts +13 -0
- package/dist/heracli/logs.js +1 -0
- package/dist/heracli/security/audit.d.ts +17 -0
- package/dist/heracli/security/audit.js +1 -0
- package/dist/heracli/security/checks/channel-policies.d.ts +6 -0
- package/dist/heracli/security/checks/channel-policies.js +1 -0
- package/dist/heracli/security/checks/credentials.d.ts +6 -0
- package/dist/heracli/security/checks/credentials.js +1 -0
- package/dist/heracli/security/checks/fs-permissions.d.ts +6 -0
- package/dist/heracli/security/checks/fs-permissions.js +1 -0
- package/dist/heracli/security/checks/network.d.ts +4 -0
- package/dist/heracli/security/checks/network.js +1 -0
- package/dist/heracli/security/report.d.ts +4 -0
- package/dist/heracli/security/report.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/installer/hera.d.ts +3 -0
- package/dist/installer/hera.js +2 -0
- package/dist/media/message-processor.d.ts +23 -0
- package/dist/media/message-processor.js +1 -0
- package/dist/memory/memory-manager.d.ts +21 -0
- package/dist/memory/memory-manager.js +1 -0
- package/dist/memory/memory-provider.d.ts +22 -0
- package/dist/memory/memory-provider.js +1 -0
- package/dist/memory/memory-search.d.ts +102 -0
- package/dist/memory/memory-search.js +1 -0
- package/dist/memory/recall-strategies.d.ts +2 -0
- package/dist/memory/recall-strategies.js +1 -0
- package/dist/nostromo/auth.d.ts +29 -0
- package/dist/nostromo/auth.js +1 -0
- package/dist/nostromo/nostromo.d.ts +23 -0
- package/dist/nostromo/nostromo.js +1 -0
- package/dist/nostromo/ui-html-layout.d.ts +3 -0
- package/dist/nostromo/ui-html-layout.js +1 -0
- package/dist/nostromo/ui-html-modals.d.ts +3 -0
- package/dist/nostromo/ui-html-modals.js +1 -0
- package/dist/nostromo/ui-js-agent.d.ts +3 -0
- package/dist/nostromo/ui-js-agent.js +1 -0
- package/dist/nostromo/ui-js-channels.d.ts +3 -0
- package/dist/nostromo/ui-js-channels.js +1 -0
- package/dist/nostromo/ui-js-competences.d.ts +3 -0
- package/dist/nostromo/ui-js-competences.js +1 -0
- package/dist/nostromo/ui-js-config.d.ts +3 -0
- package/dist/nostromo/ui-js-config.js +1 -0
- package/dist/nostromo/ui-js-core.d.ts +3 -0
- package/dist/nostromo/ui-js-core.js +1 -0
- package/dist/nostromo/ui-js-ops.d.ts +3 -0
- package/dist/nostromo/ui-js-ops.js +1 -0
- package/dist/nostromo/ui-js-prompts.d.ts +3 -0
- package/dist/nostromo/ui-js-prompts.js +1 -0
- package/dist/nostromo/ui-styles.d.ts +3 -0
- package/dist/nostromo/ui-styles.js +1 -0
- package/dist/nostromo/ui.d.ts +2 -0
- package/dist/nostromo/ui.js +1 -0
- package/dist/server.d.ts +80 -0
- package/dist/server.js +1 -0
- package/dist/stt/local-whisper.d.ts +9 -0
- package/dist/stt/local-whisper.js +1 -0
- package/dist/stt/openai-whisper.d.ts +14 -0
- package/dist/stt/openai-whisper.js +1 -0
- package/dist/stt/stt-loader.d.ts +4 -0
- package/dist/stt/stt-loader.js +1 -0
- package/dist/stt/stt-provider.d.ts +4 -0
- package/dist/stt/stt-provider.js +1 -0
- package/dist/tools/browser-tools.d.ts +9 -0
- package/dist/tools/browser-tools.js +1 -0
- package/dist/tools/cron-tools.d.ts +4 -0
- package/dist/tools/cron-tools.js +1 -0
- package/dist/tools/memory-tools.d.ts +3 -0
- package/dist/tools/memory-tools.js +1 -0
- package/dist/tools/message-tools.d.ts +5 -0
- package/dist/tools/message-tools.js +1 -0
- package/dist/tools/node-tools.d.ts +3 -0
- package/dist/tools/node-tools.js +1 -0
- package/dist/tools/server-tools.d.ts +2 -0
- package/dist/tools/server-tools.js +1 -0
- package/dist/tools/tts-tools.d.ts +3 -0
- package/dist/tools/tts-tools.js +1 -0
- package/dist/tts/tts-service.d.ts +19 -0
- package/dist/tts/tts-service.js +1 -0
- package/dist/utils/chunk.d.ts +3 -0
- package/dist/utils/chunk.js +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/markdown/fences.d.ts +11 -0
- package/dist/utils/markdown/fences.js +1 -0
- package/dist/utils/markdown/ir.d.ts +33 -0
- package/dist/utils/markdown/ir.js +1 -0
- package/dist/utils/markdown/render.d.ts +19 -0
- package/dist/utils/markdown/render.js +1 -0
- package/dist/utils/markdown/tables.d.ts +3 -0
- package/dist/utils/markdown/tables.js +1 -0
- package/dist/utils/media-response.d.ts +29 -0
- package/dist/utils/media-response.js +1 -0
- package/dist/utils/package-paths.d.ts +5 -0
- package/dist/utils/package-paths.js +1 -0
- package/dist/utils/telegram-format.d.ts +13 -0
- package/dist/utils/telegram-format.js +1 -0
- package/installationPkg/.env.example +26 -0
- package/installationPkg/AGENTS.md +143 -0
- package/installationPkg/BOOTSTRAP.md +45 -0
- package/installationPkg/CBINT.json +16 -0
- package/installationPkg/HEARTBEAT.md +5 -0
- package/installationPkg/IDENTITY.md +7 -0
- package/installationPkg/SOUL.md +36 -0
- package/installationPkg/SYSTEM_PROMPT.md +55 -0
- package/installationPkg/SYSTEM_PROMPT_SUBAGENT.md +40 -0
- package/installationPkg/TOOLS.md +36 -0
- package/installationPkg/USER.md +11 -0
- package/installationPkg/config.example.yaml +291 -0
- 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"]
|