mushuiyu886
08852d2bf7
fix #98107 : Gateway regenerates service-env file on every restart, wiping Telegram bot tokens ( #99124 )
...
* Preserve LaunchAgent env-file SecretRefs
* fix gateway start repair env source preservation
* test(daemon): cover SecretRef ownership cleanup
Co-authored-by: mushuiyu886 <mushuiyu886@users.noreply.github.com >
* fix(daemon): preserve only active SecretRefs
Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com >
* chore: defer service SecretRefs changelog
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: mushuiyu886 <mushuiyu886@users.noreply.github.com >
2026-07-06 02:24:39 +01:00
Peter Steinberger
33f7c17f23
[codex] Fallback when Windows gateway task exits early ( #76245 )
...
* fix(windows): bound clean scheduler exits before fallback
* test(windows): cover scheduled task startup fallback
* test(windows): assert startup fallback is not running
2026-07-05 08:19:33 -07:00
Peter Steinberger
614e87cce1
chore: update dependencies ( #100027 )
2026-07-04 14:56:50 -04:00
Jason (Json)
cccc856b82
fix: reject incompatible Node 23 runtimes ( #99832 )
...
* fix: reject incompatible Node 23 runtimes
* fix: repair installer CI coverage
* docs: clarify supported Node ranges
* fix: fail closed on unreadable runtime versions
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-04 00:03:49 -07:00
xingzhou
1755a9dc5b
fix(daemon): launch env wrapper through shell ( #89967 )
2026-07-03 13:56:37 -07:00
sunlit-deng
a9051b45cf
fix(daemon): avoid loading full gateway logs during diagnostics ( #99407 )
...
* fix(daemon): bound gateway diagnostic log reads
* fix(daemon): share bounded gateway log tails
* fix(daemon): complete bounded tail reads
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-03 02:22:42 -07:00
Darren2030
e79865569c
fix(install): preserve SecretRef service env values ( #96065 )
...
* fix(install): manage config-secretref env refs via OPENCLAW_SERVICE_MANAGED_ENV_KEYS
* fix(install): preserve config secret refs in launchd env
* fix(install): preserve secretref env render sources
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-07-01 14:04:33 -07:00
Wynne668
b6ad30625d
fix(status): bound systemd service probes so status cannot hang on a wedged systemctl ( #84698 ) ( #94149 )
...
* fix(status): bound systemd service probes so status cannot hang on a wedged systemctl (#84698 )
* test(daemon): assert readRuntime receives the threaded status timeout opts (#84698 )
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-01 06:52:14 -07:00
wm0018
dcc2db1825
feat(node): add gateway context path support
2026-07-01 03:58:47 -07:00
Masato Hoshino
76f9b6d837
fix(gateway): surface systemd start-limit exhaustion ( #98291 )
...
* fix(gateway): surface systemd start-limit exhaustion
* fix(gateway): avoid start-limit false positive for exit 78
2026-07-01 01:01:15 -07:00
Vincent Koc
0a986f893a
fix(daemon): type Windows task env fixture
2026-06-23 17:21:05 +08:00
mikasa
f5148aff25
fix #89231 : [Bug]: Windows installer-created scheduled task launches gateway.cmd with visible console — should use windowless launcher ( #95480 )
...
Merged via squash.
Prepared head SHA: 8b57b0377a
Co-authored-by: mikasa0818 <244515412+mikasa0818@users.noreply.github.com >
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Reviewed-by: @vincentkoc
2026-06-23 17:05:23 +08:00
Jason (Json)
6f63140902
fix: avoid false macOS update failures during gateway shutdown ( #95886 )
...
Merged via squash.
Prepared head SHA: 400e87c937
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com >
Reviewed-by: @fuller-stack-dev
2026-06-23 01:53:38 -06:00
Andy Ye
ca2f4c0d67
Warn on generated wrapper overwrites and status diagnostics ( #90537 )
...
Merged via squash.
Prepared head SHA: c6b6589e6d
Co-authored-by: TurboTheTurtle <35905412+TurboTheTurtle@users.noreply.github.com >
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Reviewed-by: @vincentkoc
2026-06-23 13:39:20 +08:00
snowzlm
10113b2c9f
fix(daemon): keep systemd gateway running after child OOM ( #93585 )
...
Co-authored-by: snowzlm <snowzlm@noreply.codeberg.org >
2026-06-22 18:54:21 +00:00
Vincent Koc
37ac0f0dd2
refactor(infra): remove stale utility re-exports
2026-06-23 00:07:13 +08:00
Vincent Koc
55959148ca
chore(deadcode): remove unused infra wrappers
2026-06-22 04:18:02 +08:00
Vincent Koc
2a140e6e6a
fix(daemon): resolve Windows scheduled-task tools
2026-06-21 12:45:49 +02:00
Vincent Koc
72b9bc7303
fix(core): resolve Windows PATH locator tools
2026-06-21 12:09:33 +02:00
Vincent Koc
7dd01d15c5
fix(windows): resolve cmd handoff path
2026-06-21 10:41:25 +02:00
Shakker
0d6e0a2263
test: isolate launchd process env
2026-06-20 04:26:00 +01:00
Vincent Koc
900a834c60
refactor(daemon): remove stale launchd helpers
2026-06-19 08:45:50 +08:00
Vincent Koc
64785823d0
fix(gateway): ignore stale sudo scope for root user services ( #93693 )
...
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
2026-06-16 23:56:12 +08:00
Alix-007
f6a3ac7e58
fix(daemon): prefer stderr over stale stdout in gateway restart diagnostics
...
Refs #93001 .
2026-06-16 00:09:41 +08:00
Zhao Shiqi
edd76238fe
fix(daemon): keep duplicate Windows gateway tasks visible
...
Normalize Windows schtasks default gateway names without hiding similarly prefixed duplicate tasks. Verified with focused daemon tests, type proof, autoreview, and clean CI.
2026-06-14 07:45:16 +08:00
mushuiyu_xydt
6a2ec62865
fix(daemon): keep unsupported service status readable
...
Fixes #25621.\n\nKeep gateway status readable on unsupported service-manager platforms by returning a conservative read-only service adapter, while lifecycle mutations still reject clearly. Includes regression coverage for resolver, status, summary, and lifecycle behavior.\n\nVerified with focused Vitest/oxlint/diff checks, autoreview, and Azure Crabbox check:changed on lanes core/coreTests.
2026-06-12 12:05:22 +09:00
Ayaan Zaidi
c7b4c6bfc5
fix(gateway): handle missing launchd gui domains
2026-06-10 10:51:19 +05:30
FullerStackDev
40aad24e8a
fix(gateway): surface headless LaunchAgent state
2026-06-10 10:51:19 +05:30
Peter Steinberger
5ba4eeceac
docs: document daemon tests
2026-06-04 20:16:21 -04:00
Peter Steinberger
2761e8cc3b
docs: document daemon systemd helpers
2026-06-04 14:00:34 -04:00
Peter Steinberger
407f4777d2
docs: document daemon service env helpers
2026-06-04 13:58:33 -04:00
Peter Steinberger
a3c44d53d1
docs: document daemon audit helpers
2026-06-04 13:57:21 -04:00
Peter Steinberger
feeaff20ab
docs: document daemon runtime helpers
2026-06-04 13:55:33 -04:00
Peter Steinberger
975d40d474
docs: document launchd daemon helpers
2026-06-04 13:54:21 -04:00
Peter Steinberger
0d35da9cc4
docs: document daemon command helpers
2026-06-04 13:51:23 -04:00
Peter Steinberger
604597d825
docs: document daemon process helpers
2026-06-03 21:35:27 -04:00
Peter Steinberger
0b8aabe864
docs: document auth profile failure policy contract ( #89613 )
...
* docs: document markdown marker renderer
* docs: document rendered markdown chunking
* docs: document markdown text chunking
* docs: document shared text chunking
* docs: document plugin text chunking exports
* docs: document avatar policy constants
* docs: document node match candidates
* docs: document scoped expiring id cache
* docs: document runtime import normalization
* docs: document string sample summaries
* docs: document session usage timeseries types
* docs: document session usage response types
* docs: document manifest frontmatter shapes
* docs: document channel route input metadata
* docs: document pair loop guard settings
* docs: document migration config patch helpers
* docs: document api provider registry
* docs: document tool call repair payloads
* docs: document plugin tool payload helpers
* docs: document lazy promise loader
* docs: document store writer queue state
* docs: document thread binding lifecycle
* docs: document concurrency helper contract
* docs: document gateway client info contract
* docs: document delivery context contracts
* docs: document secret ref defaults contract
* docs: document command gating contract
* docs: document avatar policy contract
* docs: document node match policy
* docs: document message channel normalization
* docs: document boolean parsing contract
* docs: document zod parse helpers
* docs: document direct dm guard policy
* docs: document fixed window limiter contract
* docs: document node presence event contract
* docs: document secret normalization contract
* docs: document progress draft line removal
* docs: document usage formatting contracts
* docs: document agent run status contract
* docs: document runtime import helpers
* docs: document provider utility ownership
* docs: document invalid config helpers
* docs: document json compat parser
* docs: document channel config metadata ownership
* docs: document channel logging helpers
* docs: document sender identity validation ownership
* docs: document string sampling helper
* docs: document global singleton helpers
* docs: document transcript tool helpers
* docs: document exec safe-bin normalization
* docs: document reaction level resolver
* docs: document account snapshot redaction boundary
* docs: document messaging target helpers
* docs: document thread binding messages
* docs: document conversation binding context
* docs: document conversation resolution helper
* docs: document owner display secret retention
* docs: document provider request config types
* docs: document skills config types
* docs: document memory config types
* docs: document imessage config types
* docs: document crestodian config types
* docs: document tools config policies
* docs: document shared config base types
* docs: document channel config contracts
* docs: document openclaw config state types
* docs: document model config contracts
* docs: document shared agent config types
* docs: document agent defaults config types
* docs: document secret input contracts
* docs: document auth config contracts
* docs: document gateway config contracts
* docs: document tool call stream repair contracts
* docs: document memory host facades
* docs: document llm core contracts
* docs: document markdown core contracts
* docs: document gateway connect error contracts
* docs: document gateway protocol primitives
* docs: document gateway frame schemas
* docs: document gateway device schemas
* docs: document gateway environment schemas
* docs: document gateway push schemas
* docs: document gateway plugin schemas
* docs: document gateway artifact schemas
* docs: document gateway command schemas
* docs: document gateway task schemas
* docs: document gateway exec approval schemas
* docs: document gateway secret schemas
* docs: document gateway config schemas
* docs: document gateway snapshot schemas
* docs: document gateway chat schemas
* docs: document gateway wizard schemas
* docs: document gateway node schemas
* docs: document gateway plugin approval schemas
* docs: document gateway talk schemas
* docs: document gateway agent schemas
* docs: document gateway session schemas
* docs: document gateway cron schemas
* docs: document gateway agent model skill schemas
* docs: document gateway skill proposal tool schemas
* docs: document gateway protocol registry
* docs: document gateway channel status schemas
* docs: document gateway schema regression tests
* docs: document gateway schema barrel
* docs: document gateway validator tests
* docs: document gateway primitive push tests
* docs: document gateway contract tests
* docs: document native protocol guard
* docs: document channel schema tests
* docs: document gateway protocol smoke tests
* docs: document gateway protocol entrypoint
* docs: document gateway protocol type exports
* docs: document gateway error codes
* docs: document protocol schema registry
* docs: document talk audio codec
* docs: document talk activation names
* docs: document talk consult questions
* docs: document talk consult tool
* docs: document talk run control contracts
* docs: document talk run control adapter
* docs: document talkback consult queue
* docs: document talk consult transcript guard
* docs: document talk fast context runtime
* docs: document forced talk consult coordinator
* docs: document talk output activity tracker
* docs: document talk event metrics
* docs: document talk diagnostics
* docs: document talk observability hook
* docs: document talk provider resolver
* docs: document talk provider registry
* docs: document talk runtime primitives
* docs: document talk consult controller logs
* docs: document channel identity helpers
* docs: document channel account allowlist helpers
* docs: document channel metadata draft controls
* docs: document channel ingress policy
* docs: document channel sender access gates
* docs: document channel catalog message contracts
* docs: document channel account plugin helpers
* docs: document configured binding helpers
* docs: document channel acp approval config helpers
* docs: document channel bundled config write helpers
* docs: document channel plugin utility contracts
* docs: document channel config access helpers
* docs: document channel message action helpers
* docs: document channel outbound runtime helpers
* docs: document channel pairing promotion helpers
* docs: document channel registry helpers
* docs: document channel setup wizard helpers
* docs: document channel lifecycle status helpers
* docs: document channel target thread helpers
* docs: document channel session binding helpers
* docs: document channel package module probes
* docs: document channel setup wizard contracts
* docs: document channel plugin API barrels
* docs: document channel contract test helpers
* docs: document channel core helpers
* docs: document small core facades
* docs: document provider runtime helpers
* docs: document persistence and realtime helpers
* docs: document mcp and state helpers
* docs: document tool planner contracts
* docs: document music generation runtime
* docs: document crestodian command flow
* docs: document utility helpers
* docs: document node host helpers
* docs: document transcript contracts
* docs: document trajectory export contracts
* docs: document image generation contracts
* docs: document routing helper contracts
* docs: document session helper contracts
* docs: document video generation contracts
* docs: document model catalog contracts
* docs: document proxy capture contracts
* docs: document status rendering contracts
* docs: document test helper contracts
* docs: document wizard setup contracts
* docs: document process contracts
* docs: document memory host sdk contracts
* docs: document tts contracts
* docs: document secrets runtime contracts
* docs: document shared helper contracts
* docs: document hook runtime contracts
* docs: document security audit contracts
* docs: document flow contracts
* docs: document media understanding contracts
* docs: document tui contracts
* docs: document logging contracts
* docs: document llm contracts
* docs: document cron contracts
* docs: document daemon contracts
* docs: document task contracts
* docs: document acp contracts
* docs: document test utility contracts
* docs: document skill contracts
* docs: document config contracts
* docs: document outbound infra contracts
* docs: document command analysis contracts
* docs: document provider usage infra contracts
* docs: document file safety infra contracts
* docs: document exec approval infra contracts
* docs: document gateway runtime infra contracts
* docs: document infra utility contracts
* docs: document infra queue storage contracts
* docs: document heartbeat infra contracts
* docs: document remaining infra contracts
* docs: document gateway auth contracts
* docs: document gateway display helpers
* docs: document gateway http helpers
* docs: document gateway node helpers
* docs: document gateway mcp helpers
* docs: document gateway support helpers
* docs: document gateway server runtime helpers
* docs: document gateway runtime bootstrap helpers
* docs: document gateway session events
* docs: document gateway utility helpers
* docs: document gateway talk helpers
* docs: document gateway helper contracts
* docs: document gateway server method helpers
* docs: document gateway server auth helpers
* docs: document gateway server tests
* docs: document gateway test helpers
* docs: document gateway node tests
* docs: document gateway channel tests
* docs: document gateway session tests
* docs: document gateway server startup tests
* docs: document gateway tool test helpers
* docs: document gateway server test helpers
* docs: document gateway server method tests
* docs: document remaining gateway tests
* docs: document plugin sdk public subpaths
* docs: document plugin sdk runtime helpers
* docs: document plugin sdk memory provider helpers
* docs: document plugin sdk runtime facades
* docs: document plugin sdk command approval helpers
* docs: document plugin sdk runtime types
* docs: document plugin sdk browser account helpers
* docs: document plugin sdk media memory helpers
* docs: document plugin sdk core tests
* docs: document plugin sdk contract helpers
* docs: document plugin sdk test helpers
* docs: document remaining plugin sdk tests
* docs: document cli utility helpers
* docs: document cli runtime helpers
* docs: document cli command registration helpers
* docs: document node cli helpers
* docs: document cli program registration
* docs: document message cli registration
* docs: document daemon cli helpers
* docs: document cli route parsers
2026-06-03 15:20:39 -07:00
Bek
6997453098
fix: guard in-band macOS launchd stop
...
Summary:
- guard macOS launchd stop/restart against in-band service relaunch loops
- centralize current-service detection for launchd stop and restart handoff
- preserve external launchd label stop overrides while fixing inherited XPC restart handoff
Verification:
- node scripts/run-vitest.mjs src/daemon/launchd.test.ts src/daemon/launchd-current-service.test.ts src/daemon/launchd-restart-handoff.test.ts
- .agents/skills/autoreview/scripts/autoreview --mode local
- pnpm check:changed via Blacksmith Testbox through Crabbox: tbx_01kt3xkmfqhnzghfxdn62fa8qm
Closes #89174
Co-authored-by: Bek <bek.akhmedov@gmail.com >
2026-06-02 06:27:36 -04:00
Alix-007
909c24e3b7
fix(config): skip state-dir dotenv values that are unresolved shell references ( #88288 )
...
* fix(config): skip state-dir dotenv values that are unresolved shell references
readStateDirDotEnvVarsFromStateDir accepted any non-empty value from the
state-dir .env file and passed it into the managed service env. When a value
contains an unresolved shell variable reference such as "${SUPERMEMORY_KEY}"
or "$MY_VAR", dotenv preserves the literal string. The value then reaches
the LaunchAgent/systemd wrapper as a single-quoted literal, so the credential
is never resolved.
Add containsUnresolvedShellReference() and skip any value matching
$IDENTIFIER, ${...}, or $(...) in parseStateDirDotEnvContent(). Real credential
values (e.g. "sm_abc123") are unaffected.
Fixes #88274
* fix(config): narrow shell-reference detector to whole-value patterns only
The previous /$[\w{(]/ regex matched any value containing $ followed by
a word character, which would incorrectly drop real credentials that merely
contain a dollar sign (e.g. a password like abc$2!xyz).
Replace with isUnresolvedShellReference() that only matches values whose
ENTIRE content is a recognised reference form:
- $VAR_NAME (simple reference)
- ${VAR_NAME} (brace-form reference)
- $(command) (command substitution)
Add a regression test that verifies dollar-bearing real secrets are kept.
* fix(config): use letter/underscore-anchored pattern to avoid matching dollar-numbers
$100, $2, etc. are NOT shell variable references — shell variable names must
begin with a letter or underscore. The previous /^$[\w_]/ would match them.
Change to /^$[A-Za-z_]\w*$/ so only genuine named-variable references like
$MY_VAR are rejected. Dollar-number sequences are now preserved.
* fix(daemon): drop stale systemd env-file refs for skipped state-dir dotenv keys
When a state-dir .env value is an unresolved shell reference ($VAR/${VAR}/$(cmd))
the parser skips it from the managed environment. A prior install could have
written that literal reference into gateway.systemd.env; because the skipped key
no longer appeared in the incoming env or the managed-key removal sets, the stale
literal survived re-stage and could override fresh inline Environment= values.
Surface the skipped shell-reference keys from the state-dir dotenv parser and add
them to the systemd env-file managed-key removal set so re-staging strips the
obsolete literal while preserving operator-only secrets that were never managed
via state-dir .env. launchd regenerates its env file wholesale, so it is
unaffected.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
* fix(config): skip quoted shell parameter dotenv refs
* fix(config): preserve lowercase dollar-prefixed dotenv literals
* fix(daemon): clear stale unresolved systemd env refs
* fix(daemon): avoid re-staging unresolved file env refs
* fix(daemon): drop unresolved file env refs inline
* fix(daemon): drop inline-and-file unresolved env refs
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-31 21:01:33 -04:00
Peter Steinberger
b653d94918
chore(lint): enable no-useless-assignment
2026-05-31 22:40:48 +01:00
Andy Ye
49e5091f18
fix(update): recognize manual-update launchd jobs ( #88764 )
...
* Recognize manual update launchd jobs
* fix(update): avoid stale launchd false positives
* fix(update): filter stale doctor launchd checks
* fix(update): narrow manual launchd updater labels
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-31 22:39:37 +01:00
Peter Steinberger
304e2c83c0
chore(lint): enable stricter oxlint rules
2026-05-31 18:59:02 +01:00
Yuval Dinodia
b988e2f92b
fix(daemon): detect system-scope systemd gateway units on Linux
...
Detect OpenClaw gateway units installed in the system systemd scope, including marker-owned custom unit names such as `openclaw.service`. Route status/restart/stop through the system manager when appropriate, and show non-root users the matching `sudo systemctl ...` command instead of falling back to unmanaged process signaling.
Fixes #87577 .
Thanks @yetval.
Verification:
- `node scripts/run-vitest.mjs src/daemon/systemd.test.ts src/cli/daemon-cli/lifecycle.test.ts src/daemon/inspect.test.ts src/cli/daemon-cli/lifecycle-core.test.ts src/cli/daemon-cli/status.gather.test.ts src/cli/daemon-cli/response.test.ts src/commands/doctor-gateway-daemon-flow.test.ts src/cli/update-cli/restart-helper.test.ts src/infra/outbound/message-action-runner.core-send.test.ts`
- AWS Crabbox `cbx_69f97dff5e5c`, run `run_a68431b3dad6`: exact SHA checkout, focused tests, real `/etc/systemd/system/openclaw.service` status/restart/stop proof.
2026-05-31 18:52:02 +01:00
wAngByg
6c5cd7177f
fix(doctor): detect stale gateway service version metadata
2026-05-31 18:17:30 +01:00
Peter Steinberger
f5eca3f84c
chore(lint): enable object and reassignment rules
2026-05-31 09:32:52 +01:00
Peter Steinberger
b9fe0894a6
chore(lint): enable additional cleanup rules
2026-05-31 08:16:11 +01:00
Peter Steinberger
00d8d7ead0
refactor: extract normalization core package
...
Extract shared normalization/coercion helpers into private @openclaw/normalization-core workspace package while preserving existing plugin SDK helper subpaths.\n\nAlso keeps direct normalization-core imports internal, wires UI/build/loader resolution, and replaces the slow PR network CodeQL lane with a fast added-line boundary scan while retaining full CodeQL for scheduled/manual runs.\n\nVerification: local moved tests, plugin SDK boundary tests, extension loader tests, agents-support shard, UI build/test, build artifacts, lint, workflow guards, autoreview, and GitHub CI passed on PR head 963d893715 .
2026-05-31 01:33:00 +01:00
Vincent Koc
3d66d203d0
test(daemon): keep systemd tests off real systemctl
2026-05-30 15:03:37 +01:00
Peter Steinberger
de1dfab03e
refactor: move terminal core into package ( #88279 )
...
* refactor: move terminal core into package
* refactor: move terminal module files
* fix: clean terminal package CI followups
* test: update lint suppression allowlist
* fix: ship terminal core runtime aliases
2026-05-30 11:07:45 +02:00
Peter Steinberger
625b793635
fix(daemon): centralize tcp port bounds
2026-05-29 02:22:03 -04:00