@agenthippo-ai/agenthippo 1.110.11 → 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 -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 +617 -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 +1 -1
- 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,224 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* "Junk is dropped rather than trusted" — restored under the sandbox vocabulary.
|
|
4
|
-
*
|
|
5
|
-
* `normalizeCaps` was the ONLY runtime validation a lease ever received, and it was deleted along
|
|
6
|
-
* with the cell→sandbox back-compat it happened to also carry. What replaced it was
|
|
7
|
-
* `cached = (await res.json()) as Lease` — a compile-time cast that checks nothing. These pin the
|
|
8
|
-
* properties that were lost, plus the one that was always wrong: an unrecognised breach action
|
|
9
|
-
* must fail closed to the STRICTER action, never silently to the weaker one.
|
|
10
|
-
*--------------------------------------------------------------------------------------------*/
|
|
11
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
-
if (k2 === undefined) k2 = k;
|
|
13
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(o, k2, desc);
|
|
18
|
-
}) : (function(o, m, k, k2) {
|
|
19
|
-
if (k2 === undefined) k2 = k;
|
|
20
|
-
o[k2] = m[k];
|
|
21
|
-
}));
|
|
22
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
-
var ownKeys = function(o) {
|
|
29
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
-
var ar = [];
|
|
31
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
-
return ar;
|
|
33
|
-
};
|
|
34
|
-
return ownKeys(o);
|
|
35
|
-
};
|
|
36
|
-
return function (mod) {
|
|
37
|
-
if (mod && mod.__esModule) return mod;
|
|
38
|
-
var result = {};
|
|
39
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
-
__setModuleDefault(result, mod);
|
|
41
|
-
return result;
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
require("mocha");
|
|
46
|
-
const assert = __importStar(require("assert"));
|
|
47
|
-
const caps_1 = require("../pack/caps");
|
|
48
|
-
const caps_2 = require("../pack/caps");
|
|
49
|
-
const lease_schema_1 = require("../pack/lease-schema");
|
|
50
|
-
const lease_1 = require("../pack/lease");
|
|
51
|
-
const base = { pack: 'analyst', enabled: true, expiresAt: 1_800_003_600 };
|
|
52
|
-
suite('lease validation — structural junk is refused, not trusted', () => {
|
|
53
|
-
const rejected = [
|
|
54
|
-
['a string cap', { ...base, caps: { maxTurnsPerSession: 'lots' } }],
|
|
55
|
-
['a negative cap', { ...base, caps: { maxSessionSeconds: -1 } }],
|
|
56
|
-
['a zero cap', { ...base, caps: { maxConcurrentSandboxes: 0 } }],
|
|
57
|
-
['a fractional cap', { ...base, caps: { maxTurnsPerSession: 1.5 } }],
|
|
58
|
-
['an infinite cap', { ...base, caps: { maxTurnsPerSession: Number.POSITIVE_INFINITY } }],
|
|
59
|
-
['a string enabled', { ...base, enabled: 'false' }],
|
|
60
|
-
['a missing pack', { enabled: true, expiresAt: 1 }],
|
|
61
|
-
['a string expiresAt', { ...base, expiresAt: '1800003600' }],
|
|
62
|
-
['a non-object caps', { ...base, caps: 'none' }],
|
|
63
|
-
['a non-array deny', { ...base, deny: { scope: 'pack' } }],
|
|
64
|
-
['an unknown deny scope', { ...base, deny: [{ scope: 'tenant', match: 'x', mode: 'kill' }] }],
|
|
65
|
-
['a deny rule with no match', { ...base, deny: [{ scope: 'pack', match: '', mode: 'kill' }] }],
|
|
66
|
-
['a non-boolean requireSignedPack', { ...base, requireSignedPack: 'yes' }],
|
|
67
|
-
['a non-boolean allowServiceTurns', { ...base, allowServiceTurns: 'true' }],
|
|
68
|
-
['not an object at all', 'nope'],
|
|
69
|
-
];
|
|
70
|
-
for (const [name, doc] of rejected) {
|
|
71
|
-
test(`${name} rejects the whole document`, () => {
|
|
72
|
-
const res = (0, lease_schema_1.parseLease)(doc);
|
|
73
|
-
assert.strictEqual(res.ok, false, `expected ${name} to be refused`);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
test('NaN never reaches the meter, where every comparison against it is false', () => {
|
|
77
|
-
// The failure this prevents: `usage.turns >= NaN` is false for every value, so the cap is
|
|
78
|
-
// reported in the console and enforced nowhere.
|
|
79
|
-
assert.strictEqual((0, lease_schema_1.parseLease)({ ...base, caps: { maxTurnsPerSession: NaN } }).ok, false);
|
|
80
|
-
const meter = new caps_2.CapMeter({ maxTurnsPerSession: NaN });
|
|
81
|
-
meter.record('s1');
|
|
82
|
-
meter.record('s1');
|
|
83
|
-
meter.record('s1');
|
|
84
|
-
assert.strictEqual(meter.check('s1', 0).allowed, true, 'demonstrating why the validator has to catch it');
|
|
85
|
-
});
|
|
86
|
-
test('a well-formed lease survives intact', () => {
|
|
87
|
-
const res = (0, lease_schema_1.parseLease)({
|
|
88
|
-
...base,
|
|
89
|
-
version: '1.4.1',
|
|
90
|
-
caps: { maxTurnsPerSession: 10, onBreach: 'destroy-sandbox' },
|
|
91
|
-
deny: [{ scope: 'session', match: 's1', mode: 'kill', reason: 'runaway', until: 1_800_004_000 }],
|
|
92
|
-
requireSignedPack: true,
|
|
93
|
-
});
|
|
94
|
-
assert.ok(res.ok);
|
|
95
|
-
assert.strictEqual(res.lease.caps?.maxTurnsPerSession, 10);
|
|
96
|
-
assert.strictEqual(res.lease.deny?.[0].mode, 'kill');
|
|
97
|
-
assert.strictEqual(res.lease.requireSignedPack, true);
|
|
98
|
-
});
|
|
99
|
-
test('an unknown cap field is tolerated but never silent', () => {
|
|
100
|
-
const res = (0, lease_schema_1.parseCapPolicy)({ maxSomethingNew: 5 });
|
|
101
|
-
assert.ok(res.ok);
|
|
102
|
-
assert.ok(res.warnings.some((w) => /NOT being enforced/.test(w)));
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
suite('unrecognised enums fail CLOSED to the stricter value', () => {
|
|
106
|
-
/**
|
|
107
|
-
* The concrete bug: an unrecognised `onBreach` fell through `mergeCaps`'s
|
|
108
|
-
* `=== 'destroy-sandbox'` test, so `governor.enforce` defaulted to `revoke-inference`. A typo
|
|
109
|
-
* in the control plane SOFTENED the breach action from "destroy the session" to "take away its
|
|
110
|
-
* model route", while the console displayed the stricter value the operator had entered.
|
|
111
|
-
*/
|
|
112
|
-
test('an unknown lease onBreach clamps UP and warns', () => {
|
|
113
|
-
const res = (0, lease_schema_1.parseCapPolicy)({ onBreach: 'destroy_cell_typo' });
|
|
114
|
-
assert.ok(res.ok);
|
|
115
|
-
assert.strictEqual(res.caps.onBreach, lease_schema_1.STRICTEST_ON_BREACH);
|
|
116
|
-
assert.strictEqual(res.caps.onBreach, 'destroy-sandbox');
|
|
117
|
-
assert.ok(res.warnings.some((w) => /Failing CLOSED/.test(w)));
|
|
118
|
-
});
|
|
119
|
-
test('and the clamped value survives mergeCaps rather than being softened by it', () => {
|
|
120
|
-
const parsed = (0, lease_schema_1.parseCapPolicy)({ onBreach: 'nonsense' });
|
|
121
|
-
assert.ok(parsed.ok);
|
|
122
|
-
assert.strictEqual((0, caps_1.mergeCaps)(parsed.caps, { onBreach: 'revoke-inference' }).onBreach, 'destroy-sandbox');
|
|
123
|
-
});
|
|
124
|
-
test('an unknown deny mode clamps to kill rather than being dropped', () => {
|
|
125
|
-
const res = (0, lease_schema_1.parseLease)({ ...base, deny: [{ scope: 'pack', match: 'analyst', mode: 'pause' }] });
|
|
126
|
-
assert.ok(res.ok);
|
|
127
|
-
assert.strictEqual(res.lease.deny?.[0].mode, 'kill');
|
|
128
|
-
assert.ok(res.warnings.some((w) => /Failing CLOSED/.test(w)));
|
|
129
|
-
});
|
|
130
|
-
test('env: an unknown AGENTHIPPO_CAP_ON_BREACH fails closed instead of becoming undefined', () => {
|
|
131
|
-
const warnings = [];
|
|
132
|
-
const caps = (0, caps_1.capsFromEnv)({ AGENTHIPPO_CAP_ON_BREACH: 'destroy-everything' }, (m) => warnings.push(m));
|
|
133
|
-
assert.strictEqual(caps.onBreach, 'destroy-sandbox');
|
|
134
|
-
assert.ok(warnings.some((w) => /FAILING CLOSED/.test(w)));
|
|
135
|
-
});
|
|
136
|
-
test('CLI: the same resolver, so a flag and an env var cannot disagree', () => {
|
|
137
|
-
const r = (0, caps_1.resolveOnBreach)('destroy-everything', '--cap-on-breach');
|
|
138
|
-
assert.strictEqual(r.action, 'destroy-sandbox');
|
|
139
|
-
assert.ok(r.warnings.some((w) => /FAILING CLOSED/.test(w)));
|
|
140
|
-
assert.strictEqual((0, caps_1.resolveOnBreach)(undefined, '--cap-on-breach').action, undefined, 'unset stays unset');
|
|
141
|
-
assert.strictEqual((0, caps_1.resolveOnBreach)('revoke-inference', '--cap-on-breach').action, 'revoke-inference');
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
suite('deprecated cell vocabulary is aliased, loudly', () => {
|
|
145
|
-
test('destroy-cell maps to destroy-sandbox rather than softening enforcement', () => {
|
|
146
|
-
assert.strictEqual(lease_schema_1.ON_BREACH_ALIASES['destroy-cell'], 'destroy-sandbox');
|
|
147
|
-
const r = (0, caps_1.resolveOnBreach)('destroy-cell', 'AGENTHIPPO_CAP_ON_BREACH');
|
|
148
|
-
assert.strictEqual(r.action, 'destroy-sandbox');
|
|
149
|
-
assert.ok(r.warnings.some((w) => /DEPRECATED/.test(w)));
|
|
150
|
-
});
|
|
151
|
-
test('a lease using the old cap spelling is still enforced', () => {
|
|
152
|
-
assert.strictEqual(lease_schema_1.LEASE_CAP_ALIASES.maxConcurrentCells, 'maxConcurrentSandboxes');
|
|
153
|
-
const res = (0, lease_schema_1.parseCapPolicy)({ maxConcurrentCells: 4 });
|
|
154
|
-
assert.ok(res.ok);
|
|
155
|
-
assert.strictEqual(res.caps.maxConcurrentSandboxes, 4);
|
|
156
|
-
});
|
|
157
|
-
test('AGENTHIPPO_MAX_CONCURRENT_CELLS is honoured with a deprecation notice', () => {
|
|
158
|
-
const warnings = [];
|
|
159
|
-
const caps = (0, caps_1.capsFromEnv)({ AGENTHIPPO_MAX_CONCURRENT_CELLS: '3' }, (m) => warnings.push(m));
|
|
160
|
-
assert.strictEqual(caps.maxConcurrentSandboxes, 3);
|
|
161
|
-
assert.ok(warnings.some((w) => /DEPRECATED/.test(w)));
|
|
162
|
-
assert.strictEqual(caps_1.CAP_ENV_ALIASES.AGENTHIPPO_MAX_CONCURRENT_CELLS, 'AGENTHIPPO_MAX_CONCURRENT_SANDBOXES');
|
|
163
|
-
});
|
|
164
|
-
test('the current spelling wins when both are present', () => {
|
|
165
|
-
const caps = (0, caps_1.capsFromEnv)({
|
|
166
|
-
AGENTHIPPO_MAX_CONCURRENT_SANDBOXES: '7',
|
|
167
|
-
AGENTHIPPO_MAX_CONCURRENT_CELLS: '3',
|
|
168
|
-
}, () => undefined);
|
|
169
|
-
assert.strictEqual(caps.maxConcurrentSandboxes, 7);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
/**
|
|
173
|
-
* PLAN/agent-identity.md §10.3 — the lease flag that governs unattended runs.
|
|
174
|
-
*
|
|
175
|
-
* Its polarity is the INVERSE of every other flag on the lease. `requireSignedPack` is
|
|
176
|
-
* tighten-only, so absent safely means "nobody asked for the restriction". `allowServiceTurns`
|
|
177
|
-
* GRANTS a standing unattended identity, so absent has to mean deny — otherwise a control plane
|
|
178
|
-
* that has not been taught the field silently authorises unsupervised runs across a fleet.
|
|
179
|
-
*/
|
|
180
|
-
suite('lease: allowServiceTurns (PR-2 — a grant, so absent means deny)', () => {
|
|
181
|
-
test('parseLease carries a real boolean through', () => {
|
|
182
|
-
const res = (0, lease_schema_1.parseLease)({ ...base, allowServiceTurns: true });
|
|
183
|
-
assert.ok(res.ok);
|
|
184
|
-
assert.strictEqual(res.lease.allowServiceTurns, true);
|
|
185
|
-
});
|
|
186
|
-
test('the string "false" is refused, not coerced — it would flip deny into allow', () => {
|
|
187
|
-
// `Boolean("false") === true`. This is the single most dangerous coercion on the document,
|
|
188
|
-
// which is why the flag joined the existing strict-boolean loop rather than getting its own.
|
|
189
|
-
assert.strictEqual((0, lease_schema_1.parseLease)({ ...base, allowServiceTurns: 'false' }).ok, false);
|
|
190
|
-
});
|
|
191
|
-
test('an unknown field is ignored, so an OLDER serve simply never runs service turns', () => {
|
|
192
|
-
// Forward compatibility with no lockstep hazard: field-by-field parsing means a serve that
|
|
193
|
-
// predates the flag reads a lease containing it without erroring, and — because it never
|
|
194
|
-
// consults the flag — denies. Fail-safe in the skew direction that matters.
|
|
195
|
-
const res = (0, lease_schema_1.parseLease)({ ...base, someFutureField: { nested: true } });
|
|
196
|
-
assert.ok(res.ok);
|
|
197
|
-
assert.strictEqual(res.lease.someFutureField, undefined);
|
|
198
|
-
});
|
|
199
|
-
test('managed + lease says true ⇒ allowed', () => {
|
|
200
|
-
assert.deepStrictEqual((0, lease_1.resolveAllowServiceTurns)({ lease: true, managed: true }), { allowed: true, gate: 'lease_allows' });
|
|
201
|
-
});
|
|
202
|
-
test('managed + field absent ⇒ DENIED, and the reason distinguishes it from an explicit false', () => {
|
|
203
|
-
const absent = (0, lease_1.resolveAllowServiceTurns)({ lease: undefined, managed: true });
|
|
204
|
-
assert.strictEqual(absent.allowed, false);
|
|
205
|
-
assert.strictEqual(absent.gate, 'lease_absent_field');
|
|
206
|
-
const explicit = (0, lease_1.resolveAllowServiceTurns)({ lease: false, managed: true });
|
|
207
|
-
assert.strictEqual(explicit.allowed, false);
|
|
208
|
-
assert.strictEqual(explicit.gate, 'lease_denies');
|
|
209
|
-
// Same outcome, different explanation: an operator reading the audit row must be able to
|
|
210
|
-
// tell "nobody enabled it" from "somebody disabled it".
|
|
211
|
-
assert.notStrictEqual((0, lease_1.describeServiceTurnGate)(absent.gate), (0, lease_1.describeServiceTurnGate)(explicit.gate));
|
|
212
|
-
});
|
|
213
|
-
test('unmanaged (no control plane) ⇒ permitted, local env is the only gate', () => {
|
|
214
|
-
const r = (0, lease_1.resolveAllowServiceTurns)({ lease: undefined, managed: false });
|
|
215
|
-
assert.strictEqual(r.allowed, true);
|
|
216
|
-
assert.strictEqual(r.gate, 'unmanaged_no_lease');
|
|
217
|
-
assert.match((0, lease_1.describeServiceTurnGate)(r.gate), /AGENTHIPPO_SERVICE_USER/);
|
|
218
|
-
});
|
|
219
|
-
test('every gate has an operator-facing explanation naming what to change', () => {
|
|
220
|
-
for (const gate of ['lease_allows', 'unmanaged_no_lease', 'lease_absent_field', 'lease_denies']) {
|
|
221
|
-
assert.ok((0, lease_1.describeServiceTurnGate)(gate).length > 20, `${gate} needs a real explanation`);
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
});
|
package/out/test/lease.test.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Lease admission — kill switch + rollback (PLAN/serve-v4-clean.md §5).
|
|
4
|
-
*
|
|
5
|
-
* One mechanism, two jobs. The tests pin the operational contract, especially the
|
|
6
|
-
* fail-open-on-transport / fail-closed-on-content asymmetry, which is exactly the kind of
|
|
7
|
-
* property that silently inverts during a refactor.
|
|
8
|
-
*--------------------------------------------------------------------------------------------*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
-
require("mocha");
|
|
44
|
-
const assert = __importStar(require("assert"));
|
|
45
|
-
const lease_1 = require("../pack/lease");
|
|
46
|
-
const NOW = 1_800_000_000;
|
|
47
|
-
const valid = { pack: 'analyst', expiresAt: NOW + 3600, enabled: true };
|
|
48
|
-
suite('lease admission — kill switch', () => {
|
|
49
|
-
test('an enabled, unexpired lease admits', () => {
|
|
50
|
-
assert.doesNotThrow(() => (0, lease_1.assertAdmitted)(valid, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }));
|
|
51
|
-
});
|
|
52
|
-
test('no lease configured admits — self-hosted dev and free tier keep working', () => {
|
|
53
|
-
assert.doesNotThrow(() => (0, lease_1.assertAdmitted)(undefined, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }));
|
|
54
|
-
});
|
|
55
|
-
test('the kill switch refuses new sandboxes immediately, with the operator reason', () => {
|
|
56
|
-
assert.throws(() => (0, lease_1.assertAdmitted)({ ...valid, enabled: false, reason: 'incident 4412' }, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }), (e) => e instanceof lease_1.LeaseDeniedError && /kill switch active/.test(e.message) && /incident 4412/.test(e.message));
|
|
57
|
-
});
|
|
58
|
-
test('an expired lease is refused — fail closed on content', () => {
|
|
59
|
-
assert.throws(() => (0, lease_1.assertAdmitted)({ ...valid, expiresAt: NOW - 1 }, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }), /expired/);
|
|
60
|
-
});
|
|
61
|
-
test("a lease for another pack does not admit this one", () => {
|
|
62
|
-
assert.throws(() => (0, lease_1.assertAdmitted)({ ...valid, pack: 'other' }, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }), /lease is for pack other/);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
suite('lease admission — rollback', () => {
|
|
66
|
-
test('a pinned version refuses any other version (rollback in force)', () => {
|
|
67
|
-
const pinned = { ...valid, version: '1.4.1' };
|
|
68
|
-
assert.doesNotThrow(() => (0, lease_1.assertAdmitted)(pinned, { pack: 'analyst', version: '1.4.1', nowSeconds: NOW }));
|
|
69
|
-
assert.throws(() => (0, lease_1.assertAdmitted)(pinned, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW }), /pinned to 1\.4\.1.*refusing to start 1\.4\.2/);
|
|
70
|
-
});
|
|
71
|
-
test('an image that does not match the leased digest is refused (supply-chain pin)', () => {
|
|
72
|
-
const pinned = { ...valid, imageDigest: 'sha256:' + 'a'.repeat(64) };
|
|
73
|
-
assert.doesNotThrow(() => (0, lease_1.assertAdmitted)(pinned, {
|
|
74
|
-
pack: 'analyst', version: '1.4.2', image: `ghcr.io/x/analyst@sha256:${'a'.repeat(64)}`, nowSeconds: NOW,
|
|
75
|
-
}));
|
|
76
|
-
assert.throws(() => (0, lease_1.assertAdmitted)(pinned, {
|
|
77
|
-
pack: 'analyst', version: '1.4.2', image: `ghcr.io/x/analyst@sha256:${'b'.repeat(64)}`, nowSeconds: NOW,
|
|
78
|
-
}), /does not match the leased digest/);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
suite('lease source — fail-open transport, fail-closed content', () => {
|
|
82
|
-
test('a network failure keeps serving on the cached lease', async () => {
|
|
83
|
-
let calls = 0;
|
|
84
|
-
const src = (0, lease_1.createLeaseSource)({
|
|
85
|
-
url: 'http://control.invalid/lease',
|
|
86
|
-
cacheSeconds: 0,
|
|
87
|
-
fetchImpl: (async () => {
|
|
88
|
-
calls++;
|
|
89
|
-
if (calls === 1) {
|
|
90
|
-
return { ok: true, json: async () => valid };
|
|
91
|
-
}
|
|
92
|
-
throw new Error('control plane unreachable');
|
|
93
|
-
}),
|
|
94
|
-
});
|
|
95
|
-
assert.deepStrictEqual(await src.get(NOW), valid, 'first fetch populates the cache');
|
|
96
|
-
const during = await src.get(NOW + 1);
|
|
97
|
-
assert.deepStrictEqual(during, valid, 'an outage must not take a customer fleet down');
|
|
98
|
-
});
|
|
99
|
-
test('an outage cannot extend an entitlement — the cached lease still expires', async () => {
|
|
100
|
-
const shortLease = { pack: 'analyst', expiresAt: NOW + 10, enabled: true };
|
|
101
|
-
const src = (0, lease_1.createLeaseSource)({
|
|
102
|
-
url: 'http://control.invalid/lease',
|
|
103
|
-
cacheSeconds: 0,
|
|
104
|
-
fetchImpl: (async () => ({ ok: true, json: async () => shortLease })),
|
|
105
|
-
});
|
|
106
|
-
const lease = await src.get(NOW);
|
|
107
|
-
// Later, past its own expiry, the cached lease must still be refused by admission.
|
|
108
|
-
assert.throws(() => (0, lease_1.assertAdmitted)(lease, { pack: 'analyst', version: '1.4.2', nowSeconds: NOW + 11 }), /expired/);
|
|
109
|
-
});
|
|
110
|
-
test('a static lease works with no control plane at all (air-gapped)', async () => {
|
|
111
|
-
const src = (0, lease_1.createLeaseSource)({ staticLease: valid });
|
|
112
|
-
assert.deepStrictEqual(await src.get(NOW), valid);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
@@ -1,91 +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
|
-
const assert = __importStar(require("assert"));
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const os = __importStar(require("os"));
|
|
42
|
-
const path = __importStar(require("path"));
|
|
43
|
-
const fleetRowDefaults_1 = require("../analytics/dashboard/fleetRowDefaults");
|
|
44
|
-
const localFleetAdapter_1 = require("../analytics/dashboard/localFleetAdapter");
|
|
45
|
-
suite('localFleetAdapter', () => {
|
|
46
|
-
test('mergeSessionJsonlIntoFleetRows adds completed one-shot session to Done', () => {
|
|
47
|
-
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'fleet-jsonl-merge-'));
|
|
48
|
-
const sessionId = '2e156640-96ed-4106-8e75-44018d221758';
|
|
49
|
-
const scheduleId = 'sched-then-why';
|
|
50
|
-
const started = Date.now() - 2 * 60 * 60_000;
|
|
51
|
-
const ended = started + 60_000;
|
|
52
|
-
fs.writeFileSync(path.join(dir, `${sessionId}.jsonl`), [
|
|
53
|
-
JSON.stringify({ session_id: sessionId, request_id: 'req-1', timestamp: started, event_type: 'turn_start', payload: {} }),
|
|
54
|
-
JSON.stringify({ session_id: sessionId, request_id: 'req-1', timestamp: ended, event_type: 'turn_end', payload: { success: true } }),
|
|
55
|
-
].join('\n') + '\n', 'utf8');
|
|
56
|
-
fs.utimesSync(path.join(dir, `${sessionId}.jsonl`), ended / 1000, ended / 1000);
|
|
57
|
-
const sessionsById = new Map();
|
|
58
|
-
sessionsById.set(`schedule:${scheduleId}`, (0, fleetRowDefaults_1.buildFleetSessionRow)('local', {
|
|
59
|
-
sessionId: `schedule:${scheduleId}`,
|
|
60
|
-
status: 'scheduled',
|
|
61
|
-
startedAt: new Date(started - 60_000).toISOString(),
|
|
62
|
-
endedAt: '',
|
|
63
|
-
taskTitle: 'then why',
|
|
64
|
-
model: 'agentide-cursor::auto',
|
|
65
|
-
engine: 'cursor',
|
|
66
|
-
channelType: 'none',
|
|
67
|
-
channelTarget: sessionId,
|
|
68
|
-
turns: 0,
|
|
69
|
-
totalTokens: 0,
|
|
70
|
-
disconnectCapable: false,
|
|
71
|
-
}));
|
|
72
|
-
const scheduleByChatSessionId = new Map([
|
|
73
|
-
[sessionId, {
|
|
74
|
-
id: scheduleId,
|
|
75
|
-
sessionId,
|
|
76
|
-
sessionResource: `vscode-chat-session://local/${sessionId}`,
|
|
77
|
-
messageText: 'then why',
|
|
78
|
-
runAt: started - 60_000,
|
|
79
|
-
model: 'agentide-cursor::auto',
|
|
80
|
-
engine: 'cursor',
|
|
81
|
-
}],
|
|
82
|
-
]);
|
|
83
|
-
(0, localFleetAdapter_1.mergeSessionJsonlIntoFleetRows)(sessionsById, scheduleByChatSessionId, { scope: 'global' }, dir);
|
|
84
|
-
assert.strictEqual(sessionsById.has(`schedule:${scheduleId}`), false, 'schedule card should be replaced');
|
|
85
|
-
const row = sessionsById.get(sessionId);
|
|
86
|
-
assert.ok(row, 'expected chat session row');
|
|
87
|
-
assert.strictEqual(row.status, 'done');
|
|
88
|
-
assert.strictEqual(row.turns, 1);
|
|
89
|
-
assert.strictEqual(row.taskTitle, 'then why');
|
|
90
|
-
});
|
|
91
|
-
});
|
package/out/test/mcp-obo.test.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const assert = __importStar(require("assert"));
|
|
37
|
-
const credential_context_1 = require("../cli/credential-context");
|
|
38
|
-
const mcp_1 = require("../mcp");
|
|
39
|
-
/**
|
|
40
|
-
* The per-turn OBO credential must never reach MCP child env implicitly: the supported
|
|
41
|
-
* transport is the loopback data-plane gateway + turn nonce (secure-obo-design §2/§3).
|
|
42
|
-
* Inline resolution exists only behind the explicit local-dev opt-in.
|
|
43
|
-
*/
|
|
44
|
-
suite('mcp: OBO token in MCP env (secure-obo-design §3.4 — inline is opt-in only)', () => {
|
|
45
|
-
const ENV_KEYS = ['DATABRICKS_TOKEN', 'AGENTHIPPO_DATA_TOKEN_ENV_VARS', mcp_1.ALLOW_INLINE_DATA_TOKEN_ENV];
|
|
46
|
-
const saved = {};
|
|
47
|
-
setup(() => {
|
|
48
|
-
for (const k of ENV_KEYS) {
|
|
49
|
-
saved[k] = process.env[k];
|
|
50
|
-
delete process.env[k];
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
teardown(() => {
|
|
54
|
-
for (const k of ENV_KEYS) {
|
|
55
|
-
if (saved[k] === undefined) {
|
|
56
|
-
delete process.env[k];
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
process.env[k] = saved[k];
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
test('static PAT resolves from plain env when no credential scope', () => {
|
|
64
|
-
process.env.DATABRICKS_TOKEN = 'pat-static';
|
|
65
|
-
assert.strictEqual((0, mcp_1.resolveMcpEnvVar)('DATABRICKS_TOKEN'), 'pat-static');
|
|
66
|
-
});
|
|
67
|
-
test('WITHOUT the opt-in, a live OBO token never bakes into MCP child env', async () => {
|
|
68
|
-
process.env.AGENTHIPPO_DATA_TOKEN_ENV_VARS = 'DATABRICKS_TOKEN';
|
|
69
|
-
await (0, credential_context_1.runWithCredential)({ userId: 'u@x.com', dataToken: 'obo-live' }, async () => {
|
|
70
|
-
// alias reference falls back to ambient env (unset here → empty), never the credential
|
|
71
|
-
assert.strictEqual((0, mcp_1.resolveMcpEnvVar)('DATABRICKS_TOKEN'), '');
|
|
72
|
-
// explicit placeholder resolves to nothing → the connector fails closed
|
|
73
|
-
assert.strictEqual((0, mcp_1.resolveMcpEnvVar)('dataToken'), '');
|
|
74
|
-
const resolved = (0, mcp_1.resolveMcpServerEnv)({
|
|
75
|
-
DATABRICKS_HOST: 'dbc.example.com',
|
|
76
|
-
DATABRICKS_TOKEN: '${credential:dataToken}',
|
|
77
|
-
});
|
|
78
|
-
assert.ok(resolved);
|
|
79
|
-
assert.strictEqual(resolved.DATABRICKS_HOST, 'dbc.example.com');
|
|
80
|
-
assert.strictEqual(resolved.DATABRICKS_TOKEN, undefined, 'credential must not appear in spawn env without the opt-in');
|
|
81
|
-
assert.ok(!JSON.stringify(resolved).includes('obo-live'), 'the raw token must not leak anywhere in the resolved env');
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
test('WITH the explicit local-dev opt-in, inline resolution works (alias + placeholder)', async () => {
|
|
85
|
-
process.env[mcp_1.ALLOW_INLINE_DATA_TOKEN_ENV] = '1';
|
|
86
|
-
process.env.AGENTHIPPO_DATA_TOKEN_ENV_VARS = 'DATABRICKS_TOKEN';
|
|
87
|
-
process.env.DATABRICKS_TOKEN = 'pat-static';
|
|
88
|
-
await (0, credential_context_1.runWithCredential)({ userId: 'u@x.com', dataToken: 'obo-live' }, async () => {
|
|
89
|
-
assert.strictEqual((0, mcp_1.resolveMcpEnvVar)('DATABRICKS_TOKEN'), 'obo-live', 'OBO token overrides static PAT when opted in');
|
|
90
|
-
const resolved = (0, mcp_1.resolveMcpServerEnv)({ DATABRICKS_TOKEN: '${credential:dataToken}' });
|
|
91
|
-
assert.strictEqual(resolved.DATABRICKS_TOKEN, 'obo-live');
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
test('alias list is empty by default — DATABRICKS_TOKEN is no longer an implicit credential alias', async () => {
|
|
95
|
-
process.env[mcp_1.ALLOW_INLINE_DATA_TOKEN_ENV] = '1';
|
|
96
|
-
process.env.DATABRICKS_TOKEN = 'pat-static';
|
|
97
|
-
await (0, credential_context_1.runWithCredential)({ userId: 'u@x.com', dataToken: 'obo-live' }, async () => {
|
|
98
|
-
// No AGENTHIPPO_DATA_TOKEN_ENV_VARS declared → the plain env var wins even opted-in.
|
|
99
|
-
assert.strictEqual((0, mcp_1.resolveMcpEnvVar)('DATABRICKS_TOKEN'), 'pat-static');
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
test('no credential scope + placeholder → falls back to ambient env for local dev', () => {
|
|
103
|
-
process.env.DATABRICKS_TOKEN = 'pat-static';
|
|
104
|
-
const resolved = (0, mcp_1.resolveMcpServerEnv)({ DATABRICKS_TOKEN: '${credential:dataToken}' });
|
|
105
|
-
assert.strictEqual(resolved.DATABRICKS_TOKEN, 'pat-static');
|
|
106
|
-
});
|
|
107
|
-
});
|