91 Commits

Author SHA1 Message Date
Rohit Kushwaha
5e4d82c570 docs: fold per-agent soul routing into enterprise agent chat spec
Current AgentLoop unconditionally observes into the process-global
default PocketPaw soul, so cloud chats with specific agents evolve
the wrong soul. Spec now routes soul observe + self-eval to the
target agent's SoulManager via AgentPool and gates the global
observe behind a per-run flag (default off in OSS).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 13:39:32 +05:30
Rohit Kushwaha
6049e95a49 docs: design for enterprise agent chat endpoint
Separate /cloud/chat/{scope}/{scope_id}/agent SSE endpoint with
scope-aware context (dm/group/pocket), pocket-scoped tools, ripple
pass-through, and WS broadcast of finished messages. Shares the
AgentLoop engine with OSS; /api/v1/chat.py stays untouched.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 13:30:41 +05:30
Prakash
fbaea85950 Reapply "Merge pull request #778 from pocketpaw/feat/close-critical-gaps"
This reverts commit 2b76f2acc6.
2026-04-10 17:42:15 +05:30
Prakash
2b76f2acc6 Revert "Merge pull request #778 from pocketpaw/feat/close-critical-gaps"
This reverts commit 5d16110ac3, reversing
changes made to 52ac737e1e.
2026-04-10 17:36:02 +05:30
Prakash Dalai
ac56a5956e Merge pull request #867 from pocketpaw/docs/codebase-wiki
Add auto-generated codebase wiki for ee/cloud module
2026-04-10 17:26:51 +05:30
Rohit Kushwaha
788684795c Merge origin/feat/close-critical-gaps into feat/close-critical-gaps-updates
Resolve uv.lock conflict by regenerating from merged pyproject.toml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 13:02:42 +05:30
Rohit Kushwaha
dbdedbdaf7 Merge origin/dev into feat/close-critical-gaps
Resolve conflicts keeping both sides:
- pyproject.toml: keep databases/postgresql/mysql/mongodb extras + graph extra
- executor.py: keep error handling (HEAD) + session_meta passthrough (dev)
- proactive.py: keep error handling (HEAD) + session_meta passthrough (dev)
- uv.lock: regenerated from merged pyproject.toml

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 13:00:39 +05:30
Prakash Dalai
bcc25fe706 docs: add C4 architecture diagrams (#901)
Generated via c4-gen (heuristic AST scan + Claude refinement).
Covers all 3 C4 levels with 15 view files:

- System context: PocketPaw + 5 external APIs + 3 user personas
- Container view: 11 logical containers (API, Agents, Skills,
  Integrations, Knowledge, Automation, LLM, Observability, etc.)
- Component views: per-container breakdowns with 39 components
- 29 elements linked to KB wiki articles
- Async relationships detected for event bus and queue patterns

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Rohit Kushwaha <rohitk290106@gmail.com>
2026-04-08 13:05:57 +05:30
Prakash
944cda3c8e docs: upgrade wiki to high-quality LLM compilation (50K words)
Rebuilt with improved compilation prompt — articles now include:
- Purpose and architectural context (why this module exists)
- Business logic explanations (not just method signatures)
- Authorization model details
- Design decisions and patterns
- System flow descriptions

38 articles, 504 concepts, 50,618 words, 33 linked.
Avg 1,332 words per article (up from 328).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:20:04 +05:30
Prakash
cf8f817c08 docs: add auto-generated codebase wiki for ee/cloud module
LLM-compiled wiki with 67 articles, 604 concepts, 22K words covering
the entire ee/cloud enterprise module. Generated by the standalone
knowledge-base package using AST analysis + Claude Haiku compilation.

Each article has: purpose, key classes/functions, authorization model,
dependencies, and backlinks to related modules. 528 cross-references
via import graph analysis.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:26:55 +05:30
Rohit Kushwaha
2e7c35517a docs(cloud): add ee/cloud rebuild design doc and implementation plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 04:55:12 +05:30
Ragini Pandey
ee64be4fc8 fix(security): require auth on /api/qr to prevent session token leak
Remove /api/qr and /api/v1/qr from exempt_paths in auth middleware so
the QR endpoint can no longer be hit without a valid session. Previously
any network-reachable client could GET /api/qr, decode the PNG, and
extract a fully valid 1-hour session token — a complete auth bypass
(OWASP A01 — Broken Access Control).

Changes:
- Remove /api/qr and /api/v1/qr from exempt_paths in dashboard_auth.py
- Reduce QR pairing token TTL from 1 hour to 60 seconds
- Add ttl_seconds param to create_session_token() for short-lived tokens
- Add audit log event on QR code generation
- Update v1 QR endpoint (/api/v1/auth.py) with matching fix
- Update tests: unauthenticated /api/qr now returns 401
- Update docs to reflect auth requirement

Fixes #854
2026-04-03 19:52:32 +00:00
Prakash
67dd4736ea feat: close critical gaps — real HTTP + agent tools for Fabric/Instinct
Two gaps that blocked end-to-end demo credibility, now closed:

Gap 1: Real HTTP in DirectRESTAdapter
- execute() now makes actual httpx calls (GET/POST/PUT/PATCH/DELETE)
- Auth header building for api_key, bearer, basic methods
- LOCAL actions (CSV) skip HTTP gracefully
- Error handling for HTTP status errors and request failures
- 7 tests with mocked httpx

Gap 2: Agent tools for enterprise features
- fabric_query: search objects by type, traverse links
- fabric_create: define types, create objects, link objects
- fabric_stats: ontology statistics
- instinct_propose: agent proposes actions for human approval
- instinct_pending: check pending approval queue
- instinct_audit: query decision audit log
- All tools gracefully degrade when ee/ is not available
- 6 tests with mocked stores

The agent can now: query Fabric objects → reason about data →
propose actions via Instinct → humans approve in the UI.
The fuel line is connected.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 16:57:07 +05:30
Rohit Kushwaha
9902cbfe13 Merge branch 'dev' into feat/deep-agents-backend 2026-03-21 01:24:12 +05:30
Rohit Kushwaha
d2dc43aeeb docs(discord): add Discord Docker deployment guide and update Discord docs
- Add new deployment/discord-docker.mdx with full Docker setup guide
  (LLM provider tabs, Claude Code OAuth, Coolify, volume config)
- Update channels/discord.mdx with missing config vars (conversation
  all channels, exclude channels, status, activity), Message Content
  Intent, server-wide conversation mode, bot presence section
- Update guides/discord-ai-bot.mdx with Docker deployment and
  server-wide conversation mode
- Update deployment/docker.mdx with Claude Code OAuth section and
  Discord-only deployment reference
- Add Discord Docker to sidebar navigation in docs-config.json
2026-03-21 00:30:29 +05:30
Rohit Kushwaha
ce72dcedb9 docs: add MCP and ACP documentation for Deep Agents
- Document MCP tool support via .mcp.json file discovery
  (stdio, SSE, HTTP transports, trust model, Claude Code compat)
- Document ACP (Agent Communication Protocol) for IDE integration
- Note that MCP is file-based discovery, not programmatic via
  create_deep_agent() - dashboard MCP config doesn't carry over
- Update comparison table to show MCP support
2026-03-19 18:09:46 +05:30
Rohit Kushwaha
976f9803a9 docs: add Deep Agents backend documentation
- New docs/backends/deep-agents.mdx with full configuration guide
  covering all providers (Anthropic, OpenAI, Ollama, OpenRouter,
  LiteLLM, OpenAI-compatible, Google)
- Updated backends index: comparison table, card grid, tool bridge note
- Added to sidebar navigation in docs-config.json
2026-03-19 18:07:48 +05:30
Rohit Kushwaha
f1b8ccab96 feat(agents): add Deep Agents (LangChain/LangGraph) backend
Add LangChain Deep Agents as a 7th agent backend, providing access to
the LangGraph ecosystem with built-in planning, subagent delegation,
and multi-provider LLM support via init_chat_model.

- New DeepAgentsBackend in agents/deep_agents.py with streaming support
- LangChain StructuredTool bridge in tool_bridge.py
- Registry entry, config fields, optional dep (pocketpaw[deep-agents])
- Dashboard settings UI (model + max turns)
- 16 new tests, full suite green (3491 passed)
2026-03-19 17:18:27 +05:30
Rohit Kushwaha
aee5a88fb0 feat(a2a): add settings UI and documentation
- Add A2A Protocol section to System settings with toggle, agent name,
  description, task timeout, and trusted agents list
- Wire frontend state, WebSocket save/load, and backend handler
- Add docs/integrations/a2a-protocol.mdx with full protocol docs
- Add A2A to sidebar nav and integrations overview card
- Add live smoke test script (scripts/test_a2a_live.py)
2026-03-18 23:07:26 +05:30
Rohit Kushwaha
c44f3a1786 feat(cli): add 10 new subcommands for local agent management (#675)
* feat(cli): add 10 new subcommands for local agent management

New CLI commands:
- doctor: full diagnostics with connectivity checks
- health: quick startup-only health check (no network)
- channels: list channel status, start/stop adapters via REST
- skills: list and search available skills
- sessions: list, delete, and search chat sessions
- memory: show stats and search long-term memories
- config: show (masked), set, validate, path
- errors: show recent errors with --limit and --search
- logs: show/tail audit log with --follow

All commands support --json for scripting. Refactored __main__.py
to subcommand-based parser while keeping full backwards compat
with existing flags (--doctor, --telegram, --discord, etc).

* docs: add new CLI subcommands to CLAUDE.md

* docs: add CLI reference page with all subcommands

New docs page at getting-started/cli covering all 15+ CLI commands
with usage examples, flags, and descriptions. Added to sidebar nav
after Quick Start.
2026-03-18 17:32:26 +05:30
Rohit Kushwaha
ab6c26430d chore: fix lint, format, and remove docs/plans
- Fix import sorting in test_usage_tracker.py
- Reformat tool_bridge.py
- Remove docs/plans directory (internal design docs)
2026-03-16 22:08:08 +05:30
Rohit Kushwaha
620f4cacab feat(discord): replace discord.py with discli adapter (#604)
* feat(discord): replace discord.py with discli subprocess adapter

Replace the direct discord.py library dependency with discord-cli-agent (discli),
a subprocess-based adapter that communicates via JSONL over stdin/stdout. This
gives the agent full Discord superpowers: reactions, threads, message search,
DMs, and channel management via the new DiscordCLITool.

- Rewrite DiscordAdapter as DiscliAdapter (subprocess bridge to discli serve)
- Add DiscordCLITool wrapping discli CLI for agent-initiated Discord actions
- Replace discord.py with discord-cli-agent in all pyproject.toml extras
- Update dependency checks in headless.py and dashboard_state.py
- Register discord_cli tool in builtin tools and tool policy
- Rewrite test suite for new adapter API (46 tests passing)
- Update deploy identity/instructions with new capabilities (reactions, threads, search)

* fix(tests): update extras install test for discord-cli-agent

Update test_check_installed_dep assertion from discord.py to
discord-cli-agent to match the dependency change.

* fix(tests): update extras install test for discli module name

* fix(tests): update media attachment tests for DiscliAdapter

* fix(discord): drain stderr and clean up process on startup failure

Two fixes for the dashboard showing stuck "starting" status:

1. Add _drain_stderr() task to continuously read discli's stderr pipe.
   Without this, if discord.py logs warnings to stderr the pipe buffer
   fills up and the process blocks, preventing the ready event from
   being emitted on stdout.

2. Call _on_stop() before raising on startup timeout so the subprocess
   and background tasks are properly cleaned up instead of leaking.

* feat(discord): add thread/poll to system prompt and tool description

- Add Discord section to default instructions with thread/poll examples
- Update DiscordCLITool description with thread create and poll create
- Mark /resume target param as optional

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(discord): inject discord.md instructions when on Discord channel

- Create bootstrap/discord.md with full Discord capability docs
  (messages, DMs, threads, polls, channels, roles, members, server)
- Context builder loads channel-specific instruction files and injects
  them into the system prompt only when on that channel
- Inject discord_username and discord_guild_id from message metadata
  so the LLM knows who it's talking to and can DM them
- Pass metadata through from agent loop to context builder
- Remove Discord section from default_provider.py (now in discord.md)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: bump discord-cli-agent dependency to >=0.6.0

Requires v0.6.0 for the complete serve action registry
(threads, polls, DMs, channels, roles, members, server).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(discord): propagate bot token to parent env for CLI tool

DiscordCLITool spawns separate discli processes that need
DISCORD_BOT_TOKEN, but the token was only set in the serve
subprocess env. Now also sets it in os.environ so all child
processes (including discord_cli tool calls) inherit it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: register DiscordCLITool in tools CLI dispatcher

discord_cli was missing from the CLI registry, so all agent calls
via `python -m pocketpaw.tools.cli discord_cli '...'` failed with
"Unknown tool". This is why the bot couldn't DM, create threads,
or do any Discord operations through the Claude SDK backend.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: background channel startup, CLI auth bypass, converse tests

- Dashboard: start slow adapters (Discord) in background so HTTP
  response returns fast; frontend polls until running
- Claude SDK: skip API key check when claude CLI is available
  (handles OAuth auth internally)
- Tests: add converse slash command enable/disable tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(discord): add slash commands, user mentions, and admin-gate converse

Add rename/backend/model/tools/delete/backends slash commands to the
Discord adapter, include sender_id in context, document user mention
syntax (<@ID>), restrict /converse to admins, and update /help output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(security): patch command injection, temp leak, and deprecated API

- DiscordCLITool: replace create_subprocess_shell with
  create_subprocess_exec + shlex.split to prevent shell injection
- Clean up slash config temp file on adapter stop
- Use asyncio.get_running_loop() instead of deprecated get_event_loop()
- Convert conversation_channel_ids from list to set
- Scope Claude CLI auth bypass to claude_code provider only
- Add is_admin to converse test events

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(discord): MCP server, permission fix, and system prompt overhaul

- Add pocketpaw-discord MCP server that wraps discli, exposing Discord
  operations (send messages, polls, threads, reactions, roles, etc.)
  as native MCP tools for all backends (codex_cli, google_adk, etc.)
- Auto-register the MCP server when the Discord adapter starts
- Fix /converse permission check: accept Manage Server in addition to
  Administrator, use interaction.permissions (Discord payload) instead
  of guild_permissions (member cache) via discli 0.6.4
- Rewrite discord.md system prompt: hide internal tool names from users,
  add context-based reaction guidance, keep responses conversational
- Fix [NO_RESPONSE] marker leaking through streaming responses
- Handle rate_limit_event from Anthropic API in stateless query path
- Update docs and CLAUDE.md for discli adapter and MCP integration
- Remove stale /allowchannel /allowuser references from dashboard UI

* fix(dependencies): update discord-cli-agent to version 0.6.4

* style: format discord_server and discord_adapter

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:54:13 +05:30
Rohit Kushwaha
5adeae1f9c feat: agent status API, SSE stream, and CLI command (#586)
* docs: add agent status API & CLI design

Design for GET /api/v1/agent/status endpoint, SSE stream, and
pocketpaw status CLI command. Exposes real-time agent state
(idle/thinking/tool_running/streaming/error) for external integrations.

* docs: add agent status API implementation plan

9-task plan covering StatusTracker, REST endpoint, SSE stream,
CLI command, auth, tests, and lifecycle wiring.

* feat: add agent status API, SSE stream, and CLI command

Adds a public status endpoint for external integrations (stream decks,
LED indicators, desktop widgets) to monitor PocketPaw agent state.

- GET /api/v1/agent/status returns global state (idle/active/degraded)
  and per-session breakdown (thinking/tool_running/streaming/error)
- GET /api/v1/agent/status/stream pushes SSE events on state changes
- pocketpaw status CLI with --json and --watch flags
- Optional API key auth via POCKETPAW_STATUS_API_KEY / X-Status-Key
- StatusTracker subscribes to bus events, no internal coupling
- 22 tests covering state transitions, auth, and CLI formatting

* fix(tests): update router count to 24 and fix lint in test files

Update test_v1_routers_count assertion from 23 to 24 for the new
agent_status router. Reformat test files and fix UP038 lint error.

* fix: address review issues in agent status API

- Cache status API key to avoid Settings.load() on every request
- Add client disconnect detection in SSE stream loop
- Fix wait_for_change race condition with version-based tracking
- Wire response_model=AgentStatusResponse and fix schema alias mismatch
- Move lifecycle registration from module scope to startup_event
- Extract session title enrichment into dedicated method
- Update tests for new caching and version tracking

* fix: emit agent_start/end events, fix SSE stream spamming, add docs

- AgentLoop now emits agent_start before processing and agent_end on
  completion/error so StatusTracker actually tracks sessions
- Skip redundant thinking notifications when state is already thinking
- Deduplicate SSE stream using state fingerprints (ignores timing fields)
- Increase SSE debounce from 200ms to 1s to coalesce rapid tool events
- Add API docs for GET /agent/status and GET /agent/status/stream
2026-03-14 10:14:12 +05:30
Rohit Kushwaha
869407bf69 refactor: provider adapter pattern + LiteLLM support (#595)
* feat: add LiteLLM provider support and unified env resolution

Add LiteLLM as a provider option for all backends (Claude SDK, OpenAI
Agents, Google ADK, Copilot SDK), enabling access to 100+ LLM providers
including HuggingFace, Ollama, vLLM, Together AI, Groq, Mistral, and
more through a single proxy or direct SDK integration.

Key changes:
- New config fields: litellm_api_base, litellm_api_key, litellm_model
- OpenAI Agents: native LitellmModel extension with proxy fallback
- Google ADK: LiteLlm model wrapper for cross-provider support
- Claude SDK: routes through LiteLLM proxy via ANTHROPIC_BASE_URL
- Copilot SDK: LiteLLM via OpenAI-compatible BYOK config
- resolve_backend_env() pushes unified POCKETPAW_* keys to env vars
  each SDK expects, fixing the issue where switching backends required
  manually reconfiguring environment variables

* fix: complete LiteLLM integration across dashboard, health checks, and WS

- Fix health check false warning: add 'litellm' to provider skip list
  in check_api_key_primary() for Claude SDK, OpenAI Agents, and
  Google ADK backends
- Add google_adk_provider to WS settings handler and broadcast
- Add litellm_api_base, litellm_api_key, litellm_model to WS handler
- Add 'LiteLLM (100+ Providers)' option to provider dropdowns in
  settings UI for Claude SDK and OpenAI Agents backends
- Add LiteLLM config fields (proxy URL, API key, model) shown when
  litellm provider is selected in the settings modal

* fix: add LiteLLM provider to Copilot SDK and Google ADK settings UI

- Add LiteLLM option to Copilot SDK provider dropdown
- Add provider dropdown to Google ADK settings (was missing entirely)
- Add LiteLLM config fields (proxy URL, API key, model) for Google ADK
  when litellm provider is selected

* fix: sync env vars at runtime when API keys change via dashboard

resolve_backend_env() now accepts force=True to overwrite existing env
vars. Called after every settings/API-key save so backends immediately
see updated keys without a restart. Codex CLI subprocess gets an
explicit env snapshot via env=os.environ.copy().

* refactor: provider adapter pattern for LLM providers

Extract provider-specific logic (config resolution, client creation,
env var setup, error formatting) into adapter classes under
llm/providers/. Six adapters: Anthropic, Ollama, OpenAICompatible,
OpenRouter, Gemini, LiteLLM.

LLMClient delegates to adapters internally while keeping its public
API stable. Backends (OpenAI Agents, Google ADK, Copilot SDK) now use
adapters directly, replacing 70+ line if/elif chains with ~5 line
adapter calls. Adding a new provider means adding one adapter file
and registering it, no backend changes needed.

30 new tests for adapters, registry, model resolution, and LLMClient
delegation.

* fix: _stderr_lines UnboundLocalError and test_fast_path failures

Move _stderr_lines initialization before the try block so the except
handler can always access it. Add missing _HookMatcher and is_litellm
to test mocks.

* style: format test files and fix UP038 lint

* docs: add Discord deployment config with multi-provider support

Add Docker Compose, Dockerfile, env example, and identity files for
headless Discord bot deployment. Supports direct Anthropic, LiteLLM
proxy, OpenAI-compatible, and OpenAI Agents backends out of the box.

* chore: remove Discord deploy files (moved to separate PR #597)

Deploy config now lives under deploy/discord/ in the
deploy/discord-docker branch to keep this PR focused on
the provider adapter pattern and LiteLLM integration.

* fix: LiteLLM max_tokens setting, config persistence, and health recheck

- Add litellm_max_tokens config option so users can cap output tokens
  for models like DeepSeek (8192 limit)
- Fix LiteLLM settings not persisting on reload: litellmApiBase,
  litellmModel, litellmMaxTokens were missing from SETTINGS_MAP in
  app.js, so the frontend never loaded them back from the server
- Also add 13 other missing backend settings to SETTINGS_MAP
  (openaiAgentsModel, googleAdkProvider, codexCliModel, etc.)
- Re-run health checks after settings save so switching to LiteLLM
  immediately clears the "no Anthropic API key" degraded warning
- Claude SDK fast-path respects provider max_tokens instead of
  hardcoding 1024

* fix: LiteLLM proxy routing, adapter bugs, and remove plan docs

- Fix LiteLLM + OpenAI Agents: use OpenAI-compat proxy path when
  base_url is set instead of native LitellmModel which tried to route
  directly (causing Vertex AI credential errors)
- Fix operator precedence in _to_provider_config() base_url resolution
- Fix dashboard unable to clear LiteLLM API key (falsy vs None check)
- Fix fragile hasattr duck-typing in openai_agents, add explicit
  provider == "litellm" guard
- Replace unnecessary getattr() with direct attribute access in
  google_adk now that the field exists in Settings
- Pass api_key and base_url to ADK LiteLlm wrapper explicitly
- Remove plan design doc

* docs: add OpenRouter and LiteLLM provider documentation

- Add dedicated OpenRouter and LiteLLM sections to LLM providers guide
  with configuration examples for proxy vs direct SDK mode
- Update backend compatibility matrix to include both new providers
- Update per-backend provider tables (Claude SDK, OpenAI Agents,
  Google ADK, Copilot SDK) with LiteLLM and OpenRouter support
- Add OpenRouter and LiteLLM config fields to configuration reference
- Update getting-started configuration with OpenRouter and LiteLLM
  environment variable examples
- Replace OpenRouter-only section in backends index with combined
  OpenRouter + LiteLLM section
2026-03-14 03:46:02 +05:30
Rohit Kushwaha
d8bdc9ffb3 docs: add documentation for PII masking, streaming redaction, AGENTS.md, Discord conversation mode, identity drift prevention, and kill command
- New pages: PII detection/masking, streaming redaction, AGENTS.md support
- Updated: Discord (conversation mode, admin commands, kill command), agent loop (identity drift, kill, AGENTS.md), backends (full tool access, OpenRouter)
- Updated security overview and sidebar navigation
2026-03-10 21:58:07 +05:30
yash
f15e76abe7 Fix incorrect Anthropic API key generation URL (#553)
* Fix incorrect Anthropic API key generation URL

* Fix incorrect Anthropic API key generation URL all places occurence changed with right url

---------

Co-authored-by: Rohit Kushwaha <rohitk290106@gmail.com>
2026-03-10 21:20:15 +05:30
Rohit Kushwaha
423b66827a docs: add desktop client section and v1 API server documentation
New pages:
- desktop-client/index.mdx — overview, architecture, features
- desktop-client/installation.mdx — download, setup, requirements
- desktop-client/development.mdx — dev environment, project structure, conventions
- desktop-client/api-server.mdx — pocketpaw serve command, full endpoint reference, auth
2026-03-10 18:38:55 +05:30
Rohit Kushwaha
12cc9f4def docs: update README, CONTRIBUTING, and docs for desktop client 2026-03-10 18:32:27 +05:30
Rohit Kushwaha
f20d320af6 Merge branch 'main' into dev 2026-03-10 18:16:41 +05:30
Prakash
8ca40629d0 chore: add GitHub Sponsors funding config
Add FUNDING.yml for the Sponsor button and funding.json for
the open source funding standard (FLOSS fund compatible).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 08:53:22 +05:30
Prakash Dalai
42c9d15bbd Merge pull request #502 from pocketpaw/feat/client-v1-api
feat: Tauri v2 desktop client with v1 API
2026-03-09 09:27:05 +05:30
Prakash Dalai
a446395bd9 Merge pull request #514 from pocketpaw/docs/seo-guides
Add SEO guides, FAQ schema, and internal linking
2026-03-08 20:07:14 +05:30
Rohit Kushwaha
de63b109bb fix: remove em dash in FAQ schema, correct Telegram env var name
- Replace em dash with comma in FAQ JSON-LD answer text
- Fix POCKETPAW_ALLOWED_TELEGRAM_IDS to POCKETPAW_ALLOWED_USER_ID
  (matches actual config.py field name, singular int not list)
2026-03-08 19:28:26 +05:30
Rohit Kushwaha
f649d244b0 fix: update JSON-LD backend count from 3 to 6 2026-03-08 19:15:38 +05:30
Prakash
57b807c117 docs(seo): optimize titles, descriptions, headings, and cross-links
Comprehensive SEO optimization across 80 documentation pages:

Title optimization (all pages):
- Replaced generic titles like "Architecture", "Discord", "Slack"
  with search-intent titles like "PocketPaw Architecture: Event-Driven
  Message Bus", "Discord Bot Setup: Add PocketPaw to Your Server"
- All titles now 50-70 characters with qualifying keywords

Meta descriptions:
- Expanded 7 short descriptions (under 145 chars) to 150-160 chars
- Roadmap description expanded from 76 to 196 chars
- Troubleshooting, Codex CLI, OpenCode, WebMCP all expanded

H1 heading fixes:
- Ensured single H1 per page matching the frontmatter title
- All H1 headings updated to match new optimized titles

Internal cross-links:
- Added Related CardGroup sections to 60+ individual pages
- Each links to 2-3 related pages within and across sections
- Channels link to channel guides, backends link to Ollama guide, etc.

Em dash cleanup:
- Replaced em dashes with colons, periods, or double hyphens
  across multiple files in tools/, channels/, integrations/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 17:41:36 +05:30
Prakash
3a147b64e2 fix(docs): split navbar into Guides and Reference dropdowns
Restore the Channels/Integrations/Tools/API Reference links that were
removed when the Guides dropdown was added. Now two separate dropdowns
so both tutorials and reference docs are one click away.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 17:31:21 +05:30
Prakash
0deaddec7c docs(seo): add guides section, FAQ schema, and internal linking
5 SEO-targeted tutorial guides for long-tail keyword traffic:
- Self-host an AI agent on your laptop
- Build a Telegram AI bot in 5 minutes
- Add AI to your Discord server
- Run AI with Ollama (no API key)
- AI agents vs chatbots comparison

Landing page: FAQ section with FAQPage JSON-LD schema markup
(targets Google "People Also Ask" snippets).

Internal linking: cross-links from channels, backends, and
introduction pages back to relevant guides. Updated navbar
dropdown and footer with guide links.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 17:14:47 +05:30
Prakash
73e110aabe fix(seo): fix stale URLs, outdated schema, and missing internal links
- og:url and og:image pointed to pocketpaw.netlify.app, now pocketpaw.xyz
- JSON-LD softwareVersion was 0.1.0, now 0.4.7
- JSON-LD applicationCategory broadened to include Productivity and Utilities
- docs-config.json metadata URL was pocketpaw.com, now pocketpaw.xyz
- pyproject.toml Homepage now points to pocketpaw.xyz (not GitHub)
- pyproject.toml Documentation now points to pocketpaw.xyz/introduction
- Added footer links to /channels, /tools, /backends, /getting-started
- Updated all remaining dsc.gg/pocketpaw Discord links

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:33:13 +05:30
Prakash
a37268af8b fix(seo): fix stale URLs, outdated schema, and missing internal links
- og:url and og:image pointed to pocketpaw.netlify.app, now pocketpaw.xyz
- JSON-LD softwareVersion was 0.1.0, now 0.4.7
- JSON-LD applicationCategory broadened to include Productivity and Utilities
- docs-config.json metadata URL was pocketpaw.com, now pocketpaw.xyz
- pyproject.toml Homepage now points to pocketpaw.xyz (not GitHub)
- pyproject.toml Documentation now points to pocketpaw.xyz/introduction
- Added footer links to /channels, /tools, /backends, /getting-started
- Updated all remaining dsc.gg/pocketpaw Discord links

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:23:44 +05:30
Prakash
135e18d125 fix: update broken Discord invite link across docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:23:44 +05:30
Prakash
d6ff3499cb fix: update broken Discord invite link across docs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 08:34:46 +05:30
Prakash Dalai
fdf128120d feat(deep-work): v2 engine — retry, timeout, cancel, output chaining, PawKit schema (#375)
* feat: merge desktop client into monorepo under client/

Move the Tauri 2.0 + SvelteKit desktop client from the separate
pocketpaw-client repo into client/ to create a monorepo. Update
.gitignore with client build artifact ignores and add Desktop Client
section to CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): unignore client/src/lib and broaden node/sveltekit ignores

The root .gitignore `lib/` pattern was blocking client/src/lib/ from
being tracked. Anchor it to `/lib/` so only the root Python lib dir is
ignored. Also generalize node_modules/ and .svelte-kit/ patterns to
work at any depth.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): fix white OAuth screen on Windows

Load a local loading page first in the OAuth popup window, then
navigate to the external OAuth URL via eval(). WebView2 on Windows
may not be fully initialized when WebviewUrl::External is used
directly, resulting in a permanently white window.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): replace WebView OAuth popup with system browser + localhost server

WebView2 secondary windows fail to render on Windows (white/transparent screen).
Replace the OAuth popup with a temporary localhost HTTP server that captures the
callback, and open the authorize URL in the system browser instead.

Also pre-create sidepanel and quickask windows in tauri.conf.json (with
visible: false) so they initialize alongside the main window, avoiding the
same WebView2 rendering issue with dynamically-created transparent windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add multi-mode workspace client design

Design for transforming the desktop client into a full workspace IDE
with tabbed workspaces, tiling layout engine, pluggable widgets,
real-time agent collaboration, unified file management (local + remote
+ cloud), and responsive mobile support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add multi-mode workspace implementation plan

Detailed 6-phase implementation plan with ~49 new files across Rust
backend (fs commands, PTY, git, widget windows), SvelteKit frontend
(tiling layout, Monaco editor, file previews, widget system, terminal),
filesystem providers (local, remote, cloud), and co-work features.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: rewrite design as AI file explorer (Poly.app-inspired)

Complete redesign from VS Code-like IDE to file-explorer-first UI.
Primary interface is a visual file grid with rich thumbnails and
5 view modes (Icon, Grid, List, Column, Gallery). AI chat lives
in a collapsible right sidebar with folder/file context awareness.
Agent actions (create, edit, delete files) reflect in the grid
in real-time. Terminal output is inline in chat, not a separate panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): add file explorer with list view, search/filter, and context menu

Implements a full file explorer with Rust-backed filesystem operations
(read, write, delete, rename, watch, thumbnails), multiple view modes
(icon grid + list table), inline search/filter, and an enhanced context
menu with rename, new folder, and keyboard shortcuts (Ctrl+F, F2, Del).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(deep-work): add v2 engine — retry, timeout, cancel, output chaining, PawKit schema

Deep Work v2 hardens the execution engine and lays the foundation for
PawKit-based Command Centers. This is the first WIP PR toward the
blueprints-strategy vision.

Engine improvements:
- Task retry: auto-retry failed tasks up to configurable max_retries
- Task timeout: per-task asyncio.wait_for with timeout_minutes
- Output storage: task.output field for cross-task chaining
- Error tracking: task.error_message for diagnostics
- Project cancellation: CANCELLED status, stop_all_project_tasks,
  skip pending tasks with error_message
- Manual retry API: POST /projects/{id}/tasks/{tid}/retry

New PawKit config schema v0.1:
- Pydantic v2 models for Command Center templates
- Layout (panels, sections), workflows, user_config, integrations
- YAML load/save utilities with PyYAML

Files changed:
- src/pocketpaw/mission_control/models.py — 5 new Task fields
- src/pocketpaw/deep_work/models.py — TaskSpec v2 + CANCELLED status
- src/pocketpaw/mission_control/executor.py — retry, timeout, output, stop_all
- src/pocketpaw/deep_work/session.py — cancel(), materialize v2 fields
- src/pocketpaw/deep_work/api.py — cancel + retry endpoints
- src/pocketpaw/deep_work/__init__.py — cancel_project export
- src/pocketpaw/deep_work/pawkit.py — NEW: PawKit config schema
- tests/test_deep_work_v2.py — 71 new tests
- tests/test_mission_control_executor.py — adapted for retry defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(deep-work): add 21 E2E tests for v2 engine features

API-level E2E tests using httpx.AsyncClient with ASGI transport.
Real file-based store, session, scheduler, and executor — only the
agent backend (LLM calls) is mocked.

Coverage: full lifecycle, output chaining, auto-retry, timeout,
cancellation, manual retry API, get plan API, skip task API,
and PawKit YAML round-trip.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(deep-work): add v2 feature docs — retry, timeout, cancel, output chaining, PawKit

Updated the Deep Work guide with new sections covering auto-retry,
task timeout, output chaining, project cancellation, and PawKit
template format. Added API endpoint pages for Cancel Project and
Retry Task. Updated sidebar navigation in docs-config.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add Command Centers concept page and PawKit technical reference

New standalone pages for the two biggest ideas in the v2 engine:

- docs/concepts/command-centers.mdx — the "why": agent-operated
  dashboards, PawKits as templates, conversational building,
  Kit Store marketplace, how it all connects
- docs/advanced/pawkit.mdx — the "how": full YAML schema reference
  with panel types, workflow triggers, user config fields,
  integrations, and Python API examples

Trimmed the PawKit section in deep-work.mdx to a cross-reference
since the content now lives in dedicated pages. Updated sidebar
navigation with both new entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): enhance file explorer with viewers, clipboard, and editor save

Add file preview support (audio, video, PDF, markdown with syntax highlighting),
copy/cut/paste with keyboard shortcuts, file properties dialog, open-in-terminal,
editable code editor with Ctrl+S save and dirty tracking, and improved AI model
settings panel with Ollama model fetching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): migrate stores to REST-first architecture, WS push-only

Move all request-response flows (sessions, chat, settings) to REST HTTP.
WebSocket is now exclusively for server-initiated push events.

- Add createSession() REST method to client
- Remove WS convenience methods (chat, newSession, switchSession, etc.)
- Remove bindEvents/disposeEvents from all stores
- Rewrite sessionStore to use POST /sessions and REST history
- Rewrite settingsStore.saveApiKey to use PUT /settings
- Simplify connectionStore (remove sessionId, connection_info listener)
- Simplify initializeStores (no more bindEvents calls)
- Clean up WS types (remove chat/session event types)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(api): REST-first architecture, fix WS dual-delivery and persistent client bugs (#384)

Move all request-response flows to REST HTTP. WebSocket is now push-only.
Fixes dual-delivery bug where SSE chat responses were broadcast to all WS
clients, and persistent Claude SDK client issues with stale data across sessions.

Backend changes:
- Add POST /sessions endpoint with SessionCreateResponse schema
- Fix WS adapter send() — drop messages for unknown chat_ids instead of broadcasting
- Fix WS adapter on_system_event() — route by session_key, not broadcast
- Enhance PUT /settings with runtime side-effects (reset_router + memory reload)
- Add cancel_task() to AgentLoop — lightweight cancellation without stopping router
- Fix _on_done callback race — don't remove newer task's entry from _active_tasks
- Add session lock contention logging for diagnostics

Chat streaming fixes:
- Cancel in-flight SSE streams when new request arrives for same session
- Only cancel agent tasks when there IS a competing stream (not on every request)
- Add diagnostic logging to SSE bridge event delivery

Claude SDK persistent client fixes:
- Include session_key in persistent client key — different sessions get fresh subprocesses
- Drain trailing ResultMessage from subprocess pipe after each query to prevent
  stale data on subsequent queries (root cause of "second message shows first response")
- Add dispatch/event logging for persistent vs stateless path diagnostics

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(api): add PawKits system + MC/DW route mounting for serve command

- Add kits module (models, store, catalog, builtin YAML kits)
- Add kits API router with CRUD, catalog, and data resolution endpoints
- Add api:agents and api:standup source resolvers in kits data resolution
- Mount MC and DW routers in serve.py (was only in dashboard.py)
- Fix standup resolver to use manager.generate_standup()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: merge desktop client into monorepo (#290)

* feat: merge desktop client into monorepo under client/

Move the Tauri 2.0 + SvelteKit desktop client from the separate
pocketpaw-client repo into client/ to create a monorepo. Update
.gitignore with client build artifact ignores and add Desktop Client
section to CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): unignore client/src/lib and broaden node/sveltekit ignores

The root .gitignore `lib/` pattern was blocking client/src/lib/ from
being tracked. Anchor it to `/lib/` so only the root Python lib dir is
ignored. Also generalize node_modules/ and .svelte-kit/ patterns to
work at any depth.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): fix white OAuth screen on Windows

Load a local loading page first in the OAuth popup window, then
navigate to the external OAuth URL via eval(). WebView2 on Windows
may not be fully initialized when WebviewUrl::External is used
directly, resulting in a permanently white window.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(client): replace WebView OAuth popup with system browser + localhost server

WebView2 secondary windows fail to render on Windows (white/transparent screen).
Replace the OAuth popup with a temporary localhost HTTP server that captures the
callback, and open the authorize URL in the system browser instead.

Also pre-create sidepanel and quickask windows in tauri.conf.json (with
visible: false) so they initialize alongside the main window, avoiding the
same WebView2 rendering issue with dynamically-created transparent windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add multi-mode workspace client design

Design for transforming the desktop client into a full workspace IDE
with tabbed workspaces, tiling layout engine, pluggable widgets,
real-time agent collaboration, unified file management (local + remote
+ cloud), and responsive mobile support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add multi-mode workspace implementation plan

Detailed 6-phase implementation plan with ~49 new files across Rust
backend (fs commands, PTY, git, widget windows), SvelteKit frontend
(tiling layout, Monaco editor, file previews, widget system, terminal),
filesystem providers (local, remote, cloud), and co-work features.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: rewrite design as AI file explorer (Poly.app-inspired)

Complete redesign from VS Code-like IDE to file-explorer-first UI.
Primary interface is a visual file grid with rich thumbnails and
5 view modes (Icon, Grid, List, Column, Gallery). AI chat lives
in a collapsible right sidebar with folder/file context awareness.
Agent actions (create, edit, delete files) reflect in the grid
in real-time. Terminal output is inline in chat, not a separate panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): add file explorer with list view, search/filter, and context menu

Implements a full file explorer with Rust-backed filesystem operations
(read, write, delete, rename, watch, thumbnails), multiple view modes
(icon grid + list table), inline search/filter, and an enhanced context
menu with rename, new folder, and keyboard shortcuts (Ctrl+F, F2, Del).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): enhance file explorer with viewers, clipboard, and editor save

Add file preview support (audio, video, PDF, markdown with syntax highlighting),
copy/cut/paste with keyboard shortcuts, file properties dialog, open-in-terminal,
editable code editor with Ctrl+S save and dirty tracking, and improved AI model
settings panel with Ollama model fetching.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): migrate stores to REST-first architecture, WS push-only

Move all request-response flows (sessions, chat, settings) to REST HTTP.
WebSocket is now exclusively for server-initiated push events.

- Add createSession() REST method to client
- Remove WS convenience methods (chat, newSession, switchSession, etc.)
- Remove bindEvents/disposeEvents from all stores
- Rewrite sessionStore to use POST /sessions and REST history
- Rewrite settingsStore.saveApiKey to use PUT /settings
- Simplify connectionStore (remove sessionId, connection_info listener)
- Simplify initializeStores (no more bindEvents calls)
- Clean up WS types (remove chat/session event types)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): full Mission Control integration — agents, execution, projects, notifications

- Add MC/DW types (AgentProfile, MCTask, MCMessage, MCProject, etc.)
- Add 25+ API methods (mcRequest + dwRequest helpers) for agents, tasks, execution, notifications, projects
- Add mcStore (agents, running tasks, execution streaming, notifications) and projectStore (project lifecycle, planning)
- Add AgentRoster panel with CRUD, KanbanBoard enhancements (assignment, run/stop, messages, running indicator)
- Add TaskExecutionPanel slide-over for live agent streaming
- Add NotificationBell in titlebar with unread badge
- Add StandupPanel and document viewer/editor in DataTable
- Add /projects route with creation wizard, plan review, lifecycle controls
- Remove internal-docs from git tracking
- Rename tabs: Deep Work → PawKits, Projects → Deep Work

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): add PawKits catalog, layout renderer, and remaining panel components

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(api): add PawKits system + MC/DW route mounting for serve command

- Add kits module (models, store, catalog, builtin YAML kits)
- Add kits API router with CRUD, catalog, and data resolution endpoints
- Add api:agents and api:standup source resolvers in kits data resolution
- Mount MC and DW routers in serve.py (was only in dashboard.py)
- Fix standup resolver to use manager.generate_standup()

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: add plans and update lockfile

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove plans and revert uv.lock

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve merge breakages in chat, context builder, and MC routes

- Add missing FileContext model and field to ChatRequest schema
- Add file_context parameter to build_system_prompt()
- Move /tasks/running route before /tasks/{task_id} to fix 404
- Remove unused TaskStatus import in kits.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: resilient SDK streaming, in-app file viewer, and explorer tool

- Replace _safe_iter with _resilient_receive to handle MessageParseError
  by re-creating the iterator instead of losing the stream
- Add file-open command interception (start, xdg-open, etc.) to redirect
  to the in-app explorer viewer via PreToolUse hook
- Add /api/files/content endpoint for serving file contents with MIME types
- Add explorer built-in tool and open_in_explorer CLI command
- Update dashboard frontend with file viewer modal and transparency fixes
- Set SDK stream close timeout to 24h for long-running tool use
- Suppress API-key errors in ResultMessage to avoid noisy logs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(client): tabbed explorer, file viewers, command palette, and onboarding refresh

- Add multi-tab explorer with history, file type filtering, and address bar
- Implement PDF, spreadsheet, notebook, document, and text preview viewers
- Add command palette (Ctrl+K) with fuzzy search
- Overhaul onboarding wizard with model search and backend setup
- Add Tauri fs commands for file content and metadata
- Improve chat input, file preview, and session dropdown
- Update dialog components and workspace tabs
- Add content preview caching and binary utils for file handling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Rohit Kushwaha <technicalrohit06@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Rohit Kushwaha <rohitk290106@gmail.com>
2026-03-07 21:02:27 +05:30
NidhiPednekar
52e775aa0f fixed malformed PUT api and retuns 400 (#387)
* docs: add PocketPaw vs OpenClaw comparison page

Adds a research-backed comparison page covering security architecture,
install experience, code footprint, local model support, and use case
guidance. Includes Guardian AI vs context compaction analysis, Ollama
setup tabs, and honest pros/cons for both projects.

- docs/concepts/vs-openclaw.mdx: new comparison page
- docs/docs-config.json: add page to Core Concepts sidebar nav

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: update vs-openclaw comparison with governance details and enhanced security architecture

* fix: remove soul-protocol from PyPI extras, bump to v0.4.6

soul-protocol is not published on PyPI yet. Having it as a resolved
dependency in the [soul] and [paw] extras caused a hard install failure
for anyone running pip install pocketpaw[paw] or pocketpaw[soul].

The paw CLI already handles missing soul-protocol gracefully at runtime
via lazy imports and _check_soul_protocol(). This removes the broken
PyPI resolution — users who want soul features install manually:

  pip install git+https://github.com/qbtrix/soul-protocol.git

Fixes: pip install pocketpaw[paw] ERROR: No matching distribution found
for soul-protocol>=0.2.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: correct version to 0.4.5.1 (hotfix patch)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fixed malformed PUT api and retuns 400

* fixed detail format and restore blank line

---------

Co-authored-by: Prakash <prakashd88@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Rohit Kushwaha <rohitk290106@gmail.com>
2026-03-05 20:54:28 +05:30
Rohit Kushwaha
3b466e1d84 fix(mcp): correct gws preset package name and startup check (#431)
* fix(mcp): correct gws preset package name and move health check out of startup

The google-workspace preset referenced a non-existent npm package
(@anthropic-ai/gws). The actual package is @googleworkspace/cli.
Also removed the fabricated `cargo install gws` install hint and
moved the gws health check to a separate INTEGRATION_CHECKS list
so it doesn't run on every startup for users who don't use it.

Refs #431

* test: add tests for gws preset and health check

- Test google-workspace preset fields (package, command, args, transport)
- Test check_gws_binary with mocked shutil.which (found + not found)
- Test INTEGRATION_CHECKS registry and that gws is not in STARTUP_CHECKS

* docs: add Google Workspace MCP integration page

Covers prerequisites (gws CLI install, auth setup), dashboard and
config-file installation, service filtering, alternative auth methods,
health check, troubleshooting, and comparison with built-in Google tools.

Refs #431
2026-03-05 20:35:45 +05:30
Rohit Kushwaha
9227fb4bc1 docs: add site URL, llms.txt config, and nav anchor
- Add metadata.url for sitemap and llms.txt generation
- Add integrations.llmsTxt config for AI discoverability
- Add llms.txt top-level nav anchor alongside Documentation and API Reference
- Remove unused _landing/robots.txt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:20:20 +05:30
Rohit Kushwaha
2f1c250488 Merge branch 'dev' into feat/improve-onboarding 2026-02-28 23:22:52 +05:30
nijil
cd2a7ef121 feat: improve onboarding UX for missing API key 2026-02-27 21:39:30 +05:30
Rohit Kushwaha
6eae1c63ba docs: add Discord server link across docs and project metadata
https://dsc.gg/pocketpaw

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 22:05:43 +05:30
Rohit Kushwaha
76d8b6b052 docs: update docs URL from docs.pocketpaw.xyz to pocketpaw.xyz (#318)
The documentation site has moved from the docs subdomain to the root
domain. Update all references across README, docs README, and MCP
servers integration guide.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 23:44:39 +05:30
Vaibhavee Singh
232a5f2d84 docs: add type column to configuration reference tables (#305)
* docs: add type column to configuration reference tables

Add Type column to all configuration tables showing data types:
- string - API keys, tokens, URLs, model names
- integer - ports, IDs, numeric limits
- boolean - true/false flags
- string[] - comma-separated lists (allowed IDs, tools)
- integer[] - numeric ID lists (Discord guilds/users)
- enum - fields with specific allowed values (with options listed)

This improves developer experience by making it clear:
- Whether dashboard_port is a string or integer
- Whether tools_allow is a JSON array or comma-separated string
- Whether mem0_auto_learn is boolean or string "true"/"false"
- What values are valid for enum fields like llm_provider

Fixes #148

* Fix incorrect default values in configuration reference

Cross-checked defaults against config.py and corrected:
- tool_profile: coding → full
- whatsapp_mode: business → "" (unset until configured)
- mem0_llm_provider: ollama → anthropic
- mem0_llm_model: llama3.2 → claude-haiku-4-5-20251001
- mem0_embedder_provider: ollama → openai
- mem0_embedder_model: nomic-embed-text → text-embedding-3-small
2026-02-24 20:55:33 +05:30