@bitkyc08/opencodex 2.38.0 → 2.39.0

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.
Files changed (81) hide show
  1. package/bin/ocx.mjs +58 -6
  2. package/gui/dist/assets/index-D-lchsPw.js +112 -0
  3. package/gui/dist/assets/index-uvENYLin.css +1 -0
  4. package/gui/dist/index.html +2 -2
  5. package/gui/dist/provider-icons/baseten.svg +13 -0
  6. package/gui/dist/provider-icons/bizrouter.svg +41 -0
  7. package/gui/dist/provider-icons/cerebras.svg +26 -0
  8. package/gui/dist/provider-icons/deepinfra.svg +75 -0
  9. package/gui/dist/provider-icons/digitalocean.svg +10 -0
  10. package/gui/dist/provider-icons/featherless.svg +4 -0
  11. package/gui/dist/provider-icons/gajae-code.svg +410 -0
  12. package/gui/dist/provider-icons/hermes-agent.svg +207 -0
  13. package/gui/dist/provider-icons/hyperbolic.svg +18 -0
  14. package/gui/dist/provider-icons/kilo.svg +13 -0
  15. package/gui/dist/provider-icons/litellm.svg +1 -0
  16. package/gui/dist/provider-icons/minimax.svg +1 -0
  17. package/gui/dist/provider-icons/nanogpt.svg +74 -0
  18. package/gui/dist/provider-icons/nebius.svg +1 -0
  19. package/gui/dist/provider-icons/neuralwatt.svg +27 -0
  20. package/gui/dist/provider-icons/nous.svg +149 -0
  21. package/gui/dist/provider-icons/novita.svg +32 -0
  22. package/gui/dist/provider-icons/orcarouter.svg +175 -0
  23. package/gui/dist/provider-icons/parallel.svg +13 -0
  24. package/gui/dist/provider-icons/sambanova.svg +276 -0
  25. package/gui/dist/provider-icons/scaleway.svg +11 -0
  26. package/gui/dist/provider-icons/siliconflow.svg +18 -0
  27. package/gui/dist/provider-icons/synthetic.svg +12 -0
  28. package/gui/dist/provider-icons/together.svg +18 -0
  29. package/gui/dist/provider-icons/umans.svg +30 -0
  30. package/gui/dist/provider-icons/venice.svg +165 -0
  31. package/gui/dist/provider-icons/vultr.svg +15 -0
  32. package/gui/dist/provider-icons/zai.svg +218 -0
  33. package/gui/dist/provider-icons/zenmux.svg +1 -0
  34. package/package.json +1 -1
  35. package/src/adapters/cursor/live-models.ts +1 -0
  36. package/src/adapters/openai-responses.ts +72 -10
  37. package/src/bridge.ts +15 -15
  38. package/src/cli/dispatch.ts +54 -18
  39. package/src/cli/index.ts +420 -30
  40. package/src/cli/integrations.ts +24 -2
  41. package/src/cli/uninstall-plan.ts +86 -0
  42. package/src/codex/account-store.ts +121 -8
  43. package/src/codex/auth-api.ts +202 -33
  44. package/src/codex/catalog/provider-fetch.ts +76 -9
  45. package/src/codex/history-job.ts +10 -0
  46. package/src/codex/history-manifest.ts +35 -2
  47. package/src/codex/history-provider.ts +196 -19
  48. package/src/codex/history-worker.ts +3 -0
  49. package/src/codex/quota-401-recovery.ts +190 -0
  50. package/src/codex/quota-recovery-timing.ts +28 -0
  51. package/src/codex/quota.ts +6 -0
  52. package/src/codex/routing.ts +68 -16
  53. package/src/codex/subagent-model-fallback.ts +4 -1
  54. package/src/config/pending-teardown-names.d.mts +8 -0
  55. package/src/config/pending-teardown-names.mjs +69 -0
  56. package/src/config/pending-teardown.ts +286 -0
  57. package/src/generated/compatibility-version.json +84 -32
  58. package/src/integrations/journal.ts +12 -1
  59. package/src/integrations/writer.ts +82 -7
  60. package/src/lib/process-control.ts +30 -5
  61. package/src/lib/state-store-registrations.ts +8 -0
  62. package/src/oauth/index.ts +220 -13
  63. package/src/oauth/store.ts +220 -18
  64. package/src/responses/spill-store.ts +20 -0
  65. package/src/responses/state.ts +288 -2
  66. package/src/server/management/integration-routes.ts +36 -5
  67. package/src/server/management-api.ts +66 -12
  68. package/src/server/responses/encrypted-payload.ts +18 -1
  69. package/src/server/stop-teardown.ts +84 -0
  70. package/src/service.ts +155 -20
  71. package/src/update/index.ts +36 -4
  72. package/src/update/proxy-liveness-probe.d.mts +6 -0
  73. package/src/update/proxy-liveness-probe.mjs +84 -0
  74. package/src/update/stop-contract.d.mts +2 -0
  75. package/src/update/stop-contract.mjs +15 -0
  76. package/src/update/stop-decision.d.mts +10 -0
  77. package/src/update/stop-decision.mjs +34 -0
  78. package/src/vision/eligibility.ts +19 -1
  79. package/src/vision/index.ts +4 -18
  80. package/gui/dist/assets/index-C14iCj_Q.js +0 -112
  81. package/gui/dist/assets/index-D7PIz7_g.css +0 -1
@@ -0,0 +1,165 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160.000000 160.000000"><g transform="translate(0.000000,160.000000) scale(0.100000,-0.100000)"
2
+ fill="#000000" stroke="none"><path fill="#102b43" d="M637 1382 c-26 -27 -27 -32 -27 -137 l0 -110 87 -87 c48 -49 95 -88
3
+ 103 -88 8 0 55 39 103 88 l87 87 0 111 c0 108 -1 111 -28 137 l-28 27 -59 -60
4
+ c-33 -33 -66 -60 -74 -60 -9 0 -43 27 -76 60 l-61 60 -27 -28z m95 -59 l58
5
+ -57 0 -113 c0 -62 -3 -113 -7 -113 -4 0 -33 26 -65 57 l-58 57 0 113 c0 62 3
6
+ 113 7 113 4 0 33 -26 65 -57z m208 -56 l0 -113 -58 -57 c-32 -31 -61 -57 -65
7
+ -57 -4 0 -7 50 -7 112 l0 112 57 58 c32 32 61 58 65 58 4 0 8 -51 8 -113z
8
+ M263 1264 c-4 -10 13 -35 53 -75 l58 -59 -48 -49 -49 -50 44 -3 44 -3 3 -47
9
+ c2 -27 6 -48 10 -48 3 0 28 21 54 47 l48 48 143 -143 142 -142 -32 -32 c-31
10
+ -31 -33 -31 -52 -14 -21 19 -51 16 -51 -5 0 -7 8 -21 17 -31 15 -17 15 -20
11
+ -11 -47 l-28 -29 -41 19 c-88 40 -191 18 -254 -55 -41 -46 -57 -97 -50 -163 7
12
+ -68 38 -118 95 -154 92 -58 186 -47 263 30 74 73 84 146 38 259 -13 32 -13 35
13
+ 15 58 28 25 29 25 50 6 37 -34 65 0 31 38 -14 15 -13 20 6 43 26 34 49 34 79
14
+ 2 22 -23 22 -26 7 -43 -36 -39 -9 -75 29 -40 21 19 22 19 50 -6 28 -23 28 -26
15
+ 15 -58 -46 -113 -36 -186 38 -259 77 -77 171 -88 263 -30 57 36 88 86 95 154
16
+ 7 66 -9 117 -50 163 -63 73 -166 95 -254 55 l-41 -19 -28 29 c-27 28 -27 29
17
+ -9 48 18 21 15 51 -6 51 -7 0 -21 -8 -31 -17 -18 -16 -20 -15 -51 15 l-32 32
18
+ 142 142 143 143 48 -48 c26 -26 51 -47 54 -47 4 0 8 21 10 48 l3 47 44 3 44 3
19
+ -49 50 -48 49 57 58 c59 60 68 78 41 89 -11 4 -87 -66 -270 -248 l-254 -254
20
+ -253 253 c-138 138 -258 252 -265 252 -7 0 -15 -7 -19 -16z m275 -690 c12 -14
21
+ 22 -36 22 -48 0 -19 7 -25 35 -30 106 -20 94 -176 -14 -176 -16 0 -21 -6 -21
22
+ -29 0 -59 -76 -100 -132 -70 -22 12 -52 74 -43 89 4 6 -6 10 -20 10 -90 0
23
+ -123 125 -44 165 15 8 37 15 49 15 12 0 19 4 16 9 -3 5 -1 23 5 40 22 63 102
24
+ 76 147 25z m631 21 c28 -14 56 -68 45 -86 -3 -5 4 -9 16 -9 12 0 34 -7 49 -15
25
+ 79 -40 46 -165 -44 -165 -14 0 -24 -4 -20 -10 9 -15 -21 -77 -43 -89 -56 -30
26
+ -132 11 -132 70 0 25 -4 29 -29 29 -40 0 -81 43 -81 85 0 43 33 83 75 91 27 5
27
+ 35 11 35 28 0 40 44 83 88 85 7 1 26 -6 41 -14z"/><path fill="#c7cdd1" d="M624 1388 l-29 -33 33 29 c17 17 32 31 32 33 0 8 -8 1 -36 -29z M940
28
+ 1417 c0 -2 15 -16 33 -33 l32 -29 -29 33 c-28 30 -36 37 -36 29z M548 1040
29
+ l252 -255 253 255 252 255 -252 -250 -253 -250 -252 250 -253 250 253 -255z
30
+ M685 1040 c49 -49 92 -90 95 -90 2 0 -36 41 -85 90 -49 50 -92 90 -95 90 -2 0
31
+ 36 -40 85 -90z M905 1038 l-90 -93 93 90 c85 83 97 95 89 95 -1 0 -43 -42 -92
32
+ -92z M250 1018 c0 -5 26 -7 58 -7 61 1 55 6 -15 11 -24 2 -43 0 -43 -4z M1290
33
+ 1020 l-55 -7 58 -1 c32 -1 57 2 57 8 0 6 -1 9 -2 8 -2 -1 -28 -4 -58 -8z M418
34
+ 955 c-31 -30 -53 -55 -49 -55 4 0 31 25 61 55 70 71 62 71 -12 0z M1172 955
35
+ c32 -32 59 -57 61 -55 1 3 -24 30 -58 60 l-60 54 57 -59z M723 718 c-19 -19
36
+ -24 -20 -40 -8 -17 13 -17 13 0 -5 17 -19 18 -19 44 8 15 15 25 27 22 27 -2 0
37
+ -14 -10 -26 -22z M872 715 c27 -29 28 -29 45 -10 17 18 17 18 0 5 -15 -11 -21
38
+ -10 -45 11 l-27 23 27 -29z M620 705 c-6 -8 -10 -19 -8 -24 1 -6 8 1 15 14 13
39
+ 28 11 31 -7 10z M972 698 c7 -15 15 -23 17 -17 2 6 -4 18 -13 27 -15 15 -15
40
+ 15 -4 -10z M448 633 c12 -2 32 -2 45 0 12 2 2 4 -23 4 -25 0 -35 -2 -22 -4z
41
+ M624 618 l-19 -23 23 19 c12 11 22 21 22 23 0 8 -8 2 -26 -19z M965 620 c10
42
+ -11 20 -20 23 -20 3 0 -3 9 -13 20 -10 11 -20 20 -23 20 -3 0 3 -9 13 -20z
43
+ M1108 633 c12 -2 30 -2 40 0 9 3 -1 5 -23 4 -22 0 -30 -2 -17 -4z M760 626 c0
44
+ -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M819 613 c-13 -16
45
+ -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z M468 593 c7 -3 16 -2 19 1 4
46
+ 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z M1118 593 c7 -3 16 -2 19 1 4 3 -2 6 -13 5
47
+ -11 0 -14 -3 -6 -6z M414 568 l-19 -23 23 19 c12 11 22 21 22 23 0 8 -8 2 -26
48
+ -19z M1175 570 c10 -11 20 -20 23 -20 3 0 -3 9 -13 20 -10 11 -20 20 -23 20
49
+ -3 0 3 -9 13 -20z M675 560 c-10 -11 -16 -22 -14 -24 2 -2 12 7 22 20 22 29
50
+ 17 32 -8 4z M769 563 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8
51
+ -17 -17z M810 576 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z
52
+ M916 558 c10 -14 21 -24 23 -22 3 3 -6 15 -18 27 l-24 22 19 -27z M358 483 c7
53
+ -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z M578 483 c7 -3 16 -2 19 1
54
+ 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z M1008 483 c7 -3 16 -2 19 1 4 3 -2 6 -13
55
+ 5 -11 0 -14 -3 -6 -6z M1228 483 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14
56
+ -3 -6 -6z M304 458 l-19 -23 23 19 c12 11 22 21 22 23 0 8 -8 2 -26 -19z
57
+ M1285 460 c10 -11 20 -20 23 -20 3 0 -3 9 -13 20 -10 11 -20 20 -23 20 -3 0 3
58
+ -9 13 -20z M242 410 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z
59
+ M1352 410 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M629 353 c-13
60
+ -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17 -17z M950 366 c0 -2 8
61
+ -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M545 330 c-3 -6 1 -7 9
62
+ -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z M1030 336 c0 -2 7 -7 16 -10 8 -3 12
63
+ -2 9 4 -6 10 -25 14 -25 6z M310 245 c13 -14 26 -25 28 -25 3 0 -5 11 -18 25
64
+ -13 14 -26 25 -28 25 -3 0 5 -11 18 -25z M1279 243 l-24 -28 28 24 c15 14 27
65
+ 26 27 28 0 8 -8 1 -31 -24z M519 243 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21
66
+ -2 0 -10 -8 -17 -17z M1060 256 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16
67
+ -21 21 -21 13z"/><path fill="#2d4459" d="M670 1409 c0 -2 27 -31 60 -64 33 -33 60 -57 60 -54 0 2 -27 31 -60
68
+ 64 -33 33 -60 57 -60 54z M865 1348 l-60 -63 63 60 c34 33 62 61 62 62 0 8
69
+ -10 -1 -65 -59z M661 1378 c3 -2 34 -30 69 -63 l65 -60 -60 63 c-33 34 -64 62
70
+ -69 62 -5 0 -7 -1 -5 -2z M865 1318 l-60 -63 65 60 c35 33 66 61 69 63 2 1 0
71
+ 2 -5 2 -5 0 -36 -28 -69 -62z M310 1188 l54 -58 -47 -48 c-26 -26 -47 -51 -47
72
+ -55 0 -4 21 -6 48 -5 l47 1 -44 4 -44 4 49 50 49 49 -60 58 -60 57 55 -57z
73
+ M1280 1185 l-54 -55 48 -49 49 -50 -44 -4 -44 -4 48 -1 c26 -1 47 1 47 5 0 4
74
+ -21 29 -47 55 l-47 48 54 55 c30 30 52 55 49 55 -2 0 -29 -25 -59 -55z M717
75
+ 1100 c34 -35 64 -62 65 -60 2 3 -26 32 -62 65 l-65 59 62 -64z M873 1100 c-33
76
+ -33 -58 -60 -54 -60 4 0 33 27 66 60 77 78 68 78 -12 0z M615 878 c77 -79 142
77
+ -142 145 -140 5 3 -272 282 -280 282 -3 0 57 -64 135 -142z M975 880 c-76 -76
78
+ -137 -141 -135 -142 3 -2 68 61 145 140 78 78 138 142 135 142 -3 0 -68 -63
79
+ -145 -140z M620 683 c0 -5 10 -18 23 -29 l22 -19 -20 25 c-11 14 -21 27 -22
80
+ 29 -2 2 -3 0 -3 -6z M764 668 l-19 -23 23 19 c21 18 27 26 19 26 -2 0 -12 -10
81
+ -23 -22z M831 664 c13 -17 26 -30 28 -27 3 2 -8 16 -24 31 l-28 27 24 -31z
82
+ M956 662 l-19 -27 24 22 c12 12 21 24 18 27 -2 2 -13 -8 -23 -22z M458 623
83
+ c12 -2 30 -2 40 0 9 3 -1 5 -23 4 -22 0 -30 -2 -17 -4z M1108 623 c12 -2 30
84
+ -2 40 0 9 3 -1 5 -23 4 -22 0 -30 -2 -17 -4z M458 603 c6 -2 18 -2 25 0 6 3 1
85
+ 5 -13 5 -14 0 -19 -2 -12 -5z M1118 603 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0
86
+ -19 -2 -12 -5z M700 596 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21
87
+ -21 13z M879 583 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17
88
+ -17z M314 558 l-29 -33 33 29 c30 28 37 36 29 36 -2 0 -16 -15 -33 -32z M664
89
+ 568 l-19 -23 23 19 c21 18 27 26 19 26 -2 0 -12 -10 -23 -22z M925 570 c10
90
+ -11 20 -20 23 -20 3 0 -3 9 -13 20 -10 11 -20 20 -23 20 -3 0 3 -9 13 -20z
91
+ M1250 587 c0 -2 15 -16 33 -33 l32 -29 -29 33 c-28 30 -36 37 -36 29z M353
92
+ 493 c9 -2 23 -2 30 0 6 3 -1 5 -18 5 -16 0 -22 -2 -12 -5z M568 493 c6 -2 18
93
+ -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z M1008 493 c6 -2 18 -2 25 0 6 3 1
94
+ 5 -13 5 -14 0 -19 -2 -12 -5z M1223 493 c9 -2 23 -2 30 0 6 3 -1 5 -18 5 -16
95
+ 0 -22 -2 -12 -5z M251 404 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5
96
+ -13z M1341 404 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z M290 356
97
+ c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M1289 343 c-13
98
+ -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17 -17z M619 253 l-24 -28
99
+ 28 24 c15 14 27 26 27 28 0 8 -8 1 -31 -24z M970 255 c13 -14 26 -25 28 -25 3
100
+ 0 -5 11 -18 25 -13 14 -26 25 -28 25 -3 0 5 -11 18 -25z M400 246 c0 -2 8 -10
101
+ 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M1179 233 c-13 -16 -12 -17 4
102
+ -4 16 13 21 21 13 21 -2 0 -10 -8 -17 -17z"/><path fill="#556878" d="M629 1383 l-24 -28 28 24 c25 23 32 31 24 31 -2 0 -14 -12 -28 -27z
103
+ M960 1385 c13 -14 26 -25 28 -25 3 0 -5 11 -18 25 -13 14 -26 25 -28 25 -3 0
104
+ 5 -11 18 -25z M664 1265 c0 -60 1 -84 3 -52 2 32 2 81 0 110 -2 29 -3 3 -3
105
+ -58z M934 1265 c0 -60 1 -84 3 -52 2 32 2 81 0 110 -2 29 -3 3 -3 -58z M604
106
+ 1245 c0 -60 1 -84 3 -52 2 32 2 81 0 110 -2 29 -3 3 -3 -58z M994 1245 c0 -60
107
+ 1 -84 3 -52 2 32 2 81 0 110 -2 29 -3 3 -3 -58z M281 1288 c3 -2 113 -109 244
108
+ -238 l240 -235 -235 238 c-129 130 -239 237 -244 237 -5 0 -7 -1 -5 -2z M1070
109
+ 1053 l-235 -238 240 235 c131 129 241 236 244 238 2 1 0 2 -5 2 -5 0 -115
110
+ -107 -244 -237z M690 1045 c47 -47 87 -85 90 -85 2 0 -33 38 -80 85 -47 47
111
+ -87 85 -90 85 -2 0 33 -38 80 -85z M870 1013 l-55 -58 58 55 c31 30 57 56 57
112
+ 57 0 8 -10 -1 -60 -54z M415 958 l-50 -53 53 50 c48 46 57 55 49 55 -1 0 -25
113
+ -24 -52 -52z M1175 960 c27 -27 51 -50 54 -50 3 0 -17 23 -44 50 -27 28 -51
114
+ 50 -54 50 -3 0 17 -22 44 -50z M629 703 c-13 -16 -12 -17 4 -4 9 7 17 15 17
115
+ 17 0 8 -8 3 -21 -13z M677 699 c12 -12 24 -21 27 -18 2 2 -8 13 -22 23 l-27
116
+ 19 22 -24z M911 700 c-13 -11 -19 -20 -14 -20 6 0 18 9 28 20 23 25 17 25 -14
117
+ 0z M950 716 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M750
118
+ 626 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M829 613
119
+ c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10 -8 -17 -17z M348 323 c6 -2
120
+ 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z M550 321 c0 -4 11 -6 25 -3 14
121
+ 2 25 6 25 8 0 2 -11 4 -25 4 -14 0 -25 -4 -25 -9z M1000 326 c0 -2 11 -6 25
122
+ -8 14 -3 25 -1 25 3 0 5 -11 9 -25 9 -14 0 -25 -2 -25 -4z M1228 323 c6 -2 18
123
+ -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z M315 250 c10 -11 20 -20 23 -20 3
124
+ 0 -3 9 -13 20 -10 11 -20 20 -23 20 -3 0 3 -9 13 -20z M1274 248 l-19 -23 23
125
+ 19 c12 11 22 21 22 23 0 8 -8 2 -26 -19z"/><path fill="#96a1ab" d="M732 1355 l68 -70 52 55 53 55 -53 -50 -52 -49 -68 64 -67 65 67 -70z
126
+ M720 1315 c30 -30 57 -55 59 -55 3 0 -19 25 -49 55 -30 30 -57 55 -59 55 -3 0
127
+ 19 -25 49 -55z M870 1313 l-55 -58 58 55 c53 50 62 60 54 60 -1 0 -27 -26 -57
128
+ -57z M300 1188 l54 -58 -49 -52 -50 -53 55 53 55 52 -60 58 -60 57 55 -57z
129
+ M1290 1185 l-55 -55 55 -53 55 -52 -50 53 -49 52 54 55 c30 30 52 55 49 55 -2
130
+ 0 -29 -25 -59 -55z M720 1105 c30 -30 57 -55 59 -55 3 0 -19 25 -49 55 -30 30
131
+ -57 55 -59 55 -3 0 19 -25 49 -55z M875 1108 l-50 -53 53 50 c48 46 57 55 49
132
+ 55 -1 0 -25 -24 -52 -52z M363 960 c0 -30 2 -43 4 -27 2 15 2 39 0 55 -2 15
133
+ -4 2 -4 -28z M610 878 c125 -128 140 -143 140 -135 0 1 -62 63 -137 137 l-138
134
+ 135 135 -137z M980 873 l-135 -138 138 135 c75 74 137 136 137 137 0 8 -15 -7
135
+ -140 -134z M1233 960 c0 -30 2 -43 4 -27 2 15 2 39 0 55 -2 15 -4 2 -4 -28z
136
+ M769 663 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z M810 676
137
+ c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M620 666 c0 -2 8
138
+ -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M959 653 c-13 -16 -12
139
+ -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z M700 586 c0 -2 8 -10 18 -17 15
140
+ -13 16 -12 3 4 -13 16 -21 21 -21 13z M879 573 c-13 -16 -12 -17 4 -4 16 13
141
+ 21 21 13 21 -2 0 -10 -8 -17 -17z M392 520 c0 -14 2 -19 5 -12 2 6 2 18 0 25
142
+ -3 6 -5 1 -5 -13z M1202 520 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5
143
+ -13z M282 410 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M1312 410
144
+ c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M392 300 c0 -14 2 -19 5
145
+ -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M1202 300 c0 -14 2 -19 5 -12 2 6 2 18 0
146
+ 25 -3 6 -5 1 -5 -13z M400 256 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16
147
+ -21 21 -21 13z M1179 243 c-13 -16 -12 -17 4 -4 16 13 21 21 13 21 -2 0 -10
148
+ -8 -17 -17z"/><path fill="#707f8d" d="M812 1163 c-1 -56 1 -104 6 -106 4 -3 6 27 4 66 -5 129 -9 144 -10
149
+ 40z M784 1155 c0 -55 1 -76 3 -47 2 29 2 74 0 100 -2 26 -3 2 -3 -53z M959
150
+ 1103 l-34 -38 38 34 c34 33 42 41 34 41 -2 0 -19 -17 -38 -37z M760 816 c0 -2
151
+ 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21 13z M819 803 c-13 -16 -12
152
+ -17 4 -4 9 7 17 15 17 17 0 8 -8 3 -21 -13z M724 708 l-19 -23 23 19 c21 18
153
+ 27 26 19 26 -2 0 -12 -10 -23 -22z M865 710 c10 -11 20 -20 23 -20 3 0 -3 9
154
+ -13 20 -10 11 -20 20 -23 20 -3 0 3 -9 13 -20z M624 608 l-19 -23 23 19 c21
155
+ 18 27 26 19 26 -2 0 -12 -10 -23 -22z M965 610 c10 -11 20 -20 23 -20 3 0 -3
156
+ 9 -13 20 -10 11 -20 20 -23 20 -3 0 3 -9 13 -20z M409 573 c-13 -16 -12 -17 4
157
+ -4 16 13 21 21 13 21 -2 0 -10 -8 -17 -17z M670 565 c-13 -14 -22 -27 -19 -29
158
+ 2 -2 14 10 27 25 29 36 24 38 -8 4z M921 564 c13 -17 26 -30 28 -27 3 2 -8 16
159
+ -24 31 l-28 27 24 -31z M1170 586 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13
160
+ 16 -21 21 -21 13z M309 563 c-13 -16 -12 -17 4 -4 9 7 17 15 17 17 0 8 -8 3
161
+ -21 -13z M1270 576 c0 -2 8 -10 18 -17 15 -13 16 -12 3 4 -13 16 -21 21 -21
162
+ 13z M692 410 c0 -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M902 410 c0
163
+ -14 2 -19 5 -12 2 6 2 18 0 25 -3 6 -5 1 -5 -13z M458 183 c6 -2 18 -2 25 0 6
164
+ 3 1 5 -13 5 -14 0 -19 -2 -12 -5z M1118 183 c6 -2 18 -2 25 0 6 3 1 5 -13 5
165
+ -14 0 -19 -2 -12 -5z"/></g></svg>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160.000000 160.000000"><g transform="translate(0.000000,160.000000) scale(0.100000,-0.100000)"
2
+ fill="#000000" stroke="none"><path fill="#007cfb" d="M956 1459 c-17 -13 -26 -30 -26 -48 0 -39 307 -528 350 -558 54 -38
3
+ 80 -16 185 156 28 45 69 111 93 147 43 68 52 103 28 123 -7 6 -37 50 -67 97
4
+ -31 51 -63 90 -77 95 -13 5 -121 9 -241 9 -206 0 -220 -1 -245 -21z M235 1145
5
+ c-14 -13 -25 -35 -25 -49 0 -14 47 -98 110 -199 61 -96 110 -179 110 -185 0
6
+ -6 4 -12 8 -14 8 -3 112 -155 112 -163 0 -9 234 -372 253 -392 27 -30 77 -30
7
+ 104 0 21 24 191 292 217 344 16 31 15 34 -12 80 -25 41 -231 371 -331 528 -17
8
+ 27 -41 55 -54 62 -16 9 -87 12 -245 13 l-223 0 -24 -25z"/><path fill="#0079f5" d="M1490 1420 c6 -11 13 -20 16 -20 2 0 0 9 -6 20 -6 11 -13 20 -16 20
9
+ -2 0 0 -9 6 -20z M1570 1180 c-6 -11 -8 -20 -6 -20 3 0 10 9 16 20 6 11 8 20
10
+ 6 20 -3 0 -10 -9 -16 -20z M531 553 c7 -12 15 -20 18 -17 3 2 -3 12 -13 22
11
+ -17 16 -18 16 -5 -5z M1120 550 c6 -11 13 -20 16 -20 2 0 0 9 -6 20 -6 11 -13
12
+ 20 -16 20 -2 0 0 -9 6 -20z M1116 473 c-6 -14 -5 -15 5 -6 7 7 10 15 7 18 -3
13
+ 3 -9 -2 -12 -12z M838 113 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12
14
+ -5z"/><path fill="#006ad8" d="M1103 1483 c59 -2 155 -2 215 0 59 1 10 3 -108 3 -118 0 -167 -2
15
+ -107 -3z"/></g></svg>
@@ -0,0 +1,218 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
3
+ viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
4
+ <style type="text/css">
5
+ .st0{opacity:0.3;fill:#E2E4E7;}
6
+ .st1{opacity:0.8;fill:#E2E4E7;stroke:#FFFFFF;stroke-width:5;stroke-miterlimit:10;}
7
+ .st2{fill:url(#SVGID_1_);}
8
+ .st3{fill:none;stroke:#E0E4E9;stroke-width:0.25;stroke-miterlimit:10;}
9
+ .st4{fill:none;}
10
+ .st5{fill:#9DA1A5;}
11
+ .st6{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
12
+ .st7{fill-rule:evenodd;clip-rule:evenodd;fill:#DFE2E7;}
13
+ .st8{fill-rule:evenodd;clip-rule:evenodd;fill:#CDD4DA;}
14
+ .st9{fill-rule:evenodd;clip-rule:evenodd;fill:#B3BCC7;}
15
+ .st10{fill-rule:evenodd;clip-rule:evenodd;fill:#9DAAB7;}
16
+ .st11{fill-rule:evenodd;clip-rule:evenodd;fill:#8698A8;}
17
+ .st12{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_2_);}
18
+ .st13{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_3_);}
19
+ .st14{fill:#1F63EC;}
20
+ .st15{fill:#2D2D2D;}
21
+ .st16{fill:none;stroke:#E0E4E9;stroke-width:0.5;stroke-miterlimit:10;}
22
+ .st17{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_4_);}
23
+ .st18{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_5_);}
24
+ .st19{fill:none;stroke:#677380;stroke-width:0.5;stroke-miterlimit:10;}
25
+ .st20{fill:none;stroke:url(#SVGID_6_);stroke-width:2;stroke-miterlimit:10;}
26
+ .st21{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_7_);}
27
+ .st22{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_8_);}
28
+ .st23{fill:#FFFFFF;}
29
+ .st24{fill-rule:evenodd;clip-rule:evenodd;fill:#2D2D2D;}
30
+ .st25{clip-path:url(#SVGID_10_);}
31
+ .st26{clip-path:url(#SVGID_12_);}
32
+ .st27{fill:url(#SVGID_13_);}
33
+ .st28{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_14_);}
34
+ .st29{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_15_);}
35
+ .st30{clip-path:url(#SVGID_17_);}
36
+ .st31{clip-path:url(#SVGID_19_);}
37
+ .st32{fill:url(#SVGID_20_);}
38
+ .st33{fill:none;stroke:url(#SVGID_21_);stroke-width:2;stroke-miterlimit:10;}
39
+ .st34{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_22_);}
40
+ .st35{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_23_);}
41
+ .st36{clip-path:url(#SVGID_25_);}
42
+ .st37{clip-path:url(#SVGID_27_);}
43
+ .st38{fill:url(#SVGID_28_);}
44
+ .st39{clip-path:url(#SVGID_30_);}
45
+ .st40{clip-path:url(#SVGID_32_);}
46
+ .st41{fill:url(#SVGID_33_);}
47
+ .st42{fill-rule:evenodd;clip-rule:evenodd;fill:#126EF6;}
48
+ .st43{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
49
+ .st44{clip-path:url(#SVGID_35_);}
50
+ .st45{clip-path:url(#SVGID_37_);}
51
+ .st46{fill:url(#SVGID_38_);}
52
+ .st47{fill-rule:evenodd;clip-rule:evenodd;fill:#9DA1A5;}
53
+ .st48{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_39_);}
54
+ .st49{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_40_);}
55
+ .st50{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_41_);}
56
+ .st51{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_42_);}
57
+ .st52{fill:none;stroke:url(#SVGID_43_);stroke-width:2;stroke-miterlimit:10;}
58
+ .st53{fill-rule:evenodd;clip-rule:evenodd;fill:none;stroke:#E0E4E9;stroke-width:0.5;stroke-miterlimit:10;}
59
+ .st54{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_44_);}
60
+ .st55{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_45_);}
61
+ .st56{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_46_);}
62
+ .st57{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_47_);}
63
+ .st58{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_48_);}
64
+ .st59{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_49_);}
65
+ .st60{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_50_);}
66
+ .st61{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_51_);}
67
+ .st62{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_52_);}
68
+ .st63{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_53_);}
69
+ .st64{clip-path:url(#SVGID_55_);}
70
+ .st65{clip-path:url(#SVGID_57_);}
71
+ .st66{fill:url(#SVGID_58_);}
72
+ .st67{clip-path:url(#SVGID_60_);}
73
+ .st68{clip-path:url(#SVGID_62_);}
74
+ .st69{fill:url(#SVGID_63_);}
75
+ .st70{fill:none;stroke:url(#SVGID_64_);stroke-width:2;stroke-miterlimit:10;}
76
+ .st71{clip-path:url(#SVGID_66_);}
77
+ .st72{clip-path:url(#SVGID_68_);}
78
+ .st73{fill:url(#SVGID_69_);}
79
+ .st74{clip-path:url(#SVGID_71_);}
80
+ .st75{clip-path:url(#SVGID_73_);}
81
+ .st76{fill:url(#SVGID_74_);}
82
+ .st77{clip-path:url(#SVGID_76_);}
83
+ .st78{clip-path:url(#SVGID_78_);}
84
+ .st79{fill:url(#SVGID_79_);}
85
+ .st80{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_80_);}
86
+ .st81{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_81_);}
87
+ .st82{clip-path:url(#SVGID_83_);}
88
+ .st83{clip-path:url(#SVGID_85_);}
89
+ .st84{fill:url(#SVGID_86_);}
90
+ .st85{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_87_);}
91
+ .st86{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_88_);}
92
+ .st87{clip-path:url(#SVGID_90_);}
93
+ .st88{clip-path:url(#SVGID_92_);}
94
+ .st89{fill:url(#SVGID_93_);}
95
+ .st90{fill:none;stroke:url(#SVGID_94_);stroke-width:2;stroke-miterlimit:10;}
96
+ .st91{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_95_);}
97
+ .st92{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_96_);}
98
+ .st93{clip-path:url(#SVGID_98_);}
99
+ .st94{clip-path:url(#SVGID_100_);}
100
+ .st95{fill:url(#SVGID_101_);}
101
+ .st96{clip-path:url(#SVGID_103_);}
102
+ .st97{clip-path:url(#SVGID_105_);}
103
+ .st98{fill:url(#SVGID_106_);}
104
+ .st99{clip-path:url(#SVGID_108_);}
105
+ .st100{clip-path:url(#SVGID_110_);}
106
+ .st101{fill:url(#SVGID_111_);}
107
+ .st102{fill:#FFFFFF;stroke:#B3BCC7;stroke-width:0.275;stroke-miterlimit:10;}
108
+ .st103{clip-path:url(#SVGID_113_);}
109
+ .st104{fill:#FDD138;}
110
+ .st105{fill:#FCA62F;}
111
+ .st106{fill:#FB7927;}
112
+ .st107{fill:#F44B22;}
113
+ .st108{fill:#D81915;}
114
+ .st109{fill:#2D2D2D;stroke:#FFFFFF;stroke-width:0.3354;stroke-miterlimit:10;}
115
+ .st110{fill:none;stroke:#65727F;stroke-width:2;stroke-miterlimit:10;}
116
+ .st111{fill:none;stroke:#65727F;stroke-width:0.75;stroke-miterlimit:10;}
117
+ .st112{fill:url(#SVGID_114_);}
118
+ .st113{fill:#D06C50;}
119
+ .st114{fill:#2D2D2D;stroke:#B3BCC7;stroke-width:0.275;stroke-miterlimit:10;}
120
+ .st115{opacity:0.2;}
121
+ .st116{fill:none;stroke:#677380;stroke-width:0.3564;stroke-miterlimit:10;}
122
+ .st117{fill:none;stroke:#677380;stroke-width:0.3564;stroke-miterlimit:10;stroke-dasharray:1.0212,1.0212;}
123
+ .st118{fill:none;stroke:#677380;stroke-width:0.3564;stroke-miterlimit:10;stroke-dasharray:1.0205,1.0205;}
124
+ .st119{opacity:0.2;fill:none;}
125
+ .st120{fill:none;stroke:#677380;stroke-width:0.3689;stroke-miterlimit:10;}
126
+ .st121{fill:none;stroke:#677380;stroke-width:0.3689;stroke-miterlimit:10;stroke-dasharray:1.0509,1.0509;}
127
+ .st122{opacity:0.3;fill:#1F63EC;}
128
+ .st123{fill:#2D2D2D;stroke:#FFFFFF;stroke-width:0.3162;stroke-miterlimit:10;}
129
+ .st124{fill:#FFFFFF;stroke:#B3BCC7;stroke-width:0.3162;stroke-miterlimit:10;}
130
+ .st125{clip-path:url(#SVGID_118_);}
131
+ .st126{fill:url(#SVGID_119_);}
132
+ .st127{fill:none;stroke:#DFE2E7;stroke-width:0.75;stroke-miterlimit:10;}
133
+ .st128{fill:#9DA1A5;stroke:#FFFFFF;stroke-miterlimit:10;}
134
+ .st129{fill:url(#SVGID_120_);}
135
+ .st130{fill:none;stroke:#677380;stroke-width:0.75;stroke-miterlimit:10;}
136
+ .st131{opacity:0.4;}
137
+ .st132{clip-path:url(#SVGID_122_);}
138
+ .st133{clip-path:url(#SVGID_124_);}
139
+ .st134{fill:url(#SVGID_125_);}
140
+ .st135{fill:none;stroke:#8392A3;stroke-width:0.35;stroke-miterlimit:10;}
141
+ .st136{fill:none;stroke:#8392A3;stroke-width:0.35;stroke-miterlimit:10;stroke-dasharray:0.9951,0.9951;}
142
+ .st137{fill:none;stroke:#8392A3;stroke-width:0.35;stroke-miterlimit:10;stroke-dasharray:1.004,1.004;}
143
+ .st138{fill:none;stroke:url(#SVGID_126_);stroke-width:1.5;stroke-miterlimit:10;}
144
+ .st139{fill:url(#SVGID_127_);}
145
+ .st140{fill:none;stroke:#DDE0E4;stroke-width:0.35;stroke-miterlimit:10;}
146
+ .st141{fill:#2D2D2D;stroke:#A9B3BE;stroke-width:0.275;stroke-miterlimit:10;}
147
+ .st142{fill-rule:evenodd;clip-rule:evenodd;fill:#126EF4;}
148
+ .st143{fill:#FFFFFF;stroke:#B1BAC4;stroke-width:0.275;stroke-miterlimit:10;}
149
+ .st144{fill:#CE6C50;}
150
+ .st145{fill:#5B5B5B;}
151
+ .st146{fill:#8392A3;}
152
+ .st147{fill:none;stroke:url(#SVGID_128_);stroke-width:1.5;stroke-miterlimit:10;}
153
+ .st148{fill:url(#SVGID_129_);}
154
+ .st149{fill:none;stroke:#B5BDC4;stroke-width:0.7;stroke-miterlimit:10;}
155
+ .st150{opacity:0.6;fill:none;stroke:#78838E;stroke-width:0.35;stroke-miterlimit:10;}
156
+ .st151{opacity:0.2;fill:none;stroke:#8392A3;stroke-width:0.35;stroke-miterlimit:10;stroke-dasharray:1,1;}
157
+ .st152{fill:none;stroke:#DDE0E4;stroke-width:0.75;stroke-miterlimit:10;}
158
+ .st153{fill:none;stroke:#8392A3;stroke-width:0.5;stroke-miterlimit:10;}
159
+ .st154{opacity:0.2;fill:none;stroke:#677380;stroke-width:0.3564;stroke-miterlimit:10;stroke-dasharray:1.0182,1.0182;}
160
+ .st155{fill:none;stroke:#DDE0E4;stroke-width:0.765;stroke-miterlimit:10;}
161
+ .st156{fill:url(#SVGID_130_);}
162
+ .st157{fill:url(#SVGID_131_);}
163
+ .st158{fill:#B1BAC4;}
164
+ .st159{fill:#CBD1D8;}
165
+ .st160{fill:#0B1B2B;}
166
+ .st161{fill:#91D119;}
167
+ .st162{opacity:0.7;}
168
+ .st163{fill:#FFFFFF;stroke:#000000;stroke-width:0.4418;stroke-miterlimit:10;}
169
+ .st164{fill:none;stroke:#939CAA;stroke-width:0.2209;stroke-miterlimit:10;}
170
+ .st165{fill:none;stroke:#FFFFFF;stroke-width:3.0924;stroke-miterlimit:10;}
171
+ .st166{fill:url(#SVGID_132_);}
172
+ .st167{fill:none;stroke:url(#SVGID_133_);stroke-width:1.714;stroke-miterlimit:10;}
173
+ .st168{fill:url(#SVGID_134_);}
174
+ .st169{fill:url(#SVGID_135_);}
175
+ .st170{fill:url(#SVGID_136_);}
176
+ .st171{fill:url(#SVGID_137_);}
177
+ .st172{fill:url(#SVGID_138_);}
178
+ .st173{fill:url(#SVGID_139_);}
179
+ .st174{fill:url(#SVGID_140_);}
180
+ .st175{fill:url(#SVGID_141_);}
181
+ .st176{fill:url(#SVGID_142_);}
182
+ .st177{fill:url(#SVGID_143_);}
183
+ .st178{fill:url(#SVGID_144_);}
184
+ .st179{fill:none;stroke:#1F63EC;stroke-width:4;stroke-miterlimit:10;}
185
+ .st180{fill:none;stroke:#0B1B2B;stroke-width:4;stroke-miterlimit:10;}
186
+ .st181{fill:none;stroke:#677380;stroke-width:0.3989;stroke-miterlimit:10;}
187
+ .st182{fill:none;stroke:#677380;stroke-width:0.3989;stroke-miterlimit:10;stroke-dasharray:1.14,1.14;}
188
+ .st183{fill:#257AF1;}
189
+ .st184{opacity:0.3;fill:#FFFFFF;}
190
+ .st185{fill:none;stroke:#98A5B2;stroke-width:4;stroke-miterlimit:10;}
191
+ .st186{fill:none;stroke:#65727F;stroke-width:0.3989;stroke-miterlimit:10;}
192
+ .st187{fill:none;stroke:#65727F;stroke-width:0.3989;stroke-miterlimit:10;stroke-dasharray:1.14,1.14;}
193
+ .st188{fill:none;stroke:#DDDFE4;stroke-width:0.75;stroke-miterlimit:10;}
194
+ .st189{fill:#9A9EA2;}
195
+ .st190{fill-rule:evenodd;clip-rule:evenodd;fill:#3267AC;}
196
+ .st191{fill:#FFFFFF;stroke:#AFB8C3;stroke-width:0.275;stroke-miterlimit:10;}
197
+ .st192{fill:#C5694E;}
198
+ .st193{fill:#8192A2;}
199
+ .st194{fill:#2D2D2D;stroke:#FFFFFF;stroke-width:0.6317;stroke-miterlimit:10;}
200
+ </style>
201
+ <g id="图层_2">
202
+ </g>
203
+ <g id="图层_1">
204
+ <path class="st194" d="M24.51,28.51H5.49c-2.21,0-4-1.79-4-4V5.49c0-2.21,1.79-4,4-4h19.03c2.21,0,4,1.79,4,4v19.03
205
+ C28.51,26.72,26.72,28.51,24.51,28.51z"/>
206
+ <g>
207
+ <g>
208
+ <g>
209
+ <g>
210
+ <path class="st23" d="M15.47,7.1l-1.3,1.85c-0.2,0.29-0.54,0.47-0.9,0.47h-7.1V7.09C6.16,7.1,15.47,7.1,15.47,7.1z"/>
211
+ <polygon class="st23" points="24.3,7.1 13.14,22.91 5.7,22.91 16.86,7.1 "/>
212
+ <path class="st23" d="M14.53,22.91l1.31-1.86c0.2-0.29,0.54-0.47,0.9-0.47h7.09v2.33H14.53z"/>
213
+ </g>
214
+ </g>
215
+ </g>
216
+ </g>
217
+ </g>
218
+ </svg>
@@ -0,0 +1 @@
1
+ <svg width="160" height="160" xmlns="http://www.w3.org/2000/svg" fill="none"><path stroke="null" fill="#000" d="M77.776.421c8.25-.317 24.947.775 38.304 12.768 10.957 9.839 14.733 28.078 12.18 42.221-2.341 12.965-7.858 23.572-5.696 33.394 2.16 9.821 7.658 14.663 12.334 16.696 4.519 1.965 8.886 1.375 8.055 5.108-.832 3.732-6.482 5.107-10.608 5.107-2.262 0-9.103-.59-12.139-2.554-3.587-2.322-4.386-4.402-5.752-6.074-.231-.284-.64-.087-.586.276.622 4.113 2.338 11.094 5.12 15.423 2.252 3.503 3.183 6.058 8.341 10.38 5.16 4.32 7.57 8.249 2.553 11.031-4.456 2.471-14.142-2.585-19.839-8.839-5.127-5.629-8.697-12.572-10.108-17.09-.755-2.415-1.511-6.57-2.266-9.969-.1-.446-.711-.374-.725.084-.25 8.649-1.61 16.909-3.598 25.764-1.43 6.375-4.91 14.143-8.053 18.857-3.833 5.749-9.522 7.543-13.75 5.971-3.382-1.257-.983-5.531 0-9.232.982-3.7 2.947-11.439 4.27-19.918 1.197-7.674 1.514-15.271.981-22.47-.033-.439-.708-.506-.844-.087-1.102 3.376-3.18 8.972-4.696 12.376-3.162 7.099-5.501 10.214-11.983 17.677-5.83 6.714-22.597 16.207-24.75 6.876-.59-2.553 2.498-3.671 5.345-5.893 4.28-3.339 7.857-9.264 11.248-16.5 3.045-6.497 4.592-12.782 4.83-16.794.022-.387-.464-.533-.682-.213-1.41 2.067-3.485 4.865-5.771 7.185-3.819 3.877-8.054 7.867-12.966 9.822-7.897 3.143-15.95.982-15.361-4.714.492-4.758 5.804-3.773 12.416-10.987 6.482-7.072 8.643-12.573 9.035-18.662.314-4.872-4.451-16.434-6.874-21.607-3.863-8.25-6.718-31.665 4.91-46.75C55.188.226 72.67.617 77.777.42zM55.101 33.397c-5.408 0-8.112 4.151-8.112 9.272 0 5.12 3.004 9.271 8.112 9.271 5.108 0 8.113-4.15 8.113-9.271 0-5.12-2.705-9.272-8.113-9.272zm44.04 0c-5.408 0-8.112 4.151-8.113 9.272 0 5.12 3.005 9.271 8.113 9.271s8.113-4.15 8.113-9.271c0-5.12-2.705-9.272-8.113-9.272z" clip-rule="evenodd" fill-rule="evenodd"/></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitkyc08/opencodex",
3
- "version": "2.38.0",
3
+ "version": "2.39.0",
4
4
  "description": "Universal provider proxy for OpenAI Codex & Claude Code — use any LLM with Codex CLI/App/SDK and Claude Code",
5
5
  "type": "module",
6
6
  "main": "./bin/package-main.mjs",
@@ -262,6 +262,7 @@ async function fetchCursorUsableModelsHttp2Once(opts: CursorUsableModelsOptions)
262
262
  req.on("error", () => close({ ok: false, error: "transport", detail: "HTTP/2 request failed" }));
263
263
  req.on("end", () => {
264
264
  if (bodyRejected) return;
265
+ if (status === 0) return close({ ok: false, error: "transport", detail: "HTTP/2 response ended before headers" });
265
266
  if (status === 401 || status === 403) {
266
267
  return close({ ok: false, error: "auth", detail: `HTTP ${status}` });
267
268
  }
@@ -236,6 +236,30 @@ function stripCanonicalOnlyToolFields(body: unknown, includeCapabilityGated: boo
236
236
  return input ? { ...rewrittenBody, input } : rewrittenBody;
237
237
  }
238
238
 
239
+ /**
240
+ * Codex keeps this ChatGPT-internal item metadata when its configured provider name is `openai`.
241
+ * Loopback OpenCodex injection intentionally retains that provider identity for history continuity,
242
+ * even when the proxy ultimately routes the request to a public Responses destination. Those
243
+ * destinations reject the private field as an unknown `input[*]` parameter, so remove it at the
244
+ * noncanonical boundary without mutating the caller-owned raw body.
245
+ */
246
+ function stripInternalChatMessageMetadataPassthrough(body: unknown): unknown {
247
+ if (!isPlainObject(body) || !Array.isArray(body.input)) return body;
248
+
249
+ let changed = false;
250
+ const input = body.input.map(item => {
251
+ if (!isPlainObject(item) || !Object.hasOwn(item, "internal_chat_message_metadata_passthrough")) {
252
+ return item;
253
+ }
254
+ changed = true;
255
+ const next = { ...item };
256
+ delete next.internal_chat_message_metadata_passthrough;
257
+ return next;
258
+ });
259
+
260
+ return changed ? { ...body, input } : body;
261
+ }
262
+
239
263
  /**
240
264
  * When `store` is false, the upstream API does not persist response items. Any item ID
241
265
  * forwarded in `input` is then interpreted as a reference to a stored item that does not
@@ -901,13 +925,23 @@ function annotateEmptyResponsesToolOutputs(body: unknown, enabled: boolean): unk
901
925
  * Runs on every forward request; with intact pairs it returns the original reference.
902
926
  */
903
927
  /**
904
- * Backfill `queries` on a replayed single-query `web_search_call`.
928
+ * Repair a replayed `web_search_call` action that is missing either key.
905
929
  *
906
930
  * `webSearchAction()` in the bridge now emits both keys, but that only helps items
907
931
  * created after the fix. A conversation that already recorded
908
- * `{type:"search", query:"..."}` replays that stored item on every subsequent turn, and
909
- * DeepSeek's native Responses parser requires `queries` — so upgrading alone leaves
910
- * those threads permanently 400ing with `missing field 'queries'` (#930).
932
+ * `{type:"search", query:"..."}` or `{type:"search", queries:[...]}` replays that stored
933
+ * item on every subsequent turn. DeepSeek's native Responses parser requires `queries`
934
+ * (#930) and Console Go's validator requires `query` (#3071), so upgrading alone leaves
935
+ * those threads permanently 400ing in one direction or the other. The repair runs both
936
+ * ways.
937
+ *
938
+ * Input items carry a loose schema, so a stored `queries` is not necessarily an array of
939
+ * strings. A partly- or wholly-malformed array is left alone rather than used as a source
940
+ * for the singular field: writing `query: 123` would satisfy the presence check and still
941
+ * fail the validator this repair exists to satisfy, and deriving `query` from
942
+ * `["a", 42]` would satisfy Console Go while leaving DeepSeek to reject the same replay.
943
+ * An empty `queries: []` canonicalizes to the shape the bridge emits for an empty search,
944
+ * keeping an existing `query` when the item has one.
911
945
  *
912
946
  * Runs on every Responses request, on both `input` items and the `action` nested inside
913
947
  * them. Returns the original reference when nothing needs repair, so the common path
@@ -920,9 +954,35 @@ function backfillWebSearchQueries(body: unknown): unknown {
920
954
  if (!isPlainObject(item) || item.type !== "web_search_call") return item;
921
955
  const action = item.action;
922
956
  if (!isPlainObject(action) || action.type !== "search") return item;
923
- if (typeof action.query !== "string" || Array.isArray(action.queries)) return item;
924
- changed = true;
925
- return { ...item, action: { ...action, queries: [action.query] } };
957
+ // Repair whichever side is missing so both strict parsers pass:
958
+ // DeepSeek native Responses requires `queries`; Console Go requires `query`.
959
+ const rep: Record<string, unknown> = { ...action };
960
+ let itemChanged = false;
961
+ const hasQuery = typeof action.query === "string";
962
+ const queries = Array.isArray(action.queries) ? action.queries : undefined;
963
+ if (queries !== undefined && queries.length === 0) {
964
+ // An empty array satisfies neither validator. Canonicalize to the empty-search
965
+ // shape the bridge emits, keeping an existing query rather than discarding it.
966
+ const query = hasQuery ? action.query as string : "";
967
+ rep.query = query;
968
+ rep.queries = [query];
969
+ itemChanged = true;
970
+ } else if (!hasQuery && queries !== undefined) {
971
+ // A plural array is only a usable source for the singular field when EVERY member
972
+ // is a string: deriving `query` from a partly-malformed array would satisfy Console
973
+ // Go while leaving DeepSeek to reject the same replay. Wholly malformed arrays are
974
+ // left untouched — coercing or dropping members would invent semantics the stored
975
+ // item never had.
976
+ if (queries.every(entry => typeof entry === "string")) {
977
+ rep.query = queries[0]; // multi-query item recorded before the fix
978
+ itemChanged = true;
979
+ }
980
+ } else if (hasQuery && queries === undefined) {
981
+ rep.queries = [action.query]; // single-query item recorded before the fix
982
+ itemChanged = true;
983
+ }
984
+ if (itemChanged) changed = true;
985
+ return itemChanged ? { ...item, action: rep } : item;
926
986
  });
927
987
  return changed ? { ...body, input } : body;
928
988
  }
@@ -2097,11 +2157,13 @@ export function createResponsesPassthroughAdapter(provider: OcxProviderConfig):
2097
2157
  outBody = repairOversizedReplayCallIds(outBody);
2098
2158
  }
2099
2159
  outBody = stripUnsupportedReasoningSummaryDelivery(outBody, parsed.modelId);
2100
- // Repair stored history from before the bridge emitted both keys: a conversation
2101
- // that already recorded a single-query web_search_call replays it every turn, and
2102
- // a strict parser rejects the whole request over it (#930).
2160
+ // Repair stored history from before the bridge emitted both keys, in either
2161
+ // direction: a conversation that already recorded a web_search_call replays it
2162
+ // every turn, and a strict parser rejects the whole request over the missing key —
2163
+ // `queries` for DeepSeek (#930), `query` for Console Go (#3071).
2103
2164
  outBody = backfillWebSearchQueries(outBody);
2104
2165
  if (!isCanonicalOpenAiForwardProvider(provider)) {
2166
+ outBody = stripInternalChatMessageMetadataPassthrough(outBody);
2105
2167
  outBody = promoteClientLoadedTools(outBody);
2106
2168
  }
2107
2169
  if (!isCanonicalOpenAiForwardProvider(provider)) {
package/src/bridge.ts CHANGED
@@ -146,27 +146,27 @@ export { adapterFailureFromMessage } from "./lib/errors";
146
146
  /**
147
147
  * Build the native `WebSearchAction::Search` payload from the queries that ran.
148
148
  *
149
- * Single query `{ query, queries: [query] }`. Batch `{ queries }` with NO singular
150
- * `query`. Empty → `{ query: "", queries: [""] }`.
149
+ * Every action carries BOTH keys: `{ query, queries }`, where `query` is the first
150
+ * member. Empty → `{ query: "", queries: [""] }`.
151
151
  *
152
- * The asymmetry is load-bearing in both directions. codex-rs prefers a non-empty `query`
153
- * for the cell label and renders "<first> ..." only when `query` is ABSENT and
154
- * `queries.len() > 1`, so adding `query` to a batch would collapse the plural ellipsis.
155
- * Meanwhile DeepSeek's native Responses parser makes `queries` a required field, so a
156
- * replayed one-term `web_search_call` carried in the history of every subsequent turn
157
- * fails deserialization with `missing field 'queries'` and 400s the rest of the
158
- * conversation (#930). Carrying both keys in the single case satisfies the strict parser
159
- * without changing what codex-rs displays.
152
+ * Carrying both is load-bearing in both directions. DeepSeek's native Responses parser
153
+ * makes `queries` a required field, and Console Go's upstream validator makes `query` a
154
+ * required field so a replayed `web_search_call` carried in the history of every
155
+ * subsequent turn fails deserialization with `missing field 'queries'` (#930) or 400s
156
+ * with `missing required field 'query'` unless both keys are present. Carrying both keys
157
+ * in every case satisfies both strict parsers; the trade-off is that a multi-query batch
158
+ * loses the "<first> ..." ellipsis in codex-rs and shows the first query as the label.
159
+ *
160
+ * That trade is deliberate: a cosmetic label against a conversation that 400s on every
161
+ * subsequent turn. Do not restore the old batch-omits-`query` shape to win the ellipsis
162
+ * back — it reopens #3071.
160
163
  *
161
164
  * This fixes items created from here on. History recorded before it is repaired at the
162
165
  * replay boundary by `backfillWebSearchQueries()` in the Responses adapter.
163
166
  */
164
167
  function webSearchAction(queries: string[]): Record<string, unknown> {
165
- if (queries.length <= 1) {
166
- const query = queries[0] ?? "";
167
- return { type: "search", query, queries: [query] };
168
- }
169
- return { type: "search", queries };
168
+ const first = queries[0] ?? "";
169
+ return { type: "search", query: first, queries: queries.length > 0 ? queries : [first] };
170
170
  }
171
171
 
172
172
  interface OutputItem {