@agenthippo-ai/agenthippo 1.110.9 → 1.110.19
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/out/agentpack/types.js +2 -5
- package/out/analytics/dashboard/artifactManager.js +2 -439
- package/out/analytics/dashboard/fleetDisplayUtils.js +2 -162
- package/out/analytics/dashboard/fleetOrchestrator.js +3 -142
- package/out/analytics/dashboard/fleetRegistry.js +2 -79
- package/out/analytics/dashboard/fleetRowDefaults.js +2 -87
- package/out/analytics/dashboard/fleetScriptAdapter.js +2 -146
- package/out/analytics/dashboard/fleetTypes.js +2 -29
- package/out/analytics/dashboard/index.js +2 -17
- package/out/analytics/dashboard/indexingService.js +2 -422
- package/out/analytics/dashboard/localFleetAdapter.js +2 -222
- package/out/analytics/dashboard/performanceMonitor.js +5 -76
- package/out/analytics/dashboard/processManager.js +2 -209
- package/out/analytics/dashboard/provider.js +38 -3817
- package/out/analytics/dashboard/queryRunner.js +62 -750
- package/out/analytics/dashboard/scheduledFleetStorage.js +2 -241
- package/out/analytics/dashboard/sessionJsonlFleet.js +3 -204
- package/out/analytics/dashboard/teamViewDiscovery.js +2 -106
- package/out/analytics/dashboard/webview/panel.js +34 -2318
- package/out/analytics/dashboard/webview/runtime-bridge.js +2 -82
- package/out/analytics/lifecycle.js +2 -43
- package/out/analytics/service.js +8 -1277
- package/out/auth/authBaseUrl.js +2 -59
- package/out/auth/bootstrapApply.js +2 -71
- package/out/auth/brokerClient.js +2 -160
- package/out/auth/callbackUri.js +2 -59
- package/out/auth/githubStoreGate.js +2 -70
- package/out/auth/loopbackAuthServer.js +4 -159
- package/out/auth/onboardingPrompt.js +2 -112
- package/out/auth/pkce.js +2 -9
- package/out/auth/provider.js +2 -226
- package/out/auth/sessionStore.js +2 -156
- package/out/auth/signInFlow.js +2 -183
- package/out/cli/index.js +619 -551
- package/out/cli/run-custom-engine-runner.js +3 -318
- package/out/cli/vscode-shim.js +2 -86
- package/out/engines/factory.js +2 -45
- package/out/engines/types.js +2 -17
- package/out/examples/run-headless-repl.js +6 -286
- package/out/examples/run-headless.js +2 -187
- package/out/extension.js +32 -4473
- package/out/gateway/gatewayRouteIndex.js +6 -371
- package/out/gateway/gatewaySessionStore.js +3 -243
- package/out/gateway/index.js +2 -31
- package/out/gateway/resetMappings.js +2 -52
- package/out/gateway/service.js +5 -1249
- package/out/mcp/publish.js +2 -143
- package/out/remote/handleRemoteChat.js +2 -169
- package/out/remote/remotePackStatusBar.js +3 -103
- package/out/remote/remoteTrust.js +6 -277
- package/out/remote/serveClient.js +4 -277
- package/out/remoteSkills.js +3 -191
- package/out/runtime/index.js +2 -32
- package/out/runtime/vscode/index.js +2 -20
- package/out/runtime/vscode/vscode-config-provider.js +2 -77
- package/out/runtime/vscode/vscode-edit-tracker.js +2 -122
- package/out/runtime/vscode/vscode-logger.js +2 -30
- package/out/runtime/vscode/vscode-permission-handler.js +2 -72
- package/out/scripts/agentide-litellm.sh +0 -1
- package/out/scripts/agentide_litellm_hooks_v1.py +170 -418
- package/out/scripts/analytics/agent-fleet-widget.js +18 -257
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +4 -4
- package/out/scripts/analytics/duckdbLocator.js +2 -28
- package/out/scripts/analytics/generate-default-charts.py +43 -323
- package/out/scripts/analytics/hotspot-analysis-widget.js +4 -430
- package/out/scripts/analytics/index-traces.py +78 -1036
- package/out/scripts/analytics/session-comparison-widget.js +26 -472
- package/out/scripts/analytics/session-timeline-widget.js +25 -846
- package/out/scripts/analytics/setup-analytics.ps1 +8 -1
- package/out/scripts/analytics/setup-analytics.sh +13 -2
- package/out/scripts/analytics/token-cost-flamegraph-widget.js +4 -461
- package/out/scripts/analytics/token-cost-trend-widget.js +4 -534
- package/out/scripts/analytics/workflows-collector.cjs +4 -314
- package/out/scripts/analytics/workflows-daemon.mjs +9 -185
- package/out/scripts/analytics/workflows-widget.cjs +15 -159
- package/out/scripts/analytics/wow-model-widget.js +10 -120
- package/out/scripts/vendor-tools.mjs +2 -233
- package/out/skills/publish.js +3 -178
- package/out/store/github/setup.js +7 -212
- package/out/store/oramaIndex.js +2 -884
- package/out/sync.js +26 -1829
- package/out/terminalLogger.js +5 -358
- package/out/utils/pathSafety.js +2 -60
- package/out/utils/pythonRunner.js +4 -258
- package/out/utils/toolPath.js +2 -83
- package/out/workspaceFolders.js +2 -59
- package/package.json +1 -1
- package/out/agentpack/github.js +0 -547
- package/out/agentpack/index.js +0 -67
- package/out/agentpack/install.js +0 -297
- package/out/agentpack/manager.js +0 -441
- package/out/agentpack/manifest.js +0 -135
- package/out/agentpack/paths.js +0 -498
- package/out/agentpack/publish.js +0 -248
- package/out/agentpack/stores.js +0 -554
- package/out/analytics/dashboard/fleetStatusUtils.js +0 -30
- package/out/analytics/dashboard/fleetTitleUtils.js +0 -68
- package/out/analytics/dashboard/refreshPolicy.js +0 -16
- package/out/analytics/dashboard/scheduledFleetFingerprint.js +0 -22
- package/out/analytics/dashboard/scheduledFleetUtils.js +0 -22
- package/out/analytics/dashboard/sessionEventFleetStats.js +0 -118
- package/out/analytics/dashboard/viewsConfigMerge.js +0 -221
- package/out/analytics/dashboard/webview/codicon.ttf +0 -0
- package/out/analytics/identity.js +0 -0
- package/out/analytics/sessionEvents.js +0 -323
- package/out/auth/callbackUriParse.js +0 -59
- package/out/auth/types.js +0 -12
- package/out/auth-broker/config.js +0 -112
- package/out/auth-broker/jwt.js +0 -105
- package/out/auth-broker/pkce.js +0 -59
- package/out/auth-broker/server.js +0 -677
- package/out/auth-broker/store.js +0 -275
- package/out/authority/warrant.js +0 -206
- package/out/base-prompts/mcp-servers/.mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +0 -142
- package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +0 -1192
- package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +0 -23
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +0 -12
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +0 -102
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +0 -137
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +0 -118
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +0 -209
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +0 -431
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +0 -270
- package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +0 -18
- package/out/base-prompts/rules/AGENTS.md +0 -204
- package/out/base-prompts/skills/agent-browser/SKILL.md +0 -102
- package/out/base-prompts/skills/agent-builder/SKILL.md +0 -73
- package/out/base-prompts/skills/agent-builder/references/agent-pack.md +0 -63
- package/out/base-prompts/skills/agent-builder/references/crewai.md +0 -66
- package/out/base-prompts/skills/agent-builder/references/langchain.md +0 -60
- package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +0 -73
- package/out/base-prompts/skills/agent-engine-creator/SKILL.md +0 -586
- package/out/base-prompts/skills/agent-engine-installer/SKILL.md +0 -106
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +0 -259
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +0 -189
- package/out/base-prompts/skills/agenthippo-cli/SKILL.md +0 -69
- package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +0 -63
- package/out/base-prompts/skills/agentpack-creator/SKILL.md +0 -375
- package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +0 -261
- package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +0 -195
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +0 -391
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +0 -294
- package/out/base-prompts/skills/agentpack-testbench/SKILL.md +0 -135
- package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +0 -202
- package/out/base-prompts/skills/algorithmic-art/SKILL.md +0 -405
- package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +0 -223
- package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +0 -599
- package/out/base-prompts/skills/debug-agent/SKILL.md +0 -83
- package/out/base-prompts/skills/desktop-automation/SKILL.md +0 -166
- package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +0 -441
- package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +0 -280
- package/out/base-prompts/skills/docx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/docx/SKILL.md +0 -197
- package/out/base-prompts/skills/docx/docx-js.md +0 -350
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/docx/ooxml.md +0 -610
- package/out/base-prompts/skills/docx/scripts/__init__.py +0 -1
- package/out/base-prompts/skills/docx/scripts/document.py +0 -1276
- package/out/base-prompts/skills/docx/scripts/templates/comments.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/people.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/utilities.py +0 -374
- package/out/base-prompts/skills/gateway-outbound/SKILL.md +0 -136
- package/out/base-prompts/skills/mcp-builder/LICENSE.txt +0 -202
- package/out/base-prompts/skills/mcp-builder/SKILL.md +0 -328
- package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +0 -602
- package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/out/base-prompts/skills/mcp-builder/scripts/connections.py +0 -151
- package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/out/base-prompts/skills/openclaw/SKILL.md +0 -406
- package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +0 -61
- package/out/base-prompts/skills/pdf/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pdf/SKILL.md +0 -294
- package/out/base-prompts/skills/pdf/forms.md +0 -205
- package/out/base-prompts/skills/pdf/reference.md +0 -612
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +0 -70
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +0 -12
- package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +0 -41
- package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +0 -152
- package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +0 -114
- package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/out/base-prompts/skills/pptx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pptx/SKILL.md +0 -484
- package/out/base-prompts/skills/pptx/html2pptx.md +0 -625
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/pptx/ooxml.md +0 -427
- package/out/base-prompts/skills/pptx/scripts/html2pptx.js +0 -984
- package/out/base-prompts/skills/pptx/scripts/inventory.py +0 -1020
- package/out/base-prompts/skills/pptx/scripts/rearrange.py +0 -231
- package/out/base-prompts/skills/pptx/scripts/replace.py +0 -385
- package/out/base-prompts/skills/pptx/scripts/thumbnail.py +0 -450
- package/out/base-prompts/skills/prompt-lab/SKILL.md +0 -149
- package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/skill-creator/LICENSE.txt +0 -202
- package/out/base-prompts/skills/skill-creator/SKILL.md +0 -371
- package/out/base-prompts/skills/skill-creator/references/output-patterns.md +0 -82
- package/out/base-prompts/skills/skill-creator/references/workflows.md +0 -28
- package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +0 -303
- package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +0 -110
- package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/out/base-prompts/skills/skill-installer/SKILL.md +0 -251
- package/out/base-prompts/skills/skill-installer/references/store-api.md +0 -219
- package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +0 -83
- package/out/base-prompts/skills/spotlight-insights/SKILL.md +0 -101
- package/out/base-prompts/skills/spotlight-optimize/SKILL.md +0 -93
- package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/SKILL.md +0 -314
- package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +0 -163
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +0 -744
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +0 -14
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +0 -7
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +0 -5
- package/out/base-prompts/skills/spotlight-report/SKILL.md +0 -86
- package/out/base-prompts/skills/spotlight-visualize/SKILL.md +0 -92
- package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/xlsx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/xlsx/SKILL.md +0 -289
- package/out/base-prompts/skills/xlsx/recalc.py +0 -178
- package/out/branding.js +0 -49
- package/out/cli/commands/anywhere.js +0 -66
- package/out/cli/commands/ask.js +0 -246
- package/out/cli/commands/auth-broker.js +0 -24
- package/out/cli/commands/auth.js +0 -219
- package/out/cli/commands/chat.js +0 -357
- package/out/cli/commands/conformance.js +0 -249
- package/out/cli/commands/data-plane.js +0 -67
- package/out/cli/commands/deploy.js +0 -263
- package/out/cli/commands/gateway.js +0 -218
- package/out/cli/commands/idp.js +0 -85
- package/out/cli/commands/pack.js +0 -399
- package/out/cli/commands/probe-custom-engine.js +0 -82
- package/out/cli/commands/sandbox.js +0 -332
- package/out/cli/commands/serve.js +0 -1758
- package/out/cli/commands/store.js +0 -927
- package/out/cli/credential-context.js +0 -91
- package/out/cli/data-plane/broker.js +0 -78
- package/out/cli/data-plane/connector-host.js +0 -121
- package/out/cli/data-plane/egress.js +0 -189
- package/out/cli/data-plane/gateway.js +0 -218
- package/out/cli/data-plane/index.js +0 -152
- package/out/cli/data-plane/registry.js +0 -89
- package/out/cli/data-plane/remote.js +0 -106
- package/out/cli/data-plane/sidecar.js +0 -161
- package/out/cli/deploy/blueprints/registry.js +0 -84
- package/out/cli/deploy/layers/identity.js +0 -172
- package/out/cli/deploy-init.js +0 -3023
- package/out/cli/deps.js +0 -342
- package/out/cli/idp-init.js +0 -338
- package/out/cli/pack-install-ref.js +0 -15
- package/out/cli/pack-loader.js +0 -418
- package/out/cli/pack-runtime.js +0 -61
- package/out/cli/runtime.js +0 -450
- package/out/cli/serve-hardening.js +0 -607
- package/out/cli/state-sync.js +0 -424
- package/out/cli/utils.js +0 -231
- package/out/engines/base.js +0 -188
- package/out/engines/claude.js +0 -1254
- package/out/engines/codex.js +0 -862
- package/out/engines/custom.js +0 -674
- package/out/engines/customEngineIpc.js +0 -95
- package/out/engines/customEngineRunnerEmbed.js +0 -107
- package/out/engines/customRegistry.js +0 -274
- package/out/engines/embeddedCustomEngineRunner.generated.js +0 -9
- package/out/engines/engineApiKey.js +0 -138
- package/out/engines/install.js +0 -372
- package/out/engines/persistentEngineWorker.js +0 -320
- package/out/engines/publish.js +0 -341
- package/out/evidence/sessionShip.js +0 -610
- package/out/gateway/bridge.js +0 -843
- package/out/gateway/cli-agent-id.js +0 -36
- package/out/gateway/client.js +0 -336
- package/out/gateway/client.test.js +0 -395
- package/out/gateway/gateway-scope-errors.js +0 -14
- package/out/gateway/gatewayBackup.js +0 -76
- package/out/gateway/installSource.js +0 -68
- package/out/gateway/lifecycle.js +0 -3190
- package/out/gateway/openclaw-channel-routing.js +0 -317
- package/out/gateway/outboundHandles.js +0 -373
- package/out/gateway/outboundPaths.js +0 -75
- package/out/gateway/outboundSend.js +0 -254
- package/out/gateway/protocol.js +0 -48
- package/out/gateway/secretsPreflight.js +0 -90
- package/out/gateway/sessionRouting.js +0 -77
- package/out/headless/index.js +0 -539
- package/out/headless/sync.js +0 -473
- package/out/live-e2e/mcp-demo/server.mjs +0 -32
- package/out/live-probe/connector.mjs +0 -8
- package/out/live-probe/env-report.mjs +0 -8
- package/out/mcp.js +0 -654
- package/out/pack/caps.js +0 -271
- package/out/pack/governor.js +0 -309
- package/out/pack/lease-schema.js +0 -270
- package/out/pack/lease.js +0 -640
- package/out/pack/reconcile.js +0 -217
- package/out/pack/signature.js +0 -839
- package/out/permissions.js +0 -108
- package/out/permissions.mapping.yaml +0 -68
- package/out/registry/index.js +0 -332
- package/out/runner/host.js +0 -131
- package/out/runner/protocol.js +0 -108
- package/out/runner/remoteEngine.js +0 -130
- package/out/runtime/interfaces/config-provider.js +0 -32
- package/out/runtime/interfaces/edit-tracker.js +0 -24
- package/out/runtime/interfaces/index.js +0 -29
- package/out/runtime/interfaces/logger.js +0 -40
- package/out/runtime/interfaces/permission-handler.js +0 -66
- package/out/runtime/interfaces/session-store.js +0 -342
- package/out/runtime/vscode/vscode-session-store.js +0 -22
- package/out/sandbox/containerDriver.js +0 -570
- package/out/sandbox/processDriver.js +0 -315
- package/out/sandbox/sandboxRunner.js +0 -191
- package/out/sandbox/support.js +0 -301
- package/out/sandbox/types.js +0 -55
- package/out/scripts/analytics/fleet-local-adapter.js +0 -246
- package/out/scripts/analytics/live-fleet-4-collector.cjs +0 -315
- package/out/scripts/analytics/live-fleet-4-daemon.mjs +0 -134
- package/out/scripts/analytics/live-fleet-4-widget.cjs +0 -433
- package/out/scripts/gateway/Dockerfile.serve +0 -45
- package/out/scripts/gateway/docker-serve.sh +0 -248
- package/out/scripts/gateway/setup-gateway-server.ps1 +0 -953
- package/out/scripts/gateway/setup-gateway-server.sh +0 -935
- package/out/session.js +0 -272
- package/out/shared/agentEngines.js +0 -170
- package/out/shared/index.js +0 -109
- package/out/shared/models.js +0 -136
- package/out/shared/providers.js +0 -205
- package/out/spotlight/install.js +0 -345
- package/out/spotlight/publish.js +0 -544
- package/out/spotlight/yaml.js +0 -31
- package/out/store/index.js +0 -786
- package/out/store/shared.js +0 -241
- package/out/test/agentEnvFile.test.js +0 -97
- package/out/test/agentYaml.test.js +0 -373
- package/out/test/agentpack.test.js +0 -639
- package/out/test/analytics-lifecycle.test.js +0 -174
- package/out/test/analytics.test.js +0 -756
- package/out/test/auth-baseurl.test.js +0 -132
- package/out/test/auth-bootstrapApply.test.js +0 -123
- package/out/test/auth-broker-hardening.test.js +0 -227
- package/out/test/auth-broker.test.js +0 -541
- package/out/test/auth-callback.test.js +0 -62
- package/out/test/blueprint-registry.test.js +0 -105
- package/out/test/branding.test.js +0 -242
- package/out/test/caps-governor.test.js +0 -455
- package/out/test/cli-agent-id.test.js +0 -55
- package/out/test/codex-new-file-survival.test.js +0 -119
- package/out/test/configuration-scopes.test.js +0 -131
- package/out/test/credential-context.test.js +0 -160
- package/out/test/custom-env-layering.test.js +0 -151
- package/out/test/customEngineInstall.test.js +0 -100
- package/out/test/customRegistry.test.js +0 -122
- package/out/test/data-plane-engine-wiring.test.js +0 -250
- package/out/test/data-plane.test.js +0 -311
- package/out/test/deploy-init.test.js +0 -854
- package/out/test/deps-auto-install.test.js +0 -81
- package/out/test/egress-broker.test.js +0 -172
- package/out/test/engine-integration.test.js +0 -297
- package/out/test/enginePaths.test.js +0 -195
- package/out/test/enginePublish.test.js +0 -82
- package/out/test/fleetDisplayUtils.test.js +0 -100
- package/out/test/gateway-client.test.js +0 -409
- package/out/test/gateway-install-source.test.js +0 -111
- package/out/test/gateway-lifecycle.test.js +0 -608
- package/out/test/gateway-outbound.test.js +0 -538
- package/out/test/gateway-reset-mappings.test.js +0 -221
- package/out/test/gateway-route-index.test.js +0 -235
- package/out/test/gateway-secrets-preflight.test.js +0 -127
- package/out/test/gateway-session-routing.test.js +0 -65
- package/out/test/gateway-session-store.test.js +0 -216
- package/out/test/github.test.js +0 -232
- package/out/test/governor-hardening.test.js +0 -217
- package/out/test/headless-sync.test.js +0 -301
- package/out/test/helpers/manifest-fixtures.js +0 -27
- package/out/test/idp-init.test.js +0 -151
- package/out/test/lease-signature.test.js +0 -357
- package/out/test/lease-trust-root.test.js +0 -273
- package/out/test/lease-validation.test.js +0 -169
- package/out/test/lease.test.js +0 -114
- package/out/test/mcp-obo.test.js +0 -107
- package/out/test/mcp.test.js +0 -389
- package/out/test/model-routing.test.js +0 -133
- package/out/test/openclaw-channel-routing.test.js +0 -191
- package/out/test/pack-admission.test.js +0 -216
- package/out/test/pack-digest-parity.test.js +0 -140
- package/out/test/pack-reconcile.test.js +0 -183
- package/out/test/pack-signature-artifact.test.js +0 -103
- package/out/test/pack-signature.test.js +0 -176
- package/out/test/pack-trust-root.test.js +0 -202
- package/out/test/pathSafety.test.js +0 -63
- package/out/test/permissions.test.js +0 -175
- package/out/test/persistent-engine-worker.test.js +0 -220
- package/out/test/refreshPolicy.test.js +0 -60
- package/out/test/registry.test.js +0 -351
- package/out/test/remote-trust.test.js +0 -242
- package/out/test/runner-protocol.test.js +0 -249
- package/out/test/runtime.test.js +0 -349
- package/out/test/sandbox-driver.test.js +0 -553
- package/out/test/sandbox-hardening.test.js +0 -395
- package/out/test/sandbox-runner.test.js +0 -343
- package/out/test/scheduledFleetStorage.test.js +0 -72
- package/out/test/serve-gateway-turn.test.js +0 -267
- package/out/test/serve-hardening.test.js +0 -418
- package/out/test/serveClient.test.js +0 -209
- package/out/test/sessionJsonlFleet.test.js +0 -78
- package/out/test/sessionShip.test.js +0 -560
- package/out/test/shared.test.js +0 -173
- package/out/test/skills-mcp.test.js +0 -299
- package/out/test/spotlightPublish.test.js +0 -327
- package/out/test/spotlightYaml.test.js +0 -58
- package/out/test/state-sync-peer.test.js +0 -156
- package/out/test/store-install-safe.test.js +0 -69
- package/out/test/store.test.js +0 -331
- package/out/test/stores.test.js +0 -504
- package/out/test/sync-switch.test.js +0 -251
- package/out/test/teamViewDiscovery.test.js +0 -90
- package/out/test/tls-bypass.test.js +0 -90
- package/out/test/toolPath.test.js +0 -120
- package/out/test/utils.test.js +0 -308
- package/out/test/viewsConfigMerge.test.js +0 -180
- package/out/test/warrant.test.js +0 -138
- package/out/test/windows-command-line.test.js +0 -75
- package/out/utils/agentEnvFile.js +0 -131
- package/out/utils/binary.js +0 -175
- package/out/utils/index.js +0 -37
- package/out/utils/network.js +0 -74
- package/out/utils/paths.js +0 -116
- package/out/utils/pid.js +0 -180
- package/out/utils/resolveNodeBinary.js +0 -168
- package/out/utils/windowsCommandLine.js +0 -29
- package/out/utils.js +0 -968
package/out/mcp.js
DELETED
|
@@ -1,654 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.AGENTHIPPO_MCP_SERVERS_ENV = exports.ALLOW_INLINE_DATA_TOKEN_ENV = void 0;
|
|
40
|
-
exports.loadMcpServers = loadMcpServers;
|
|
41
|
-
exports.resolveMcpEnvVar = resolveMcpEnvVar;
|
|
42
|
-
exports.resolveMcpServerEnv = resolveMcpServerEnv;
|
|
43
|
-
exports.generateCodexMcpConfig = generateCodexMcpConfig;
|
|
44
|
-
exports.getDefaultMcpConfig = getDefaultMcpConfig;
|
|
45
|
-
exports.loadBundledMcpServers = loadBundledMcpServers;
|
|
46
|
-
exports.resolveHttpMcpHeaders = resolveHttpMcpHeaders;
|
|
47
|
-
exports.referenceHttpMcpHeaders = referenceHttpMcpHeaders;
|
|
48
|
-
exports.formatInlineMcpServers = formatInlineMcpServers;
|
|
49
|
-
exports.serializeInlineMcpServers = serializeInlineMcpServers;
|
|
50
|
-
exports.parseInlineMcpServers = parseInlineMcpServers;
|
|
51
|
-
const fs_1 = require("fs");
|
|
52
|
-
const path = __importStar(require("path"));
|
|
53
|
-
const credential_context_1 = require("./cli/credential-context");
|
|
54
|
-
const paths_1 = require("./agentpack/paths");
|
|
55
|
-
const agentEnvFile_1 = require("./utils/agentEnvFile");
|
|
56
|
-
// -----------------------------------------------------------------------------
|
|
57
|
-
// Constants
|
|
58
|
-
// -----------------------------------------------------------------------------
|
|
59
|
-
/** Special command value indicating a bundled server reference */
|
|
60
|
-
const ENABLE_BUNDLED_COMMAND = 'enable-bundled';
|
|
61
|
-
/** Special command value indicating a bundled server should be explicitly disabled */
|
|
62
|
-
const DISABLE_BUNDLED_COMMAND = 'disable-bundled';
|
|
63
|
-
/** Name of the MCP config file */
|
|
64
|
-
const MCP_CONFIG_FILE = '.mcp.json';
|
|
65
|
-
/** MCP servers subdirectory in base-prompts */
|
|
66
|
-
const MCP_SERVERS_DIR = 'mcp-servers';
|
|
67
|
-
/**
|
|
68
|
-
* Explicit local-dev opt-in: allow the per-turn data credential to be resolved INLINE into
|
|
69
|
-
* MCP child env / `${credential:dataToken}` placeholders. Off by default — in any real
|
|
70
|
-
* deployment the credential must stay in the broker and reach tools only via the loopback
|
|
71
|
-
* data-plane gateway + turn nonce (secure-obo-design §2). Without this flag, a credential-
|
|
72
|
-
* backed value resolves to nothing and the pack's connector fails closed with its own error.
|
|
73
|
-
*/
|
|
74
|
-
exports.ALLOW_INLINE_DATA_TOKEN_ENV = 'AGENTHIPPO_ALLOW_INLINE_DATA_TOKEN';
|
|
75
|
-
function inlineDataTokenAllowed() {
|
|
76
|
-
return /^(1|true)$/i.test(process.env[exports.ALLOW_INLINE_DATA_TOKEN_ENV]?.trim() ?? '');
|
|
77
|
-
}
|
|
78
|
-
const ENV_PLACEHOLDER = /\$\{env:(\w+)\}/g;
|
|
79
|
-
const CREDENTIAL_PLACEHOLDER = /\$\{credential:(\w+)\}/g;
|
|
80
|
-
// -----------------------------------------------------------------------------
|
|
81
|
-
// Main API
|
|
82
|
-
// -----------------------------------------------------------------------------
|
|
83
|
-
/**
|
|
84
|
-
* Load MCP servers for an agent.
|
|
85
|
-
*
|
|
86
|
-
* All agents (including default) load from:
|
|
87
|
-
* <workspace>/.agentide/agents/<agentId>/mcp/.mcp.json
|
|
88
|
-
*
|
|
89
|
-
* @param agentId - Agent identifier ('default' or pack name)
|
|
90
|
-
* @param workspaceRoot - Workspace root path
|
|
91
|
-
* @param bundledBasePromptsDir - Path to extension's base-prompts directory (for bundled server resolution)
|
|
92
|
-
*/
|
|
93
|
-
async function loadMcpServers(agentId, workspaceRoot, bundledBasePromptsDir) {
|
|
94
|
-
const mcpDir = (0, paths_1.getAgentMcpDir)(workspaceRoot, agentId || paths_1.AGENT_CONSTANTS.DEFAULT_AGENT_ID);
|
|
95
|
-
const configPath = path.join(mcpDir, MCP_CONFIG_FILE);
|
|
96
|
-
if (!await pathExists(configPath)) {
|
|
97
|
-
return [];
|
|
98
|
-
}
|
|
99
|
-
const bundledMcpDir = bundledBasePromptsDir
|
|
100
|
-
? path.join(bundledBasePromptsDir, MCP_SERVERS_DIR)
|
|
101
|
-
: '';
|
|
102
|
-
return loadMcpConfigFile(configPath, mcpDir, workspaceRoot, bundledMcpDir);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Load MCP servers from a .mcp.json config file.
|
|
106
|
-
*
|
|
107
|
-
* @param configPath - Path to the .mcp.json file
|
|
108
|
-
* @param mcpDir - Directory containing the .mcp.json (for relative path resolution)
|
|
109
|
-
* @param workspaceRoot - Workspace root for .env file loading
|
|
110
|
-
* @param bundledMcpDir - Path to bundled MCP servers directory
|
|
111
|
-
*/
|
|
112
|
-
async function loadMcpConfigFile(configPath, mcpDir, workspaceRoot, bundledMcpDir) {
|
|
113
|
-
let config;
|
|
114
|
-
try {
|
|
115
|
-
const raw = await fs_1.promises.readFile(configPath, 'utf-8');
|
|
116
|
-
config = JSON.parse(raw);
|
|
117
|
-
}
|
|
118
|
-
catch (e) {
|
|
119
|
-
console.warn(`[AgentIDE] Failed to load MCP config from ${configPath}:`, e);
|
|
120
|
-
return [];
|
|
121
|
-
}
|
|
122
|
-
if (!config.mcpServers) {
|
|
123
|
-
return [];
|
|
124
|
-
}
|
|
125
|
-
// Load .env files for environment variable resolution
|
|
126
|
-
const envSources = await loadEnvFiles(workspaceRoot, mcpDir);
|
|
127
|
-
const servers = [];
|
|
128
|
-
for (const [name, entry] of Object.entries(config.mcpServers)) {
|
|
129
|
-
try {
|
|
130
|
-
const server = await resolveServerEntry(name, entry, mcpDir, bundledMcpDir, envSources);
|
|
131
|
-
if (server) {
|
|
132
|
-
servers.push(server);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
catch (e) {
|
|
136
|
-
console.warn(`[AgentIDE] Failed to resolve MCP server '${name}':`, e);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return servers;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Resolve a server entry to a fully resolved McpServerConfig.
|
|
143
|
-
*/
|
|
144
|
-
async function resolveServerEntry(name, entry, mcpDir, bundledMcpDir, envSources) {
|
|
145
|
-
if (entry.command === DISABLE_BUNDLED_COMMAND) {
|
|
146
|
-
// Explicitly disabled in .mcp.json; skip this server entirely.
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
if (entry.command === ENABLE_BUNDLED_COMMAND) {
|
|
150
|
-
// Resolve bundled server
|
|
151
|
-
return resolveBundledServer(name, entry, bundledMcpDir, envSources);
|
|
152
|
-
}
|
|
153
|
-
// HTTP Streamable MCP server — no subprocess needed
|
|
154
|
-
if (entry.url) {
|
|
155
|
-
// `${env:VAR}` in the URL resolves against the serve process env (e.g. the
|
|
156
|
-
// boot-stable AGENTHIPPO_DATA_MCP_URL of the loopback data-plane gateway).
|
|
157
|
-
const url = entry.url.replace(ENV_PLACEHOLDER, (_, varName) => resolvePlainEnvVar(varName, envSources)).trim();
|
|
158
|
-
if (!url) {
|
|
159
|
-
// Placeholder didn't resolve (e.g. gateway-backed entry loaded outside serve):
|
|
160
|
-
// drop the server rather than hand engines a broken empty-URL entry.
|
|
161
|
-
return null;
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
name,
|
|
165
|
-
label: entry.label ?? name,
|
|
166
|
-
description: entry.description,
|
|
167
|
-
command: '',
|
|
168
|
-
args: [],
|
|
169
|
-
url,
|
|
170
|
-
headers: resolveHeaders(entry.headers, envSources),
|
|
171
|
-
bearerTokenEnv: entry.bearerTokenEnv?.trim() || undefined,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
// Custom stdio server - resolve relative paths from mcpDir
|
|
175
|
-
return {
|
|
176
|
-
name,
|
|
177
|
-
label: entry.label ?? name,
|
|
178
|
-
description: entry.description,
|
|
179
|
-
command: entry.command ?? '',
|
|
180
|
-
args: resolveArgs(entry.args, mcpDir),
|
|
181
|
-
env: resolveEnv(entry.env, envSources),
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Resolve a bundled server reference.
|
|
186
|
-
*/
|
|
187
|
-
async function resolveBundledServer(name, entry, bundledMcpDir, envSources) {
|
|
188
|
-
const bundled = await loadBundledServerConfig(name, bundledMcpDir);
|
|
189
|
-
if (!bundled) {
|
|
190
|
-
return null;
|
|
191
|
-
}
|
|
192
|
-
const serverDir = path.join(bundledMcpDir, name);
|
|
193
|
-
// Merge bundled env with user-provided overrides (user env takes precedence)
|
|
194
|
-
const mergedEnv = { ...(bundled.env ?? {}) };
|
|
195
|
-
if (entry.env) {
|
|
196
|
-
for (const [key, value] of Object.entries(entry.env)) {
|
|
197
|
-
mergedEnv[key] = value;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
name,
|
|
202
|
-
label: entry.label ?? bundled.label ?? name,
|
|
203
|
-
description: entry.description ?? bundled.description,
|
|
204
|
-
command: bundled.command,
|
|
205
|
-
args: resolveArgs(bundled.args, serverDir),
|
|
206
|
-
env: resolveEnv(mergedEnv, envSources),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Load a bundled server config from base-prompts/mcp-servers/<name>/mcp.json.
|
|
211
|
-
*/
|
|
212
|
-
async function loadBundledServerConfig(name, bundledMcpDir) {
|
|
213
|
-
if (!bundledMcpDir) {
|
|
214
|
-
console.warn(`[AgentIDE] Bundled MCP directory unavailable; cannot resolve '${name}'`);
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
const configPath = path.join(bundledMcpDir, name, 'mcp.json');
|
|
218
|
-
if (!await pathExists(configPath)) {
|
|
219
|
-
console.warn(`[AgentIDE] Bundled server '${name}' not found at ${configPath}`);
|
|
220
|
-
return null;
|
|
221
|
-
}
|
|
222
|
-
try {
|
|
223
|
-
const raw = await fs_1.promises.readFile(configPath, 'utf-8');
|
|
224
|
-
const config = JSON.parse(raw);
|
|
225
|
-
if (!config.command || typeof config.command !== 'string') {
|
|
226
|
-
console.warn(`[AgentIDE] Invalid bundled server config at ${configPath}: missing command`);
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
return config;
|
|
230
|
-
}
|
|
231
|
-
catch (e) {
|
|
232
|
-
console.warn(`[AgentIDE] Failed to load bundled server config from ${configPath}:`, e);
|
|
233
|
-
return null;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
// -----------------------------------------------------------------------------
|
|
237
|
-
// Variable Resolution
|
|
238
|
-
// -----------------------------------------------------------------------------
|
|
239
|
-
/**
|
|
240
|
-
* Resolve variables in args array.
|
|
241
|
-
* - Relative paths (./) are resolved from serverDir
|
|
242
|
-
* - ${serverDir} is resolved to serverDir
|
|
243
|
-
*/
|
|
244
|
-
function resolveArgs(args, serverDir) {
|
|
245
|
-
if (!args) {
|
|
246
|
-
return [];
|
|
247
|
-
}
|
|
248
|
-
return args.map(arg => {
|
|
249
|
-
let resolved = arg;
|
|
250
|
-
// Resolve ${serverDir}
|
|
251
|
-
resolved = resolved.replace(/\$\{serverDir\}/g, serverDir);
|
|
252
|
-
// Resolve relative paths
|
|
253
|
-
if (resolved.startsWith('./') || resolved.startsWith('../')) {
|
|
254
|
-
resolved = path.resolve(serverDir, resolved);
|
|
255
|
-
}
|
|
256
|
-
return resolved;
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Resolve ${env:VAR_NAME} in env values.
|
|
261
|
-
*
|
|
262
|
-
* Lookup order (first match wins):
|
|
263
|
-
* 1. process.env (shell environment)
|
|
264
|
-
* 2. Workspace .env file (<workspace>/.env)
|
|
265
|
-
* 3. MCP directory .env file (<mcpDir>/.env)
|
|
266
|
-
*
|
|
267
|
-
* @param env - Environment variables with ${env:VAR_NAME} placeholders
|
|
268
|
-
* @param envSources - Additional env sources to check (loaded from .env files)
|
|
269
|
-
*/
|
|
270
|
-
/**
|
|
271
|
-
* Resolve a single ${env:VAR} reference for MCP child processes.
|
|
272
|
-
*
|
|
273
|
-
* The turn's OBO data token is exposed two ways, BOTH gated behind the explicit
|
|
274
|
-
* local-dev opt-in {@link ALLOW_INLINE_DATA_TOKEN_ENV}:
|
|
275
|
-
* - `${credential:dataToken}` placeholder (pack-author-facing; handled in resolveEnv).
|
|
276
|
-
* - A configurable set of env-var aliases for packs that reference the token via
|
|
277
|
-
* `${env:VAR}` directly (`AGENTHIPPO_DATA_TOKEN_ENV_VARS`, comma-separated; empty
|
|
278
|
-
* by default — inline aliasing must be declared, never ambient).
|
|
279
|
-
*
|
|
280
|
-
* In a real deployment neither fires: the credential stays in the broker and tools reach
|
|
281
|
-
* it via the loopback data-plane gateway + turn nonce (secure-obo-design §3).
|
|
282
|
-
*/
|
|
283
|
-
function resolveMcpEnvVar(varName, envSources = {}) {
|
|
284
|
-
const aliases = getDataTokenEnvAliases();
|
|
285
|
-
if (varName === 'dataToken') {
|
|
286
|
-
const tok = (0, credential_context_1.currentCredential)()?.dataToken?.trim();
|
|
287
|
-
return tok && inlineDataTokenAllowed() ? tok : '';
|
|
288
|
-
}
|
|
289
|
-
if (aliases.includes(varName)) {
|
|
290
|
-
const tok = (0, credential_context_1.currentCredential)()?.dataToken?.trim();
|
|
291
|
-
if (tok && inlineDataTokenAllowed()) {
|
|
292
|
-
return tok;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
return process.env[varName] ?? envSources[varName] ?? '';
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Env-var names that resolve to the turn's OBO data token when a pack references
|
|
299
|
-
* `${env:VAR}` directly. Empty by default — set `AGENTHIPPO_DATA_TOKEN_ENV_VARS=VAR1,VAR2`
|
|
300
|
-
* (together with the inline opt-in) to enable. The old implicit `DATABRICKS_TOKEN` default
|
|
301
|
-
* was removed with the disk token path: inline credential exposure is now always explicit.
|
|
302
|
-
*/
|
|
303
|
-
function getDataTokenEnvAliases() {
|
|
304
|
-
const raw = process.env.AGENTHIPPO_DATA_TOKEN_ENV_VARS;
|
|
305
|
-
if (raw !== undefined) {
|
|
306
|
-
return raw.split(',').map((v) => v.trim()).filter(Boolean);
|
|
307
|
-
}
|
|
308
|
-
return [];
|
|
309
|
-
}
|
|
310
|
-
function envValueUsesCredentialDataToken(value) {
|
|
311
|
-
return /\$\{credential:dataToken\}/.test(value);
|
|
312
|
-
}
|
|
313
|
-
function resolveEnv(env, envSources = {}) {
|
|
314
|
-
if (!env) {
|
|
315
|
-
return undefined;
|
|
316
|
-
}
|
|
317
|
-
const resolved = {};
|
|
318
|
-
for (const [key, value] of Object.entries(env)) {
|
|
319
|
-
CREDENTIAL_PLACEHOLDER.lastIndex = 0;
|
|
320
|
-
if (envValueUsesCredentialDataToken(value)) {
|
|
321
|
-
// Credential-backed secret. Baked into spawn env ONLY behind the explicit
|
|
322
|
-
// local-dev opt-in — the supported transport is the data-plane gateway, where
|
|
323
|
-
// the credential never leaves the broker process (secure-obo-design §2).
|
|
324
|
-
const tok = (0, credential_context_1.currentCredential)()?.dataToken?.trim();
|
|
325
|
-
if (tok) {
|
|
326
|
-
if (inlineDataTokenAllowed()) {
|
|
327
|
-
resolved[key] = tok;
|
|
328
|
-
}
|
|
329
|
-
// else: intentionally unset — the connector fails closed with its own error.
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
// No OBO credential (local dev / non-serve context): fall back to env var.
|
|
333
|
-
const fallback = process.env[key] ?? envSources[key] ?? '';
|
|
334
|
-
if (fallback) {
|
|
335
|
-
resolved[key] = fallback;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
continue;
|
|
339
|
-
}
|
|
340
|
-
resolved[key] = value.replace(ENV_PLACEHOLDER, (_, varName) => resolveMcpEnvVar(varName, envSources));
|
|
341
|
-
}
|
|
342
|
-
return resolved;
|
|
343
|
-
}
|
|
344
|
-
/** Resolve MCP server env placeholders (exported for tests). */
|
|
345
|
-
function resolveMcpServerEnv(env, envSources = {}) {
|
|
346
|
-
return resolveEnv(env, envSources);
|
|
347
|
-
}
|
|
348
|
-
/**
|
|
349
|
-
* Resolve `${env:VAR}` placeholders in HTTP MCP server headers and drop entries that resolve
|
|
350
|
-
* to empty (e.g. an unset token env var) so we never send a header like `Authorization: `.
|
|
351
|
-
* Returns undefined when no usable headers remain.
|
|
352
|
-
*/
|
|
353
|
-
function resolveHeaders(headers, envSources = {}) {
|
|
354
|
-
if (!headers) {
|
|
355
|
-
return undefined;
|
|
356
|
-
}
|
|
357
|
-
const resolved = {};
|
|
358
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
359
|
-
const rv = value.replace(ENV_PLACEHOLDER, (_, varName) => resolvePlainEnvVar(varName, envSources));
|
|
360
|
-
if (rv) {
|
|
361
|
-
resolved[key] = rv;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
return Object.keys(resolved).length > 0 ? resolved : undefined;
|
|
365
|
-
}
|
|
366
|
-
/** Header values resolve env vars only (no credential/dataToken semantics). */
|
|
367
|
-
function resolvePlainEnvVar(varName, envSources) {
|
|
368
|
-
return process.env[varName] ?? envSources[varName] ?? '';
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Load environment variables from .env files.
|
|
372
|
-
*
|
|
373
|
-
* Checks these locations (later files override earlier):
|
|
374
|
-
* 1. <mcpDir>/.env (pack-specific defaults)
|
|
375
|
-
* 2. <workspace>/.env (workspace secrets)
|
|
376
|
-
*
|
|
377
|
-
* Note: process.env always takes priority over .env files.
|
|
378
|
-
*/
|
|
379
|
-
async function loadEnvFiles(workspaceRoot, mcpDir) {
|
|
380
|
-
const envSources = {};
|
|
381
|
-
// Load in order of priority (lower priority first, so higher priority overwrites)
|
|
382
|
-
const envFiles = [
|
|
383
|
-
path.join(mcpDir, '.env'), // Pack MCP .env (lowest priority)
|
|
384
|
-
path.join(workspaceRoot, '.env'), // Workspace .env (higher priority)
|
|
385
|
-
];
|
|
386
|
-
for (const envFile of envFiles) {
|
|
387
|
-
const parsed = await parseEnvFile(envFile);
|
|
388
|
-
Object.assign(envSources, parsed);
|
|
389
|
-
}
|
|
390
|
-
return envSources;
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Parse a .env file into a key-value object.
|
|
394
|
-
*
|
|
395
|
-
* Supports:
|
|
396
|
-
* - KEY=value
|
|
397
|
-
* - KEY="quoted value"
|
|
398
|
-
* - KEY='single quoted'
|
|
399
|
-
* - # comments
|
|
400
|
-
* - Empty lines
|
|
401
|
-
*/
|
|
402
|
-
async function parseEnvFile(filePath) {
|
|
403
|
-
try {
|
|
404
|
-
const content = await fs_1.promises.readFile(filePath, 'utf-8');
|
|
405
|
-
return (0, agentEnvFile_1.parseEnvContent)(content);
|
|
406
|
-
}
|
|
407
|
-
catch {
|
|
408
|
-
// File doesn't exist or can't be read
|
|
409
|
-
return {};
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
// -----------------------------------------------------------------------------
|
|
413
|
-
// Codex Config Generation
|
|
414
|
-
// -----------------------------------------------------------------------------
|
|
415
|
-
/**
|
|
416
|
-
* Generate MCP servers section for Codex config.toml
|
|
417
|
-
*
|
|
418
|
-
* Format:
|
|
419
|
-
* [mcp_servers.name]
|
|
420
|
-
* command = "node"
|
|
421
|
-
* args = ["/path/to/dist/index.js"]
|
|
422
|
-
* env = { KEY = "value" }
|
|
423
|
-
*/
|
|
424
|
-
function generateCodexMcpConfig(servers, options) {
|
|
425
|
-
if (servers.length === 0) {
|
|
426
|
-
return '';
|
|
427
|
-
}
|
|
428
|
-
// `default_tools_approval_mode = "approve"` is the Codex per-server key that lets MCP
|
|
429
|
-
// tools run without an interactive prompt. The value enum is prompt|approve — "auto" is
|
|
430
|
-
// NOT valid: Codex ≥0.131 silently ignores it, defaults the server to `prompt`, and a
|
|
431
|
-
// headless `codex exec` turn then auto-Cancels the approval elicitation, surfacing as
|
|
432
|
-
// "user cancelled MCP tool call" on every tool call (verified live against 0.131.0).
|
|
433
|
-
// Only emit it in headless/serve auto-approve contexts — the interactive IDE path leaves
|
|
434
|
-
// it unset so users get Codex's normal approval prompts.
|
|
435
|
-
const approvalLine = options?.autoApprove ? 'default_tools_approval_mode = "approve"' : undefined;
|
|
436
|
-
const sections = servers.map(s => {
|
|
437
|
-
// HTTP Streamable MCP server — codex connects via URL, no subprocess
|
|
438
|
-
if (s.url) {
|
|
439
|
-
const urlLines = [
|
|
440
|
-
`[mcp_servers.${s.name}]`,
|
|
441
|
-
`url = ${JSON.stringify(s.url)}`,
|
|
442
|
-
];
|
|
443
|
-
if (s.bearerTokenEnv) {
|
|
444
|
-
// The auth token is read from the codex PROCESS env at request time
|
|
445
|
-
// (per-spawn codexEnv carries the turn nonce) — the config file itself
|
|
446
|
-
// stays byte-identical across turns, which is what removes the
|
|
447
|
-
// cross-user config.toml race (secure-obo-design §3.2).
|
|
448
|
-
urlLines.push(`bearer_token_env_var = ${JSON.stringify(s.bearerTokenEnv)}`);
|
|
449
|
-
}
|
|
450
|
-
if (s.headers && Object.keys(s.headers).length > 0) {
|
|
451
|
-
const headerEntries = Object.entries(s.headers)
|
|
452
|
-
.map(([k, v]) => `${JSON.stringify(k)} = ${JSON.stringify(v)}`)
|
|
453
|
-
.join(', ');
|
|
454
|
-
urlLines.push(`http_headers = { ${headerEntries} }`);
|
|
455
|
-
}
|
|
456
|
-
if (approvalLine) {
|
|
457
|
-
urlLines.push(approvalLine);
|
|
458
|
-
}
|
|
459
|
-
return urlLines.join('\n');
|
|
460
|
-
}
|
|
461
|
-
const lines = [
|
|
462
|
-
`[mcp_servers.${s.name}]`,
|
|
463
|
-
`command = ${JSON.stringify(s.command)}`,
|
|
464
|
-
`args = ${JSON.stringify(s.args)}`,
|
|
465
|
-
];
|
|
466
|
-
if (approvalLine) {
|
|
467
|
-
lines.push(approvalLine);
|
|
468
|
-
}
|
|
469
|
-
if (s.env && Object.keys(s.env).length > 0) {
|
|
470
|
-
// Use separate [mcp_servers.name.env] section — codex binary requires this form
|
|
471
|
-
lines.push('', `[mcp_servers.${s.name}.env]`);
|
|
472
|
-
for (const [k, v] of Object.entries(s.env)) {
|
|
473
|
-
// Quote the key: env-var names may contain '.', spaces, etc. that are not valid
|
|
474
|
-
// TOML bare keys (a bare `my.token` would parse as a nested table).
|
|
475
|
-
lines.push(`${JSON.stringify(k)} = ${JSON.stringify(v)}`);
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
return lines.join('\n');
|
|
479
|
-
});
|
|
480
|
-
return '\n# MCP Servers (AgentIDE)\n' + sections.join('\n\n');
|
|
481
|
-
}
|
|
482
|
-
// -----------------------------------------------------------------------------
|
|
483
|
-
// Sync Support
|
|
484
|
-
// -----------------------------------------------------------------------------
|
|
485
|
-
/**
|
|
486
|
-
* Get the default .mcp.json config content for syncing to a workspace.
|
|
487
|
-
* This creates the initial config that users can edit.
|
|
488
|
-
*
|
|
489
|
-
* @param bundledBasePromptsDir - Path to extension's base-prompts directory
|
|
490
|
-
*/
|
|
491
|
-
async function getDefaultMcpConfig(bundledBasePromptsDir) {
|
|
492
|
-
const configPath = path.join(bundledBasePromptsDir, MCP_SERVERS_DIR, MCP_CONFIG_FILE);
|
|
493
|
-
if (!await pathExists(configPath)) {
|
|
494
|
-
return null;
|
|
495
|
-
}
|
|
496
|
-
try {
|
|
497
|
-
return await fs_1.promises.readFile(configPath, 'utf-8');
|
|
498
|
-
}
|
|
499
|
-
catch {
|
|
500
|
-
return null;
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
// -----------------------------------------------------------------------------
|
|
504
|
-
// Bundled Server Definitions
|
|
505
|
-
// -----------------------------------------------------------------------------
|
|
506
|
-
async function loadBundledMcpServers(basePromptsDir) {
|
|
507
|
-
const mcpDir = path.join(basePromptsDir, MCP_SERVERS_DIR);
|
|
508
|
-
if (!await pathExists(mcpDir)) {
|
|
509
|
-
return [];
|
|
510
|
-
}
|
|
511
|
-
const servers = [];
|
|
512
|
-
let entries;
|
|
513
|
-
try {
|
|
514
|
-
entries = await fs_1.promises.readdir(mcpDir, { withFileTypes: true });
|
|
515
|
-
}
|
|
516
|
-
catch {
|
|
517
|
-
return [];
|
|
518
|
-
}
|
|
519
|
-
for (const entry of entries) {
|
|
520
|
-
if (!entry.isDirectory()) {
|
|
521
|
-
continue;
|
|
522
|
-
}
|
|
523
|
-
const serverName = entry.name;
|
|
524
|
-
const config = await loadBundledServerConfig(serverName, mcpDir);
|
|
525
|
-
if (!config) {
|
|
526
|
-
continue;
|
|
527
|
-
}
|
|
528
|
-
const serverDir = path.join(mcpDir, serverName);
|
|
529
|
-
servers.push({
|
|
530
|
-
name: config.name ?? serverName,
|
|
531
|
-
label: config.label ?? serverName,
|
|
532
|
-
description: config.description,
|
|
533
|
-
command: config.command,
|
|
534
|
-
args: resolveArgs(config.args, serverDir),
|
|
535
|
-
env: resolveEnv(config.env),
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
return servers;
|
|
539
|
-
}
|
|
540
|
-
/** Env var carrying JSON-serialized {@link InlineMcpServers} into custom engine workers. */
|
|
541
|
-
exports.AGENTHIPPO_MCP_SERVERS_ENV = 'AGENTHIPPO_MCP_SERVERS';
|
|
542
|
-
/**
|
|
543
|
-
* Resolve the final HTTP headers for a URL-based MCP server, applying `bearerTokenEnv`
|
|
544
|
-
* against the ENGINE'S per-turn env (process.env + per-spawn patch). Engines that build
|
|
545
|
-
* their MCP config in memory per turn (claude, custom) call this with the same env they
|
|
546
|
-
* hand the engine subprocess, so the turn nonce lands in the request header without ever
|
|
547
|
-
* touching a shared file.
|
|
548
|
-
*/
|
|
549
|
-
function resolveHttpMcpHeaders(server, turnEnv) {
|
|
550
|
-
const headers = { ...(server.headers ?? {}) };
|
|
551
|
-
if (server.bearerTokenEnv) {
|
|
552
|
-
const token = turnEnv[server.bearerTokenEnv]?.trim();
|
|
553
|
-
if (token) {
|
|
554
|
-
headers['Authorization'] = `Bearer ${token}`;
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
return Object.keys(headers).length > 0 ? headers : undefined;
|
|
558
|
-
}
|
|
559
|
-
/**
|
|
560
|
-
* The variable names the Claude CLI's `${NAME}` config expansion accepts. A `bearerTokenEnv`
|
|
561
|
-
* outside this shape would ship a header the CLI sends verbatim, so it falls back to in-memory
|
|
562
|
-
* resolution instead.
|
|
563
|
-
*/
|
|
564
|
-
const CLI_EXPANDABLE_ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
565
|
-
/**
|
|
566
|
-
* Claude-engine variant of {@link resolveHttpMcpHeaders}: emit a `${NAME}` REFERENCE and let the
|
|
567
|
-
* CLI expand it from its own environment at connect time, instead of resolving the secret here.
|
|
568
|
-
*
|
|
569
|
-
* The Agent SDK serializes the whole mcpServers object into `--mcp-config <json>` argv, and
|
|
570
|
-
* /proc/<pid>/cmdline is world-readable — no ptrace gate, unlike environ — so a resolved
|
|
571
|
-
* Authorization header there is visible to every uid on the host and to execve-argv audit
|
|
572
|
-
* tooling. The reference keeps the turn nonce at environ-level exposure, which the engine child
|
|
573
|
-
* already carries for the egress CLI. Expansion verified live on CLI 2.1.220, including the
|
|
574
|
-
* failure mode this relies on: an UNSET name passes through literally and the data gateway
|
|
575
|
-
* rejects it — fail closed, never fail open.
|
|
576
|
-
*/
|
|
577
|
-
function referenceHttpMcpHeaders(server, turnEnv) {
|
|
578
|
-
const name = server.bearerTokenEnv;
|
|
579
|
-
if (name && !CLI_EXPANDABLE_ENV_NAME.test(name)) {
|
|
580
|
-
return resolveHttpMcpHeaders(server, turnEnv);
|
|
581
|
-
}
|
|
582
|
-
const headers = { ...(server.headers ?? {}) };
|
|
583
|
-
if (name) {
|
|
584
|
-
headers['Authorization'] = `Bearer \${${name}}`;
|
|
585
|
-
}
|
|
586
|
-
return Object.keys(headers).length > 0 ? headers : undefined;
|
|
587
|
-
}
|
|
588
|
-
/**
|
|
589
|
-
* Convert resolved pack MCP servers to the inline record shape engines consume.
|
|
590
|
-
*
|
|
591
|
-
* stdio servers map to `{ command, args, env }`. HTTP Streamable / SSE servers map to
|
|
592
|
-
* `{ type: 'http', url, headers? }` — the Cursor SDK (`@cursor/sdk` McpServerConfig) accepts
|
|
593
|
-
* this shape inline, so remote MCP servers are available to cursor/custom engines, not just
|
|
594
|
-
* to the Codex engine (which gets them via config.toml).
|
|
595
|
-
*
|
|
596
|
-
* `turnEnv` (when provided) resolves each URL server's `bearerTokenEnv` into a concrete
|
|
597
|
-
* Authorization header — pass the same env the engine subprocess will receive.
|
|
598
|
-
*/
|
|
599
|
-
function formatInlineMcpServers(servers, turnEnv) {
|
|
600
|
-
const mcpServers = {};
|
|
601
|
-
for (const server of servers) {
|
|
602
|
-
if (server.url) {
|
|
603
|
-
const headers = resolveHttpMcpHeaders(server, turnEnv ?? process.env);
|
|
604
|
-
mcpServers[server.name] = {
|
|
605
|
-
type: 'http',
|
|
606
|
-
url: server.url,
|
|
607
|
-
...(headers ? { headers } : {}),
|
|
608
|
-
};
|
|
609
|
-
continue;
|
|
610
|
-
}
|
|
611
|
-
mcpServers[server.name] = {
|
|
612
|
-
command: server.command,
|
|
613
|
-
args: server.args,
|
|
614
|
-
...(server.env && Object.keys(server.env).length > 0 ? { env: server.env } : {}),
|
|
615
|
-
};
|
|
616
|
-
}
|
|
617
|
-
return mcpServers;
|
|
618
|
-
}
|
|
619
|
-
function serializeInlineMcpServers(servers) {
|
|
620
|
-
if (Object.keys(servers).length === 0) {
|
|
621
|
-
return undefined;
|
|
622
|
-
}
|
|
623
|
-
return JSON.stringify(servers);
|
|
624
|
-
}
|
|
625
|
-
function parseInlineMcpServers(raw) {
|
|
626
|
-
if (!raw?.trim()) {
|
|
627
|
-
return undefined;
|
|
628
|
-
}
|
|
629
|
-
try {
|
|
630
|
-
const parsed = JSON.parse(raw);
|
|
631
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
632
|
-
return undefined;
|
|
633
|
-
}
|
|
634
|
-
return parsed;
|
|
635
|
-
}
|
|
636
|
-
catch {
|
|
637
|
-
return undefined;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
// -----------------------------------------------------------------------------
|
|
641
|
-
// Helpers
|
|
642
|
-
// -----------------------------------------------------------------------------
|
|
643
|
-
/**
|
|
644
|
-
* Check if a path exists on the filesystem.
|
|
645
|
-
*/
|
|
646
|
-
async function pathExists(p) {
|
|
647
|
-
try {
|
|
648
|
-
await fs_1.promises.access(p);
|
|
649
|
-
return true;
|
|
650
|
-
}
|
|
651
|
-
catch {
|
|
652
|
-
return false;
|
|
653
|
-
}
|
|
654
|
-
}
|