@agenthippo-ai/agenthippo 1.110.9 → 1.110.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/agentpack/types.js +2 -5
- package/out/analytics/dashboard/artifactManager.js +2 -439
- package/out/analytics/dashboard/fleetDisplayUtils.js +2 -162
- package/out/analytics/dashboard/fleetOrchestrator.js +3 -142
- package/out/analytics/dashboard/fleetRegistry.js +2 -79
- package/out/analytics/dashboard/fleetRowDefaults.js +2 -87
- package/out/analytics/dashboard/fleetScriptAdapter.js +2 -146
- package/out/analytics/dashboard/fleetTypes.js +2 -29
- package/out/analytics/dashboard/index.js +2 -17
- package/out/analytics/dashboard/indexingService.js +2 -422
- package/out/analytics/dashboard/localFleetAdapter.js +2 -222
- package/out/analytics/dashboard/performanceMonitor.js +5 -76
- package/out/analytics/dashboard/processManager.js +2 -209
- package/out/analytics/dashboard/provider.js +38 -3817
- package/out/analytics/dashboard/queryRunner.js +62 -750
- package/out/analytics/dashboard/scheduledFleetStorage.js +2 -241
- package/out/analytics/dashboard/sessionJsonlFleet.js +3 -204
- package/out/analytics/dashboard/teamViewDiscovery.js +2 -106
- package/out/analytics/dashboard/webview/panel.js +34 -2318
- package/out/analytics/dashboard/webview/runtime-bridge.js +2 -82
- package/out/analytics/lifecycle.js +2 -43
- package/out/analytics/service.js +8 -1277
- package/out/auth/authBaseUrl.js +2 -59
- package/out/auth/bootstrapApply.js +2 -71
- package/out/auth/brokerClient.js +2 -160
- package/out/auth/callbackUri.js +2 -59
- package/out/auth/githubStoreGate.js +2 -70
- package/out/auth/loopbackAuthServer.js +4 -159
- package/out/auth/onboardingPrompt.js +2 -112
- package/out/auth/pkce.js +2 -9
- package/out/auth/provider.js +2 -226
- package/out/auth/sessionStore.js +2 -156
- package/out/auth/signInFlow.js +2 -183
- package/out/cli/index.js +619 -551
- package/out/cli/run-custom-engine-runner.js +3 -318
- package/out/cli/vscode-shim.js +2 -86
- package/out/engines/factory.js +2 -45
- package/out/engines/types.js +2 -17
- package/out/examples/run-headless-repl.js +6 -286
- package/out/examples/run-headless.js +2 -187
- package/out/extension.js +32 -4473
- package/out/gateway/gatewayRouteIndex.js +6 -371
- package/out/gateway/gatewaySessionStore.js +3 -243
- package/out/gateway/index.js +2 -31
- package/out/gateway/resetMappings.js +2 -52
- package/out/gateway/service.js +5 -1249
- package/out/mcp/publish.js +2 -143
- package/out/remote/handleRemoteChat.js +2 -169
- package/out/remote/remotePackStatusBar.js +3 -103
- package/out/remote/remoteTrust.js +6 -277
- package/out/remote/serveClient.js +4 -277
- package/out/remoteSkills.js +3 -191
- package/out/runtime/index.js +2 -32
- package/out/runtime/vscode/index.js +2 -20
- package/out/runtime/vscode/vscode-config-provider.js +2 -77
- package/out/runtime/vscode/vscode-edit-tracker.js +2 -122
- package/out/runtime/vscode/vscode-logger.js +2 -30
- package/out/runtime/vscode/vscode-permission-handler.js +2 -72
- package/out/scripts/agentide-litellm.sh +0 -1
- package/out/scripts/agentide_litellm_hooks_v1.py +170 -418
- package/out/scripts/analytics/agent-fleet-widget.js +18 -257
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +4 -4
- package/out/scripts/analytics/duckdbLocator.js +2 -28
- package/out/scripts/analytics/generate-default-charts.py +43 -323
- package/out/scripts/analytics/hotspot-analysis-widget.js +4 -430
- package/out/scripts/analytics/index-traces.py +78 -1036
- package/out/scripts/analytics/session-comparison-widget.js +26 -472
- package/out/scripts/analytics/session-timeline-widget.js +25 -846
- package/out/scripts/analytics/setup-analytics.ps1 +8 -1
- package/out/scripts/analytics/setup-analytics.sh +13 -2
- package/out/scripts/analytics/token-cost-flamegraph-widget.js +4 -461
- package/out/scripts/analytics/token-cost-trend-widget.js +4 -534
- package/out/scripts/analytics/workflows-collector.cjs +4 -314
- package/out/scripts/analytics/workflows-daemon.mjs +9 -185
- package/out/scripts/analytics/workflows-widget.cjs +15 -159
- package/out/scripts/analytics/wow-model-widget.js +10 -120
- package/out/scripts/vendor-tools.mjs +2 -233
- package/out/skills/publish.js +3 -178
- package/out/store/github/setup.js +7 -212
- package/out/store/oramaIndex.js +2 -884
- package/out/sync.js +26 -1829
- package/out/terminalLogger.js +5 -358
- package/out/utils/pathSafety.js +2 -60
- package/out/utils/pythonRunner.js +4 -258
- package/out/utils/toolPath.js +2 -83
- package/out/workspaceFolders.js +2 -59
- package/package.json +1 -1
- package/out/agentpack/github.js +0 -547
- package/out/agentpack/index.js +0 -67
- package/out/agentpack/install.js +0 -297
- package/out/agentpack/manager.js +0 -441
- package/out/agentpack/manifest.js +0 -135
- package/out/agentpack/paths.js +0 -498
- package/out/agentpack/publish.js +0 -248
- package/out/agentpack/stores.js +0 -554
- package/out/analytics/dashboard/fleetStatusUtils.js +0 -30
- package/out/analytics/dashboard/fleetTitleUtils.js +0 -68
- package/out/analytics/dashboard/refreshPolicy.js +0 -16
- package/out/analytics/dashboard/scheduledFleetFingerprint.js +0 -22
- package/out/analytics/dashboard/scheduledFleetUtils.js +0 -22
- package/out/analytics/dashboard/sessionEventFleetStats.js +0 -118
- package/out/analytics/dashboard/viewsConfigMerge.js +0 -221
- package/out/analytics/dashboard/webview/codicon.ttf +0 -0
- package/out/analytics/identity.js +0 -0
- package/out/analytics/sessionEvents.js +0 -323
- package/out/auth/callbackUriParse.js +0 -59
- package/out/auth/types.js +0 -12
- package/out/auth-broker/config.js +0 -112
- package/out/auth-broker/jwt.js +0 -105
- package/out/auth-broker/pkce.js +0 -59
- package/out/auth-broker/server.js +0 -677
- package/out/auth-broker/store.js +0 -275
- package/out/authority/warrant.js +0 -206
- package/out/base-prompts/mcp-servers/.mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +0 -142
- package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +0 -1192
- package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +0 -23
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +0 -12
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +0 -102
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +0 -137
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +0 -118
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +0 -209
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +0 -431
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +0 -270
- package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +0 -18
- package/out/base-prompts/rules/AGENTS.md +0 -204
- package/out/base-prompts/skills/agent-browser/SKILL.md +0 -102
- package/out/base-prompts/skills/agent-builder/SKILL.md +0 -73
- package/out/base-prompts/skills/agent-builder/references/agent-pack.md +0 -63
- package/out/base-prompts/skills/agent-builder/references/crewai.md +0 -66
- package/out/base-prompts/skills/agent-builder/references/langchain.md +0 -60
- package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +0 -73
- package/out/base-prompts/skills/agent-engine-creator/SKILL.md +0 -586
- package/out/base-prompts/skills/agent-engine-installer/SKILL.md +0 -106
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +0 -259
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +0 -189
- package/out/base-prompts/skills/agenthippo-cli/SKILL.md +0 -69
- package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +0 -63
- package/out/base-prompts/skills/agentpack-creator/SKILL.md +0 -375
- package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +0 -261
- package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +0 -195
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +0 -391
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +0 -294
- package/out/base-prompts/skills/agentpack-testbench/SKILL.md +0 -135
- package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +0 -202
- package/out/base-prompts/skills/algorithmic-art/SKILL.md +0 -405
- package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +0 -223
- package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +0 -599
- package/out/base-prompts/skills/debug-agent/SKILL.md +0 -83
- package/out/base-prompts/skills/desktop-automation/SKILL.md +0 -166
- package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +0 -441
- package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +0 -280
- package/out/base-prompts/skills/docx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/docx/SKILL.md +0 -197
- package/out/base-prompts/skills/docx/docx-js.md +0 -350
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/docx/ooxml.md +0 -610
- package/out/base-prompts/skills/docx/scripts/__init__.py +0 -1
- package/out/base-prompts/skills/docx/scripts/document.py +0 -1276
- package/out/base-prompts/skills/docx/scripts/templates/comments.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/people.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/utilities.py +0 -374
- package/out/base-prompts/skills/gateway-outbound/SKILL.md +0 -136
- package/out/base-prompts/skills/mcp-builder/LICENSE.txt +0 -202
- package/out/base-prompts/skills/mcp-builder/SKILL.md +0 -328
- package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +0 -602
- package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/out/base-prompts/skills/mcp-builder/scripts/connections.py +0 -151
- package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/out/base-prompts/skills/openclaw/SKILL.md +0 -406
- package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +0 -61
- package/out/base-prompts/skills/pdf/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pdf/SKILL.md +0 -294
- package/out/base-prompts/skills/pdf/forms.md +0 -205
- package/out/base-prompts/skills/pdf/reference.md +0 -612
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +0 -70
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +0 -12
- package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +0 -41
- package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +0 -152
- package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +0 -114
- package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/out/base-prompts/skills/pptx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pptx/SKILL.md +0 -484
- package/out/base-prompts/skills/pptx/html2pptx.md +0 -625
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/pptx/ooxml.md +0 -427
- package/out/base-prompts/skills/pptx/scripts/html2pptx.js +0 -984
- package/out/base-prompts/skills/pptx/scripts/inventory.py +0 -1020
- package/out/base-prompts/skills/pptx/scripts/rearrange.py +0 -231
- package/out/base-prompts/skills/pptx/scripts/replace.py +0 -385
- package/out/base-prompts/skills/pptx/scripts/thumbnail.py +0 -450
- package/out/base-prompts/skills/prompt-lab/SKILL.md +0 -149
- package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/skill-creator/LICENSE.txt +0 -202
- package/out/base-prompts/skills/skill-creator/SKILL.md +0 -371
- package/out/base-prompts/skills/skill-creator/references/output-patterns.md +0 -82
- package/out/base-prompts/skills/skill-creator/references/workflows.md +0 -28
- package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +0 -303
- package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +0 -110
- package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/out/base-prompts/skills/skill-installer/SKILL.md +0 -251
- package/out/base-prompts/skills/skill-installer/references/store-api.md +0 -219
- package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +0 -83
- package/out/base-prompts/skills/spotlight-insights/SKILL.md +0 -101
- package/out/base-prompts/skills/spotlight-optimize/SKILL.md +0 -93
- package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/SKILL.md +0 -314
- package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +0 -163
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +0 -744
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +0 -14
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +0 -7
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +0 -5
- package/out/base-prompts/skills/spotlight-report/SKILL.md +0 -86
- package/out/base-prompts/skills/spotlight-visualize/SKILL.md +0 -92
- package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/xlsx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/xlsx/SKILL.md +0 -289
- package/out/base-prompts/skills/xlsx/recalc.py +0 -178
- package/out/branding.js +0 -49
- package/out/cli/commands/anywhere.js +0 -66
- package/out/cli/commands/ask.js +0 -246
- package/out/cli/commands/auth-broker.js +0 -24
- package/out/cli/commands/auth.js +0 -219
- package/out/cli/commands/chat.js +0 -357
- package/out/cli/commands/conformance.js +0 -249
- package/out/cli/commands/data-plane.js +0 -67
- package/out/cli/commands/deploy.js +0 -263
- package/out/cli/commands/gateway.js +0 -218
- package/out/cli/commands/idp.js +0 -85
- package/out/cli/commands/pack.js +0 -399
- package/out/cli/commands/probe-custom-engine.js +0 -82
- package/out/cli/commands/sandbox.js +0 -332
- package/out/cli/commands/serve.js +0 -1758
- package/out/cli/commands/store.js +0 -927
- package/out/cli/credential-context.js +0 -91
- package/out/cli/data-plane/broker.js +0 -78
- package/out/cli/data-plane/connector-host.js +0 -121
- package/out/cli/data-plane/egress.js +0 -189
- package/out/cli/data-plane/gateway.js +0 -218
- package/out/cli/data-plane/index.js +0 -152
- package/out/cli/data-plane/registry.js +0 -89
- package/out/cli/data-plane/remote.js +0 -106
- package/out/cli/data-plane/sidecar.js +0 -161
- package/out/cli/deploy/blueprints/registry.js +0 -84
- package/out/cli/deploy/layers/identity.js +0 -172
- package/out/cli/deploy-init.js +0 -3023
- package/out/cli/deps.js +0 -342
- package/out/cli/idp-init.js +0 -338
- package/out/cli/pack-install-ref.js +0 -15
- package/out/cli/pack-loader.js +0 -418
- package/out/cli/pack-runtime.js +0 -61
- package/out/cli/runtime.js +0 -450
- package/out/cli/serve-hardening.js +0 -607
- package/out/cli/state-sync.js +0 -424
- package/out/cli/utils.js +0 -231
- package/out/engines/base.js +0 -188
- package/out/engines/claude.js +0 -1254
- package/out/engines/codex.js +0 -862
- package/out/engines/custom.js +0 -674
- package/out/engines/customEngineIpc.js +0 -95
- package/out/engines/customEngineRunnerEmbed.js +0 -107
- package/out/engines/customRegistry.js +0 -274
- package/out/engines/embeddedCustomEngineRunner.generated.js +0 -9
- package/out/engines/engineApiKey.js +0 -138
- package/out/engines/install.js +0 -372
- package/out/engines/persistentEngineWorker.js +0 -320
- package/out/engines/publish.js +0 -341
- package/out/evidence/sessionShip.js +0 -610
- package/out/gateway/bridge.js +0 -843
- package/out/gateway/cli-agent-id.js +0 -36
- package/out/gateway/client.js +0 -336
- package/out/gateway/client.test.js +0 -395
- package/out/gateway/gateway-scope-errors.js +0 -14
- package/out/gateway/gatewayBackup.js +0 -76
- package/out/gateway/installSource.js +0 -68
- package/out/gateway/lifecycle.js +0 -3190
- package/out/gateway/openclaw-channel-routing.js +0 -317
- package/out/gateway/outboundHandles.js +0 -373
- package/out/gateway/outboundPaths.js +0 -75
- package/out/gateway/outboundSend.js +0 -254
- package/out/gateway/protocol.js +0 -48
- package/out/gateway/secretsPreflight.js +0 -90
- package/out/gateway/sessionRouting.js +0 -77
- package/out/headless/index.js +0 -539
- package/out/headless/sync.js +0 -473
- package/out/live-e2e/mcp-demo/server.mjs +0 -32
- package/out/live-probe/connector.mjs +0 -8
- package/out/live-probe/env-report.mjs +0 -8
- package/out/mcp.js +0 -654
- package/out/pack/caps.js +0 -271
- package/out/pack/governor.js +0 -309
- package/out/pack/lease-schema.js +0 -270
- package/out/pack/lease.js +0 -640
- package/out/pack/reconcile.js +0 -217
- package/out/pack/signature.js +0 -839
- package/out/permissions.js +0 -108
- package/out/permissions.mapping.yaml +0 -68
- package/out/registry/index.js +0 -332
- package/out/runner/host.js +0 -131
- package/out/runner/protocol.js +0 -108
- package/out/runner/remoteEngine.js +0 -130
- package/out/runtime/interfaces/config-provider.js +0 -32
- package/out/runtime/interfaces/edit-tracker.js +0 -24
- package/out/runtime/interfaces/index.js +0 -29
- package/out/runtime/interfaces/logger.js +0 -40
- package/out/runtime/interfaces/permission-handler.js +0 -66
- package/out/runtime/interfaces/session-store.js +0 -342
- package/out/runtime/vscode/vscode-session-store.js +0 -22
- package/out/sandbox/containerDriver.js +0 -570
- package/out/sandbox/processDriver.js +0 -315
- package/out/sandbox/sandboxRunner.js +0 -191
- package/out/sandbox/support.js +0 -301
- package/out/sandbox/types.js +0 -55
- package/out/scripts/analytics/fleet-local-adapter.js +0 -246
- package/out/scripts/analytics/live-fleet-4-collector.cjs +0 -315
- package/out/scripts/analytics/live-fleet-4-daemon.mjs +0 -134
- package/out/scripts/analytics/live-fleet-4-widget.cjs +0 -433
- package/out/scripts/gateway/Dockerfile.serve +0 -45
- package/out/scripts/gateway/docker-serve.sh +0 -248
- package/out/scripts/gateway/setup-gateway-server.ps1 +0 -953
- package/out/scripts/gateway/setup-gateway-server.sh +0 -935
- package/out/session.js +0 -272
- package/out/shared/agentEngines.js +0 -170
- package/out/shared/index.js +0 -109
- package/out/shared/models.js +0 -136
- package/out/shared/providers.js +0 -205
- package/out/spotlight/install.js +0 -345
- package/out/spotlight/publish.js +0 -544
- package/out/spotlight/yaml.js +0 -31
- package/out/store/index.js +0 -786
- package/out/store/shared.js +0 -241
- package/out/test/agentEnvFile.test.js +0 -97
- package/out/test/agentYaml.test.js +0 -373
- package/out/test/agentpack.test.js +0 -639
- package/out/test/analytics-lifecycle.test.js +0 -174
- package/out/test/analytics.test.js +0 -756
- package/out/test/auth-baseurl.test.js +0 -132
- package/out/test/auth-bootstrapApply.test.js +0 -123
- package/out/test/auth-broker-hardening.test.js +0 -227
- package/out/test/auth-broker.test.js +0 -541
- package/out/test/auth-callback.test.js +0 -62
- package/out/test/blueprint-registry.test.js +0 -105
- package/out/test/branding.test.js +0 -242
- package/out/test/caps-governor.test.js +0 -455
- package/out/test/cli-agent-id.test.js +0 -55
- package/out/test/codex-new-file-survival.test.js +0 -119
- package/out/test/configuration-scopes.test.js +0 -131
- package/out/test/credential-context.test.js +0 -160
- package/out/test/custom-env-layering.test.js +0 -151
- package/out/test/customEngineInstall.test.js +0 -100
- package/out/test/customRegistry.test.js +0 -122
- package/out/test/data-plane-engine-wiring.test.js +0 -250
- package/out/test/data-plane.test.js +0 -311
- package/out/test/deploy-init.test.js +0 -854
- package/out/test/deps-auto-install.test.js +0 -81
- package/out/test/egress-broker.test.js +0 -172
- package/out/test/engine-integration.test.js +0 -297
- package/out/test/enginePaths.test.js +0 -195
- package/out/test/enginePublish.test.js +0 -82
- package/out/test/fleetDisplayUtils.test.js +0 -100
- package/out/test/gateway-client.test.js +0 -409
- package/out/test/gateway-install-source.test.js +0 -111
- package/out/test/gateway-lifecycle.test.js +0 -608
- package/out/test/gateway-outbound.test.js +0 -538
- package/out/test/gateway-reset-mappings.test.js +0 -221
- package/out/test/gateway-route-index.test.js +0 -235
- package/out/test/gateway-secrets-preflight.test.js +0 -127
- package/out/test/gateway-session-routing.test.js +0 -65
- package/out/test/gateway-session-store.test.js +0 -216
- package/out/test/github.test.js +0 -232
- package/out/test/governor-hardening.test.js +0 -217
- package/out/test/headless-sync.test.js +0 -301
- package/out/test/helpers/manifest-fixtures.js +0 -27
- package/out/test/idp-init.test.js +0 -151
- package/out/test/lease-signature.test.js +0 -357
- package/out/test/lease-trust-root.test.js +0 -273
- package/out/test/lease-validation.test.js +0 -169
- package/out/test/lease.test.js +0 -114
- package/out/test/mcp-obo.test.js +0 -107
- package/out/test/mcp.test.js +0 -389
- package/out/test/model-routing.test.js +0 -133
- package/out/test/openclaw-channel-routing.test.js +0 -191
- package/out/test/pack-admission.test.js +0 -216
- package/out/test/pack-digest-parity.test.js +0 -140
- package/out/test/pack-reconcile.test.js +0 -183
- package/out/test/pack-signature-artifact.test.js +0 -103
- package/out/test/pack-signature.test.js +0 -176
- package/out/test/pack-trust-root.test.js +0 -202
- package/out/test/pathSafety.test.js +0 -63
- package/out/test/permissions.test.js +0 -175
- package/out/test/persistent-engine-worker.test.js +0 -220
- package/out/test/refreshPolicy.test.js +0 -60
- package/out/test/registry.test.js +0 -351
- package/out/test/remote-trust.test.js +0 -242
- package/out/test/runner-protocol.test.js +0 -249
- package/out/test/runtime.test.js +0 -349
- package/out/test/sandbox-driver.test.js +0 -553
- package/out/test/sandbox-hardening.test.js +0 -395
- package/out/test/sandbox-runner.test.js +0 -343
- package/out/test/scheduledFleetStorage.test.js +0 -72
- package/out/test/serve-gateway-turn.test.js +0 -267
- package/out/test/serve-hardening.test.js +0 -418
- package/out/test/serveClient.test.js +0 -209
- package/out/test/sessionJsonlFleet.test.js +0 -78
- package/out/test/sessionShip.test.js +0 -560
- package/out/test/shared.test.js +0 -173
- package/out/test/skills-mcp.test.js +0 -299
- package/out/test/spotlightPublish.test.js +0 -327
- package/out/test/spotlightYaml.test.js +0 -58
- package/out/test/state-sync-peer.test.js +0 -156
- package/out/test/store-install-safe.test.js +0 -69
- package/out/test/store.test.js +0 -331
- package/out/test/stores.test.js +0 -504
- package/out/test/sync-switch.test.js +0 -251
- package/out/test/teamViewDiscovery.test.js +0 -90
- package/out/test/tls-bypass.test.js +0 -90
- package/out/test/toolPath.test.js +0 -120
- package/out/test/utils.test.js +0 -308
- package/out/test/viewsConfigMerge.test.js +0 -180
- package/out/test/warrant.test.js +0 -138
- package/out/test/windows-command-line.test.js +0 -75
- package/out/utils/agentEnvFile.js +0 -131
- package/out/utils/binary.js +0 -175
- package/out/utils/index.js +0 -37
- package/out/utils/network.js +0 -74
- package/out/utils/paths.js +0 -116
- package/out/utils/pid.js +0 -180
- package/out/utils/resolveNodeBinary.js +0 -168
- package/out/utils/windowsCommandLine.js +0 -29
- package/out/utils.js +0 -968
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Sandbox runner layer (PLAN/serve-v4-clean.md §3–§4).
|
|
4
|
-
*
|
|
5
|
-
* Covers the three rules the design turns on, each of which is a bug if it regresses:
|
|
6
|
-
* 1. a turn settles on the TERMINAL frame, never on the streamed `done` (engines call done()
|
|
7
|
-
* mid-run — the existing worker protocol separates them for exactly this reason);
|
|
8
|
-
* 2. `question` is one-way — no reverse RPC, so it can never wedge a turn;
|
|
9
|
-
* 3. no model credential crosses into the sandbox (invariant 1).
|
|
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 node_stream_1 = require("node:stream");
|
|
48
|
-
const protocol_1 = require("../runner/protocol");
|
|
49
|
-
const host_1 = require("../runner/host");
|
|
50
|
-
const remoteEngine_1 = require("../runner/remoteEngine");
|
|
51
|
-
/** Minimal options for tests — the fields under test are baseUrl/modelToken/apiKey only. */
|
|
52
|
-
const WIRE_OPTS = {};
|
|
53
|
-
suite('runner protocol', () => {
|
|
54
|
-
test('round-trips every frame kind', () => {
|
|
55
|
-
const frames = [
|
|
56
|
-
{ type: 'ready' },
|
|
57
|
-
{ type: 'result', id: 'r1', nativeSessionId: 'nsid-9' },
|
|
58
|
-
{ type: 'failed', id: 'r2', message: 'boom' },
|
|
59
|
-
{ type: 'text', delta: 'hi' },
|
|
60
|
-
{ type: 'toolEnd', toolName: 't', toolCallId: 'c1', isError: true },
|
|
61
|
-
{ type: 'question', payload: { questionId: 'q1', prompt: 'pick' } },
|
|
62
|
-
];
|
|
63
|
-
for (const f of frames) {
|
|
64
|
-
assert.deepStrictEqual((0, protocol_1.parseRunnerFrame)((0, protocol_1.encodeRunnerFrame)(f).trim()), f, `round-trip ${f.type}`);
|
|
65
|
-
}
|
|
66
|
-
const client = { type: 'run', id: 'r1', message: 'go', options: WIRE_OPTS };
|
|
67
|
-
assert.deepStrictEqual((0, protocol_1.parseClientFrame)((0, protocol_1.encodeClientFrame)(client).trim()), client);
|
|
68
|
-
assert.deepStrictEqual((0, protocol_1.parseClientFrame)('{"type":"abort","id":"r1"}'), { type: 'abort', id: 'r1' });
|
|
69
|
-
});
|
|
70
|
-
test('malformed input is dropped, never thrown — the sandbox is untrusted toward serve', () => {
|
|
71
|
-
for (const bad of ['', 'not json', '[]', 'null', '{"type":"nope"}', '{"type":"result"}', '{"type":"run"}']) {
|
|
72
|
-
assert.strictEqual((0, protocol_1.parseRunnerFrame)(bad), undefined, `runner frame: ${bad}`);
|
|
73
|
-
assert.strictEqual((0, protocol_1.parseClientFrame)(bad), undefined, `client frame: ${bad}`);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
test('terminal frames are exactly result/failed — done and error are NOT terminal', () => {
|
|
77
|
-
assert.ok((0, protocol_1.isTerminalFrame)({ type: 'result', id: 'r1' }));
|
|
78
|
-
assert.ok((0, protocol_1.isTerminalFrame)({ type: 'failed', id: 'r1', message: 'x' }));
|
|
79
|
-
assert.ok(!(0, protocol_1.isTerminalFrame)({ type: 'done' }), 'streamed done must not end a turn');
|
|
80
|
-
assert.ok(!(0, protocol_1.isTerminalFrame)({ type: 'error', message: 'x' }), 'streamed error must not end a turn');
|
|
81
|
-
});
|
|
82
|
-
test('splitFrames keeps partial lines for the next chunk', () => {
|
|
83
|
-
const a = (0, protocol_1.splitFrames)('{"type":"ready"}\n{"type":"do');
|
|
84
|
-
assert.deepStrictEqual(a.lines, ['{"type":"ready"}']);
|
|
85
|
-
assert.strictEqual(a.rest, '{"type":"do');
|
|
86
|
-
const b = (0, protocol_1.splitFrames)(a.rest + 'ne"}\n');
|
|
87
|
-
assert.deepStrictEqual(b.lines, ['{"type":"done"}']);
|
|
88
|
-
assert.strictEqual(b.rest, '');
|
|
89
|
-
});
|
|
90
|
-
test('toWireOptions drops apiKey and attaches the sandbox-scoped model token (invariant 1)', () => {
|
|
91
|
-
const wire = (0, protocol_1.toWireOptions)({ apiKey: 'sk-secret', model: 'gpt-5.5', workspace: '/w' }, { baseUrl: 'http://127.0.0.1:9099/v1', modelToken: 'sandbox-scoped' });
|
|
92
|
-
assert.ok(!('apiKey' in wire), 'apiKey must never cross the sandbox boundary');
|
|
93
|
-
assert.ok(!JSON.stringify(wire).includes('sk-secret'), 'no provider key anywhere in the frame');
|
|
94
|
-
assert.strictEqual(wire.baseUrl, 'http://127.0.0.1:9099/v1');
|
|
95
|
-
assert.strictEqual(wire.modelToken, 'sandbox-scoped');
|
|
96
|
-
assert.strictEqual(wire.model, 'gpt-5.5', 'non-secret options survive');
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
/** Wire a RemoteEngine to a runner host over two in-memory pipes — the `process` driver shape. */
|
|
100
|
-
function pair(engine) {
|
|
101
|
-
const toRunner = new node_stream_1.PassThrough();
|
|
102
|
-
const toServe = new node_stream_1.PassThrough();
|
|
103
|
-
const host = (0, host_1.startRunnerHost)({
|
|
104
|
-
engine,
|
|
105
|
-
runtime: { logger: { info() { }, warn() { }, error() { }, debug() { } } },
|
|
106
|
-
input: toRunner,
|
|
107
|
-
output: { write: (c) => toServe.write(c) },
|
|
108
|
-
maintenanceIntervalMs: 60_000,
|
|
109
|
-
});
|
|
110
|
-
const remote = new remoteEngine_1.RemoteEngine({
|
|
111
|
-
id: 'test', displayName: 'Test',
|
|
112
|
-
channel: { input: toServe, output: { write: (c) => toRunner.write(c) } },
|
|
113
|
-
});
|
|
114
|
-
return { host, remote };
|
|
115
|
-
}
|
|
116
|
-
function recorder() {
|
|
117
|
-
const events = [];
|
|
118
|
-
const emitter = {
|
|
119
|
-
async thinking(d) { events.push(`thinking:${d}`); },
|
|
120
|
-
async text(d) { events.push(`text:${d}`); },
|
|
121
|
-
async toolStart(n) { events.push(`toolStart:${n}`); },
|
|
122
|
-
async toolEnd(n) { events.push(`toolEnd:${n}`); },
|
|
123
|
-
async progress(m) { events.push(`progress:${m}`); },
|
|
124
|
-
async question(p) { events.push(`question:${p.questionId}`); return { selected: [], freeText: null, declined: true }; },
|
|
125
|
-
async error(m) { events.push(`error:${m}`); },
|
|
126
|
-
async done() { events.push('done'); },
|
|
127
|
-
};
|
|
128
|
-
return { events, emitter };
|
|
129
|
-
}
|
|
130
|
-
const RUNTIME = { logger: { info() { }, warn() { }, error() { }, debug() { } } };
|
|
131
|
-
suite('runner host ⇄ RemoteEngine', () => {
|
|
132
|
-
test('streams events through and settles on the terminal frame, not the mid-run done()', async () => {
|
|
133
|
-
let resolveEngine;
|
|
134
|
-
const engine = {
|
|
135
|
-
id: 'e', displayName: 'E',
|
|
136
|
-
async stream(_m, _o, emitter) {
|
|
137
|
-
await emitter.text('hello');
|
|
138
|
-
await emitter.done(); // engines call done() MID-RUN...
|
|
139
|
-
await new Promise((r) => { resolveEngine = r; }); // ...then keep working
|
|
140
|
-
await emitter.text('after-done');
|
|
141
|
-
},
|
|
142
|
-
onMaintenance() { }, dispose() { },
|
|
143
|
-
};
|
|
144
|
-
const { remote } = pair(engine);
|
|
145
|
-
const { events, emitter } = recorder();
|
|
146
|
-
let settled = false;
|
|
147
|
-
const turn = remote.stream('go', {}, emitter, RUNTIME).then(() => { settled = true; });
|
|
148
|
-
await waitFor(() => events.includes('done'));
|
|
149
|
-
assert.strictEqual(settled, false, 'streamed done must NOT settle the turn');
|
|
150
|
-
resolveEngine?.();
|
|
151
|
-
await turn;
|
|
152
|
-
assert.strictEqual(settled, true, 'turn settles once the engine returns (result frame)');
|
|
153
|
-
assert.deepStrictEqual(events, ['text:hello', 'done', 'text:after-done']);
|
|
154
|
-
});
|
|
155
|
-
test('engine failure rejects the turn with the runner message', async () => {
|
|
156
|
-
const engine = {
|
|
157
|
-
id: 'e', displayName: 'E',
|
|
158
|
-
async stream() { throw new Error('engine exploded'); },
|
|
159
|
-
onMaintenance() { }, dispose() { },
|
|
160
|
-
};
|
|
161
|
-
const { remote } = pair(engine);
|
|
162
|
-
const { emitter } = recorder();
|
|
163
|
-
await assert.rejects(remote.stream('go', {}, emitter, RUNTIME), /engine exploded/);
|
|
164
|
-
});
|
|
165
|
-
test('question is one-way: the runner answers declined locally and the turn never blocks', async () => {
|
|
166
|
-
let answer;
|
|
167
|
-
const engine = {
|
|
168
|
-
id: 'e', displayName: 'E',
|
|
169
|
-
async stream(_m, _o, emitter) {
|
|
170
|
-
// If this awaited a reverse RPC that never comes, the turn would hang — the
|
|
171
|
-
// deadlock class the design removes by construction.
|
|
172
|
-
answer = await emitter.question({ questionId: 'q1', prompt: 'pick one' });
|
|
173
|
-
await emitter.text('continued');
|
|
174
|
-
},
|
|
175
|
-
onMaintenance() { }, dispose() { },
|
|
176
|
-
};
|
|
177
|
-
const { remote } = pair(engine);
|
|
178
|
-
const { events, emitter } = recorder();
|
|
179
|
-
await remote.stream('go', {}, emitter, RUNTIME);
|
|
180
|
-
assert.deepStrictEqual(answer, { selected: [], freeText: null, declined: true }, 'runner answers declined in-sandbox, mirroring serve.ts and headless');
|
|
181
|
-
assert.ok(events.includes('question:q1'), 'question still forwarded to serve for visibility');
|
|
182
|
-
assert.ok(events.includes('text:continued'), 'the run continues past the question');
|
|
183
|
-
});
|
|
184
|
-
test('abort reaches the in-sandbox engine and settles the turn', async () => {
|
|
185
|
-
const engine = {
|
|
186
|
-
id: 'e', displayName: 'E',
|
|
187
|
-
async stream(_m, _o, _emitter, _rt, signal) {
|
|
188
|
-
await new Promise((_resolve, reject) => {
|
|
189
|
-
if (signal?.aborted) {
|
|
190
|
-
return reject(new Error('aborted'));
|
|
191
|
-
}
|
|
192
|
-
signal?.addEventListener('abort', () => reject(new Error('aborted')), { once: true });
|
|
193
|
-
});
|
|
194
|
-
},
|
|
195
|
-
onMaintenance() { }, dispose() { },
|
|
196
|
-
};
|
|
197
|
-
const { remote } = pair(engine);
|
|
198
|
-
const { emitter } = recorder();
|
|
199
|
-
const controller = new AbortController();
|
|
200
|
-
const turn = remote.stream('go', {}, emitter, RUNTIME, controller.signal);
|
|
201
|
-
setTimeout(() => controller.abort(), 20);
|
|
202
|
-
await assert.rejects(turn, /aborted/);
|
|
203
|
-
});
|
|
204
|
-
test('nativeSessionId rides the terminal frame — session resume across sandbox death', async () => {
|
|
205
|
-
const engine = {
|
|
206
|
-
id: 'e', displayName: 'E',
|
|
207
|
-
async stream(_m, _o, emitter) { await emitter.text('x'); },
|
|
208
|
-
onMaintenance() { }, dispose() { },
|
|
209
|
-
};
|
|
210
|
-
const frames = [];
|
|
211
|
-
const toRunner = new node_stream_1.PassThrough();
|
|
212
|
-
(0, host_1.startRunnerHost)({
|
|
213
|
-
engine, runtime: RUNTIME, input: toRunner,
|
|
214
|
-
output: { write: (c) => { frames.push(c.trim()); return true; } },
|
|
215
|
-
maintenanceIntervalMs: 60_000,
|
|
216
|
-
});
|
|
217
|
-
const runFrame = { type: 'run', id: 'r1', message: 'go', options: WIRE_OPTS };
|
|
218
|
-
toRunner.write((0, protocol_1.encodeClientFrame)(runFrame));
|
|
219
|
-
await waitFor(() => frames.some((f) => f.includes('"result"')));
|
|
220
|
-
assert.ok(frames[0].includes('"ready"'), 'runner announces ready before serving turns');
|
|
221
|
-
const terminal = frames.find((f) => f.includes('"result"'));
|
|
222
|
-
assert.ok(terminal.includes('"id":"r1"'), 'terminal carries the run id');
|
|
223
|
-
});
|
|
224
|
-
test('a dead channel fails in-flight turns instead of hanging them', async () => {
|
|
225
|
-
const toServe = new node_stream_1.PassThrough();
|
|
226
|
-
let closeChannel;
|
|
227
|
-
const remote = new remoteEngine_1.RemoteEngine({
|
|
228
|
-
id: 't', displayName: 'T',
|
|
229
|
-
channel: {
|
|
230
|
-
input: toServe,
|
|
231
|
-
output: { write: () => true },
|
|
232
|
-
closed: new Promise((resolve) => { closeChannel = resolve; }),
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
const { emitter } = recorder();
|
|
236
|
-
const turn = remote.stream('go', {}, emitter, RUNTIME);
|
|
237
|
-
setTimeout(() => closeChannel?.(), 20);
|
|
238
|
-
await assert.rejects(turn, /sandbox channel closed/);
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
async function waitFor(cond, timeoutMs = 2000) {
|
|
242
|
-
const start = Date.now();
|
|
243
|
-
while (!cond()) {
|
|
244
|
-
if (Date.now() - start > timeoutMs) {
|
|
245
|
-
throw new Error('timed out waiting for condition');
|
|
246
|
-
}
|
|
247
|
-
await new Promise((r) => setTimeout(r, 5));
|
|
248
|
-
}
|
|
249
|
-
}
|
package/out/test/runtime.test.js
DELETED
|
@@ -1,349 +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
|
-
require("mocha");
|
|
40
|
-
const assert = __importStar(require("assert"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const os = __importStar(require("os"));
|
|
43
|
-
const fs_1 = require("fs");
|
|
44
|
-
const interfaces_1 = require("../runtime/interfaces");
|
|
45
|
-
// =============================================================================
|
|
46
|
-
// Logger Tests
|
|
47
|
-
// =============================================================================
|
|
48
|
-
suite('Runtime Interfaces - Logger', () => {
|
|
49
|
-
test('ConsoleLogger has all required methods', () => {
|
|
50
|
-
const logger = new interfaces_1.ConsoleLogger('[Test]');
|
|
51
|
-
assert.strictEqual(typeof logger.debug, 'function');
|
|
52
|
-
assert.strictEqual(typeof logger.info, 'function');
|
|
53
|
-
assert.strictEqual(typeof logger.warn, 'function');
|
|
54
|
-
assert.strictEqual(typeof logger.error, 'function');
|
|
55
|
-
});
|
|
56
|
-
test('NoOpLogger has all required methods', () => {
|
|
57
|
-
const logger = new interfaces_1.NoOpLogger();
|
|
58
|
-
// Should not throw
|
|
59
|
-
logger.debug('test');
|
|
60
|
-
logger.info('test');
|
|
61
|
-
logger.warn('test');
|
|
62
|
-
logger.error('test');
|
|
63
|
-
logger.error('test', new Error('test'));
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
// =============================================================================
|
|
67
|
-
// Permission Handler Tests
|
|
68
|
-
// =============================================================================
|
|
69
|
-
suite('Runtime Interfaces - PermissionHandler', () => {
|
|
70
|
-
test('AutoApprovePermissionHandler always allows', async () => {
|
|
71
|
-
const handler = new interfaces_1.AutoApprovePermissionHandler();
|
|
72
|
-
const result = await handler.requestPermission({
|
|
73
|
-
toolName: 'Bash',
|
|
74
|
-
toolInput: { command: 'ls' },
|
|
75
|
-
});
|
|
76
|
-
assert.deepStrictEqual(result, { behavior: 'allow' });
|
|
77
|
-
});
|
|
78
|
-
test('AutoDenyPermissionHandler always denies', async () => {
|
|
79
|
-
const handler = new interfaces_1.AutoDenyPermissionHandler();
|
|
80
|
-
const result = await handler.requestPermission({
|
|
81
|
-
toolName: 'Bash',
|
|
82
|
-
toolInput: { command: 'rm -rf /' },
|
|
83
|
-
});
|
|
84
|
-
assert.strictEqual(result.behavior, 'deny');
|
|
85
|
-
});
|
|
86
|
-
test('AutoDenyPermissionHandler uses custom message', async () => {
|
|
87
|
-
const handler = new interfaces_1.AutoDenyPermissionHandler('Custom deny message');
|
|
88
|
-
const result = await handler.requestPermission({ toolName: 'Write' });
|
|
89
|
-
assert.strictEqual(result.behavior, 'deny');
|
|
90
|
-
if (result.behavior === 'deny') {
|
|
91
|
-
assert.strictEqual(result.message, 'Custom deny message');
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
// =============================================================================
|
|
96
|
-
// Edit Tracker Tests
|
|
97
|
-
// =============================================================================
|
|
98
|
-
suite('Runtime Interfaces - EditTracker', () => {
|
|
99
|
-
test('NoOpEditTracker startTracking returns undefined', async () => {
|
|
100
|
-
const tracker = new interfaces_1.NoOpEditTracker();
|
|
101
|
-
const result = await tracker.startTracking('session-1', ['/path/to/file.ts']);
|
|
102
|
-
assert.strictEqual(result, undefined);
|
|
103
|
-
});
|
|
104
|
-
test('NoOpEditTracker stopTracking does not throw', async () => {
|
|
105
|
-
const tracker = new interfaces_1.NoOpEditTracker();
|
|
106
|
-
// Should not throw
|
|
107
|
-
await tracker.stopTracking('session-1', 123);
|
|
108
|
-
});
|
|
109
|
-
test('NoOpEditTracker applyEdit does not throw', async () => {
|
|
110
|
-
const tracker = new interfaces_1.NoOpEditTracker();
|
|
111
|
-
// Should not throw
|
|
112
|
-
await tracker.applyEdit('session-1', '/path/to/file.ts', 'content', true);
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
// =============================================================================
|
|
116
|
-
// Session Store Tests
|
|
117
|
-
// =============================================================================
|
|
118
|
-
suite('Runtime Interfaces - SessionStore', () => {
|
|
119
|
-
test('MemorySessionStore get/set works', async () => {
|
|
120
|
-
const store = new interfaces_1.MemorySessionStore();
|
|
121
|
-
// Initially undefined
|
|
122
|
-
assert.strictEqual(store.get('key1'), undefined);
|
|
123
|
-
// Set and get
|
|
124
|
-
await store.set('key1', { foo: 'bar' });
|
|
125
|
-
assert.deepStrictEqual(store.get('key1'), { foo: 'bar' });
|
|
126
|
-
// Overwrite
|
|
127
|
-
await store.set('key1', { foo: 'baz' });
|
|
128
|
-
assert.deepStrictEqual(store.get('key1'), { foo: 'baz' });
|
|
129
|
-
});
|
|
130
|
-
test('MemorySessionStore clear removes all values', async () => {
|
|
131
|
-
const store = new interfaces_1.MemorySessionStore();
|
|
132
|
-
await store.set('key1', 'value1');
|
|
133
|
-
await store.set('key2', 'value2');
|
|
134
|
-
assert.strictEqual(store.get('key1'), 'value1');
|
|
135
|
-
assert.strictEqual(store.get('key2'), 'value2');
|
|
136
|
-
store.clear();
|
|
137
|
-
assert.strictEqual(store.get('key1'), undefined);
|
|
138
|
-
assert.strictEqual(store.get('key2'), undefined);
|
|
139
|
-
});
|
|
140
|
-
test('MemorySessionStore supports different value types', async () => {
|
|
141
|
-
const store = new interfaces_1.MemorySessionStore();
|
|
142
|
-
await store.set('string', 'hello');
|
|
143
|
-
await store.set('number', 42);
|
|
144
|
-
await store.set('boolean', true);
|
|
145
|
-
await store.set('object', { nested: { value: 123 } });
|
|
146
|
-
await store.set('array', [1, 2, 3]);
|
|
147
|
-
assert.strictEqual(store.get('string'), 'hello');
|
|
148
|
-
assert.strictEqual(store.get('number'), 42);
|
|
149
|
-
assert.strictEqual(store.get('boolean'), true);
|
|
150
|
-
assert.deepStrictEqual(store.get('object'), { nested: { value: 123 } });
|
|
151
|
-
assert.deepStrictEqual(store.get('array'), [1, 2, 3]);
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
// =============================================================================
|
|
155
|
-
// FileSessionStore Tests
|
|
156
|
-
// =============================================================================
|
|
157
|
-
suite('Runtime Interfaces - FileSessionStore', () => {
|
|
158
|
-
let tempDir;
|
|
159
|
-
let testFilePath;
|
|
160
|
-
setup(async () => {
|
|
161
|
-
tempDir = await fs_1.promises.mkdtemp(path.join(os.tmpdir(), 'agentide-test-'));
|
|
162
|
-
testFilePath = path.join(tempDir, 'sessions.json');
|
|
163
|
-
});
|
|
164
|
-
teardown(async () => {
|
|
165
|
-
try {
|
|
166
|
-
await fs_1.promises.rm(tempDir, { recursive: true, force: true });
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
// Ignore cleanup errors
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
test('FileSessionStore get/set works', async () => {
|
|
173
|
-
const store = new interfaces_1.FileSessionStore(testFilePath);
|
|
174
|
-
await store.load();
|
|
175
|
-
// Initially undefined
|
|
176
|
-
assert.strictEqual(store.get('key1'), undefined);
|
|
177
|
-
// Set and get
|
|
178
|
-
await store.set('key1', { foo: 'bar' });
|
|
179
|
-
assert.deepStrictEqual(store.get('key1'), { foo: 'bar' });
|
|
180
|
-
// Overwrite
|
|
181
|
-
await store.set('key1', { foo: 'baz' });
|
|
182
|
-
assert.deepStrictEqual(store.get('key1'), { foo: 'baz' });
|
|
183
|
-
});
|
|
184
|
-
test('FileSessionStore persists to disk', async () => {
|
|
185
|
-
// Write with first store instance
|
|
186
|
-
const store1 = new interfaces_1.FileSessionStore(testFilePath);
|
|
187
|
-
await store1.load();
|
|
188
|
-
await store1.set('persistent', { data: 'survives' });
|
|
189
|
-
// Read with new store instance
|
|
190
|
-
const store2 = new interfaces_1.FileSessionStore(testFilePath);
|
|
191
|
-
await store2.load();
|
|
192
|
-
assert.deepStrictEqual(store2.get('persistent'), { data: 'survives' });
|
|
193
|
-
});
|
|
194
|
-
test('FileSessionStore handles missing file gracefully', async () => {
|
|
195
|
-
const nonExistentPath = path.join(tempDir, 'does-not-exist.json');
|
|
196
|
-
const store = new interfaces_1.FileSessionStore(nonExistentPath);
|
|
197
|
-
await store.load(); // Should not throw
|
|
198
|
-
assert.strictEqual(store.get('anything'), undefined);
|
|
199
|
-
});
|
|
200
|
-
test('FileSessionStore clear removes all values', async () => {
|
|
201
|
-
const store = new interfaces_1.FileSessionStore(testFilePath);
|
|
202
|
-
await store.load();
|
|
203
|
-
await store.set('key1', 'value1');
|
|
204
|
-
await store.set('key2', 'value2');
|
|
205
|
-
assert.strictEqual(store.get('key1'), 'value1');
|
|
206
|
-
assert.strictEqual(store.get('key2'), 'value2');
|
|
207
|
-
await store.clear();
|
|
208
|
-
assert.strictEqual(store.get('key1'), undefined);
|
|
209
|
-
assert.strictEqual(store.get('key2'), undefined);
|
|
210
|
-
// Verify cleared state persists
|
|
211
|
-
const store2 = new interfaces_1.FileSessionStore(testFilePath);
|
|
212
|
-
await store2.load();
|
|
213
|
-
assert.strictEqual(store2.get('key1'), undefined);
|
|
214
|
-
});
|
|
215
|
-
test('FileSessionStore load is idempotent', async () => {
|
|
216
|
-
const store = new interfaces_1.FileSessionStore(testFilePath);
|
|
217
|
-
await store.load();
|
|
218
|
-
await store.set('key', 'original');
|
|
219
|
-
// Calling load again should not reset state
|
|
220
|
-
await store.load();
|
|
221
|
-
assert.strictEqual(store.get('key'), 'original');
|
|
222
|
-
});
|
|
223
|
-
});
|
|
224
|
-
// =============================================================================
|
|
225
|
-
// DirectorySessionStore Tests (one file per session entry)
|
|
226
|
-
// =============================================================================
|
|
227
|
-
suite('Runtime Interfaces - DirectorySessionStore', () => {
|
|
228
|
-
// session.ts persists the whole map under a single record-valued logical key.
|
|
229
|
-
const KEY = 'agentide.providerSessions.v1';
|
|
230
|
-
let tempDir;
|
|
231
|
-
let dir;
|
|
232
|
-
setup(async () => {
|
|
233
|
-
tempDir = await fs_1.promises.mkdtemp(path.join(os.tmpdir(), 'agentide-dirstore-'));
|
|
234
|
-
dir = path.join(tempDir, 'provider-sessions');
|
|
235
|
-
});
|
|
236
|
-
teardown(async () => {
|
|
237
|
-
try {
|
|
238
|
-
await fs_1.promises.rm(tempDir, { recursive: true, force: true });
|
|
239
|
-
}
|
|
240
|
-
catch {
|
|
241
|
-
// Ignore cleanup errors
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
const jsonFiles = async () => (await fs_1.promises.readdir(dir)).filter((f) => f.endsWith('.json'));
|
|
245
|
-
test('stores each entry in its own file and round-trips the merged map', async () => {
|
|
246
|
-
const store = new interfaces_1.DirectorySessionStore(dir);
|
|
247
|
-
await store.set(KEY, { a: { id: 1 }, b: { id: 2 } });
|
|
248
|
-
assert.strictEqual((await jsonFiles()).length, 2);
|
|
249
|
-
// A fresh instance loads the sharded files back into the merged map.
|
|
250
|
-
const store2 = new interfaces_1.DirectorySessionStore(dir);
|
|
251
|
-
assert.deepStrictEqual(store2.get(KEY), { a: { id: 1 }, b: { id: 2 } });
|
|
252
|
-
});
|
|
253
|
-
test('writes only changed entries and deletes removed ones', async () => {
|
|
254
|
-
const store = new interfaces_1.DirectorySessionStore(dir);
|
|
255
|
-
await store.set(KEY, { a: { id: 1 }, b: { id: 2 } });
|
|
256
|
-
// Drop b (as a prune would), keep a.
|
|
257
|
-
await store.set(KEY, { a: { id: 1 } });
|
|
258
|
-
assert.strictEqual((await jsonFiles()).length, 1);
|
|
259
|
-
const store2 = new interfaces_1.DirectorySessionStore(dir);
|
|
260
|
-
assert.deepStrictEqual(store2.get(KEY), { a: { id: 1 } });
|
|
261
|
-
});
|
|
262
|
-
test('migrates a legacy single-file store on first load', async () => {
|
|
263
|
-
// Legacy FileSessionStore layout: { <logicalKey>: { <entryKey>: value } }
|
|
264
|
-
await fs_1.promises.mkdir(tempDir, { recursive: true });
|
|
265
|
-
await fs_1.promises.writeFile(`${dir}.json`, JSON.stringify({ [KEY]: { old: { id: 9 } } }), 'utf-8');
|
|
266
|
-
const store = new interfaces_1.DirectorySessionStore(dir);
|
|
267
|
-
assert.deepStrictEqual(store.get(KEY), { old: { id: 9 } });
|
|
268
|
-
// A subsequent set persists the imported entries as shard files.
|
|
269
|
-
await store.set(KEY, { old: { id: 9 }, fresh: { id: 10 } });
|
|
270
|
-
assert.strictEqual((await jsonFiles()).length, 2);
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
// =============================================================================
|
|
274
|
-
// Config Provider Tests
|
|
275
|
-
// =============================================================================
|
|
276
|
-
suite('Runtime Interfaces - ConfigProvider', () => {
|
|
277
|
-
test('StaticConfigProvider get returns configured values', () => {
|
|
278
|
-
const provider = new interfaces_1.StaticConfigProvider({
|
|
279
|
-
'agentide.claude.maxThinkingTokens': 2048,
|
|
280
|
-
'agentide.permissions.fileAccess': 'workspace-write',
|
|
281
|
-
});
|
|
282
|
-
assert.strictEqual(provider.get('agentide', 'claude.maxThinkingTokens'), 2048);
|
|
283
|
-
assert.strictEqual(provider.get('agentide', 'permissions.fileAccess'), 'workspace-write');
|
|
284
|
-
});
|
|
285
|
-
test('StaticConfigProvider get returns default for missing key', () => {
|
|
286
|
-
const provider = new interfaces_1.StaticConfigProvider({});
|
|
287
|
-
assert.strictEqual(provider.get('agentide', 'missing.key'), undefined);
|
|
288
|
-
assert.strictEqual(provider.get('agentide', 'missing.key', 'default'), 'default');
|
|
289
|
-
});
|
|
290
|
-
test('StaticConfigProvider getCustomProviders returns configured providers', () => {
|
|
291
|
-
const customProviders = {
|
|
292
|
-
'openrouter': {
|
|
293
|
-
baseUrl: 'https://openrouter.ai/api/v1',
|
|
294
|
-
overrideOpenAIBaseUrl: 'https://openrouter.ai/api/v1',
|
|
295
|
-
},
|
|
296
|
-
};
|
|
297
|
-
const provider = new interfaces_1.StaticConfigProvider({}, customProviders);
|
|
298
|
-
const result = provider.getCustomProviders();
|
|
299
|
-
assert.deepStrictEqual(result, customProviders);
|
|
300
|
-
});
|
|
301
|
-
test('StaticConfigProvider getEngineSettings returns configured settings', () => {
|
|
302
|
-
const engineSettings = {
|
|
303
|
-
claudeMaxThinkingTokens: 4096,
|
|
304
|
-
claudeCheapModel: 'claude-haiku-4-5-20251001',
|
|
305
|
-
};
|
|
306
|
-
const provider = new interfaces_1.StaticConfigProvider({}, {}, engineSettings);
|
|
307
|
-
const result = provider.getEngineSettings();
|
|
308
|
-
assert.deepStrictEqual(result, engineSettings);
|
|
309
|
-
});
|
|
310
|
-
test('StaticConfigProvider returns empty defaults', () => {
|
|
311
|
-
const provider = new interfaces_1.StaticConfigProvider();
|
|
312
|
-
assert.deepStrictEqual(provider.getCustomProviders(), {});
|
|
313
|
-
assert.deepStrictEqual(provider.getEngineSettings(), {});
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
// =============================================================================
|
|
317
|
-
// Integration Tests
|
|
318
|
-
// =============================================================================
|
|
319
|
-
suite('Runtime Interfaces - Integration', () => {
|
|
320
|
-
test('MemorySessionStore can be used for eval mode (fresh state)', async () => {
|
|
321
|
-
const store = new interfaces_1.MemorySessionStore();
|
|
322
|
-
// Simulate session 1
|
|
323
|
-
await store.set('session-1', { threadId: 'abc123' });
|
|
324
|
-
// Clear for fresh state (eval mode)
|
|
325
|
-
store.clear();
|
|
326
|
-
// Session should be gone
|
|
327
|
-
assert.strictEqual(store.get('session-1'), undefined);
|
|
328
|
-
});
|
|
329
|
-
test('AutoApprovePermissionHandler is suitable for eval mode', async () => {
|
|
330
|
-
const handler = new interfaces_1.AutoApprovePermissionHandler();
|
|
331
|
-
// All permissions should be auto-approved
|
|
332
|
-
const dangerous = await handler.requestPermission({ toolName: 'Bash', toolInput: { command: 'rm -rf /' } });
|
|
333
|
-
assert.strictEqual(dangerous.behavior, 'allow');
|
|
334
|
-
const write = await handler.requestPermission({ toolName: 'Write', toolInput: { path: '/etc/passwd' } });
|
|
335
|
-
assert.strictEqual(write.behavior, 'allow');
|
|
336
|
-
});
|
|
337
|
-
test('StaticConfigProvider can override VS Code settings', () => {
|
|
338
|
-
// This simulates eval mode where we might want different settings
|
|
339
|
-
const evalConfig = new interfaces_1.StaticConfigProvider({
|
|
340
|
-
'agentide.permissions.fileAccess': 'full',
|
|
341
|
-
}, {}, {
|
|
342
|
-
claudeMaxThinkingTokens: 8192,
|
|
343
|
-
claudeCheapModel: 'claude-haiku-4-5-20251001',
|
|
344
|
-
});
|
|
345
|
-
assert.strictEqual(evalConfig.get('agentide', 'permissions.fileAccess'), 'full');
|
|
346
|
-
assert.strictEqual(evalConfig.getEngineSettings().claudeMaxThinkingTokens, 8192);
|
|
347
|
-
assert.strictEqual(evalConfig.getEngineSettings().claudeCheapModel, 'claude-haiku-4-5-20251001');
|
|
348
|
-
});
|
|
349
|
-
});
|