installgate 0.1.0__tar.gz → 0.1.2__tar.gz
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.
- {installgate-0.1.0 → installgate-0.1.2}/.gitignore +1 -0
- {installgate-0.1.0 → installgate-0.1.2}/AGENTS.md +1 -1
- installgate-0.1.2/PKG-INFO +96 -0
- {installgate-0.1.0 → installgate-0.1.2}/README.md +67 -55
- {installgate-0.1.0 → installgate-0.1.2}/docs/collaboration.md +1 -1
- {installgate-0.1.0 → installgate-0.1.2}/docs/playbook.md +7 -7
- {installgate-0.1.0 → installgate-0.1.2}/docs/prd-ssd.md +1 -1
- installgate-0.1.2/docs/pypi.md +62 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/cli.py +12 -0
- {installgate-0.1.0 → installgate-0.1.2}/pyproject.toml +6 -3
- {installgate-0.1.0 → installgate-0.1.2}/remediate/README.md +1 -1
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_cli.py +11 -0
- installgate-0.1.0/.cursor/mcp.json +0 -16
- installgate-0.1.0/PKG-INFO +0 -439
- installgate-0.1.0/docs/demo-script.md +0 -131
- installgate-0.1.0/docs/sprint.md +0 -100
- installgate-0.1.0/docs/status-update-2026-10-28.md +0 -91
- {installgate-0.1.0 → installgate-0.1.2}/.cursor/rules/ponytail.mdc +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.dockerignore +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.env.example +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.github/CODEOWNERS +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.github/ISSUE_TEMPLATE/task.yml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.github/pull_request_template.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.github/workflows/ci.yml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.pre-commit-config.yaml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/.python-version +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/Caddyfile +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/Dockerfile +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/LICENSE +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/contracts/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/contracts/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/contracts/contracts.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/contracts/contracts.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/docker-compose.yml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/docs/architecture.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/docs/logo.svg +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/cache.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/checks.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/clients/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/clients/huggingface.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/clients/npm.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/clients/osv.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/clients/pypi.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/data/pypi-top5000-2026-10-27.txt +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/evidence.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/parsers.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/policy.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/policy.yaml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/runtime_floors.yaml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/engine/stage1.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/add_cases.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/benign.jsonl +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/hallucinated.jsonl +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/huggingface.jsonl +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/malicious.jsonl +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/malicious.provenance.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/cases/typosquat.jsonl +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/fetch_osv_malicious.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/fetch_top_pypi.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/fixtures/fault-timeout.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/fixtures/prompt-injection-readme.txt +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/make_cases.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/results-models.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/results.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/runner.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/eval/verify_labels.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/keep-awake.sh +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/agent.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/api.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/check.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/limit.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/render.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/samples.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/server.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/mcp_server/spend.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/remediate/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/remediate/candidates.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/remediate/diff.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/remediate/pinning.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/remediate/sandbox.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/compare.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/prompts/explain.txt +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/prompts/extract.txt +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/prompts/rank_substitute.txt +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/receipt.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/smoke.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/tavily.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/tiers.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/router/token_factory.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/setup-github.sh +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_agent.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_checks.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_clients.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_compare.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_contracts_check_unavailable.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_contracts_import.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_env.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_gate.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_hf_pinning.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_hosting.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_make_cases_guard.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_osv_versions.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_parsers.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_php_floors.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_policy.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_remediate.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_router.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_runner_attribution.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_runner_clock.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_tavily.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_token_factory.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/tests/test_validator.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.gitignore +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/cache.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/composable-cache.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/durable-objects/bucket-cache-purge.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/durable-objects/queue.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/durable-objects/sharded-tag-cache.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/open-next.config.edge.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/.build/open-next.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/BUILD_ID +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/NwnmEL55GHO8VU_9KDEQx/_buildManifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/NwnmEL55GHO8VU_9KDEQx/_ssgManifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/38-de2a86404693f939.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/657-bbb05fcf0c8455eb.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/829-8dab9a64d44a51d9.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/833-6d10aef285d28015.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/_not-found/page-bcca22b1d59a13d4.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/api/check/route-82a2888fbb135a8c.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/api/check/stream/route-82a2888fbb135a8c.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/api/health/route-82a2888fbb135a8c.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/api/mcp/route-82a2888fbb135a8c.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/layout-5e3ba7c0d26b5404.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/mockup/page-60d09c5ee6f64879.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/app/page-5ac5f5b50183c124.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/d9cbff8c-b2655549e18d6010.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/framework-c189959243d787af.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/main-app-3c699f0edccdc8d7.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/main-d77a8281b279d438.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/pages/_app-d643eb3fa4ea4d95.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/pages/_error-3a1134004232a0ab.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/chunks/webpack-73d1f068656abf24.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/css/d32d2bcb0d5024ea.css +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/26d4368bf94c0ec4-s.p.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/2801417b65625cf5-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/28793f5c5e3d822d-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/558ca1a6aa3cb55e-s.p.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/64d784ea54a4acde-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/6d831b18ae5b01dc-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/7b19b489dc6743ba-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/ac0e76ddaeeb7981-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/b3bf17a9041d9433-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/c9c3823090ec8b55-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/edc640959b0c7826-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/assets/_next/static/media/ff71da380fbe67dd-s.woff2 +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cache/NwnmEL55GHO8VU_9KDEQx/500.cache +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cache/NwnmEL55GHO8VU_9KDEQx/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.cache +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cache/NwnmEL55GHO8VU_9KDEQx/route-cache/APP_PAGE/774f78912094c1f4a4edd40f45575b08c38d84a54e8cd21776f7627b1c9f53df/$/mockup.cache +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cache/NwnmEL55GHO8VU_9KDEQx/route-cache/APP_PAGE/c6377dd9ce6a1c2cd100eb4344e843eb4639b9ed26f84643f77680e9eb454c4b/$/index.cache +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare/cache-assets-manifest.sql +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare/images.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare/init.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare/next-env.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare/skew-protection.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/images.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/images.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/init.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/init.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/empty.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/empty.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/env.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/env.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/fetch.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/fetch.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/throw.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/shims/throw.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/skew-protection.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/skew-protection.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/worker.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/cloudflare-templates/worker.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/dynamodb-provider/dynamodb-cache.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/dynamodb-provider/open-next.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/middleware/handler.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/middleware/open-next.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/BUILD_ID +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/app-build-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/app-path-routes-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/build-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/prerender-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/react-loadable-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/required-server-files.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/routes-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/_not-found/page.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/_not-found/page_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/check/route.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/check/route_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/check/stream/route.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/check/stream/route_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/health/route.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/health/route_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/mcp/route.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/api/mcp/route_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/mockup/page.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/mockup/page_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/page.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app/page_client-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/app-paths-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/125.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/446.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/56.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/583.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/67.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/chunks/87.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/functions-config-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/middleware-build-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/middleware-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/middleware-react-loadable-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/next-font-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/next-font-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/pages/404.html +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/pages/_app.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/pages/_document.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/pages/_error.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/pages-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/server-reference-manifest.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/server-reference-manifest.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/.next/server/webpack-runtime.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/cache.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/composable-cache.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/handler.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/handler.mjs.meta.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/index.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@next+env@15.5.28/node_modules/@next/env/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_class_private_field_loose_base/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_class_private_field_loose_key/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_interop_require_default/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_class_private_field_loose_base.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_class_private_field_loose_key.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/buffer-from@1.1.2/node_modules/buffer-from/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/buffer-from@1.1.2/node_modules/buffer-from/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/client-only@0.0.1/node_modules/client-only/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/client-only@0.0.1/node_modules/client-only/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/detect-libc.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/elf.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/filesystem.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/process.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/nanoid@3.3.20/node_modules/nanoid/non-secure/index.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/nanoid@3.3.20/node_modules/nanoid/non-secure/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/nanoid@3.3.20/node_modules/nanoid/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/next/font/google/target.css +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/next/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/at-rule.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/comment.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/container.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/css-syntax-error.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/declaration.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/document.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/fromJSON.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/input.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/lazy-result.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/list.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/map-generator.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/no-work-result.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/node.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/parse.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/parser.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/postcss.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/previous-map.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/processor.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/result.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/root.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/rule.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/stringifier.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/stringify.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/symbols.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/terminal-highlight.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/tokenize.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/warn-once.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/lib/warning.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/postcss/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react-compiler-runtime.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react-jsx-dev-runtime.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react-jsx-runtime.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react-jsx-runtime.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/cjs/react.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/compiler-runtime.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/jsx-dev-runtime.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/jsx-runtime.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server.browser.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server.browser.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server.edge.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server.edge.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom-server.node.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom.development.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/cjs/react-dom.production.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/server.browser.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/server.edge.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/server.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/server.node.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/static.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/react-dom/static.node.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/styled-jsx/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/styled-jsx/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/next@15.5.28_@types+node@22.20.5_react-dom@19.3.1_react@19.3.1__react@19.3.1/node_modules/styled-jsx/style.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/node_modules/source-map-support/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/node_modules/source-map-support/source-map-support.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/array-set.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/base64-vlq.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/base64.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/binary-search.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/mapping-list.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/quick-sort.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/source-map-consumer.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/source-map-generator.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/source-node.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/lib/util.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/postcss@8.4.31/node_modules/source-map-js/source-map.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/preload.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/array-set.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/base64-vlq.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/base64.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/binary-search.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/mapping-list.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/quick-sort.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/source-map-consumer.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/source-map-generator.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/source-node.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/lib/util.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map/source-map.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/open-next.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/server-functions/default/patchedAsyncStorage.cjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.open-next/worker.js +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/.wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/Dockerfile +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/eslint.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/next-env.d.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/next.config.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/open-next.config.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/package.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/pnpm-lock.yaml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/pnpm-workspace.yaml +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/postcss.config.mjs +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/api/check/route.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/api/check/stream/route.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/api/forward.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/api/health/route.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/api/mcp/route.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/demo.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/globals.css +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/layout.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/mockup/mockup.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/mockup/page.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/page.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/terminal.tsx +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/src/app/use-checks.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/tailwind.config.ts +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/tsconfig.json +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/ui/wrangler.jsonc +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/uv.lock +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/validator/README.md +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/validator/__init__.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/validator/citations.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/validator/failclosed.py +0 -0
- {installgate-0.1.0 → installgate-0.1.2}/validator/lattice.py +0 -0
|
@@ -175,7 +175,7 @@ substitute remediate/ closed set, pin, diff. Engine re-che
|
|
|
175
175
|
|
|
176
176
|
`mcp_server/check.py` `check()` is the orchestrator and the only function that builds a `GateVerdict`. Every stage above is implemented except `remediate/sandbox.py` (T15, cut). Edit the module that already owns the job. Do not add a second module for the same job.
|
|
177
177
|
|
|
178
|
-
Who is doing what
|
|
178
|
+
Who is doing what: the table above. Task list: `docs/prd-ssd.md`, section 13.
|
|
179
179
|
|
|
180
180
|
## 7. Policy rules (`engine/policy.yaml`)
|
|
181
181
|
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: installgate
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Pre-install trust gate for coding agents. Check pip/npm before install; never runs the package.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Seavleu/installgate
|
|
6
|
+
Project-URL: Documentation, https://github.com/Seavleu/installgate#readme
|
|
7
|
+
Project-URL: Source, https://github.com/Seavleu/installgate
|
|
8
|
+
Project-URL: Issues, https://github.com/Seavleu/installgate/issues
|
|
9
|
+
Author: InstallGate contributors
|
|
10
|
+
License-Expression: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
|
+
Requires-Dist: fastapi
|
|
14
|
+
Requires-Dist: httpx
|
|
15
|
+
Requires-Dist: mcp
|
|
16
|
+
Requires-Dist: openai
|
|
17
|
+
Requires-Dist: packaging
|
|
18
|
+
Requires-Dist: pydantic>=2
|
|
19
|
+
Requires-Dist: pyyaml
|
|
20
|
+
Requires-Dist: rapidfuzz
|
|
21
|
+
Requires-Dist: typer
|
|
22
|
+
Requires-Dist: uvicorn[standard]
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
25
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest-asyncio; extra == 'dev'
|
|
28
|
+
Requires-Dist: respx; extra == 'dev'
|
|
29
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
30
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
31
|
+
Provides-Extra: tavily
|
|
32
|
+
Requires-Dist: tavily-python; extra == 'tavily'
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# InstallGate
|
|
36
|
+
|
|
37
|
+
Pre-install trust gate for coding agents. You pass one `pip install` or `npm install` command. InstallGate reads **registry metadata only** (never installs), applies a YAML policy, and returns **ALLOW**, **REVIEW**, or **BLOCK**.
|
|
38
|
+
|
|
39
|
+
A clean ALLOW is pinned (`name==version`) and skips the model. BLOCK needs hard deterministic evidence. The model may explain; it cannot override policy.
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
Python 3.11+.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
uv tool install installgate
|
|
47
|
+
uv tool update-shell
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If you use pipx:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pipx install installgate
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Then `ig` is on your PATH from any directory (same idea as installing Node, then typing `node`). If a previous `ig` is in the way:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
uv tool install --force installgate
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
ig --version
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Use
|
|
67
|
+
|
|
68
|
+
`--no` means check only — it never runs pip/npm.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ig --no pip install requests # ALLOW, pin, no model
|
|
72
|
+
ig --no pip install reqeusts # BLOCK typo; substitute is pinned requests
|
|
73
|
+
ig --no pip install no-such-pkg-xyz # BLOCK, no substitute
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Exit codes: `0` ALLOW, `1` REVIEW, `2` BLOCK.
|
|
77
|
+
|
|
78
|
+
Optional keys in the environment (or a `.env` in the current directory):
|
|
79
|
+
|
|
80
|
+
- `NEBIUS_API_KEY` — explanations on REVIEW/BLOCK (NVIDIA Nemotron on Nebius Token Factory). ALLOW does not need it.
|
|
81
|
+
- `TAVILY_API_KEY` — recent web evidence (untrusted, never a BLOCK).
|
|
82
|
+
|
|
83
|
+
## MCP
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
uvx --from installgate python -m mcp_server.server
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Tool: `check_install`. Argument: `command`.
|
|
90
|
+
|
|
91
|
+
## Docs
|
|
92
|
+
|
|
93
|
+
GitHub: [Seavleu/installgate](https://github.com/Seavleu/installgate) (full README, policy, demo).
|
|
94
|
+
Live page: [installgate.installgate-ui.workers.dev](https://installgate.installgate-ui.workers.dev)
|
|
95
|
+
|
|
96
|
+
License: Apache-2.0
|
|
@@ -22,6 +22,62 @@ It does not install the package. It does not run the command it proposes. A bloc
|
|
|
22
22
|
|
|
23
23
|
Built for the Nebius x NVIDIA hackathon. The explanation step uses NVIDIA Nemotron on Nebius Token Factory. The decision itself does not.
|
|
24
24
|
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
Python 3.11+. Package: [`installgate` on PyPI](https://pypi.org/project/installgate/).
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
uv tool install installgate
|
|
31
|
+
uv tool update-shell # once; then open a new terminal
|
|
32
|
+
ig --version # installgate 0.1.2
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`pipx install installgate` works if you have pipx. If `ig` already exists on your PATH:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv tool install --force installgate
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`--no` checks only. It never runs pip or npm. Press **n** if a prompt appears.
|
|
42
|
+
|
|
43
|
+
Optional keys in the environment, or a `.env` in the current directory:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
export NEBIUS_API_KEY=... # explanations on REVIEW/BLOCK. ALLOW does not need it.
|
|
47
|
+
export TAVILY_API_KEY=... # optional web evidence; untrusted, never a BLOCK
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Usage
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ig --no pip install requests # ALLOW, pin, no model; rerun is cached
|
|
54
|
+
ig --no pip install reqeusts # BLOCK typo; substitute is pinned requests
|
|
55
|
+
ig --no pip install no-such-pkg-xyz # BLOCK, no substitute
|
|
56
|
+
ig --no npm install lodash # ALLOW (exists + pin)
|
|
57
|
+
ig --no npm install totally-fake-npm-xyz # BLOCK
|
|
58
|
+
ig --no pip install requests numpy # abort: one package per check
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ig pip install reqeusts # same, may prompt [Y/n] on ALLOW
|
|
63
|
+
ig reqeusts # same as pip install reqeusts
|
|
64
|
+
ig --json --no pip install requests
|
|
65
|
+
ig --help
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Exit: `0` ALLOW, `1` REVIEW, `2` BLOCK.
|
|
69
|
+
|
|
70
|
+
Wrap your real pip/npm in this shell (ALLOW then runs your pip; REVIEW/BLOCK stop):
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
eval "$(ig hook)"
|
|
74
|
+
pip install reqeusts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
From this repo instead of PyPI: `uv tool install --force .`
|
|
78
|
+
|
|
79
|
+
Agent playbook: [`docs/playbook.md`](docs/playbook.md).
|
|
80
|
+
|
|
25
81
|
## What you get back
|
|
26
82
|
|
|
27
83
|
Every entry point returns the same `GateVerdict`.
|
|
@@ -35,18 +91,6 @@ Every entry point returns the same `GateVerdict`.
|
|
|
35
91
|
| `next_action` | `proceed`, `use_substitute`, `ask_human`, or `abort`. |
|
|
36
92
|
| `receipt` | Tokens, cost, and the cost if every model call had been Ultra. |
|
|
37
93
|
|
|
38
|
-
```text
|
|
39
|
-
ig --no pip install requests # ALLOW P9, pin, no model; rerun for ~12ms cache
|
|
40
|
-
ig --no pip install numpy # ALLOW P9
|
|
41
|
-
ig --no pip install reqeusts # BLOCK P1 + substitute requests
|
|
42
|
-
ig --no pip install no-such-pkg-xyz # BLOCK P1, no substitute
|
|
43
|
-
ig --no npm install lodash # ALLOW P9
|
|
44
|
-
ig --no npm install totally-fake-npm-xyz # BLOCK P1
|
|
45
|
-
ig --no npm install express # ALLOW, or REVIEW if Tavily adds colour
|
|
46
|
-
ig --no pip install requests numpy # abort: one package
|
|
47
|
-
ig --no uv add numpy # abort: unsupported
|
|
48
|
-
```
|
|
49
|
-
|
|
50
94
|
## How a check works
|
|
51
95
|
|
|
52
96
|
```text
|
|
@@ -85,61 +129,21 @@ Every rule runs. The strictest match wins. Policy version `2026-10-30.1`.
|
|
|
85
129
|
|
|
86
130
|
An allow requires a pin: version plus sha256, or a Hugging Face revision. Stage 1 attaches the registry pin, so `pip install numpy` can ALLOW. An unpinned package with no findings and no hash is a review. A fresh release of an established project is not P6; a brand-new name is. Release age alone never blocks. npm has no typosquat snapshot; a name that exists and pins still ALLOWs (P9). A name that does not exist BLOCKs (P1).
|
|
87
131
|
|
|
88
|
-
##
|
|
89
|
-
|
|
90
|
-
Requirements: Python 3.11, [uv](https://docs.astral.sh/uv/), and Node 22 with pnpm for the page.
|
|
132
|
+
## Develop from source
|
|
91
133
|
|
|
92
134
|
```bash
|
|
93
135
|
uv sync --extra dev
|
|
94
136
|
cp .env.example .env
|
|
137
|
+
source .venv/bin/activate
|
|
95
138
|
```
|
|
96
139
|
|
|
97
|
-
|
|
140
|
+
`ig` is then on PATH from this venv. Keys in `.env` are read from the current directory. The API process does not load that file unless you export it:
|
|
98
141
|
|
|
99
142
|
```bash
|
|
100
143
|
set -a && source .env && set +a
|
|
101
144
|
uv run uvicorn mcp_server.api:app --port 8000
|
|
102
145
|
```
|
|
103
146
|
|
|
104
|
-
A clean allow does not need the model key. A review or a block does, if you want an explanation.
|
|
105
|
-
|
|
106
|
-
## Use it
|
|
107
|
-
|
|
108
|
-
### Command line
|
|
109
|
-
|
|
110
|
-
`ig` is not on your PATH until you install the tool (same idea as `node` after installing Node). From this repo:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
uv tool install .
|
|
114
|
-
export PATH="$HOME/.local/bin:$PATH" # once; or: uv tool update-shell
|
|
115
|
-
ig --no pip install requests
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Anyone else, after we publish to PyPI: `uv tool install installgate` or `pipx install installgate`. Until then: `uv tool install git+https://github.com/Seavleu/installgate`.
|
|
119
|
-
|
|
120
|
-
The command is `ig` (`installgate` still works). Type the install the way you would type it.
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
ig pip install reqeusts
|
|
124
|
-
ig reqeusts # same as pip install reqeusts
|
|
125
|
-
ig npm install lodash
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
To keep typing `pip install …` and still get a check, once per shell:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
eval "$(ig hook)"
|
|
132
|
-
pip install reqeusts # checked first; the real pip runs only on ALLOW
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
InstallGate never runs the install itself. The hook is a shell function: on ALLOW it calls your `pip`, on REVIEW or BLOCK it stops.
|
|
136
|
-
|
|
137
|
-
Exit codes: `0` ALLOW, `1` REVIEW, `2` BLOCK. A pipe stays one JSON document:
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
ig pip install requests | jq .final_verdict
|
|
141
|
-
```
|
|
142
|
-
|
|
143
147
|
### HTTP
|
|
144
148
|
|
|
145
149
|
```bash
|
|
@@ -168,6 +172,14 @@ Open [http://127.0.0.1:3000](http://127.0.0.1:3000). The page calls `/api/check`
|
|
|
168
172
|
|
|
169
173
|
The tool name is `check_install`. It takes one `command` string (one package). The JSON is a `GateVerdict` plus `pinned_command` (copy-paste on ALLOW), `substitute_command`, and `decided_by`. Policy always wins. It speaks stdio, from the repo root, so `uv` can see the project:
|
|
170
174
|
|
|
175
|
+
From PyPI:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
uvx --from installgate python -m mcp_server.server
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
From this repo:
|
|
182
|
+
|
|
171
183
|
```bash
|
|
172
184
|
uv run python -m mcp_server.server
|
|
173
185
|
```
|
|
@@ -53,7 +53,7 @@ A pass is `7 passed`. These tests mock HTTP. They do not read `.env` and they do
|
|
|
53
53
|
|
|
54
54
|
### 3. Commit the task files
|
|
55
55
|
|
|
56
|
-
Leave out `.env
|
|
56
|
+
Leave out `.env` and `AGENTS.md` unless that task changed them.
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
git add router/README.md router/prompts/explain.txt router/prompts/extract.txt \
|
|
@@ -83,13 +83,13 @@ No login. One contract for HTTP, MCP, and CLI.
|
|
|
83
83
|
|
|
84
84
|
### Demo host (public, now)
|
|
85
85
|
|
|
86
|
-
| Use
|
|
87
|
-
|
|
|
88
|
-
| Page
|
|
89
|
-
| Check
|
|
90
|
-
| Stream | `POST /api/check/stream` NDJSON stages then the verdict
|
|
91
|
-
| MCP
|
|
92
|
-
| Health | `GET /api/health` → `{"ok":true}`
|
|
86
|
+
| Use | URL |
|
|
87
|
+
| ------ | -------------------------------------------------------- |
|
|
88
|
+
| Page | `https://installgate.installgate-ui.workers.dev` |
|
|
89
|
+
| Check | `POST /api/check` `{"command":"pip install requests"}` |
|
|
90
|
+
| Stream | `POST /api/check/stream` NDJSON stages then the verdict |
|
|
91
|
+
| MCP | `https://installgate.installgate-ui.workers.dev/api/mcp` |
|
|
92
|
+
| Health | `GET /api/health` → `{"ok":true}` |
|
|
93
93
|
|
|
94
94
|
Cursor / Claude MCP (remote):
|
|
95
95
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# InstallGate
|
|
2
|
+
|
|
3
|
+
Pre-install trust gate for coding agents. You pass one `pip install` or `npm install` command. InstallGate reads **registry metadata only** (never installs), applies a YAML policy, and returns **ALLOW**, **REVIEW**, or **BLOCK**.
|
|
4
|
+
|
|
5
|
+
A clean ALLOW is pinned (`name==version`) and skips the model. BLOCK needs hard deterministic evidence. The model may explain; it cannot override policy.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
Python 3.11+.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
uv tool install installgate
|
|
13
|
+
uv tool update-shell
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
If you use pipx:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pipx install installgate
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then `ig` is on your PATH from any directory (same idea as installing Node, then typing `node`). If a previous `ig` is in the way:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
uv tool install --force installgate
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
ig --version
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Use
|
|
33
|
+
|
|
34
|
+
`--no` means check only — it never runs pip/npm.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
ig --no pip install requests # ALLOW, pin, no model
|
|
38
|
+
ig --no pip install reqeusts # BLOCK typo; substitute is pinned requests
|
|
39
|
+
ig --no pip install no-such-pkg-xyz # BLOCK, no substitute
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Exit codes: `0` ALLOW, `1` REVIEW, `2` BLOCK.
|
|
43
|
+
|
|
44
|
+
Optional keys in the environment (or a `.env` in the current directory):
|
|
45
|
+
|
|
46
|
+
- `NEBIUS_API_KEY` — explanations on REVIEW/BLOCK (NVIDIA Nemotron on Nebius Token Factory). ALLOW does not need it.
|
|
47
|
+
- `TAVILY_API_KEY` — recent web evidence (untrusted, never a BLOCK).
|
|
48
|
+
|
|
49
|
+
## MCP
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
uvx --from installgate python -m mcp_server.server
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Tool: `check_install`. Argument: `command`.
|
|
56
|
+
|
|
57
|
+
## Docs
|
|
58
|
+
|
|
59
|
+
GitHub: [Seavleu/installgate](https://github.com/Seavleu/installgate) (full README, policy, demo).
|
|
60
|
+
Live page: [installgate.installgate-ui.workers.dev](https://installgate.installgate-ui.workers.dev)
|
|
61
|
+
|
|
62
|
+
License: Apache-2.0
|
|
@@ -10,6 +10,7 @@ import subprocess
|
|
|
10
10
|
import sys
|
|
11
11
|
import tempfile
|
|
12
12
|
import time
|
|
13
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
|
|
15
16
|
from contracts.contracts import Ecosystem, GateVerdict, Verdict
|
|
@@ -26,6 +27,7 @@ Usage:
|
|
|
26
27
|
ig -y pip install numpy # run if ALLOW, no prompt
|
|
27
28
|
ig --no pip install numpy # check only
|
|
28
29
|
ig --json pip install numpy
|
|
30
|
+
ig --version
|
|
29
31
|
|
|
30
32
|
eval "$(ig hook)" # `pip install` checks, then real pip on ALLOW
|
|
31
33
|
|
|
@@ -37,6 +39,13 @@ _INSTALLERS = frozenset(
|
|
|
37
39
|
)
|
|
38
40
|
|
|
39
41
|
|
|
42
|
+
def package_version() -> str:
|
|
43
|
+
try:
|
|
44
|
+
return version("installgate")
|
|
45
|
+
except PackageNotFoundError:
|
|
46
|
+
return "0.0.0+local"
|
|
47
|
+
|
|
48
|
+
|
|
40
49
|
def command_from_argv(argv: list[str]) -> str:
|
|
41
50
|
"""Turn argv into one install command. A bare name means `pip install <name>`."""
|
|
42
51
|
if not argv:
|
|
@@ -224,6 +233,9 @@ def run(argv: list[str]) -> int:
|
|
|
224
233
|
if not argv or argv[0] in {"-h", "--help", "help"}:
|
|
225
234
|
print(_HELP, end="")
|
|
226
235
|
return 0 if argv else 2
|
|
236
|
+
if argv[0] in {"-V", "--version", "version"}:
|
|
237
|
+
print(f"installgate {package_version()}")
|
|
238
|
+
return 0
|
|
227
239
|
if argv[0] == "hook":
|
|
228
240
|
print(hook_script(), end="")
|
|
229
241
|
return 0
|
|
@@ -4,9 +4,9 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "installgate"
|
|
7
|
-
version = "0.1.
|
|
8
|
-
description = "Pre-install trust gate for coding agents"
|
|
9
|
-
readme = "
|
|
7
|
+
version = "0.1.2"
|
|
8
|
+
description = "Pre-install trust gate for coding agents. Check pip/npm before install; never runs the package."
|
|
9
|
+
readme = "docs/pypi.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
11
11
|
requires-python = ">=3.11"
|
|
12
12
|
authors = [{ name = "InstallGate contributors" }]
|
|
@@ -27,6 +27,9 @@ dependencies = [
|
|
|
27
27
|
|
|
28
28
|
[project.urls]
|
|
29
29
|
Homepage = "https://github.com/Seavleu/installgate"
|
|
30
|
+
Documentation = "https://github.com/Seavleu/installgate#readme"
|
|
31
|
+
Source = "https://github.com/Seavleu/installgate"
|
|
32
|
+
Issues = "https://github.com/Seavleu/installgate/issues"
|
|
30
33
|
|
|
31
34
|
[project.scripts]
|
|
32
35
|
ig = "mcp_server.cli:main"
|
|
@@ -7,7 +7,7 @@ Stage 4. Safe substitute. You never run the command.
|
|
|
7
7
|
| `candidates.py` | Closed set only: alias map, top-n neighbours, HF safetensors sibling, patched docker tag |
|
|
8
8
|
| `pinning.py` | Pin version + sha256 |
|
|
9
9
|
| `diff.py` | `- bad` / `+ safe` command diff |
|
|
10
|
-
| `sandbox.py` | Stretch (T15), cut. Not built: Nebius Sandboxes (`contree-sdk`) document no egress-off setting.
|
|
10
|
+
| `sandbox.py` | Stretch (T15), cut. Not built: Nebius Sandboxes (`contree-sdk`) document no egress-off setting. |
|
|
11
11
|
|
|
12
12
|
The model picks a candidate **by id** (`C1`, `C2`, …). A package name it types is discarded and does not appear in the diff. The pick is shown only after the engine re-check ids are passed in. This folder does not run the command and does not call the engine.
|
|
13
13
|
|
|
@@ -12,6 +12,7 @@ from mcp_server.cli import (
|
|
|
12
12
|
confirm_run,
|
|
13
13
|
exit_code,
|
|
14
14
|
hook_script,
|
|
15
|
+
package_version,
|
|
15
16
|
proposed_argv,
|
|
16
17
|
run,
|
|
17
18
|
take_flags,
|
|
@@ -48,6 +49,16 @@ def test_hook_wraps_pip_and_npm() -> None:
|
|
|
48
49
|
assert "unalias pip" in text
|
|
49
50
|
|
|
50
51
|
|
|
52
|
+
def test_version_prints_the_package_and_does_not_check() -> None:
|
|
53
|
+
assert run(["--version"]) == 0
|
|
54
|
+
assert run(["-V"]) == 0
|
|
55
|
+
assert run(["version"]) == 0
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def test_package_version_is_nonempty() -> None:
|
|
59
|
+
assert package_version()
|
|
60
|
+
|
|
61
|
+
|
|
51
62
|
def test_take_flags_strips_leading_only() -> None:
|
|
52
63
|
json, assume, rest = take_flags(["-y", "pip", "install", "numpy"])
|
|
53
64
|
assert json is False and assume is True and rest == ["pip", "install", "numpy"]
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"mcpServers": {
|
|
3
|
-
"nebius": {
|
|
4
|
-
"type": "stdio",
|
|
5
|
-
"command": "/opt/homebrew/bin/uvx",
|
|
6
|
-
"args": [
|
|
7
|
-
"--refresh-package",
|
|
8
|
-
"nebius-mcp-server",
|
|
9
|
-
"nebius-mcp-server@git+https://github.com/nebius/mcp-server@main"
|
|
10
|
-
],
|
|
11
|
-
"env": {
|
|
12
|
-
"SAFE_MODE": "true"
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|