Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/a158coke_wotbtools.json
T
OpenCode 68a9071cf1 feat: reconcile local master with origin (exa/hot-platform hunters, leaks ledger, latest results)
Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
2026-08-07 12:53:47 +08:00

1 line
4.4 KiB
JSON

{"repo": "a158coke/wotbtools", "files": {"java/wotb-web/src/main/resources/application.yml": {"bb0207795c84276fd598931c6a24507a0e6e66ef": {"t": 1786068429.327873, "n": 4160, "h": "75edb57cb73a982d", "c": "server:\n port: 8087\n\nspring:\n autoconfigure:\n exclude:\n # Spring AI OpenAI auto-configurations create SDK model beans even without\n # an API key and would fail startup. AiGatewayConfig builds the single\n # SpringAiChatGateway / OpenAiChatModel explicitly instead.\n - org.springframework.ai.model.openai.autoconfigure.OpenAiChatAutoConfiguration\n - org.springframework.ai.model.openai.autoconfigure.OpenAiEmbeddingAutoConfiguration\n - org.springframework.ai.model.openai.autoconfigure.OpenAiImageAutoConfiguration\n - org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration\n - org.springframework.ai.model.openai.autoconfigure.OpenAiAudioTranscriptionAutoConfiguration\n - org.springframework.ai.model.openai.autoconfigure.OpenAiModerationAutoConfiguration\n servlet:\n multipart:\n max-file-size: 20MB\n max-request-size: 200MB\n web:\n resources:\n static-locations: classpath:/static/\n datasource:\n url: jdbc:postgresql://${POSTGRES_HOST:localhost}:5432/${POSTGRES_DB:wotb}\n username: ${POSTGRES_USER:wotb}\n password: ${POSTGRES_PASSWORD}\n jpa:\n hibernate.ddl-auto: validate\n flyway:\n enabled: true\n locations: classpath:db/migration\n baseline-on-migrate: true\n baseline-version: 0\n security:\n oauth2:\n resourceserver:\n jwt:\n issuer-uri: ${KEYCLOAK_ISSUER_URI:https://auth.wotbtools.com/realms/wotbtools}\n\n# observability: dedicated management port (8088), Docker-network only.\nmanagement:\n server:\n port: 8088\n endpoints:\n web:\n exposure:\n include: health,info,metrics,prometheus\n endpoint:\n health:\n show-details: never\n probes:\n enabled: true\n metrics:\n tags:\n application: wotb-backend\n distribution:\n percentiles-histogram:\n http.server.requests: true\n slo:\n http.server.requests:\n - 10ms\n - 50ms\n - 100ms\n - 250ms\n - 500ms\n - 1s\n - 2500ms\n - 5s\n - 10s\n web:\n server:\n request:\n ignore-trailing-slash: true\n\nlogging:\n level:\n org.apache.poi: WARN\n # Spring AI logs the full prompt at WARN when the provider returns empty\n # choices; suppress prompt/completion output while keeping the rest of the\n # application logs at their default levels.\n org.springframework.ai.openai.OpenAiChatModel: ERROR\n structured:\n format:\n console: logstash\n\nkeycloak:\n admin:\n server-url: ${KEYCLOAK_ADMIN_SERVER_URL:https://auth.wotbtools.com}\n realm: ${KEYCLOAK_ADMIN_REALM:wotbtools}\n client-id: ${KEYCLOAK_ADMIN_CLIENT_ID:wotbtools-admin-api}\n client-secret: ${KEYCLOAK_ADMIN_CLIENT_SECRET}\n\nwotb:\n ai:\n # empty default: app still starts without a key; /api/replay/analyze returns AI_NOT_CONFIGURED\n api-key: ${AI_API_KEY:}\n base-url: ${AI_BASE_URL:https://api.deepseek.com}\n model: ${AI_MODEL:deepseek-v4-flash}\n connect-timeout-sec: ${AI_CONNECT_TIMEOUT_SEC:10}\n timeout-sec: ${AI_TIMEOUT_SEC:300}\n # total budget for one AiChatGateway.chat() lifecycle (attempts + retries + backoff)\n call-timeout-sec: ${AI_CALL_TIMEOUT_SEC:315}\n retry-max-attempts: ${AI_RETRY_MAX_ATTEMPTS:3}\n retry-initial-backoff-millis: ${AI_RETRY_INITIAL_BACKOFF_MS:1000}\n retry-max-backoff-millis: ${AI_RETRY_MAX_BACKOFF_MS:8000}\n retry-backoff-multiplier: ${AI_RETRY_BACKOFF_MULTIPLIER:2.0}\n context-window-tokens: ${AI_CONTEXT_WINDOW_TOKENS:1000000}\n single-replay-max-input-tokens: ${AI_SINGLE_REPLAY_MAX_INPUT_TOKENS:940000}\n max-output-tokens: ${AI_MAX_OUTPUT_TOKENS:32768}\n prompt-safety-margin-tokens: ${AI_PROMPT_SAFETY_MARGIN_TOKENS:16384}\n thinking-enabled: ${AI_THINKING_ENABLED:true}\n reasoning-effort: ${AI_REASONING_EFFORT:max}\n replay:\n max-concurrent-jobs: ${REPLAY_MAX_CONCURRENT_JOBS:2}\n coordinate:\n half-extent: ${REPLAY_COORDINATE_HALF_EXTENT:250}\n clamp-tolerance: ${REPLAY_COORDINATE_CLAMP_TOLERANCE:12.5}\n boost:\n auto-confirm-hours: ${BOOST_AUTO_CONFIRM_HOURS:72}\n auto-confirm-scan-ms: ${BOOST_AUTO_CONFIRM_SCAN_MS:300000}\n"}}}}