Skip to content

Comments

Feat/spixi#1

Merged
IxiAngel merged 37 commits intomainfrom
feat/spixi
Feb 5, 2026
Merged

Feat/spixi#1
IxiAngel merged 37 commits intomainfrom
feat/spixi

Conversation

@IxiAngel
Copy link
Collaborator

@IxiAngel IxiAngel commented Feb 5, 2026

No description provided.

Prometheus (The Mayor) and others added 30 commits February 2, 2026 22:12
… metadata, configuration types, and Zod schemas.
Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options
- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema
- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address
- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram
- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI
- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured
Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.
- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link
- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging
…ging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting
- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint
- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts
subsubl and others added 7 commits February 5, 2026 01:40
…boarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>
# Conflicts:
#	src/auto-reply/command-auth.ts
#	src/auto-reply/command-control.test.ts
@IxiAngel IxiAngel merged this pull request into main Feb 5, 2026
IxiAngel added a commit that referenced this pull request Feb 9, 2026
* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 16, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
IxiAngel pushed a commit that referenced this pull request Feb 21, 2026
Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Draft: Added spixi_add_contact agent tool and runtime interface

Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

fix(spixi): add configSchema to plugin export for web UI visibility

fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

chore(spixi): simplify Spixi Wallet label in onboarding

feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

feat(spixi): finalize integration, fix message dispatch

fix(gateway): implement session persistence and reply loop for channels

fix(gateway): populate session defaults (model, policy) for new channel sessions

fix(gateway): enforce allow sendPolicy and add logging for channel sessions

fix(spixi): expose sendMessage capability and improve session type safety

fix(spixi): refactor startAccount lifecycle to prevent zombie connections

feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

fix(spixi): address code review comments (gateway imports, reply routing, account config)

Fix duplicate SpixiConfigSchema identifier and sync with upstream

Feat/spixi (#1)

* Draft: Added spixi_add_contact agent tool and runtime interface

* Complete Native Spixi Plugin: Added account resolution, MQTT listener, and QuIXI API integration

* Security & UX: Added configuration schema with dependency warnings for QuIXI and MQTT

* Plugin Evolution: Implemented inbound relay logic and added QuIXI repo link to settings

* Draft: Integrated Spixi as a first-class channel. Added core registry metadata, configuration types, and Zod schemas.

* Fix build errors: resolve Spixi identifier conflict and add spixi to DOCKS

* fix(spixi): add configSchema to plugin manifest

Fixes 'plugin manifest requires configSchema' error by adding:
- channels field to identify spixi as a channel plugin
- configSchema with JSON Schema for all Spixi config options

* fix(spixi): enable plugin discovery and remove unused field

- Add openclaw.extensions to package.json for plugin discovery
- Add type: module to match other plugins
- Remove unused openclawRecipient field from config schema

* feat(spixi): add onboarding support for TUI setup wizard

- Create onboarding.ts with full adapter (getStatus, configure, dmPolicy)
- Add onboarding property to spixiPlugin in channel.ts
- Prompts for MQTT host/port, QuIXI API URL, and wallet address

* feat(spixi): implement QuIXI API and add documentation

- Fix runtime.ts to use GET requests per QuIXI API docs
- Add setSpixiBaseUrl() for configurable API URL
- Wire up quixiApiUrl from config in gateway startup
- Replace WHY_SPIXI.md with professional README.md
- Add setup instructions, configuration reference, architecture diagram

* fix(spixi): add configSchema to plugin export for web UI visibility

* fix(spixi): add openclaw.channel metadata for UI catalog visibility

- Add channel block to package.json with id, label, selectionLabel, etc.
- This is required for the channel to appear in the web UI

* fix(spixi): add configured field and isConfigured for UI visibility

- Add configured field to ResolvedSpixiAccount type
- Calculate configured based on mqttHost/quixiApiUrl/myWalletAddress
- Add isConfigured to config block so channel shows in UI when unconfigured

* fix(spixi): remove catalog channel metadata to fix npm install prompt

Spixi is already in CHAT_CHANNEL_ORDER as a core channel.
The openclaw.channel block was causing it to appear in the npm
install catalog, triggering incorrect npm install prompts during
onboarding.

* feat(spixi): add installation links to onboarding prerequisites

- Add Mosquitto and Aedes MQTT broker links
- Add QuIXI GitHub link
- Add Spixi wallet download link

* chore(spixi): simplify Spixi Wallet label in onboarding

* feat(spixi): auto-sync friends from allowFrom on gateway start

- Add getFriendList API to fetch contacts from QuIXI
- On gateway start, compare allowFrom with existing friends
- Auto-send friend requests for missing contacts
- Log sync status for debugging

* fix(spixi): correct QuIXI API endpoint to /contacts and add debug logging

- Change getFriendList from /getContactList to /contacts
- Add debug logging to startAccount for troubleshooting

* feat(spixi): implement friend request handling via MQTT and API

- Add MQTT listeners for RequestAdd2/AcceptAdd2
- Implement auto-accept for allowed contacts
- Add acceptContact API and agent tool
- Fix getFriendList to use /contacts endpoint

* fix(spixi): ensure runtime API methods are always attached

- Fix getSpixiRuntime to attach sendMessage/addContact/etc methods even if runtime is already initialized
- Remove temporary debug logging from accounts.ts

* feat(spixi): finalize integration, fix message dispatch

* fix(gateway): implement session persistence and reply loop for channels

* fix(gateway): populate session defaults (model, policy) for new channel sessions

* fix(gateway): enforce allow sendPolicy and add logging for channel sessions

* fix(spixi): expose sendMessage capability and improve session type safety

* fix(spixi): refactor startAccount lifecycle to prevent zombie connections

* feat: Standardize Spixi's default MQTT port to 1883 and refine its channel registry labels and blurb.

* fix(spixi): address code review comments (gateway imports, reply routing, account config)

* fix: enforce owner allowlist for commands

* fix: infer --auth-choice from API key flags during non-interactive onboarding (openclaw#9241)

* fix: infer --auth-choice from API key flags during non-interactive onboarding

When --anthropic-api-key (or other provider key flags) is passed without
an explicit --auth-choice, the auth choice defaults to "skip", silently
discarding the API key. This means the gateway starts without credentials
and fails on every inbound message with "No API key found for provider".

Add inferAuthChoiceFromFlags() to derive the correct auth choice from
whichever provider API key flag was supplied, so credentials are persisted
to auth-profiles.json as expected.

Fixes openclaw#8481

* fix: infer auth choice from API key flags (openclaw#8484) (thanks @f-trycua)

* refactor: centralize auth choice inference flags (openclaw#8484) (thanks @f-trycua)

---------

Co-authored-by: f-trycua <[email protected]>

* Fix duplicate SpixiConfigSchema identifier and sync with upstream

---------

Co-authored-by: Prometheus (The Mayor) <[email protected]>
Co-authored-by: Yogabook <yogabook@local>
Co-authored-by: subsubl <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: Gustavo Madeira Santana <[email protected]>
Co-authored-by: f-trycua <[email protected]>

fixes

updated pnpm-lock.yaml

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

fixes

pnpm-lock.yaml update

pnpm-lock.yaml update

pnpm-lock.yaml update

rebase fixes

Update src/config/types.spixi.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update src/gateway/server.impl.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

Update extensions/spixi/src/channel.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
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.

3 participants