clawdbot 2026.1.4-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 (550) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/LICENSE +21 -0
  3. package/README-header.png +0 -0
  4. package/README.md +297 -0
  5. package/dist/agents/agent-paths.js +17 -0
  6. package/dist/agents/bash-process-registry.js +126 -0
  7. package/dist/agents/bash-tools.js +837 -0
  8. package/dist/agents/clawdbot-tools.js +30 -0
  9. package/dist/agents/clawdis-tools.js +27 -0
  10. package/dist/agents/context.js +34 -0
  11. package/dist/agents/defaults.js +6 -0
  12. package/dist/agents/model-auth.js +112 -0
  13. package/dist/agents/model-catalog.js +55 -0
  14. package/dist/agents/model-fallback.js +191 -0
  15. package/dist/agents/model-scan.js +263 -0
  16. package/dist/agents/model-selection.js +116 -0
  17. package/dist/agents/models-config.js +49 -0
  18. package/dist/agents/pi-embedded-helpers.js +74 -0
  19. package/dist/agents/pi-embedded-runner.js +407 -0
  20. package/dist/agents/pi-embedded-subscribe.js +568 -0
  21. package/dist/agents/pi-embedded-utils.js +20 -0
  22. package/dist/agents/pi-embedded.js +1 -0
  23. package/dist/agents/pi-oauth.js +88 -0
  24. package/dist/agents/pi-tools.js +433 -0
  25. package/dist/agents/sandbox-paths.js +68 -0
  26. package/dist/agents/sandbox.js +644 -0
  27. package/dist/agents/shell-utils.js +53 -0
  28. package/dist/agents/skills-install.js +244 -0
  29. package/dist/agents/skills-status.js +157 -0
  30. package/dist/agents/skills.js +470 -0
  31. package/dist/agents/steerable-agent-loop.js +338 -0
  32. package/dist/agents/steerable-provider-transport.js +48 -0
  33. package/dist/agents/system-prompt.js +104 -0
  34. package/dist/agents/tool-display.js +162 -0
  35. package/dist/agents/tool-images.js +138 -0
  36. package/dist/agents/tools/browser-tool.js +339 -0
  37. package/dist/agents/tools/canvas-tool.js +193 -0
  38. package/dist/agents/tools/common.js +88 -0
  39. package/dist/agents/tools/cron-tool.js +124 -0
  40. package/dist/agents/tools/discord-actions-guild.js +186 -0
  41. package/dist/agents/tools/discord-actions-messaging.js +285 -0
  42. package/dist/agents/tools/discord-actions-moderation.js +70 -0
  43. package/dist/agents/tools/discord-actions.js +56 -0
  44. package/dist/agents/tools/discord-schema.js +199 -0
  45. package/dist/agents/tools/discord-tool.js +16 -0
  46. package/dist/agents/tools/gateway-tool.js +46 -0
  47. package/dist/agents/tools/gateway.js +27 -0
  48. package/dist/agents/tools/image-tool.js +132 -0
  49. package/dist/agents/tools/nodes-tool.js +413 -0
  50. package/dist/agents/tools/nodes-utils.js +92 -0
  51. package/dist/agents/tools/sessions-helpers.js +88 -0
  52. package/dist/agents/tools/sessions-history-tool.js +53 -0
  53. package/dist/agents/tools/sessions-list-tool.js +143 -0
  54. package/dist/agents/tools/sessions-send-helpers.js +100 -0
  55. package/dist/agents/tools/sessions-send-tool.js +347 -0
  56. package/dist/agents/tools/slack-actions.js +129 -0
  57. package/dist/agents/tools/slack-schema.js +59 -0
  58. package/dist/agents/tools/slack-tool.js +16 -0
  59. package/dist/agents/usage.js +39 -0
  60. package/dist/agents/workspace.js +241 -0
  61. package/dist/auto-reply/chunk.js +76 -0
  62. package/dist/auto-reply/envelope.js +38 -0
  63. package/dist/auto-reply/group-activation.js +20 -0
  64. package/dist/auto-reply/heartbeat.js +57 -0
  65. package/dist/auto-reply/model.js +14 -0
  66. package/dist/auto-reply/reply/abort.js +14 -0
  67. package/dist/auto-reply/reply/agent-runner.js +371 -0
  68. package/dist/auto-reply/reply/block-streaming.js +34 -0
  69. package/dist/auto-reply/reply/body.js +29 -0
  70. package/dist/auto-reply/reply/commands.js +207 -0
  71. package/dist/auto-reply/reply/directive-handling.js +361 -0
  72. package/dist/auto-reply/reply/directives.js +47 -0
  73. package/dist/auto-reply/reply/followup-runner.js +149 -0
  74. package/dist/auto-reply/reply/groups.js +91 -0
  75. package/dist/auto-reply/reply/mentions.js +38 -0
  76. package/dist/auto-reply/reply/model-selection.js +114 -0
  77. package/dist/auto-reply/reply/queue.js +399 -0
  78. package/dist/auto-reply/reply/reply-tags.js +26 -0
  79. package/dist/auto-reply/reply/session-updates.js +87 -0
  80. package/dist/auto-reply/reply/session.js +160 -0
  81. package/dist/auto-reply/reply/typing.js +75 -0
  82. package/dist/auto-reply/reply.js +535 -0
  83. package/dist/auto-reply/send-policy.js +28 -0
  84. package/dist/auto-reply/status.js +158 -0
  85. package/dist/auto-reply/templating.js +9 -0
  86. package/dist/auto-reply/thinking.js +49 -0
  87. package/dist/auto-reply/tokens.js +2 -0
  88. package/dist/auto-reply/tool-meta.js +74 -0
  89. package/dist/auto-reply/transcription.js +57 -0
  90. package/dist/auto-reply/types.js +1 -0
  91. package/dist/browser/bridge-server.js +37 -0
  92. package/dist/browser/cdp.js +382 -0
  93. package/dist/browser/chrome.js +432 -0
  94. package/dist/browser/client-actions-core.js +67 -0
  95. package/dist/browser/client-actions-observe.js +24 -0
  96. package/dist/browser/client-actions-types.js +1 -0
  97. package/dist/browser/client-actions.js +3 -0
  98. package/dist/browser/client-fetch.js +43 -0
  99. package/dist/browser/client.js +105 -0
  100. package/dist/browser/config.js +140 -0
  101. package/dist/browser/constants.js +4 -0
  102. package/dist/browser/profiles-service.js +122 -0
  103. package/dist/browser/profiles.js +85 -0
  104. package/dist/browser/pw-ai.js +2 -0
  105. package/dist/browser/pw-session.js +144 -0
  106. package/dist/browser/pw-tools-core.js +363 -0
  107. package/dist/browser/routes/agent.js +535 -0
  108. package/dist/browser/routes/basic.js +155 -0
  109. package/dist/browser/routes/index.js +8 -0
  110. package/dist/browser/routes/tabs.js +105 -0
  111. package/dist/browser/routes/utils.js +62 -0
  112. package/dist/browser/screenshot.js +40 -0
  113. package/dist/browser/server-context.js +377 -0
  114. package/dist/browser/server.js +81 -0
  115. package/dist/browser/target-id.js +18 -0
  116. package/dist/browser/trash.js +21 -0
  117. package/dist/canvas-host/a2ui/.bundle.hash +1 -0
  118. package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
  119. package/dist/canvas-host/a2ui/index.html +246 -0
  120. package/dist/canvas-host/a2ui.js +187 -0
  121. package/dist/canvas-host/server.js +382 -0
  122. package/dist/cli/browser-cli-actions-input.js +459 -0
  123. package/dist/cli/browser-cli-actions-observe.js +56 -0
  124. package/dist/cli/browser-cli-examples.js +31 -0
  125. package/dist/cli/browser-cli-inspect.js +97 -0
  126. package/dist/cli/browser-cli-manage.js +286 -0
  127. package/dist/cli/browser-cli-shared.js +1 -0
  128. package/dist/cli/browser-cli.js +26 -0
  129. package/dist/cli/canvas-cli.js +416 -0
  130. package/dist/cli/cron-cli.js +454 -0
  131. package/dist/cli/deps.js +17 -0
  132. package/dist/cli/dns-cli.js +180 -0
  133. package/dist/cli/gateway-cli.js +489 -0
  134. package/dist/cli/gateway-rpc.js +20 -0
  135. package/dist/cli/hooks-cli.js +135 -0
  136. package/dist/cli/models-cli.js +248 -0
  137. package/dist/cli/nodes-camera.js +57 -0
  138. package/dist/cli/nodes-canvas.js +26 -0
  139. package/dist/cli/nodes-cli.js +946 -0
  140. package/dist/cli/nodes-screen.js +37 -0
  141. package/dist/cli/parse-duration.js +20 -0
  142. package/dist/cli/ports.js +97 -0
  143. package/dist/cli/program.js +406 -0
  144. package/dist/cli/prompt.js +19 -0
  145. package/dist/cli/tui-cli.js +35 -0
  146. package/dist/cli/wait.js +8 -0
  147. package/dist/commands/agent.js +645 -0
  148. package/dist/commands/antigravity-oauth.js +327 -0
  149. package/dist/commands/configure.js +480 -0
  150. package/dist/commands/doctor.js +484 -0
  151. package/dist/commands/health.js +108 -0
  152. package/dist/commands/models/aliases.js +64 -0
  153. package/dist/commands/models/fallbacks.js +99 -0
  154. package/dist/commands/models/image-fallbacks.js +99 -0
  155. package/dist/commands/models/list.js +323 -0
  156. package/dist/commands/models/scan.js +266 -0
  157. package/dist/commands/models/set-image.js +23 -0
  158. package/dist/commands/models/set.js +23 -0
  159. package/dist/commands/models/shared.js +72 -0
  160. package/dist/commands/models.js +7 -0
  161. package/dist/commands/onboard-auth.js +70 -0
  162. package/dist/commands/onboard-helpers.js +295 -0
  163. package/dist/commands/onboard-interactive.js +17 -0
  164. package/dist/commands/onboard-non-interactive.js +202 -0
  165. package/dist/commands/onboard-providers.js +634 -0
  166. package/dist/commands/onboard-remote.js +120 -0
  167. package/dist/commands/onboard-skills.js +148 -0
  168. package/dist/commands/onboard-types.js +1 -0
  169. package/dist/commands/onboard.js +12 -0
  170. package/dist/commands/send.js +124 -0
  171. package/dist/commands/sessions.js +212 -0
  172. package/dist/commands/setup.js +58 -0
  173. package/dist/commands/signal-install.js +135 -0
  174. package/dist/commands/status.js +207 -0
  175. package/dist/commands/update.js +16 -0
  176. package/dist/config/config.js +6 -0
  177. package/dist/config/defaults.js +61 -0
  178. package/dist/config/io.js +147 -0
  179. package/dist/config/legacy-migrate.js +13 -0
  180. package/dist/config/legacy.js +159 -0
  181. package/dist/config/paths.js +71 -0
  182. package/dist/config/schema.js +150 -0
  183. package/dist/config/sessions.js +282 -0
  184. package/dist/config/talk.js +31 -0
  185. package/dist/config/types.js +1 -0
  186. package/dist/config/validation.js +29 -0
  187. package/dist/config/zod-schema.js +831 -0
  188. package/dist/control-ui/assets/index-BFID3yAA.css +1 -0
  189. package/dist/control-ui/assets/index-CE_axlTS.js +2235 -0
  190. package/dist/control-ui/assets/index-CE_axlTS.js.map +1 -0
  191. package/dist/control-ui/index.html +15 -0
  192. package/dist/cron/isolated-agent.js +499 -0
  193. package/dist/cron/run-log.js +72 -0
  194. package/dist/cron/schedule.js +24 -0
  195. package/dist/cron/service.js +471 -0
  196. package/dist/cron/store.js +43 -0
  197. package/dist/cron/types.js +1 -0
  198. package/dist/daemon/constants.js +10 -0
  199. package/dist/daemon/launchd.js +276 -0
  200. package/dist/daemon/legacy.js +63 -0
  201. package/dist/daemon/program-args.js +76 -0
  202. package/dist/daemon/schtasks.js +257 -0
  203. package/dist/daemon/service.js +60 -0
  204. package/dist/daemon/systemd.js +266 -0
  205. package/dist/discord/index.js +2 -0
  206. package/dist/discord/monitor.js +1188 -0
  207. package/dist/discord/probe.js +54 -0
  208. package/dist/discord/send.js +577 -0
  209. package/dist/discord/token.js +8 -0
  210. package/dist/gateway/auth.js +121 -0
  211. package/dist/gateway/call.js +94 -0
  212. package/dist/gateway/chat-attachments.js +41 -0
  213. package/dist/gateway/client.js +180 -0
  214. package/dist/gateway/config-reload.js +274 -0
  215. package/dist/gateway/control-ui.js +184 -0
  216. package/dist/gateway/hooks-mapping.js +282 -0
  217. package/dist/gateway/hooks.js +168 -0
  218. package/dist/gateway/net.js +29 -0
  219. package/dist/gateway/protocol/index.js +61 -0
  220. package/dist/gateway/protocol/schema.js +560 -0
  221. package/dist/gateway/server-bridge-subscriptions.js +93 -0
  222. package/dist/gateway/server-bridge.js +1013 -0
  223. package/dist/gateway/server-browser.js +12 -0
  224. package/dist/gateway/server-chat.js +159 -0
  225. package/dist/gateway/server-constants.js +8 -0
  226. package/dist/gateway/server-discovery.js +62 -0
  227. package/dist/gateway/server-http.js +165 -0
  228. package/dist/gateway/server-methods/agent-job.js +125 -0
  229. package/dist/gateway/server-methods/agent.js +250 -0
  230. package/dist/gateway/server-methods/chat.js +200 -0
  231. package/dist/gateway/server-methods/config.js +50 -0
  232. package/dist/gateway/server-methods/connect.js +6 -0
  233. package/dist/gateway/server-methods/cron.js +83 -0
  234. package/dist/gateway/server-methods/health.js +28 -0
  235. package/dist/gateway/server-methods/models.js +16 -0
  236. package/dist/gateway/server-methods/nodes.js +294 -0
  237. package/dist/gateway/server-methods/providers.js +217 -0
  238. package/dist/gateway/server-methods/send.js +166 -0
  239. package/dist/gateway/server-methods/sessions.js +305 -0
  240. package/dist/gateway/server-methods/skills.js +83 -0
  241. package/dist/gateway/server-methods/system.js +118 -0
  242. package/dist/gateway/server-methods/talk.js +22 -0
  243. package/dist/gateway/server-methods/types.js +1 -0
  244. package/dist/gateway/server-methods/voicewake.js +30 -0
  245. package/dist/gateway/server-methods/web.js +58 -0
  246. package/dist/gateway/server-methods/wizard.js +100 -0
  247. package/dist/gateway/server-methods.js +53 -0
  248. package/dist/gateway/server-providers.js +644 -0
  249. package/dist/gateway/server-shared.js +1 -0
  250. package/dist/gateway/server-utils.js +35 -0
  251. package/dist/gateway/server.js +1437 -0
  252. package/dist/gateway/session-utils.js +216 -0
  253. package/dist/gateway/ws-log.js +349 -0
  254. package/dist/gateway/ws-logging.js +8 -0
  255. package/dist/globals.js +41 -0
  256. package/dist/hooks/gmail-ops.js +236 -0
  257. package/dist/hooks/gmail-setup-utils.js +278 -0
  258. package/dist/hooks/gmail-watcher.js +175 -0
  259. package/dist/hooks/gmail.js +177 -0
  260. package/dist/imessage/client.js +165 -0
  261. package/dist/imessage/index.js +3 -0
  262. package/dist/imessage/monitor.js +272 -0
  263. package/dist/imessage/probe.js +26 -0
  264. package/dist/imessage/send.js +83 -0
  265. package/dist/imessage/targets.js +176 -0
  266. package/dist/index.js +50 -0
  267. package/dist/infra/agent-events.js +46 -0
  268. package/dist/infra/binaries.js +9 -0
  269. package/dist/infra/bonjour-discovery.js +163 -0
  270. package/dist/infra/bonjour.js +200 -0
  271. package/dist/infra/bridge/server.js +562 -0
  272. package/dist/infra/canvas-host-url.js +54 -0
  273. package/dist/infra/env.js +8 -0
  274. package/dist/infra/errors.js +28 -0
  275. package/dist/infra/gateway-lock.js +8 -0
  276. package/dist/infra/heartbeat-events.js +21 -0
  277. package/dist/infra/heartbeat-runner.js +453 -0
  278. package/dist/infra/heartbeat-wake.js +61 -0
  279. package/dist/infra/is-main.js +37 -0
  280. package/dist/infra/machine-name.js +40 -0
  281. package/dist/infra/node-pairing.js +211 -0
  282. package/dist/infra/pam.js +42 -0
  283. package/dist/infra/path-env.js +92 -0
  284. package/dist/infra/ports.js +87 -0
  285. package/dist/infra/provider-summary.js +80 -0
  286. package/dist/infra/restart.js +29 -0
  287. package/dist/infra/retry.js +16 -0
  288. package/dist/infra/runtime-guard.js +59 -0
  289. package/dist/infra/system-events.js +44 -0
  290. package/dist/infra/system-presence.js +216 -0
  291. package/dist/infra/tailnet.js +46 -0
  292. package/dist/infra/tailscale.js +149 -0
  293. package/dist/infra/voicewake.js +77 -0
  294. package/dist/infra/widearea-dns.js +123 -0
  295. package/dist/infra/ws.js +13 -0
  296. package/dist/logger.js +52 -0
  297. package/dist/logging.js +490 -0
  298. package/dist/macos/gateway-daemon.js +141 -0
  299. package/dist/macos/relay.js +46 -0
  300. package/dist/media/constants.js +33 -0
  301. package/dist/media/host.js +42 -0
  302. package/dist/media/image-ops.js +121 -0
  303. package/dist/media/mime.js +115 -0
  304. package/dist/media/parse.js +81 -0
  305. package/dist/media/server.js +64 -0
  306. package/dist/media/store.js +139 -0
  307. package/dist/process/command-queue.js +97 -0
  308. package/dist/process/exec.js +75 -0
  309. package/dist/protocol.schema.json +2918 -0
  310. package/dist/provider-web.js +8 -0
  311. package/dist/providers/web/index.js +2 -0
  312. package/dist/runtime.js +8 -0
  313. package/dist/sessions/send-policy.js +68 -0
  314. package/dist/signal/client.js +134 -0
  315. package/dist/signal/daemon.js +69 -0
  316. package/dist/signal/index.js +3 -0
  317. package/dist/signal/monitor.js +336 -0
  318. package/dist/signal/probe.js +46 -0
  319. package/dist/signal/send.js +91 -0
  320. package/dist/slack/actions.js +97 -0
  321. package/dist/slack/index.js +5 -0
  322. package/dist/slack/monitor.js +1029 -0
  323. package/dist/slack/probe.js +47 -0
  324. package/dist/slack/send.js +131 -0
  325. package/dist/slack/token.js +10 -0
  326. package/dist/telegram/bot.js +394 -0
  327. package/dist/telegram/download.js +34 -0
  328. package/dist/telegram/index.js +4 -0
  329. package/dist/telegram/monitor.js +47 -0
  330. package/dist/telegram/probe.js +63 -0
  331. package/dist/telegram/proxy.js +9 -0
  332. package/dist/telegram/send.js +138 -0
  333. package/dist/telegram/token.js +30 -0
  334. package/dist/telegram/webhook-set.js +12 -0
  335. package/dist/telegram/webhook.js +56 -0
  336. package/dist/tui/commands.js +74 -0
  337. package/dist/tui/components/assistant-message.js +16 -0
  338. package/dist/tui/components/chat-log.js +92 -0
  339. package/dist/tui/components/custom-editor.js +53 -0
  340. package/dist/tui/components/selectors.js +8 -0
  341. package/dist/tui/components/tool-execution.js +111 -0
  342. package/dist/tui/components/user-message.js +17 -0
  343. package/dist/tui/gateway-chat.js +140 -0
  344. package/dist/tui/layout.js +41 -0
  345. package/dist/tui/message-list.js +57 -0
  346. package/dist/tui/theme/theme.js +80 -0
  347. package/dist/tui/theme.js +25 -0
  348. package/dist/tui/tui.js +708 -0
  349. package/dist/utils.js +133 -0
  350. package/dist/version.js +18 -0
  351. package/dist/web/active-listener.js +7 -0
  352. package/dist/web/auto-reply.js +1203 -0
  353. package/dist/web/inbound.js +481 -0
  354. package/dist/web/login-qr.js +204 -0
  355. package/dist/web/login.js +59 -0
  356. package/dist/web/media.js +148 -0
  357. package/dist/web/outbound.js +67 -0
  358. package/dist/web/qr-image.js +97 -0
  359. package/dist/web/reconnect.js +60 -0
  360. package/dist/web/reply-heartbeat-wake.js +61 -0
  361. package/dist/web/session.js +346 -0
  362. package/dist/wizard/clack-prompter.js +56 -0
  363. package/dist/wizard/onboarding.js +452 -0
  364. package/dist/wizard/prompts.js +6 -0
  365. package/dist/wizard/session.js +203 -0
  366. package/docs/AGENTS.default.md +116 -0
  367. package/docs/CNAME +1 -0
  368. package/docs/RELEASING.md +64 -0
  369. package/docs/_config.yml +51 -0
  370. package/docs/_layouts/default.html +145 -0
  371. package/docs/agent-send.md +21 -0
  372. package/docs/agent.md +104 -0
  373. package/docs/android/connect.md +131 -0
  374. package/docs/architecture.md +89 -0
  375. package/docs/assets/markdown.css +130 -0
  376. package/docs/assets/pixel-lobster.svg +60 -0
  377. package/docs/assets/terminal.css +497 -0
  378. package/docs/assets/theme.js +55 -0
  379. package/docs/audio.md +50 -0
  380. package/docs/background-process.md +74 -0
  381. package/docs/bash.md +32 -0
  382. package/docs/bonjour.md +159 -0
  383. package/docs/browser.md +289 -0
  384. package/docs/camera.md +152 -0
  385. package/docs/clawd.md +199 -0
  386. package/docs/clawdbot-mac.md +104 -0
  387. package/docs/configuration.md +1177 -0
  388. package/docs/control-api.md +49 -0
  389. package/docs/control-ui.md +83 -0
  390. package/docs/cron.md +374 -0
  391. package/docs/dashboard.md +17 -0
  392. package/docs/device-models.md +46 -0
  393. package/docs/discord.md +293 -0
  394. package/docs/discovery.md +112 -0
  395. package/docs/docker.md +251 -0
  396. package/docs/docs.json +86 -0
  397. package/docs/doctor.md +47 -0
  398. package/docs/elevated.md +31 -0
  399. package/docs/faq.md +640 -0
  400. package/docs/gateway/pairing.md +109 -0
  401. package/docs/gateway-lock.md +28 -0
  402. package/docs/gateway.md +174 -0
  403. package/docs/gmail-pubsub.md +191 -0
  404. package/docs/grammy.md +27 -0
  405. package/docs/group-messages.md +71 -0
  406. package/docs/groups.md +78 -0
  407. package/docs/health.md +28 -0
  408. package/docs/heartbeat.md +64 -0
  409. package/docs/images.md +52 -0
  410. package/docs/imessage.md +63 -0
  411. package/docs/index.md +182 -0
  412. package/docs/ios/connect.md +177 -0
  413. package/docs/ios/spec.md +236 -0
  414. package/docs/location-command.md +95 -0
  415. package/docs/logging.md +99 -0
  416. package/docs/lore.md +131 -0
  417. package/docs/mac/bun.md +133 -0
  418. package/docs/mac/canvas.md +161 -0
  419. package/docs/mac/child-process.md +72 -0
  420. package/docs/mac/dev-setup.md +81 -0
  421. package/docs/mac/health.md +28 -0
  422. package/docs/mac/icon.md +26 -0
  423. package/docs/mac/logging.md +51 -0
  424. package/docs/mac/menu-bar.md +69 -0
  425. package/docs/mac/peekaboo.md +170 -0
  426. package/docs/mac/permissions.md +40 -0
  427. package/docs/mac/release.md +76 -0
  428. package/docs/mac/remote.md +57 -0
  429. package/docs/mac/signing.md +41 -0
  430. package/docs/mac/skills.md +27 -0
  431. package/docs/mac/voice-overlay.md +52 -0
  432. package/docs/mac/voicewake.md +56 -0
  433. package/docs/mac/webchat.md +27 -0
  434. package/docs/mac/xpc.md +40 -0
  435. package/docs/models.md +90 -0
  436. package/docs/nix.md +49 -0
  437. package/docs/nodes.md +157 -0
  438. package/docs/onboarding-config-protocol.md +29 -0
  439. package/docs/onboarding.md +185 -0
  440. package/docs/presence.md +133 -0
  441. package/docs/queue.md +78 -0
  442. package/docs/refactor/browser-control-simplification.md +58 -0
  443. package/docs/refactor/canvas-a2ui.md +93 -0
  444. package/docs/refactor/cli-unification.md +64 -0
  445. package/docs/refactor/gateway-client.md +31 -0
  446. package/docs/refactor/gateway.md +99 -0
  447. package/docs/refactor/new-arch.md +171 -0
  448. package/docs/refactor/tui.md +26 -0
  449. package/docs/refactor/web-gateway-troubleshooting.md +37 -0
  450. package/docs/refactor/webagent-session.md +46 -0
  451. package/docs/remote-gateway-readme.md +148 -0
  452. package/docs/remote.md +66 -0
  453. package/docs/research/memory.md +227 -0
  454. package/docs/rpc.md +35 -0
  455. package/docs/security.md +168 -0
  456. package/docs/session-tool.md +119 -0
  457. package/docs/session.md +84 -0
  458. package/docs/sessions.md +8 -0
  459. package/docs/setup.md +118 -0
  460. package/docs/signal.md +113 -0
  461. package/docs/skills-config.md +58 -0
  462. package/docs/skills.md +149 -0
  463. package/docs/slack.md +158 -0
  464. package/docs/surface.md +20 -0
  465. package/docs/tailscale.md +71 -0
  466. package/docs/talk.md +79 -0
  467. package/docs/telegram.md +90 -0
  468. package/docs/templates/AGENTS.md +126 -0
  469. package/docs/templates/BOOTSTRAP.md +53 -0
  470. package/docs/templates/IDENTITY.md +17 -0
  471. package/docs/templates/SOUL.md +41 -0
  472. package/docs/templates/TOOLS.md +41 -0
  473. package/docs/templates/USER.md +22 -0
  474. package/docs/test.md +35 -0
  475. package/docs/thinking.md +46 -0
  476. package/docs/tools.md +248 -0
  477. package/docs/troubleshooting.md +227 -0
  478. package/docs/tui.md +69 -0
  479. package/docs/typebox.md +42 -0
  480. package/docs/voicewake.md +61 -0
  481. package/docs/web.md +115 -0
  482. package/docs/webchat.md +34 -0
  483. package/docs/webhook.md +132 -0
  484. package/docs/whatsapp-clawd.jpg +0 -0
  485. package/docs/whatsapp.md +142 -0
  486. package/docs/wizard.md +158 -0
  487. package/package.json +186 -0
  488. package/skills/apple-notes/SKILL.md +50 -0
  489. package/skills/apple-reminders/SKILL.md +67 -0
  490. package/skills/bear-notes/SKILL.md +79 -0
  491. package/skills/bird/SKILL.md +25 -0
  492. package/skills/blogwatcher/SKILL.md +46 -0
  493. package/skills/blucli/SKILL.md +27 -0
  494. package/skills/brave-search/SKILL.md +30 -0
  495. package/skills/brave-search/scripts/content.mjs +53 -0
  496. package/skills/brave-search/scripts/search.mjs +79 -0
  497. package/skills/camsnap/SKILL.md +25 -0
  498. package/skills/clawdhub/SKILL.md +53 -0
  499. package/skills/coding-agent/SKILL.md +275 -0
  500. package/skills/discord/SKILL.md +369 -0
  501. package/skills/eightctl/SKILL.md +29 -0
  502. package/skills/food-order/SKILL.md +41 -0
  503. package/skills/gemini/SKILL.md +23 -0
  504. package/skills/gifgrep/SKILL.md +47 -0
  505. package/skills/github/SKILL.md +47 -0
  506. package/skills/gog/SKILL.md +36 -0
  507. package/skills/goplaces/SKILL.md +30 -0
  508. package/skills/imsg/SKILL.md +25 -0
  509. package/skills/local-places/SERVER_README.md +101 -0
  510. package/skills/local-places/SKILL.md +91 -0
  511. package/skills/local-places/pyproject.toml +27 -0
  512. package/skills/local-places/src/local_places/__init__.py +2 -0
  513. package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
  514. package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
  515. package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
  516. package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
  517. package/skills/local-places/src/local_places/google_places.py +314 -0
  518. package/skills/local-places/src/local_places/main.py +65 -0
  519. package/skills/local-places/src/local_places/schemas.py +107 -0
  520. package/skills/mcporter/SKILL.md +38 -0
  521. package/skills/nano-banana-pro/SKILL.md +29 -0
  522. package/skills/nano-banana-pro/scripts/generate_image.py +167 -0
  523. package/skills/nano-pdf/SKILL.md +20 -0
  524. package/skills/notion/SKILL.md +156 -0
  525. package/skills/obsidian/SKILL.md +55 -0
  526. package/skills/openai-image-gen/SKILL.md +31 -0
  527. package/skills/openai-image-gen/scripts/gen.py +173 -0
  528. package/skills/openai-whisper/SKILL.md +19 -0
  529. package/skills/openai-whisper-api/SKILL.md +43 -0
  530. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  531. package/skills/openhue/SKILL.md +30 -0
  532. package/skills/oracle/SKILL.md +105 -0
  533. package/skills/ordercli/SKILL.md +47 -0
  534. package/skills/peekaboo/SKILL.md +153 -0
  535. package/skills/qmd/SKILL.md +26 -0
  536. package/skills/sag/SKILL.md +62 -0
  537. package/skills/slack/SKILL.md +143 -0
  538. package/skills/songsee/SKILL.md +29 -0
  539. package/skills/sonoscli/SKILL.md +26 -0
  540. package/skills/spotify-player/SKILL.md +34 -0
  541. package/skills/summarize/SKILL.md +49 -0
  542. package/skills/things-mac/SKILL.md +61 -0
  543. package/skills/tmux/SKILL.md +121 -0
  544. package/skills/tmux/scripts/find-sessions.sh +112 -0
  545. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  546. package/skills/trello/SKILL.md +84 -0
  547. package/skills/video-frames/SKILL.md +29 -0
  548. package/skills/video-frames/scripts/frame.sh +81 -0
  549. package/skills/wacli/SKILL.md +42 -0
  550. package/skills/weather/SKILL.md +49 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: eightctl
3
+ description: Control Eight Sleep pods (status, temperature, alarms, schedules).
4
+ homepage: https://eightctl.sh
5
+ metadata: {"clawdbot":{"emoji":"🎛️","requires":{"bins":["eightctl"]},"install":[{"id":"go","kind":"go","module":"github.com/steipete/eightctl/cmd/eightctl@latest","bins":["eightctl"],"label":"Install eightctl (go)"}]}}
6
+ ---
7
+
8
+ # eightctl
9
+
10
+ Use `eightctl` for Eight Sleep pod control. Requires auth.
11
+
12
+ Auth
13
+ - Config: `~/.config/eightctl/config.yaml`
14
+ - Env: `EIGHTCTL_EMAIL`, `EIGHTCTL_PASSWORD`
15
+
16
+ Quick start
17
+ - `eightctl status`
18
+ - `eightctl on|off`
19
+ - `eightctl temp 20`
20
+
21
+ Common tasks
22
+ - Alarms: `eightctl alarm list|create|dismiss`
23
+ - Schedules: `eightctl schedule list|create|update`
24
+ - Audio: `eightctl audio state|play|pause`
25
+ - Base: `eightctl base info|angle`
26
+
27
+ Notes
28
+ - API is unofficial and rate-limited; avoid repeated logins.
29
+ - Confirm before changing temperature or alarms.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: food-order
3
+ description: Reorder Foodora orders + track ETA/status with ordercli. Never confirm without explicit user approval. Triggers: order food, reorder, track ETA.
4
+ homepage: https://ordercli.sh
5
+ metadata: {"clawdbot":{"emoji":"🥡","requires":{"bins":["ordercli"]},"install":[{"id":"go","kind":"go","module":"github.com/steipete/ordercli/cmd/ordercli@latest","bins":["ordercli"],"label":"Install ordercli (go)"}]}}
6
+ ---
7
+
8
+ # Food order (Foodora via ordercli)
9
+
10
+ Goal: reorder a previous Foodora order safely (preview first; confirm only on explicit user “yes/confirm/place the order”).
11
+
12
+ Hard safety rules
13
+ - Never run `ordercli foodora reorder ... --confirm` unless user explicitly confirms placing the order.
14
+ - Prefer preview-only steps first; show what will happen; ask for confirmation.
15
+ - If user is unsure: stop at preview and ask questions.
16
+
17
+ Setup (once)
18
+ - Country: `ordercli foodora countries` → `ordercli foodora config set --country AT`
19
+ - Login (password): `ordercli foodora login --email you@example.com --password-stdin`
20
+ - Login (no password, preferred): `ordercli foodora session chrome --url https://www.foodora.at/ --profile "Default"`
21
+
22
+ Find what to reorder
23
+ - Recent list: `ordercli foodora history --limit 10`
24
+ - Details: `ordercli foodora history show <orderCode>`
25
+ - If needed (machine-readable): `ordercli foodora history show <orderCode> --json`
26
+
27
+ Preview reorder (no cart changes)
28
+ - `ordercli foodora reorder <orderCode>`
29
+
30
+ Place reorder (cart change; explicit confirmation required)
31
+ - Confirm first, then run: `ordercli foodora reorder <orderCode> --confirm`
32
+ - Multiple addresses? Ask user for the right `--address-id` (take from their Foodora account / prior order data) and run:
33
+ - `ordercli foodora reorder <orderCode> --confirm --address-id <id>`
34
+
35
+ Track the order
36
+ - ETA/status (active list): `ordercli foodora orders`
37
+ - Live updates: `ordercli foodora orders --watch`
38
+ - Single order detail: `ordercli foodora order <orderCode>`
39
+
40
+ Debug / safe testing
41
+ - Use a throwaway config: `ordercli --config /tmp/ordercli.json ...`
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: gemini
3
+ description: Gemini CLI for one-shot Q&A, summaries, and generation.
4
+ homepage: https://ai.google.dev/
5
+ metadata: {"clawdbot":{"emoji":"♊️","requires":{"bins":["gemini"]},"install":[{"id":"brew","kind":"brew","formula":"gemini-cli","bins":["gemini"],"label":"Install Gemini CLI (brew)"}]}}
6
+ ---
7
+
8
+ # Gemini CLI
9
+
10
+ Use Gemini in one-shot mode with a positional prompt (avoid interactive mode).
11
+
12
+ Quick start
13
+ - `gemini "Answer this question..."`
14
+ - `gemini --model <name> "Prompt..."`
15
+ - `gemini --output-format json "Return JSON"`
16
+
17
+ Extensions
18
+ - List: `gemini --list-extensions`
19
+ - Manage: `gemini extensions <command>`
20
+
21
+ Notes
22
+ - If auth is required, run `gemini` once interactively and follow the login flow.
23
+ - Avoid `--yolo` for safety.
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: gifgrep
3
+ description: Search GIF providers with CLI/TUI, download results, and extract stills/sheets.
4
+ homepage: https://gifgrep.com
5
+ metadata: {"clawdbot":{"emoji":"🧲","requires":{"bins":["gifgrep"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/gifgrep","bins":["gifgrep"],"label":"Install gifgrep (brew)"},{"id":"go","kind":"go","module":"github.com/steipete/gifgrep/cmd/gifgrep@latest","bins":["gifgrep"],"label":"Install gifgrep (go)"}]}}
6
+ ---
7
+
8
+ # gifgrep
9
+
10
+ Use `gifgrep` to search GIF providers (Tenor/Giphy), browse in a TUI, download results, and extract stills or sheets.
11
+
12
+ GIF-Grab (gifgrep workflow)
13
+ - Search → preview → download → extract (still/sheet) for fast review and sharing.
14
+
15
+ Quick start
16
+ - `gifgrep cats --max 5`
17
+ - `gifgrep cats --format url | head -n 5`
18
+ - `gifgrep search --json cats | jq '.[0].url'`
19
+ - `gifgrep tui "office handshake"`
20
+ - `gifgrep cats --download --max 1 --format url`
21
+
22
+ TUI + previews
23
+ - TUI: `gifgrep tui "query"`
24
+ - CLI still previews: `--thumbs` (Kitty/Ghostty only; still frame)
25
+
26
+ Download + reveal
27
+ - `--download` saves to `~/Downloads`
28
+ - `--reveal` shows the last download in Finder
29
+
30
+ Stills + sheets
31
+ - `gifgrep still ./clip.gif --at 1.5s -o still.png`
32
+ - `gifgrep sheet ./clip.gif --frames 9 --cols 3 -o sheet.png`
33
+ - Sheets = single PNG grid of sampled frames (great for quick review, docs, PRs, chat).
34
+ - Tune: `--frames` (count), `--cols` (grid width), `--padding` (spacing).
35
+
36
+ Providers
37
+ - `--source auto|tenor|giphy`
38
+ - `GIPHY_API_KEY` required for `--source giphy`
39
+ - `TENOR_API_KEY` optional (Tenor demo key used if unset)
40
+
41
+ Output
42
+ - `--json` prints an array of results (`id`, `title`, `url`, `preview_url`, `tags`, `width`, `height`)
43
+ - `--format` for pipe-friendly fields (e.g., `url`)
44
+
45
+ Environment tweaks
46
+ - `GIFGREP_SOFTWARE_ANIM=1` to force software animation
47
+ - `GIFGREP_CELL_ASPECT=0.5` to tweak preview geometry
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: github
3
+ description: "Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries."
4
+ ---
5
+
6
+ # GitHub Skill
7
+
8
+ Use the `gh` CLI to interact with GitHub. Always specify `--repo owner/repo` when not in a git directory, or use URLs directly.
9
+
10
+ ## Pull Requests
11
+
12
+ Check CI status on a PR:
13
+ ```bash
14
+ gh pr checks 55 --repo owner/repo
15
+ ```
16
+
17
+ List recent workflow runs:
18
+ ```bash
19
+ gh run list --repo owner/repo --limit 10
20
+ ```
21
+
22
+ View a run and see which steps failed:
23
+ ```bash
24
+ gh run view <run-id> --repo owner/repo
25
+ ```
26
+
27
+ View logs for failed steps only:
28
+ ```bash
29
+ gh run view <run-id> --repo owner/repo --log-failed
30
+ ```
31
+
32
+ ## API for Advanced Queries
33
+
34
+ The `gh api` command is useful for accessing data not available through other subcommands.
35
+
36
+ Get PR with specific fields:
37
+ ```bash
38
+ gh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'
39
+ ```
40
+
41
+ ## JSON Output
42
+
43
+ Most commands support `--json` for structured output. You can use `--jq` to filter:
44
+
45
+ ```bash
46
+ gh issue list --repo owner/repo --json number,title --jq '.[] | "\(.number): \(.title)"'
47
+ ```
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: gog
3
+ description: Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
4
+ homepage: https://gogcli.sh
5
+ metadata: {"clawdbot":{"emoji":"🎮","requires":{"bins":["gog"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/gogcli","bins":["gog"],"label":"Install gog (brew)"}]}}
6
+ ---
7
+
8
+ # gog
9
+
10
+ Use `gog` for Gmail/Calendar/Drive/Contacts/Sheets/Docs. Requires OAuth setup.
11
+
12
+ Setup (once)
13
+ - `gog auth credentials /path/to/client_secret.json`
14
+ - `gog auth add you@gmail.com --services gmail,calendar,drive,contacts,sheets,docs`
15
+ - `gog auth list`
16
+
17
+ Common commands
18
+ - Gmail search: `gog gmail search 'newer_than:7d' --max 10`
19
+ - Gmail send: `gog gmail send --to a@b.com --subject "Hi" --body "Hello"`
20
+ - Calendar: `gog calendar events <calendarId> --from <iso> --to <iso>`
21
+ - Drive search: `gog drive search "query" --max 10`
22
+ - Contacts: `gog contacts list --max 20`
23
+ - Sheets get: `gog sheets get <sheetId> "Tab!A1:D10" --json`
24
+ - Sheets update: `gog sheets update <sheetId> "Tab!A1:B2" --values-json '[["A","B"],["1","2"]]' --input USER_ENTERED`
25
+ - Sheets append: `gog sheets append <sheetId> "Tab!A:C" --values-json '[["x","y","z"]]' --insert INSERT_ROWS`
26
+ - Sheets clear: `gog sheets clear <sheetId> "Tab!A2:Z"`
27
+ - Sheets metadata: `gog sheets metadata <sheetId> --json`
28
+ - Docs export: `gog docs export <docId> --format txt --out /tmp/doc.txt`
29
+ - Docs cat: `gog docs cat <docId>`
30
+
31
+ Notes
32
+ - Set `GOG_ACCOUNT=you@gmail.com` to avoid repeating `--account`.
33
+ - For scripting, prefer `--json` plus `--no-input`.
34
+ - Sheets values can be passed via `--values-json` (recommended) or as inline rows.
35
+ - Docs supports export/cat/copy. In-place edits require a Docs API client (not in gog).
36
+ - Confirm before sending mail or creating events.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: goplaces
3
+ description: Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.
4
+ homepage: https://github.com/steipete/goplaces
5
+ metadata: {"clawdbot":{"emoji":"📍","requires":{"bins":["goplaces"],"env":["GOOGLE_PLACES_API_KEY"]},"primaryEnv":"GOOGLE_PLACES_API_KEY","install":[{"id":"brew","kind":"brew","formula":"steipete/tap/goplaces","bins":["goplaces"],"label":"Install goplaces (brew)"}]}}
6
+ ---
7
+
8
+ # goplaces
9
+
10
+ Modern Google Places API (New) CLI. Human output by default, `--json` for scripts.
11
+
12
+ Install
13
+ - Homebrew: `brew install steipete/tap/goplaces`
14
+
15
+ Config
16
+ - `GOOGLE_PLACES_API_KEY` required.
17
+ - Optional: `GOOGLE_PLACES_BASE_URL` for testing/proxying.
18
+
19
+ Common commands
20
+ - Search: `goplaces search "coffee" --open-now --min-rating 4 --limit 5`
21
+ - Bias: `goplaces search "pizza" --lat 40.8 --lng -73.9 --radius-m 3000`
22
+ - Pagination: `goplaces search "pizza" --page-token "NEXT_PAGE_TOKEN"`
23
+ - Resolve: `goplaces resolve "Soho, London" --limit 5`
24
+ - Details: `goplaces details <place_id> --reviews`
25
+ - JSON: `goplaces search "sushi" --json`
26
+
27
+ Notes
28
+ - `--no-color` or `NO_COLOR` disables ANSI color.
29
+ - Price levels: 0..4 (free → very expensive).
30
+ - Type filter sends only the first `--type` value (API accepts one).
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: imsg
3
+ description: iMessage/SMS CLI for listing chats, history, watch, and sending.
4
+ homepage: https://imsg.to
5
+ metadata: {"clawdbot":{"emoji":"📨","os":["darwin"],"requires":{"bins":["imsg"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/imsg","bins":["imsg"],"label":"Install imsg (brew)"}]}}
6
+ ---
7
+
8
+ # imsg
9
+
10
+ Use `imsg` to read and send Messages.app iMessage/SMS on macOS.
11
+
12
+ Requirements
13
+ - Messages.app signed in
14
+ - Full Disk Access for your terminal
15
+ - Automation permission to control Messages.app (for sending)
16
+
17
+ Common commands
18
+ - List chats: `imsg chats --limit 10 --json`
19
+ - History: `imsg history --chat-id 1 --limit 20 --attachments --json`
20
+ - Watch: `imsg watch --chat-id 1 --attachments`
21
+ - Send: `imsg send --to "+14155551212" --text "hi" --file /path/pic.jpg`
22
+
23
+ Notes
24
+ - `--service imessage|sms|auto` controls delivery.
25
+ - Confirm recipient + message before sending.
@@ -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,91 @@
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: {"clawdbot":{"emoji":"📍","requires":{"bins":["uv"],"env":["GOOGLE_PLACES_API_KEY"]},"primaryEnv":"GOOGLE_PLACES_API_KEY"}}
6
+ ---
7
+
8
+ # 📍 Local Places
9
+
10
+ *Find places, Go fast*
11
+
12
+ Search for nearby places using a local Google Places API proxy. Two-step flow: resolve location first, then search.
13
+
14
+ ## Setup
15
+
16
+ ```bash
17
+ cd {baseDir}
18
+ echo "GOOGLE_PLACES_API_KEY=your-key" > .env
19
+ uv venv && uv pip install -e ".[dev]"
20
+ uv run --env-file .env uvicorn local_places.main:app --host 127.0.0.1 --port 8000
21
+ ```
22
+
23
+ Requires `GOOGLE_PLACES_API_KEY` in `.env` or environment.
24
+
25
+ ## Quick Start
26
+
27
+ 1. **Check server:** `curl http://127.0.0.1:8000/ping`
28
+
29
+ 2. **Resolve location:**
30
+ ```bash
31
+ curl -X POST http://127.0.0.1:8000/locations/resolve \
32
+ -H "Content-Type: application/json" \
33
+ -d '{"location_text": "Soho, London", "limit": 5}'
34
+ ```
35
+
36
+ 3. **Search places:**
37
+ ```bash
38
+ curl -X POST http://127.0.0.1:8000/places/search \
39
+ -H "Content-Type: application/json" \
40
+ -d '{
41
+ "query": "coffee shop",
42
+ "location_bias": {"lat": 51.5137, "lng": -0.1366, "radius_m": 1000},
43
+ "filters": {"open_now": true, "min_rating": 4.0},
44
+ "limit": 10
45
+ }'
46
+ ```
47
+
48
+ 4. **Get details:**
49
+ ```bash
50
+ curl http://127.0.0.1:8000/places/{place_id}
51
+ ```
52
+
53
+ ## Conversation Flow
54
+
55
+ 1. If user says "near me" or gives vague location → resolve it first
56
+ 2. If multiple results → show numbered list, ask user to pick
57
+ 3. Ask for preferences: type, open now, rating, price level
58
+ 4. Search with `location_bias` from chosen location
59
+ 5. Present results with name, rating, address, open status
60
+ 6. Offer to fetch details or refine search
61
+
62
+ ## Filter Constraints
63
+
64
+ - `filters.types`: exactly ONE type (e.g., "restaurant", "cafe", "gym")
65
+ - `filters.price_levels`: integers 0-4 (0=free, 4=very expensive)
66
+ - `filters.min_rating`: 0-5 in 0.5 increments
67
+ - `filters.open_now`: boolean
68
+ - `limit`: 1-20 for search, 1-10 for resolve
69
+ - `location_bias.radius_m`: must be > 0
70
+
71
+ ## Response Format
72
+
73
+ ```json
74
+ {
75
+ "results": [
76
+ {
77
+ "place_id": "ChIJ...",
78
+ "name": "Coffee Shop",
79
+ "address": "123 Main St",
80
+ "location": {"lat": 51.5, "lng": -0.1},
81
+ "rating": 4.6,
82
+ "price_level": 2,
83
+ "types": ["cafe", "food"],
84
+ "open_now": true
85
+ }
86
+ ],
87
+ "next_page_token": "..."
88
+ }
89
+ ```
90
+
91
+ Use `next_page_token` as `page_token` in next request for more results.
@@ -0,0 +1,27 @@
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 = [
8
+ "fastapi>=0.110.0",
9
+ "httpx>=0.27.0",
10
+ "uvicorn[standard]>=0.29.0",
11
+ ]
12
+
13
+ [project.optional-dependencies]
14
+ dev = [
15
+ "pytest>=8.0.0",
16
+ ]
17
+
18
+ [build-system]
19
+ requires = ["hatchling"]
20
+ build-backend = "hatchling.build"
21
+
22
+ [tool.hatch.build.targets.wheel]
23
+ packages = ["src/local_places"]
24
+
25
+ [tool.pytest.ini_options]
26
+ addopts = "-q"
27
+ testpaths = ["tests"]
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "0.1.0"