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.
- package/CHANGELOG.md +120 -0
- package/LICENSE +21 -0
- package/README-header.png +0 -0
- package/README.md +297 -0
- package/dist/agents/agent-paths.js +17 -0
- package/dist/agents/bash-process-registry.js +126 -0
- package/dist/agents/bash-tools.js +837 -0
- package/dist/agents/clawdbot-tools.js +30 -0
- package/dist/agents/clawdis-tools.js +27 -0
- package/dist/agents/context.js +34 -0
- package/dist/agents/defaults.js +6 -0
- package/dist/agents/model-auth.js +112 -0
- package/dist/agents/model-catalog.js +55 -0
- package/dist/agents/model-fallback.js +191 -0
- package/dist/agents/model-scan.js +263 -0
- package/dist/agents/model-selection.js +116 -0
- package/dist/agents/models-config.js +49 -0
- package/dist/agents/pi-embedded-helpers.js +74 -0
- package/dist/agents/pi-embedded-runner.js +407 -0
- package/dist/agents/pi-embedded-subscribe.js +568 -0
- package/dist/agents/pi-embedded-utils.js +20 -0
- package/dist/agents/pi-embedded.js +1 -0
- package/dist/agents/pi-oauth.js +88 -0
- package/dist/agents/pi-tools.js +433 -0
- package/dist/agents/sandbox-paths.js +68 -0
- package/dist/agents/sandbox.js +644 -0
- package/dist/agents/shell-utils.js +53 -0
- package/dist/agents/skills-install.js +244 -0
- package/dist/agents/skills-status.js +157 -0
- package/dist/agents/skills.js +470 -0
- package/dist/agents/steerable-agent-loop.js +338 -0
- package/dist/agents/steerable-provider-transport.js +48 -0
- package/dist/agents/system-prompt.js +104 -0
- package/dist/agents/tool-display.js +162 -0
- package/dist/agents/tool-images.js +138 -0
- package/dist/agents/tools/browser-tool.js +339 -0
- package/dist/agents/tools/canvas-tool.js +193 -0
- package/dist/agents/tools/common.js +88 -0
- package/dist/agents/tools/cron-tool.js +124 -0
- package/dist/agents/tools/discord-actions-guild.js +186 -0
- package/dist/agents/tools/discord-actions-messaging.js +285 -0
- package/dist/agents/tools/discord-actions-moderation.js +70 -0
- package/dist/agents/tools/discord-actions.js +56 -0
- package/dist/agents/tools/discord-schema.js +199 -0
- package/dist/agents/tools/discord-tool.js +16 -0
- package/dist/agents/tools/gateway-tool.js +46 -0
- package/dist/agents/tools/gateway.js +27 -0
- package/dist/agents/tools/image-tool.js +132 -0
- package/dist/agents/tools/nodes-tool.js +413 -0
- package/dist/agents/tools/nodes-utils.js +92 -0
- package/dist/agents/tools/sessions-helpers.js +88 -0
- package/dist/agents/tools/sessions-history-tool.js +53 -0
- package/dist/agents/tools/sessions-list-tool.js +143 -0
- package/dist/agents/tools/sessions-send-helpers.js +100 -0
- package/dist/agents/tools/sessions-send-tool.js +347 -0
- package/dist/agents/tools/slack-actions.js +129 -0
- package/dist/agents/tools/slack-schema.js +59 -0
- package/dist/agents/tools/slack-tool.js +16 -0
- package/dist/agents/usage.js +39 -0
- package/dist/agents/workspace.js +241 -0
- package/dist/auto-reply/chunk.js +76 -0
- package/dist/auto-reply/envelope.js +38 -0
- package/dist/auto-reply/group-activation.js +20 -0
- package/dist/auto-reply/heartbeat.js +57 -0
- package/dist/auto-reply/model.js +14 -0
- package/dist/auto-reply/reply/abort.js +14 -0
- package/dist/auto-reply/reply/agent-runner.js +371 -0
- package/dist/auto-reply/reply/block-streaming.js +34 -0
- package/dist/auto-reply/reply/body.js +29 -0
- package/dist/auto-reply/reply/commands.js +207 -0
- package/dist/auto-reply/reply/directive-handling.js +361 -0
- package/dist/auto-reply/reply/directives.js +47 -0
- package/dist/auto-reply/reply/followup-runner.js +149 -0
- package/dist/auto-reply/reply/groups.js +91 -0
- package/dist/auto-reply/reply/mentions.js +38 -0
- package/dist/auto-reply/reply/model-selection.js +114 -0
- package/dist/auto-reply/reply/queue.js +399 -0
- package/dist/auto-reply/reply/reply-tags.js +26 -0
- package/dist/auto-reply/reply/session-updates.js +87 -0
- package/dist/auto-reply/reply/session.js +160 -0
- package/dist/auto-reply/reply/typing.js +75 -0
- package/dist/auto-reply/reply.js +535 -0
- package/dist/auto-reply/send-policy.js +28 -0
- package/dist/auto-reply/status.js +158 -0
- package/dist/auto-reply/templating.js +9 -0
- package/dist/auto-reply/thinking.js +49 -0
- package/dist/auto-reply/tokens.js +2 -0
- package/dist/auto-reply/tool-meta.js +74 -0
- package/dist/auto-reply/transcription.js +57 -0
- package/dist/auto-reply/types.js +1 -0
- package/dist/browser/bridge-server.js +37 -0
- package/dist/browser/cdp.js +382 -0
- package/dist/browser/chrome.js +432 -0
- package/dist/browser/client-actions-core.js +67 -0
- package/dist/browser/client-actions-observe.js +24 -0
- package/dist/browser/client-actions-types.js +1 -0
- package/dist/browser/client-actions.js +3 -0
- package/dist/browser/client-fetch.js +43 -0
- package/dist/browser/client.js +105 -0
- package/dist/browser/config.js +140 -0
- package/dist/browser/constants.js +4 -0
- package/dist/browser/profiles-service.js +122 -0
- package/dist/browser/profiles.js +85 -0
- package/dist/browser/pw-ai.js +2 -0
- package/dist/browser/pw-session.js +144 -0
- package/dist/browser/pw-tools-core.js +363 -0
- package/dist/browser/routes/agent.js +535 -0
- package/dist/browser/routes/basic.js +155 -0
- package/dist/browser/routes/index.js +8 -0
- package/dist/browser/routes/tabs.js +105 -0
- package/dist/browser/routes/utils.js +62 -0
- package/dist/browser/screenshot.js +40 -0
- package/dist/browser/server-context.js +377 -0
- package/dist/browser/server.js +81 -0
- package/dist/browser/target-id.js +18 -0
- package/dist/browser/trash.js +21 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -0
- package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
- package/dist/canvas-host/a2ui/index.html +246 -0
- package/dist/canvas-host/a2ui.js +187 -0
- package/dist/canvas-host/server.js +382 -0
- package/dist/cli/browser-cli-actions-input.js +459 -0
- package/dist/cli/browser-cli-actions-observe.js +56 -0
- package/dist/cli/browser-cli-examples.js +31 -0
- package/dist/cli/browser-cli-inspect.js +97 -0
- package/dist/cli/browser-cli-manage.js +286 -0
- package/dist/cli/browser-cli-shared.js +1 -0
- package/dist/cli/browser-cli.js +26 -0
- package/dist/cli/canvas-cli.js +416 -0
- package/dist/cli/cron-cli.js +454 -0
- package/dist/cli/deps.js +17 -0
- package/dist/cli/dns-cli.js +180 -0
- package/dist/cli/gateway-cli.js +489 -0
- package/dist/cli/gateway-rpc.js +20 -0
- package/dist/cli/hooks-cli.js +135 -0
- package/dist/cli/models-cli.js +248 -0
- package/dist/cli/nodes-camera.js +57 -0
- package/dist/cli/nodes-canvas.js +26 -0
- package/dist/cli/nodes-cli.js +946 -0
- package/dist/cli/nodes-screen.js +37 -0
- package/dist/cli/parse-duration.js +20 -0
- package/dist/cli/ports.js +97 -0
- package/dist/cli/program.js +406 -0
- package/dist/cli/prompt.js +19 -0
- package/dist/cli/tui-cli.js +35 -0
- package/dist/cli/wait.js +8 -0
- package/dist/commands/agent.js +645 -0
- package/dist/commands/antigravity-oauth.js +327 -0
- package/dist/commands/configure.js +480 -0
- package/dist/commands/doctor.js +484 -0
- package/dist/commands/health.js +108 -0
- package/dist/commands/models/aliases.js +64 -0
- package/dist/commands/models/fallbacks.js +99 -0
- package/dist/commands/models/image-fallbacks.js +99 -0
- package/dist/commands/models/list.js +323 -0
- package/dist/commands/models/scan.js +266 -0
- package/dist/commands/models/set-image.js +23 -0
- package/dist/commands/models/set.js +23 -0
- package/dist/commands/models/shared.js +72 -0
- package/dist/commands/models.js +7 -0
- package/dist/commands/onboard-auth.js +70 -0
- package/dist/commands/onboard-helpers.js +295 -0
- package/dist/commands/onboard-interactive.js +17 -0
- package/dist/commands/onboard-non-interactive.js +202 -0
- package/dist/commands/onboard-providers.js +634 -0
- package/dist/commands/onboard-remote.js +120 -0
- package/dist/commands/onboard-skills.js +148 -0
- package/dist/commands/onboard-types.js +1 -0
- package/dist/commands/onboard.js +12 -0
- package/dist/commands/send.js +124 -0
- package/dist/commands/sessions.js +212 -0
- package/dist/commands/setup.js +58 -0
- package/dist/commands/signal-install.js +135 -0
- package/dist/commands/status.js +207 -0
- package/dist/commands/update.js +16 -0
- package/dist/config/config.js +6 -0
- package/dist/config/defaults.js +61 -0
- package/dist/config/io.js +147 -0
- package/dist/config/legacy-migrate.js +13 -0
- package/dist/config/legacy.js +159 -0
- package/dist/config/paths.js +71 -0
- package/dist/config/schema.js +150 -0
- package/dist/config/sessions.js +282 -0
- package/dist/config/talk.js +31 -0
- package/dist/config/types.js +1 -0
- package/dist/config/validation.js +29 -0
- package/dist/config/zod-schema.js +831 -0
- package/dist/control-ui/assets/index-BFID3yAA.css +1 -0
- package/dist/control-ui/assets/index-CE_axlTS.js +2235 -0
- package/dist/control-ui/assets/index-CE_axlTS.js.map +1 -0
- package/dist/control-ui/index.html +15 -0
- package/dist/cron/isolated-agent.js +499 -0
- package/dist/cron/run-log.js +72 -0
- package/dist/cron/schedule.js +24 -0
- package/dist/cron/service.js +471 -0
- package/dist/cron/store.js +43 -0
- package/dist/cron/types.js +1 -0
- package/dist/daemon/constants.js +10 -0
- package/dist/daemon/launchd.js +276 -0
- package/dist/daemon/legacy.js +63 -0
- package/dist/daemon/program-args.js +76 -0
- package/dist/daemon/schtasks.js +257 -0
- package/dist/daemon/service.js +60 -0
- package/dist/daemon/systemd.js +266 -0
- package/dist/discord/index.js +2 -0
- package/dist/discord/monitor.js +1188 -0
- package/dist/discord/probe.js +54 -0
- package/dist/discord/send.js +577 -0
- package/dist/discord/token.js +8 -0
- package/dist/gateway/auth.js +121 -0
- package/dist/gateway/call.js +94 -0
- package/dist/gateway/chat-attachments.js +41 -0
- package/dist/gateway/client.js +180 -0
- package/dist/gateway/config-reload.js +274 -0
- package/dist/gateway/control-ui.js +184 -0
- package/dist/gateway/hooks-mapping.js +282 -0
- package/dist/gateway/hooks.js +168 -0
- package/dist/gateway/net.js +29 -0
- package/dist/gateway/protocol/index.js +61 -0
- package/dist/gateway/protocol/schema.js +560 -0
- package/dist/gateway/server-bridge-subscriptions.js +93 -0
- package/dist/gateway/server-bridge.js +1013 -0
- package/dist/gateway/server-browser.js +12 -0
- package/dist/gateway/server-chat.js +159 -0
- package/dist/gateway/server-constants.js +8 -0
- package/dist/gateway/server-discovery.js +62 -0
- package/dist/gateway/server-http.js +165 -0
- package/dist/gateway/server-methods/agent-job.js +125 -0
- package/dist/gateway/server-methods/agent.js +250 -0
- package/dist/gateway/server-methods/chat.js +200 -0
- package/dist/gateway/server-methods/config.js +50 -0
- package/dist/gateway/server-methods/connect.js +6 -0
- package/dist/gateway/server-methods/cron.js +83 -0
- package/dist/gateway/server-methods/health.js +28 -0
- package/dist/gateway/server-methods/models.js +16 -0
- package/dist/gateway/server-methods/nodes.js +294 -0
- package/dist/gateway/server-methods/providers.js +217 -0
- package/dist/gateway/server-methods/send.js +166 -0
- package/dist/gateway/server-methods/sessions.js +305 -0
- package/dist/gateway/server-methods/skills.js +83 -0
- package/dist/gateway/server-methods/system.js +118 -0
- package/dist/gateway/server-methods/talk.js +22 -0
- package/dist/gateway/server-methods/types.js +1 -0
- package/dist/gateway/server-methods/voicewake.js +30 -0
- package/dist/gateway/server-methods/web.js +58 -0
- package/dist/gateway/server-methods/wizard.js +100 -0
- package/dist/gateway/server-methods.js +53 -0
- package/dist/gateway/server-providers.js +644 -0
- package/dist/gateway/server-shared.js +1 -0
- package/dist/gateway/server-utils.js +35 -0
- package/dist/gateway/server.js +1437 -0
- package/dist/gateway/session-utils.js +216 -0
- package/dist/gateway/ws-log.js +349 -0
- package/dist/gateway/ws-logging.js +8 -0
- package/dist/globals.js +41 -0
- package/dist/hooks/gmail-ops.js +236 -0
- package/dist/hooks/gmail-setup-utils.js +278 -0
- package/dist/hooks/gmail-watcher.js +175 -0
- package/dist/hooks/gmail.js +177 -0
- package/dist/imessage/client.js +165 -0
- package/dist/imessage/index.js +3 -0
- package/dist/imessage/monitor.js +272 -0
- package/dist/imessage/probe.js +26 -0
- package/dist/imessage/send.js +83 -0
- package/dist/imessage/targets.js +176 -0
- package/dist/index.js +50 -0
- package/dist/infra/agent-events.js +46 -0
- package/dist/infra/binaries.js +9 -0
- package/dist/infra/bonjour-discovery.js +163 -0
- package/dist/infra/bonjour.js +200 -0
- package/dist/infra/bridge/server.js +562 -0
- package/dist/infra/canvas-host-url.js +54 -0
- package/dist/infra/env.js +8 -0
- package/dist/infra/errors.js +28 -0
- package/dist/infra/gateway-lock.js +8 -0
- package/dist/infra/heartbeat-events.js +21 -0
- package/dist/infra/heartbeat-runner.js +453 -0
- package/dist/infra/heartbeat-wake.js +61 -0
- package/dist/infra/is-main.js +37 -0
- package/dist/infra/machine-name.js +40 -0
- package/dist/infra/node-pairing.js +211 -0
- package/dist/infra/pam.js +42 -0
- package/dist/infra/path-env.js +92 -0
- package/dist/infra/ports.js +87 -0
- package/dist/infra/provider-summary.js +80 -0
- package/dist/infra/restart.js +29 -0
- package/dist/infra/retry.js +16 -0
- package/dist/infra/runtime-guard.js +59 -0
- package/dist/infra/system-events.js +44 -0
- package/dist/infra/system-presence.js +216 -0
- package/dist/infra/tailnet.js +46 -0
- package/dist/infra/tailscale.js +149 -0
- package/dist/infra/voicewake.js +77 -0
- package/dist/infra/widearea-dns.js +123 -0
- package/dist/infra/ws.js +13 -0
- package/dist/logger.js +52 -0
- package/dist/logging.js +490 -0
- package/dist/macos/gateway-daemon.js +141 -0
- package/dist/macos/relay.js +46 -0
- package/dist/media/constants.js +33 -0
- package/dist/media/host.js +42 -0
- package/dist/media/image-ops.js +121 -0
- package/dist/media/mime.js +115 -0
- package/dist/media/parse.js +81 -0
- package/dist/media/server.js +64 -0
- package/dist/media/store.js +139 -0
- package/dist/process/command-queue.js +97 -0
- package/dist/process/exec.js +75 -0
- package/dist/protocol.schema.json +2918 -0
- package/dist/provider-web.js +8 -0
- package/dist/providers/web/index.js +2 -0
- package/dist/runtime.js +8 -0
- package/dist/sessions/send-policy.js +68 -0
- package/dist/signal/client.js +134 -0
- package/dist/signal/daemon.js +69 -0
- package/dist/signal/index.js +3 -0
- package/dist/signal/monitor.js +336 -0
- package/dist/signal/probe.js +46 -0
- package/dist/signal/send.js +91 -0
- package/dist/slack/actions.js +97 -0
- package/dist/slack/index.js +5 -0
- package/dist/slack/monitor.js +1029 -0
- package/dist/slack/probe.js +47 -0
- package/dist/slack/send.js +131 -0
- package/dist/slack/token.js +10 -0
- package/dist/telegram/bot.js +394 -0
- package/dist/telegram/download.js +34 -0
- package/dist/telegram/index.js +4 -0
- package/dist/telegram/monitor.js +47 -0
- package/dist/telegram/probe.js +63 -0
- package/dist/telegram/proxy.js +9 -0
- package/dist/telegram/send.js +138 -0
- package/dist/telegram/token.js +30 -0
- package/dist/telegram/webhook-set.js +12 -0
- package/dist/telegram/webhook.js +56 -0
- package/dist/tui/commands.js +74 -0
- package/dist/tui/components/assistant-message.js +16 -0
- package/dist/tui/components/chat-log.js +92 -0
- package/dist/tui/components/custom-editor.js +53 -0
- package/dist/tui/components/selectors.js +8 -0
- package/dist/tui/components/tool-execution.js +111 -0
- package/dist/tui/components/user-message.js +17 -0
- package/dist/tui/gateway-chat.js +140 -0
- package/dist/tui/layout.js +41 -0
- package/dist/tui/message-list.js +57 -0
- package/dist/tui/theme/theme.js +80 -0
- package/dist/tui/theme.js +25 -0
- package/dist/tui/tui.js +708 -0
- package/dist/utils.js +133 -0
- package/dist/version.js +18 -0
- package/dist/web/active-listener.js +7 -0
- package/dist/web/auto-reply.js +1203 -0
- package/dist/web/inbound.js +481 -0
- package/dist/web/login-qr.js +204 -0
- package/dist/web/login.js +59 -0
- package/dist/web/media.js +148 -0
- package/dist/web/outbound.js +67 -0
- package/dist/web/qr-image.js +97 -0
- package/dist/web/reconnect.js +60 -0
- package/dist/web/reply-heartbeat-wake.js +61 -0
- package/dist/web/session.js +346 -0
- package/dist/wizard/clack-prompter.js +56 -0
- package/dist/wizard/onboarding.js +452 -0
- package/dist/wizard/prompts.js +6 -0
- package/dist/wizard/session.js +203 -0
- package/docs/AGENTS.default.md +116 -0
- package/docs/CNAME +1 -0
- package/docs/RELEASING.md +64 -0
- package/docs/_config.yml +51 -0
- package/docs/_layouts/default.html +145 -0
- package/docs/agent-send.md +21 -0
- package/docs/agent.md +104 -0
- package/docs/android/connect.md +131 -0
- package/docs/architecture.md +89 -0
- package/docs/assets/markdown.css +130 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/terminal.css +497 -0
- package/docs/assets/theme.js +55 -0
- package/docs/audio.md +50 -0
- package/docs/background-process.md +74 -0
- package/docs/bash.md +32 -0
- package/docs/bonjour.md +159 -0
- package/docs/browser.md +289 -0
- package/docs/camera.md +152 -0
- package/docs/clawd.md +199 -0
- package/docs/clawdbot-mac.md +104 -0
- package/docs/configuration.md +1177 -0
- package/docs/control-api.md +49 -0
- package/docs/control-ui.md +83 -0
- package/docs/cron.md +374 -0
- package/docs/dashboard.md +17 -0
- package/docs/device-models.md +46 -0
- package/docs/discord.md +293 -0
- package/docs/discovery.md +112 -0
- package/docs/docker.md +251 -0
- package/docs/docs.json +86 -0
- package/docs/doctor.md +47 -0
- package/docs/elevated.md +31 -0
- package/docs/faq.md +640 -0
- package/docs/gateway/pairing.md +109 -0
- package/docs/gateway-lock.md +28 -0
- package/docs/gateway.md +174 -0
- package/docs/gmail-pubsub.md +191 -0
- package/docs/grammy.md +27 -0
- package/docs/group-messages.md +71 -0
- package/docs/groups.md +78 -0
- package/docs/health.md +28 -0
- package/docs/heartbeat.md +64 -0
- package/docs/images.md +52 -0
- package/docs/imessage.md +63 -0
- package/docs/index.md +182 -0
- package/docs/ios/connect.md +177 -0
- package/docs/ios/spec.md +236 -0
- package/docs/location-command.md +95 -0
- package/docs/logging.md +99 -0
- package/docs/lore.md +131 -0
- package/docs/mac/bun.md +133 -0
- package/docs/mac/canvas.md +161 -0
- package/docs/mac/child-process.md +72 -0
- package/docs/mac/dev-setup.md +81 -0
- package/docs/mac/health.md +28 -0
- package/docs/mac/icon.md +26 -0
- package/docs/mac/logging.md +51 -0
- package/docs/mac/menu-bar.md +69 -0
- package/docs/mac/peekaboo.md +170 -0
- package/docs/mac/permissions.md +40 -0
- package/docs/mac/release.md +76 -0
- package/docs/mac/remote.md +57 -0
- package/docs/mac/signing.md +41 -0
- package/docs/mac/skills.md +27 -0
- package/docs/mac/voice-overlay.md +52 -0
- package/docs/mac/voicewake.md +56 -0
- package/docs/mac/webchat.md +27 -0
- package/docs/mac/xpc.md +40 -0
- package/docs/models.md +90 -0
- package/docs/nix.md +49 -0
- package/docs/nodes.md +157 -0
- package/docs/onboarding-config-protocol.md +29 -0
- package/docs/onboarding.md +185 -0
- package/docs/presence.md +133 -0
- package/docs/queue.md +78 -0
- package/docs/refactor/browser-control-simplification.md +58 -0
- package/docs/refactor/canvas-a2ui.md +93 -0
- package/docs/refactor/cli-unification.md +64 -0
- package/docs/refactor/gateway-client.md +31 -0
- package/docs/refactor/gateway.md +99 -0
- package/docs/refactor/new-arch.md +171 -0
- package/docs/refactor/tui.md +26 -0
- package/docs/refactor/web-gateway-troubleshooting.md +37 -0
- package/docs/refactor/webagent-session.md +46 -0
- package/docs/remote-gateway-readme.md +148 -0
- package/docs/remote.md +66 -0
- package/docs/research/memory.md +227 -0
- package/docs/rpc.md +35 -0
- package/docs/security.md +168 -0
- package/docs/session-tool.md +119 -0
- package/docs/session.md +84 -0
- package/docs/sessions.md +8 -0
- package/docs/setup.md +118 -0
- package/docs/signal.md +113 -0
- package/docs/skills-config.md +58 -0
- package/docs/skills.md +149 -0
- package/docs/slack.md +158 -0
- package/docs/surface.md +20 -0
- package/docs/tailscale.md +71 -0
- package/docs/talk.md +79 -0
- package/docs/telegram.md +90 -0
- package/docs/templates/AGENTS.md +126 -0
- package/docs/templates/BOOTSTRAP.md +53 -0
- package/docs/templates/IDENTITY.md +17 -0
- package/docs/templates/SOUL.md +41 -0
- package/docs/templates/TOOLS.md +41 -0
- package/docs/templates/USER.md +22 -0
- package/docs/test.md +35 -0
- package/docs/thinking.md +46 -0
- package/docs/tools.md +248 -0
- package/docs/troubleshooting.md +227 -0
- package/docs/tui.md +69 -0
- package/docs/typebox.md +42 -0
- package/docs/voicewake.md +61 -0
- package/docs/web.md +115 -0
- package/docs/webchat.md +34 -0
- package/docs/webhook.md +132 -0
- package/docs/whatsapp-clawd.jpg +0 -0
- package/docs/whatsapp.md +142 -0
- package/docs/wizard.md +158 -0
- package/package.json +186 -0
- package/skills/apple-notes/SKILL.md +50 -0
- package/skills/apple-reminders/SKILL.md +67 -0
- package/skills/bear-notes/SKILL.md +79 -0
- package/skills/bird/SKILL.md +25 -0
- package/skills/blogwatcher/SKILL.md +46 -0
- package/skills/blucli/SKILL.md +27 -0
- package/skills/brave-search/SKILL.md +30 -0
- package/skills/brave-search/scripts/content.mjs +53 -0
- package/skills/brave-search/scripts/search.mjs +79 -0
- package/skills/camsnap/SKILL.md +25 -0
- package/skills/clawdhub/SKILL.md +53 -0
- package/skills/coding-agent/SKILL.md +275 -0
- package/skills/discord/SKILL.md +369 -0
- package/skills/eightctl/SKILL.md +29 -0
- package/skills/food-order/SKILL.md +41 -0
- package/skills/gemini/SKILL.md +23 -0
- package/skills/gifgrep/SKILL.md +47 -0
- package/skills/github/SKILL.md +47 -0
- package/skills/gog/SKILL.md +36 -0
- package/skills/goplaces/SKILL.md +30 -0
- package/skills/imsg/SKILL.md +25 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +91 -0
- package/skills/local-places/pyproject.toml +27 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +38 -0
- package/skills/nano-banana-pro/SKILL.md +29 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +167 -0
- package/skills/nano-pdf/SKILL.md +20 -0
- package/skills/notion/SKILL.md +156 -0
- package/skills/obsidian/SKILL.md +55 -0
- package/skills/openai-image-gen/SKILL.md +31 -0
- package/skills/openai-image-gen/scripts/gen.py +173 -0
- package/skills/openai-whisper/SKILL.md +19 -0
- package/skills/openai-whisper-api/SKILL.md +43 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +30 -0
- package/skills/oracle/SKILL.md +105 -0
- package/skills/ordercli/SKILL.md +47 -0
- package/skills/peekaboo/SKILL.md +153 -0
- package/skills/qmd/SKILL.md +26 -0
- package/skills/sag/SKILL.md +62 -0
- package/skills/slack/SKILL.md +143 -0
- package/skills/songsee/SKILL.md +29 -0
- package/skills/sonoscli/SKILL.md +26 -0
- package/skills/spotify-player/SKILL.md +34 -0
- package/skills/summarize/SKILL.md +49 -0
- package/skills/things-mac/SKILL.md +61 -0
- package/skills/tmux/SKILL.md +121 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +84 -0
- package/skills/video-frames/SKILL.md +29 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/wacli/SKILL.md +42 -0
- package/skills/weather/SKILL.md +49 -0
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VPS-aware Antigravity OAuth flow.
|
|
3
|
+
*
|
|
4
|
+
* On local machines: Uses the standard pi-ai loginAntigravity with local server callback.
|
|
5
|
+
* On VPS/SSH/headless: Shows URL and prompts user to paste the callback URL manually.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
8
|
+
import { readFileSync } from "node:fs";
|
|
9
|
+
import { stdin, stdout } from "node:process";
|
|
10
|
+
import { createInterface } from "node:readline/promises";
|
|
11
|
+
import { loginAntigravity } from "@mariozechner/pi-ai";
|
|
12
|
+
// OAuth constants - decoded from pi-ai's base64 encoded values to stay in sync
|
|
13
|
+
const decode = (s) => Buffer.from(s, "base64").toString();
|
|
14
|
+
const CLIENT_ID = decode("MTA3MTAwNjA2MDU5MS10bWhzc2luMmgyMWxjcmUyMzV2dG9sb2poNGc0MDNlcC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbQ==");
|
|
15
|
+
const CLIENT_SECRET = decode("R09DU1BYLUs1OEZXUjQ4NkxkTEoxbUxCOHNYQzR6NnFEQWY=");
|
|
16
|
+
const REDIRECT_URI = "http://localhost:51121/oauth-callback";
|
|
17
|
+
const AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
|
|
18
|
+
const TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
19
|
+
// Antigravity requires these additional scopes
|
|
20
|
+
const SCOPES = [
|
|
21
|
+
"https://www.googleapis.com/auth/cloud-platform",
|
|
22
|
+
"https://www.googleapis.com/auth/userinfo.email",
|
|
23
|
+
"https://www.googleapis.com/auth/userinfo.profile",
|
|
24
|
+
"https://www.googleapis.com/auth/cclog",
|
|
25
|
+
"https://www.googleapis.com/auth/experimentsandconfigs",
|
|
26
|
+
];
|
|
27
|
+
// Fallback project ID when discovery fails (same as pi-ai)
|
|
28
|
+
const DEFAULT_PROJECT_ID = "rising-fact-p41fc";
|
|
29
|
+
/**
|
|
30
|
+
* Detect if running in WSL (Windows Subsystem for Linux).
|
|
31
|
+
*/
|
|
32
|
+
function isWSL() {
|
|
33
|
+
if (process.platform !== "linux")
|
|
34
|
+
return false;
|
|
35
|
+
try {
|
|
36
|
+
const release = readFileSync("/proc/version", "utf8").toLowerCase();
|
|
37
|
+
return release.includes("microsoft") || release.includes("wsl");
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Detect if running in WSL2 specifically.
|
|
45
|
+
*/
|
|
46
|
+
function isWSL2() {
|
|
47
|
+
if (!isWSL())
|
|
48
|
+
return false;
|
|
49
|
+
try {
|
|
50
|
+
const version = readFileSync("/proc/version", "utf8").toLowerCase();
|
|
51
|
+
return version.includes("wsl2") || version.includes("microsoft-standard");
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Detect if running in a remote/headless environment where localhost callback won't work.
|
|
59
|
+
*/
|
|
60
|
+
export function isRemoteEnvironment() {
|
|
61
|
+
// SSH session indicators
|
|
62
|
+
if (process.env.SSH_CLIENT ||
|
|
63
|
+
process.env.SSH_TTY ||
|
|
64
|
+
process.env.SSH_CONNECTION) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
// Container/cloud environments
|
|
68
|
+
if (process.env.REMOTE_CONTAINERS || process.env.CODESPACES) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
// Linux without display (and not WSL which can use wslview)
|
|
72
|
+
if (process.platform === "linux" &&
|
|
73
|
+
!process.env.DISPLAY &&
|
|
74
|
+
!process.env.WAYLAND_DISPLAY &&
|
|
75
|
+
!isWSL()) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Whether to skip the local OAuth callback server.
|
|
82
|
+
*/
|
|
83
|
+
export function shouldUseManualOAuthFlow() {
|
|
84
|
+
return isWSL2() || isRemoteEnvironment();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Generate PKCE verifier and challenge using Node.js crypto.
|
|
88
|
+
*/
|
|
89
|
+
function generatePKCESync() {
|
|
90
|
+
const verifier = randomBytes(32).toString("hex");
|
|
91
|
+
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
92
|
+
return { verifier, challenge };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Build the Antigravity OAuth authorization URL.
|
|
96
|
+
*/
|
|
97
|
+
function buildAuthUrl(challenge, verifier) {
|
|
98
|
+
const params = new URLSearchParams({
|
|
99
|
+
client_id: CLIENT_ID,
|
|
100
|
+
response_type: "code",
|
|
101
|
+
redirect_uri: REDIRECT_URI,
|
|
102
|
+
scope: SCOPES.join(" "),
|
|
103
|
+
code_challenge: challenge,
|
|
104
|
+
code_challenge_method: "S256",
|
|
105
|
+
state: verifier,
|
|
106
|
+
access_type: "offline",
|
|
107
|
+
prompt: "consent",
|
|
108
|
+
});
|
|
109
|
+
return `${AUTH_URL}?${params.toString()}`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Parse the OAuth callback URL or code input.
|
|
113
|
+
*/
|
|
114
|
+
function parseCallbackInput(input, expectedState) {
|
|
115
|
+
const trimmed = input.trim();
|
|
116
|
+
if (!trimmed) {
|
|
117
|
+
return { error: "No input provided" };
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
// Try parsing as full URL
|
|
121
|
+
const url = new URL(trimmed);
|
|
122
|
+
const code = url.searchParams.get("code");
|
|
123
|
+
const state = url.searchParams.get("state") ?? expectedState;
|
|
124
|
+
if (!code) {
|
|
125
|
+
return { error: "Missing 'code' parameter in URL" };
|
|
126
|
+
}
|
|
127
|
+
if (!state) {
|
|
128
|
+
return { error: "Missing 'state' parameter. Paste the full URL." };
|
|
129
|
+
}
|
|
130
|
+
return { code, state };
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Not a URL - treat as raw code (need state from original request)
|
|
134
|
+
if (!expectedState) {
|
|
135
|
+
return { error: "Paste the full redirect URL, not just the code." };
|
|
136
|
+
}
|
|
137
|
+
return { code: trimmed, state: expectedState };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Exchange authorization code for tokens.
|
|
142
|
+
*/
|
|
143
|
+
async function exchangeCodeForTokens(code, verifier) {
|
|
144
|
+
const response = await fetch(TOKEN_URL, {
|
|
145
|
+
method: "POST",
|
|
146
|
+
headers: {
|
|
147
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
148
|
+
},
|
|
149
|
+
body: new URLSearchParams({
|
|
150
|
+
client_id: CLIENT_ID,
|
|
151
|
+
client_secret: CLIENT_SECRET,
|
|
152
|
+
code,
|
|
153
|
+
grant_type: "authorization_code",
|
|
154
|
+
redirect_uri: REDIRECT_URI,
|
|
155
|
+
code_verifier: verifier,
|
|
156
|
+
}),
|
|
157
|
+
});
|
|
158
|
+
if (!response.ok) {
|
|
159
|
+
const errorText = await response.text();
|
|
160
|
+
throw new Error(`Token exchange failed: ${errorText}`);
|
|
161
|
+
}
|
|
162
|
+
const data = (await response.json());
|
|
163
|
+
if (!data.refresh_token) {
|
|
164
|
+
throw new Error("No refresh token received. Please try again.");
|
|
165
|
+
}
|
|
166
|
+
// Fetch user email
|
|
167
|
+
const email = await getUserEmail(data.access_token);
|
|
168
|
+
// Fetch project ID
|
|
169
|
+
const projectId = await fetchProjectId(data.access_token);
|
|
170
|
+
// Calculate expiry time (same as pi-ai: current time + expires_in - 5 min buffer)
|
|
171
|
+
const expiresAt = Date.now() + data.expires_in * 1000 - 5 * 60 * 1000;
|
|
172
|
+
return {
|
|
173
|
+
refresh: data.refresh_token,
|
|
174
|
+
access: data.access_token,
|
|
175
|
+
expires: expiresAt,
|
|
176
|
+
projectId,
|
|
177
|
+
email,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get user email from access token.
|
|
182
|
+
*/
|
|
183
|
+
async function getUserEmail(accessToken) {
|
|
184
|
+
try {
|
|
185
|
+
const response = await fetch("https://www.googleapis.com/oauth2/v1/userinfo?alt=json", {
|
|
186
|
+
headers: {
|
|
187
|
+
Authorization: `Bearer ${accessToken}`,
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
if (response.ok) {
|
|
191
|
+
const data = (await response.json());
|
|
192
|
+
return data.email;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Ignore errors, email is optional
|
|
197
|
+
}
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Fetch the Antigravity project ID using the access token.
|
|
202
|
+
*/
|
|
203
|
+
async function fetchProjectId(accessToken) {
|
|
204
|
+
const headers = {
|
|
205
|
+
Authorization: `Bearer ${accessToken}`,
|
|
206
|
+
"Content-Type": "application/json",
|
|
207
|
+
"User-Agent": "google-api-nodejs-client/9.15.1",
|
|
208
|
+
"X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
|
|
209
|
+
"Client-Metadata": JSON.stringify({
|
|
210
|
+
ideType: "IDE_UNSPECIFIED",
|
|
211
|
+
platform: "PLATFORM_UNSPECIFIED",
|
|
212
|
+
pluginType: "GEMINI",
|
|
213
|
+
}),
|
|
214
|
+
};
|
|
215
|
+
// Try endpoints in order: prod first, then sandbox
|
|
216
|
+
const endpoints = [
|
|
217
|
+
"https://cloudcode-pa.googleapis.com",
|
|
218
|
+
"https://daily-cloudcode-pa.sandbox.googleapis.com",
|
|
219
|
+
];
|
|
220
|
+
for (const endpoint of endpoints) {
|
|
221
|
+
try {
|
|
222
|
+
const response = await fetch(`${endpoint}/v1internal:loadCodeAssist`, {
|
|
223
|
+
method: "POST",
|
|
224
|
+
headers,
|
|
225
|
+
body: JSON.stringify({
|
|
226
|
+
metadata: {
|
|
227
|
+
ideType: "IDE_UNSPECIFIED",
|
|
228
|
+
platform: "PLATFORM_UNSPECIFIED",
|
|
229
|
+
pluginType: "GEMINI",
|
|
230
|
+
},
|
|
231
|
+
}),
|
|
232
|
+
});
|
|
233
|
+
if (!response.ok)
|
|
234
|
+
continue;
|
|
235
|
+
const data = (await response.json());
|
|
236
|
+
if (typeof data.cloudaicompanionProject === "string") {
|
|
237
|
+
return data.cloudaicompanionProject;
|
|
238
|
+
}
|
|
239
|
+
if (data.cloudaicompanionProject &&
|
|
240
|
+
typeof data.cloudaicompanionProject === "object" &&
|
|
241
|
+
data.cloudaicompanionProject.id) {
|
|
242
|
+
return data.cloudaicompanionProject.id;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// ignore failed endpoint, try next
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Use fallback project ID
|
|
250
|
+
return DEFAULT_PROJECT_ID;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Prompt user for input via readline.
|
|
254
|
+
*/
|
|
255
|
+
async function promptInput(message) {
|
|
256
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
257
|
+
try {
|
|
258
|
+
return (await rl.question(message)).trim();
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
rl.close();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* VPS-aware Antigravity OAuth login.
|
|
266
|
+
*
|
|
267
|
+
* On local machines: Uses the standard pi-ai flow with automatic localhost callback.
|
|
268
|
+
* On VPS/SSH: Shows URL and prompts user to paste the callback URL manually.
|
|
269
|
+
*/
|
|
270
|
+
export async function loginAntigravityVpsAware(onUrl, onProgress) {
|
|
271
|
+
// Check if we're in a remote environment
|
|
272
|
+
if (shouldUseManualOAuthFlow()) {
|
|
273
|
+
return loginAntigravityManual(onUrl, onProgress);
|
|
274
|
+
}
|
|
275
|
+
// Use the standard pi-ai flow for local environments
|
|
276
|
+
try {
|
|
277
|
+
return await loginAntigravity(async ({ url, instructions }) => {
|
|
278
|
+
await onUrl(url);
|
|
279
|
+
onProgress?.(instructions ?? "Complete sign-in in browser...");
|
|
280
|
+
}, (msg) => onProgress?.(msg));
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
// If the local server fails (e.g., port in use), fall back to manual
|
|
284
|
+
if (err instanceof Error &&
|
|
285
|
+
(err.message.includes("EADDRINUSE") ||
|
|
286
|
+
err.message.includes("port") ||
|
|
287
|
+
err.message.includes("listen"))) {
|
|
288
|
+
onProgress?.("Local callback server failed. Switching to manual mode...");
|
|
289
|
+
return loginAntigravityManual(onUrl, onProgress);
|
|
290
|
+
}
|
|
291
|
+
throw err;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Manual Antigravity OAuth login for VPS/headless environments.
|
|
296
|
+
*
|
|
297
|
+
* Shows the OAuth URL and prompts user to paste the callback URL.
|
|
298
|
+
*/
|
|
299
|
+
export async function loginAntigravityManual(onUrl, onProgress) {
|
|
300
|
+
const { verifier, challenge } = generatePKCESync();
|
|
301
|
+
const authUrl = buildAuthUrl(challenge, verifier);
|
|
302
|
+
// Show the URL to the user
|
|
303
|
+
await onUrl(authUrl);
|
|
304
|
+
onProgress?.("Waiting for you to paste the callback URL...");
|
|
305
|
+
console.log("\n");
|
|
306
|
+
console.log("=".repeat(60));
|
|
307
|
+
console.log("VPS/Remote Mode - Manual OAuth");
|
|
308
|
+
console.log("=".repeat(60));
|
|
309
|
+
console.log("\n1. Open the URL above in your LOCAL browser");
|
|
310
|
+
console.log("2. Complete the Google sign-in");
|
|
311
|
+
console.log("3. Your browser will redirect to a localhost URL that won't load");
|
|
312
|
+
console.log("4. Copy the ENTIRE URL from your browser's address bar");
|
|
313
|
+
console.log("5. Paste it below\n");
|
|
314
|
+
console.log("The URL will look like:");
|
|
315
|
+
console.log("http://localhost:51121/oauth-callback?code=xxx&state=yyy\n");
|
|
316
|
+
const callbackInput = await promptInput("Paste the redirect URL here: ");
|
|
317
|
+
const parsed = parseCallbackInput(callbackInput, verifier);
|
|
318
|
+
if ("error" in parsed) {
|
|
319
|
+
throw new Error(parsed.error);
|
|
320
|
+
}
|
|
321
|
+
// Verify state matches
|
|
322
|
+
if (parsed.state !== verifier) {
|
|
323
|
+
throw new Error("OAuth state mismatch - please try again");
|
|
324
|
+
}
|
|
325
|
+
onProgress?.("Exchanging authorization code for tokens...");
|
|
326
|
+
return exchangeCodeForTokens(parsed.code, verifier);
|
|
327
|
+
}
|