Skip to content

CLI: add Opencode integration#5

Closed
RealSid08 wants to merge 0 commit intoopenclaw:mainfrom
RealSid08:feat/opencode-integration
Closed

CLI: add Opencode integration#5
RealSid08 wants to merge 0 commit intoopenclaw:mainfrom
RealSid08:feat/opencode-integration

Conversation

@RealSid08
Copy link
Contributor

Summary

This PR adds full support for the Opencode CLI (opencode) as an auto-reply engine in warelay. This allows users to run "Openclawd" (an Opencode-powered assistant), leveraging Opencode's autonomous capabilities and multi-model support.

Key Changes

1. Opencode CLI Integration

  • Command Detection: [src/auto-reply/command-reply.ts] now detects opencode commands and automatically applies the necessary flags (--format json, --session).
  • Identity Prefix: Added OPENCODE_IDENTITY_PREFIX to [src/auto-reply/opencode.ts] to give Openclawd a distinct persona and context, similar to the existing Claude identity.
  • Session Management: Implemented logic to use --session <id> for Opencode, ensuring conversation continuity.

2. Robust JSON Parsing & Metadata

  • Streaming Parser: Implemented [parseOpencodeJson] in [src/auto-reply/opencode.ts] to handle Opencode's newline-delimited JSON event stream.
  • Metadata Extraction: The parser extracts:
    • Text: Clean response text from message_delta events.
    • Cost: Total cost from step_finish events.
    • Tokens: Input/output token usage.
    • Duration: Execution time.
  • Logging: Added [summarizeOpencodeMetadata] to log usage stats (cost, tokens, duration) to the console, matching the visibility of the Claude integration.

3. Documentation

  • New Guide: Created [docs/openclawd.md], a comprehensive setup guide for Openclawd. It covers:
    • Installation and configuration (warelay.json).
    • Autonomous Mode: Explanation of Opencode's "YOLO" mode and permission management via opencode.json.
    • MCP Setup: How to configure Model Context Protocol servers (Gmail, Calendar, etc.) in opencode.json.
  • README Update: Updated README.md to include Opencode support and link to the new documentation.

4. Testing

  • Unit Tests: Added [src/auto-reply/opencode.test.ts] with a comprehensive test suite covering:
    • Text extraction from streams.
    • Metadata calculation (cost, tokens).
    • Error handling for invalid JSON or empty input.
  • Verification: Verified that pnpm test passes for all new tests.

Verification

  • Unit Tests: Run pnpm test src/auto-reply/opencode.test.ts to verify parsing logic.
  • Linting: Code follows project style (pnpm lint passed).
  • Manual Test: Verified opencode command construction and argument handling in [command-reply.ts]

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally

@steipete
Copy link
Contributor

steipete commented Dec 2, 2025

I picked the relevant parts and made you co-author. Thanks!

@steipete steipete closed this Dec 2, 2025
@RealSid08
Copy link
Contributor Author

Omg thank you so much! I plan on getting Gemini CLI to work with warelay, @steipete should I make a PR for it once I think it's stable enough?

@steipete
Copy link
Contributor

steipete commented Dec 2, 2025

Ah good call. I added gemini.

petter-b added a commit to petter-b/openclaw that referenced this pull request Jan 12, 2026
* refactor: move slash commands to .claude/commands/dev/

* chore: remove old .claude/dev/ directory

---------

Co-authored-by: Claude <noreply@anthropic.com>
tristanmanchester added a commit to tristanmanchester/clawdbot that referenced this pull request Jan 15, 2026
…tions

Replaces non-atomic `fs.writeFile()` calls in `persistTranscript()` and
`persistDescription()` with atomic temp-file-then-rename pattern. This
prevents data corruption when concurrent webhook processing writes to
the same sidecar file.

Implementation:
- Created shared `atomicWriteFile()` utility in `src/utils/atomic-write.ts`
- Uses unique temp file with UUID suffix for each write operation
- POSIX-guaranteed atomic `fs.rename()` to final location
- Automatic cleanup of temp files on error
- Comprehensive unit tests covering atomic behavior, concurrent writes,
  error handling, and edge cases (9 tests, all passing)

Fixes:
- Race condition when duplicate webhooks process same media file
- Data corruption from interrupted writes leaving partial UTF-8 sequences
- Last-write-wins now atomic (no partial states visible)

Resolves openclaw#5 (todos/005-pending-p1-race-condition-sidecar-files.md)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
tristanmanchester added a commit to tristanmanchester/clawdbot that referenced this pull request Jan 15, 2026
Updated todo file status from pending to resolved after implementing
atomic write pattern for sidecar file creation.

Implemented:
- Atomic write utility with comprehensive tests
- Applied to both transcription and video sidecar persistence
- All acceptance criteria met
- 9 unit tests passing

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Divem pushed a commit to Divem/openclaw that referenced this pull request Jan 31, 2026
linustan referenced this pull request in linustan/Komatachi Feb 1, 2026
- Decision #5: Distill into TypeScript with Rust portability in mind
- Decision #6: Minimal viable agent is CLI + Claude + file tools
- Removed answered questions from Open Questions section

https://claude.ai/code/session_0171xZCAV5r6yGGgzMpGDDDP
linustan referenced this pull request in linustan/Komatachi Feb 2, 2026
Validates decision #5 (TypeScript with Rust portability):
- Rust library using napi-rs for Node.js bindings
- TypeScript wrapper that matches original interface
- 44 tests pass for both implementations (88 total)

Architecture: TypeScript handles async orchestration (summarizer callback),
Rust handles pure computation (token estimation, metadata extraction).

Files:
- crates/compaction/src/lib.rs - Rust implementation
- src/compaction/rust.ts - TypeScript wrapper
- src/compaction/rust.test.ts - Equivalent tests for Rust impl

https://claude.ai/code/session_011TWuFG2PPSUU497XsRQYwy
Chimppppy pushed a commit to Chimppppy/openclaw that referenced this pull request Feb 3, 2026
…ames-in-security-extensions

Fix implementations to use the correct tool names.
ariffazil added a commit to ariffazil/AGI_ASI_bot that referenced this pull request Feb 4, 2026
Create Issue openclaw#5 documenting the technical inaccuracy of deployment instructions that were incorrectly claiming the project was Python-based when it's actually a Node.js project.

Ω₀=0.02
F2✓ (documenting the error)
F7✓ (acknowledging technical inaccuracies)
Linsen-Mao pushed a commit to Linsen-Mao/openclaw that referenced this pull request Feb 5, 2026
…iner, Postgres traces, cost budgets, phase restructuring

Factsheet changes (12 architecture critiques):
- Add users table with auth provider (openclaw#1)
- Change all TEXT PKs to native UUID type (openclaw#2)
- Remove orphaned session_id from Task/TaskCommand/TaskResult (openclaw#3)
- Replace per-task containers with single shared Docker container (openclaw#4)
- Phase injection queue: in-memory Phase 1, Redis Phase 2+ (openclaw#5)
- Decouple Board Sync DB writes from WebSocket broadcasting (openclaw#6)
- Move trace storage from JSONL+index to Postgres-only (openclaw#7)
- Add chat_messages escalation to agent context (openclaw#8)
- Normalize discussion_messages into separate table (openclaw#9)
- Add PolicyEngine facade with single evaluate() entry point (openclaw#10)
- Add per-plugin Zod validation schemas for SourceConfig (openclaw#11)
- Add CostPolicy with token/cost budgets and cost_usage table (openclaw#12)

Blueprint changes (4 implementation improvements):
- Split Phase 1 into 4 sub-phases (1a-1d)
- Reorder: API skeleton before agent loop
- Defer frontend to Phase 5
- Add packages/shared for types and schemas

DB schema: 17 tables → 20 tables (added users, traces, discussion_messages, cost_usage)

https://claude.ai/code/session_01V2xvGqZqX6JKPGQeXyNMQW
crazynomad pushed a commit to crazynomad/openclaw that referenced this pull request Feb 6, 2026
The "pulling yourself up by your own hair" story perfectly
illustrates OpenClaw's self-development: AI using itself to
improve itself.

Added ASCII art and connection to real git history showing
Shadow, CLAWDINATOR, Jarvis commits.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
jimboswankster pushed a commit to jimboswankster/moltbot that referenced this pull request Feb 7, 2026
Add comprehensive tests to close remaining refactor risks identified in
code-inspection.md. New coverage includes:

- Gateway mirror + A2A announce integration (Gap openclaw#1): 5 tests
- Role/source attribution interface contract (Gap openclaw#2): test.fails
- Config variations with vi.doMock pattern (Gap openclaw#9): 5 tests
- Tool restriction enforcement (Gap openclaw#5): 5 tests
- Concurrency/race safeguard (Gap openclaw#6): 5 tests + strategy docs

Total: 65 tests across 5 files (all passing)

Files:
- a2a-integration.regression.test.ts (new)
- config-variation.regression.test.ts (new)
- send-a2a-announce.integration.test.ts (new)
- Updated: a2a-flow, sessions-send-async, README, QC report

Co-authored-by: Cursor <cursoragent@cursor.com>
jimboswankster pushed a commit to jimboswankster/moltbot that referenced this pull request Feb 7, 2026
…d key support

## Summary
- Added deterministic idempotencyKey injection for side-effect tools (sessions_send,
  sessions_spawn, message, browser, nodes, canvas) during cron runs.
- Key is derived from runId + toolName + stable-stringified params (SHA-256).
- Only activates for cron-prefixed runIds; non-cron runs are unaffected.
- sessions_send now honors a provided idempotencyKey instead of always generating a UUID.
- Threaded runId through tool creation pipeline (pi-tools → attempt → tool-definition-adapter).
- Added contract tests: deterministic injection + sessions_send key passthrough.
- Updated existing before-tool-call tests with runId context.

## Why
- Cron retries after restarts were duplicating sends and tool calls because each retry
  generated a new random idempotency key. Deriving the key from the stable cron runId
  ensures replays produce the same key, enabling downstream dedupe. (Red-team risk openclaw#5)

## Systems
- agents (pi-tools, pi-tools.before-tool-call, pi-tool-definition-adapter,
  pi-embedded-runner, sessions-send-tool)

## Agent
- agent: MIS

Co-authored-by: Cursor <cursoragent@cursor.com>
thisnick pushed a commit to thisnick/openclaw that referenced this pull request Feb 8, 2026
When groupPolicy: 'allowlist' and groups config has specific group JID
entries, those JIDs act as a group allowlist — anyone in approved groups
can chat, while groupAllowFrom only gates slash command authorization.
Falls back to legacy sender-based filtering when no groups entries exist.

Updates:
- docs/channels/groups.md: updated flowchart, added config example openclaw#5
- docs/channels/whatsapp.md: noted dual behavior in Groups section
- docs/gateway/security/index.md: explained dual groups behavior in
  allowlist terminology section with config example
Yuhuan0216 referenced this pull request in Yuhuan0216/openclaw Feb 8, 2026
- health-manager: use resolveConfigDir() for health-stats.json path (Critical #1)

- health-manager: replace console.error with subsystem logger (Minor #3)

- health-manager: document async load race condition (Minor #2)

- bindings: use resolveConfigDir() for routing.json path (Minor #5)
skyhawk14 pushed a commit to skyhawk14/openclaw that referenced this pull request Feb 13, 2026
openclaw#5)

* fix(security): sanitize error responses to prevent information leakage

Replace raw error messages in HTTP responses with generic messages.
Internal error details (stack traces, module paths, error messages)
were being returned to clients in 4 gateway endpoints.

* fix: sanitize 2 additional error response leaks in openresponses-http

Address CodeRabbit feedback: non-stream and streaming error paths in
openresponses-http.ts were still returning String(err) to clients.

* fix: add server-side error logging to sanitized catch blocks

Restore err parameter and add logWarn() calls so errors are still
captured server-side for diagnostics while keeping client responses
sanitized. Addresses CodeRabbit feedback about silently discarded errors.
steipete pushed a commit to azade-c/openclaw that referenced this pull request Feb 14, 2026
openclaw#5)

* fix(security): sanitize error responses to prevent information leakage

Replace raw error messages in HTTP responses with generic messages.
Internal error details (stack traces, module paths, error messages)
were being returned to clients in 4 gateway endpoints.

* fix: sanitize 2 additional error response leaks in openresponses-http

Address CodeRabbit feedback: non-stream and streaming error paths in
openresponses-http.ts were still returning String(err) to clients.

* fix: add server-side error logging to sanitized catch blocks

Restore err parameter and add logWarn() calls so errors are still
captured server-side for diagnostics while keeping client responses
sanitized. Addresses CodeRabbit feedback about silently discarded errors.
GwonHyeok pushed a commit to learners-superpumped/openclaw that referenced this pull request Feb 15, 2026
openclaw#5)

* fix(security): sanitize error responses to prevent information leakage

Replace raw error messages in HTTP responses with generic messages.
Internal error details (stack traces, module paths, error messages)
were being returned to clients in 4 gateway endpoints.

* fix: sanitize 2 additional error response leaks in openresponses-http

Address CodeRabbit feedback: non-stream and streaming error paths in
openresponses-http.ts were still returning String(err) to clients.

* fix: add server-side error logging to sanitized catch blocks

Restore err parameter and add logWarn() calls so errors are still
captured server-side for diagnostics while keeping client responses
sanitized. Addresses CodeRabbit feedback about silently discarded errors.
Unayung added a commit to Unayung/openclaw that referenced this pull request Feb 15, 2026
The Browser Relay extension frequently loses connection and fails to
recover, requiring manual re-attach. This adds 5 fixes:

1. Don't detach debugger sessions on WebSocket drop — keep them alive
   and re-announce when WS reconnects
2. Auto-reconnect with exponential backoff (1s → 30s cap) + jitter
3. Persist state to chrome.storage.session for MV3 worker restart
   recovery, with debugger re-attach on restore
4. Tab lifecycle cleanup via onRemoved/onReplaced listeners
5. Keepalive alarm (every 4 min) to prevent MV3 worker termination
   and detect stale debugger sessions

manifest.json: add 'alarms' permission for fix openclaw#5.

Tested with 12+ hours continuous uptime on Edge, surviving gateway
restarts, sleeping tabs, and automated cron runs.

Fixes openclaw#15099
RedBeardEth referenced this pull request in daydreamsai/dreaming-claw Feb 16, 2026
@abckx-tech
Copy link

Fixed in v0.12.0

Root cause: Rolldown code-splitting produced a circular chunk dependency between reply and github-copilot-token chunks. The github-copilot-token chunk imported __exportAll from reply, but reply imported {saveJsonFile, loadJsonFile} back from github-copilot-token. In ESM, this circular evaluation left __exportAll as undefined at runtime.

Fix: Enabled strictExecutionOrder: true in tsdown/rolldown output options (tsdown.config.ts). This injects runtime wrappers that ensure correct module evaluation order across all entry points, regardless of chunk topology.

Bundle impact: ~4% size increase (7204 KB → 7485 KB) — acceptable tradeoff for guaranteed correct execution.

Validation:

  • pnpm build — compiles cleanly (272 chunks)
  • node dist/index.js gateway --help — no crash
  • Docker build — tested locally

Also included: Updated all remaining alefftech/iagente references to iagentes-dev/iagentes (11 files: K8s manifest, docs, issue links).

Commit: 017160f99

acs111 pushed a commit to acs111/openclaw that referenced this pull request Feb 19, 2026
- getPage(): coalesce concurrent launches into one promise to prevent
  multiple browser processes spawning under load (openclaw#1)
- isAuthUrl(): replace substring match with hostname check to eliminate
  false positives on URLs containing '/signin' (openclaw#2)
- SPA stale content: switch goto waitUntil to 'load' and wait for note
  container before querying checkboxes so navigation between notes does
  not return items from the previous note (openclaw#3)
- extractUncheckedItems(): accept timeoutMs param and use it for both
  waitForSelector calls instead of a hardcoded 8s value (openclaw#4)
- openLoginBrowser(): store login context in this.loginContext so
  getPage() blocks while a login browser is open; session cleanup is
  owned by the returned done promise (openclaw#5)
- /keep status: check fs.existsSync(profileDir) and report actual
  session state instead of a static hint (openclaw#6)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
speculatingwook added a commit to Pronto-Lab/prontoclaw that referenced this pull request Feb 19, 2026
Improvements completed:
- #1 A2A conversation index (O(1) lookup, 24 tests)
- #2 A2A durable jobs (JobManager + Reaper + Orchestrator, 43 tests)
- openclaw#3 task-tool.ts modularization (5 modules, 2296→45 LOC facade, 147 tests)
- openclaw#4 continuation state machine Phase 1 (pure decision functions, 56 tests)
- openclaw#5 gateway composition (6 init modules, 737→565 LOC, 80→48 imports)
- openclaw#7 A2A per-agent concurrency gate (semaphore + config, 25 tests)
- openclaw#8 structured handoff payload (types + parser, 42 tests)
- openclaw#9 coordination invariants test suite (TC-01~07, 22 tests)
- openclaw#11 subagent-task lifecycle (delegation manager + verify tool, 135 tests)
- openclaw#12 task enforcement bypass fix (session-scoped + stale cleanup, 20 tests)

N/A: openclaw#6 (DI already via GatewayRequestContext), openclaw#10 (partially resolved by #2)
Deferred: openclaw#4 Phase 2-5 (high risk, Phase 1 delivers core value)

Total: 514 new tests, 0 regressions, 11 implementation docs
arthyn added a commit to arthyn/clawdbot that referenced this pull request Feb 19, 2026
Picks up type export fixes from api-beta PRs openclaw#4 and openclaw#5
arthyn added a commit to arthyn/clawdbot that referenced this pull request Feb 20, 2026
Picks up type export fixes from api-beta PRs openclaw#4 and openclaw#5
thisnick pushed a commit to thisnick/openclaw that referenced this pull request Feb 21, 2026
When groupPolicy: 'allowlist' and groups config has specific group JID
entries, those JIDs act as a group allowlist — anyone in approved groups
can chat, while groupAllowFrom only gates slash command authorization.
Falls back to legacy sender-based filtering when no groups entries exist.

Updates:
- docs/channels/groups.md: updated flowchart, added config example openclaw#5
- docs/channels/whatsapp.md: noted dual behavior in Groups section
- docs/gateway/security/index.md: explained dual groups behavior in
  allowlist terminology section with config example
small-goliath added a commit to small-goliath/openclaw that referenced this pull request Feb 22, 2026
- Add 5-second timeout for memory search queries using Promise.race
- Add 1000-character query length limit
- Replace JSON.parse with safeJsonParse in WebSocket message handler
- Add proper error handling for timeout and parse errors
- Prevent DoS attacks via complex queries or deep JSON payloads

Closes Task openclaw#4, openclaw#5
thisnick pushed a commit to thisnick/openclaw that referenced this pull request Feb 23, 2026
When groupPolicy: 'allowlist' and groups config has specific group JID
entries, those JIDs act as a group allowlist — anyone in approved groups
can chat, while groupAllowFrom only gates slash command authorization.
Falls back to legacy sender-based filtering when no groups entries exist.

Updates:
- docs/channels/groups.md: updated flowchart, added config example openclaw#5
- docs/channels/whatsapp.md: noted dual behavior in Groups section
- docs/gateway/security/index.md: explained dual groups behavior in
  allowlist terminology section with config example
thisnick pushed a commit to thisnick/openclaw that referenced this pull request Feb 23, 2026
When groupPolicy: 'allowlist' and groups config has specific group JID
entries, those JIDs act as a group allowlist — anyone in approved groups
can chat, while groupAllowFrom only gates slash command authorization.
Falls back to legacy sender-based filtering when no groups entries exist.

Updates:
- docs/channels/groups.md: updated flowchart, added config example openclaw#5
- docs/channels/whatsapp.md: noted dual behavior in Groups section
- docs/gateway/security/index.md: explained dual groups behavior in
  allowlist terminology section with config example
margulans added a commit to margulans/Neiron-AI-assistant that referenced this pull request Feb 24, 2026
…ы в systemd drop-ins; шаблон сервиса обновлён

Co-authored-by: Cursor <cursoragent@cursor.com>
let5sne pushed a commit to let5sne/openclaw that referenced this pull request Feb 25, 2026
Three improvements derived from reflections (Feb 15-22):

- Adversarial memory search hint (openclaw#5): added a one-line tip to the
  memory_search tool description nudging agents to also search for
  opposing views when recalling decisions. Addresses the structural
  confirmation bias in vector search (searching 'why we chose X' only
  returns content supporting X). Zero-cost change — pure description
  update, no new logic.

- Skill deprecation warnings (openclaw#8): added 'deprecated' and 'replaces'
  fields to OpenClawSkillMetadata. When a skill with 'deprecated' set
  is loaded, the skill loader now emits a structured warning with the
  reason and suggested replacement. Motivated by the ComfyUI Node
  Replacement API observation (Feb-18 reflection): skill ecosystems
  need a migration path so old references don't silently break.
  ~15 lines in types.ts + ~8 lines in workspace.ts.

All changes are non-breaking. Deprecation warnings are log-level warn
only — they never block skill loading or agent operation.
songliu0403-rgb pushed a commit to songliu0403-rgb/openclaw that referenced this pull request Feb 26, 2026
Co-authored-by: Felix <24791380+vcfgv@users.noreply.github.com>
jimboswankster pushed a commit to jimboswankster/moltbot that referenced this pull request Feb 27, 2026
…egram + WebSocket/UI

## Summary
- Fix Telegram runner lifecycle bug: `return` → `continue` after non-error stop, preventing permanent polling exit (Issue openclaw#1).
- Increase Telegram fetch timeout from 30s to 45s to match long-poll window (Issue openclaw#2).
- Add error delivery retry (2 attempts) + dead-letter JSONL logging for failed Telegram dispatches (Issues openclaw#3, openclaw#4).
- Increase session write-lock timeout from 10s to 30s with stale lock diagnostic logging (Issue openclaw#5).
- Await runner.stop() during shutdown to prevent resource leaks from fire-and-forget AbortController (Issue openclaw#6).
- Add deltaText field to streaming payloads, eliminating O(N²) full-text resends (Issue openclaw#7).
- Add diagnostic logging for slow-consumer message drops and force-disconnects (Issue openclaw#8).
- Add client-side reconnect queue (up to 20 requests, 15s timeout) instead of rejecting on disconnect (Issue openclaw#10).
- Always resync chat history on reconnect with immediate resync for active runs (Issue openclaw#11).
- Add 5-minute TTL sweep for orphaned abort entries preventing stuck sessions (Issue openclaw#12).

## Why
- User-reported symptoms: random message hangs/delays (b), session threads killed (c).
- Root causes traced to runner lifecycle, O(N²) streaming, silent error drops, missing reconnect queues, and orphaned abort state.
- Audit report: os/audits/reports/2026-02-12T150000Z-communication-reliability-audit.md

## Systems
- src/telegram (monitor, dispatch, send)
- src/gateway (server-chat, server-broadcast)
- src/agents (session-write-lock)
- ui/src/ui (gateway, app-gateway)

## Agent
- agent: MIS

Co-authored-by: Cursor <cursoragent@cursor.com>
@benfoxsb
Copy link

@clawdbot: Please delete this issue. It was created in the wrong repository and does not belong here. It should be in .

Piboonsak referenced this pull request in Piboonsak/openclaw_github Feb 28, 2026
…2026.2.27-ws23)

Fixes all 9 production issues:

CRITICAL FIXES:
  - KI-009: Volume mount path /data/openclaw/state → /data/.openclaw (fixes #1, #5, #6)
  - KI-010: exec host hardened to gateway mode (fixes #3)
  - KI-002: exec safeBins expanded (date, uptime, whoami, etc.) (fixes #2)

ENHANCEMENTS:
  - KI-011: Browser build arg added to Dockerfile.prod (fixes #4)
  - KI-012: Environment variable validation & persistence (fixes #5)
  - KI-007: Timezone confirmed correct (+07:00 Bangkok) (fixes #7)

DEFERRED (P3):
  - Issue openclaw#8: Reply message context awareness → GitHub issue
  - Issue openclaw#9: Auto memory save skill → GitHub issue

DELIVERABLES:
  - docker-compose.prod.yml: Fixed volume mount path
  - Dockerfile.prod: Added OPENCLAW_INSTALL_BROWSER build arg
  - config/exec-approvals.prod.json: New security policy (allowlist mode)
  - config/openclaw.prod.json5: Added tools.exec section (host=gateway)
  - docker/scripts/backup-config.sh: Config backup with rotation
  - docker/scripts/check-env.sh: Pre-deployment env validation
  - docs/CI-CD-WORKFLOW.md: Updated Step 5 with new deployment flow
  - docs/debug/tiered-debug-sop.md: Added KI-009–KI-012 entries
  - docs/workspace/TOOLS.md.additions.md: Tool usage guide for workspace

TESTING:
  - tests/pre-test-checklist.sh: 10-point environment validation
  - tests/regression-tests.sh: 20+ automated tests (all issues covered)
  - tests/LINE-REGRESSION-MESSAGES.md: 13 manual test messages (Thai)
  - tests/REGRESSION-TESTING.md: Complete testing guide
  - tests/README.md: Quick reference for test suite

REFERENCES:
  - Piboonsak/Openclaw#1 (reply context)
  - Piboonsak/Openclaw#2 (auto memory save)
prue-starfield pushed a commit to prue-starfield/openclaw that referenced this pull request Feb 28, 2026
benieralexis-sudo pushed a commit to benieralexis-sudo/openclaw that referenced this pull request Mar 1, 2026
CRITICAL fixes:
- openclaw#1-2: HITL race conditions — _inFlight lock on Telegram + Dashboard API (409 Conflict)
- openclaw#3: Storage JSON.parse crash protection — backup corrupt files + reset to defaults
- openclaw#4: Lead Enrich waterfall — Apollo fallback when FullEnrich fails + email validation
- openclaw#5: Meeting Scheduler — remove hardcoded fallback, require CALCOM_USERNAME env
- openclaw#6: Self-Improve — clamp scoring weights 0-2.0
- openclaw#7: IMAP connection leak — destroy client on connect timeout

HIGH fixes:
- openclaw#8: Resend retry jitter — prevent thundering herd
- openclaw#9: Gmail SMTP circuit breaker per mailbox — 3 errors → 5min cooldown
- openclaw#10: Honeypot list reduced — keep real system addresses only
- openclaw#11: CRM pipeline cache TTL 30min
- openclaw#12: CRM contact dedup — check HubSpot before createContact
- openclaw#13: HubSpot 429 rate limit handling
- openclaw#14: Inbox UID marked AFTER classification (prevent data loss)
- openclaw#15: FlowFast leads cap 5000 with auto-purge
- openclaw#16: Brain action lock — _actionsInFlight Set
- openclaw#17: Self-Improve p-value threshold raised to 20 minimum samples
- openclaw#18: System Advisor disk parsing — numeric GB values
- openclaw#19: Invoice EUR format — fr-FR locale (12,50 €)
- openclaw#20: Draft quality gate — spam words, link check, min length

17 files changed, +248/-38 lines

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MedetKraman added a commit to MedetKraman/openclaw that referenced this pull request Mar 3, 2026
- pnpm install now uses --mount=type=cache (openclaw-pnpm-store volume)
- lock file changes no longer force full package re-download
- PAIDAX-PATCHES.md: document patch openclaw#5 + build-local.sh as build command
benieralexis-sudo pushed a commit to benieralexis-sudo/openclaw that referenced this pull request Mar 6, 2026
MOYENS (16):
- openclaw#1 generateReactiveFollowUp maxLength string vs number — aligne sur string
- openclaw#2 Multi-threading mort — filtre sur mappedLeads (avec score) au lieu de result.leads
- openclaw#3 _checkEmailSpecificity null safety — (prospectIntel || '').match()
- openclaw#4 totalContacts pre-dedup — utilise addedCount
- openclaw#5 Bounces tous hard_bounce — distinction soft/hard, soft = retry pas blacklist
- openclaw#8 _isSystemEmail includes() trop large — exact match + prefix patterns
- openclaw#10 sendBatch bypass warmup — recordSend dans domain-manager apres chaque envoi
- openclaw#11 Domain manager parsing ':' dans password — split limite a 4 segments
- openclaw#12 prospectDomains jamais nettoye — cleanup LRU max 2000 entries
- openclaw#13 trackNicheEvent('clicked') ignore — ajout compteur clicked
- openclaw#14 apStorage.getLeads() inexistant — utilise automailer storage.getEmails()
- openclaw#25 Interval HITL drafts jamais cleared — clearInterval dans gracefulShutdown

FAIBLES (9):
- openclaw#17 Retry skip prompt 25-35 mots → aligne sur 50-65 mots 4-blocs
- openclaw#18 _scoreAndFilter gate 60 mots → 80 mots (coherent avec prompts)
- openclaw#19 "curieux d'avoir ton retour" autorise dans follow-ups → remplace
- openclaw#20 seniorities priorite inversee → brain > config
- openclaw#21 data.growth jamais active → detecte via employee count + multi-country
- openclaw#23 Fallback plan non-pondere → utilise icp-loader.getNicheForCycle()
- campaign-engine: double updateEmailStatus pour opened → supprime appel redondant

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
elliot-ylambda added a commit to elliot-ylambda/magister-openclaw that referenced this pull request Mar 7, 2026
…nd-waitlist-email

Add resend support, send waitlist confirmation email, create email te…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants