fengming 0.3.10 → 0.3.11
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-startup-metadata.json +8 -8
- package/dist/control-ui/assets/{activity-D-mnRThU.js → activity-wgT0-JR0.js} +2 -2
- package/dist/control-ui/assets/{agents-U_KSP5I_.js → agents-DG5PobrT.js} +2 -2
- package/dist/control-ui/assets/{channels-ohK9_G1O.js → channels-CX28oM42.js} +2 -2
- package/dist/control-ui/assets/{cron-6ZCzfU29.js → cron-B8ixwBqU.js} +2 -2
- package/dist/control-ui/assets/{debug-CSsDLg_s.js → debug-CnkYZUXy.js} +2 -2
- package/dist/control-ui/assets/{index-jUDczxhd.js → index-DQRZJKbO.js} +4 -4
- package/dist/control-ui/assets/{instances-782ZoDT4.js → instances-BE3mV1JC.js} +2 -2
- package/dist/control-ui/assets/{nodes-BMX16BKM.js → nodes-Cou4PWRX.js} +2 -2
- package/dist/control-ui/assets/{sessions-jLGSApYa.js → sessions-DpAaBT21.js} +2 -2
- package/dist/control-ui/assets/{skills-DweBwUhs.js → skills-DjA_j_20.js} +2 -2
- package/dist/control-ui/assets/{workboard-BsU-FXIo.js → workboard-BFnvbS0k.js} +2 -2
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/sw.js +1 -1
- package/dist/gateway/protocol/index.d.ts +1 -1
- package/dist/{index-AZzJCgph.d.ts → index-DuDY3bCZ.d.ts} +2 -2
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/plugin-sdk/agent-config-primitives.d.ts +1 -1
- package/dist/plugin-sdk/{bundled-channel-config-schema-Dfn3b8sF.d.ts → bundled-channel-config-schema-BPFNnbwu.d.ts} +23 -23
- package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +3 -3
- package/dist/plugin-sdk/channel-config-primitives.d.ts +2 -2
- package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +3 -3
- package/dist/plugin-sdk/channel-config-schema.d.ts +2 -2
- package/dist/plugin-sdk/channel-core.d.ts +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +1 -1
- package/dist/plugin-sdk/compat.d.ts +2 -2
- package/dist/plugin-sdk/{config-schema-DUddICQM.d.ts → config-schema-D7cABQ6o.d.ts} +1 -1
- package/dist/plugin-sdk/config-schema.d.ts +2 -2
- package/dist/plugin-sdk/core.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +2 -2
- package/dist/plugin-sdk/tts-runtime.d.ts +1 -1
- package/dist/plugin-sdk/{zod-schema.core-B4_b2R5K.d.ts → zod-schema.core-CwBNqcXp.d.ts} +1 -1
- package/package.json +4 -409
- package/CHANGELOG.md +0 -42
- package/THIRD_PARTY_NOTICES.md +0 -37
- 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/tools/tavily.md
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Tavily search and extract tools"
|
|
3
|
-
read_when:
|
|
4
|
-
- You want Tavily-backed web search
|
|
5
|
-
- You need a Tavily API key
|
|
6
|
-
- You want Tavily as a web_search provider
|
|
7
|
-
- You want content extraction from URLs
|
|
8
|
-
title: "Tavily"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
[Tavily](https://tavily.com) is a search API designed for AI applications. FengMing exposes it in two ways:
|
|
12
|
-
|
|
13
|
-
- as the `web_search` provider for the generic search tool
|
|
14
|
-
- as explicit plugin tools: `tavily_search` and `tavily_extract`
|
|
15
|
-
|
|
16
|
-
Tavily returns structured results optimized for LLM consumption with configurable search depth, topic filtering, domain filters, AI-generated answer summaries, and content extraction from URLs (including JavaScript-rendered pages).
|
|
17
|
-
|
|
18
|
-
| Property | Value |
|
|
19
|
-
| ------------- | ----------------------------------- |
|
|
20
|
-
| Plugin id | `tavily` |
|
|
21
|
-
| Auth | `TAVILY_API_KEY` or config `apiKey` |
|
|
22
|
-
| Base URL | `https://api.tavily.com` (default) |
|
|
23
|
-
| Bundled tools | `tavily_search`, `tavily_extract` |
|
|
24
|
-
|
|
25
|
-
## Getting started
|
|
26
|
-
|
|
27
|
-
<Steps>
|
|
28
|
-
<Step title="Get an API key">
|
|
29
|
-
Create a Tavily account at [tavily.com](https://tavily.com), then generate an API key in the dashboard.
|
|
30
|
-
</Step>
|
|
31
|
-
<Step title="Configure the plugin and provider">
|
|
32
|
-
```json5
|
|
33
|
-
{
|
|
34
|
-
plugins: {
|
|
35
|
-
entries: {
|
|
36
|
-
tavily: {
|
|
37
|
-
enabled: true,
|
|
38
|
-
config: {
|
|
39
|
-
webSearch: {
|
|
40
|
-
apiKey: "tvly-...", // optional if TAVILY_API_KEY is set
|
|
41
|
-
baseUrl: "https://api.tavily.com",
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
tools: {
|
|
48
|
-
web: {
|
|
49
|
-
search: {
|
|
50
|
-
provider: "tavily",
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
</Step>
|
|
57
|
-
<Step title="Verify search runs">
|
|
58
|
-
Trigger a `web_search` from any agent, or call `tavily_search` directly.
|
|
59
|
-
</Step>
|
|
60
|
-
</Steps>
|
|
61
|
-
|
|
62
|
-
<Tip>
|
|
63
|
-
Choosing Tavily in onboarding or `fengming configure --section web` enables the bundled Tavily plugin automatically.
|
|
64
|
-
</Tip>
|
|
65
|
-
|
|
66
|
-
## Tool reference
|
|
67
|
-
|
|
68
|
-
### `tavily_search`
|
|
69
|
-
|
|
70
|
-
Use this when you want Tavily-specific search controls instead of generic `web_search`.
|
|
71
|
-
|
|
72
|
-
| Parameter | Type | Constraints / default | Description |
|
|
73
|
-
| ----------------- | ------------ | -------------------------------------- | ----------------------------------------------- |
|
|
74
|
-
| `query` | string | required | Search query string. Keep under 400 characters. |
|
|
75
|
-
| `search_depth` | enum | `basic` (default), `advanced` | `advanced` is slower but higher relevance. |
|
|
76
|
-
| `topic` | enum | `general` (default), `news`, `finance` | Filter by topic family. |
|
|
77
|
-
| `max_results` | integer | 1-20 | Number of results. |
|
|
78
|
-
| `include_answer` | boolean | default `false` | Include a Tavily AI-generated answer summary. |
|
|
79
|
-
| `time_range` | enum | `day`, `week`, `month`, `year` | Filter results by recency. |
|
|
80
|
-
| `include_domains` | string array | (none) | Only include results from these domains. |
|
|
81
|
-
| `exclude_domains` | string array | (none) | Exclude results from these domains. |
|
|
82
|
-
|
|
83
|
-
Search depth tradeoff:
|
|
84
|
-
|
|
85
|
-
| Depth | Speed | Relevance | Best for |
|
|
86
|
-
| ---------- | ------ | --------- | ------------------------------------ |
|
|
87
|
-
| `basic` | Faster | High | General-purpose queries (default). |
|
|
88
|
-
| `advanced` | Slower | Highest | Precision research and fact-finding. |
|
|
89
|
-
|
|
90
|
-
### `tavily_extract`
|
|
91
|
-
|
|
92
|
-
Use this to extract clean content from one or more URLs. Handles JavaScript-rendered pages and supports query-focused chunking for targeted extraction.
|
|
93
|
-
|
|
94
|
-
| Parameter | Type | Constraints / default | Description |
|
|
95
|
-
| ------------------- | ------------ | ----------------------------- | ----------------------------------------------------------- |
|
|
96
|
-
| `urls` | string array | required, 1-20 | URLs to extract content from. |
|
|
97
|
-
| `query` | string | (optional) | Rerank extracted chunks by relevance to this query. |
|
|
98
|
-
| `extract_depth` | enum | `basic` (default), `advanced` | Use `advanced` for JS-heavy pages, SPAs, or dynamic tables. |
|
|
99
|
-
| `chunks_per_source` | integer | 1-5; **requires `query`** | Chunks returned per URL. Errors if set without `query`. |
|
|
100
|
-
| `include_images` | boolean | default `false` | Include image URLs in results. |
|
|
101
|
-
|
|
102
|
-
Extract depth tradeoff:
|
|
103
|
-
|
|
104
|
-
| Depth | When to use |
|
|
105
|
-
| ---------- | ------------------------------------------ |
|
|
106
|
-
| `basic` | Simple pages. Try this first. |
|
|
107
|
-
| `advanced` | JS-rendered SPAs, dynamic content, tables. |
|
|
108
|
-
|
|
109
|
-
<Tip>
|
|
110
|
-
Batch larger URL lists into multiple `tavily_extract` calls (max 20 per request). Use `query` plus `chunks_per_source` to get only relevant content instead of full pages.
|
|
111
|
-
</Tip>
|
|
112
|
-
|
|
113
|
-
## Choosing the right tool
|
|
114
|
-
|
|
115
|
-
| Need | Tool |
|
|
116
|
-
| ------------------------------------ | ---------------- |
|
|
117
|
-
| Quick web search, no special options | `web_search` |
|
|
118
|
-
| Search with depth, topic, AI answers | `tavily_search` |
|
|
119
|
-
| Extract content from specific URLs | `tavily_extract` |
|
|
120
|
-
|
|
121
|
-
<Note>
|
|
122
|
-
The generic `web_search` tool with Tavily as provider supports `query` and `count` (up to 20 results). For Tavily-specific controls (`search_depth`, `topic`, `include_answer`, domain filters, time range), use `tavily_search` instead.
|
|
123
|
-
</Note>
|
|
124
|
-
|
|
125
|
-
## Advanced configuration
|
|
126
|
-
|
|
127
|
-
<AccordionGroup>
|
|
128
|
-
<Accordion title="API key resolution order">
|
|
129
|
-
The Tavily client looks up its API key in this order:
|
|
130
|
-
|
|
131
|
-
1. `plugins.entries.tavily.config.webSearch.apiKey` (resolved through SecretRefs).
|
|
132
|
-
2. `TAVILY_API_KEY` from the gateway environment.
|
|
133
|
-
|
|
134
|
-
`tavily_extract` raises a setup error if neither is present.
|
|
135
|
-
|
|
136
|
-
</Accordion>
|
|
137
|
-
|
|
138
|
-
<Accordion title="Custom base URL">
|
|
139
|
-
Override `plugins.entries.tavily.config.webSearch.baseUrl` if you front Tavily through a proxy. The default is `https://api.tavily.com`.
|
|
140
|
-
</Accordion>
|
|
141
|
-
|
|
142
|
-
<Accordion title="`chunks_per_source` requires `query`">
|
|
143
|
-
`tavily_extract` rejects calls that pass `chunks_per_source` without a `query`. Tavily ranks chunks by query relevance, so the parameter is meaningless without one.
|
|
144
|
-
</Accordion>
|
|
145
|
-
</AccordionGroup>
|
|
146
|
-
|
|
147
|
-
## Related
|
|
148
|
-
|
|
149
|
-
<CardGroup cols={2}>
|
|
150
|
-
<Card title="Web Search overview" href="/tools/web" icon="magnifying-glass">
|
|
151
|
-
All providers and auto-detection rules.
|
|
152
|
-
</Card>
|
|
153
|
-
<Card title="Firecrawl" href="/tools/firecrawl" icon="fire">
|
|
154
|
-
Search plus scraping with content extraction.
|
|
155
|
-
</Card>
|
|
156
|
-
<Card title="Exa Search" href="/tools/exa-search" icon="binoculars">
|
|
157
|
-
Neural search with content extraction.
|
|
158
|
-
</Card>
|
|
159
|
-
<Card title="Configuration" href="/gateway/configuration" icon="gear">
|
|
160
|
-
Full config schema for plugin entries and tool routing.
|
|
161
|
-
</Card>
|
|
162
|
-
</CardGroup>
|
package/docs/tools/thinking.md
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Directive syntax for /think, /fast, /verbose, /trace, and reasoning visibility"
|
|
3
|
-
read_when:
|
|
4
|
-
- Adjusting thinking, fast-mode, or verbose directive parsing or defaults
|
|
5
|
-
title: "Thinking levels"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## What it does
|
|
9
|
-
|
|
10
|
-
- Inline directive in any inbound body: `/t <level>`, `/think:<level>`, or `/thinking <level>`.
|
|
11
|
-
- Levels (aliases): `off | minimal | low | medium | high | xhigh | adaptive | max`
|
|
12
|
-
- minimal → "think"
|
|
13
|
-
- low → "think hard"
|
|
14
|
-
- medium → "think harder"
|
|
15
|
-
- high → "ultrathink" (max budget)
|
|
16
|
-
- xhigh → "ultrathink+" (GPT-5.2+ and Codex models, plus Anthropic Claude Opus 4.7+ effort)
|
|
17
|
-
- adaptive → provider-managed adaptive thinking (supported for Claude 4.6 on Anthropic/Bedrock, Anthropic Claude Opus 4.7+, and Google Gemini dynamic thinking)
|
|
18
|
-
- max → provider max reasoning (Anthropic Claude Opus 4.7+; Ollama maps this to its highest native `think` effort)
|
|
19
|
-
- `x-high`, `x_high`, `extra-high`, `extra high`, and `extra_high` map to `xhigh`.
|
|
20
|
-
- `highest` maps to `high`.
|
|
21
|
-
- Provider notes:
|
|
22
|
-
- Thinking menus and pickers are provider-profile driven. Provider plugins declare the exact level set for the selected model, including labels such as binary `on`.
|
|
23
|
-
- `adaptive`, `xhigh`, and `max` are only advertised for provider/model profiles that support them. Typed directives for unsupported levels are rejected with that model's valid options.
|
|
24
|
-
- Existing stored unsupported levels are remapped by provider profile rank. `adaptive` falls back to `medium` on non-adaptive models, while `xhigh` and `max` fall back to the largest supported non-off level for the selected model.
|
|
25
|
-
- Anthropic Claude 4.6 models default to `adaptive` when no explicit thinking level is set.
|
|
26
|
-
- Anthropic Claude Opus 4.8 and Opus 4.7 keep thinking off unless you explicitly set a thinking level. Opus 4.8's provider-owned effort default is `high` after adaptive thinking is enabled.
|
|
27
|
-
- Anthropic Claude Opus 4.7+ maps `/think xhigh` to adaptive thinking plus `output_config.effort: "xhigh"`, because `/think` is a thinking directive and `xhigh` is the Opus effort setting.
|
|
28
|
-
- Anthropic Claude Opus 4.7+ also exposes `/think max`; it maps to the same provider-owned max effort path.
|
|
29
|
-
- Direct DeepSeek V4 models expose `/think xhigh|max`; both map to DeepSeek `reasoning_effort: "max"` while lower non-off levels map to `high`.
|
|
30
|
-
- OpenRouter-routed DeepSeek V4 models expose `/think xhigh` and send OpenRouter-supported `reasoning_effort` values. Stored `max` overrides fall back to `xhigh`.
|
|
31
|
-
- Ollama thinking-capable models expose `/think low|medium|high|max`; `max` maps to native `think: "high"` because Ollama's native API accepts `low`, `medium`, and `high` effort strings.
|
|
32
|
-
- OpenAI GPT models map `/think` through model-specific Responses API effort support. `/think off` sends `reasoning.effort: "none"` only when the target model supports it; otherwise FengMing omits the disabled reasoning payload instead of sending an unsupported value.
|
|
33
|
-
- Custom OpenAI-compatible catalog entries can opt into `/think xhigh` by setting `models.providers.<provider>.models[].compat.supportedReasoningEfforts` to include `"xhigh"`. This uses the same compat metadata that maps outbound OpenAI reasoning effort payloads, so menus, session validation, agent CLI, and `llm-task` agree with transport behavior.
|
|
34
|
-
- Stale configured OpenRouter Hunter Alpha refs skip proxy reasoning injection because that retired route could return final answer text through reasoning fields.
|
|
35
|
-
- Google Gemini maps `/think adaptive` to Gemini's provider-owned dynamic thinking. Gemini 3 requests omit a fixed `thinkingLevel`, while Gemini 2.5 requests send `thinkingBudget: -1`; fixed levels still map to the closest Gemini `thinkingLevel` or budget for that model family.
|
|
36
|
-
- MiniMax (`minimax/*`) on the Anthropic-compatible streaming path defaults to `thinking: { type: "disabled" }` unless you explicitly set thinking in model params or request params. This avoids leaked `reasoning_content` deltas from MiniMax's non-native Anthropic stream format.
|
|
37
|
-
- Z.AI (`zai/*`) only supports binary thinking (`on`/`off`). Any non-`off` level is treated as `on` (mapped to `low`).
|
|
38
|
-
- Moonshot (`moonshot/*`) maps `/think off` to `thinking: { type: "disabled" }` and any non-`off` level to `thinking: { type: "enabled" }`. When thinking is enabled, Moonshot only accepts `tool_choice` `auto|none`; FengMing normalizes incompatible values to `auto`.
|
|
39
|
-
|
|
40
|
-
## Resolution order
|
|
41
|
-
|
|
42
|
-
1. Inline directive on the message (applies only to that message).
|
|
43
|
-
2. Session override (set by sending a directive-only message).
|
|
44
|
-
3. Per-agent default (`agents.list[].thinkingDefault` in config).
|
|
45
|
-
4. Global default (`agents.defaults.thinkingDefault` in config).
|
|
46
|
-
5. Fallback: provider-declared default when available; otherwise reasoning-capable models resolve to `medium` or the nearest supported non-`off` level for that model, and non-reasoning models stay `off`.
|
|
47
|
-
|
|
48
|
-
## Setting a session default
|
|
49
|
-
|
|
50
|
-
- Send a message that is **only** the directive (whitespace allowed), e.g. `/think:medium` or `/t high`.
|
|
51
|
-
- That sticks for the current session (per-sender by default). Use `/think default` to clear the session override and inherit the configured/provider default; aliases include `inherit`, `clear`, `reset`, and `unpin`.
|
|
52
|
-
- `/think off` stores an explicit off override. It disables thinking until you change or clear the session override.
|
|
53
|
-
- Confirmation reply is sent (`Thinking level set to high.` / `Thinking disabled.`). If the level is invalid (e.g. `/thinking big`), the command is rejected with a hint and the session state is left unchanged.
|
|
54
|
-
- Send `/think` (or `/think:`) with no argument to see the current thinking level.
|
|
55
|
-
|
|
56
|
-
## Application by agent
|
|
57
|
-
|
|
58
|
-
- **Embedded FengMing**: the resolved level is passed to the in-process FengMing agent runtime.
|
|
59
|
-
- **Claude CLI backend**: non-off levels are passed to Claude Code as `--effort` when using `claude-cli`; see [CLI backends](/gateway/cli-backends).
|
|
60
|
-
|
|
61
|
-
## Fast mode (/fast)
|
|
62
|
-
|
|
63
|
-
- Levels: `on|off|default`.
|
|
64
|
-
- Directive-only message toggles a session fast-mode override and replies `Fast mode enabled.` / `Fast mode disabled.`. Use `/fast default` to clear the session override and inherit the configured default; aliases include `inherit`, `clear`, `reset`, and `unpin`.
|
|
65
|
-
- Send `/fast` (or `/fast status`) with no mode to see the current effective fast-mode state.
|
|
66
|
-
- FengMing resolves fast mode in this order:
|
|
67
|
-
1. Inline/directive-only `/fast on|off` override (`/fast default` clears this layer)
|
|
68
|
-
2. Session override
|
|
69
|
-
3. Per-agent default (`agents.list[].fastModeDefault`)
|
|
70
|
-
4. Per-model config: `agents.defaults.models["<provider>/<model>"].params.fastMode`
|
|
71
|
-
5. Fallback: `off`
|
|
72
|
-
- For `openai/*`, fast mode maps to OpenAI priority processing by sending `service_tier=priority` on supported Responses requests.
|
|
73
|
-
- For Codex-backed `openai/*` models, fast mode sends the same `service_tier=priority` flag on Codex Responses. FengMing keeps one shared `/fast` toggle across both auth paths.
|
|
74
|
-
- For direct public `anthropic/*` requests, including OAuth-authenticated traffic sent to `api.anthropic.com`, fast mode maps to Anthropic service tiers: `/fast on` sets `service_tier=auto`, `/fast off` sets `service_tier=standard_only`.
|
|
75
|
-
- For `minimax/*` on the Anthropic-compatible path, `/fast on` (or `params.fastMode: true`) rewrites `MiniMax-M2.7` to `MiniMax-M2.7-highspeed`.
|
|
76
|
-
- Explicit Anthropic `serviceTier` / `service_tier` model params override the fast-mode default when both are set. FengMing still skips Anthropic service-tier injection for non-Anthropic proxy base URLs.
|
|
77
|
-
- `/status` shows `Fast` only when fast mode is enabled.
|
|
78
|
-
|
|
79
|
-
## Verbose directives (/verbose or /v)
|
|
80
|
-
|
|
81
|
-
- Levels: `on` (minimal) | `full` | `off` (default).
|
|
82
|
-
- Directive-only message toggles session verbose and replies `Verbose logging enabled.` / `Verbose logging disabled.`; invalid levels return a hint without changing state.
|
|
83
|
-
- `/verbose off` stores an explicit session override; clear it via the Sessions UI by choosing `inherit`.
|
|
84
|
-
- Authorized external channel senders may persist the session verbose override. Internal gateway/webchat clients need `operator.admin` to persist it.
|
|
85
|
-
- Inline directive affects only that message; session/global defaults apply otherwise.
|
|
86
|
-
- Send `/verbose` (or `/verbose:`) with no argument to see the current verbose level.
|
|
87
|
-
- When verbose is on, agents that emit structured tool results send each tool call back as its own metadata-only message, prefixed with `<emoji> <tool-name>: <arg>` when available. These tool summaries are sent as soon as each tool starts (separate bubbles), not as streaming deltas.
|
|
88
|
-
- Tool failure summaries remain visible in normal mode, but raw error detail suffixes are hidden unless verbose is `full`.
|
|
89
|
-
- When verbose is `full`, tool outputs are also forwarded after completion (separate bubble, truncated to a safe length). If you toggle `/verbose on|full|off` while a run is in-flight, subsequent tool bubbles honor the new setting.
|
|
90
|
-
- `agents.defaults.toolProgressDetail` controls the shape of `/verbose` tool summaries and progress-draft tool lines. Use `"explain"` (default) for compact human labels such as `🛠️ Exec: checking JS syntax`; use `"raw"` when you also want the raw command/detail appended for debugging. Per-agent `agents.list[].toolProgressDetail` overrides the default.
|
|
91
|
-
- `explain`: `🛠️ Exec: check JS syntax for /tmp/app.js`
|
|
92
|
-
- `raw`: `🛠️ Exec: check JS syntax for /tmp/app.js, node --check /tmp/app.js`
|
|
93
|
-
|
|
94
|
-
## Plugin trace directives (/trace)
|
|
95
|
-
|
|
96
|
-
- Levels: `on` | `off` (default).
|
|
97
|
-
- Directive-only message toggles session plugin trace output and replies `Plugin trace enabled.` / `Plugin trace disabled.`.
|
|
98
|
-
- Inline directive affects only that message; session/global defaults apply otherwise.
|
|
99
|
-
- Send `/trace` (or `/trace:`) with no argument to see the current trace level.
|
|
100
|
-
- `/trace` is narrower than `/verbose`: it only exposes plugin-owned trace/debug lines such as Active Memory debug summaries.
|
|
101
|
-
- Trace lines can appear in `/status` and as a follow-up diagnostic message after the normal assistant reply.
|
|
102
|
-
|
|
103
|
-
## Reasoning visibility (/reasoning)
|
|
104
|
-
|
|
105
|
-
- Levels: `on|off|stream`.
|
|
106
|
-
- Directive-only message toggles whether thinking blocks are shown in replies.
|
|
107
|
-
- When enabled, reasoning is sent as a **separate message** prefixed with `Thinking`.
|
|
108
|
-
- `stream`: streams reasoning while the reply is generating when the active channel supports reasoning previews, then sends the final answer without reasoning.
|
|
109
|
-
- Alias: `/reason`.
|
|
110
|
-
- Send `/reasoning` (or `/reasoning:`) with no argument to see the current reasoning level.
|
|
111
|
-
- Resolution order: inline directive, then session override, then per-agent default (`agents.list[].reasoningDefault`), then global default (`agents.defaults.reasoningDefault`), then fallback (`off`).
|
|
112
|
-
|
|
113
|
-
Malformed local-model reasoning tags are handled conservatively. Closed `<think>...</think>` blocks stay hidden on normal replies, and unclosed reasoning after already visible text is also hidden. If a reply is fully wrapped in a single unclosed opening tag and would otherwise deliver as empty text, FengMing removes the malformed opening tag and delivers the remaining text.
|
|
114
|
-
|
|
115
|
-
## Related
|
|
116
|
-
|
|
117
|
-
- Elevated mode docs live in [Elevated mode](/tools/elevated).
|
|
118
|
-
|
|
119
|
-
## Heartbeats
|
|
120
|
-
|
|
121
|
-
- Heartbeat probe body is the configured heartbeat prompt (default: `Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`). Inline directives in a heartbeat message apply as usual (but avoid changing session defaults from heartbeats).
|
|
122
|
-
- Heartbeat delivery defaults to the final payload only. To also send the separate `Thinking` message (when available), set `agents.defaults.heartbeat.includeReasoning: true` or per-agent `agents.list[].heartbeat.includeReasoning: true`.
|
|
123
|
-
|
|
124
|
-
## Web chat UI
|
|
125
|
-
|
|
126
|
-
- The web chat thinking selector mirrors the session's stored level from the inbound session store/config when the page loads.
|
|
127
|
-
- Picking another level writes the session override immediately via `sessions.patch`; it does not wait for the next send and it is not a one-shot `thinkingOnce` override.
|
|
128
|
-
- The first option is always the clear-override choice. It shows `Inherited: <resolved level>`, including `Inherited: Off` when inherited thinking is disabled.
|
|
129
|
-
- Explicit picker choices use their direct level labels while preserving provider labels when present (for example `Maximum` for a provider-labeled `max` option).
|
|
130
|
-
- The picker uses `thinkingLevels` returned by the gateway session row/defaults, with `thinkingOptions` kept as a legacy label list. The browser UI does not keep its own provider regex list; plugins own model-specific level sets.
|
|
131
|
-
- `/think:<level>` still works and updates the same stored session level, so chat directives and the picker stay in sync.
|
|
132
|
-
|
|
133
|
-
## Provider profiles
|
|
134
|
-
|
|
135
|
-
- Provider plugins can expose `resolveThinkingProfile(ctx)` to define the model's supported levels and default.
|
|
136
|
-
- Provider plugins that proxy Claude models should reuse `resolveClaudeThinkingProfile(modelId)` from `fengming/plugin-sdk/provider-model-shared` so direct Anthropic and proxy catalogs stay aligned.
|
|
137
|
-
- Each profile level has a stored canonical `id` (`off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `adaptive`, or `max`) and may include a display `label`. Binary providers use `{ id: "low", label: "on" }`.
|
|
138
|
-
- Profile hooks receive merged catalog facts when available, including `reasoning`, `compat.thinkingFormat`, and `compat.supportedReasoningEfforts`. Use those facts to expose binary or custom profiles only when the configured request contract supports the matching payload.
|
|
139
|
-
- Tool plugins that need to validate an explicit thinking override should use `api.runtime.agent.resolveThinkingPolicy({ provider, model })` plus `api.runtime.agent.normalizeThinkingLevel(...)`; they should not keep their own provider/model level lists.
|
|
140
|
-
- Tool plugins with access to configured custom model metadata can pass `catalog` into `resolveThinkingPolicy` so `compat.supportedReasoningEfforts` opt-ins are reflected in plugin-side validation.
|
|
141
|
-
- Published legacy hooks (`supportsXHighThinking`, `isBinaryThinking`, and `resolveDefaultThinkingLevel`) remain as compatibility adapters, but new custom level sets should use `resolveThinkingProfile`.
|
|
142
|
-
- Gateway rows/defaults expose `thinkingLevels`, `thinkingOptions`, and `thinkingDefault` so ACP/chat clients render the same profile ids and labels that runtime validation uses.
|
package/docs/tools/tokenjuice.md
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Compact noisy exec and bash tool results with the optional Tokenjuice plugin"
|
|
3
|
-
title: "Tokenjuice"
|
|
4
|
-
read_when:
|
|
5
|
-
- You want shorter `exec` or `bash` tool results in FengMing
|
|
6
|
-
- You want to install or enable the Tokenjuice plugin
|
|
7
|
-
- You need to understand what tokenjuice changes and what it leaves raw
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
`tokenjuice` is an optional external plugin that compacts noisy `exec` and `bash`
|
|
11
|
-
tool results after the command has already run.
|
|
12
|
-
|
|
13
|
-
It changes the returned `tool_result`, not the command itself. Tokenjuice does
|
|
14
|
-
not rewrite shell input, rerun commands, or change exit codes.
|
|
15
|
-
|
|
16
|
-
Today this applies to FengMing embedded runs and FengMing dynamic tools in the Codex
|
|
17
|
-
app-server harness. Tokenjuice hooks FengMing's tool-result middleware and
|
|
18
|
-
trims the output before it goes back into the active harness session.
|
|
19
|
-
|
|
20
|
-
## Enable the plugin
|
|
21
|
-
|
|
22
|
-
Install once:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
fengming plugins install clawhub:@fengming/tokenjuice
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Then enable it:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
fengming config set plugins.entries.tokenjuice.enabled true
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Equivalent:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
fengming plugins enable tokenjuice
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
If you prefer editing config directly:
|
|
41
|
-
|
|
42
|
-
```json5
|
|
43
|
-
{
|
|
44
|
-
plugins: {
|
|
45
|
-
entries: {
|
|
46
|
-
tokenjuice: {
|
|
47
|
-
enabled: true,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## What tokenjuice changes
|
|
55
|
-
|
|
56
|
-
- Compacts noisy `exec` and `bash` results before they are fed back into the session.
|
|
57
|
-
- Keeps the original command execution untouched.
|
|
58
|
-
- Preserves exact file-content reads and other commands that tokenjuice should leave raw.
|
|
59
|
-
- Stays opt-in: disable the plugin if you want verbatim output everywhere.
|
|
60
|
-
|
|
61
|
-
## Verify it is working
|
|
62
|
-
|
|
63
|
-
1. Enable the plugin.
|
|
64
|
-
2. Start a session that can call `exec`.
|
|
65
|
-
3. Run a noisy command such as `git status`.
|
|
66
|
-
4. Check that the returned tool result is shorter and more structured than the raw shell output.
|
|
67
|
-
|
|
68
|
-
## Disable the plugin
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
fengming config set plugins.entries.tokenjuice.enabled false
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Or:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
fengming plugins disable tokenjuice
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Related
|
|
81
|
-
|
|
82
|
-
- [Exec tool](/tools/exec)
|
|
83
|
-
- [Thinking levels](/tools/thinking)
|
|
84
|
-
- [Context engine](/concepts/context-engine)
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Tool Search: compact large FengMing tool catalogs behind search, describe, and call"
|
|
3
|
-
title: "Tool Search"
|
|
4
|
-
read_when:
|
|
5
|
-
- You want FengMing agents to use a large tool catalog without adding every tool schema to the prompt
|
|
6
|
-
- You want FengMing tools, MCP tools, and client tools exposed through one compact runtime surface
|
|
7
|
-
- You are implementing or debugging tool discovery for FengMing runs
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
Tool Search is an experimental FengMing agent runtime feature. It gives agents one
|
|
11
|
-
compact way to discover and call large tool catalogs. It is useful when the run
|
|
12
|
-
has many available tools but the model is likely to need only a few of them.
|
|
13
|
-
|
|
14
|
-
This page documents FengMing Tool Search. It is not the Codex-native tool
|
|
15
|
-
search or dynamic-tools surface. Codex-native code mode, tool search, deferred
|
|
16
|
-
dynamic tools, and nested tool calls are stable Codex harness surfaces and do
|
|
17
|
-
not depend on `tools.toolSearch`.
|
|
18
|
-
|
|
19
|
-
When enabled for FengMing runs, the model receives one `tool_search_code` tool by default.
|
|
20
|
-
That tool runs a short JavaScript body in an isolated Node subprocess with an
|
|
21
|
-
`fengming.tools` bridge:
|
|
22
|
-
|
|
23
|
-
```js
|
|
24
|
-
const hits = await fengming.tools.search("create a GitHub issue");
|
|
25
|
-
const tool = await fengming.tools.describe(hits[0].id);
|
|
26
|
-
return await fengming.tools.call(tool.id, {
|
|
27
|
-
title: "Crash on startup",
|
|
28
|
-
body: "Steps to reproduce...",
|
|
29
|
-
});
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
The catalog can include FengMing tools, plugin tools, MCP tools, and
|
|
33
|
-
client-provided tools. The model does not see every full schema up front.
|
|
34
|
-
Instead, it searches compact descriptors, describes one selected tool when it
|
|
35
|
-
needs the exact schema, and calls that tool through FengMing.
|
|
36
|
-
|
|
37
|
-
Codex harness runs do not receive these experimental FengMing Tool Search
|
|
38
|
-
controls. FengMing passes product capabilities to Codex as dynamic tools, and
|
|
39
|
-
Codex owns the stable native code mode, native tool search, deferred dynamic
|
|
40
|
-
tools, and nested tool calls.
|
|
41
|
-
|
|
42
|
-
## How a turn runs
|
|
43
|
-
|
|
44
|
-
At planning time the FengMing embedded runner builds the effective catalog for the
|
|
45
|
-
run:
|
|
46
|
-
|
|
47
|
-
1. Resolve the active tool policy for the agent, profile, sandbox, and session.
|
|
48
|
-
2. List eligible FengMing and plugin tools.
|
|
49
|
-
3. List eligible MCP tools through the session MCP runtime.
|
|
50
|
-
4. Add eligible client tools supplied for the current run.
|
|
51
|
-
5. Index compact descriptors for search.
|
|
52
|
-
6. Expose either the FengMing code bridge or the structured fallback tools to the
|
|
53
|
-
model.
|
|
54
|
-
|
|
55
|
-
At execution time every real tool call returns to FengMing. The isolated Node
|
|
56
|
-
runtime does not hold plugin implementations, MCP client objects, or secrets.
|
|
57
|
-
`fengming.tools.call(...)` crosses the bridge back into the Gateway, where the
|
|
58
|
-
normal policy, approval, hook, logging, and result handling still apply.
|
|
59
|
-
|
|
60
|
-
## Modes
|
|
61
|
-
|
|
62
|
-
`tools.toolSearch` has two model-facing modes:
|
|
63
|
-
|
|
64
|
-
- `code`: exposes `tool_search_code`, the default compact JavaScript bridge.
|
|
65
|
-
- `tools`: exposes `tool_search`, `tool_describe`, and `tool_call` as plain
|
|
66
|
-
structured tools for providers that should not receive code.
|
|
67
|
-
|
|
68
|
-
Both modes use the same catalog and execution path. The only difference is the
|
|
69
|
-
shape the model sees. If the current runtime cannot launch the isolated Node
|
|
70
|
-
code-mode child process, the default `code` mode falls back to `tools` before
|
|
71
|
-
catalog compaction.
|
|
72
|
-
|
|
73
|
-
Both modes are experimental. Prefer direct tool exposure for small FengMing tool
|
|
74
|
-
catalogs, and prefer the Codex-native stable surfaces for Codex harness runs.
|
|
75
|
-
|
|
76
|
-
There is no separate source-selection config. When Tool Search is enabled, the
|
|
77
|
-
catalog includes eligible FengMing, MCP, and client tools after normal policy
|
|
78
|
-
filtering.
|
|
79
|
-
|
|
80
|
-
## Why this exists
|
|
81
|
-
|
|
82
|
-
Large catalogs are useful but expensive. Sending every tool schema to the model
|
|
83
|
-
makes the request larger, slows planning, and increases accidental tool
|
|
84
|
-
selection.
|
|
85
|
-
|
|
86
|
-
Tool Search changes the shape:
|
|
87
|
-
|
|
88
|
-
- direct tools: the model sees every selected schema before the first token
|
|
89
|
-
- Tool Search code mode: the model sees one compact code tool and a short API
|
|
90
|
-
contract
|
|
91
|
-
- Tool Search tools mode: the model sees three compact structured fallback
|
|
92
|
-
tools
|
|
93
|
-
- during the turn: the model loads only the tool schemas it actually needs
|
|
94
|
-
|
|
95
|
-
Direct tool exposure is still the right default for small catalogs. Tool Search
|
|
96
|
-
is best when one run can see many tools, especially from MCP servers or
|
|
97
|
-
client-provided app tools.
|
|
98
|
-
|
|
99
|
-
## API
|
|
100
|
-
|
|
101
|
-
`fengming.tools.search(query, options?)`
|
|
102
|
-
|
|
103
|
-
Searches the effective catalog for the current run. Results are compact and safe
|
|
104
|
-
to put back into prompt context.
|
|
105
|
-
|
|
106
|
-
```js
|
|
107
|
-
const hits = await fengming.tools.search("calendar event", { limit: 5 });
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
`fengming.tools.describe(id)`
|
|
111
|
-
|
|
112
|
-
Loads full metadata for one search result, including the exact input schema.
|
|
113
|
-
|
|
114
|
-
```js
|
|
115
|
-
const calendarCreate = await fengming.tools.describe("mcp:calendar:create_event");
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
`fengming.tools.call(id, args)`
|
|
119
|
-
|
|
120
|
-
Calls a selected tool through FengMing.
|
|
121
|
-
|
|
122
|
-
```js
|
|
123
|
-
await fengming.tools.call(calendarCreate.id, {
|
|
124
|
-
summary: "Planning",
|
|
125
|
-
start: "2026-05-09T14:00:00Z",
|
|
126
|
-
});
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
The structured fallback mode exposes the same operations as tools:
|
|
130
|
-
|
|
131
|
-
- `tool_search`
|
|
132
|
-
- `tool_describe`
|
|
133
|
-
- `tool_call`
|
|
134
|
-
|
|
135
|
-
## Runtime boundary
|
|
136
|
-
|
|
137
|
-
The code bridge runs in a short-lived Node subprocess. The subprocess starts
|
|
138
|
-
with Node permission mode enabled, an empty environment, no filesystem or
|
|
139
|
-
network grants, and no child-process or worker grants. FengMing enforces a
|
|
140
|
-
parent-process wall-clock timeout and kills the subprocess on timeout, including
|
|
141
|
-
after async continuations.
|
|
142
|
-
|
|
143
|
-
The runtime exposes only:
|
|
144
|
-
|
|
145
|
-
- `console.log`, `console.warn`, and `console.error`
|
|
146
|
-
- `fengming.tools.search`
|
|
147
|
-
- `fengming.tools.describe`
|
|
148
|
-
- `fengming.tools.call`
|
|
149
|
-
|
|
150
|
-
Normal FengMing behavior still applies to final calls:
|
|
151
|
-
|
|
152
|
-
- tool allow and deny policies
|
|
153
|
-
- per-agent and per-sandbox tool restrictions
|
|
154
|
-
- channel/runtime tool policy
|
|
155
|
-
- approval hooks
|
|
156
|
-
- plugin `before_tool_call` hooks
|
|
157
|
-
- session identity, logs, and telemetry
|
|
158
|
-
|
|
159
|
-
## Config
|
|
160
|
-
|
|
161
|
-
Enable Tool Search for FengMing runs with the default code bridge:
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
fengming config set tools.toolSearch true
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Equivalent JSON:
|
|
168
|
-
|
|
169
|
-
```json5
|
|
170
|
-
{
|
|
171
|
-
tools: {
|
|
172
|
-
toolSearch: true,
|
|
173
|
-
},
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Use the structured fallback tools instead for FengMing runs:
|
|
178
|
-
|
|
179
|
-
```json5
|
|
180
|
-
{
|
|
181
|
-
tools: {
|
|
182
|
-
toolSearch: {
|
|
183
|
-
mode: "tools",
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Tune code-mode timeout and search result limits:
|
|
190
|
-
|
|
191
|
-
```json5
|
|
192
|
-
{
|
|
193
|
-
tools: {
|
|
194
|
-
toolSearch: {
|
|
195
|
-
mode: "code",
|
|
196
|
-
codeTimeoutMs: 10000,
|
|
197
|
-
searchDefaultLimit: 8,
|
|
198
|
-
maxSearchLimit: 20,
|
|
199
|
-
},
|
|
200
|
-
},
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Disable it:
|
|
205
|
-
|
|
206
|
-
```json5
|
|
207
|
-
{
|
|
208
|
-
tools: {
|
|
209
|
-
toolSearch: false,
|
|
210
|
-
},
|
|
211
|
-
}
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
## Prompt and telemetry
|
|
215
|
-
|
|
216
|
-
Tool Search records enough telemetry to compare it with direct tool exposure:
|
|
217
|
-
|
|
218
|
-
- total serialized tool and prompt bytes sent to the harness
|
|
219
|
-
- catalog size and source breakdown
|
|
220
|
-
- search, describe, and call counts
|
|
221
|
-
- final tool calls executed through FengMing
|
|
222
|
-
- selected tool ids and sources
|
|
223
|
-
|
|
224
|
-
Session logs should make it possible to answer:
|
|
225
|
-
|
|
226
|
-
- how many tool schemas the model saw up front
|
|
227
|
-
- how many search and describe operations it performed
|
|
228
|
-
- which final tool was called
|
|
229
|
-
- whether the result came from FengMing, MCP, or a client tool
|
|
230
|
-
|
|
231
|
-
## E2E validation
|
|
232
|
-
|
|
233
|
-
The gateway E2E runner proves both paths with the FengMing runtime:
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
node --import tsx scripts/tool-search-gateway-e2e.ts
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
It creates a temporary fake plugin with a large tool catalog, starts the mock
|
|
240
|
-
OpenAI provider, starts a Gateway once in direct mode and once with Tool Search
|
|
241
|
-
enabled, then compares provider request payloads and session logs.
|
|
242
|
-
|
|
243
|
-
The regression proves:
|
|
244
|
-
|
|
245
|
-
1. Direct mode can call the fake plugin tool.
|
|
246
|
-
2. Tool Search can call the same fake plugin tool.
|
|
247
|
-
3. Direct mode exposes the fake plugin tool schemas directly to the provider.
|
|
248
|
-
4. Tool Search exposes only the compact bridge.
|
|
249
|
-
5. The Tool Search request payload is smaller for the large fake catalog.
|
|
250
|
-
6. Session logs show the expected tool-call counts and bridged call telemetry.
|
|
251
|
-
|
|
252
|
-
## Failure behavior
|
|
253
|
-
|
|
254
|
-
Tool Search should fail closed:
|
|
255
|
-
|
|
256
|
-
- if a tool is not in the effective policy, search should not return it
|
|
257
|
-
- if a selected tool becomes unavailable, `tool_call` should fail
|
|
258
|
-
- if policy or approval blocks execution, the call result should report that
|
|
259
|
-
block instead of bypassing it
|
|
260
|
-
- if the code bridge cannot create an isolated runtime, use `mode: "tools"` or
|
|
261
|
-
disable Tool Search for that deployment
|
|
262
|
-
|
|
263
|
-
## Related
|
|
264
|
-
|
|
265
|
-
- [Tools and plugins](/tools)
|
|
266
|
-
- [Multi-agent sandbox and tools](/tools/multi-agent-sandbox-tools)
|
|
267
|
-
- [Exec tool](/tools/exec)
|
|
268
|
-
- [ACP agents setup](/tools/acp-agents-setup)
|
|
269
|
-
- [Building plugins](/plugins/building-plugins)
|