Merged
Conversation
…, and QuIXI API integration
…o link to settings
… 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
…annel registry labels and blurb.
…ing, account config)
…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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.