@agenthippo-ai/agenthippo 1.110.11 → 1.110.20
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 -302
- 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 -1283
- 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 +618 -564
- 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 +127 -459
- package/out/scripts/analytics/agent-fleet-widget.js +18 -257
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +0 -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/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 +10 -6
- package/out/agentpack/github.js +0 -547
- package/out/agentpack/index.js +0 -69
- 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 -521
- 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 -324
- 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 -681
- 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 -151
- 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 -351
- package/out/cli/commands/serve.js +0 -1950
- package/out/cli/commands/store.js +0 -927
- package/out/cli/credential-context.js +0 -108
- 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 -153
- 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 -225
- package/out/cli/deploy/blueprints/registry.js +0 -84
- package/out/cli/deploy/layers/identity.js +0 -175
- 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 -776
- 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 -680
- 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 -643
- 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 -546
- 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 -326
- package/out/pack/lease-schema.js +0 -273
- package/out/pack/lease.js +0 -682
- 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 -141
- package/out/runner/protocol.js +0 -128
- package/out/runner/remoteEngine.js +0 -166
- 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 -572
- package/out/sandbox/processDriver.js +0 -318
- package/out/sandbox/sandboxRunner.js +0 -303
- 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 -460
- 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 -282
- package/out/test/data-plane.test.js +0 -624
- package/out/test/deploy-init.test.js +0 -860
- 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 -222
- 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 -224
- package/out/test/lease.test.js +0 -114
- package/out/test/localFleetAdapter.test.js +0 -91
- 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 -406
- package/out/test/sandbox-runner.test.js +0 -343
- package/out/test/sandbox-scope.test.js +0 -449
- package/out/test/scheduledFleetStorage.test.js +0 -72
- package/out/test/serve-cron-acceptance.test.js +0 -370
- package/out/test/serve-gateway-turn.test.js +0 -389
- package/out/test/serve-hardening.test.js +0 -591
- package/out/test/serveClient.test.js +0 -209
- package/out/test/sessionJsonlFleet.test.js +0 -78
- package/out/test/sessionShip.test.js +0 -618
- 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
|
@@ -1,225 +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.ASSERTION_HEADER = void 0;
|
|
40
|
-
exports.startDataPlaneSidecar = startDataPlaneSidecar;
|
|
41
|
-
/**
|
|
42
|
-
* Data-plane SIDECAR (secure-obo-design §7.6 / aperture-thin) — the connector's own trust
|
|
43
|
-
* domain, a SEPARATE container from the engine/agent.
|
|
44
|
-
*
|
|
45
|
-
* It runs the full data plane (TurnRegistry + gateway + connector) and holds the backend BASE
|
|
46
|
-
* credential (AWS keys, Postgres pool login, …). The agent container gets NONE of it: it only
|
|
47
|
-
* (a) registers verified turns via this authenticated control API and (b) points the engine at
|
|
48
|
-
* the gateway URL. Because the sidecar is a different container (different PID namespace), the
|
|
49
|
-
* engine cannot read the base credential from `/proc/<pid>/environ`, and because the sidecar
|
|
50
|
-
* resolves the nonce → userId server-side, the engine cannot forge another user's identity.
|
|
51
|
-
*
|
|
52
|
-
* Control API (loopback/pod-network, bearer-authenticated):
|
|
53
|
-
* POST /turns { userId, sessionKey, inboundToken?, egressStoreKey? } → { nonce }
|
|
54
|
-
* DELETE /turns/:nonce → 204
|
|
55
|
-
* GET /edge/turn (forward_auth from the trusted EDGE; X-Agent-User header)
|
|
56
|
-
* → 200 + `X-Agent-Turn-Nonce` response header
|
|
57
|
-
* The gateway (nonce-authenticated MCP) is a separate port the engine dials directly.
|
|
58
|
-
*
|
|
59
|
-
* EDGE-registration mode (P1 fix, obo-inprogress §2): the bearer secret is held by the IdP
|
|
60
|
-
* Caddy — NOT the agent container. Caddy registers each chat turn via `forward_auth` against
|
|
61
|
-
* `/edge/turn` (identity from the X-Agent-User header its auth-broker hop just verified) and
|
|
62
|
-
* copies the returned nonce header onto the request it proxies to serve. serve then has no
|
|
63
|
-
* registration authority at all: a compromised engine reading serve's `/proc/<pid>/environ`
|
|
64
|
-
* finds no token that can mint a nonce for an arbitrary userId. Release rides the gateway's
|
|
65
|
-
* nonce-authenticated `DELETE /turn`; the registry deadline is the backstop.
|
|
66
|
-
*/
|
|
67
|
-
const http = __importStar(require("http"));
|
|
68
|
-
const crypto_1 = require("crypto");
|
|
69
|
-
const index_1 = require("./index");
|
|
70
|
-
const serve_hardening_1 = require("../serve-hardening");
|
|
71
|
-
const gateway_1 = require("./gateway");
|
|
72
|
-
/**
|
|
73
|
-
* Header carrying the EDGE-verified user ASSERTION (agent-identity.md §8.5 G1) — the signed
|
|
74
|
-
* artifact, as opposed to `X-Agent-User` which is only the identifier. It becomes the turn's
|
|
75
|
-
* `inboundToken`, which is what `passthrough` hands the backend and what an RFC 8693 `exchange`
|
|
76
|
-
* provider presents as its `subject_token`.
|
|
77
|
-
*
|
|
78
|
-
* Set by the trusted edge on the turn-registration hop only, so it never reaches the agent
|
|
79
|
-
* container. A client-supplied copy must be stripped at the edge, exactly as for the nonce.
|
|
80
|
-
*/
|
|
81
|
-
exports.ASSERTION_HEADER = 'x-agent-user-assertion';
|
|
82
|
-
function headerValue(req, name) {
|
|
83
|
-
const v = req.headers[name];
|
|
84
|
-
return (Array.isArray(v) ? v[0] : v)?.trim() || undefined;
|
|
85
|
-
}
|
|
86
|
-
/** Audit-safe fingerprint of a bearer credential — never the credential. */
|
|
87
|
-
function sha256Prefix(value) {
|
|
88
|
-
return (0, crypto_1.createHash)('sha256').update(value).digest('hex').slice(0, 12);
|
|
89
|
-
}
|
|
90
|
-
function bearer(header) {
|
|
91
|
-
return header?.match(/^Bearer\s+(\S+)$/i)?.[1];
|
|
92
|
-
}
|
|
93
|
-
function tokenEq(a, b) {
|
|
94
|
-
const x = Buffer.from(a);
|
|
95
|
-
const y = Buffer.from(b);
|
|
96
|
-
return x.length === y.length && (0, crypto_1.timingSafeEqual)(x, y);
|
|
97
|
-
}
|
|
98
|
-
async function startDataPlaneSidecar(opts) {
|
|
99
|
-
const host = opts.bindHost ?? '0.0.0.0';
|
|
100
|
-
// The gateway binds `host` on a fixed port so the engine can be told the URL at deploy time.
|
|
101
|
-
const plane = await index_1.DataPlane.start(opts.config, {
|
|
102
|
-
logger: opts.logger,
|
|
103
|
-
audit: opts.audit,
|
|
104
|
-
gateway: { host, port: opts.gatewayPort, advertiseHost: host === '0.0.0.0' ? undefined : host },
|
|
105
|
-
});
|
|
106
|
-
const releases = new Map();
|
|
107
|
-
const control = http.createServer(async (req, res) => {
|
|
108
|
-
const reject = (code, msg) => { res.writeHead(code, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: msg })); };
|
|
109
|
-
try {
|
|
110
|
-
const tok = bearer(req.headers.authorization);
|
|
111
|
-
if (!tok || !tokenEq(tok, opts.registerToken)) {
|
|
112
|
-
opts.audit?.('unauthorized', 'sidecar_register_reject', { reason: tok ? 'bad_token' : 'missing_token' });
|
|
113
|
-
return reject(401, 'unauthorized');
|
|
114
|
-
}
|
|
115
|
-
const path = req.url?.split('?')[0] ?? '';
|
|
116
|
-
// Edge registration (Caddy forward_auth sends GET, no body): identity comes from the
|
|
117
|
-
// X-Agent-User header the edge's preceding auth-broker hop verified and set. The nonce
|
|
118
|
-
// rides a response header so `copy_headers` can lift it onto the proxied request.
|
|
119
|
-
// sessionKey degrades to userId here — the edge never sees the body's session_id.
|
|
120
|
-
if ((req.method === 'GET' || req.method === 'POST') && path === '/edge/turn') {
|
|
121
|
-
const userId = (Array.isArray(req.headers['x-agent-user']) ? req.headers['x-agent-user'][0] : req.headers['x-agent-user'])?.trim();
|
|
122
|
-
if (!userId) {
|
|
123
|
-
opts.audit?.('unauthorized', 'sidecar_edge_reject', { reason: 'missing_user' });
|
|
124
|
-
return reject(400, 'X-Agent-User required');
|
|
125
|
-
}
|
|
126
|
-
// The user ASSERTION, not just the identifier (agent-identity.md §8.5 G1). The edge
|
|
127
|
-
// forwarded only X-Agent-User until now, so `registerTurnRaw` got no inboundToken and
|
|
128
|
-
// edge mode silently supported the `identity` provider alone: `passthrough` failed
|
|
129
|
-
// closed on every call, and an RFC 8693 `exchange` provider had no subject_token to
|
|
130
|
-
// exchange. Trusted exactly like X-Agent-User — only the in-network edge can reach
|
|
131
|
-
// this port, and the edge overwrites any client-supplied copy.
|
|
132
|
-
const inboundToken = headerValue(req, exports.ASSERTION_HEADER)?.replace(/^Bearer\s+/i, '').trim() || undefined;
|
|
133
|
-
const { nonce } = plane.registerTurnRaw({ userId, sessionKey: userId, inboundToken });
|
|
134
|
-
// Never the assertion itself: it is a bearer credential, and these rows ship to the
|
|
135
|
-
// evidence server. A hash prefix still proves which assertion a turn used.
|
|
136
|
-
opts.audit?.(userId, 'sidecar_edge_register', {
|
|
137
|
-
userId,
|
|
138
|
-
assertion: inboundToken ? `sha256:${sha256Prefix(inboundToken)}` : 'none',
|
|
139
|
-
});
|
|
140
|
-
res.writeHead(200, { 'Content-Type': 'application/json', [gateway_1.TURN_NONCE_HEADER]: nonce });
|
|
141
|
-
return res.end(JSON.stringify({ ok: true }));
|
|
142
|
-
}
|
|
143
|
-
if (req.method === 'POST' && path === '/turns') {
|
|
144
|
-
let body;
|
|
145
|
-
try {
|
|
146
|
-
body = JSON.parse(await (0, serve_hardening_1.readBodyWithCap)(req));
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
return reject(400, 'bad json');
|
|
150
|
-
}
|
|
151
|
-
const userId = (body.userId ?? '').trim();
|
|
152
|
-
if (!userId) {
|
|
153
|
-
return reject(400, 'userId required');
|
|
154
|
-
}
|
|
155
|
-
// Which agent SAYS it is asking. Recorded, never trusted: the register token is
|
|
156
|
-
// shared, so this claim is only as good as whoever holds it. `binding: 'asserted'`
|
|
157
|
-
// travels with it so nobody reading evidence later mistakes it for a verified fact
|
|
158
|
-
// (PLAN/agent-identity.md §4.4 — the successor is warrant verification, F3).
|
|
159
|
-
const claimed = body.agent?.pack?.trim();
|
|
160
|
-
// One connector is meant to serve one agent. When it does not, this is where it
|
|
161
|
-
// becomes visible — and visibility is the whole deliverable, since the sidecar
|
|
162
|
-
// cannot safely refuse on an unverifiable claim.
|
|
163
|
-
const mismatch = Boolean(claimed && opts.agent?.pack && claimed !== opts.agent.pack);
|
|
164
|
-
if (mismatch) {
|
|
165
|
-
// console.warn, not logger.warn: the logger is a no-op without --verbose, and two
|
|
166
|
-
// agents sharing one connector is the exact condition E2's agent bound rests on
|
|
167
|
-
// NOT happening. It must be unmissable in the default deployment, not a debug line.
|
|
168
|
-
console.warn(`Warning: turn registration claims agent "${claimed}" but this connector loaded ` +
|
|
169
|
-
`"${opts.agent?.pack}". One connector is meant to serve one agent ` +
|
|
170
|
-
`(PLAN/agent-identity.md §4.4) — both now share this connector's base credential, ` +
|
|
171
|
-
`so neither is bounded by the job it was deployed for.`);
|
|
172
|
-
}
|
|
173
|
-
opts.audit?.((body.sessionKey ?? '').trim() || userId, 'sidecar_register', {
|
|
174
|
-
userId,
|
|
175
|
-
claimedAgent: claimed ?? 'none',
|
|
176
|
-
binding: 'asserted',
|
|
177
|
-
...(mismatch ? { agentMismatch: true, loadedAgent: opts.agent?.pack } : {}),
|
|
178
|
-
});
|
|
179
|
-
const { nonce, release } = plane.registerTurnRaw({
|
|
180
|
-
userId, sessionKey: (body.sessionKey ?? '').trim() || userId,
|
|
181
|
-
inboundToken: body.inboundToken, egressStoreKey: body.egressStoreKey,
|
|
182
|
-
});
|
|
183
|
-
releases.set(nonce, release);
|
|
184
|
-
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
185
|
-
return res.end(JSON.stringify({ nonce }));
|
|
186
|
-
}
|
|
187
|
-
if (req.method === 'DELETE' && path.startsWith('/turns/')) {
|
|
188
|
-
const nonce = decodeURIComponent(path.slice('/turns/'.length));
|
|
189
|
-
releases.get(nonce)?.();
|
|
190
|
-
releases.delete(nonce);
|
|
191
|
-
res.writeHead(204);
|
|
192
|
-
return res.end();
|
|
193
|
-
}
|
|
194
|
-
reject(404, 'not found');
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
opts.logger?.warn(`[Sidecar] control error: ${err instanceof Error ? err.message : String(err)}`);
|
|
198
|
-
if (!res.headersSent) {
|
|
199
|
-
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
200
|
-
}
|
|
201
|
-
res.end(JSON.stringify({ error: 'internal' }));
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
await new Promise((resolve, reject) => {
|
|
205
|
-
control.once('error', reject);
|
|
206
|
-
control.listen(opts.controlPort, host, () => resolve());
|
|
207
|
-
});
|
|
208
|
-
const controlAddress = control.address();
|
|
209
|
-
const controlPort = controlAddress && typeof controlAddress !== 'string' ? controlAddress.port : opts.controlPort;
|
|
210
|
-
opts.logger?.info(`[Sidecar] gateway ${plane.url} | control :${controlPort} (bound ${host})`);
|
|
211
|
-
// A `passthrough` provider has nothing of its own: with no inbound token it fails closed on
|
|
212
|
-
// EVERY call (broker.ts). Before the assertion header existed, an edge-registered turn never
|
|
213
|
-
// carried one, so this combination looked healthy at boot and then denied every single tool
|
|
214
|
-
// call at runtime. Say it once, at boot, where an operator can act on it.
|
|
215
|
-
if ((opts.config.provider ?? 'passthrough').trim().toLowerCase() === 'passthrough') {
|
|
216
|
-
console.warn(`Warning: provider=passthrough needs a per-user token on every turn. Edge-registered turns ` +
|
|
217
|
-
`supply it via the ${exports.ASSERTION_HEADER} header — if your edge does not forward it, every tool ` +
|
|
218
|
-
`call will fail closed. See PLAN/agent-identity.md §8.5 G1.`);
|
|
219
|
-
}
|
|
220
|
-
return {
|
|
221
|
-
gatewayUrl: plane.url,
|
|
222
|
-
controlPort,
|
|
223
|
-
close: async () => { await new Promise((r) => control.close(() => r())); await plane.close(); },
|
|
224
|
-
};
|
|
225
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BLUEPRINTS = exports.BLUEPRINT_IDS = void 0;
|
|
7
|
-
exports.isBlueprintId = isBlueprintId;
|
|
8
|
-
exports.resolveBlueprint = resolveBlueprint;
|
|
9
|
-
exports.BLUEPRINT_IDS = [
|
|
10
|
-
'sandbox',
|
|
11
|
-
'prospect-demo',
|
|
12
|
-
'team-pilot',
|
|
13
|
-
'regulated-air-gapped',
|
|
14
|
-
'enterprise-fleet',
|
|
15
|
-
];
|
|
16
|
-
function isBlueprintId(value) {
|
|
17
|
-
return exports.BLUEPRINT_IDS.includes(value);
|
|
18
|
-
}
|
|
19
|
-
exports.BLUEPRINTS = {
|
|
20
|
-
sandbox: {
|
|
21
|
-
id: 'sandbox',
|
|
22
|
-
description: 'Internal test, no external users — no edge, no SSO, no host port beyond localhost.',
|
|
23
|
-
targets: ['vm'],
|
|
24
|
-
},
|
|
25
|
-
'prospect-demo': {
|
|
26
|
-
id: 'prospect-demo',
|
|
27
|
-
description: 'Throwaway public demo for a prospect — Cloudflare Tunnel + a throwaway Google OAuth client.',
|
|
28
|
-
targets: ['vm', 'compose'],
|
|
29
|
-
},
|
|
30
|
-
'team-pilot': {
|
|
31
|
-
id: 'team-pilot',
|
|
32
|
-
description: 'Single-agent pilot. Rides the customer platform\'s own identity when one exists (GCP IAP, ' +
|
|
33
|
-
'Databricks workspace SSO, Snowflake network, Cloudflare Access); falls back to a self-issued edge ' +
|
|
34
|
-
'(own Caddy + oauth2-proxy + Google client) on vm/compose/aws-ecs/azure-container-apps, which have ' +
|
|
35
|
-
'no platform-native option yet.',
|
|
36
|
-
targets: ['cloudrun', 'databricks-app', 'spcs', 'cloudflare', 'vm', 'compose', 'aws-ecs', 'azure-container-apps'],
|
|
37
|
-
},
|
|
38
|
-
'regulated-air-gapped': {
|
|
39
|
-
id: 'regulated-air-gapped',
|
|
40
|
-
description: 'VPN/localhost only, no tunnel, no external telemetry — the highest-scrutiny buyer profile. ' +
|
|
41
|
-
'Currently generator-identical to sandbox (PLAN/deploy.md §2 gap); the distinction is buyer framing, ' +
|
|
42
|
-
'not yet enforced posture.',
|
|
43
|
-
targets: ['vm'],
|
|
44
|
-
},
|
|
45
|
-
'enterprise-fleet': {
|
|
46
|
-
id: 'enterprise-fleet',
|
|
47
|
-
description: 'Federated identity against a central IdP (enterprise-deploy/idp/) for a growing fleet of agents. ' +
|
|
48
|
-
'Same-host colocation (no edge of its own) is available for vm/compose via the raw ' +
|
|
49
|
-
'`--ingress edge-fed --colocate` flag — not yet encoded as a blueprint variant.',
|
|
50
|
-
targets: ['cloudrun', 'vm', 'compose', 'aws-ecs', 'azure-container-apps'],
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Resolve a blueprint (+ optional platform override) to the `--target`/`--ingress` pair
|
|
55
|
-
* `deploy-init.ts` already knows how to render. Throws on a platform not in the blueprint's
|
|
56
|
-
* supported set so a typo doesn't silently produce the wrong deployment shape.
|
|
57
|
-
*/
|
|
58
|
-
function resolveBlueprint(id, platform) {
|
|
59
|
-
const def = exports.BLUEPRINTS[id];
|
|
60
|
-
const target = platform ?? def.targets[0];
|
|
61
|
-
if (!def.targets.includes(target)) {
|
|
62
|
-
throw new Error(`Blueprint "${id}" does not support --platform ${target}. ` +
|
|
63
|
-
`Supported: ${def.targets.join(', ')}.`);
|
|
64
|
-
}
|
|
65
|
-
switch (id) {
|
|
66
|
-
case 'sandbox':
|
|
67
|
-
case 'regulated-air-gapped':
|
|
68
|
-
return { target };
|
|
69
|
-
case 'prospect-demo':
|
|
70
|
-
return { target, ingress: 'edge' };
|
|
71
|
-
case 'enterprise-fleet':
|
|
72
|
-
return { target, ingress: 'edge-fed' };
|
|
73
|
-
case 'team-pilot':
|
|
74
|
-
// Platform-native identity where the platform actually has one; vm/compose have
|
|
75
|
-
// none, so they fall back to the self-issued edge (own Caddy + oauth2-proxy).
|
|
76
|
-
if (target === 'cloudrun') {
|
|
77
|
-
return { target, ingress: 'iap' };
|
|
78
|
-
}
|
|
79
|
-
if (target === 'databricks-app' || target === 'spcs' || target === 'cloudflare') {
|
|
80
|
-
return { target };
|
|
81
|
-
}
|
|
82
|
-
return { target, ingress: 'edge' };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) AgentHippo.ai. All rights reserved.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EDGE_AGENT_PORT = void 0;
|
|
7
|
-
exports.renderIdentityLayer = renderIdentityLayer;
|
|
8
|
-
exports.renderSidecarEdgeCaddyfile = renderSidecarEdgeCaddyfile;
|
|
9
|
-
exports.renderSidecarFedCaddyfile = renderSidecarFedCaddyfile;
|
|
10
|
-
/**
|
|
11
|
-
* Proof that `X-Auth-Request-Email` was set by THIS Caddy and not by a client.
|
|
12
|
-
*
|
|
13
|
-
* The broker now 401s an `X-Auth-Request-Email` that arrives without a matching
|
|
14
|
-
* `x-agenthippo-proxy-secret` (constant-time compared), because the header is otherwise a bearer
|
|
15
|
-
* assertion of identity that anything able to reach the broker's port could make. Only the routes
|
|
16
|
-
* that actually forward a verified email upstream carry it — adding it elsewhere would spread the
|
|
17
|
-
* secret across hops that have no use for it.
|
|
18
|
-
*
|
|
19
|
-
* `{env.…}` rather than `{$…}`: a runtime placeholder, so the secret is never baked into the
|
|
20
|
-
* rendered config on disk. Unset ⇒ empty ⇒ the broker refuses, which is the intended direction.
|
|
21
|
-
*/
|
|
22
|
-
const BROKER_PROXY_SECRET_LINES = [
|
|
23
|
-
' # Proves this hop is the trusted proxy — the broker 401s X-Auth-Request-Email without it.',
|
|
24
|
-
' header_up x-agenthippo-proxy-secret {env.AGENTHIPPO_AUTH_PROXY_SECRET}',
|
|
25
|
-
];
|
|
26
|
-
function renderIdentityLayer(opts) {
|
|
27
|
-
const { mode, authBrokerAddr, healthProxy, agentProxy } = opts;
|
|
28
|
-
const oauth2ProxyAddr = opts.oauth2ProxyAddr ?? '';
|
|
29
|
-
const catchallBody = opts.catchallBody ?? agentProxy;
|
|
30
|
-
const turn = opts.turnRegistration;
|
|
31
|
-
// The turn-registration hop, inserted AFTER the identity forward_auth (which sets
|
|
32
|
-
// X-Agent-User — the user the sidecar mints the nonce for). Only POST chat turns match.
|
|
33
|
-
const turnHop = turn
|
|
34
|
-
? [
|
|
35
|
-
' # Turn registration — after identity: X-Agent-User (set above) names the user the',
|
|
36
|
-
' # sidecar mints the nonce for. Only POST chat turns match; others pass through.',
|
|
37
|
-
' # X-Agent-User-Assertion (also set above) rides along as the turn\'s inboundToken:',
|
|
38
|
-
' # without it `passthrough` fails closed on every call and an RFC 8693 `exchange`',
|
|
39
|
-
' # provider has no subject_token. See PLAN/agent-identity.md §8.5 G1.',
|
|
40
|
-
` forward_auth @turnStart ${turn.connectorAddr} {`,
|
|
41
|
-
' uri /edge/turn',
|
|
42
|
-
' copy_headers X-Agent-Turn-Nonce',
|
|
43
|
-
` header_up Authorization "Bearer {$${turn.tokenEnvVar}}"`,
|
|
44
|
-
' }',
|
|
45
|
-
]
|
|
46
|
-
: [];
|
|
47
|
-
// NOTE: two forward_auth in one handle block do NOT run in source order — Caddy sorts by
|
|
48
|
-
// its directive table, so the turn-registration hop could fire before identity is
|
|
49
|
-
// established (the connector then gets no X-Agent-User → 400). Wrapping the sequence in
|
|
50
|
-
// `route {}` forces source order: identity first (unauth short-circuits), then turn
|
|
51
|
-
// registration, then proxy.
|
|
52
|
-
// Re-indent wrapped directives one level so the generated file stays readable — operators
|
|
53
|
-
// copy these snippets by hand onto the IdP host.
|
|
54
|
-
const indent = (lines) => lines.map((l) => (l.trim() ? ` ${l}` : l));
|
|
55
|
-
const gated = (identityGate, body) => turn
|
|
56
|
-
? [' route {', ...indent(identityGate), ...turnHop, ...indent(body), ' }']
|
|
57
|
-
: [...identityGate, ...body];
|
|
58
|
-
const lines = [];
|
|
59
|
-
if (turn) {
|
|
60
|
-
lines.push(' # Hygiene: never let a client-supplied nonce header through (copy_headers overwrites it', ' # on chat paths anyway, and a forged nonce fails closed at the gateway — belt-and-braces).', ' request_header -X-Agent-Turn-Nonce', ' # Same for the user assertion: it is set from the verified /api/ide/me response below,', ' # never from the client. A forged one would become the turn\'s inboundToken.', ' request_header -X-Agent-User-Assertion');
|
|
61
|
-
}
|
|
62
|
-
if (mode === 'self-issued') {
|
|
63
|
-
lines.push(' # IDE PKCE sign-in: broker requires X-Auth-Request-Email from oauth2-proxy. Must come', ' # before the generic /oauth/* handle so authorize is gated (not dumped straight to broker).', ' handle /oauth/authorize {', ` forward_auth ${oauth2ProxyAddr} {`, ' uri /oauth2/auth', ' copy_headers X-Auth-Request-Email', ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ' @unauth status 401', ' handle_response @unauth {', ' redir * "/oauth2/sign_in?rd={http.request.uri}"', ' }', ' }', ` reverse_proxy ${authBrokerAddr} {`, ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ...BROKER_PROXY_SECRET_LINES, ' }', ' }', ' # Federated SSO (A′): browsers from other subdomains land here to stamp the shared cookie.', ' # Same oauth2-proxy gate as authorize; must precede the generic /oauth/* handle.', ' handle /oauth/browser-login {', ` forward_auth ${oauth2ProxyAddr} {`, ' uri /oauth2/auth', ' copy_headers X-Auth-Request-Email', ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ' @unauth status 401', ' handle_response @unauth {', ' redir * "/oauth2/sign_in?rd={http.request.uri}"', ' }', ' }', ` reverse_proxy ${authBrokerAddr} {`, ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ...BROKER_PROXY_SECRET_LINES, ' }', ' }', ' # Auth-broker: token exchange + other /oauth/* routes that must stay ungated.', ' handle /oauth/* {', ` reverse_proxy ${authBrokerAddr} {`, ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ' }', ' }');
|
|
64
|
-
}
|
|
65
|
-
lines.push(' handle /api/ide/* {', ` reverse_proxy ${authBrokerAddr} {`, ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ' }', ' }');
|
|
66
|
-
if (mode === 'self-issued') {
|
|
67
|
-
lines.push(' # oauth2-proxy: Google SSO callback + sign-in.', ' handle /oauth2/* {', ` reverse_proxy ${oauth2ProxyAddr} {`, ' header_up X-Forwarded-Proto https', ' header_up X-Forwarded-Host {http.request.host}', ' }', ' }');
|
|
68
|
-
}
|
|
69
|
-
lines.push(' @health path /health /ready', ' handle @health {', ...healthProxy, ' }');
|
|
70
|
-
if (turn) {
|
|
71
|
-
lines.push(' # Chat-turn matcher for edge turn registration (P1 fix): only POST chat turns register.', ' @turnStart {', ' method POST', ' path /v1/chat /v1/chat/stream', ' }');
|
|
72
|
-
}
|
|
73
|
-
lines.push(' # API clients (IDE) with a Bearer token: validate via auth-broker, copy identity header.', ' @apiWithAuth {', ' path /v1/*', ' header Authorization *', ' }', ' handle @apiWithAuth {', ...gated([
|
|
74
|
-
` forward_auth ${authBrokerAddr} {`,
|
|
75
|
-
' uri /api/ide/me',
|
|
76
|
-
` copy_headers X-Agent-User${turn ? ' X-Agent-User-Assertion' : ''}`,
|
|
77
|
-
' header_up X-Forwarded-Proto https',
|
|
78
|
-
' header_up X-Forwarded-Host {http.request.host}',
|
|
79
|
-
' @unauth status 401',
|
|
80
|
-
' handle_response @unauth {',
|
|
81
|
-
' respond "Unauthorized" 401',
|
|
82
|
-
' }',
|
|
83
|
-
' }',
|
|
84
|
-
], agentProxy), ' }');
|
|
85
|
-
if (mode === 'self-issued') {
|
|
86
|
-
lines.push(' # Browser clients: SSO via oauth2-proxy, identity injected as X-Agent-User.', ' handle {', ...gated([
|
|
87
|
-
` forward_auth ${oauth2ProxyAddr} {`,
|
|
88
|
-
' uri /oauth2/auth',
|
|
89
|
-
' copy_headers X-Auth-Request-Email>X-Agent-User',
|
|
90
|
-
' header_up X-Forwarded-Proto https',
|
|
91
|
-
' header_up X-Forwarded-Host {http.request.host}',
|
|
92
|
-
' @unauth status 401',
|
|
93
|
-
' handle_response @unauth {',
|
|
94
|
-
' redir * "/oauth2/sign_in?rd={http.request.uri}"',
|
|
95
|
-
' }',
|
|
96
|
-
' }',
|
|
97
|
-
], catchallBody), ' }');
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
const idp = opts.idpUrl?.trim() || '';
|
|
101
|
-
const loginRedirect = idp
|
|
102
|
-
? ` redir * "${idp}/oauth/browser-login?return_to=https://{http.request.host}{http.request.uri}" 302`
|
|
103
|
-
: ' respond "Unauthorized" 401';
|
|
104
|
-
lines.push(' # Browser clients: the shared .agenthippo.ai cookie is verified by auth-broker. No cookie', ' # → redirect to the central IdP to log in (it stamps the cookie), then return.', ' handle {', ...gated([
|
|
105
|
-
` forward_auth ${authBrokerAddr} {`,
|
|
106
|
-
' uri /api/ide/me',
|
|
107
|
-
' copy_headers X-Agent-User',
|
|
108
|
-
' header_up X-Forwarded-Proto https',
|
|
109
|
-
' header_up X-Forwarded-Host {http.request.host}',
|
|
110
|
-
' @unauth status 401',
|
|
111
|
-
' handle_response @unauth {',
|
|
112
|
-
loginRedirect,
|
|
113
|
-
' }',
|
|
114
|
-
' }',
|
|
115
|
-
], catchallBody), ' }');
|
|
116
|
-
}
|
|
117
|
-
return lines;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* "Sidecar" platforms — Cloud Run, ECS Fargate (`awsvpc` mode), Azure Container Apps (one
|
|
121
|
-
* replica) — all share one task's network namespace across containers and terminate TLS in
|
|
122
|
-
* front, so Caddy always listens on plain HTTP `:{$PORT}` and reaches every sidecar via
|
|
123
|
-
* `localhost:<port>` (never docker-DNS names). The agent isn't the ingress on these platforms,
|
|
124
|
-
* so it listens on a distinct internal port to avoid clashing with Caddy on `$PORT`.
|
|
125
|
-
*/
|
|
126
|
-
exports.EDGE_AGENT_PORT = 8090;
|
|
127
|
-
/** Caddyfile for a sidecar platform's self-issued edge (own oauth2-proxy + Google client). */
|
|
128
|
-
function renderSidecarEdgeCaddyfile() {
|
|
129
|
-
return [
|
|
130
|
-
'# Sidecar-platform edge ingress. TLS terminates in front; Caddy listens on HTTP :{$PORT}.',
|
|
131
|
-
'# Containers share one task/pod\'s localhost → upstreams are 127.0.0.1:<port> (not docker-DNS names).',
|
|
132
|
-
'{',
|
|
133
|
-
' auto_https off',
|
|
134
|
-
'}',
|
|
135
|
-
'',
|
|
136
|
-
':{$PORT} {',
|
|
137
|
-
...renderIdentityLayer({
|
|
138
|
-
mode: 'self-issued',
|
|
139
|
-
oauth2ProxyAddr: 'localhost:4180',
|
|
140
|
-
authBrokerAddr: 'localhost:9780',
|
|
141
|
-
healthProxy: [` reverse_proxy localhost:${exports.EDGE_AGENT_PORT}`],
|
|
142
|
-
agentProxy: [` reverse_proxy localhost:${exports.EDGE_AGENT_PORT}`],
|
|
143
|
-
}),
|
|
144
|
-
'}',
|
|
145
|
-
'',
|
|
146
|
-
].join('\n');
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* A′ — federated sidecar-platform edge. No oauth2-proxy: Google login happens once at the
|
|
150
|
-
* central IdP (`idpUrl`); this agent only verifies the shared AgentHippo JWT (Bearer for IDE,
|
|
151
|
-
* cookie for browser). On a browser 401, redirect to the IdP's `/oauth/browser-login` to stamp
|
|
152
|
-
* the shared cookie, then return.
|
|
153
|
-
*/
|
|
154
|
-
function renderSidecarFedCaddyfile(idpUrl) {
|
|
155
|
-
const idp = (idpUrl || '').trim().replace(/\/+$/, '');
|
|
156
|
-
return [
|
|
157
|
-
'# Sidecar-platform federated edge (A′). TLS terminates in front; Caddy listens on HTTP :{$PORT}.',
|
|
158
|
-
`# No oauth2-proxy — Google login happens once at the central IdP (${idp || '<IDP_URL>'});`,
|
|
159
|
-
'# this agent only verifies the shared AgentHippo JWT (Bearer for IDE, cookie for browser).',
|
|
160
|
-
'{',
|
|
161
|
-
' auto_https off',
|
|
162
|
-
'}',
|
|
163
|
-
'',
|
|
164
|
-
':{$PORT} {',
|
|
165
|
-
...renderIdentityLayer({
|
|
166
|
-
mode: 'federated',
|
|
167
|
-
authBrokerAddr: 'localhost:9780',
|
|
168
|
-
idpUrl: idp,
|
|
169
|
-
healthProxy: [` reverse_proxy localhost:${exports.EDGE_AGENT_PORT}`],
|
|
170
|
-
agentProxy: [` reverse_proxy localhost:${exports.EDGE_AGENT_PORT}`],
|
|
171
|
-
}),
|
|
172
|
-
'}',
|
|
173
|
-
'',
|
|
174
|
-
].join('\n');
|
|
175
|
-
}
|