@microi.net/cli 5.8.4 → 5.8.6
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/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/LICENSE +21 -21
- package/README.md +71 -71
- package/assets/build-meta.json +7 -7
- package/assets/feature-matrix.json +138 -138
- package/assets/logo.svg +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/codex-marketplace.json +20 -20
- package/scripts/mcp-codex-stdio-adapter.js +189 -189
- package/scripts/mcp-server.js +5 -0
- package/scripts/mcp-trae-windows-launcher.cmd +21 -21
- package/scripts/microi-cli-mcp.js +7 -7
- package/scripts/microi-cli.js +67 -66
- package/scripts/microi-codex-broker.js +450 -450
- package/scripts/microi-codex-router.js +618 -582
- package/scripts/microi-skills.meta.json +384 -384
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/README.md +287 -287
- package/skills/ai-engine/SKILL.md +269 -265
- package/skills/ai-engine/agents/openai.yaml +4 -4
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/SKILL.md +177 -177
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
- package/skills/app-store/SKILL.md +525 -525
- package/skills/app-store/agents/openai.yaml +4 -4
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/datasource-engine/agents/openai.yaml +4 -4
- package/skills/dos-orm/SKILL.md +97 -97
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/job-engine/agents/openai.yaml +4 -4
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/agents/openai.yaml +5 -5
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +652 -652
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/agents/openai.yaml +4 -4
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- package/skills/microi-client-frontend/SKILL.md +244 -244
- package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
- package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
- package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
- package/skills/microi-codex/SKILL.md +102 -100
- package/skills/microi-codex-installer/SKILL.md +231 -227
- package/skills/microi-codex-installer/agents/openai.yaml +7 -7
- package/skills/microi-datasource-mapping/SKILL.md +122 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/agents/openai.yaml +4 -4
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +221 -221
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
- package/skills/microi-form-engine/SKILL.md +333 -333
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-form-layout/SKILL.md +205 -205
- package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
- package/skills/microi-frontend-sdk/SKILL.md +194 -194
- package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +326 -324
- package/skills/microi-microservice/references/runtime-delivery.md +278 -278
- package/skills/microi-mobile-app-quality/SKILL.md +185 -185
- package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
- package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
- package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
- package/skills/microi-sso/SKILL.md +92 -92
- package/skills/microi-sso/references/acceptance.md +49 -49
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +39 -39
- package/skills/microi-system-delivery/SKILL.md +137 -137
- package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
- package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
- package/skills/microi-ui/SKILL.md +192 -192
- package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
- package/skills/microi-uniapp-frontend/SKILL.md +193 -193
- package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
- package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
- package/skills/microi.v8.js +1921 -1921
- package/skills/module-engine/SKILL.md +255 -255
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/ocr-engine/agents/openai.yaml +4 -4
- package/skills/page-engine/SKILL.md +206 -206
- package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
- package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
- package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
- package/skills/performance-testing/SKILL.md +221 -221
- package/skills/playwright-e2e/SKILL.md +196 -196
- package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
- package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +71 -71
- package/skills/report-engine/agents/openai.yaml +4 -4
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
- package/skills/scripts/sync-embedded-skills.mjs +46 -46
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/search-engine/agents/openai.yaml +4 -4
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +248 -248
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/translate-engine/agents/openai.yaml +4 -4
- package/skills/ui-design/SKILL.md +223 -223
- package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
- package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
- package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
- package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
- package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
- package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
- package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
- package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
- package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +171 -171
- package/skills/unity-integration/agents/openai.yaml +4 -4
- package/skills/unity-integration/references/ai-app-delivery.md +119 -119
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +388 -388
- package/skills/v8-cache-pattern/SKILL.md +312 -312
- package/skills/v8-crud-api/SKILL.md +178 -178
- package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
- package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-export-import/SKILL.md +219 -219
- package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
- package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
- package/skills/v8-file-upload/SKILL.md +284 -284
- package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
- package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
- package/skills/v8-formengine-http/SKILL.md +238 -238
- package/skills/v8-frontend-events/SKILL.md +180 -180
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
- package/skills/v8-http-integration/SKILL.md +182 -182
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
- package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/agents/openai.yaml +4 -4
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-menu-buttons/SKILL.md +186 -186
- package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
- package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
- package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
- package/skills/v8-mongodb/SKILL.md +200 -200
- package/skills/v8-mq-mqtt/SKILL.md +176 -176
- package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
- package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
- package/skills/v8-security/SKILL.md +210 -210
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-table-event/SKILL.md +176 -176
- package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
- package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
- package/skills/v8-tcp-integration/SKILL.md +147 -147
- package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +104 -104
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +188 -188
- package/skills/v8-workflow/SKILL.md +252 -252
- package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +273 -270
- package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
- package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
- package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "microi-net",
|
|
3
|
-
"interface": {
|
|
4
|
-
"displayName": "Microi.Net"
|
|
5
|
-
},
|
|
6
|
-
"plugins": [
|
|
7
|
-
{
|
|
8
|
-
"name": "microi",
|
|
9
|
-
"source": {
|
|
10
|
-
"source": "local",
|
|
11
|
-
"path": "./plugins/microi"
|
|
12
|
-
},
|
|
13
|
-
"policy": {
|
|
14
|
-
"installation": "AVAILABLE",
|
|
15
|
-
"authentication": "ON_USE"
|
|
16
|
-
},
|
|
17
|
-
"category": "developer-tools"
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "microi-net",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "Microi.Net"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "microi",
|
|
9
|
+
"source": {
|
|
10
|
+
"source": "local",
|
|
11
|
+
"path": "./plugins/microi"
|
|
12
|
+
},
|
|
13
|
+
"policy": {
|
|
14
|
+
"installation": "AVAILABLE",
|
|
15
|
+
"authentication": "ON_USE"
|
|
16
|
+
},
|
|
17
|
+
"category": "developer-tools"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -1,189 +1,189 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/*
|
|
3
|
-
* Codex MCP stdio adapter for the bundled Microi MCP server.
|
|
4
|
-
*
|
|
5
|
-
* The MCP SDK version used by Microi currently speaks newline-delimited
|
|
6
|
-
* JSON-RPC over stdio. Some Codex runtimes send and expect Content-Length
|
|
7
|
-
* framed JSON-RPC. This adapter bridges both formats without changing the
|
|
8
|
-
* normal VS Code/Cursor/Trae/Claude MCP configuration.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
const childProcess = require('node:child_process');
|
|
12
|
-
const path = require('node:path');
|
|
13
|
-
|
|
14
|
-
const target = process.argv[2];
|
|
15
|
-
if (!target) {
|
|
16
|
-
console.error('[microi-mcp-adapter] Missing target MCP server path.');
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const child = childProcess.spawn(process.execPath, [target, ...process.argv.slice(3)], {
|
|
21
|
-
cwd: process.cwd(),
|
|
22
|
-
env: process.env,
|
|
23
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
24
|
-
windowsHide: true,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
let inputBuffer = Buffer.alloc(0);
|
|
28
|
-
let outputBuffer = Buffer.alloc(0);
|
|
29
|
-
let clientFraming = null; // 'content-length' | 'line'
|
|
30
|
-
let shutdownRequested = false;
|
|
31
|
-
let requestedExitCode = 0;
|
|
32
|
-
let forceExitTimer = null;
|
|
33
|
-
|
|
34
|
-
function stopChildAndExit(exitCode = 0) {
|
|
35
|
-
if (shutdownRequested) return;
|
|
36
|
-
shutdownRequested = true;
|
|
37
|
-
requestedExitCode = exitCode;
|
|
38
|
-
|
|
39
|
-
if (!child.stdin.destroyed) {
|
|
40
|
-
child.stdin.end();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (child.exitCode !== null) {
|
|
44
|
-
process.exit(requestedExitCode);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
child.kill('SIGTERM');
|
|
49
|
-
} catch {
|
|
50
|
-
process.exit(requestedExitCode);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
forceExitTimer = setTimeout(() => {
|
|
54
|
-
try {
|
|
55
|
-
child.kill('SIGKILL');
|
|
56
|
-
} catch {
|
|
57
|
-
// 子进程可能已在超时边界退出。
|
|
58
|
-
}
|
|
59
|
-
process.exit(requestedExitCode);
|
|
60
|
-
}, 2000);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Codex 会为每个 MCP 连接启动一个适配器。客户端退出、重载或异常断开时,
|
|
64
|
-
// 必须同步终止其子 MCP 服务,否则孤儿进程会持续累积并挤占前端构建内存。
|
|
65
|
-
process.stdin.on('end', () => stopChildAndExit(0));
|
|
66
|
-
process.stdin.on('error', () => stopChildAndExit(1));
|
|
67
|
-
process.stdout.on('error', error => {
|
|
68
|
-
stopChildAndExit(error && error.code === 'EPIPE' ? 0 : 1);
|
|
69
|
-
});
|
|
70
|
-
process.on('disconnect', () => stopChildAndExit(0));
|
|
71
|
-
for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {
|
|
72
|
-
process.on(signal, () => stopChildAndExit(0));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const parentPid = process.ppid;
|
|
76
|
-
if (parentPid > 1) {
|
|
77
|
-
const parentWatchTimer = setInterval(() => {
|
|
78
|
-
try {
|
|
79
|
-
process.kill(parentPid, 0);
|
|
80
|
-
} catch (error) {
|
|
81
|
-
if (error && error.code === 'ESRCH') {
|
|
82
|
-
stopChildAndExit(0);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}, 5000);
|
|
86
|
-
parentWatchTimer.unref();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
process.on('exit', () => {
|
|
90
|
-
if (child.exitCode === null) {
|
|
91
|
-
try {
|
|
92
|
-
child.kill('SIGKILL');
|
|
93
|
-
} catch {
|
|
94
|
-
// 退出阶段只做尽力清理。
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
function writeLineToChild(jsonText) {
|
|
100
|
-
if (!child.stdin.destroyed) {
|
|
101
|
-
child.stdin.write(jsonText.trimEnd() + '\n');
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function writeToClient(jsonText) {
|
|
106
|
-
const text = jsonText.trim();
|
|
107
|
-
if (!text) return;
|
|
108
|
-
|
|
109
|
-
if (clientFraming === 'line') {
|
|
110
|
-
process.stdout.write(text + '\n');
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const bytes = Buffer.byteLength(text, 'utf8');
|
|
115
|
-
process.stdout.write(`Content-Length: ${bytes}\r\n\r\n${text}`);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function processInputBuffer() {
|
|
119
|
-
while (inputBuffer.length > 0) {
|
|
120
|
-
const asText = inputBuffer.toString('utf8');
|
|
121
|
-
|
|
122
|
-
if (/^Content-Length:/i.test(asText)) {
|
|
123
|
-
clientFraming = 'content-length';
|
|
124
|
-
const headerEnd = asText.indexOf('\r\n\r\n');
|
|
125
|
-
if (headerEnd < 0) return;
|
|
126
|
-
|
|
127
|
-
const header = asText.slice(0, headerEnd);
|
|
128
|
-
const match = header.match(/Content-Length:\s*(\d+)/i);
|
|
129
|
-
if (!match) {
|
|
130
|
-
console.error('[microi-mcp-adapter] Invalid Content-Length header.');
|
|
131
|
-
stopChildAndExit(1);
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const length = Number(match[1]);
|
|
136
|
-
const bodyStart = Buffer.byteLength(asText.slice(0, headerEnd + 4), 'utf8');
|
|
137
|
-
if (inputBuffer.length < bodyStart + length) return;
|
|
138
|
-
|
|
139
|
-
const body = inputBuffer.slice(bodyStart, bodyStart + length).toString('utf8');
|
|
140
|
-
writeLineToChild(body);
|
|
141
|
-
inputBuffer = inputBuffer.slice(bodyStart + length);
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
clientFraming = clientFraming || 'line';
|
|
146
|
-
const newline = inputBuffer.indexOf(0x0a);
|
|
147
|
-
if (newline < 0) return;
|
|
148
|
-
|
|
149
|
-
const line = inputBuffer.slice(0, newline + 1).toString('utf8').trim();
|
|
150
|
-
inputBuffer = inputBuffer.slice(newline + 1);
|
|
151
|
-
if (line) {
|
|
152
|
-
writeLineToChild(line);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
process.stdin.on('data', chunk => {
|
|
158
|
-
inputBuffer = Buffer.concat([inputBuffer, chunk]);
|
|
159
|
-
processInputBuffer();
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
child.stdout.on('data', chunk => {
|
|
163
|
-
outputBuffer = Buffer.concat([outputBuffer, chunk]);
|
|
164
|
-
let newlineIndex;
|
|
165
|
-
while ((newlineIndex = outputBuffer.indexOf(0x0a)) >= 0) {
|
|
166
|
-
const line = outputBuffer.slice(0, newlineIndex).toString('utf8').trim();
|
|
167
|
-
outputBuffer = outputBuffer.slice(newlineIndex + 1);
|
|
168
|
-
if (line) writeToClient(line);
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
child.stderr.on('data', chunk => {
|
|
173
|
-
process.stderr.write(chunk);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
child.on('exit', code => {
|
|
177
|
-
if (forceExitTimer) {
|
|
178
|
-
clearTimeout(forceExitTimer);
|
|
179
|
-
}
|
|
180
|
-
if (outputBuffer.length > 0) {
|
|
181
|
-
writeToClient(outputBuffer.toString('utf8'));
|
|
182
|
-
}
|
|
183
|
-
process.exit(shutdownRequested ? requestedExitCode : (code || 0));
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
child.on('error', err => {
|
|
187
|
-
console.error(`[microi-mcp-adapter] Failed to start ${path.basename(target)}: ${err.message}`);
|
|
188
|
-
stopChildAndExit(1);
|
|
189
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* Codex MCP stdio adapter for the bundled Microi MCP server.
|
|
4
|
+
*
|
|
5
|
+
* The MCP SDK version used by Microi currently speaks newline-delimited
|
|
6
|
+
* JSON-RPC over stdio. Some Codex runtimes send and expect Content-Length
|
|
7
|
+
* framed JSON-RPC. This adapter bridges both formats without changing the
|
|
8
|
+
* normal VS Code/Cursor/Trae/Claude MCP configuration.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const childProcess = require('node:child_process');
|
|
12
|
+
const path = require('node:path');
|
|
13
|
+
|
|
14
|
+
const target = process.argv[2];
|
|
15
|
+
if (!target) {
|
|
16
|
+
console.error('[microi-mcp-adapter] Missing target MCP server path.');
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const child = childProcess.spawn(process.execPath, [target, ...process.argv.slice(3)], {
|
|
21
|
+
cwd: process.cwd(),
|
|
22
|
+
env: process.env,
|
|
23
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
24
|
+
windowsHide: true,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
let inputBuffer = Buffer.alloc(0);
|
|
28
|
+
let outputBuffer = Buffer.alloc(0);
|
|
29
|
+
let clientFraming = null; // 'content-length' | 'line'
|
|
30
|
+
let shutdownRequested = false;
|
|
31
|
+
let requestedExitCode = 0;
|
|
32
|
+
let forceExitTimer = null;
|
|
33
|
+
|
|
34
|
+
function stopChildAndExit(exitCode = 0) {
|
|
35
|
+
if (shutdownRequested) return;
|
|
36
|
+
shutdownRequested = true;
|
|
37
|
+
requestedExitCode = exitCode;
|
|
38
|
+
|
|
39
|
+
if (!child.stdin.destroyed) {
|
|
40
|
+
child.stdin.end();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (child.exitCode !== null) {
|
|
44
|
+
process.exit(requestedExitCode);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
child.kill('SIGTERM');
|
|
49
|
+
} catch {
|
|
50
|
+
process.exit(requestedExitCode);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
forceExitTimer = setTimeout(() => {
|
|
54
|
+
try {
|
|
55
|
+
child.kill('SIGKILL');
|
|
56
|
+
} catch {
|
|
57
|
+
// 子进程可能已在超时边界退出。
|
|
58
|
+
}
|
|
59
|
+
process.exit(requestedExitCode);
|
|
60
|
+
}, 2000);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Codex 会为每个 MCP 连接启动一个适配器。客户端退出、重载或异常断开时,
|
|
64
|
+
// 必须同步终止其子 MCP 服务,否则孤儿进程会持续累积并挤占前端构建内存。
|
|
65
|
+
process.stdin.on('end', () => stopChildAndExit(0));
|
|
66
|
+
process.stdin.on('error', () => stopChildAndExit(1));
|
|
67
|
+
process.stdout.on('error', error => {
|
|
68
|
+
stopChildAndExit(error && error.code === 'EPIPE' ? 0 : 1);
|
|
69
|
+
});
|
|
70
|
+
process.on('disconnect', () => stopChildAndExit(0));
|
|
71
|
+
for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {
|
|
72
|
+
process.on(signal, () => stopChildAndExit(0));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const parentPid = process.ppid;
|
|
76
|
+
if (parentPid > 1) {
|
|
77
|
+
const parentWatchTimer = setInterval(() => {
|
|
78
|
+
try {
|
|
79
|
+
process.kill(parentPid, 0);
|
|
80
|
+
} catch (error) {
|
|
81
|
+
if (error && error.code === 'ESRCH') {
|
|
82
|
+
stopChildAndExit(0);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}, 5000);
|
|
86
|
+
parentWatchTimer.unref();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
process.on('exit', () => {
|
|
90
|
+
if (child.exitCode === null) {
|
|
91
|
+
try {
|
|
92
|
+
child.kill('SIGKILL');
|
|
93
|
+
} catch {
|
|
94
|
+
// 退出阶段只做尽力清理。
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
function writeLineToChild(jsonText) {
|
|
100
|
+
if (!child.stdin.destroyed) {
|
|
101
|
+
child.stdin.write(jsonText.trimEnd() + '\n');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function writeToClient(jsonText) {
|
|
106
|
+
const text = jsonText.trim();
|
|
107
|
+
if (!text) return;
|
|
108
|
+
|
|
109
|
+
if (clientFraming === 'line') {
|
|
110
|
+
process.stdout.write(text + '\n');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const bytes = Buffer.byteLength(text, 'utf8');
|
|
115
|
+
process.stdout.write(`Content-Length: ${bytes}\r\n\r\n${text}`);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function processInputBuffer() {
|
|
119
|
+
while (inputBuffer.length > 0) {
|
|
120
|
+
const asText = inputBuffer.toString('utf8');
|
|
121
|
+
|
|
122
|
+
if (/^Content-Length:/i.test(asText)) {
|
|
123
|
+
clientFraming = 'content-length';
|
|
124
|
+
const headerEnd = asText.indexOf('\r\n\r\n');
|
|
125
|
+
if (headerEnd < 0) return;
|
|
126
|
+
|
|
127
|
+
const header = asText.slice(0, headerEnd);
|
|
128
|
+
const match = header.match(/Content-Length:\s*(\d+)/i);
|
|
129
|
+
if (!match) {
|
|
130
|
+
console.error('[microi-mcp-adapter] Invalid Content-Length header.');
|
|
131
|
+
stopChildAndExit(1);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const length = Number(match[1]);
|
|
136
|
+
const bodyStart = Buffer.byteLength(asText.slice(0, headerEnd + 4), 'utf8');
|
|
137
|
+
if (inputBuffer.length < bodyStart + length) return;
|
|
138
|
+
|
|
139
|
+
const body = inputBuffer.slice(bodyStart, bodyStart + length).toString('utf8');
|
|
140
|
+
writeLineToChild(body);
|
|
141
|
+
inputBuffer = inputBuffer.slice(bodyStart + length);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
clientFraming = clientFraming || 'line';
|
|
146
|
+
const newline = inputBuffer.indexOf(0x0a);
|
|
147
|
+
if (newline < 0) return;
|
|
148
|
+
|
|
149
|
+
const line = inputBuffer.slice(0, newline + 1).toString('utf8').trim();
|
|
150
|
+
inputBuffer = inputBuffer.slice(newline + 1);
|
|
151
|
+
if (line) {
|
|
152
|
+
writeLineToChild(line);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
process.stdin.on('data', chunk => {
|
|
158
|
+
inputBuffer = Buffer.concat([inputBuffer, chunk]);
|
|
159
|
+
processInputBuffer();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
child.stdout.on('data', chunk => {
|
|
163
|
+
outputBuffer = Buffer.concat([outputBuffer, chunk]);
|
|
164
|
+
let newlineIndex;
|
|
165
|
+
while ((newlineIndex = outputBuffer.indexOf(0x0a)) >= 0) {
|
|
166
|
+
const line = outputBuffer.slice(0, newlineIndex).toString('utf8').trim();
|
|
167
|
+
outputBuffer = outputBuffer.slice(newlineIndex + 1);
|
|
168
|
+
if (line) writeToClient(line);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
child.stderr.on('data', chunk => {
|
|
173
|
+
process.stderr.write(chunk);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
child.on('exit', code => {
|
|
177
|
+
if (forceExitTimer) {
|
|
178
|
+
clearTimeout(forceExitTimer);
|
|
179
|
+
}
|
|
180
|
+
if (outputBuffer.length > 0) {
|
|
181
|
+
writeToClient(outputBuffer.toString('utf8'));
|
|
182
|
+
}
|
|
183
|
+
process.exit(shutdownRequested ? requestedExitCode : (code || 0));
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
child.on('error', err => {
|
|
187
|
+
console.error(`[microi-mcp-adapter] Failed to start ${path.basename(target)}: ${err.message}`);
|
|
188
|
+
stopChildAndExit(1);
|
|
189
|
+
});
|
package/scripts/mcp-server.js
CHANGED
|
@@ -259,6 +259,11 @@ ${e}`).digest("hex").slice(0,46)}`}function Mte(t,e){if(t.Code!==1)throw new Err
|
|
|
259
259
|
- API Server: ${t.apiBaseUrl}
|
|
260
260
|
- OsClient (tenant): ${t.osClient}
|
|
261
261
|
|
|
262
|
+
## Microi\u543E\u7801\u57FA\u7840\u89C4\u8303\uFF08\u4EFB\u4F55 AI \u6A21\u578B\u5F3A\u5236\u8BFB\u53D6\uFF09
|
|
263
|
+
\u6BCF\u6B21\u65B0\u5EFA\u6216\u63A5\u7EED\u543E\u7801\u4EFB\u52A1\uFF0C\u5FC5\u987B\u5148\u5B8C\u6574\u8BFB\u53D6\u5DE5\u4F5C\u533A microi.skills/workspace-conventions/SKILL.md\uFF1B\u672A\u521D\u59CB\u5316\u65F6\u8BFB\u53D6\u5DF2\u5B89\u88C5\u543E\u7801\u63D2\u4EF6\u4E2D\u7684 skills/workspace-conventions/SKILL.md\u3002\u8FDB\u5EA6\u64AD\u62A5\u548C\u975E\u963B\u585E\u81EA\u52A8\u66F4\u65B0\u90FD\u662F\u65E0\u6761\u4EF6\u57FA\u7840\u89C4\u5219\uFF0C\u4E0D\u80FD\u7B49\u7528\u6237\u63D0\u9192\u3002
|
|
264
|
+
\u9996\u6B21\u5DE5\u4F5C\u8BF4\u660E\u4EE5\u201CMicroi\u543E\u7801\u5F00\u53D1\u5DE5\u5177\u7248\u672C\u201D\u62A5\u544A\u5B9E\u9645 CLI \u7248\u672C\u3001npm \u5B98\u65B9 latest\uFF08\u9644\u67E5\u8BE2\u65F6\u95F4\uFF09\u3001\u81EA\u52A8\u66F4\u65B0\u4E0E Skills/MCP \u540C\u6B65\u72B6\u6001\uFF1B\u7528 microi version --json \u56DE\u8BFB CLI\uFF0C\u7528 npm \u5B98\u65B9 registry \u67E5\u8BE2 latest\u3002\u672A\u77E5\u9879\u5199\u68C0\u6D4B\u4E2D\uFF0C\u4E0D\u5F97\u628A\u672C MCP \u534F\u8BAE\u7248\u672C\u6216 expectedVersion \u5F53\u6210 CLI/npm \u6700\u65B0\u7248\u3002
|
|
265
|
+
\u5DF2\u6709 CLI \u65F6\u5FC5\u987B\u6295\u9012 microi update --background --workspace "<\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84>" --json\uFF0C\u81EA\u52A8\u5347\u7EA7 @microi.net/cli \u5E76\u540C\u6B65 Skills\u3001AI \u89C4\u5219\u548C MCP\u3002\u66F4\u65B0\u5931\u8D25\u5EF6\u540E\u91CD\u8BD5\u5E76\u51C6\u786E\u62A5\u544A\uFF0C\u4E0D\u963B\u65AD\u5F53\u524D\u5DE5\u4F5C\u3001\u4E0D\u5F3A\u5236\u91CD\u8F7D\u3001\u4E0D\u7EC8\u6B62\u6B63\u5728\u8FD0\u884C\u7684 MCP\uFF1B\u7528\u6237\u660E\u786E\u5173\u95ED\u6216\u5BBF\u4E3B\u65E0\u6267\u884C\u6743\u9650\u65F6\u62A5\u544A\u9650\u5236\uFF0C\u7B7E\u540D\u684C\u9762\u5B89\u88C5\u76EE\u5F55\u901A\u8FC7\u684C\u9762\u5B98\u65B9\u6E20\u9053\u66F4\u65B0\u3002\u5B8C\u6574\u6267\u884C\u53CA\u9A8C\u6536\u89C4\u5219\u4EE5\u57FA\u7840\u5165\u53E3\u4E3A\u51C6\u3002
|
|
266
|
+
|
|
262
267
|
IMPORTANT: This server ONLY manages OsClient tenant "${t.osClient}". "${t.label||t.osClient}" is only a display name. When the user specifies a different tenant name, do NOT use this server.
|
|
263
268
|
THIRD-PARTY SECRETS: For App Secret, client_secret, API keys or credentials such as Chanjet, FIRST inspect microi_manage_server_private_secret (List) and reuse System Settings > Security and Service Access. Save through that tool only when authorized, then read back HasSecret/IsSecret/IsEnabled. Backend V8 uses the existing protected settings capability. Do not invent environment variables, hardcode secrets, or block integration merely because the existing protected setting has not yet been populated. Never return plaintext or ciphertext values.
|
|
264
269
|
PAGE DESIGN: Dashboards default to themeMode=system, density=compact and wrapper heightMode=content. Use native summary/detail statistic appearances and platform colour variables. Match reference panel proportions and verify light/dark screenshots; do not turn one-line metrics into large fixed-height colour blocks.
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
setlocal
|
|
3
|
-
|
|
4
|
-
if "%~1"=="" (
|
|
5
|
-
>&2 echo [microi-trae-mcp] Missing Node or Electron runtime path.
|
|
6
|
-
exit /b 2
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
if "%~2"=="" (
|
|
10
|
-
>&2 echo [microi-trae-mcp] Missing MCP adapter path.
|
|
11
|
-
exit /b 2
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
if "%~3"=="" (
|
|
15
|
-
>&2 echo [microi-trae-mcp] Missing MCP server path.
|
|
16
|
-
exit /b 2
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
call "%~1" "%~2" "%~3"
|
|
20
|
-
set "MICROI_MCP_EXIT_CODE=%ERRORLEVEL%"
|
|
21
|
-
endlocal & exit /b %MICROI_MCP_EXIT_CODE%
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
|
|
4
|
+
if "%~1"=="" (
|
|
5
|
+
>&2 echo [microi-trae-mcp] Missing Node or Electron runtime path.
|
|
6
|
+
exit /b 2
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
if "%~2"=="" (
|
|
10
|
+
>&2 echo [microi-trae-mcp] Missing MCP adapter path.
|
|
11
|
+
exit /b 2
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
if "%~3"=="" (
|
|
15
|
+
>&2 echo [microi-trae-mcp] Missing MCP server path.
|
|
16
|
+
exit /b 2
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
call "%~1" "%~2" "%~3"
|
|
20
|
+
set "MICROI_MCP_EXIT_CODE=%ERRORLEVEL%"
|
|
21
|
+
endlocal & exit /b %MICROI_MCP_EXIT_CODE%
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
// Keep the configured entry name stable and independent from mcp-server.js.
|
|
5
|
-
// Historical VS Code extensions scanned arguments containing that basename
|
|
6
|
-
// and rewrote them to their own extension directory during activation.
|
|
7
|
-
require('./mcp-server.js');
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// Keep the configured entry name stable and independent from mcp-server.js.
|
|
5
|
+
// Historical VS Code extensions scanned arguments containing that basename
|
|
6
|
+
// and rewrote them to their own extension directory during activation.
|
|
7
|
+
require('./mcp-server.js');
|