@agenthippo-ai/agenthippo 1.110.9 → 1.110.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/agentpack/types.js +2 -5
- package/out/analytics/dashboard/artifactManager.js +2 -439
- package/out/analytics/dashboard/fleetDisplayUtils.js +2 -162
- package/out/analytics/dashboard/fleetOrchestrator.js +3 -142
- package/out/analytics/dashboard/fleetRegistry.js +2 -79
- package/out/analytics/dashboard/fleetRowDefaults.js +2 -87
- package/out/analytics/dashboard/fleetScriptAdapter.js +2 -146
- package/out/analytics/dashboard/fleetTypes.js +2 -29
- package/out/analytics/dashboard/index.js +2 -17
- package/out/analytics/dashboard/indexingService.js +2 -422
- package/out/analytics/dashboard/localFleetAdapter.js +2 -222
- package/out/analytics/dashboard/performanceMonitor.js +5 -76
- package/out/analytics/dashboard/processManager.js +2 -209
- package/out/analytics/dashboard/provider.js +38 -3817
- package/out/analytics/dashboard/queryRunner.js +62 -750
- package/out/analytics/dashboard/scheduledFleetStorage.js +2 -241
- package/out/analytics/dashboard/sessionJsonlFleet.js +3 -204
- package/out/analytics/dashboard/teamViewDiscovery.js +2 -106
- package/out/analytics/dashboard/webview/panel.js +34 -2318
- package/out/analytics/dashboard/webview/runtime-bridge.js +2 -82
- package/out/analytics/lifecycle.js +2 -43
- package/out/analytics/service.js +8 -1277
- package/out/auth/authBaseUrl.js +2 -59
- package/out/auth/bootstrapApply.js +2 -71
- package/out/auth/brokerClient.js +2 -160
- package/out/auth/callbackUri.js +2 -59
- package/out/auth/githubStoreGate.js +2 -70
- package/out/auth/loopbackAuthServer.js +4 -159
- package/out/auth/onboardingPrompt.js +2 -112
- package/out/auth/pkce.js +2 -9
- package/out/auth/provider.js +2 -226
- package/out/auth/sessionStore.js +2 -156
- package/out/auth/signInFlow.js +2 -183
- package/out/cli/index.js +619 -551
- package/out/cli/run-custom-engine-runner.js +3 -318
- package/out/cli/vscode-shim.js +2 -86
- package/out/engines/factory.js +2 -45
- package/out/engines/types.js +2 -17
- package/out/examples/run-headless-repl.js +6 -286
- package/out/examples/run-headless.js +2 -187
- package/out/extension.js +32 -4473
- package/out/gateway/gatewayRouteIndex.js +6 -371
- package/out/gateway/gatewaySessionStore.js +3 -243
- package/out/gateway/index.js +2 -31
- package/out/gateway/resetMappings.js +2 -52
- package/out/gateway/service.js +5 -1249
- package/out/mcp/publish.js +2 -143
- package/out/remote/handleRemoteChat.js +2 -169
- package/out/remote/remotePackStatusBar.js +3 -103
- package/out/remote/remoteTrust.js +6 -277
- package/out/remote/serveClient.js +4 -277
- package/out/remoteSkills.js +3 -191
- package/out/runtime/index.js +2 -32
- package/out/runtime/vscode/index.js +2 -20
- package/out/runtime/vscode/vscode-config-provider.js +2 -77
- package/out/runtime/vscode/vscode-edit-tracker.js +2 -122
- package/out/runtime/vscode/vscode-logger.js +2 -30
- package/out/runtime/vscode/vscode-permission-handler.js +2 -72
- package/out/scripts/agentide-litellm.sh +0 -1
- package/out/scripts/agentide_litellm_hooks_v1.py +170 -418
- package/out/scripts/analytics/agent-fleet-widget.js +18 -257
- package/out/scripts/analytics/agentide-litellm-otel.config.yaml +4 -4
- package/out/scripts/analytics/duckdbLocator.js +2 -28
- package/out/scripts/analytics/generate-default-charts.py +43 -323
- package/out/scripts/analytics/hotspot-analysis-widget.js +4 -430
- package/out/scripts/analytics/index-traces.py +78 -1036
- package/out/scripts/analytics/session-comparison-widget.js +26 -472
- package/out/scripts/analytics/session-timeline-widget.js +25 -846
- package/out/scripts/analytics/setup-analytics.ps1 +8 -1
- package/out/scripts/analytics/setup-analytics.sh +13 -2
- package/out/scripts/analytics/token-cost-flamegraph-widget.js +4 -461
- package/out/scripts/analytics/token-cost-trend-widget.js +4 -534
- package/out/scripts/analytics/workflows-collector.cjs +4 -314
- package/out/scripts/analytics/workflows-daemon.mjs +9 -185
- package/out/scripts/analytics/workflows-widget.cjs +15 -159
- package/out/scripts/analytics/wow-model-widget.js +10 -120
- package/out/scripts/vendor-tools.mjs +2 -233
- package/out/skills/publish.js +3 -178
- package/out/store/github/setup.js +7 -212
- package/out/store/oramaIndex.js +2 -884
- package/out/sync.js +26 -1829
- package/out/terminalLogger.js +5 -358
- package/out/utils/pathSafety.js +2 -60
- package/out/utils/pythonRunner.js +4 -258
- package/out/utils/toolPath.js +2 -83
- package/out/workspaceFolders.js +2 -59
- package/package.json +1 -1
- package/out/agentpack/github.js +0 -547
- package/out/agentpack/index.js +0 -67
- package/out/agentpack/install.js +0 -297
- package/out/agentpack/manager.js +0 -441
- package/out/agentpack/manifest.js +0 -135
- package/out/agentpack/paths.js +0 -498
- package/out/agentpack/publish.js +0 -248
- package/out/agentpack/stores.js +0 -554
- package/out/analytics/dashboard/fleetStatusUtils.js +0 -30
- package/out/analytics/dashboard/fleetTitleUtils.js +0 -68
- package/out/analytics/dashboard/refreshPolicy.js +0 -16
- package/out/analytics/dashboard/scheduledFleetFingerprint.js +0 -22
- package/out/analytics/dashboard/scheduledFleetUtils.js +0 -22
- package/out/analytics/dashboard/sessionEventFleetStats.js +0 -118
- package/out/analytics/dashboard/viewsConfigMerge.js +0 -221
- package/out/analytics/dashboard/webview/codicon.ttf +0 -0
- package/out/analytics/identity.js +0 -0
- package/out/analytics/sessionEvents.js +0 -323
- package/out/auth/callbackUriParse.js +0 -59
- package/out/auth/types.js +0 -12
- package/out/auth-broker/config.js +0 -112
- package/out/auth-broker/jwt.js +0 -105
- package/out/auth-broker/pkce.js +0 -59
- package/out/auth-broker/server.js +0 -677
- package/out/auth-broker/store.js +0 -275
- package/out/authority/warrant.js +0 -206
- package/out/base-prompts/mcp-servers/.mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/README.md +0 -142
- package/out/base-prompts/mcp-servers/langfuse-analytics/mcp.json +0 -13
- package/out/base-prompts/mcp-servers/langfuse-analytics/package-lock.json +0 -1192
- package/out/base-prompts/mcp-servers/langfuse-analytics/package.json +0 -23
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/run-with-env.sh +0 -12
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/sdk-test.js +0 -102
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/simple-test.js +0 -137
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-client.js +0 -118
- package/out/base-prompts/mcp-servers/langfuse-analytics/scripts/test-server.js +0 -209
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/client.ts +0 -431
- package/out/base-prompts/mcp-servers/langfuse-analytics/src/index.ts +0 -270
- package/out/base-prompts/mcp-servers/langfuse-analytics/tsconfig.json +0 -18
- package/out/base-prompts/rules/AGENTS.md +0 -204
- package/out/base-prompts/skills/agent-browser/SKILL.md +0 -102
- package/out/base-prompts/skills/agent-builder/SKILL.md +0 -73
- package/out/base-prompts/skills/agent-builder/references/agent-pack.md +0 -63
- package/out/base-prompts/skills/agent-builder/references/crewai.md +0 -66
- package/out/base-prompts/skills/agent-builder/references/langchain.md +0 -60
- package/out/base-prompts/skills/agent-builder/references/raw-sdk.md +0 -73
- package/out/base-prompts/skills/agent-engine-creator/SKILL.md +0 -586
- package/out/base-prompts/skills/agent-engine-installer/SKILL.md +0 -106
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.mjs +0 -259
- package/out/base-prompts/skills/agent-engine-installer/scripts/install-engine.ps1 +0 -189
- package/out/base-prompts/skills/agenthippo-cli/SKILL.md +0 -69
- package/out/base-prompts/skills/agenthippo-cli/scripts/install.sh +0 -63
- package/out/base-prompts/skills/agentpack-creator/SKILL.md +0 -375
- package/out/base-prompts/skills/agentpack-creator/references/agent-templates.md +0 -261
- package/out/base-prompts/skills/agentpack-creator/references/agents-md-guide.md +0 -195
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack.py +0 -391
- package/out/base-prompts/skills/agentpack-creator/scripts/init_pack_test.py +0 -294
- package/out/base-prompts/skills/agentpack-testbench/SKILL.md +0 -135
- package/out/base-prompts/skills/algorithmic-art/LICENSE.txt +0 -202
- package/out/base-prompts/skills/algorithmic-art/SKILL.md +0 -405
- package/out/base-prompts/skills/algorithmic-art/templates/generator_template.js +0 -223
- package/out/base-prompts/skills/algorithmic-art/templates/viewer.html +0 -599
- package/out/base-prompts/skills/debug-agent/SKILL.md +0 -83
- package/out/base-prompts/skills/desktop-automation/SKILL.md +0 -166
- package/out/base-prompts/skills/desktop-automation/references/agenthippo-ui-recipes.md +0 -441
- package/out/base-prompts/skills/desktop-automation/scripts/windows-desktop-uia.psm1 +0 -280
- package/out/base-prompts/skills/docx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/docx/SKILL.md +0 -197
- package/out/base-prompts/skills/docx/docx-js.md +0 -350
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/docx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/docx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/docx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/docx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/docx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/docx/ooxml.md +0 -610
- package/out/base-prompts/skills/docx/scripts/__init__.py +0 -1
- package/out/base-prompts/skills/docx/scripts/document.py +0 -1276
- package/out/base-prompts/skills/docx/scripts/templates/comments.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/templates/people.xml +0 -3
- package/out/base-prompts/skills/docx/scripts/utilities.py +0 -374
- package/out/base-prompts/skills/gateway-outbound/SKILL.md +0 -136
- package/out/base-prompts/skills/mcp-builder/LICENSE.txt +0 -202
- package/out/base-prompts/skills/mcp-builder/SKILL.md +0 -328
- package/out/base-prompts/skills/mcp-builder/reference/evaluation.md +0 -602
- package/out/base-prompts/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/out/base-prompts/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/out/base-prompts/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/out/base-prompts/skills/mcp-builder/scripts/connections.py +0 -151
- package/out/base-prompts/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/out/base-prompts/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/out/base-prompts/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/out/base-prompts/skills/openclaw/SKILL.md +0 -406
- package/out/base-prompts/skills/openclaw/scripts/run-smoke.sh +0 -61
- package/out/base-prompts/skills/pdf/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pdf/SKILL.md +0 -294
- package/out/base-prompts/skills/pdf/forms.md +0 -205
- package/out/base-prompts/skills/pdf/reference.md +0 -612
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes.py +0 -70
- package/out/base-prompts/skills/pdf/scripts/check_bounding_boxes_test.py +0 -226
- package/out/base-prompts/skills/pdf/scripts/check_fillable_fields.py +0 -12
- package/out/base-prompts/skills/pdf/scripts/convert_pdf_to_images.py +0 -35
- package/out/base-prompts/skills/pdf/scripts/create_validation_image.py +0 -41
- package/out/base-prompts/skills/pdf/scripts/extract_form_field_info.py +0 -152
- package/out/base-prompts/skills/pdf/scripts/fill_fillable_fields.py +0 -114
- package/out/base-prompts/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -108
- package/out/base-prompts/skills/pptx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/pptx/SKILL.md +0 -484
- package/out/base-prompts/skills/pptx/html2pptx.md +0 -625
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/out/base-prompts/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/out/base-prompts/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/out/base-prompts/skills/pptx/ooxml/schemas/mce/mc.xsd +0 -75
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/out/base-prompts/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/out/base-prompts/skills/pptx/ooxml/scripts/pack.py +0 -159
- package/out/base-prompts/skills/pptx/ooxml/scripts/unpack.py +0 -29
- package/out/base-prompts/skills/pptx/ooxml/scripts/validate.py +0 -69
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/__init__.py +0 -15
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/base.py +0 -951
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/docx.py +0 -274
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/pptx.py +0 -315
- package/out/base-prompts/skills/pptx/ooxml/scripts/validation/redlining.py +0 -279
- package/out/base-prompts/skills/pptx/ooxml.md +0 -427
- package/out/base-prompts/skills/pptx/scripts/html2pptx.js +0 -984
- package/out/base-prompts/skills/pptx/scripts/inventory.py +0 -1020
- package/out/base-prompts/skills/pptx/scripts/rearrange.py +0 -231
- package/out/base-prompts/skills/pptx/scripts/replace.py +0 -385
- package/out/base-prompts/skills/pptx/scripts/thumbnail.py +0 -450
- package/out/base-prompts/skills/prompt-lab/SKILL.md +0 -149
- package/out/base-prompts/skills/prompt-lab/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/skill-creator/LICENSE.txt +0 -202
- package/out/base-prompts/skills/skill-creator/SKILL.md +0 -371
- package/out/base-prompts/skills/skill-creator/references/output-patterns.md +0 -82
- package/out/base-prompts/skills/skill-creator/references/workflows.md +0 -28
- package/out/base-prompts/skills/skill-creator/scripts/init_skill.py +0 -303
- package/out/base-prompts/skills/skill-creator/scripts/package_skill.py +0 -110
- package/out/base-prompts/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/out/base-prompts/skills/skill-installer/SKILL.md +0 -251
- package/out/base-prompts/skills/skill-installer/references/store-api.md +0 -219
- package/out/base-prompts/skills/spotlight-dashboard/SKILL.md +0 -83
- package/out/base-prompts/skills/spotlight-insights/SKILL.md +0 -101
- package/out/base-prompts/skills/spotlight-optimize/SKILL.md +0 -93
- package/out/base-prompts/skills/spotlight-optimize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/SKILL.md +0 -314
- package/out/base-prompts/skills/spotlight-query/references/otel-schema.md +0 -163
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/spotlight-query/scripts/query-analytics.test.sh +0 -744
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/sessions/sess-test-1.jsonl +0 -14
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/.duckdb-index.json +0 -7
- package/out/base-prompts/skills/spotlight-query/scripts/test-fixtures/analytics/traces/sample.jsonl +0 -5
- package/out/base-prompts/skills/spotlight-report/SKILL.md +0 -86
- package/out/base-prompts/skills/spotlight-visualize/SKILL.md +0 -92
- package/out/base-prompts/skills/spotlight-visualize/scripts/query-analytics.sh +0 -2551
- package/out/base-prompts/skills/xlsx/LICENSE.txt +0 -30
- package/out/base-prompts/skills/xlsx/SKILL.md +0 -289
- package/out/base-prompts/skills/xlsx/recalc.py +0 -178
- package/out/branding.js +0 -49
- package/out/cli/commands/anywhere.js +0 -66
- package/out/cli/commands/ask.js +0 -246
- package/out/cli/commands/auth-broker.js +0 -24
- package/out/cli/commands/auth.js +0 -219
- package/out/cli/commands/chat.js +0 -357
- package/out/cli/commands/conformance.js +0 -249
- package/out/cli/commands/data-plane.js +0 -67
- package/out/cli/commands/deploy.js +0 -263
- package/out/cli/commands/gateway.js +0 -218
- package/out/cli/commands/idp.js +0 -85
- package/out/cli/commands/pack.js +0 -399
- package/out/cli/commands/probe-custom-engine.js +0 -82
- package/out/cli/commands/sandbox.js +0 -332
- package/out/cli/commands/serve.js +0 -1758
- package/out/cli/commands/store.js +0 -927
- package/out/cli/credential-context.js +0 -91
- package/out/cli/data-plane/broker.js +0 -78
- package/out/cli/data-plane/connector-host.js +0 -121
- package/out/cli/data-plane/egress.js +0 -189
- package/out/cli/data-plane/gateway.js +0 -218
- package/out/cli/data-plane/index.js +0 -152
- package/out/cli/data-plane/registry.js +0 -89
- package/out/cli/data-plane/remote.js +0 -106
- package/out/cli/data-plane/sidecar.js +0 -161
- package/out/cli/deploy/blueprints/registry.js +0 -84
- package/out/cli/deploy/layers/identity.js +0 -172
- package/out/cli/deploy-init.js +0 -3023
- package/out/cli/deps.js +0 -342
- package/out/cli/idp-init.js +0 -338
- package/out/cli/pack-install-ref.js +0 -15
- package/out/cli/pack-loader.js +0 -418
- package/out/cli/pack-runtime.js +0 -61
- package/out/cli/runtime.js +0 -450
- package/out/cli/serve-hardening.js +0 -607
- package/out/cli/state-sync.js +0 -424
- package/out/cli/utils.js +0 -231
- package/out/engines/base.js +0 -188
- package/out/engines/claude.js +0 -1254
- package/out/engines/codex.js +0 -862
- package/out/engines/custom.js +0 -674
- package/out/engines/customEngineIpc.js +0 -95
- package/out/engines/customEngineRunnerEmbed.js +0 -107
- package/out/engines/customRegistry.js +0 -274
- package/out/engines/embeddedCustomEngineRunner.generated.js +0 -9
- package/out/engines/engineApiKey.js +0 -138
- package/out/engines/install.js +0 -372
- package/out/engines/persistentEngineWorker.js +0 -320
- package/out/engines/publish.js +0 -341
- package/out/evidence/sessionShip.js +0 -610
- package/out/gateway/bridge.js +0 -843
- package/out/gateway/cli-agent-id.js +0 -36
- package/out/gateway/client.js +0 -336
- package/out/gateway/client.test.js +0 -395
- package/out/gateway/gateway-scope-errors.js +0 -14
- package/out/gateway/gatewayBackup.js +0 -76
- package/out/gateway/installSource.js +0 -68
- package/out/gateway/lifecycle.js +0 -3190
- package/out/gateway/openclaw-channel-routing.js +0 -317
- package/out/gateway/outboundHandles.js +0 -373
- package/out/gateway/outboundPaths.js +0 -75
- package/out/gateway/outboundSend.js +0 -254
- package/out/gateway/protocol.js +0 -48
- package/out/gateway/secretsPreflight.js +0 -90
- package/out/gateway/sessionRouting.js +0 -77
- package/out/headless/index.js +0 -539
- package/out/headless/sync.js +0 -473
- package/out/live-e2e/mcp-demo/server.mjs +0 -32
- package/out/live-probe/connector.mjs +0 -8
- package/out/live-probe/env-report.mjs +0 -8
- package/out/mcp.js +0 -654
- package/out/pack/caps.js +0 -271
- package/out/pack/governor.js +0 -309
- package/out/pack/lease-schema.js +0 -270
- package/out/pack/lease.js +0 -640
- package/out/pack/reconcile.js +0 -217
- package/out/pack/signature.js +0 -839
- package/out/permissions.js +0 -108
- package/out/permissions.mapping.yaml +0 -68
- package/out/registry/index.js +0 -332
- package/out/runner/host.js +0 -131
- package/out/runner/protocol.js +0 -108
- package/out/runner/remoteEngine.js +0 -130
- package/out/runtime/interfaces/config-provider.js +0 -32
- package/out/runtime/interfaces/edit-tracker.js +0 -24
- package/out/runtime/interfaces/index.js +0 -29
- package/out/runtime/interfaces/logger.js +0 -40
- package/out/runtime/interfaces/permission-handler.js +0 -66
- package/out/runtime/interfaces/session-store.js +0 -342
- package/out/runtime/vscode/vscode-session-store.js +0 -22
- package/out/sandbox/containerDriver.js +0 -570
- package/out/sandbox/processDriver.js +0 -315
- package/out/sandbox/sandboxRunner.js +0 -191
- package/out/sandbox/support.js +0 -301
- package/out/sandbox/types.js +0 -55
- package/out/scripts/analytics/fleet-local-adapter.js +0 -246
- package/out/scripts/analytics/live-fleet-4-collector.cjs +0 -315
- package/out/scripts/analytics/live-fleet-4-daemon.mjs +0 -134
- package/out/scripts/analytics/live-fleet-4-widget.cjs +0 -433
- package/out/scripts/gateway/Dockerfile.serve +0 -45
- package/out/scripts/gateway/docker-serve.sh +0 -248
- package/out/scripts/gateway/setup-gateway-server.ps1 +0 -953
- package/out/scripts/gateway/setup-gateway-server.sh +0 -935
- package/out/session.js +0 -272
- package/out/shared/agentEngines.js +0 -170
- package/out/shared/index.js +0 -109
- package/out/shared/models.js +0 -136
- package/out/shared/providers.js +0 -205
- package/out/spotlight/install.js +0 -345
- package/out/spotlight/publish.js +0 -544
- package/out/spotlight/yaml.js +0 -31
- package/out/store/index.js +0 -786
- package/out/store/shared.js +0 -241
- package/out/test/agentEnvFile.test.js +0 -97
- package/out/test/agentYaml.test.js +0 -373
- package/out/test/agentpack.test.js +0 -639
- package/out/test/analytics-lifecycle.test.js +0 -174
- package/out/test/analytics.test.js +0 -756
- package/out/test/auth-baseurl.test.js +0 -132
- package/out/test/auth-bootstrapApply.test.js +0 -123
- package/out/test/auth-broker-hardening.test.js +0 -227
- package/out/test/auth-broker.test.js +0 -541
- package/out/test/auth-callback.test.js +0 -62
- package/out/test/blueprint-registry.test.js +0 -105
- package/out/test/branding.test.js +0 -242
- package/out/test/caps-governor.test.js +0 -455
- package/out/test/cli-agent-id.test.js +0 -55
- package/out/test/codex-new-file-survival.test.js +0 -119
- package/out/test/configuration-scopes.test.js +0 -131
- package/out/test/credential-context.test.js +0 -160
- package/out/test/custom-env-layering.test.js +0 -151
- package/out/test/customEngineInstall.test.js +0 -100
- package/out/test/customRegistry.test.js +0 -122
- package/out/test/data-plane-engine-wiring.test.js +0 -250
- package/out/test/data-plane.test.js +0 -311
- package/out/test/deploy-init.test.js +0 -854
- package/out/test/deps-auto-install.test.js +0 -81
- package/out/test/egress-broker.test.js +0 -172
- package/out/test/engine-integration.test.js +0 -297
- package/out/test/enginePaths.test.js +0 -195
- package/out/test/enginePublish.test.js +0 -82
- package/out/test/fleetDisplayUtils.test.js +0 -100
- package/out/test/gateway-client.test.js +0 -409
- package/out/test/gateway-install-source.test.js +0 -111
- package/out/test/gateway-lifecycle.test.js +0 -608
- package/out/test/gateway-outbound.test.js +0 -538
- package/out/test/gateway-reset-mappings.test.js +0 -221
- package/out/test/gateway-route-index.test.js +0 -235
- package/out/test/gateway-secrets-preflight.test.js +0 -127
- package/out/test/gateway-session-routing.test.js +0 -65
- package/out/test/gateway-session-store.test.js +0 -216
- package/out/test/github.test.js +0 -232
- package/out/test/governor-hardening.test.js +0 -217
- package/out/test/headless-sync.test.js +0 -301
- package/out/test/helpers/manifest-fixtures.js +0 -27
- package/out/test/idp-init.test.js +0 -151
- package/out/test/lease-signature.test.js +0 -357
- package/out/test/lease-trust-root.test.js +0 -273
- package/out/test/lease-validation.test.js +0 -169
- package/out/test/lease.test.js +0 -114
- package/out/test/mcp-obo.test.js +0 -107
- package/out/test/mcp.test.js +0 -389
- package/out/test/model-routing.test.js +0 -133
- package/out/test/openclaw-channel-routing.test.js +0 -191
- package/out/test/pack-admission.test.js +0 -216
- package/out/test/pack-digest-parity.test.js +0 -140
- package/out/test/pack-reconcile.test.js +0 -183
- package/out/test/pack-signature-artifact.test.js +0 -103
- package/out/test/pack-signature.test.js +0 -176
- package/out/test/pack-trust-root.test.js +0 -202
- package/out/test/pathSafety.test.js +0 -63
- package/out/test/permissions.test.js +0 -175
- package/out/test/persistent-engine-worker.test.js +0 -220
- package/out/test/refreshPolicy.test.js +0 -60
- package/out/test/registry.test.js +0 -351
- package/out/test/remote-trust.test.js +0 -242
- package/out/test/runner-protocol.test.js +0 -249
- package/out/test/runtime.test.js +0 -349
- package/out/test/sandbox-driver.test.js +0 -553
- package/out/test/sandbox-hardening.test.js +0 -395
- package/out/test/sandbox-runner.test.js +0 -343
- package/out/test/scheduledFleetStorage.test.js +0 -72
- package/out/test/serve-gateway-turn.test.js +0 -267
- package/out/test/serve-hardening.test.js +0 -418
- package/out/test/serveClient.test.js +0 -209
- package/out/test/sessionJsonlFleet.test.js +0 -78
- package/out/test/sessionShip.test.js +0 -560
- package/out/test/shared.test.js +0 -173
- package/out/test/skills-mcp.test.js +0 -299
- package/out/test/spotlightPublish.test.js +0 -327
- package/out/test/spotlightYaml.test.js +0 -58
- package/out/test/state-sync-peer.test.js +0 -156
- package/out/test/store-install-safe.test.js +0 -69
- package/out/test/store.test.js +0 -331
- package/out/test/stores.test.js +0 -504
- package/out/test/sync-switch.test.js +0 -251
- package/out/test/teamViewDiscovery.test.js +0 -90
- package/out/test/tls-bypass.test.js +0 -90
- package/out/test/toolPath.test.js +0 -120
- package/out/test/utils.test.js +0 -308
- package/out/test/viewsConfigMerge.test.js +0 -180
- package/out/test/warrant.test.js +0 -138
- package/out/test/windows-command-line.test.js +0 -75
- package/out/utils/agentEnvFile.js +0 -131
- package/out/utils/binary.js +0 -175
- package/out/utils/index.js +0 -37
- package/out/utils/network.js +0 -74
- package/out/utils/paths.js +0 -116
- package/out/utils/pid.js +0 -180
- package/out/utils/resolveNodeBinary.js +0 -168
- package/out/utils/windowsCommandLine.js +0 -29
- package/out/utils.js +0 -968
package/out/test/utils.test.js
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Utils Test Suite
|
|
4
|
-
*
|
|
5
|
-
* Tests for shared utilities: PID file management, path utilities, network probing, binary finding.
|
|
6
|
-
*--------------------------------------------------------------------------------------------*/
|
|
7
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
-
if (k2 === undefined) k2 = k;
|
|
9
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
-
}
|
|
13
|
-
Object.defineProperty(o, k2, desc);
|
|
14
|
-
}) : (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
o[k2] = m[k];
|
|
17
|
-
}));
|
|
18
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
-
}) : function(o, v) {
|
|
21
|
-
o["default"] = v;
|
|
22
|
-
});
|
|
23
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
-
var ownKeys = function(o) {
|
|
25
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
-
var ar = [];
|
|
27
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
-
return ar;
|
|
29
|
-
};
|
|
30
|
-
return ownKeys(o);
|
|
31
|
-
};
|
|
32
|
-
return function (mod) {
|
|
33
|
-
if (mod && mod.__esModule) return mod;
|
|
34
|
-
var result = {};
|
|
35
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
-
__setModuleDefault(result, mod);
|
|
37
|
-
return result;
|
|
38
|
-
};
|
|
39
|
-
})();
|
|
40
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
-
require("mocha");
|
|
42
|
-
const assert = __importStar(require("assert"));
|
|
43
|
-
const fs = __importStar(require("fs"));
|
|
44
|
-
const path = __importStar(require("path"));
|
|
45
|
-
const os = __importStar(require("os"));
|
|
46
|
-
const index_1 = require("../utils/index");
|
|
47
|
-
const branding_1 = require("../branding");
|
|
48
|
-
const utils_1 = require("../utils");
|
|
49
|
-
function setupPidTestDir() {
|
|
50
|
-
const ctx = { testDir: '', testPidFile: '' };
|
|
51
|
-
suiteSetup(() => {
|
|
52
|
-
ctx.testDir = fs.mkdtempSync(path.join(os.tmpdir(), 'agentide-pid-test-'));
|
|
53
|
-
ctx.testPidFile = path.join(ctx.testDir, 'test.pid');
|
|
54
|
-
});
|
|
55
|
-
suiteTeardown(() => {
|
|
56
|
-
if (ctx.testDir) {
|
|
57
|
-
fs.rmSync(ctx.testDir, { recursive: true, force: true, maxRetries: 5, retryDelay: 50 });
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
teardown(() => {
|
|
61
|
-
try {
|
|
62
|
-
fs.unlinkSync(ctx.testPidFile);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// File may not exist
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
return ctx;
|
|
69
|
-
}
|
|
70
|
-
suite('PID Utilities - isProcessRunning', () => {
|
|
71
|
-
test('returns true for current process', () => {
|
|
72
|
-
assert.strictEqual((0, index_1.isProcessRunning)(process.pid), true);
|
|
73
|
-
});
|
|
74
|
-
test('returns false for non-existent PID', () => {
|
|
75
|
-
assert.strictEqual((0, index_1.isProcessRunning)(999999999), false);
|
|
76
|
-
});
|
|
77
|
-
test('handles edge case PIDs gracefully', () => {
|
|
78
|
-
// On Unix, kill(0, 0) sends to current process group (returns true)
|
|
79
|
-
// kill(-1, 0) sends to all processes user can signal (returns true)
|
|
80
|
-
// This test just ensures we don't throw, behavior may vary by platform
|
|
81
|
-
const zeroResult = (0, index_1.isProcessRunning)(0);
|
|
82
|
-
const negResult = (0, index_1.isProcessRunning)(-1);
|
|
83
|
-
assert.strictEqual(typeof zeroResult, 'boolean');
|
|
84
|
-
assert.strictEqual(typeof negResult, 'boolean');
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
suite('PID Utilities - isProcessRunningAsync', () => {
|
|
88
|
-
test('returns true for current process', async () => {
|
|
89
|
-
assert.strictEqual(await (0, index_1.isProcessRunningAsync)(process.pid), true);
|
|
90
|
-
});
|
|
91
|
-
test('returns false for non-existent PID', async () => {
|
|
92
|
-
assert.strictEqual(await (0, index_1.isProcessRunningAsync)(999999999), false);
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
suite('PID Utilities - writePidFile / readPidFile', () => {
|
|
96
|
-
const ctx = setupPidTestDir();
|
|
97
|
-
test('writes and reads PID file correctly', async () => {
|
|
98
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, 12345);
|
|
99
|
-
const data = await (0, index_1.readPidFile)(ctx.testPidFile);
|
|
100
|
-
assert.strictEqual(data?.pid, 12345);
|
|
101
|
-
assert.deepStrictEqual(data?.metadata, []);
|
|
102
|
-
});
|
|
103
|
-
test('writes and reads PID file with metadata', async () => {
|
|
104
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, 12345, 'otel', 'url=http://localhost:4000');
|
|
105
|
-
const data = await (0, index_1.readPidFile)(ctx.testPidFile);
|
|
106
|
-
assert.strictEqual(data?.pid, 12345);
|
|
107
|
-
assert.deepStrictEqual(data?.metadata, ['otel', 'url=http://localhost:4000']);
|
|
108
|
-
});
|
|
109
|
-
test('returns null for non-existent file', async () => {
|
|
110
|
-
const data = await (0, index_1.readPidFile)('/nonexistent/path/file.pid');
|
|
111
|
-
assert.strictEqual(data, null);
|
|
112
|
-
});
|
|
113
|
-
test('returns null for invalid PID file content', async () => {
|
|
114
|
-
fs.writeFileSync(ctx.testPidFile, 'not-a-number\n');
|
|
115
|
-
const data = await (0, index_1.readPidFile)(ctx.testPidFile);
|
|
116
|
-
assert.strictEqual(data, null);
|
|
117
|
-
});
|
|
118
|
-
test('creates parent directories if needed', async () => {
|
|
119
|
-
const nestedPidFile = path.join(ctx.testDir, 'nested', 'dir', 'test.pid');
|
|
120
|
-
await (0, index_1.writePidFile)(nestedPidFile, 12345);
|
|
121
|
-
const data = await (0, index_1.readPidFile)(nestedPidFile);
|
|
122
|
-
assert.strictEqual(data?.pid, 12345);
|
|
123
|
-
fs.rmSync(path.join(ctx.testDir, 'nested'), { recursive: true, force: true });
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
suite('PID Utilities - removePidFile', () => {
|
|
127
|
-
const ctx = setupPidTestDir();
|
|
128
|
-
test('removes existing PID file', async () => {
|
|
129
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, 12345);
|
|
130
|
-
assert.strictEqual(fs.existsSync(ctx.testPidFile), true);
|
|
131
|
-
await (0, index_1.removePidFile)(ctx.testPidFile);
|
|
132
|
-
assert.strictEqual(fs.existsSync(ctx.testPidFile), false);
|
|
133
|
-
});
|
|
134
|
-
test('does not throw for non-existent file', async () => {
|
|
135
|
-
await (0, index_1.removePidFile)('/nonexistent/path/file.pid');
|
|
136
|
-
// Should not throw
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
suite('PID Utilities - isPidFileProcessRunning', () => {
|
|
140
|
-
const ctx = setupPidTestDir();
|
|
141
|
-
test('returns true when PID file contains current process', async () => {
|
|
142
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, process.pid);
|
|
143
|
-
assert.strictEqual(await (0, index_1.isPidFileProcessRunning)(ctx.testPidFile), true);
|
|
144
|
-
});
|
|
145
|
-
test('returns false when PID file contains non-existent process', async () => {
|
|
146
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, 999999999);
|
|
147
|
-
assert.strictEqual(await (0, index_1.isPidFileProcessRunning)(ctx.testPidFile), false);
|
|
148
|
-
});
|
|
149
|
-
test('returns false when PID file does not exist', async () => {
|
|
150
|
-
assert.strictEqual(await (0, index_1.isPidFileProcessRunning)('/nonexistent/path/file.pid'), false);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
suite('PID Utilities - checkPidFileWithCleanup', () => {
|
|
154
|
-
const ctx = setupPidTestDir();
|
|
155
|
-
test('returns PID data when process is running', async () => {
|
|
156
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, process.pid, 'metadata');
|
|
157
|
-
const result = await (0, index_1.checkPidFileWithCleanup)(ctx.testPidFile);
|
|
158
|
-
assert.strictEqual(result?.pid, process.pid);
|
|
159
|
-
assert.deepStrictEqual(result?.metadata, ['metadata']);
|
|
160
|
-
assert.strictEqual(fs.existsSync(ctx.testPidFile), true);
|
|
161
|
-
});
|
|
162
|
-
test('returns null and cleans up stale PID file', async () => {
|
|
163
|
-
await (0, index_1.writePidFile)(ctx.testPidFile, 999999999);
|
|
164
|
-
const result = await (0, index_1.checkPidFileWithCleanup)(ctx.testPidFile);
|
|
165
|
-
assert.strictEqual(result, null);
|
|
166
|
-
assert.strictEqual(fs.existsSync(ctx.testPidFile), false);
|
|
167
|
-
});
|
|
168
|
-
test('returns null when PID file does not exist', async () => {
|
|
169
|
-
const result = await (0, index_1.checkPidFileWithCleanup)('/nonexistent/path/file.pid');
|
|
170
|
-
assert.strictEqual(result, null);
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
// =============================================================================
|
|
174
|
-
// Path Utilities Tests
|
|
175
|
-
// =============================================================================
|
|
176
|
-
suite('Path Utilities - getAgentideHome', () => {
|
|
177
|
-
test('returns home directory with AGENTIDE_DIR_NAME', () => {
|
|
178
|
-
const result = (0, index_1.getAgentideHome)();
|
|
179
|
-
assert.strictEqual(result, path.join(os.homedir(), branding_1.AGENTIDE_DIR_NAME));
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
suite('Path Utilities - getAgentidePath', () => {
|
|
183
|
-
test('appends subpaths to home directory', () => {
|
|
184
|
-
const result = (0, index_1.getAgentidePath)('subdir', 'file.txt');
|
|
185
|
-
assert.strictEqual(result, path.join(os.homedir(), branding_1.AGENTIDE_DIR_NAME, 'subdir', 'file.txt'));
|
|
186
|
-
});
|
|
187
|
-
test('returns home directory when called with no args', () => {
|
|
188
|
-
assert.strictEqual((0, index_1.getAgentidePath)(), (0, index_1.getAgentideHome)());
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
suite('Path Utilities - PID_FILES', () => {
|
|
192
|
-
test('returns correct gateway PID file path', () => {
|
|
193
|
-
assert.strictEqual(index_1.PID_FILES.gateway(), (0, index_1.getAgentidePath)('gateway.pid'));
|
|
194
|
-
});
|
|
195
|
-
test('returns correct litellm PID file path', () => {
|
|
196
|
-
assert.strictEqual(index_1.PID_FILES.litellm(), (0, index_1.getAgentidePath)('litellm.pid'));
|
|
197
|
-
});
|
|
198
|
-
test('returns correct otelcol PID file path', () => {
|
|
199
|
-
assert.strictEqual(index_1.PID_FILES.otelcol(), (0, index_1.getAgentidePath)('analytics', 'otelcol.pid'));
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
suite('Path Utilities - DIRS', () => {
|
|
203
|
-
test('returns correct analytics directory', () => {
|
|
204
|
-
assert.strictEqual(index_1.DIRS.analytics(), (0, index_1.getAgentidePath)('analytics'));
|
|
205
|
-
});
|
|
206
|
-
test('returns correct credentials directory', () => {
|
|
207
|
-
assert.strictEqual(index_1.DIRS.credentials(), (0, index_1.getAgentidePath)('credentials'));
|
|
208
|
-
});
|
|
209
|
-
test('returns correct sessions directory', () => {
|
|
210
|
-
assert.strictEqual(index_1.DIRS.sessions(), (0, index_1.getAgentidePath)('sessions'));
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
// =============================================================================
|
|
214
|
-
// Network Utilities Tests
|
|
215
|
-
// =============================================================================
|
|
216
|
-
suite('Network Utilities - probePort', () => {
|
|
217
|
-
test('returns false for unused port', async () => {
|
|
218
|
-
const unusedPort = 59999;
|
|
219
|
-
const result = await (0, index_1.probePort)(unusedPort, '127.0.0.1', 500);
|
|
220
|
-
assert.strictEqual(result, false);
|
|
221
|
-
});
|
|
222
|
-
test('times out gracefully', async () => {
|
|
223
|
-
const start = Date.now();
|
|
224
|
-
await (0, index_1.probePort)(59998, '127.0.0.1', 100);
|
|
225
|
-
const elapsed = Date.now() - start;
|
|
226
|
-
assert.ok(elapsed < 500, `Expected < 500ms but took ${elapsed}ms`);
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
// =============================================================================
|
|
230
|
-
// Binary Utilities Tests
|
|
231
|
-
// =============================================================================
|
|
232
|
-
suite('Binary Utilities - findBinary', () => {
|
|
233
|
-
test('finds node binary', async () => {
|
|
234
|
-
const result = await (0, index_1.findBinary)('node');
|
|
235
|
-
assert.ok(result, 'node binary should be found');
|
|
236
|
-
assert.ok(result.includes('node'), `Expected path to contain 'node', got: ${result}`);
|
|
237
|
-
});
|
|
238
|
-
test('returns undefined for non-existent binary', async () => {
|
|
239
|
-
const result = await (0, index_1.findBinary)('nonexistent-binary-xyz-12345');
|
|
240
|
-
assert.strictEqual(result, undefined);
|
|
241
|
-
});
|
|
242
|
-
});
|
|
243
|
-
suite('Binary Utilities - findBinaryCached', () => {
|
|
244
|
-
setup(() => {
|
|
245
|
-
(0, index_1.clearBinaryCache)();
|
|
246
|
-
});
|
|
247
|
-
test('caches binary path', async () => {
|
|
248
|
-
const result1 = await (0, index_1.findBinaryCached)('node');
|
|
249
|
-
const result2 = await (0, index_1.findBinaryCached)('node');
|
|
250
|
-
assert.strictEqual(result1, result2);
|
|
251
|
-
});
|
|
252
|
-
test('checks common paths if not on PATH', async () => {
|
|
253
|
-
// Use a unique name to avoid cache collision
|
|
254
|
-
const uniqueName = 'nonexistent-binary-' + Date.now();
|
|
255
|
-
// Use /bin/sh on macOS, /usr/bin/env on Linux (both are reliable)
|
|
256
|
-
const testPath = process.platform === 'darwin' ? '/bin/sh' : '/usr/bin/env';
|
|
257
|
-
const result = await (0, index_1.findBinaryCached)(uniqueName, [testPath]);
|
|
258
|
-
if (process.platform !== 'win32') {
|
|
259
|
-
assert.strictEqual(result, testPath);
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
suite('Binary Utilities - getCommonBinaryPaths', () => {
|
|
264
|
-
test('returns array of paths', () => {
|
|
265
|
-
const paths = (0, index_1.getCommonBinaryPaths)('openclaw');
|
|
266
|
-
assert.ok(Array.isArray(paths));
|
|
267
|
-
assert.ok(paths.length > 0);
|
|
268
|
-
});
|
|
269
|
-
test('includes platform-specific paths', () => {
|
|
270
|
-
const paths = (0, index_1.getCommonBinaryPaths)('openclaw');
|
|
271
|
-
if (process.platform === 'win32') {
|
|
272
|
-
assert.ok(paths.some((p) => p.includes('AppData')));
|
|
273
|
-
}
|
|
274
|
-
else if (process.platform === 'darwin') {
|
|
275
|
-
assert.ok(paths.some((p) => p.includes('Library/pnpm')));
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
assert.ok(paths.some((p) => p.includes('.local/share/pnpm')));
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
suite('Binary Utilities - clearBinaryCache', () => {
|
|
283
|
-
test('clears specific binary from cache', async () => {
|
|
284
|
-
await (0, index_1.findBinaryCached)('node');
|
|
285
|
-
(0, index_1.clearBinaryCache)('node');
|
|
286
|
-
await (0, index_1.findBinaryCached)('node');
|
|
287
|
-
// Should not throw
|
|
288
|
-
});
|
|
289
|
-
test('clears all binaries from cache', async () => {
|
|
290
|
-
await (0, index_1.findBinaryCached)('node');
|
|
291
|
-
(0, index_1.clearBinaryCache)();
|
|
292
|
-
await (0, index_1.findBinaryCached)('node');
|
|
293
|
-
// Should not throw
|
|
294
|
-
});
|
|
295
|
-
});
|
|
296
|
-
suite('File Change Kind Normalization', () => {
|
|
297
|
-
test('normalizes add/create to create', () => {
|
|
298
|
-
assert.strictEqual((0, utils_1.normalizeFileChangeKind)('add'), 'create');
|
|
299
|
-
assert.strictEqual((0, utils_1.normalizeFileChangeKind)('create'), 'create');
|
|
300
|
-
});
|
|
301
|
-
test('normalizes update/modify to modify', () => {
|
|
302
|
-
assert.strictEqual((0, utils_1.normalizeFileChangeKind)('update'), 'modify');
|
|
303
|
-
assert.strictEqual((0, utils_1.normalizeFileChangeKind)('modify'), 'modify');
|
|
304
|
-
});
|
|
305
|
-
test('returns undefined for unknown kinds', () => {
|
|
306
|
-
assert.strictEqual((0, utils_1.normalizeFileChangeKind)('rename'), undefined);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
@@ -1,180 +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 viewsConfigMerge_1 = require("../analytics/dashboard/viewsConfigMerge");
|
|
42
|
-
function minimalConfig(activeViewId, views) {
|
|
43
|
-
return { version: 1, activeViewId, views };
|
|
44
|
-
}
|
|
45
|
-
suite('viewsConfigMerge', () => {
|
|
46
|
-
test('normalizeDashboardViewId lowercases and sanitizes', () => {
|
|
47
|
-
assert.strictEqual((0, viewsConfigMerge_1.normalizeDashboardViewId)('My View'), 'my-view');
|
|
48
|
-
assert.strictEqual((0, viewsConfigMerge_1.normalizeDashboardViewId)(' '), 'global');
|
|
49
|
-
});
|
|
50
|
-
test('formatDisplayNameForAllocatedViewId adds numeric suffix from id', () => {
|
|
51
|
-
assert.strictEqual((0, viewsConfigMerge_1.formatDisplayNameForAllocatedViewId)('Workspace Copy', 'workspace-copy'), 'Workspace Copy');
|
|
52
|
-
assert.strictEqual((0, viewsConfigMerge_1.formatDisplayNameForAllocatedViewId)('Workspace Copy', 'workspace-copy-3'), 'Workspace Copy 3');
|
|
53
|
-
assert.strictEqual((0, viewsConfigMerge_1.formatDisplayNameForAllocatedViewId)('Workspace Copy', 'workspace-copy-12'), 'Workspace Copy 12');
|
|
54
|
-
});
|
|
55
|
-
test('workspace view overrides global view with same id', () => {
|
|
56
|
-
const global = minimalConfig('global', [
|
|
57
|
-
{ id: 'custom', name: 'Global Name', scope: 'global', scripts: ['a.js'] },
|
|
58
|
-
]);
|
|
59
|
-
const workspace = minimalConfig('workspace', [
|
|
60
|
-
{ id: 'custom', name: 'Workspace Name', scope: 'workspace', scripts: ['b.js'] },
|
|
61
|
-
]);
|
|
62
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, workspace);
|
|
63
|
-
const custom = merged.views.find(v => v.id === 'custom');
|
|
64
|
-
assert.ok(custom);
|
|
65
|
-
assert.strictEqual(custom.name, 'Workspace Name');
|
|
66
|
-
assert.deepStrictEqual(custom.scripts, ['b.js']);
|
|
67
|
-
});
|
|
68
|
-
test('prefers workspace activeViewId over global when workspace yaml exists', () => {
|
|
69
|
-
const global = minimalConfig('custom', [
|
|
70
|
-
{ id: 'custom', name: 'Custom', scope: 'global', scripts: [] },
|
|
71
|
-
{ id: 'global', name: 'Global', scope: 'global', scripts: [] },
|
|
72
|
-
]);
|
|
73
|
-
const workspace = minimalConfig('workspace', [
|
|
74
|
-
{ id: 'workspace', name: 'Workspace', scope: 'workspace', scripts: [] },
|
|
75
|
-
]);
|
|
76
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, workspace);
|
|
77
|
-
assert.strictEqual(merged.activeViewId, 'workspace');
|
|
78
|
-
});
|
|
79
|
-
test('workspace activeViewId may name a global-scoped view in the merged catalog', () => {
|
|
80
|
-
const defaults = (0, viewsConfigMerge_1.createDefaultDashboardViewsConfig)('global');
|
|
81
|
-
const global = minimalConfig('global', defaults.views);
|
|
82
|
-
const workspace = minimalConfig('fleet', defaults.views);
|
|
83
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, workspace, defaults);
|
|
84
|
-
assert.strictEqual(merged.activeViewId, 'fleet');
|
|
85
|
-
});
|
|
86
|
-
test('prefers workspace activeViewId for workspace-scoped custom view over stale global active', () => {
|
|
87
|
-
const global = minimalConfig('global', [
|
|
88
|
-
{ id: 'global', name: 'Global', scope: 'global', scripts: [] },
|
|
89
|
-
]);
|
|
90
|
-
const workspace = minimalConfig('workspace-copy', [
|
|
91
|
-
{ id: 'workspace', name: 'Workspace', scope: 'workspace', scripts: [] },
|
|
92
|
-
{ id: 'workspace-copy', name: 'Workspace Copy', scope: 'workspace', scripts: [] },
|
|
93
|
-
]);
|
|
94
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, workspace);
|
|
95
|
-
assert.strictEqual(merged.activeViewId, 'workspace-copy');
|
|
96
|
-
});
|
|
97
|
-
test('falls back when workspace activeViewId is orphan', () => {
|
|
98
|
-
const defaults = (0, viewsConfigMerge_1.createDefaultDashboardViewsConfig)('global');
|
|
99
|
-
const global = minimalConfig('global', defaults.views);
|
|
100
|
-
const workspace = minimalConfig('deleted-view', defaults.views);
|
|
101
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, workspace, defaults);
|
|
102
|
-
assert.strictEqual(merged.activeViewId, 'workspace');
|
|
103
|
-
});
|
|
104
|
-
test('uses global activeViewId when no workspace yaml', () => {
|
|
105
|
-
const global = minimalConfig('fleet', [
|
|
106
|
-
{ id: 'fleet', name: 'Fleet', scope: 'global', scripts: ['agent-fleet-widget.js'], system: true },
|
|
107
|
-
{ id: 'global', name: 'Global', scope: 'global', scripts: [] },
|
|
108
|
-
]);
|
|
109
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, undefined);
|
|
110
|
-
assert.strictEqual(merged.activeViewId, 'fleet');
|
|
111
|
-
});
|
|
112
|
-
test('global-only orphan active falls back to default then global', () => {
|
|
113
|
-
const defaults = (0, viewsConfigMerge_1.createDefaultDashboardViewsConfig)('global');
|
|
114
|
-
const global = minimalConfig('nope', defaults.views);
|
|
115
|
-
const merged = (0, viewsConfigMerge_1.mergeDashboardViewsConfigs)(global, undefined, defaults);
|
|
116
|
-
assert.strictEqual(merged.activeViewId, 'global');
|
|
117
|
-
});
|
|
118
|
-
test('resolveMergedActiveViewId prefers workspace builtin when healing orphan in workspace context', () => {
|
|
119
|
-
const defaults = (0, viewsConfigMerge_1.createDefaultDashboardViewsConfig)('global');
|
|
120
|
-
const merged = defaults.views;
|
|
121
|
-
assert.strictEqual((0, viewsConfigMerge_1.resolveMergedActiveViewId)(merged, 'missing', defaults, { preferWorkspaceScopeFallback: true }), 'workspace');
|
|
122
|
-
});
|
|
123
|
-
test('createDefaultDashboardViewsConfig includes Fleet and Workflows system views', () => {
|
|
124
|
-
const defaults = (0, viewsConfigMerge_1.createDefaultDashboardViewsConfig)('global');
|
|
125
|
-
const fleet = defaults.views.find(v => v.id === 'fleet');
|
|
126
|
-
const workflows = defaults.views.find(v => v.id === viewsConfigMerge_1.WORKFLOWS_VIEW_ID);
|
|
127
|
-
assert.ok(fleet);
|
|
128
|
-
assert.ok(workflows);
|
|
129
|
-
assert.strictEqual(workflows?.name, 'Workflows');
|
|
130
|
-
assert.strictEqual(workflows?.system, true);
|
|
131
|
-
assert.strictEqual(workflows?.refreshOnNavigate, 'always');
|
|
132
|
-
assert.strictEqual(workflows?.layout, 'fleet-dashboard');
|
|
133
|
-
assert.deepStrictEqual(workflows?.scripts, [viewsConfigMerge_1.WORKFLOWS_RUN_SCRIPT]);
|
|
134
|
-
assert.deepStrictEqual(workflows, (0, viewsConfigMerge_1.createDefaultWorkflowsView)());
|
|
135
|
-
});
|
|
136
|
-
test('resolvePreserveFleetIframe defaults true for fleet widget views', () => {
|
|
137
|
-
assert.strictEqual((0, viewsConfigMerge_1.resolvePreserveFleetIframe)({ scripts: [viewsConfigMerge_1.FLEET_WIDGET_SCRIPT] }), true);
|
|
138
|
-
assert.strictEqual((0, viewsConfigMerge_1.resolvePreserveFleetIframe)({ scripts: [], layout: 'fleet-dashboard' }), true);
|
|
139
|
-
assert.strictEqual((0, viewsConfigMerge_1.resolvePreserveFleetIframe)({ scripts: [], layout: 'gallery' }), false);
|
|
140
|
-
assert.strictEqual((0, viewsConfigMerge_1.resolvePreserveFleetIframe)({ scripts: [viewsConfigMerge_1.FLEET_WIDGET_SCRIPT], preserveFleetIframe: false }), false);
|
|
141
|
-
});
|
|
142
|
-
test('buildViewExportSnapshotMessages passthrough workflow export unchanged', () => {
|
|
143
|
-
const parsed = {
|
|
144
|
-
generatedAt: '2026-05-30T19:00:00Z',
|
|
145
|
-
totals: { running: 1 },
|
|
146
|
-
running: [{ workflowId: 'star-pipeline' }],
|
|
147
|
-
finished: [],
|
|
148
|
-
history: [],
|
|
149
|
-
};
|
|
150
|
-
const messages = (0, viewsConfigMerge_1.buildViewExportSnapshotMessages)(parsed);
|
|
151
|
-
assert.strictEqual(messages.length, 1);
|
|
152
|
-
assert.ok(Array.isArray(messages[0].payload.running));
|
|
153
|
-
assert.strictEqual(messages[0].payload.running.length, 1);
|
|
154
|
-
assert.strictEqual(messages[0].meta.sessionCount, 0);
|
|
155
|
-
});
|
|
156
|
-
test('buildViewExportSnapshotMessages passthrough session export', () => {
|
|
157
|
-
const messages = (0, viewsConfigMerge_1.buildViewExportSnapshotMessages)({
|
|
158
|
-
generatedAt: '2026-05-30T19:00:00Z',
|
|
159
|
-
totals: { sessions: 2 },
|
|
160
|
-
sessions: [{ sessionId: 'a' }, { sessionId: 'b' }],
|
|
161
|
-
});
|
|
162
|
-
assert.strictEqual(messages.length, 1);
|
|
163
|
-
assert.strictEqual(messages[0].payload.sessions?.length, 2);
|
|
164
|
-
assert.strictEqual(messages[0].meta.sessionCount, 2);
|
|
165
|
-
});
|
|
166
|
-
test('buildViewExportSnapshotMessages chunks large sessions only', () => {
|
|
167
|
-
const sessions = Array.from({ length: 250 }, (_, i) => ({ sessionId: `s-${i}`, data: 'x'.repeat(900) }));
|
|
168
|
-
const messages = (0, viewsConfigMerge_1.buildViewExportSnapshotMessages)({
|
|
169
|
-
generatedAt: '2026-05-30T19:00:00Z',
|
|
170
|
-
totals: { sessions: sessions.length },
|
|
171
|
-
sessions,
|
|
172
|
-
running: [{ workflowId: 'keep-me' }],
|
|
173
|
-
});
|
|
174
|
-
assert.ok(messages.length > 1);
|
|
175
|
-
assert.strictEqual(messages[0].meta.chunkedSessions, true);
|
|
176
|
-
assert.ok(Array.isArray(messages[0].payload.running));
|
|
177
|
-
assert.strictEqual(messages[0].payload.running.length, 1);
|
|
178
|
-
assert.strictEqual(messages[0].payload.sessions?.length, 100);
|
|
179
|
-
});
|
|
180
|
-
});
|
package/out/test/warrant.test.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Signed warrants (PLAN/serve-v4-clean.md §6).
|
|
4
|
-
*
|
|
5
|
-
* The properties under test are the ones that delete the P1 bug class:
|
|
6
|
-
* - a gateway can verify but NEVER mint (no shared secret anywhere);
|
|
7
|
-
* - a warrant is bound to its sandbox, so a lifted one fails from another sandbox;
|
|
8
|
-
* - audience, expiry, and algorithm confusion are all refused.
|
|
9
|
-
*--------------------------------------------------------------------------------------------*/
|
|
10
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
-
}
|
|
16
|
-
Object.defineProperty(o, k2, desc);
|
|
17
|
-
}) : (function(o, m, k, k2) {
|
|
18
|
-
if (k2 === undefined) k2 = k;
|
|
19
|
-
o[k2] = m[k];
|
|
20
|
-
}));
|
|
21
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
-
}) : function(o, v) {
|
|
24
|
-
o["default"] = v;
|
|
25
|
-
});
|
|
26
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
-
var ownKeys = function(o) {
|
|
28
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
-
var ar = [];
|
|
30
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
return ownKeys(o);
|
|
34
|
-
};
|
|
35
|
-
return function (mod) {
|
|
36
|
-
if (mod && mod.__esModule) return mod;
|
|
37
|
-
var result = {};
|
|
38
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
-
__setModuleDefault(result, mod);
|
|
40
|
-
return result;
|
|
41
|
-
};
|
|
42
|
-
})();
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
require("mocha");
|
|
45
|
-
const assert = __importStar(require("assert"));
|
|
46
|
-
const crypto = __importStar(require("node:crypto"));
|
|
47
|
-
const warrant_1 = require("../authority/warrant");
|
|
48
|
-
const KEY = (0, warrant_1.generateWarrantKeypair)('kid-1');
|
|
49
|
-
const PUBS = { [KEY.kid]: KEY.publicKeyPem };
|
|
50
|
-
function mint(over = {}) {
|
|
51
|
-
return (0, warrant_1.mintWarrant)({
|
|
52
|
-
user: 'alice@corp.com', pack: 'analyst', packVersion: '1.4.2',
|
|
53
|
-
sandboxId: 'sandbox-1', tier: 2, aud: 'data', ...over,
|
|
54
|
-
}, KEY);
|
|
55
|
-
}
|
|
56
|
-
suite('signed warrants', () => {
|
|
57
|
-
test('round-trips and carries the full evidence key', () => {
|
|
58
|
-
const res = (0, warrant_1.verifyWarrant)(mint(), PUBS, { audience: 'data', channelSandboxId: 'sandbox-1' });
|
|
59
|
-
assert.ok(res.ok, `expected ok, got ${JSON.stringify(res)}`);
|
|
60
|
-
if (!res.ok) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
assert.strictEqual(res.claims.user, 'alice@corp.com');
|
|
64
|
-
assert.strictEqual(res.claims.packVersion, '1.4.2');
|
|
65
|
-
assert.strictEqual(res.claims.tier, 2, 'the isolation tier in force is recorded on every turn');
|
|
66
|
-
assert.ok(res.claims.jti, 'warrant id present — the key observers join evidence on');
|
|
67
|
-
});
|
|
68
|
-
test('a warrant lifted into another sandbox FAILS — channel binding, not bearer', () => {
|
|
69
|
-
const stolen = mint({ sandboxId: 'sandbox-1' });
|
|
70
|
-
const asOwner = (0, warrant_1.verifyWarrant)(stolen, PUBS, { audience: 'data', channelSandboxId: 'sandbox-1' });
|
|
71
|
-
const asThief = (0, warrant_1.verifyWarrant)(stolen, PUBS, { audience: 'data', channelSandboxId: 'sandbox-2' });
|
|
72
|
-
assert.ok(asOwner.ok, 'valid in its own sandbox');
|
|
73
|
-
assert.ok(!asThief.ok && /not bound to this channel/.test(asThief.reason), 'the same signature is refused from a different sandbox');
|
|
74
|
-
});
|
|
75
|
-
test('a gateway holding only the public key cannot mint', () => {
|
|
76
|
-
// The structural claim: verification material is not signing material. Attempting to
|
|
77
|
-
// sign with the SPKI public key throws — there is no path from verify to mint.
|
|
78
|
-
assert.throws(() => {
|
|
79
|
-
crypto.sign('sha256', Buffer.from('x.y'), {
|
|
80
|
-
key: crypto.createPrivateKey(KEY.publicKeyPem),
|
|
81
|
-
dsaEncoding: 'ieee-p1363',
|
|
82
|
-
});
|
|
83
|
-
}, 'a public key cannot be loaded as a private key');
|
|
84
|
-
const doc = (0, warrant_1.jwks)([KEY]);
|
|
85
|
-
const serialized = JSON.stringify(doc);
|
|
86
|
-
assert.ok(!serialized.includes('PRIVATE'), 'JWKS publishes no private material');
|
|
87
|
-
assert.ok(!doc.keys[0].d, 'the EC private scalar `d` must never appear in JWKS');
|
|
88
|
-
});
|
|
89
|
-
test('wrong audience is refused — a data warrant cannot spend at the inference proxy', () => {
|
|
90
|
-
const res = (0, warrant_1.verifyWarrant)(mint({ aud: 'data' }), PUBS, { audience: 'inference', channelSandboxId: 'sandbox-1' });
|
|
91
|
-
assert.ok(!res.ok && /wrong audience/.test(res.reason));
|
|
92
|
-
});
|
|
93
|
-
test('expiry is enforced and TTL is hard-capped at turn length', () => {
|
|
94
|
-
const now = 1_800_000_000;
|
|
95
|
-
const t = mint({ nowSeconds: now, ttlSeconds: 10 });
|
|
96
|
-
assert.ok((0, warrant_1.verifyWarrant)(t, PUBS, { audience: 'data', channelSandboxId: 'sandbox-1', nowSeconds: now + 5 }).ok);
|
|
97
|
-
const late = (0, warrant_1.verifyWarrant)(t, PUBS, { audience: 'data', channelSandboxId: 'sandbox-1', nowSeconds: now + 11 });
|
|
98
|
-
assert.ok(!late.ok && /expired/.test(late.reason));
|
|
99
|
-
// A caller asking for a day-long warrant gets a turn-long one — there is no revocation
|
|
100
|
-
// registry, so lifetime IS the bound.
|
|
101
|
-
const greedy = mint({ nowSeconds: now, ttlSeconds: 86_400 });
|
|
102
|
-
const capped = (0, warrant_1.verifyWarrant)(greedy, PUBS, { audience: 'data', channelSandboxId: 'sandbox-1', nowSeconds: now + 301 });
|
|
103
|
-
assert.ok(!capped.ok && /expired/.test(capped.reason), 'TTL capped at 300s regardless of request');
|
|
104
|
-
});
|
|
105
|
-
test('algorithm confusion is refused (alg=none, alg=HS256)', () => {
|
|
106
|
-
const claims = Buffer.from(JSON.stringify({
|
|
107
|
-
user: 'mallory', pack: 'p', packVersion: '1', sandboxId: 'sandbox-1', tier: 2,
|
|
108
|
-
aud: 'data', iat: 0, exp: 9_999_999_999, jti: 'x',
|
|
109
|
-
})).toString('base64url');
|
|
110
|
-
const none = `${Buffer.from(JSON.stringify({ alg: 'none', kid: KEY.kid })).toString('base64url')}.${claims}.`;
|
|
111
|
-
assert.ok(!(0, warrant_1.verifyWarrant)(none, PUBS, { audience: 'data' }).ok, 'alg=none refused');
|
|
112
|
-
// The classic break: sign with HMAC using the PUBLIC key as the secret.
|
|
113
|
-
const hdr = Buffer.from(JSON.stringify({ alg: 'HS256', kid: KEY.kid })).toString('base64url');
|
|
114
|
-
const forged = crypto.createHmac('sha256', KEY.publicKeyPem).update(`${hdr}.${claims}`).digest('base64url');
|
|
115
|
-
assert.ok(!(0, warrant_1.verifyWarrant)(`${hdr}.${claims}.${forged}`, PUBS, { audience: 'data' }).ok, 'HS256 confusion refused');
|
|
116
|
-
});
|
|
117
|
-
test('a tampered claim invalidates the signature', () => {
|
|
118
|
-
const [h, c, s] = mint().split('.');
|
|
119
|
-
const swapped = JSON.parse(Buffer.from(c, 'base64url').toString('utf8'));
|
|
120
|
-
swapped.user = 'mallory@evil.com'; // escalate to another principal
|
|
121
|
-
const tampered = `${h}.${Buffer.from(JSON.stringify(swapped)).toString('base64url')}.${s}`;
|
|
122
|
-
const res = (0, warrant_1.verifyWarrant)(tampered, PUBS, { audience: 'data', channelSandboxId: 'sandbox-1' });
|
|
123
|
-
assert.ok(!res.ok && /bad signature/.test(res.reason), 'rewriting the principal breaks the signature');
|
|
124
|
-
});
|
|
125
|
-
test('an unknown key id is refused (no implicit trust on rotation)', () => {
|
|
126
|
-
const other = (0, warrant_1.generateWarrantKeypair)('kid-2');
|
|
127
|
-
const res = (0, warrant_1.verifyWarrant)((0, warrant_1.mintWarrant)({
|
|
128
|
-
user: 'a', pack: 'p', packVersion: '1', sandboxId: 'sandbox-1', tier: 2, aud: 'data',
|
|
129
|
-
}, other), PUBS, { audience: 'data', channelSandboxId: 'sandbox-1' });
|
|
130
|
-
assert.ok(!res.ok && /unknown kid/.test(res.reason));
|
|
131
|
-
});
|
|
132
|
-
test('malformed input never throws — the sandbox is untrusted toward the gateway', () => {
|
|
133
|
-
for (const bad of ['', 'a', 'a.b', 'a.b.c', '..', 'null.null.null']) {
|
|
134
|
-
const res = (0, warrant_1.verifyWarrant)(bad, PUBS, { audience: 'data' });
|
|
135
|
-
assert.ok(!res.ok, `must refuse: ${bad}`);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
});
|