feat(import): resolve references and schema composition

This commit is contained in:
2026-08-29 08:54:26 +03:00
parent 6c2a3712d8
commit 55209a9bbc
46 changed files with 4848 additions and 437 deletions
+6
View File
@@ -27,6 +27,12 @@ Crank настраивается через переменные окружен
| `CRANK_OUTBOUND_DENIED_HOSTS` | `outbound.denied_hosts` | `Shared` | `host_list/-` | `` | `-` | `Internal` | `Effective` |
| `CRANK_OUTBOUND_MAX_REQUEST_BYTES` | `outbound.max_request_bytes` | `Shared` | `u64/bytes` | `4194304` | `1..=67108864` | `Public` | `Effective` |
| `CRANK_OUTBOUND_MAX_RESPONSE_BYTES` | `outbound.max_response_bytes` | `Shared` | `u64/bytes` | `4194304` | `1..=67108864` | `Public` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_ALLOWED_URL_PREFIXES` | `import.external_references.allowed_url_prefixes` | `AdminApi` | `url_prefix_list/-` | `` | `-` | `Internal` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_DEPTH` | `import.external_references.max_depth` | `AdminApi` | `u32/edges` | `8` | `1..=32` | `Public` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_DOCUMENTS` | `import.external_references.max_documents` | `AdminApi` | `u32/documents` | `32` | `1..=32` | `Public` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_FETCH_BYTES` | `import.external_references.max_fetch_bytes` | `AdminApi` | `u64/bytes` | `262144` | `1..=4194304` | `Public` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_FETCH_TIMEOUT_MS` | `import.external_references.fetch_timeout_ms` | `AdminApi` | `u64/milliseconds` | `10000` | `1..=300000` | `Public` | `Effective` |
| `CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_EXPANDED_NODES` | `import.external_references.max_expanded_nodes` | `AdminApi` | `u32/nodes` | `10000` | `1..=100000` | `Public` | `Effective` |
| `CRANK_ENVIRONMENT` | `observability.environment` | `Shared` | `label/-` | `development` | `-` | `Public` | `Effective` |
| `CRANK_LOG_LEVEL` | `observability.log_filter` | `Shared` | `string/-` | `blank` | `-` | `Public` | `Effective` |
| `CRANK_SENTRY_DSN` | `observability.sentry_dsn` | `Shared` | `url/-` | `blank` | `-` | `Secret` | `Effective` |
+93
View File
@@ -330,6 +330,99 @@
"compatibility": null,
"rules": []
},
{
"semantic_path": "import.external_references.allowed_url_prefixes",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_ALLOWED_URL_PREFIXES",
"process": "admin_api",
"value_type": "url_prefix_list",
"unit": null,
"default": "",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": [
"empty list disables external OpenAPI reference fetching",
"each prefix must be canonical HTTP(S) without userinfo, query, or fragment"
]
},
{
"semantic_path": "import.external_references.max_depth",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_DEPTH",
"process": "admin_api",
"value_type": "u32",
"unit": "edges",
"default": "8",
"required": false,
"minimum": 1,
"maximum": 32,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "import.external_references.max_documents",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_DOCUMENTS",
"process": "admin_api",
"value_type": "u32",
"unit": "documents",
"default": "32",
"required": false,
"minimum": 1,
"maximum": 32,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "import.external_references.max_fetch_bytes",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_FETCH_BYTES",
"process": "admin_api",
"value_type": "u64",
"unit": "bytes",
"default": "262144",
"required": false,
"minimum": 1,
"maximum": 4194304,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "import.external_references.fetch_timeout_ms",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_FETCH_TIMEOUT_MS",
"process": "admin_api",
"value_type": "u64",
"unit": "milliseconds",
"default": "10000",
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "import.external_references.max_expanded_nodes",
"env_name": "CRANK_IMPORT_EXTERNAL_REFERENCE_MAX_EXPANDED_NODES",
"process": "admin_api",
"value_type": "u32",
"unit": "nodes",
"default": "10000",
"required": false,
"minimum": 1,
"maximum": 100000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.environment",
"env_name": "CRANK_ENVIRONMENT",