fengming 0.3.10 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-info.json +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli/run-main.js +3 -3
- package/dist/cli-startup-metadata.json +8 -8
- package/dist/{command-registry-DMB-HKIk.js → command-registry-BHIBvpgR.js} +2 -2
- package/dist/{command-registry-C5ooX6PF.js → command-registry-BT5icv-c.js} +2 -2
- package/dist/{command-registry-core-B2w_XWvn.js → command-registry-core-C-a3GaYV.js} +2 -2
- package/dist/{completion-cli-Bf4mEw2W.js → completion-cli-BUfFF31m.js} +2 -2
- package/dist/control-ui/assets/{activity-D-mnRThU.js → activity-DF1iC1pF.js} +2 -2
- package/dist/control-ui/assets/{agents-U_KSP5I_.js → agents-CDGNJA8n.js} +2 -2
- package/dist/control-ui/assets/{channels-ohK9_G1O.js → channels-CAPFdCrE.js} +2 -2
- package/dist/control-ui/assets/{cron-6ZCzfU29.js → cron-DUUdUzzu.js} +2 -2
- package/dist/control-ui/assets/{debug-CSsDLg_s.js → debug-BwfVXGKK.js} +2 -2
- package/dist/control-ui/assets/{index-jUDczxhd.js → index-JWV4rMUy.js} +4 -4
- package/dist/control-ui/assets/{instances-782ZoDT4.js → instances-BqAPpn0Y.js} +2 -2
- package/dist/control-ui/assets/{nodes-BMX16BKM.js → nodes-gya-0PkG.js} +2 -2
- package/dist/control-ui/assets/{sessions-jLGSApYa.js → sessions-BdttyTpI.js} +2 -2
- package/dist/control-ui/assets/{skills-DweBwUhs.js → skills-D_rtwBjc.js} +2 -2
- package/dist/control-ui/assets/{workboard-BsU-FXIo.js → workboard-CIGDGkWB.js} +2 -2
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/sw.js +1 -1
- package/dist/crestodian/crestodian.js +1 -1
- package/dist/crestodian/rescue-message.js +1 -1
- package/dist/{crestodian-C0x7JjF-.js → crestodian-CAxGCgHM.js} +3 -3
- package/dist/{dialogue-No0NvYX7.js → dialogue-CHuN9qet.js} +1 -1
- package/dist/gateway/protocol/index.d.ts +1 -1
- package/dist/{index-AZzJCgph.d.ts → index-DbpfOFUf.d.ts} +1 -1
- package/dist/{operations-Z85LFqsT.js → operations-Mvnrndji.js} +1 -1
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/plugin-sdk/{agent-harness-runtime-CgQiThzm.d.ts → agent-harness-runtime-Bkrjji63.d.ts} +2 -2
- package/dist/plugin-sdk/agent-harness-runtime.d.ts +4 -4
- package/dist/plugin-sdk/agent-harness-task-runtime.d.ts +1 -1
- package/dist/plugin-sdk/agent-harness.d.ts +4 -4
- package/dist/plugin-sdk/agent-runtime.d.ts +1 -1
- package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-ZTBQez8k.d.ts} +9 -9
- package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +1 -1
- package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +1 -1
- package/dist/plugin-sdk/channel-core.d.ts +2 -2
- package/dist/plugin-sdk/channel-entry-contract.d.ts +1 -1
- package/dist/plugin-sdk/{channel-pairing-CX6ncj1r.d.ts → channel-pairing-CzsPAHgH.d.ts} +1 -1
- package/dist/plugin-sdk/channel-pairing.d.ts +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
- package/dist/plugin-sdk/cli-backend.d.ts +1 -1
- package/dist/plugin-sdk/compat.d.ts +4 -4
- package/dist/plugin-sdk/{config-schema-DuJUjn6k.d.ts → config-schema-N64y7n8C.d.ts} +1 -1
- package/dist/plugin-sdk/config-schema.d.ts +4 -4
- package/dist/plugin-sdk/{core-CPtu2Ftl.d.ts → core-BWZB2hNB.d.ts} +1 -1
- package/dist/plugin-sdk/core.d.ts +7 -7
- package/dist/plugin-sdk/{delegate-uk6vAMkc.d.ts → delegate-o5xckIuc.d.ts} +1 -1
- package/dist/plugin-sdk/discord.d.ts +3 -3
- package/dist/plugin-sdk/{fengming-runtime-Dt2ZEVYX.d.ts → fengming-runtime-abXAXyq2.d.ts} +1 -1
- package/dist/plugin-sdk/gateway-runtime.d.ts +1 -1
- package/dist/plugin-sdk/{host-compat-CM0h9ODw.d.ts → host-compat-D2Ky8seZ.d.ts} +1 -1
- package/dist/plugin-sdk/{http-registry-BniL_epL.d.ts → http-registry-oxJbX3E-.d.ts} +2 -2
- package/dist/plugin-sdk/image-generation-core.d.ts +4 -4
- package/dist/plugin-sdk/image-generation-runtime.d.ts +3 -3
- package/dist/plugin-sdk/index.d.ts +4 -4
- package/dist/plugin-sdk/lmstudio.d.ts +1 -1
- package/dist/plugin-sdk/{loader-aELh60PE.d.ts → loader-CgJhYjxT.d.ts} +3 -3
- package/dist/plugin-sdk/{logger-BpB3--7Z.d.ts → logger-CyDIBtoX.d.ts} +1 -1
- package/dist/plugin-sdk/logging-core.d.ts +3 -3
- package/dist/plugin-sdk/memory-core-host-engine-embeddings.d.ts +2 -2
- package/dist/plugin-sdk/memory-core-host-engine-foundation.d.ts +3 -3
- package/dist/plugin-sdk/{memory-core-host-engine-storage-DYPjOQCg.d.ts → memory-core-host-engine-storage-DfW7ZqD0.d.ts} +1 -1
- package/dist/plugin-sdk/memory-core-host-engine-storage.d.ts +1 -1
- package/dist/plugin-sdk/memory-core-host-runtime-cli.d.ts +1 -1
- package/dist/plugin-sdk/memory-core-host-runtime-core.d.ts +3 -3
- package/dist/plugin-sdk/memory-core.d.ts +3 -3
- package/dist/plugin-sdk/memory-host-core.d.ts +3 -3
- package/dist/plugin-sdk/migration-runtime.d.ts +1 -1
- package/dist/plugin-sdk/migration.d.ts +1 -1
- package/dist/plugin-sdk/music-generation-core.d.ts +2 -2
- package/dist/plugin-sdk/{plugin-entry-DO9kQeTr.d.ts → plugin-entry-C9xM-ZA9.d.ts} +1 -1
- package/dist/plugin-sdk/plugin-entry.d.ts +3 -3
- package/dist/plugin-sdk/plugin-runtime.d.ts +3 -3
- package/dist/plugin-sdk/{provider-api-key-auth-DvIiojS6.d.ts → provider-api-key-auth-DOmYPTC2.d.ts} +1 -1
- package/dist/plugin-sdk/provider-auth-api-key.d.ts +4 -4
- package/dist/plugin-sdk/{provider-auth-helpers-CYkWZ0vq.d.ts → provider-auth-helpers-pqDNrZTd.d.ts} +1 -1
- package/dist/plugin-sdk/{provider-auth-input-DUV6ZTw4.d.ts → provider-auth-input-Ckt-cU4H.d.ts} +1 -1
- package/dist/plugin-sdk/provider-auth-result.d.ts +1 -1
- package/dist/plugin-sdk/provider-auth-runtime.d.ts +1 -1
- package/dist/plugin-sdk/provider-auth.d.ts +5 -5
- package/dist/plugin-sdk/provider-catalog-runtime.d.ts +2 -2
- package/dist/plugin-sdk/{provider-catalog-shared-Cm3SyFfL.d.ts → provider-catalog-shared-QvOT8Wz1.d.ts} +1 -1
- package/dist/plugin-sdk/provider-catalog-shared.d.ts +2 -2
- package/dist/plugin-sdk/provider-entry.d.ts +3 -3
- package/dist/plugin-sdk/{provider-model-shared-D5rgn7Gb.d.ts → provider-model-shared-Bnc8IMx5.d.ts} +1 -1
- package/dist/plugin-sdk/provider-model-shared.d.ts +2 -2
- package/dist/plugin-sdk/{provider-registry-DxdZT9UN.d.ts → provider-registry-Ba1nNfhA.d.ts} +1 -1
- package/dist/plugin-sdk/{provider-registry-DiKX35tc.d.ts → provider-registry-CqB5bSAD.d.ts} +1 -1
- package/dist/plugin-sdk/{provider-registry-D0vmhPWL.d.ts → provider-registry-CxdVib8g.d.ts} +1 -1
- package/dist/plugin-sdk/{provider-self-hosted-setup-BPx7JMDC.d.ts → provider-self-hosted-setup-eMoeVPnF.d.ts} +1 -1
- package/dist/plugin-sdk/provider-setup.d.ts +2 -2
- package/dist/plugin-sdk/{provider-stream-DcC2vn_N.d.ts → provider-stream-CGaLae9n.d.ts} +1 -1
- package/dist/plugin-sdk/provider-stream-family.d.ts +2 -2
- package/dist/plugin-sdk/{provider-stream-shared-ByDv3QKm.d.ts → provider-stream-shared-u5mt-8_i.d.ts} +1 -1
- package/dist/plugin-sdk/provider-stream-shared.d.ts +1 -1
- package/dist/plugin-sdk/provider-stream.d.ts +2 -2
- package/dist/plugin-sdk/provider-tools.d.ts +1 -1
- package/dist/plugin-sdk/provider-web-fetch-contract.d.ts +1 -1
- package/dist/plugin-sdk/provider-web-fetch.d.ts +1 -1
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{provider-web-search-contract-fields-CY4v8kS-.d.ts → provider-web-search-contract-fields-BiWOSs_d.d.ts} +1 -1
- package/dist/plugin-sdk/provider-web-search-contract.d.ts +2 -2
- package/dist/plugin-sdk/provider-web-search.d.ts +1 -1
- package/dist/plugin-sdk/realtime-transcription.d.ts +1 -1
- package/dist/plugin-sdk/realtime-voice.d.ts +1 -1
- package/dist/plugin-sdk/{redact-identifier-CVwkabcI.d.ts → redact-identifier-CVqsKaEK.d.ts} +1 -1
- package/dist/plugin-sdk/{registry-CzaGoAKH.d.ts → registry-Gq9OFlb3.d.ts} +2 -2
- package/dist/plugin-sdk/{registry-types-DN1yiH3F.d.ts → registry-types-DyBkef1H.d.ts} +2 -2
- package/dist/plugin-sdk/reply-runtime.d.ts +1 -1
- package/dist/plugin-sdk/runtime-env.d.ts +3 -3
- package/dist/plugin-sdk/runtime-store.d.ts +1 -1
- package/dist/plugin-sdk/runtime.d.ts +3 -3
- package/dist/plugin-sdk/self-hosted-provider-setup.d.ts +2 -2
- package/dist/plugin-sdk/simple-completion-runtime.d.ts +1 -1
- package/dist/plugin-sdk/speech-core.d.ts +2 -2
- package/dist/plugin-sdk/speech.d.ts +2 -2
- package/dist/plugin-sdk/{subsystem-n4Y4vCcQ.d.ts → subsystem-Boo2DQIV.d.ts} +1 -1
- package/dist/plugin-sdk/text-runtime.d.ts +2 -2
- package/dist/plugin-sdk/tool-plugin.d.ts +2 -2
- package/dist/plugin-sdk/{types-BI8R-vGd.d.ts → types-DGF1KeaJ.d.ts} +2 -2
- package/dist/plugin-sdk/{types-CsqNt0j8.d.ts → types-DpaN54PS.d.ts} +1 -1
- package/dist/plugin-sdk/{unhandled-rejections-D9eBl3hT.d.ts → unhandled-rejections-Bez6JG0y.d.ts} +2 -2
- package/dist/plugin-sdk/video-generation-core.d.ts +3 -3
- package/dist/plugin-sdk/video-generation-runtime.d.ts +3 -3
- package/dist/plugin-sdk/webhook-ingress.d.ts +1 -1
- package/dist/plugin-sdk/webhook-targets.d.ts +1 -1
- package/dist/{program-D19g2jaa.js → program-BaCHjV-F.js} +1 -1
- package/dist/{register.crestodian-BhIukKDA.js → register.crestodian-DMJEPMf3.js} +1 -1
- package/dist/register.subclis-B0BgjwyK.js +3 -0
- package/dist/{register.subclis-DVk0HU4k.js → register.subclis-BuoWG93n.js} +2 -2
- package/dist/{register.subclis-core-BK7nVvl6.js → register.subclis-core-BGBFrWE3.js} +2 -2
- package/dist/{standalone-CHrieUsw.js → standalone-CV2Ud6F7.js} +1 -1
- package/dist/tui-Bvt7hhwe.js +3 -0
- package/dist/tui-CFSmzhsm.js +2 -0
- package/dist/{tui-backend-_Pn3Byj-.js → tui-backend-Bm_t5G7x.js} +4 -4
- package/dist/{tui-cli-CAiC39zd.js → tui-cli-9Ny23hmo.js} +1 -1
- package/dist/tui-ink-run-CuExfFLV.js +2 -0
- package/dist/{tui-ink-run-ChXEGj1h.js → tui-ink-run-qNL49iQn.js} +17 -1
- package/package.json +6 -410
- package/CHANGELOG.md +0 -42
- package/THIRD_PARTY_NOTICES.md +0 -37
- package/dist/register.subclis-Bsvdh8RI.js +0 -3
- package/dist/tui-C733Qov0.js +0 -2
- package/dist/tui-DqbscVN5.js +0 -3
- package/dist/tui-ink-run-D4mSfLHj.js +0 -2
- package/docs/.i18n/README.md +0 -81
- package/docs/.i18n/ar-navigation.json +0 -18
- package/docs/.i18n/de-navigation.json +0 -18
- package/docs/.i18n/es-navigation.json +0 -18
- package/docs/.i18n/fr-navigation.json +0 -18
- package/docs/.i18n/glossary.ar.json +0 -78
- package/docs/.i18n/glossary.de.json +0 -78
- package/docs/.i18n/glossary.es.json +0 -78
- package/docs/.i18n/glossary.fa.json +0 -78
- package/docs/.i18n/glossary.fr.json +0 -78
- package/docs/.i18n/glossary.id.json +0 -78
- package/docs/.i18n/glossary.it.json +0 -78
- package/docs/.i18n/glossary.ja-JP.json +0 -98
- package/docs/.i18n/glossary.ko.json +0 -78
- package/docs/.i18n/glossary.nl.json +0 -78
- package/docs/.i18n/glossary.pl.json +0 -78
- package/docs/.i18n/glossary.pt-BR.json +0 -78
- package/docs/.i18n/glossary.th.json +0 -78
- package/docs/.i18n/glossary.tr.json +0 -78
- package/docs/.i18n/glossary.uk.json +0 -78
- package/docs/.i18n/glossary.vi.json +0 -78
- package/docs/.i18n/glossary.zh-CN.json +0 -1122
- package/docs/.i18n/glossary.zh-TW.json +0 -78
- package/docs/.i18n/id-navigation.json +0 -18
- package/docs/.i18n/it-navigation.json +0 -18
- package/docs/.i18n/ja-navigation.json +0 -18
- package/docs/.i18n/ko-navigation.json +0 -18
- package/docs/.i18n/pl-navigation.json +0 -18
- package/docs/.i18n/pt-BR-navigation.json +0 -18
- package/docs/.i18n/tr-navigation.json +0 -18
- package/docs/.i18n/translation-workflow.md +0 -111
- package/docs/.i18n/zh-Hans-navigation.json +0 -552
- package/docs/AGENTS.md +0 -36
- package/docs/CLAUDE.md +0 -1
- package/docs/agent-runtime-architecture.md +0 -48
- package/docs/announcements/bluebubbles-imessage.md +0 -79
- package/docs/auth-credential-semantics.md +0 -124
- package/docs/automation/auth-monitoring.md +0 -11
- package/docs/automation/clawflow.md +0 -12
- package/docs/automation/cron-jobs.md +0 -534
- package/docs/automation/cron-vs-heartbeat.md +0 -11
- package/docs/automation/gmail-pubsub.md +0 -11
- package/docs/automation/hooks.md +0 -387
- package/docs/automation/index.md +0 -135
- package/docs/automation/poll.md +0 -12
- package/docs/automation/standing-orders.md +0 -250
- package/docs/automation/taskflow.md +0 -155
- package/docs/automation/tasks.md +0 -374
- package/docs/automation/troubleshooting.md +0 -12
- package/docs/automation/webhook.md +0 -12
- package/docs/brave-search.md +0 -11
- package/docs/channels/access-groups.md +0 -201
- package/docs/channels/ambient-room-events.md +0 -214
- package/docs/channels/bot-loop-protection.md +0 -131
- package/docs/channels/broadcast-groups.md +0 -472
- package/docs/channels/channel-routing.md +0 -162
- package/docs/channels/clickclack.md +0 -138
- package/docs/channels/discord.md +0 -1758
- package/docs/channels/feishu.md +0 -650
- package/docs/channels/googlechat.md +0 -284
- package/docs/channels/group-messages.md +0 -95
- package/docs/channels/groups.md +0 -524
- package/docs/channels/imessage-from-bluebubbles.md +0 -259
- package/docs/channels/imessage.md +0 -839
- package/docs/channels/index.md +0 -64
- package/docs/channels/irc.md +0 -253
- package/docs/channels/line.md +0 -243
- package/docs/channels/location.md +0 -71
- package/docs/channels/matrix-migration.md +0 -370
- package/docs/channels/matrix-presentation.md +0 -77
- package/docs/channels/matrix-push-rules.md +0 -150
- package/docs/channels/matrix.md +0 -921
- package/docs/channels/mattermost.md +0 -542
- package/docs/channels/msteams.md +0 -1096
- package/docs/channels/nextcloud-talk.md +0 -176
- package/docs/channels/nostr.md +0 -253
- package/docs/channels/pairing.md +0 -214
- package/docs/channels/qqbot.md +0 -314
- package/docs/channels/signal.md +0 -417
- package/docs/channels/slack.md +0 -1623
- package/docs/channels/synology-chat.md +0 -187
- package/docs/channels/telegram.md +0 -1124
- package/docs/channels/tlon.md +0 -296
- package/docs/channels/troubleshooting.md +0 -162
- package/docs/channels/twitch.md +0 -431
- package/docs/channels/wechat.md +0 -171
- package/docs/channels/whatsapp.md +0 -796
- package/docs/channels/yuanbao.md +0 -416
- package/docs/channels/zalo.md +0 -253
- package/docs/channels/zalouser.md +0 -217
- package/docs/ci.md +0 -657
- package/docs/clawhub/publishing.md +0 -96
- package/docs/cli/acp.md +0 -370
- package/docs/cli/agent.md +0 -109
- package/docs/cli/agents.md +0 -253
- package/docs/cli/approvals.md +0 -190
- package/docs/cli/backup.md +0 -98
- package/docs/cli/browser.md +0 -307
- package/docs/cli/channels.md +0 -154
- package/docs/cli/clawbot.md +0 -25
- package/docs/cli/commitments.md +0 -90
- package/docs/cli/completion.md +0 -39
- package/docs/cli/config.md +0 -504
- package/docs/cli/configure.md +0 -77
- package/docs/cli/crestodian.md +0 -337
- package/docs/cli/cron.md +0 -304
- package/docs/cli/daemon.md +0 -67
- package/docs/cli/dashboard.md +0 -33
- package/docs/cli/devices.md +0 -240
- package/docs/cli/directory.md +0 -68
- package/docs/cli/dns.md +0 -53
- package/docs/cli/docs.md +0 -63
- package/docs/cli/doctor.md +0 -241
- package/docs/cli/flows.md +0 -52
- package/docs/cli/gateway.md +0 -572
- package/docs/cli/health.md +0 -43
- package/docs/cli/hooks.md +0 -345
- package/docs/cli/index.md +0 -400
- package/docs/cli/infer.md +0 -364
- package/docs/cli/logs.md +0 -68
- package/docs/cli/mcp.md +0 -529
- package/docs/cli/memory.md +0 -183
- package/docs/cli/message.md +0 -317
- package/docs/cli/migrate.md +0 -334
- package/docs/cli/models.md +0 -239
- package/docs/cli/node.md +0 -177
- package/docs/cli/nodes.md +0 -76
- package/docs/cli/onboard.md +0 -250
- package/docs/cli/pairing.md +0 -77
- package/docs/cli/path.md +0 -511
- package/docs/cli/plugins.md +0 -459
- package/docs/cli/policy.md +0 -886
- package/docs/cli/proxy.md +0 -89
- package/docs/cli/qr.md +0 -56
- package/docs/cli/reset.md +0 -39
- package/docs/cli/sandbox.md +0 -208
- package/docs/cli/secrets.md +0 -202
- package/docs/cli/security.md +0 -136
- package/docs/cli/sessions.md +0 -164
- package/docs/cli/setup.md +0 -59
- package/docs/cli/skills.md +0 -122
- package/docs/cli/status.md +0 -45
- package/docs/cli/system.md +0 -89
- package/docs/cli/tasks.md +0 -111
- package/docs/cli/transcripts.md +0 -151
- package/docs/cli/tui.md +0 -91
- package/docs/cli/uninstall.md +0 -44
- package/docs/cli/update.md +0 -243
- package/docs/cli/voicecall.md +0 -204
- package/docs/cli/webhooks.md +0 -117
- package/docs/cli/wiki.md +0 -256
- package/docs/concepts/active-memory.md +0 -856
- package/docs/concepts/agent-loop.md +0 -185
- package/docs/concepts/agent-runtimes.md +0 -276
- package/docs/concepts/agent-workspace.md +0 -230
- package/docs/concepts/agent.md +0 -140
- package/docs/concepts/architecture.md +0 -154
- package/docs/concepts/channel-docking.md +0 -145
- package/docs/concepts/commitments.md +0 -150
- package/docs/concepts/compaction.md +0 -203
- package/docs/concepts/context-engine.md +0 -347
- package/docs/concepts/context.md +0 -199
- package/docs/concepts/delegate-architecture.md +0 -319
- package/docs/concepts/dreaming.md +0 -264
- package/docs/concepts/experimental-features.md +0 -109
- package/docs/concepts/features.md +0 -91
- package/docs/concepts/fengming-sdk.md +0 -323
- package/docs/concepts/mantis-slack-desktop-runbook.md +0 -231
- package/docs/concepts/mantis.md +0 -744
- package/docs/concepts/markdown-formatting.md +0 -139
- package/docs/concepts/memory-builtin.md +0 -148
- package/docs/concepts/memory-honcho.md +0 -144
- package/docs/concepts/memory-qmd.md +0 -271
- package/docs/concepts/memory-search.md +0 -167
- package/docs/concepts/memory.md +0 -299
- package/docs/concepts/message-lifecycle-refactor.md +0 -1126
- package/docs/concepts/messages.md +0 -214
- package/docs/concepts/model-failover.md +0 -384
- package/docs/concepts/model-providers.md +0 -719
- package/docs/concepts/models.md +0 -371
- package/docs/concepts/multi-agent.md +0 -625
- package/docs/concepts/oauth.md +0 -198
- package/docs/concepts/parallel-specialist-lanes.md +0 -127
- package/docs/concepts/personal-agent-benchmark-pack.md +0 -74
- package/docs/concepts/presence.md +0 -117
- package/docs/concepts/progress-drafts.md +0 -406
- package/docs/concepts/qa-e2e-automation.md +0 -947
- package/docs/concepts/qa-matrix.md +0 -139
- package/docs/concepts/queue-steering.md +0 -90
- package/docs/concepts/queue.md +0 -136
- package/docs/concepts/retry.md +0 -86
- package/docs/concepts/session-pruning.md +0 -104
- package/docs/concepts/session-tool.md +0 -188
- package/docs/concepts/session.md +0 -164
- package/docs/concepts/soul.md +0 -116
- package/docs/concepts/streaming.md +0 -257
- package/docs/concepts/system-prompt.md +0 -328
- package/docs/concepts/timezone.md +0 -47
- package/docs/concepts/typebox.md +0 -309
- package/docs/concepts/typing-indicators.md +0 -88
- package/docs/concepts/usage-tracking.md +0 -66
- package/docs/date-time.md +0 -126
- package/docs/debug/node-issue.md +0 -90
- package/docs/diagnostics/flags.md +0 -182
- package/docs/docs.json +0 -1862
- package/docs/fengming-agent-runtime.md +0 -82
- package/docs/gateway/authentication.md +0 -256
- package/docs/gateway/background-process.md +0 -147
- package/docs/gateway/bonjour.md +0 -303
- package/docs/gateway/bridge-protocol.md +0 -97
- package/docs/gateway/cli-backends.md +0 -439
- package/docs/gateway/config-agents.md +0 -1525
- package/docs/gateway/config-channels.md +0 -945
- package/docs/gateway/config-tools.md +0 -774
- package/docs/gateway/configuration-examples.md +0 -704
- package/docs/gateway/configuration-reference.md +0 -1391
- package/docs/gateway/configuration.md +0 -739
- package/docs/gateway/diagnostics.md +0 -213
- package/docs/gateway/discovery.md +0 -154
- package/docs/gateway/doctor.md +0 -575
- package/docs/gateway/gateway-lock.md +0 -37
- package/docs/gateway/health.md +0 -73
- package/docs/gateway/heartbeat.md +0 -498
- package/docs/gateway/index.md +0 -383
- package/docs/gateway/local-model-services.md +0 -205
- package/docs/gateway/local-models.md +0 -355
- package/docs/gateway/logging.md +0 -149
- package/docs/gateway/multiple-gateways.md +0 -178
- package/docs/gateway/network-model.md +0 -15
- package/docs/gateway/openai-http-api.md +0 -378
- package/docs/gateway/openresponses-http-api.md +0 -347
- package/docs/gateway/openshell.md +0 -316
- package/docs/gateway/opentelemetry.md +0 -433
- package/docs/gateway/operator-scopes.md +0 -119
- package/docs/gateway/pairing.md +0 -207
- package/docs/gateway/prometheus.md +0 -249
- package/docs/gateway/protocol.md +0 -826
- package/docs/gateway/remote-gateway-readme.md +0 -169
- package/docs/gateway/remote.md +0 -280
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +0 -148
- package/docs/gateway/sandboxing.md +0 -546
- package/docs/gateway/secrets-plan-contract.md +0 -159
- package/docs/gateway/secrets.md +0 -805
- package/docs/gateway/security/audit-checks.md +0 -127
- package/docs/gateway/security/exposure-runbook.md +0 -212
- package/docs/gateway/security/index.md +0 -1343
- package/docs/gateway/security/secure-file-operations.md +0 -76
- package/docs/gateway/security/shrinkwrap.md +0 -111
- package/docs/gateway/tailscale.md +0 -156
- package/docs/gateway/tools-invoke-http-api.md +0 -169
- package/docs/gateway/troubleshooting.md +0 -877
- package/docs/gateway/trusted-proxy-auth.md +0 -483
- package/docs/help/debugging.md +0 -341
- package/docs/help/environment.md +0 -233
- package/docs/help/faq-first-run.md +0 -870
- package/docs/help/faq-models.md +0 -556
- package/docs/help/faq.md +0 -2041
- package/docs/help/index.md +0 -39
- package/docs/help/scripts.md +0 -56
- package/docs/help/testing-live.md +0 -587
- package/docs/help/testing-updates-plugins.md +0 -299
- package/docs/help/testing.md +0 -977
- package/docs/help/troubleshooting.md +0 -449
- package/docs/index.md +0 -196
- package/docs/install/ansible.md +0 -233
- package/docs/install/azure.md +0 -315
- package/docs/install/bun.md +0 -59
- package/docs/install/clawdock.md +0 -112
- package/docs/install/development-channels.md +0 -148
- package/docs/install/digitalocean.md +0 -174
- package/docs/install/docker-vm-runtime.md +0 -154
- package/docs/install/docker.md +0 -564
- package/docs/install/exe-dev.md +0 -201
- package/docs/install/fly.md +0 -524
- package/docs/install/gcp.md +0 -418
- package/docs/install/hetzner.md +0 -285
- package/docs/install/hostinger.md +0 -98
- package/docs/install/index.md +0 -232
- package/docs/install/installer.md +0 -447
- package/docs/install/kubernetes.md +0 -196
- package/docs/install/macos-vm.md +0 -281
- package/docs/install/migrating-claude.md +0 -165
- package/docs/install/migrating-hermes.md +0 -178
- package/docs/install/migrating.md +0 -137
- package/docs/install/nix.md +0 -112
- package/docs/install/node.md +0 -142
- package/docs/install/northflank.mdx +0 -44
- package/docs/install/oracle.md +0 -218
- package/docs/install/podman.md +0 -216
- package/docs/install/railway.mdx +0 -92
- package/docs/install/raspberry-pi.md +0 -234
- package/docs/install/render.mdx +0 -167
- package/docs/install/uninstall.md +0 -131
- package/docs/install/updating.md +0 -284
- package/docs/install/upstash.md +0 -96
- package/docs/logging.md +0 -320
- package/docs/nav-tabs-underline.js +0 -100
- package/docs/network.md +0 -72
- package/docs/nodes/audio.md +0 -216
- package/docs/nodes/camera.md +0 -166
- package/docs/nodes/images.md +0 -77
- package/docs/nodes/index.md +0 -439
- package/docs/nodes/location-command.md +0 -102
- package/docs/nodes/media-understanding.md +0 -495
- package/docs/nodes/talk.md +0 -160
- package/docs/nodes/troubleshooting.md +0 -123
- package/docs/nodes/voicewake.md +0 -93
- package/docs/perplexity.md +0 -11
- package/docs/plan/codex-context-engine-harness.md +0 -624
- package/docs/plan/ui-channels.md +0 -284
- package/docs/platforms/digitalocean.md +0 -12
- package/docs/platforms/easyrunner.md +0 -109
- package/docs/platforms/index.md +0 -51
- package/docs/platforms/linux.md +0 -141
- package/docs/platforms/mac/bundled-gateway.md +0 -79
- package/docs/platforms/mac/canvas.md +0 -128
- package/docs/platforms/mac/child-process.md +0 -72
- package/docs/platforms/mac/dev-setup.md +0 -112
- package/docs/platforms/mac/health.md +0 -39
- package/docs/platforms/mac/icon.md +0 -36
- package/docs/platforms/mac/logging.md +0 -62
- package/docs/platforms/mac/menu-bar.md +0 -93
- package/docs/platforms/mac/peekaboo.md +0 -96
- package/docs/platforms/mac/permissions.md +0 -73
- package/docs/platforms/mac/remote.md +0 -123
- package/docs/platforms/mac/signing.md +0 -52
- package/docs/platforms/mac/skills.md +0 -43
- package/docs/platforms/mac/voice-overlay.md +0 -66
- package/docs/platforms/mac/voicewake.md +0 -73
- package/docs/platforms/mac/webchat.md +0 -54
- package/docs/platforms/mac/xpc.md +0 -66
- package/docs/platforms/oracle.md +0 -12
- package/docs/platforms/raspberry-pi.md +0 -13
- package/docs/platforms/windows.md +0 -286
- package/docs/plugins/adding-capabilities.md +0 -146
- package/docs/plugins/admin-http-rpc.md +0 -216
- package/docs/plugins/agent-tools.md +0 -13
- package/docs/plugins/architecture-internals.md +0 -1196
- package/docs/plugins/architecture.md +0 -483
- package/docs/plugins/building-extensions.md +0 -13
- package/docs/plugins/building-plugins.md +0 -335
- package/docs/plugins/bundles.md +0 -310
- package/docs/plugins/cli-backend-plugins.md +0 -310
- package/docs/plugins/codex-computer-use.md +0 -297
- package/docs/plugins/codex-harness-reference.md +0 -470
- package/docs/plugins/codex-harness-runtime.md +0 -268
- package/docs/plugins/codex-harness.md +0 -780
- package/docs/plugins/codex-native-plugins.md +0 -276
- package/docs/plugins/community.md +0 -77
- package/docs/plugins/compatibility.md +0 -167
- package/docs/plugins/copilot.md +0 -356
- package/docs/plugins/dependency-resolution.md +0 -176
- package/docs/plugins/google-meet.md +0 -1737
- package/docs/plugins/hooks.md +0 -484
- package/docs/plugins/install-overrides.md +0 -80
- package/docs/plugins/manage-plugins.md +0 -210
- package/docs/plugins/manifest.md +0 -1457
- package/docs/plugins/memory-lancedb.md +0 -385
- package/docs/plugins/memory-wiki.md +0 -529
- package/docs/plugins/message-presentation.md +0 -473
- package/docs/plugins/oc-path.md +0 -166
- package/docs/plugins/plugin-inventory.md +0 -189
- package/docs/plugins/plugin-permission-requests.md +0 -193
- package/docs/plugins/reference/acpx.md +0 -23
- package/docs/plugins/reference/admin-http-rpc.md +0 -23
- package/docs/plugins/reference/alibaba.md +0 -23
- package/docs/plugins/reference/amazon-bedrock-mantle.md +0 -23
- package/docs/plugins/reference/amazon-bedrock.md +0 -23
- package/docs/plugins/reference/anthropic-vertex.md +0 -19
- package/docs/plugins/reference/anthropic.md +0 -23
- package/docs/plugins/reference/arcee.md +0 -23
- package/docs/plugins/reference/azure-speech.md +0 -23
- package/docs/plugins/reference/bonjour.md +0 -19
- package/docs/plugins/reference/brave.md +0 -23
- package/docs/plugins/reference/browser.md +0 -23
- package/docs/plugins/reference/byteplus.md +0 -19
- package/docs/plugins/reference/canvas.md +0 -19
- package/docs/plugins/reference/cerebras.md +0 -23
- package/docs/plugins/reference/chutes.md +0 -23
- package/docs/plugins/reference/clickclack.md +0 -23
- package/docs/plugins/reference/cloudflare-ai-gateway.md +0 -23
- package/docs/plugins/reference/codex-supervisor.md +0 -27
- package/docs/plugins/reference/codex.md +0 -23
- package/docs/plugins/reference/comfy.md +0 -23
- package/docs/plugins/reference/copilot-proxy.md +0 -19
- package/docs/plugins/reference/copilot.md +0 -23
- package/docs/plugins/reference/deepgram.md +0 -23
- package/docs/plugins/reference/deepinfra.md +0 -23
- package/docs/plugins/reference/deepseek.md +0 -23
- package/docs/plugins/reference/diagnostics-otel.md +0 -19
- package/docs/plugins/reference/diagnostics-prometheus.md +0 -19
- package/docs/plugins/reference/diffs-language-pack.md +0 -19
- package/docs/plugins/reference/diffs.md +0 -19
- package/docs/plugins/reference/discord.md +0 -23
- package/docs/plugins/reference/document-extract.md +0 -23
- package/docs/plugins/reference/duckduckgo.md +0 -23
- package/docs/plugins/reference/elevenlabs.md +0 -23
- package/docs/plugins/reference/exa.md +0 -23
- package/docs/plugins/reference/fal.md +0 -23
- package/docs/plugins/reference/feishu.md +0 -23
- package/docs/plugins/reference/file-transfer.md +0 -19
- package/docs/plugins/reference/firecrawl.md +0 -23
- package/docs/plugins/reference/fireworks.md +0 -23
- package/docs/plugins/reference/github-copilot.md +0 -23
- package/docs/plugins/reference/gmi.md +0 -23
- package/docs/plugins/reference/google-meet.md +0 -23
- package/docs/plugins/reference/google.md +0 -23
- package/docs/plugins/reference/googlechat.md +0 -23
- package/docs/plugins/reference/gradium.md +0 -23
- package/docs/plugins/reference/groq.md +0 -23
- package/docs/plugins/reference/huggingface.md +0 -23
- package/docs/plugins/reference/imessage.md +0 -23
- package/docs/plugins/reference/inworld.md +0 -23
- package/docs/plugins/reference/irc.md +0 -23
- package/docs/plugins/reference/kilocode.md +0 -23
- package/docs/plugins/reference/kimi.md +0 -23
- package/docs/plugins/reference/line.md +0 -23
- package/docs/plugins/reference/litellm.md +0 -23
- package/docs/plugins/reference/llm-task.md +0 -19
- package/docs/plugins/reference/lmstudio.md +0 -23
- package/docs/plugins/reference/lobster.md +0 -19
- package/docs/plugins/reference/matrix.md +0 -23
- package/docs/plugins/reference/mattermost.md +0 -23
- package/docs/plugins/reference/memory-core.md +0 -19
- package/docs/plugins/reference/memory-lancedb.md +0 -23
- package/docs/plugins/reference/memory-wiki.md +0 -23
- package/docs/plugins/reference/microsoft-foundry.md +0 -19
- package/docs/plugins/reference/microsoft.md +0 -19
- package/docs/plugins/reference/migrate-claude.md +0 -19
- package/docs/plugins/reference/migrate-hermes.md +0 -19
- package/docs/plugins/reference/minimax.md +0 -23
- package/docs/plugins/reference/mistral.md +0 -23
- package/docs/plugins/reference/moonshot.md +0 -23
- package/docs/plugins/reference/msteams.md +0 -23
- package/docs/plugins/reference/nextcloud-talk.md +0 -23
- package/docs/plugins/reference/nostr.md +0 -23
- package/docs/plugins/reference/novita.md +0 -23
- package/docs/plugins/reference/nvidia.md +0 -23
- package/docs/plugins/reference/oc-path.md +0 -23
- package/docs/plugins/reference/ollama.md +0 -23
- package/docs/plugins/reference/open-prose.md +0 -19
- package/docs/plugins/reference/openai.md +0 -23
- package/docs/plugins/reference/opencode-go.md +0 -23
- package/docs/plugins/reference/opencode.md +0 -23
- package/docs/plugins/reference/openrouter.md +0 -23
- package/docs/plugins/reference/openshell.md +0 -19
- package/docs/plugins/reference/perplexity.md +0 -23
- package/docs/plugins/reference/pixverse.md +0 -23
- package/docs/plugins/reference/policy.md +0 -72
- package/docs/plugins/reference/qa-channel.md +0 -23
- package/docs/plugins/reference/qa-lab.md +0 -19
- package/docs/plugins/reference/qa-matrix.md +0 -19
- package/docs/plugins/reference/qianfan.md +0 -23
- package/docs/plugins/reference/qqbot.md +0 -23
- package/docs/plugins/reference/qwen.md +0 -23
- package/docs/plugins/reference/runway.md +0 -23
- package/docs/plugins/reference/searxng.md +0 -19
- package/docs/plugins/reference/senseaudio.md +0 -23
- package/docs/plugins/reference/sglang.md +0 -23
- package/docs/plugins/reference/signal.md +0 -23
- package/docs/plugins/reference/skill-workshop.md +0 -23
- package/docs/plugins/reference/slack.md +0 -23
- package/docs/plugins/reference/stepfun.md +0 -23
- package/docs/plugins/reference/synology-chat.md +0 -23
- package/docs/plugins/reference/synthetic.md +0 -23
- package/docs/plugins/reference/tavily.md +0 -23
- package/docs/plugins/reference/telegram.md +0 -23
- package/docs/plugins/reference/tencent.md +0 -23
- package/docs/plugins/reference/tlon.md +0 -23
- package/docs/plugins/reference/together.md +0 -23
- package/docs/plugins/reference/tokenjuice.md +0 -23
- package/docs/plugins/reference/tts-local-cli.md +0 -19
- package/docs/plugins/reference/twitch.md +0 -23
- package/docs/plugins/reference/venice.md +0 -23
- package/docs/plugins/reference/vercel-ai-gateway.md +0 -23
- package/docs/plugins/reference/vllm.md +0 -23
- package/docs/plugins/reference/voice-call.md +0 -23
- package/docs/plugins/reference/volcengine.md +0 -23
- package/docs/plugins/reference/voyage.md +0 -19
- package/docs/plugins/reference/vydra.md +0 -23
- package/docs/plugins/reference/web-readability.md +0 -19
- package/docs/plugins/reference/webhooks.md +0 -23
- package/docs/plugins/reference/whatsapp.md +0 -23
- package/docs/plugins/reference/workboard.md +0 -23
- package/docs/plugins/reference/xai.md +0 -23
- package/docs/plugins/reference/xiaomi.md +0 -23
- package/docs/plugins/reference/zai.md +0 -23
- package/docs/plugins/reference/zalo.md +0 -23
- package/docs/plugins/reference/zalouser.md +0 -24
- package/docs/plugins/reference.md +0 -145
- package/docs/plugins/sdk-agent-harness.md +0 -338
- package/docs/plugins/sdk-channel-inbound.md +0 -70
- package/docs/plugins/sdk-channel-ingress.md +0 -137
- package/docs/plugins/sdk-channel-message.md +0 -18
- package/docs/plugins/sdk-channel-outbound.md +0 -113
- package/docs/plugins/sdk-channel-plugins.md +0 -765
- package/docs/plugins/sdk-channel-turn.md +0 -9
- package/docs/plugins/sdk-entrypoints.md +0 -344
- package/docs/plugins/sdk-migration.md +0 -979
- package/docs/plugins/sdk-overview.md +0 -511
- package/docs/plugins/sdk-provider-plugins.md +0 -846
- package/docs/plugins/sdk-runtime.md +0 -676
- package/docs/plugins/sdk-setup.md +0 -550
- package/docs/plugins/sdk-subpaths.md +0 -391
- package/docs/plugins/sdk-testing.md +0 -403
- package/docs/plugins/skill-workshop.md +0 -713
- package/docs/plugins/tool-plugins.md +0 -411
- package/docs/plugins/voice-call.md +0 -942
- package/docs/plugins/webhooks.md +0 -192
- package/docs/plugins/workboard.md +0 -252
- package/docs/plugins/zalouser.md +0 -86
- package/docs/prose.md +0 -137
- package/docs/providers/alibaba.md +0 -158
- package/docs/providers/anthropic.md +0 -381
- package/docs/providers/arcee.md +0 -144
- package/docs/providers/azure-speech.md +0 -119
- package/docs/providers/bedrock-mantle.md +0 -211
- package/docs/providers/bedrock.md +0 -414
- package/docs/providers/cerebras.md +0 -130
- package/docs/providers/chutes.md +0 -153
- package/docs/providers/claude-max-api-proxy.md +0 -191
- package/docs/providers/cloudflare-ai-gateway.md +0 -119
- package/docs/providers/comfy.md +0 -362
- package/docs/providers/deepgram.md +0 -184
- package/docs/providers/deepinfra.md +0 -92
- package/docs/providers/deepseek.md +0 -146
- package/docs/providers/ds4.md +0 -309
- package/docs/providers/elevenlabs.md +0 -130
- package/docs/providers/fal.md +0 -240
- package/docs/providers/fireworks.md +0 -144
- package/docs/providers/github-copilot.md +0 -257
- package/docs/providers/gmi.md +0 -92
- package/docs/providers/google.md +0 -472
- package/docs/providers/gradium.md +0 -123
- package/docs/providers/groq.md +0 -171
- package/docs/providers/huggingface.md +0 -235
- package/docs/providers/index.md +0 -105
- package/docs/providers/inferrs.md +0 -272
- package/docs/providers/inworld.md +0 -120
- package/docs/providers/kilocode.md +0 -135
- package/docs/providers/litellm.md +0 -234
- package/docs/providers/lmstudio.md +0 -224
- package/docs/providers/minimax.md +0 -505
- package/docs/providers/mistral.md +0 -235
- package/docs/providers/models.md +0 -64
- package/docs/providers/moonshot.md +0 -413
- package/docs/providers/novita.md +0 -92
- package/docs/providers/nvidia.md +0 -158
- package/docs/providers/ollama-cloud.md +0 -115
- package/docs/providers/ollama.md +0 -1225
- package/docs/providers/openai.md +0 -1093
- package/docs/providers/opencode-go.md +0 -123
- package/docs/providers/opencode.md +0 -149
- package/docs/providers/openrouter.md +0 -349
- package/docs/providers/perplexity-provider.md +0 -123
- package/docs/providers/pixverse.md +0 -165
- package/docs/providers/qianfan.md +0 -132
- package/docs/providers/qwen-oauth.md +0 -115
- package/docs/providers/qwen.md +0 -364
- package/docs/providers/runway.md +0 -103
- package/docs/providers/senseaudio.md +0 -68
- package/docs/providers/sglang.md +0 -161
- package/docs/providers/stepfun.md +0 -229
- package/docs/providers/synthetic.md +0 -154
- package/docs/providers/tencent.md +0 -130
- package/docs/providers/together.md +0 -140
- package/docs/providers/venice.md +0 -312
- package/docs/providers/vercel-ai-gateway.md +0 -128
- package/docs/providers/vllm.md +0 -407
- package/docs/providers/volcengine.md +0 -199
- package/docs/providers/vydra.md +0 -180
- package/docs/providers/xai.md +0 -571
- package/docs/providers/xiaomi.md +0 -262
- package/docs/providers/zai.md +0 -224
- package/docs/refactor/access.md +0 -9
- package/docs/refactor/acp.md +0 -298
- package/docs/refactor/canvas.md +0 -131
- package/docs/refactor/database-first.md +0 -2256
- package/docs/refactor/ingress-core.md +0 -341
- package/docs/reference/AGENTS.default.md +0 -131
- package/docs/reference/RELEASING.md +0 -799
- package/docs/reference/api-usage-costs.md +0 -208
- package/docs/reference/application-modernization-plan.md +0 -208
- package/docs/reference/code-mode.md +0 -773
- package/docs/reference/credits.md +0 -33
- package/docs/reference/device-models.md +0 -50
- package/docs/reference/fengming-sdk-api-design.md +0 -390
- package/docs/reference/full-release-validation.md +0 -202
- package/docs/reference/memory-config.md +0 -604
- package/docs/reference/prompt-caching.md +0 -358
- package/docs/reference/release-performance-sweep.md +0 -360
- package/docs/reference/rich-output-protocol.md +0 -101
- package/docs/reference/rpc.md +0 -43
- package/docs/reference/secret-placeholder-conventions.md +0 -33
- package/docs/reference/secretref-credential-surface.md +0 -159
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +0 -663
- package/docs/reference/session-management-compaction.md +0 -474
- package/docs/reference/templates/AGENTS.dev.md +0 -90
- package/docs/reference/templates/AGENTS.md +0 -227
- package/docs/reference/templates/BOOT.md +0 -16
- package/docs/reference/templates/BOOTSTRAP.md +0 -66
- package/docs/reference/templates/CLAUDE.md +0 -1
- package/docs/reference/templates/HEARTBEAT.md +0 -24
- package/docs/reference/templates/IDENTITY.dev.md +0 -52
- package/docs/reference/templates/IDENTITY.md +0 -34
- package/docs/reference/templates/SOUL.dev.md +0 -82
- package/docs/reference/templates/SOUL.md +0 -49
- package/docs/reference/templates/TOOLS.dev.md +0 -29
- package/docs/reference/templates/TOOLS.md +0 -51
- package/docs/reference/templates/USER.dev.md +0 -23
- package/docs/reference/templates/USER.md +0 -28
- package/docs/reference/test.md +0 -247
- package/docs/reference/token-use.md +0 -246
- package/docs/reference/transcript-hygiene.md +0 -214
- package/docs/reference/wizard.md +0 -252
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -101
- package/docs/security/THREAT-MODEL-ATLAS.md +0 -611
- package/docs/security/formal-verification.md +0 -170
- package/docs/security/incident-response.md +0 -59
- package/docs/security/network-proxy.md +0 -268
- package/docs/snippets/plugin-publish/minimal-fengming.plugin.json +0 -12
- package/docs/snippets/plugin-publish/minimal-package.json +0 -16
- package/docs/specs/claw-supervisor.md +0 -247
- package/docs/start/bootstrapping.md +0 -49
- package/docs/start/docs-directory.md +0 -69
- package/docs/start/fengming.md +0 -252
- package/docs/start/getting-started.md +0 -152
- package/docs/start/hubs.md +0 -201
- package/docs/start/lore.md +0 -223
- package/docs/start/onboarding-overview.md +0 -72
- package/docs/start/onboarding.md +0 -98
- package/docs/start/quickstart.md +0 -25
- package/docs/start/setup.md +0 -178
- package/docs/start/showcase.md +0 -363
- package/docs/start/wizard-cli-automation.md +0 -232
- package/docs/start/wizard-cli-reference.md +0 -331
- package/docs/start/wizard.md +0 -141
- package/docs/style.css +0 -137
- package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +0 -316
- package/docs/tools/acp-agents-setup.md +0 -351
- package/docs/tools/acp-agents.md +0 -854
- package/docs/tools/agent-send.md +0 -130
- package/docs/tools/apply-patch.md +0 -64
- package/docs/tools/brave-search.md +0 -139
- package/docs/tools/browser-control.md +0 -391
- package/docs/tools/browser-linux-troubleshooting.md +0 -173
- package/docs/tools/browser-login.md +0 -77
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +0 -219
- package/docs/tools/browser.md +0 -810
- package/docs/tools/btw.md +0 -159
- package/docs/tools/capability-cookbook.md +0 -12
- package/docs/tools/clawhub.md +0 -5
- package/docs/tools/code-execution.md +0 -173
- package/docs/tools/creating-skills.md +0 -158
- package/docs/tools/diffs.md +0 -525
- package/docs/tools/duckduckgo-search.md +0 -109
- package/docs/tools/elevated.md +0 -128
- package/docs/tools/exa-search.md +0 -152
- package/docs/tools/exec-approvals-advanced.md +0 -444
- package/docs/tools/exec-approvals.md +0 -494
- package/docs/tools/exec.md +0 -285
- package/docs/tools/firecrawl.md +0 -155
- package/docs/tools/gemini-search.md +0 -114
- package/docs/tools/goal.md +0 -217
- package/docs/tools/grok-search.md +0 -129
- package/docs/tools/image-generation.md +0 -493
- package/docs/tools/index.md +0 -178
- package/docs/tools/kimi-search.md +0 -105
- package/docs/tools/llm-task.md +0 -137
- package/docs/tools/lobster.md +0 -365
- package/docs/tools/loop-detection.md +0 -154
- package/docs/tools/media-overview.md +0 -160
- package/docs/tools/minimax-search.md +0 -102
- package/docs/tools/multi-agent-sandbox-tools.md +0 -409
- package/docs/tools/music-generation.md +0 -372
- package/docs/tools/ollama-search.md +0 -153
- package/docs/tools/pdf.md +0 -213
- package/docs/tools/perplexity-search.md +0 -220
- package/docs/tools/plugin.md +0 -363
- package/docs/tools/reactions.md +0 -100
- package/docs/tools/searxng-search.md +0 -141
- package/docs/tools/skills-config.md +0 -195
- package/docs/tools/skills.md +0 -569
- package/docs/tools/slash-commands.md +0 -487
- package/docs/tools/steer.md +0 -77
- package/docs/tools/subagents.md +0 -651
- package/docs/tools/tavily.md +0 -162
- package/docs/tools/thinking.md +0 -142
- package/docs/tools/tokenjuice.md +0 -84
- package/docs/tools/tool-search.md +0 -269
- package/docs/tools/trajectory.md +0 -229
- package/docs/tools/tts.md +0 -1009
- package/docs/tools/video-generation.md +0 -555
- package/docs/tools/web-fetch.md +0 -210
- package/docs/tools/web.md +0 -461
- package/docs/tts.md +0 -11
- package/docs/vps.md +0 -139
- package/docs/web/control-ui.md +0 -512
- package/docs/web/dashboard.md +0 -107
- package/docs/web/index.md +0 -133
- package/docs/web/tui.md +0 -250
- package/docs/web/webchat.md +0 -102
- package/npm-shrinkwrap.json +0 -12861
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.37.0.patch +0 -41
- package/pnpm-workspace.yaml +0 -120
- package/scripts/crabbox-wrapper.mjs +0 -2004
- package/scripts/lib/official-external-channel-catalog.json +0 -560
- package/scripts/lib/official-external-plugin-catalog.json +0 -264
- package/scripts/lib/official-external-provider-catalog.json +0 -158
- package/scripts/lib/package-dist-imports.mjs +0 -171
- package/scripts/npm-runner.mjs +0 -91
- package/scripts/postinstall-bundled-plugins.mjs +0 -978
- package/scripts/preinstall-package-manager-warning.mjs +0 -64
- package/scripts/prepare-git-hooks.mjs +0 -72
- package/scripts/windows-cmd-helpers.mjs +0 -22
- package/skills/batch/SKILL.md +0 -118
- package/skills/code-review/SKILL.md +0 -107
- package/skills/debug/SKILL.md +0 -83
- package/skills/loop/SKILL.md +0 -118
- package/skills/run/SKILL.md +0 -79
- package/skills/run-skill-generator/SKILL.md +0 -179
- package/skills/verify/SKILL.md +0 -103
- package/src/agents/templates/HEARTBEAT.md +0 -3
package/docs/start/wizard.md
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "CLI onboarding: guided setup for gateway, workspace, channels, and skills"
|
|
3
|
-
read_when:
|
|
4
|
-
- Running or configuring CLI onboarding
|
|
5
|
-
- Setting up a new machine
|
|
6
|
-
title: "Onboarding (CLI)"
|
|
7
|
-
sidebarTitle: "Onboarding: CLI"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
CLI onboarding is the **recommended** way to set up FengMing on macOS,
|
|
11
|
-
Linux, or Windows (via WSL2; strongly recommended).
|
|
12
|
-
It configures a local Gateway or a remote Gateway connection, plus channels, skills,
|
|
13
|
-
and workspace defaults in one guided flow.
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
fengming onboard
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Locale
|
|
20
|
-
|
|
21
|
-
The CLI wizard localizes fixed onboarding copy. It resolves locale from
|
|
22
|
-
`FENGMING_LOCALE`, then `LC_ALL`, then `LC_MESSAGES`, then `LANG`, and falls
|
|
23
|
-
back to English. Supported wizard locales are `en`, `zh-CN`, and `zh-TW`.
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
FENGMING_LOCALE=zh-CN fengming onboard
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Names and stable identifiers stay literal: `FengMing`, `Gateway`, `Tailscale`,
|
|
30
|
-
commands, config keys, URLs, provider IDs, model IDs, and plugin/channel labels
|
|
31
|
-
are not translated.
|
|
32
|
-
|
|
33
|
-
<Info>
|
|
34
|
-
Fastest first chat: open the Control UI (no channel setup needed). Run
|
|
35
|
-
`fengming dashboard` and chat in the browser. Docs: [Dashboard](/web/dashboard).
|
|
36
|
-
</Info>
|
|
37
|
-
|
|
38
|
-
To reconfigure later:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
fengming configure
|
|
42
|
-
fengming agents add <name>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
<Note>
|
|
46
|
-
`--json` does not imply non-interactive mode. For scripts, use `--non-interactive`.
|
|
47
|
-
</Note>
|
|
48
|
-
|
|
49
|
-
<Tip>
|
|
50
|
-
CLI onboarding includes a web search step where you can pick a provider
|
|
51
|
-
such as Brave, DuckDuckGo, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search,
|
|
52
|
-
Ollama Web Search, Perplexity, SearXNG, or Tavily. Some providers require an
|
|
53
|
-
API key, while others are key-free. You can also configure this later with
|
|
54
|
-
`fengming configure --section web`. Docs: [Web tools](/tools/web).
|
|
55
|
-
</Tip>
|
|
56
|
-
|
|
57
|
-
## QuickStart vs Advanced
|
|
58
|
-
|
|
59
|
-
Onboarding starts with **QuickStart** (defaults) vs **Advanced** (full control).
|
|
60
|
-
|
|
61
|
-
<Tabs>
|
|
62
|
-
<Tab title="QuickStart (defaults)">
|
|
63
|
-
- Local gateway (loopback)
|
|
64
|
-
- Workspace default (or existing workspace)
|
|
65
|
-
- Gateway port **18789**
|
|
66
|
-
- Gateway auth **Token** (auto-generated, even on loopback)
|
|
67
|
-
- Tool policy default for new local setups: `tools.profile: "coding"` (existing explicit profile is preserved)
|
|
68
|
-
- DM isolation default: local onboarding writes `session.dmScope: "per-channel-peer"` when unset. Details: [CLI Setup Reference](/start/wizard-cli-reference#outputs-and-internals)
|
|
69
|
-
- Tailscale exposure **Off**
|
|
70
|
-
- Telegram + WhatsApp DMs default to **allowlist** (you'll be prompted for your phone number)
|
|
71
|
-
|
|
72
|
-
</Tab>
|
|
73
|
-
<Tab title="Advanced (full control)">
|
|
74
|
-
- Exposes every step (mode, workspace, gateway, channels, daemon, skills).
|
|
75
|
-
|
|
76
|
-
</Tab>
|
|
77
|
-
</Tabs>
|
|
78
|
-
|
|
79
|
-
## What onboarding configures
|
|
80
|
-
|
|
81
|
-
**Local mode (default)** walks you through these steps:
|
|
82
|
-
|
|
83
|
-
1. **Model/Auth** — choose any supported provider/auth flow (API key, OAuth, or provider-specific manual auth), including Custom Provider
|
|
84
|
-
(OpenAI-compatible, Anthropic-compatible, or Unknown auto-detect). Pick a default model.
|
|
85
|
-
Security note: if this agent will run tools or process webhook/hooks content, prefer the strongest latest-generation model available and keep tool policy strict. Weaker/older tiers are easier to prompt-inject.
|
|
86
|
-
For non-interactive runs, `--secret-input-mode ref` stores env-backed refs in auth profiles instead of plaintext API key values.
|
|
87
|
-
In non-interactive `ref` mode, the provider env var must be set; passing inline key flags without that env var fails fast.
|
|
88
|
-
In interactive runs, choosing secret reference mode lets you point at either an environment variable or a configured provider ref (`file` or `exec`), with a fast preflight validation before saving.
|
|
89
|
-
For Anthropic, interactive onboarding/configure offers **Anthropic Claude CLI** as the preferred local path and **Anthropic API key** as the recommended production path. Anthropic setup-token also remains available as a supported token-auth path.
|
|
90
|
-
2. **Workspace** — Location for agent files (default `~/.fengming/workspace`). Seeds bootstrap files.
|
|
91
|
-
3. **Gateway** — Port, bind address, auth mode, Tailscale exposure.
|
|
92
|
-
In interactive token mode, choose default plaintext token storage or opt into SecretRef.
|
|
93
|
-
Non-interactive token SecretRef path: `--gateway-token-ref-env <ENV_VAR>`.
|
|
94
|
-
4. **Channels** — built-in and official plugin chat channels such as iMessage, Discord, Feishu, Google Chat, Mattermost, Microsoft Teams, QQ Bot, Signal, Slack, Telegram, WhatsApp, and more.
|
|
95
|
-
5. **Daemon** — Installs a LaunchAgent (macOS), systemd user unit (Linux/WSL2), or native Windows Scheduled Task with per-user Startup-folder fallback.
|
|
96
|
-
If token auth requires a token and `gateway.auth.token` is SecretRef-managed, daemon install validates it but does not persist the resolved token into supervisor service environment metadata.
|
|
97
|
-
If token auth requires a token and the configured token SecretRef is unresolved, daemon install is blocked with actionable guidance.
|
|
98
|
-
If both `gateway.auth.token` and `gateway.auth.password` are configured and `gateway.auth.mode` is unset, daemon install is blocked until mode is set explicitly.
|
|
99
|
-
6. **Health check** — Starts the Gateway and verifies it's running.
|
|
100
|
-
7. **Skills** — Installs recommended skills and optional dependencies.
|
|
101
|
-
|
|
102
|
-
<Note>
|
|
103
|
-
Re-running onboarding does **not** wipe anything unless you explicitly choose **Reset** (or pass `--reset`).
|
|
104
|
-
CLI `--reset` defaults to config, credentials, and sessions; use `--reset-scope full` to include workspace.
|
|
105
|
-
If the config is invalid or contains legacy keys, onboarding asks you to run `fengming doctor` first.
|
|
106
|
-
</Note>
|
|
107
|
-
|
|
108
|
-
**Remote mode** only configures the local client to connect to a Gateway elsewhere.
|
|
109
|
-
It does **not** install or change anything on the remote host.
|
|
110
|
-
|
|
111
|
-
## Add another agent
|
|
112
|
-
|
|
113
|
-
Use `fengming agents add <name>` to create a separate agent with its own workspace,
|
|
114
|
-
sessions, and auth profiles. Running without `--workspace` launches onboarding.
|
|
115
|
-
|
|
116
|
-
What it sets:
|
|
117
|
-
|
|
118
|
-
- `agents.list[].name`
|
|
119
|
-
- `agents.list[].workspace`
|
|
120
|
-
- `agents.list[].agentDir`
|
|
121
|
-
|
|
122
|
-
Notes:
|
|
123
|
-
|
|
124
|
-
- Default workspaces follow `~/.fengming/workspace-<agentId>`.
|
|
125
|
-
- Add `bindings` to route inbound messages (onboarding can do this).
|
|
126
|
-
- Non-interactive flags: `--model`, `--agent-dir`, `--bind`, `--non-interactive`.
|
|
127
|
-
|
|
128
|
-
## Full reference
|
|
129
|
-
|
|
130
|
-
For detailed step-by-step breakdowns and config outputs, see
|
|
131
|
-
[CLI Setup Reference](/start/wizard-cli-reference).
|
|
132
|
-
For non-interactive examples, see [CLI Automation](/start/wizard-cli-automation).
|
|
133
|
-
For the deeper technical reference, including RPC details, see
|
|
134
|
-
[Onboarding Reference](/reference/wizard).
|
|
135
|
-
|
|
136
|
-
## Related docs
|
|
137
|
-
|
|
138
|
-
- CLI command reference: [`fengming onboard`](/cli/onboard)
|
|
139
|
-
- Onboarding overview: [Onboarding Overview](/start/onboarding-overview)
|
|
140
|
-
- macOS app onboarding: [Onboarding](/start/onboarding)
|
|
141
|
-
- Agent first-run ritual: [Agent Bootstrapping](/start/bootstrapping)
|
package/docs/style.css
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
#content > h1:first-of-type {
|
|
2
|
-
display: none !important;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.nav-tabs {
|
|
6
|
-
position: relative;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.nav-tabs-item > div {
|
|
10
|
-
opacity: 0;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.nav-tabs-underline {
|
|
14
|
-
position: absolute;
|
|
15
|
-
left: 0;
|
|
16
|
-
bottom: 0;
|
|
17
|
-
height: 1.5px;
|
|
18
|
-
width: var(--nav-tab-underline-width, 0);
|
|
19
|
-
transform: translateX(var(--nav-tab-underline-x, 0));
|
|
20
|
-
background-color: rgb(var(--primary));
|
|
21
|
-
border-radius: 999px;
|
|
22
|
-
pointer-events: none;
|
|
23
|
-
opacity: 0;
|
|
24
|
-
transition:
|
|
25
|
-
transform 260ms ease-in-out,
|
|
26
|
-
width 260ms ease-in-out,
|
|
27
|
-
opacity 160ms ease-in-out;
|
|
28
|
-
will-change: transform, width;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
html.dark .nav-tabs-underline {
|
|
32
|
-
background-color: rgb(var(--primary-light));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.nav-tabs-underline-ready .nav-tabs-underline {
|
|
36
|
-
opacity: 1;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.showcase-hero {
|
|
40
|
-
display: grid;
|
|
41
|
-
gap: 18px;
|
|
42
|
-
margin: 8px 0 22px;
|
|
43
|
-
padding: clamp(18px, 3vw, 30px);
|
|
44
|
-
border: 1px solid color-mix(in oklab, rgb(var(--primary)) 24%, transparent);
|
|
45
|
-
border-radius: 8px;
|
|
46
|
-
background: color-mix(in oklab, rgb(var(--primary)) 5%, transparent);
|
|
47
|
-
box-shadow: 0 18px 48px -34px rgba(0, 0, 0, 0.45);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.showcase-kicker {
|
|
51
|
-
margin: 0;
|
|
52
|
-
font-size: 12px;
|
|
53
|
-
font-weight: 700;
|
|
54
|
-
letter-spacing: 0.08em;
|
|
55
|
-
text-transform: uppercase;
|
|
56
|
-
opacity: 0.72;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.showcase-lead {
|
|
60
|
-
margin: 0;
|
|
61
|
-
max-width: 48rem;
|
|
62
|
-
font-size: clamp(18px, 2vw, 23px);
|
|
63
|
-
line-height: 1.6;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.showcase-actions,
|
|
67
|
-
.showcase-jump-links {
|
|
68
|
-
display: flex;
|
|
69
|
-
flex-wrap: wrap;
|
|
70
|
-
gap: 10px;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.showcase-actions a,
|
|
74
|
-
.showcase-jump-links a {
|
|
75
|
-
display: inline-flex;
|
|
76
|
-
align-items: center;
|
|
77
|
-
justify-content: center;
|
|
78
|
-
min-height: 40px;
|
|
79
|
-
padding: 0 14px;
|
|
80
|
-
border: 1px solid color-mix(in oklab, rgb(var(--primary)) 24%, transparent);
|
|
81
|
-
border-bottom: 1px solid color-mix(in oklab, rgb(var(--primary)) 24%, transparent);
|
|
82
|
-
border-radius: 8px;
|
|
83
|
-
background: color-mix(in oklab, rgb(var(--primary)) 4%, transparent);
|
|
84
|
-
text-decoration: none;
|
|
85
|
-
transition:
|
|
86
|
-
transform 0.16s ease,
|
|
87
|
-
border-color 0.16s ease,
|
|
88
|
-
background 0.16s ease;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.showcase-actions a:first-child {
|
|
92
|
-
background: color-mix(in oklab, rgb(var(--primary)) 12%, transparent);
|
|
93
|
-
border-color: color-mix(in oklab, rgb(var(--primary)) 36%, transparent);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.showcase-actions a:hover,
|
|
97
|
-
.showcase-jump-links a:hover {
|
|
98
|
-
transform: translateY(-1px);
|
|
99
|
-
border-color: color-mix(in oklab, rgb(var(--primary)) 46%, transparent);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.showcase-highlights {
|
|
103
|
-
display: grid;
|
|
104
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
105
|
-
gap: 12px;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.showcase-highlight {
|
|
109
|
-
padding: 14px;
|
|
110
|
-
border: 1px solid color-mix(in oklab, rgb(var(--primary)) 18%, transparent);
|
|
111
|
-
border-radius: 8px;
|
|
112
|
-
background: color-mix(in oklab, rgb(var(--primary)) 3%, transparent);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.showcase-highlight strong {
|
|
116
|
-
display: block;
|
|
117
|
-
margin-bottom: 6px;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.showcase-highlight span,
|
|
121
|
-
.showcase-section-intro {
|
|
122
|
-
opacity: 0.74;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.showcase-jump-links {
|
|
126
|
-
margin: 18px 0 28px;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
.showcase-section-intro {
|
|
130
|
-
margin: 0 0 16px;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
@media (max-width: 960px) {
|
|
134
|
-
.showcase-highlights {
|
|
135
|
-
grid-template-columns: 1fr;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
# Tweakcn Custom Theme Import Design
|
|
2
|
-
|
|
3
|
-
Status: approved in terminal on 2026-04-22
|
|
4
|
-
|
|
5
|
-
## Summary
|
|
6
|
-
|
|
7
|
-
Add exactly one browser-local custom Control UI theme slot that can be imported from a tweakcn share link. The existing built-in theme families remain `claw`, `knot`, and `dash`. The new `custom` family behaves like a normal FengMing theme family and supports `light`, `dark`, and `system` mode when the imported tweakcn payload includes both light and dark token sets.
|
|
8
|
-
|
|
9
|
-
The imported theme is stored only in the current browser profile with the rest of the Control UI settings. It is not written to gateway config and does not sync across devices or browsers.
|
|
10
|
-
|
|
11
|
-
## Problem
|
|
12
|
-
|
|
13
|
-
The Control UI theme system is currently closed over three hard-coded theme families:
|
|
14
|
-
|
|
15
|
-
- `ui/src/ui/theme.ts`
|
|
16
|
-
- `ui/src/ui/views/config.ts`
|
|
17
|
-
- `ui/src/styles/base.css`
|
|
18
|
-
|
|
19
|
-
Users can switch among built-in families and mode variants, but they cannot bring in a theme from tweakcn without editing repo CSS. The requested outcome is smaller than a general theming system: keep the three built-ins and add one user-controlled imported slot that can be replaced from a tweakcn link.
|
|
20
|
-
|
|
21
|
-
## Goals
|
|
22
|
-
|
|
23
|
-
- Keep the existing built-in theme families unchanged.
|
|
24
|
-
- Add exactly one imported custom slot, not a theme library.
|
|
25
|
-
- Accept a tweakcn share link or a direct `https://tweakcn.com/r/themes/{id}` URL.
|
|
26
|
-
- Persist the imported theme in browser local storage only.
|
|
27
|
-
- Make the imported slot work with existing `light`, `dark`, and `system` mode controls.
|
|
28
|
-
- Keep failure behavior safe: a bad import never breaks the active UI theme.
|
|
29
|
-
|
|
30
|
-
## Non goals
|
|
31
|
-
|
|
32
|
-
- No multi-theme library or browser-local list of imports.
|
|
33
|
-
- No gateway-side persistence or cross-device sync.
|
|
34
|
-
- No arbitrary CSS editor or raw theme JSON editor.
|
|
35
|
-
- No automatic loading of remote font assets from tweakcn.
|
|
36
|
-
- No attempt to support tweakcn payloads that only expose one mode.
|
|
37
|
-
- No repo-wide theming refactor beyond the seams required for the Control UI.
|
|
38
|
-
|
|
39
|
-
## User decisions already made
|
|
40
|
-
|
|
41
|
-
- Keep the three built-in themes.
|
|
42
|
-
- Add one tweakcn-powered import slot.
|
|
43
|
-
- Store the imported theme in the browser, not gateway config.
|
|
44
|
-
- Support `light`, `dark`, and `system` for the imported slot.
|
|
45
|
-
- Overwriting the custom slot with the next import is the intended behavior.
|
|
46
|
-
|
|
47
|
-
## Recommended approach
|
|
48
|
-
|
|
49
|
-
Add a fourth theme family id, `custom`, to the Control UI theme model. The `custom` family becomes selectable only when a valid tweakcn import is present. The imported payload is normalized into an FengMing-specific custom theme record and stored in browser local storage with the rest of the UI settings.
|
|
50
|
-
|
|
51
|
-
At runtime, FengMing renders a managed `<style>` tag that defines the resolved custom CSS variable blocks:
|
|
52
|
-
|
|
53
|
-
```css
|
|
54
|
-
:root[data-theme="custom"] { ... }
|
|
55
|
-
:root[data-theme="custom-light"] { ... }
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
This keeps custom theme variables scoped to the `custom` family and avoids leaking inline CSS variables into the built-in families.
|
|
59
|
-
|
|
60
|
-
## Architecture
|
|
61
|
-
|
|
62
|
-
### Theme model
|
|
63
|
-
|
|
64
|
-
Update `ui/src/ui/theme.ts`:
|
|
65
|
-
|
|
66
|
-
- Extend `ThemeName` to include `custom`.
|
|
67
|
-
- Extend `ResolvedTheme` to include `custom` and `custom-light`.
|
|
68
|
-
- Extend `VALID_THEME_NAMES`.
|
|
69
|
-
- Update `resolveTheme()` so `custom` mirrors the existing family behavior:
|
|
70
|
-
- `custom + dark` -> `custom`
|
|
71
|
-
- `custom + light` -> `custom-light`
|
|
72
|
-
- `custom + system` -> `custom` or `custom-light` based on OS preference
|
|
73
|
-
|
|
74
|
-
No legacy aliases are added for `custom`.
|
|
75
|
-
|
|
76
|
-
### Persistence model
|
|
77
|
-
|
|
78
|
-
Extend `UiSettings` persistence in `ui/src/ui/storage.ts` with one optional custom-theme payload:
|
|
79
|
-
|
|
80
|
-
- `customTheme?: ImportedCustomTheme`
|
|
81
|
-
|
|
82
|
-
Recommended stored shape:
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
type ImportedCustomTheme = {
|
|
86
|
-
sourceUrl: string;
|
|
87
|
-
themeId: string;
|
|
88
|
-
label: string;
|
|
89
|
-
importedAt: string;
|
|
90
|
-
light: Record<string, string>;
|
|
91
|
-
dark: Record<string, string>;
|
|
92
|
-
};
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Notes:
|
|
96
|
-
|
|
97
|
-
- `sourceUrl` stores the original user input after normalization.
|
|
98
|
-
- `themeId` is the tweakcn theme id extracted from the URL.
|
|
99
|
-
- `label` is the tweakcn `name` field when present, else `Custom`.
|
|
100
|
-
- `light` and `dark` are already normalized FengMing token maps, not raw tweakcn payloads.
|
|
101
|
-
- The imported payload lives beside other browser-local settings and is serialized in the same local-storage document.
|
|
102
|
-
- If stored custom-theme data is missing or invalid on load, ignore the payload and fall back to `theme: "claw"` when the persisted family was `custom`.
|
|
103
|
-
|
|
104
|
-
### Runtime application
|
|
105
|
-
|
|
106
|
-
Add a narrow custom-theme stylesheet manager in the Control UI runtime, owned near `ui/src/ui/app-settings.ts` and `ui/src/ui/theme.ts`.
|
|
107
|
-
|
|
108
|
-
Responsibilities:
|
|
109
|
-
|
|
110
|
-
- Create or update one stable `<style id="fengming-custom-theme">` tag in `document.head`.
|
|
111
|
-
- Emit CSS only when a valid custom theme payload exists.
|
|
112
|
-
- Remove the style tag content when the payload is cleared.
|
|
113
|
-
- Keep built-in family CSS in `ui/src/styles/base.css`; do not splice imported tokens into the checked-in stylesheet.
|
|
114
|
-
|
|
115
|
-
This manager runs whenever settings are loaded, saved, imported, or cleared.
|
|
116
|
-
|
|
117
|
-
### Light-mode selectors
|
|
118
|
-
|
|
119
|
-
Implementation should prefer `data-theme-mode="light"` for cross-family light styling rather than special-casing `custom-light`. If an existing selector is pinned to `data-theme="light"` and needs to apply to every light family, broaden it as part of this work.
|
|
120
|
-
|
|
121
|
-
## Import UX
|
|
122
|
-
|
|
123
|
-
Update `ui/src/ui/views/config.ts` in the `Appearance` section:
|
|
124
|
-
|
|
125
|
-
- Add a `Custom` theme card beside `Claw`, `Knot`, and `Dash`.
|
|
126
|
-
- Show the card as disabled when no imported custom theme exists.
|
|
127
|
-
- Add an import panel under the theme grid with:
|
|
128
|
-
- one text input for a tweakcn share link or `/r/themes/{id}` URL
|
|
129
|
-
- one `Import` button
|
|
130
|
-
- one `Replace` path when a custom payload already exists
|
|
131
|
-
- one `Clear` action when a custom payload already exists
|
|
132
|
-
- Show the imported theme label and source host when a payload exists.
|
|
133
|
-
- If the active theme is `custom`, importing a replacement applies immediately.
|
|
134
|
-
- If the active theme is not `custom`, importing only stores the new payload until the user selects the `Custom` card.
|
|
135
|
-
|
|
136
|
-
The quick settings theme picker in `ui/src/ui/views/config-quick.ts` should also show `Custom` only when a payload exists.
|
|
137
|
-
|
|
138
|
-
## URL parsing and remote fetch
|
|
139
|
-
|
|
140
|
-
The browser import path accepts:
|
|
141
|
-
|
|
142
|
-
- `https://tweakcn.com/themes/{id}`
|
|
143
|
-
- `https://tweakcn.com/r/themes/{id}`
|
|
144
|
-
|
|
145
|
-
Implementation should normalize both forms to:
|
|
146
|
-
|
|
147
|
-
- `https://tweakcn.com/r/themes/{id}`
|
|
148
|
-
|
|
149
|
-
The browser then fetches the normalized `/r/themes/{id}` endpoint directly.
|
|
150
|
-
|
|
151
|
-
Use a narrow schema validator for the external payload. A zod schema is preferred because this is an untrusted external boundary.
|
|
152
|
-
|
|
153
|
-
Required remote fields:
|
|
154
|
-
|
|
155
|
-
- top-level `name` as optional string
|
|
156
|
-
- `cssVars.theme` as optional object
|
|
157
|
-
- `cssVars.light` as object
|
|
158
|
-
- `cssVars.dark` as object
|
|
159
|
-
|
|
160
|
-
If either `cssVars.light` or `cssVars.dark` is missing, reject the import. This is deliberate: the approved product behavior is full mode support, not best-effort synthesis of a missing side.
|
|
161
|
-
|
|
162
|
-
## Token mapping
|
|
163
|
-
|
|
164
|
-
Do not mirror tweakcn variables blindly. Normalize a bounded subset into FengMing tokens and derive the rest in a helper.
|
|
165
|
-
|
|
166
|
-
### Tokens imported directly
|
|
167
|
-
|
|
168
|
-
From each tweakcn mode block:
|
|
169
|
-
|
|
170
|
-
- `background`
|
|
171
|
-
- `foreground`
|
|
172
|
-
- `card`
|
|
173
|
-
- `card-foreground`
|
|
174
|
-
- `popover`
|
|
175
|
-
- `popover-foreground`
|
|
176
|
-
- `primary`
|
|
177
|
-
- `primary-foreground`
|
|
178
|
-
- `secondary`
|
|
179
|
-
- `secondary-foreground`
|
|
180
|
-
- `muted`
|
|
181
|
-
- `muted-foreground`
|
|
182
|
-
- `accent`
|
|
183
|
-
- `accent-foreground`
|
|
184
|
-
- `destructive`
|
|
185
|
-
- `destructive-foreground`
|
|
186
|
-
- `border`
|
|
187
|
-
- `input`
|
|
188
|
-
- `ring`
|
|
189
|
-
- `radius`
|
|
190
|
-
|
|
191
|
-
From shared `cssVars.theme` when present:
|
|
192
|
-
|
|
193
|
-
- `font-sans`
|
|
194
|
-
- `font-mono`
|
|
195
|
-
|
|
196
|
-
If a mode block overrides `font-sans`, `font-mono`, or `radius`, the mode-local value wins.
|
|
197
|
-
|
|
198
|
-
### Tokens derived for FengMing
|
|
199
|
-
|
|
200
|
-
The importer derives FengMing-only variables from the imported base colors:
|
|
201
|
-
|
|
202
|
-
- `--bg-accent`
|
|
203
|
-
- `--bg-elevated`
|
|
204
|
-
- `--bg-hover`
|
|
205
|
-
- `--panel`
|
|
206
|
-
- `--panel-strong`
|
|
207
|
-
- `--panel-hover`
|
|
208
|
-
- `--chrome`
|
|
209
|
-
- `--chrome-strong`
|
|
210
|
-
- `--text`
|
|
211
|
-
- `--text-strong`
|
|
212
|
-
- `--chat-text`
|
|
213
|
-
- `--muted`
|
|
214
|
-
- `--muted-strong`
|
|
215
|
-
- `--accent-hover`
|
|
216
|
-
- `--accent-muted`
|
|
217
|
-
- `--accent-subtle`
|
|
218
|
-
- `--accent-glow`
|
|
219
|
-
- `--focus`
|
|
220
|
-
- `--focus-ring`
|
|
221
|
-
- `--focus-glow`
|
|
222
|
-
- `--secondary`
|
|
223
|
-
- `--secondary-foreground`
|
|
224
|
-
- `--danger`
|
|
225
|
-
- `--danger-muted`
|
|
226
|
-
- `--danger-subtle`
|
|
227
|
-
|
|
228
|
-
Derivation rules live in a pure helper so they can be tested independently. Exact color-mixing formulas are an implementation detail, but the helper must satisfy two constraints:
|
|
229
|
-
|
|
230
|
-
- preserve readable contrast close to the imported theme intent
|
|
231
|
-
- produce stable output for the same imported payload
|
|
232
|
-
|
|
233
|
-
### Tokens ignored in v1
|
|
234
|
-
|
|
235
|
-
These tweakcn tokens are intentionally ignored in the first version:
|
|
236
|
-
|
|
237
|
-
- `chart-*`
|
|
238
|
-
- `sidebar-*`
|
|
239
|
-
- `font-serif`
|
|
240
|
-
- `shadow-*`
|
|
241
|
-
- `tracking-*`
|
|
242
|
-
- `letter-spacing`
|
|
243
|
-
- `spacing`
|
|
244
|
-
|
|
245
|
-
This keeps the scope on the tokens the current Control UI actually needs.
|
|
246
|
-
|
|
247
|
-
### Fonts
|
|
248
|
-
|
|
249
|
-
Font stack strings are imported if present, but FengMing does not load remote font assets in v1. If the imported stack references fonts that are unavailable in the browser, normal fallback behavior applies.
|
|
250
|
-
|
|
251
|
-
## Failure behavior
|
|
252
|
-
|
|
253
|
-
Bad imports must fail closed.
|
|
254
|
-
|
|
255
|
-
- Invalid URL format: show inline validation error, do not fetch.
|
|
256
|
-
- Unsupported host or path shape: show inline validation error, do not fetch.
|
|
257
|
-
- Network failure, non-OK response, or malformed JSON: show inline error, keep current stored payload untouched.
|
|
258
|
-
- Schema failure or missing light/dark blocks: show inline error, keep current stored payload untouched.
|
|
259
|
-
- Clear action:
|
|
260
|
-
- removes the stored custom payload
|
|
261
|
-
- removes the managed custom style tag content
|
|
262
|
-
- if `custom` is active, switches theme family back to `claw`
|
|
263
|
-
- Invalid stored custom payload on first load:
|
|
264
|
-
- ignore the stored payload
|
|
265
|
-
- do not emit custom CSS
|
|
266
|
-
- if persisted theme family was `custom`, fall back to `claw`
|
|
267
|
-
|
|
268
|
-
At no point should a failed import leave the active document with partial custom CSS variables applied.
|
|
269
|
-
|
|
270
|
-
## Files expected to change in implementation
|
|
271
|
-
|
|
272
|
-
Primary files:
|
|
273
|
-
|
|
274
|
-
- `ui/src/ui/theme.ts`
|
|
275
|
-
- `ui/src/ui/storage.ts`
|
|
276
|
-
- `ui/src/ui/app-settings.ts`
|
|
277
|
-
- `ui/src/ui/views/config.ts`
|
|
278
|
-
- `ui/src/ui/views/config-quick.ts`
|
|
279
|
-
- `ui/src/styles/base.css`
|
|
280
|
-
|
|
281
|
-
Likely new helpers:
|
|
282
|
-
|
|
283
|
-
- `ui/src/ui/custom-theme.ts`
|
|
284
|
-
|
|
285
|
-
Tests:
|
|
286
|
-
|
|
287
|
-
- `ui/src/ui/app-settings.test.ts`
|
|
288
|
-
- `ui/src/ui/storage.node.test.ts`
|
|
289
|
-
- `ui/src/ui/views/config.browser.test.ts`
|
|
290
|
-
- new focused tests for URL parsing and payload normalization
|
|
291
|
-
|
|
292
|
-
## Testing
|
|
293
|
-
|
|
294
|
-
Minimum implementation coverage:
|
|
295
|
-
|
|
296
|
-
- parse share-link URL into tweakcn theme id
|
|
297
|
-
- normalize `/themes/{id}` and `/r/themes/{id}` into the fetch URL
|
|
298
|
-
- reject unsupported hosts and malformed ids
|
|
299
|
-
- validate tweakcn payload shape
|
|
300
|
-
- map a valid tweakcn payload into normalized FengMing light and dark token maps
|
|
301
|
-
- load and save the custom payload in browser-local settings
|
|
302
|
-
- resolve `custom` for `light`, `dark`, and `system`
|
|
303
|
-
- disable `Custom` selection when no payload exists
|
|
304
|
-
- apply imported theme immediately when `custom` is already active
|
|
305
|
-
- fall back to `claw` when the active custom theme is cleared
|
|
306
|
-
|
|
307
|
-
Manual verification target:
|
|
308
|
-
|
|
309
|
-
- import a known tweakcn theme from Settings
|
|
310
|
-
- switch among `light`, `dark`, and `system`
|
|
311
|
-
- switch between `custom` and the built-in families
|
|
312
|
-
- reload the page and confirm the imported custom theme persists locally
|
|
313
|
-
|
|
314
|
-
## Rollout notes
|
|
315
|
-
|
|
316
|
-
This feature is intentionally small. If users later ask for multiple imported themes, rename, export, or cross-device sync, treat that as a follow-on design. Do not pre-build a theme library abstraction in this implementation.
|