fengming 0.3.9 → 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/{bundled-channel-config-schema-DpdKMATU.d.ts → bundled-channel-config-schema-Bte--ZlY.d.ts} +26 -26
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli-startup-metadata.json +8 -8
- package/dist/control-ui/assets/{activity-B2W-IeAT.js → activity-wgT0-JR0.js} +2 -2
- package/dist/control-ui/assets/{agents-mRUyNVCz.js → agents-DG5PobrT.js} +2 -2
- package/dist/control-ui/assets/{channels-8QHOqBnt.js → channels-CX28oM42.js} +2 -2
- package/dist/control-ui/assets/{cron-H3unP_mO.js → cron-B8ixwBqU.js} +2 -2
- package/dist/control-ui/assets/{debug-CxLsQ9vH.js → debug-CnkYZUXy.js} +2 -2
- package/dist/control-ui/assets/{index-jtIYT0Eh.js → index-DQRZJKbO.js} +4 -4
- package/dist/control-ui/assets/{instances-B1JQeCRb.js → instances-BE3mV1JC.js} +2 -2
- package/dist/control-ui/assets/{nodes-RGOmq_1l.js → nodes-Cou4PWRX.js} +2 -2
- package/dist/control-ui/assets/{sessions-C2O-Jgpg.js → sessions-DpAaBT21.js} +2 -2
- package/dist/control-ui/assets/{skills-jyJOYA4I.js → skills-DjA_j_20.js} +2 -2
- package/dist/control-ui/assets/{workboard-uM_kK8cQ.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-DhOQs6M_.d.ts → index-DuDY3bCZ.d.ts} +45 -45
- 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 +4 -4
- 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/dist/{zod-schema.core-Cuz0lz6m.d.ts → zod-schema.core-BGLctDlK.d.ts} +1 -1
- package/package.json +7 -412
- package/CHANGELOG.md +0 -38
- 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/plugins/copilot.md
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Run FengMing embedded agent turns through the external GitHub Copilot SDK harness"
|
|
3
|
-
title: "Copilot SDK harness"
|
|
4
|
-
read_when:
|
|
5
|
-
- You want to use the GitHub Copilot SDK harness for an agent
|
|
6
|
-
- You need configuration examples for the `copilot` runtime
|
|
7
|
-
- You are wiring an agent to subscription Copilot (github / fengming / copilot) and want it to run through the Copilot CLI
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
The external `@fengming/copilot` plugin lets FengMing run embedded subscription
|
|
11
|
-
Copilot agent turns through the GitHub Copilot CLI (`@github/copilot-sdk`)
|
|
12
|
-
instead of the built-in PI harness.
|
|
13
|
-
|
|
14
|
-
Use the Copilot SDK harness when you want the Copilot CLI session to own the
|
|
15
|
-
low-level agent loop: native tool execution, native compaction
|
|
16
|
-
(`infiniteSessions`), and CLI-managed thread state under `copilotHome`.
|
|
17
|
-
FengMing still owns chat channels, session files, model selection, FengMing
|
|
18
|
-
dynamic tools (bridged), approvals, media delivery, the visible transcript
|
|
19
|
-
mirror, `/btw` side questions (handled by the in-tree PI fallback — see
|
|
20
|
-
[Side questions (`/btw`)](#side-questions-btw)), and `fengming doctor`.
|
|
21
|
-
|
|
22
|
-
For the broader model/provider/runtime split, start with
|
|
23
|
-
[Agent runtimes](/concepts/agent-runtimes).
|
|
24
|
-
|
|
25
|
-
## Requirements
|
|
26
|
-
|
|
27
|
-
- FengMing with the `@fengming/copilot` plugin installed.
|
|
28
|
-
- If your config uses `plugins.allow`, include `copilot` (the manifest
|
|
29
|
-
id declared by the plugin). A restrictive
|
|
30
|
-
allowlist that uses the npm-style `@fengming/copilot` package name
|
|
31
|
-
will leave the plugin blocked and the runtime will not load
|
|
32
|
-
even with `agentRuntime.id: "copilot"`.
|
|
33
|
-
- A GitHub Copilot subscription that can drive the Copilot CLI (or a
|
|
34
|
-
`gitHubToken` env / auth-profile entry for headless / cron runs).
|
|
35
|
-
- A writable `copilotHome` directory. The harness defaults to
|
|
36
|
-
`~/.fengming/agents/<agentId>/copilot` for full per-agent isolation. The
|
|
37
|
-
platform default (`%APPDATA%\copilot` on Windows, `$XDG_CONFIG_HOME/copilot`
|
|
38
|
-
or `~/.config/copilot` elsewhere) is used as the doctor probe fallback when
|
|
39
|
-
no explicit home is set.
|
|
40
|
-
|
|
41
|
-
`fengming doctor` runs the plugin
|
|
42
|
-
[doctor contract](#doctor-and-probes) for the extension; failures there are
|
|
43
|
-
the canonical way to confirm the environment is ready before opting an agent
|
|
44
|
-
in.
|
|
45
|
-
|
|
46
|
-
## Plugin install
|
|
47
|
-
|
|
48
|
-
The Copilot runtime is an external plugin so the core `fengming` package does
|
|
49
|
-
not carry the `@github/copilot-sdk` dependency or its platform-specific
|
|
50
|
-
`@github/copilot-<platform>-<arch>` CLI binary. Together they add roughly
|
|
51
|
-
260 MB, so install them only for agents that opt into this runtime:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
fengming plugins install @fengming/copilot
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
The wizard installs the plugin the first time you select a
|
|
58
|
-
`github-copilot/*` model **and** your config opts the model (or its
|
|
59
|
-
provider) into the Copilot agent runtime via
|
|
60
|
-
`agentRuntime: { id: "copilot" }` (see [Quickstart](#quickstart) below).
|
|
61
|
-
Without the opt-in, fengming uses its built-in GitHub Copilot provider
|
|
62
|
-
and never installs the runtime plugin.
|
|
63
|
-
|
|
64
|
-
The runtime resolves the SDK in this order:
|
|
65
|
-
|
|
66
|
-
1. `import("@github/copilot-sdk")` from the installed `@fengming/copilot`
|
|
67
|
-
package.
|
|
68
|
-
2. The well-known fallback dir `~/.fengming/npm-runtime/copilot/` (the
|
|
69
|
-
legacy on-demand install target).
|
|
70
|
-
|
|
71
|
-
A missing SDK surfaces a single error with code `COPILOT_SDK_MISSING`
|
|
72
|
-
and the plugin reinstall command above.
|
|
73
|
-
|
|
74
|
-
## Quickstart
|
|
75
|
-
|
|
76
|
-
Pin one model (or one provider) to the harness:
|
|
77
|
-
|
|
78
|
-
```json5
|
|
79
|
-
{
|
|
80
|
-
agents: {
|
|
81
|
-
defaults: {
|
|
82
|
-
model: "github-copilot/gpt-5.5",
|
|
83
|
-
models: {
|
|
84
|
-
"github-copilot/gpt-5.5": {
|
|
85
|
-
agentRuntime: { id: "copilot" },
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Both routes are equivalent. Use `agentRuntime.id` on a single model entry
|
|
94
|
-
when only that model should be routed through the harness; set
|
|
95
|
-
`agentRuntime.id` on a provider when every model under that provider should
|
|
96
|
-
use it.
|
|
97
|
-
|
|
98
|
-
## Supported providers
|
|
99
|
-
|
|
100
|
-
The harness advertises support for the canonical `github-copilot` provider
|
|
101
|
-
(the same id owned by `extensions/github-copilot`):
|
|
102
|
-
|
|
103
|
-
- `github-copilot`
|
|
104
|
-
|
|
105
|
-
Anything outside that set falls through `selection.ts`'s `auto_pi` branch back
|
|
106
|
-
to PI.
|
|
107
|
-
|
|
108
|
-
## Auth
|
|
109
|
-
|
|
110
|
-
Per-agent precedence, applied during `runCopilotAttempt`:
|
|
111
|
-
|
|
112
|
-
1. **Explicit `useLoggedInUser: true`** on the attempt input. Uses the Copilot
|
|
113
|
-
CLI's logged-in user resolved under the agent's `copilotHome`.
|
|
114
|
-
2. **Explicit `gitHubToken`** on the attempt input (with `profileId` +
|
|
115
|
-
`profileVersion`). Useful for direct CLI invocations and tests where the
|
|
116
|
-
caller wants to bypass auth-profile resolution.
|
|
117
|
-
3. **Contract-resolved `resolvedApiKey` + `authProfileId`** from the
|
|
118
|
-
`EmbeddedRunAttemptParams` shape. This is the **production main path**:
|
|
119
|
-
core resolves the agent's configured `github-copilot` auth profile
|
|
120
|
-
(via `src/infra/provider-usage.auth.ts:resolveProviderAuths`) before
|
|
121
|
-
invoking the harness, and the harness consumes both fields directly.
|
|
122
|
-
This makes a `github-copilot:<profile>` auth profile work end-to-end
|
|
123
|
-
for headless / cron / multi-profile setups without env vars.
|
|
124
|
-
4. **Env-var fallback** for direct CLI / dogfood runs where no auth
|
|
125
|
-
profile is configured. The runtime checks the following vars in
|
|
126
|
-
precedence order, mirroring the shipped `github-copilot` provider
|
|
127
|
-
(`extensions/github-copilot/auth.ts`) and the documented Copilot SDK
|
|
128
|
-
setup:
|
|
129
|
-
1. `FENGMING_GITHUB_TOKEN` -- harness-specific override; set this
|
|
130
|
-
to pin a token for the FengMing harness without disturbing
|
|
131
|
-
system-wide `gh` / Copilot CLI config.
|
|
132
|
-
2. `COPILOT_GITHUB_TOKEN` -- standard Copilot SDK / CLI env var.
|
|
133
|
-
3. `GH_TOKEN` -- standard `gh` CLI env var (matches the existing
|
|
134
|
-
`github-copilot` provider precedence).
|
|
135
|
-
4. `GITHUB_TOKEN` -- generic GitHub token fallback.
|
|
136
|
-
|
|
137
|
-
The first non-empty value wins; empty strings are treated as
|
|
138
|
-
absent. The synthesised pool profile id is `env:<NAME>` and the
|
|
139
|
-
profileVersion is a non-reversible sha256 fingerprint of the
|
|
140
|
-
token, so rotating the env value cleanly busts the client pool.
|
|
141
|
-
|
|
142
|
-
5. **Default `useLoggedInUser`** when no token signal is available.
|
|
143
|
-
|
|
144
|
-
Each agent gets a dedicated `copilotHome` so Copilot CLI tokens, sessions, and
|
|
145
|
-
config do not leak between agents on the same machine. The default is
|
|
146
|
-
`<agentDir>/copilot` when the host hands the harness an agent directory
|
|
147
|
-
(isolating SDK state from FengMing's `models.json` / `auth-profiles.json` in
|
|
148
|
-
the same directory), or `~/.fengming/agents/<agentId>/copilot` otherwise.
|
|
149
|
-
Override with `copilotHome: <path>` on the attempt input when you need a
|
|
150
|
-
custom location (for example, a shared mount for migration).
|
|
151
|
-
|
|
152
|
-
`probeCopilotAuthShape` (see [Doctor and probes](#doctor-and-probes)) is the
|
|
153
|
-
pure shape check that validates which of the modes above will be used.
|
|
154
|
-
It does not perform a live SDK handshake.
|
|
155
|
-
|
|
156
|
-
## Configuration surface
|
|
157
|
-
|
|
158
|
-
The harness reads its config from per-attempt input
|
|
159
|
-
(`runCopilotAttempt({...})`) plus a small set of env defaults inside
|
|
160
|
-
`extensions/copilot/src/`:
|
|
161
|
-
|
|
162
|
-
- `copilotHome` — per-agent CLI state directory (defaults documented above).
|
|
163
|
-
- `model` — string or `{ provider, id, api? }`. When omitted, FengMing uses
|
|
164
|
-
the agent's normal model selection and the harness verifies the resolved
|
|
165
|
-
provider is in the supported set.
|
|
166
|
-
- `reasoningEffort` — `"low" | "medium" | "high" | "xhigh"`. Maps from
|
|
167
|
-
FengMing's `ThinkLevel` / `ReasoningLevel` resolution in
|
|
168
|
-
`auto-reply/thinking.ts`.
|
|
169
|
-
- `infiniteSessionConfig` — optional override for the SDK
|
|
170
|
-
`infiniteSessions` block driven by `harness.compact`. Defaults are safe to
|
|
171
|
-
leave as-is.
|
|
172
|
-
- `hooksConfig` — optional bridge config exposing FengMing
|
|
173
|
-
before/after-message-write hooks to the SDK loop.
|
|
174
|
-
- `permissionPolicy` — optional override for the SDK's
|
|
175
|
-
`onPermissionRequest` handler used for built-in SDK tool kinds
|
|
176
|
-
(`shell`, `write`, `read`, `url`, `mcp`, `memory`, `hook`). Defaults
|
|
177
|
-
to `rejectAllPolicy` as a safety net; in practice the SDK never
|
|
178
|
-
invokes any of those kinds because every bridged FengMing tool is
|
|
179
|
-
registered with `overridesBuiltInTool: true` and
|
|
180
|
-
`skipPermission: true` so 100% of tool calls flow through FengMing's
|
|
181
|
-
wrapped `execute()`. See [Permissions and ask_user](#permissions-and-ask_user).
|
|
182
|
-
- `enableSessionTelemetry` — opt-in OpenTelemetry routing via
|
|
183
|
-
`telemetry-bridge.ts`.
|
|
184
|
-
|
|
185
|
-
Nothing in the rest of FengMing needs to know about these fields. Other
|
|
186
|
-
plugins, channels, and core code only see the standard
|
|
187
|
-
`AgentHarnessAttemptParams` / `AgentHarnessAttemptResult` shape.
|
|
188
|
-
|
|
189
|
-
## Compaction
|
|
190
|
-
|
|
191
|
-
When `harness.compact` runs, the Copilot SDK harness:
|
|
192
|
-
|
|
193
|
-
1. Enables `infiniteSessions` on the SDK session.
|
|
194
|
-
2. Lets the SDK perform its native compaction.
|
|
195
|
-
3. Writes an FengMing-shaped marker at
|
|
196
|
-
`workspacePath/files/fengming-compaction-<ts>.json` so existing FengMing
|
|
197
|
-
transcript readers still see a familiar artifact.
|
|
198
|
-
|
|
199
|
-
The FengMing side transcript mirror (see below) continues to receive the
|
|
200
|
-
post-compaction messages, so user-facing chat history stays consistent.
|
|
201
|
-
|
|
202
|
-
## Transcript mirroring
|
|
203
|
-
|
|
204
|
-
`runCopilotAttempt` dual-writes each turn's mirrorable messages into the
|
|
205
|
-
FengMing audit transcript via
|
|
206
|
-
`extensions/copilot/src/dual-write-transcripts.ts`. The mirror is
|
|
207
|
-
per-session scoped (`copilot:${sessionId}`) and uses a per-message
|
|
208
|
-
identity (`${role}:${sha256_16(role,content)}`) so re-emits of prior-turn
|
|
209
|
-
entries collide with existing on-disk keys and do not duplicate.
|
|
210
|
-
|
|
211
|
-
The mirror is wrapped in two layers of failure containment so a transcript
|
|
212
|
-
write failure cannot fail the attempt: an internal best-effort wrapper and a
|
|
213
|
-
defense-in-depth `.catch(...)` at the attempt level. Failures are logged but
|
|
214
|
-
not surfaced.
|
|
215
|
-
|
|
216
|
-
## Side questions (`/btw`)
|
|
217
|
-
|
|
218
|
-
`/btw` is **not** native on this harness. `createCopilotAgentHarness()`
|
|
219
|
-
deliberately leaves `harness.runSideQuestion` undefined, so FengMing's `/btw`
|
|
220
|
-
dispatcher (`src/agents/btw.ts`) falls through to the same in-tree PI fallback
|
|
221
|
-
path it uses for every non-Codex runtime: the configured model provider is
|
|
222
|
-
called directly with a short side-question prompt and streamed back via
|
|
223
|
-
`streamSimple` (no CLI session, no extra pool slot).
|
|
224
|
-
|
|
225
|
-
This keeps Copilot CLI sessions reserved for the agent's main turn loop, and
|
|
226
|
-
keeps `/btw` behavior identical to other PI-backed runtimes. The contract is
|
|
227
|
-
asserted in
|
|
228
|
-
[`extensions/copilot/harness.test.ts`](https://github.com/fengming/fengming/blob/main/extensions/copilot/harness.test.ts)
|
|
229
|
-
under `describe("runSideQuestion")`.
|
|
230
|
-
|
|
231
|
-
## Doctor and probes
|
|
232
|
-
|
|
233
|
-
`extensions/copilot/doctor-contract-api.ts` is auto-loaded by
|
|
234
|
-
`src/plugins/doctor-contract-registry.ts`. It contributes:
|
|
235
|
-
|
|
236
|
-
- An empty `legacyConfigRules` (no retired fields at MVP).
|
|
237
|
-
- A no-op `normalizeCompatibilityConfig` (kept so future field retirements
|
|
238
|
-
have a stable in-tree home).
|
|
239
|
-
- One `sessionRouteStateOwners` entry claiming provider `github-copilot`;
|
|
240
|
-
runtime `copilot`; CLI session key `copilot`; auth profile
|
|
241
|
-
prefix `github-copilot:`.
|
|
242
|
-
|
|
243
|
-
`extensions/copilot/src/doctor-probes.ts` exports three imperative probes
|
|
244
|
-
that hosts (including `fengming doctor`) can call to verify the environment:
|
|
245
|
-
|
|
246
|
-
| Probe | What it checks | Reasons it can fail |
|
|
247
|
-
| -------------------------- | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
248
|
-
| `probeCopilotCliVersion` | `copilot --version` exits 0 with a non-empty version string | `non-zero-exit`, `empty-version`, `spawn-failed`, `spawn-error`, `probe-timeout` |
|
|
249
|
-
| `probeCopilotHomeWritable` | `mkdir -p copilotHome` + write + rm a marker file | `copilothome-not-writable` (with the underlying fs error in `details.rawError`) |
|
|
250
|
-
| `probeCopilotAuthShape` | At least one of `useLoggedInUser`, `gitHubToken`, or `profileId`+`profileVersion` | `no-auth-source` |
|
|
251
|
-
|
|
252
|
-
Each probe accepts a DI seam (`spawnFn`, `fsApi`) so tests do not spawn the
|
|
253
|
-
real Copilot CLI or touch the host fs.
|
|
254
|
-
|
|
255
|
-
## Limitations
|
|
256
|
-
|
|
257
|
-
- The harness only claims the canonical `github-copilot` provider at MVP.
|
|
258
|
-
Additional providers (BYOK or otherwise) should land in follow-up PRs that
|
|
259
|
-
ship the adapter alongside the wire-up.
|
|
260
|
-
- The harness does not deliver TUI; PI's TUI is unaffected and remains the
|
|
261
|
-
fallback for whatever runtimes do not have a peer surface.
|
|
262
|
-
- PI session state is not migrated when an agent switches to `copilot`.
|
|
263
|
-
Selection is per attempt; existing PI sessions remain valid.
|
|
264
|
-
- **Interactive `ask_user` is not yet wired.** The SDK's
|
|
265
|
-
`onUserInputRequest` handler is intentionally not registered, which
|
|
266
|
-
per the SDK contract hides the `ask_user` tool from the model
|
|
267
|
-
entirely. Agents running under this harness make best-judgment
|
|
268
|
-
decisions from the initial prompt rather than asking clarifying
|
|
269
|
-
questions mid-turn. A follow-up will port the codex pattern at
|
|
270
|
-
`extensions/codex/src/app-server/user-input-bridge.ts` to route SDK
|
|
271
|
-
`UserInputRequest`s through the FengMing channel/TUI prompt path; the
|
|
272
|
-
dormant scaffolding in `extensions/copilot/src/user-input-bridge.ts`
|
|
273
|
-
is the surface that follow-up will wire.
|
|
274
|
-
|
|
275
|
-
## Permissions and ask_user
|
|
276
|
-
|
|
277
|
-
Permission enforcement for bridged FengMing tools happens **inside the
|
|
278
|
-
tool wrapper**, not via the SDK's `onPermissionRequest` callback. The
|
|
279
|
-
same `wrapToolWithBeforeToolCallHook` that PI uses
|
|
280
|
-
(`src/agents/pi-tools.before-tool-call.ts`) is applied by
|
|
281
|
-
`createFengMingCodingTools` to every coding tool: loop detection,
|
|
282
|
-
trusted plugin policies, before-tool-call hooks, and two-phase plugin
|
|
283
|
-
approvals via the gateway (`plugin.approval.request`) all run with the
|
|
284
|
-
exact same code path as native PI attempts.
|
|
285
|
-
|
|
286
|
-
To let that wrapper own the decision, the SDK Tool returned by
|
|
287
|
-
`convertFengMingToolToSdkTool` is marked with:
|
|
288
|
-
|
|
289
|
-
- `overridesBuiltInTool: true` — replaces the Copilot CLI's built-in
|
|
290
|
-
tool of the same name (edit, read, write, bash, …) so every tool
|
|
291
|
-
invocation routes back to FengMing.
|
|
292
|
-
- `skipPermission: true` — tells the SDK not to fire
|
|
293
|
-
`onPermissionRequest({kind: "custom-tool"})` before invoking the tool.
|
|
294
|
-
The wrapped `execute()` performs the richer FengMing policy check
|
|
295
|
-
internally; an SDK-level prompt would either short-circuit FengMing's
|
|
296
|
-
enforcement (if we allow-all) or block every tool call (if we
|
|
297
|
-
reject-all) — neither matches PI parity.
|
|
298
|
-
|
|
299
|
-
The in-tree codex harness uses the same split: bridged FengMing tools
|
|
300
|
-
are wrapped (`extensions/codex/src/app-server/dynamic-tools.ts`) and
|
|
301
|
-
the codex-app-server's _own_ native approval kinds
|
|
302
|
-
(`item/commandExecution/requestApproval`,
|
|
303
|
-
`item/fileChange/requestApproval`,
|
|
304
|
-
`item/permissions/requestApproval`) are routed through
|
|
305
|
-
`plugin.approval.request`
|
|
306
|
-
(`extensions/codex/src/app-server/approval-bridge.ts`). The Copilot SDK
|
|
307
|
-
equivalent — fail-closed `rejectAllPolicy` for any non-`custom-tool`
|
|
308
|
-
kind that ever reaches `onPermissionRequest` — is the same safety net,
|
|
309
|
-
and it does not fire in practice because `overridesBuiltInTool: true`
|
|
310
|
-
displaces every built-in.
|
|
311
|
-
|
|
312
|
-
For the wrapped-tool layer to make policy decisions equivalent to PI,
|
|
313
|
-
the harness forwards the full PI attempt-tool context to
|
|
314
|
-
`createFengMingCodingTools` — identity (`senderIsOwner`,
|
|
315
|
-
`memberRoleIds`, `ownerOnlyToolAllowlist`, …), channel/routing
|
|
316
|
-
(`groupId`, `currentChannelId`, `replyToMode`, message-tool toggles),
|
|
317
|
-
auth (`authProfileStore`), run identity
|
|
318
|
-
(`sessionKey`/`runSessionKey` derived from `sandboxSessionKey`,
|
|
319
|
-
`runId`), model context (`modelApi`, `modelContextWindowTokens`,
|
|
320
|
-
`modelCompat`, `modelHasVision`), and run hooks (`onToolOutcome`,
|
|
321
|
-
`onYield`). Without those fields, owner-only allowlists silently
|
|
322
|
-
behave as deny-by-default, plugin-trust policies cannot resolve to the
|
|
323
|
-
right scope, and `session_status: "current"` resolves to a stale
|
|
324
|
-
sandbox key. The bridge builder is in
|
|
325
|
-
`extensions/copilot/src/tool-bridge.ts` and mirrors the PI
|
|
326
|
-
authoritative call at
|
|
327
|
-
`src/agents/pi-embedded-runner/run/attempt.ts:1029-1117`. Two PI fields
|
|
328
|
-
are intentionally **not** forwarded at MVP and tracked as follow-ups:
|
|
329
|
-
`sandbox` (the harness does not yet route through `resolveSandboxContext`)
|
|
330
|
-
and the PI tool-search/code-mode machinery
|
|
331
|
-
(`toolSearchCatalogRef`, `includeCoreTools`,
|
|
332
|
-
`includeToolSearchControls`, `toolSearchCatalogExecutor`,
|
|
333
|
-
`toolConstructionPlan`), which has no analog at the SDK boundary.
|
|
334
|
-
|
|
335
|
-
### Session-level GitHub token
|
|
336
|
-
|
|
337
|
-
The Copilot SDK contract distinguishes the **client-level** GitHub
|
|
338
|
-
token (`CopilotClientOptions.gitHubToken`, used to authenticate the
|
|
339
|
-
CLI process itself) from the **session-level** token
|
|
340
|
-
(`SessionConfig.gitHubToken`, which determines content exclusion,
|
|
341
|
-
model routing, and quota for that session and is honored on both
|
|
342
|
-
`createSession` and `resumeSession`). The harness resolves auth once
|
|
343
|
-
via `resolveCopilotAuth` and sets both fields when the auth mode is
|
|
344
|
-
`gitHubToken` (an explicit `auth.gitHubToken` or a contract-resolved
|
|
345
|
-
`resolvedApiKey` from a configured `github-copilot` auth profile).
|
|
346
|
-
When the resolved mode is `useLoggedInUser`, the session-level field
|
|
347
|
-
is omitted so the SDK keeps deriving identity from the logged-in
|
|
348
|
-
identity.
|
|
349
|
-
|
|
350
|
-
`ask_user` is intentionally hidden — see Limitations above.
|
|
351
|
-
|
|
352
|
-
## Related
|
|
353
|
-
|
|
354
|
-
- [Agent runtimes](/concepts/agent-runtimes)
|
|
355
|
-
- [Codex harness](/plugins/codex-harness)
|
|
356
|
-
- [Agent harness plugins (SDK reference)](/plugins/sdk-agent-harness)
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "How FengMing installs plugin packages and resolves plugin dependencies"
|
|
3
|
-
read_when:
|
|
4
|
-
- You are debugging plugin package installs
|
|
5
|
-
- You are changing plugin startup, doctor, or package-manager install behavior
|
|
6
|
-
- You are maintaining packaged FengMing installs or bundled plugin manifests
|
|
7
|
-
title: "Plugin dependency resolution"
|
|
8
|
-
sidebarTitle: "Dependencies"
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
FengMing keeps plugin dependency work at install/update time. Runtime loading
|
|
12
|
-
does not run package managers, repair dependency trees, or mutate the FengMing
|
|
13
|
-
package directory.
|
|
14
|
-
|
|
15
|
-
## Responsibility split
|
|
16
|
-
|
|
17
|
-
Plugin packages own their dependency graph:
|
|
18
|
-
|
|
19
|
-
- runtime dependencies live in the plugin package `dependencies` or
|
|
20
|
-
`optionalDependencies`
|
|
21
|
-
- SDK/core imports are peer or supplied FengMing imports
|
|
22
|
-
- local development plugins bring their own already-installed dependencies
|
|
23
|
-
- npm and git plugins are installed into FengMing-owned package roots
|
|
24
|
-
|
|
25
|
-
FengMing owns only the plugin lifecycle:
|
|
26
|
-
|
|
27
|
-
- discover the plugin source
|
|
28
|
-
- install or update the package when explicitly requested
|
|
29
|
-
- record the install metadata
|
|
30
|
-
- load the plugin entrypoint
|
|
31
|
-
- fail with an actionable error when dependencies are missing
|
|
32
|
-
|
|
33
|
-
## Install roots
|
|
34
|
-
|
|
35
|
-
FengMing uses stable per-source roots:
|
|
36
|
-
|
|
37
|
-
- npm packages install into per-plugin projects under
|
|
38
|
-
`~/.fengming/npm/projects/<encoded-package>`
|
|
39
|
-
- git packages clone under `~/.fengming/git`
|
|
40
|
-
- local/path/archive installs are copied or referenced without dependency repair
|
|
41
|
-
|
|
42
|
-
npm installs run in that per-plugin project root with:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
cd ~/.fengming/npm/projects/<encoded-package>
|
|
46
|
-
npm install --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
`fengming plugins install npm-pack:<path.tgz>` uses that same per-plugin npm
|
|
50
|
-
project root for a local npm-pack tarball. FengMing reads the tarball's npm
|
|
51
|
-
metadata, adds it to the managed project as a copied `file:` dependency, runs
|
|
52
|
-
the normal npm install, and then verifies the installed lockfile metadata before
|
|
53
|
-
trusting the plugin.
|
|
54
|
-
This is intended for package-acceptance and release-candidate proof where a
|
|
55
|
-
local pack artifact should behave like the registry artifact it simulates.
|
|
56
|
-
|
|
57
|
-
npm may hoist transitive dependencies to the per-plugin project's
|
|
58
|
-
`node_modules` beside the plugin package. FengMing scans the managed project
|
|
59
|
-
root before trusting the install and removes that project during uninstall, so
|
|
60
|
-
hoisted runtime dependencies stay inside that plugin's cleanup boundary.
|
|
61
|
-
|
|
62
|
-
Published npm plugin packages can ship `npm-shrinkwrap.json`. npm uses that
|
|
63
|
-
publishable lockfile during install, and FengMing's managed npm project root
|
|
64
|
-
supports it through the normal npm install path. FengMing-owned publishable
|
|
65
|
-
plugin packages must include a package-local shrinkwrap generated from that
|
|
66
|
-
plugin package's published dependency graph:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
pnpm deps:shrinkwrap:generate
|
|
70
|
-
pnpm deps:shrinkwrap:check
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
The generator strips plugin `devDependencies`, applies the workspace override
|
|
74
|
-
policy, and writes `extensions/<id>/npm-shrinkwrap.json` for each
|
|
75
|
-
`publishToNpm` plugin. Third-party plugin packages may also ship shrinkwrap;
|
|
76
|
-
FengMing does not require it for community packages, but npm will respect it
|
|
77
|
-
when present.
|
|
78
|
-
|
|
79
|
-
FengMing-owned npm plugin packages can also publish with explicit
|
|
80
|
-
`bundledDependencies`. The npm publish path overlays the runtime dependency
|
|
81
|
-
name list, removes dev-only workspace metadata from the published package
|
|
82
|
-
manifest, runs a script-free npm install for package-local runtime
|
|
83
|
-
dependencies, then packs or publishes the plugin tarball with those dependency
|
|
84
|
-
files included. Native-heavy packages, including Codex and ACP runtimes, opt out
|
|
85
|
-
with `fengming.release.bundleRuntimeDependencies: false`; those packages still
|
|
86
|
-
ship their shrinkwrap, but npm resolves runtime dependencies during install
|
|
87
|
-
instead of embedding every platform binary in the plugin tarball. The root
|
|
88
|
-
`fengming` package does not bundle its full dependency tree.
|
|
89
|
-
|
|
90
|
-
Plugins that import `fengming/plugin-sdk/*` declare `fengming` as a peer
|
|
91
|
-
dependency. FengMing does not let npm install a separate registry copy of the
|
|
92
|
-
host package into a managed project, because stale host packages can affect npm
|
|
93
|
-
peer resolution inside that plugin. Managed npm installs skip npm peer
|
|
94
|
-
resolution/materialization and FengMing reasserts plugin-local
|
|
95
|
-
`node_modules/fengming` links for installed packages that declare the host peer
|
|
96
|
-
after install or update.
|
|
97
|
-
|
|
98
|
-
git installs clone or refresh the repository, then run:
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
npm install --omit=dev --ignore-scripts --no-audit --no-fund
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
The installed plugin then loads from that package directory, so package-local
|
|
105
|
-
and parent `node_modules` resolution works the same way it does for a normal
|
|
106
|
-
Node package.
|
|
107
|
-
|
|
108
|
-
## Local plugins
|
|
109
|
-
|
|
110
|
-
Local plugins are treated as developer-controlled directories. FengMing does not
|
|
111
|
-
run `npm install`, `pnpm install`, or dependency repair for them. If a local
|
|
112
|
-
plugin has dependencies, install them in that plugin before loading it.
|
|
113
|
-
|
|
114
|
-
Third-party TypeScript local plugins can use the emergency Jiti path. Packaged
|
|
115
|
-
JavaScript plugins and bundled internal plugins load through native
|
|
116
|
-
import/require instead of Jiti.
|
|
117
|
-
|
|
118
|
-
## Startup and reload
|
|
119
|
-
|
|
120
|
-
Gateway startup and config reload never install plugin dependencies. They read
|
|
121
|
-
the plugin install records, compute the entrypoint, and load it.
|
|
122
|
-
|
|
123
|
-
If a dependency is missing at runtime, the plugin fails to load and the error
|
|
124
|
-
should point the operator to an explicit fix:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
fengming plugins update <id>
|
|
128
|
-
fengming plugins install <source>
|
|
129
|
-
fengming doctor --fix
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
`doctor --fix` can clean legacy FengMing-generated dependency state and recover
|
|
133
|
-
downloadable plugins that are missing from the local install records when config
|
|
134
|
-
references them. Doctor does not repair dependencies for an already-installed
|
|
135
|
-
local plugin.
|
|
136
|
-
|
|
137
|
-
## Bundled plugins
|
|
138
|
-
|
|
139
|
-
Lightweight and core-critical bundled plugins are shipped as part of FengMing.
|
|
140
|
-
They should either have no heavy runtime dependency tree or be moved out to a
|
|
141
|
-
downloadable package on ClawHub/npm.
|
|
142
|
-
|
|
143
|
-
For the current generated list of plugins that ship in the core package, install
|
|
144
|
-
externally, or stay source-only, see [Plugin inventory](/plugins/plugin-inventory).
|
|
145
|
-
|
|
146
|
-
Bundled plugin manifests must not request dependency staging. Large or optional
|
|
147
|
-
plugin functionality should be packaged as a normal plugin and installed through
|
|
148
|
-
the same npm/git/ClawHub path as third-party plugins.
|
|
149
|
-
|
|
150
|
-
In source checkouts, FengMing treats the repository as a pnpm monorepo. After
|
|
151
|
-
`pnpm install`, bundled plugins load from `extensions/<id>` so package-local
|
|
152
|
-
workspace dependencies are available and edits are picked up directly. Source
|
|
153
|
-
checkout development is pnpm-only; plain `npm install` at the repository root is
|
|
154
|
-
not a supported way to prepare bundled plugin dependencies.
|
|
155
|
-
|
|
156
|
-
| Install shape | Bundled plugin location | Dependency owner |
|
|
157
|
-
| -------------------------------- | ------------------------------------- | -------------------------------------------------------------------- |
|
|
158
|
-
| `npm install -g fengming` | Built runtime tree inside the package | FengMing package and explicit plugin install/update/doctor flows |
|
|
159
|
-
| Git checkout plus `pnpm install` | `extensions/<id>` workspace packages | The pnpm workspace, including each plugin package's own dependencies |
|
|
160
|
-
| `fengming plugins install ...` | Managed npm project/git/ClawHub root | The plugin install/update flow |
|
|
161
|
-
|
|
162
|
-
## Legacy cleanup
|
|
163
|
-
|
|
164
|
-
Older FengMing versions generated bundled-plugin dependency roots at startup or
|
|
165
|
-
during doctor repair. Current doctor cleanup removes those stale directories and
|
|
166
|
-
symlinks when `--fix` is used, including old `plugin-runtime-deps` roots, global
|
|
167
|
-
Node-prefix package symlinks that point at pruned `plugin-runtime-deps` targets,
|
|
168
|
-
`.fengming-runtime-deps*` manifests, generated plugin `node_modules`, install
|
|
169
|
-
stage directories, and package-local pnpm stores. Packaged postinstall also
|
|
170
|
-
removes those global symlinks before pruning the legacy target roots so upgrades
|
|
171
|
-
do not leave dangling ESM package imports.
|
|
172
|
-
|
|
173
|
-
Older npm installs also used a shared `~/.fengming/npm/node_modules` root.
|
|
174
|
-
Current install, update, uninstall, and doctor flows still recognize that legacy
|
|
175
|
-
flat root only for recovery and cleanup. New npm installs should create
|
|
176
|
-
per-plugin project roots instead.
|