@yansigit/opencodex 2.36.1-dev.20260829.48 → 2.36.1

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 (94) hide show
  1. package/gui/dist/assets/{ApiKeys-LOOFiZfv.js → ApiKeys-CsmNyf4I.js} +1 -1
  2. package/gui/dist/assets/{Claude-BwKzpXe3.js → Claude-B4sHsGTD.js} +1 -1
  3. package/gui/dist/assets/{CodexSet-B5qi9KeE.js → CodexSet-BuAQ4YQn.js} +1 -1
  4. package/gui/dist/assets/{FileIntegrationPage-B0sUef6W.js → FileIntegrationPage-BC65sEaS.js} +1 -1
  5. package/gui/dist/assets/{Grok-bsb4n-f4.js → Grok-DNJWlISf.js} +1 -1
  6. package/gui/dist/assets/{Integrations-CSMwFDvM.js → Integrations-vGJshFZK.js} +2 -2
  7. package/gui/dist/assets/{IntegrationsOverview-CTORdKJA.js → IntegrationsOverview-DYMkDFHE.js} +1 -1
  8. package/gui/dist/assets/{Logs-BWYbfELf.js → Logs-Coc7_RPP.js} +1 -1
  9. package/gui/dist/assets/{Models-CexEtdT1.js → Models-CKVT8Meb.js} +1 -1
  10. package/gui/dist/assets/{NumberStepper-BapSFQnW.js → NumberStepper-Dug4wR8n.js} +1 -1
  11. package/gui/dist/assets/{Providers-BwUFeAgA.js → Providers-DyaCHRWL.js} +1 -1
  12. package/gui/dist/assets/{RestoreDialog-CD8piq90.js → RestoreDialog-BpuvVU2w.js} +1 -1
  13. package/gui/dist/assets/{Startup-BgX731C2.js → Startup-DAUQqNEN.js} +1 -1
  14. package/gui/dist/assets/{Storage-Bgq7HphP.js → Storage-DfP95SlJ.js} +1 -1
  15. package/gui/dist/assets/{Subagents-ChxItbeF.js → Subagents-CMNsZLfk.js} +1 -1
  16. package/gui/dist/assets/{Usage-BkylzP50.js → Usage-ESFRfBMO.js} +1 -1
  17. package/gui/dist/assets/{codex-stale-banner-D4gvSWnO.js → codex-stale-banner-W4FhikN7.js} +1 -1
  18. package/gui/dist/assets/{data-surface-BtO3lwam.js → data-surface-B8PX8rjm.js} +1 -1
  19. package/gui/dist/assets/{data-surface-pCXChiBf.js → data-surface-CETFXqiA.js} +1 -1
  20. package/gui/dist/assets/{index-CNopOid3.js → index-DHQHBRhb.js} +3 -3
  21. package/gui/dist/assets/{model-display-CiUpg8T9.js → model-display-OBTJhQwT.js} +1 -1
  22. package/gui/dist/assets/{provider-payload-b2jlS-On.js → provider-payload-CJRJUn7w.js} +1 -1
  23. package/gui/dist/assets/{section-tabs-BP7gEPK6.js → section-tabs-B8sLMiz6.js} +1 -1
  24. package/gui/dist/assets/shared-DI18-uF7.js +69 -0
  25. package/gui/dist/index.html +2 -2
  26. package/package.json +3 -1
  27. package/src/adapters/base.ts +26 -0
  28. package/src/adapters/cursor/catalog.ts +541 -0
  29. package/src/adapters/cursor/cursor-errors.ts +15 -0
  30. package/src/adapters/cursor/discovery.ts +34 -41
  31. package/src/adapters/cursor/envelope-echo.ts +128 -0
  32. package/src/adapters/cursor/request-builder.ts +19 -12
  33. package/src/adapters/cursor/tool-definitions.ts +2 -1
  34. package/src/adapters/cursor/tool-result-normalize.ts +23 -31
  35. package/src/adapters/cursor.ts +21 -2
  36. package/src/adapters/exec-tool-result-normalize.ts +99 -0
  37. package/src/adapters/google-antigravity-replay.ts +71 -2
  38. package/src/adapters/google.ts +19 -4
  39. package/src/adapters/kiro-constants.ts +12 -0
  40. package/src/adapters/kiro.ts +128 -11
  41. package/src/adapters/openai-chat.ts +16 -2
  42. package/src/adapters/openai-responses.ts +15 -2
  43. package/src/adapters/tool-catalog-nudge.ts +2 -1
  44. package/src/adapters/xai-web-search.ts +10 -14
  45. package/src/claude/outbound.ts +14 -3
  46. package/src/cli/access.ts +46 -3
  47. package/src/cli/account-api.ts +93 -16
  48. package/src/cli/account-extended.ts +262 -36
  49. package/src/cli/account-main.ts +12 -12
  50. package/src/cli/account.ts +40 -10
  51. package/src/cli/agent.ts +8 -1
  52. package/src/cli/capabilities-command.ts +94 -0
  53. package/src/cli/capabilities.ts +535 -0
  54. package/src/cli/claude-desktop.ts +31 -11
  55. package/src/cli/dispatch.ts +195 -27
  56. package/src/cli/doctor.ts +100 -1
  57. package/src/cli/help.ts +11 -2
  58. package/src/cli/index.ts +19 -3
  59. package/src/cli/inspect.ts +230 -0
  60. package/src/cli/observe.ts +11 -3
  61. package/src/cli/registry.ts +34 -2
  62. package/src/cli/runtime-api.ts +51 -7
  63. package/src/cli/status.ts +16 -0
  64. package/src/cli/storage.ts +234 -0
  65. package/src/cli/system-command.ts +16 -0
  66. package/src/cli/usage-report.ts +52 -2
  67. package/src/cli/version-skew.ts +46 -0
  68. package/src/codex/account-label.ts +21 -0
  69. package/src/codex/catalog/provider-fetch.ts +4 -0
  70. package/src/codex/transition-state.ts +12 -3
  71. package/src/compatibility/openai-responses.ts +9 -1
  72. package/src/generated/compatibility-version.json +94 -58
  73. package/src/integrations/ownership-policy.ts +24 -5
  74. package/src/integrations/ownership.ts +36 -2
  75. package/src/integrations/state.ts +40 -7
  76. package/src/integrations/writer.ts +21 -3
  77. package/src/lib/admin-secrets.ts +24 -0
  78. package/src/lib/errors.ts +25 -1
  79. package/src/lib/service-secrets.ts +15 -0
  80. package/src/oauth/store.ts +16 -6
  81. package/src/providers/label.ts +34 -1
  82. package/src/responses/turn-termination.ts +107 -0
  83. package/src/server/management/logs-usage-routes.ts +5 -27
  84. package/src/server/management/route-registry.ts +317 -0
  85. package/src/server/proxy-liveness.ts +27 -4
  86. package/src/server/request-log.ts +37 -17
  87. package/src/server/responses/core.ts +80 -4
  88. package/src/server/responses/policy-fallback.ts +1 -1
  89. package/src/service.ts +34 -0
  90. package/src/storage/policy-job.ts +14 -4
  91. package/src/storage/policy.ts +79 -33
  92. package/src/usage/log.ts +32 -6
  93. package/src/usage/summary.ts +22 -34
  94. package/gui/dist/assets/shared-BdYGV-yJ.js +0 -69
@@ -10,7 +10,7 @@
10
10
  },
11
11
  {
12
12
  "path": "package.json",
13
- "sha256": "c223c9a248049f4e19e7dee2837311746d85ba6e2b79498d6b1a3b07a2201c03"
13
+ "sha256": "386cbf136df4cfea377839680ef5b85b3962298770bed851d7b6d37feac97909"
14
14
  },
15
15
  {
16
16
  "path": "scripts/model-metadata.source.json",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  {
44
44
  "path": "src/adapters/base.ts",
45
- "sha256": "d38bbbcae7c82046cbb1798230593169998db2c692735ee1467dc4a25664c913"
45
+ "sha256": "00e88baa1254946252302ddfb32445e2cd41ab583b13a37576a05c46ac6c00b8"
46
46
  },
47
47
  {
48
48
  "path": "src/adapters/client-fingerprint.ts",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  {
64
64
  "path": "src/adapters/cursor.ts",
65
- "sha256": "c9adbdf7dbacb349851bae892b9eeaed5196ffecb0171ae3fb327bcd23e2d17d"
65
+ "sha256": "0dfaa448538c403ab7224c9744065d1ca84a20b1335367de471ac64cbc84d97c"
66
66
  },
67
67
  {
68
68
  "path": "src/adapters/cursor/arg-codec.ts",
@@ -76,17 +76,21 @@
76
76
  "path": "src/adapters/cursor/call-id.ts",
77
77
  "sha256": "85f777eeaae5336851ab9752b638974851dc5e9b687f945f8cc503dde4e7efdf"
78
78
  },
79
+ {
80
+ "path": "src/adapters/cursor/catalog.ts",
81
+ "sha256": "cd9025f58358858f39b2648aebc16233edce33e1451679639eb264631500283b"
82
+ },
79
83
  {
80
84
  "path": "src/adapters/cursor/checkpoint-store.ts",
81
85
  "sha256": "44985c12b4424fed06b376a66ed271cf1b4b5a146b0a539293412e56aeef4a00"
82
86
  },
83
87
  {
84
88
  "path": "src/adapters/cursor/cursor-errors.ts",
85
- "sha256": "5a0835bd74b850bedddc5d1b9b4ed23937db554613c8c78c4e36fd0d766e6ff2"
89
+ "sha256": "2dc63162a595a0e8d96a82d4db39151e7ac19d29dfb286bbffae12fc37f7e355"
86
90
  },
87
91
  {
88
92
  "path": "src/adapters/cursor/discovery.ts",
89
- "sha256": "40346eab4c211a631a329535102e4f228d2b3d4b005abc4ebb34c5033e772e01"
93
+ "sha256": "605686c4232fb56411626e3c36f86dd2c9166613963075d1dcf9af601ba991b4"
90
94
  },
91
95
  {
92
96
  "path": "src/adapters/cursor/effort-map.ts",
@@ -94,7 +98,7 @@
94
98
  },
95
99
  {
96
100
  "path": "src/adapters/cursor/envelope-echo.ts",
97
- "sha256": "db342228d6398dba2351cb629f962fbc7860293b8ecaa71991103fef07172624"
101
+ "sha256": "837f3742957fc5b931dd489555d4b24954aa2b5caff938ae6f870975601aaf39"
98
102
  },
99
103
  {
100
104
  "path": "src/adapters/cursor/exec-policy.ts",
@@ -198,7 +202,7 @@
198
202
  },
199
203
  {
200
204
  "path": "src/adapters/cursor/request-builder.ts",
201
- "sha256": "c6d7591d28f835d5056578febe16651ebff0b262a7eca04c91eddd7ed8d581bd"
205
+ "sha256": "2b25a48a9bc3d439ab87aa7db776b80b114a17b000b2142ca047e92db10f6570"
202
206
  },
203
207
  {
204
208
  "path": "src/adapters/cursor/thread-continuity.ts",
@@ -206,11 +210,11 @@
206
210
  },
207
211
  {
208
212
  "path": "src/adapters/cursor/tool-definitions.ts",
209
- "sha256": "da2b60c6f1aa8aea07ca03eb562b17a0f4063f1fd6c3041d2b88300360da43b1"
213
+ "sha256": "93484ee301c354c19c32a61a52e815f96e9b221117551b6035155dcce881d9d9"
210
214
  },
211
215
  {
212
216
  "path": "src/adapters/cursor/tool-result-normalize.ts",
213
- "sha256": "e210e1e5d603dbe568b74a0cce64886581dd86bb70d8412012354460597b9423"
217
+ "sha256": "6084698c237d6b90cdf8947422b7c563579e8942d594718747a9f55402a19fcd"
214
218
  },
215
219
  {
216
220
  "path": "src/adapters/cursor/transport-retry.ts",
@@ -224,6 +228,10 @@
224
228
  "path": "src/adapters/cursor/types.ts",
225
229
  "sha256": "a8d45b8556a0d1542035b654414841bf61e677fb4d19321e71cc9acee623a48e"
226
230
  },
231
+ {
232
+ "path": "src/adapters/exec-tool-result-normalize.ts",
233
+ "sha256": "c722b8c8ae879754ec794bec7d6ffc61f7dd052fcbfdc16a4133e35b7f0c1e7c"
234
+ },
227
235
  {
228
236
  "path": "src/adapters/google-aistudio-parser.ts",
229
237
  "sha256": "bf22ec0dc1731f60039d28d8037414a3579ed59501c4a5b28e9ee10c3386c87c"
@@ -234,7 +242,7 @@
234
242
  },
235
243
  {
236
244
  "path": "src/adapters/google-antigravity-replay.ts",
237
- "sha256": "b43e2f6ffa9e719bc2e106e44f439215e6c1ca3e18dc9449257c8de7d079ce4a"
245
+ "sha256": "39bd5fa719cb0fd9e4c200b4b386af7d32a1219713fec6fd87dd2f2fd7c8981c"
238
246
  },
239
247
  {
240
248
  "path": "src/adapters/google-antigravity-tools.ts",
@@ -266,7 +274,7 @@
266
274
  },
267
275
  {
268
276
  "path": "src/adapters/google.ts",
269
- "sha256": "6f789f6da2437623f613f7f1c26a8fc71e25a682914f521f52e43e99f441f930"
277
+ "sha256": "f3e4cf72d4fae4f41c33271bf4c2bded5a67b38b3576763e6a388549aaaee9d4"
270
278
  },
271
279
  {
272
280
  "path": "src/adapters/identity.ts",
@@ -278,7 +286,7 @@
278
286
  },
279
287
  {
280
288
  "path": "src/adapters/kiro-constants.ts",
281
- "sha256": "9cc26857a7723e3a2763af8b2d32a717069f107a4e95f06e910d0ecde3bcc3e7"
289
+ "sha256": "4067f26cb61daf58c2452ae7b670e1a6d0144fbb780d3b207fc2afaed8f59c52"
282
290
  },
283
291
  {
284
292
  "path": "src/adapters/kiro-errors.ts",
@@ -318,7 +326,7 @@
318
326
  },
319
327
  {
320
328
  "path": "src/adapters/kiro.ts",
321
- "sha256": "0d6b6a0f1729f10a5412147f272f92bed01344b79985ea5f40279ef4f6a12acd"
329
+ "sha256": "fb0b4e8af70d9b0075dcd9f7173faecb9c421adf7585a215e990b570cba7b5d4"
322
330
  },
323
331
  {
324
332
  "path": "src/adapters/mimo-free.ts",
@@ -330,7 +338,7 @@
330
338
  },
331
339
  {
332
340
  "path": "src/adapters/openai-chat.ts",
333
- "sha256": "3154cd33966d07e6498c8dc5c27c70e7897987d46d44f9a561f4efa95c40de9c"
341
+ "sha256": "26a6ca607cf5281eaac671895b9184ff26d21ceeda6c4124bd7c2f28d8076c6b"
334
342
  },
335
343
  {
336
344
  "path": "src/adapters/openai-responses-url.ts",
@@ -338,7 +346,7 @@
338
346
  },
339
347
  {
340
348
  "path": "src/adapters/openai-responses.ts",
341
- "sha256": "5357d3b799bacbed86917ca68031c3625686ccd32659d7a9bc8167edb0955c57"
349
+ "sha256": "47859adf7d56553a04a382451979a2dcba6d154e1d70fdc6bbf796fd1782eeba"
342
350
  },
343
351
  {
344
352
  "path": "src/adapters/registry.ts",
@@ -358,7 +366,7 @@
358
366
  },
359
367
  {
360
368
  "path": "src/adapters/tool-catalog-nudge.ts",
361
- "sha256": "1d32120812b42da60ed24aceecd30fcf94fd2d5cb0a1e65d9fc9198512706b34"
369
+ "sha256": "2f9871474d27ce4224f3a67f822d7200705f41c3bd384a949ebd0907ed838a36"
362
370
  },
363
371
  {
364
372
  "path": "src/adapters/upstream-http-error.ts",
@@ -370,7 +378,7 @@
370
378
  },
371
379
  {
372
380
  "path": "src/adapters/xai-web-search.ts",
373
- "sha256": "4faee031b25e97d2d2131b3f93995b913fd318f318bf066beaa1638fcf8876d4"
381
+ "sha256": "ae910b995207acb29b3ea27324c45267e19a9b8b68e117f258acc931058c3e3c"
374
382
  },
375
383
  {
376
384
  "path": "src/bridge.ts",
@@ -446,7 +454,7 @@
446
454
  },
447
455
  {
448
456
  "path": "src/claude/outbound.ts",
449
- "sha256": "66e88a3492cc6676a4cafb8a08b1767598d830a159d5877e3b7109853ad2963c"
457
+ "sha256": "81e95583b79412ef5111d4f1eb1bef1e64c24a5b69e04011472c0552ee39b677"
450
458
  },
451
459
  {
452
460
  "path": "src/cli.ts",
@@ -454,11 +462,11 @@
454
462
  },
455
463
  {
456
464
  "path": "src/cli/access.ts",
457
- "sha256": "c2a5f7c72741b687aa67bc7fc47ed8f3e2ea78ec693be649a475e1f0ec5f5ea0"
465
+ "sha256": "8bb5b549ab34c949ea0e63afb4c7f7d27df700b68d3cec7953c4bc01bde03940"
458
466
  },
459
467
  {
460
468
  "path": "src/cli/account-api.ts",
461
- "sha256": "300ea53bb7b7a941dbccdc0bf7fb7618f8691051f426acae3efeb8ce50de30f8"
469
+ "sha256": "b8af0245b0f066d5000622bf72ad5c70982338204b760be851743ca0bca78e4e"
462
470
  },
463
471
  {
464
472
  "path": "src/cli/account-auth.ts",
@@ -470,15 +478,15 @@
470
478
  },
471
479
  {
472
480
  "path": "src/cli/account-extended.ts",
473
- "sha256": "7e77b6c74e37bf732e0a68f4096b03e829f816c99a1633d02e7db7063af24514"
481
+ "sha256": "842779d11787f358ac06056fac66d86625fa2b9a69ea58b3da404606ec78ae1f"
474
482
  },
475
483
  {
476
484
  "path": "src/cli/account-main.ts",
477
- "sha256": "056dff0b1ffefc1ad59f4822bc354e41f31b0c05ac2dad1ce5425f5dbcc5c9ce"
485
+ "sha256": "b9b2aba9b8e43bf73b6bc69d183b971ca626077a73a1293febc07c74bd54ce9f"
478
486
  },
479
487
  {
480
488
  "path": "src/cli/account.ts",
481
- "sha256": "25a349ba85417b1da78a51f31c1230eb22fce5610d86d92a161fc062885850ce"
489
+ "sha256": "45c32df94e4b1bb036bc2920b45f372d37ed13bf190bdc3734cdb4488d98d838"
482
490
  },
483
491
  {
484
492
  "path": "src/cli/agent-driven.ts",
@@ -486,12 +494,20 @@
486
494
  },
487
495
  {
488
496
  "path": "src/cli/agent.ts",
489
- "sha256": "3caa13112d1023cafefc56addb66d7e36fcb05b1b71a29caf675a7893d69d574"
497
+ "sha256": "4dcca567a71a9f41968f1ff47063f0339d3a335d0f50a02df3c247d3c4508eac"
490
498
  },
491
499
  {
492
500
  "path": "src/cli/alias.ts",
493
501
  "sha256": "ed2d470ab353004c32d4e02a41b6a74da845d4e17c451692e9627a1b3e9f601c"
494
502
  },
503
+ {
504
+ "path": "src/cli/capabilities-command.ts",
505
+ "sha256": "c1101d205b90889f5b988d29976e6e69eaea8a964be086810e63544c38e69065"
506
+ },
507
+ {
508
+ "path": "src/cli/capabilities.ts",
509
+ "sha256": "39b2656750238ee72883e7448fed563ece65dbf94f0628affb374a5613a48ad4"
510
+ },
495
511
  {
496
512
  "path": "src/cli/catalog-prewarm.ts",
497
513
  "sha256": "e8361fe04f7f97615b6446e91e1e11b0372f90e14cbcebf7ab5792949e1bf266"
@@ -502,7 +518,7 @@
502
518
  },
503
519
  {
504
520
  "path": "src/cli/claude-desktop.ts",
505
- "sha256": "edc5fcaf62acdeaafac905bbe84fb5527cbe38d4729d4e94cff29cb7b2b4bf2f"
521
+ "sha256": "605dc19f301e421bdfc72befc1e72487bbe1d7f8d0f182a0c0c0f34592b8ca4c"
506
522
  },
507
523
  {
508
524
  "path": "src/cli/claude.ts",
@@ -534,11 +550,11 @@
534
550
  },
535
551
  {
536
552
  "path": "src/cli/dispatch.ts",
537
- "sha256": "ca23b47604f3f891e16d6bdf103aa71c5fc4e85f1c6f62177178f3540ee72e2b"
553
+ "sha256": "06d982ffba1599a6c8cd897144565b6d71053152b450fd87b76616c15662cedf"
538
554
  },
539
555
  {
540
556
  "path": "src/cli/doctor.ts",
541
- "sha256": "3809a5be6f5223ffcfc9225187dcca8e1f4be0b01d281126fe3722f89a754767"
557
+ "sha256": "b6617c36cce2c004634fd3d9b19a3c50f8ea643b377af85e212f7ef0e4851a1f"
542
558
  },
543
559
  {
544
560
  "path": "src/cli/ensure-desired-integrations.ts",
@@ -550,16 +566,20 @@
550
566
  },
551
567
  {
552
568
  "path": "src/cli/help.ts",
553
- "sha256": "70ef6da7981eab265f445c461c214294133b3b6683961b0aafd54b361690ae5f"
569
+ "sha256": "ef9c993e060dbc16abd858043ff774cda53cf2f4b9edd062279274a34f85e1a9"
554
570
  },
555
571
  {
556
572
  "path": "src/cli/index.ts",
557
- "sha256": "c56a5e65ede00d0321299e712ae500c7bf629e856646902032df57c927f9f253"
573
+ "sha256": "6c262f1430b49b24144722c34faa65d9fd56626aae43593cf21d838ffdeb5cca"
558
574
  },
559
575
  {
560
576
  "path": "src/cli/init.ts",
561
577
  "sha256": "ced149008c298c1167f8e710055ec5a293522e81dcc9e3bba2c8049dd32d3ec5"
562
578
  },
579
+ {
580
+ "path": "src/cli/inspect.ts",
581
+ "sha256": "8d20a779a72d5b17d73d13e33b790fbb62e3978823dda439766895c0818a8b99"
582
+ },
563
583
  {
564
584
  "path": "src/cli/integrations.ts",
565
585
  "sha256": "5c54432f2b8c53d83f4b40d72a2922745b095c1c0280fe6188f6b9af33f891bb"
@@ -590,7 +610,7 @@
590
610
  },
591
611
  {
592
612
  "path": "src/cli/observe.ts",
593
- "sha256": "b5f4b46f0eac04df27c82efccf975e8c36c5cde2d71274d5f061d3e5903c4e83"
613
+ "sha256": "4f9b8ce65ff93276837379e91481467ae09bbbce095c02df16048f8fe84f0d98"
594
614
  },
595
615
  {
596
616
  "path": "src/cli/opencode.ts",
@@ -614,7 +634,7 @@
614
634
  },
615
635
  {
616
636
  "path": "src/cli/registry.ts",
617
- "sha256": "66f2c0dad2451db553e7e0ae7905c78c3261e8ce2d76684d358a7148ab1582c9"
637
+ "sha256": "a736410fb02d3e57f42c8bc017c85432c49e302c2c7a6d9b084c45f3b215d1b4"
618
638
  },
619
639
  {
620
640
  "path": "src/cli/replit-gateway-key-input.ts",
@@ -630,7 +650,7 @@
630
650
  },
631
651
  {
632
652
  "path": "src/cli/runtime-api.ts",
633
- "sha256": "2ddea9c613c25ca34a7c1daecac8e21315dd4a98542a5c4833c0aaf63c745f6b"
653
+ "sha256": "cd62d2653ee662e6fea4151e45fcd167f57e06820529659ddc904f89c210c2d0"
634
654
  },
635
655
  {
636
656
  "path": "src/cli/star-prompt.ts",
@@ -642,11 +662,15 @@
642
662
  },
643
663
  {
644
664
  "path": "src/cli/status.ts",
645
- "sha256": "809fe8cf65f422b1405c67a4a5739f79d988f8b421d8bdb8003c9dffd4c51d56"
665
+ "sha256": "88a35f3de7ef2340ac451469e70f149903ec2b46d936543ef3aca8dadcc01a9a"
666
+ },
667
+ {
668
+ "path": "src/cli/storage.ts",
669
+ "sha256": "81791fa7d55e814fc819908a0a4b58736dc485abd4ba5410c9b27e3064fac007"
646
670
  },
647
671
  {
648
672
  "path": "src/cli/system-command.ts",
649
- "sha256": "932f7bb02e3ad4a42eb1728e75f9d0b13d64173eeeb043be1a2d12775495e53b"
673
+ "sha256": "dbea2c1db4cf6e0a42696feabeb3fb1cfd73d668a7a998d45811eb0469e863ff"
650
674
  },
651
675
  {
652
676
  "path": "src/cli/system-restart-client.ts",
@@ -662,12 +686,16 @@
662
686
  },
663
687
  {
664
688
  "path": "src/cli/usage-report.ts",
665
- "sha256": "2e20d647bd24195ee6177b18bc8314d02247c4df13c68ffc5d7444569160ebf9"
689
+ "sha256": "0c590155ff4c4dbb39ea0a91160abf54a1b70e24060eb792df27a36fba98637a"
666
690
  },
667
691
  {
668
692
  "path": "src/cli/v2.ts",
669
693
  "sha256": "bee42074b6cf31c207ce9c08f6d3bf68a9c725dfb39df9abdea09e45fa25ddb2"
670
694
  },
695
+ {
696
+ "path": "src/cli/version-skew.ts",
697
+ "sha256": "5c9cde92783d944bf918600dbb1892bf9ef1102c535a3cbcf25cfde1e5420db8"
698
+ },
671
699
  {
672
700
  "path": "src/clients/config-export.ts",
673
701
  "sha256": "9689b83c97115820171f697838b7535836cfa82b4ec82e07f317f08642bba962"
@@ -678,7 +706,7 @@
678
706
  },
679
707
  {
680
708
  "path": "src/codex/account-label.ts",
681
- "sha256": "7475f09c67f548a8f09e5597c3677a8da6cc330ae9e27b793e67da6a74d26b1b"
709
+ "sha256": "b48a6a2385a8da93679bc8deca761d9b798b7483d0b768553800371a5499a29e"
682
710
  },
683
711
  {
684
712
  "path": "src/codex/account-lifecycle.ts",
@@ -810,7 +838,7 @@
810
838
  },
811
839
  {
812
840
  "path": "src/codex/catalog/provider-fetch.ts",
813
- "sha256": "86a599e3630dbefd3e7a82886d9c0eb27002c1a972f4f60b3b6566600b6d625f"
841
+ "sha256": "98231df3da652332fbad9b6e897508645bb63d0ca554fd330f07b712eead3cee"
814
842
  },
815
843
  {
816
844
  "path": "src/codex/catalog/sync.ts",
@@ -1114,7 +1142,7 @@
1114
1142
  },
1115
1143
  {
1116
1144
  "path": "src/codex/transition-state.ts",
1117
- "sha256": "d33c50794fdea103362868e02d892025164a7e31030a6f0d9d96fd9842637c09"
1145
+ "sha256": "cfa8b2c3c0e161a542416f1f4f88f3f2e229d5c0b6d4c3ef9cad389413dbd6f2"
1118
1146
  },
1119
1147
  {
1120
1148
  "path": "src/codex/upstream-host-health.ts",
@@ -1166,7 +1194,7 @@
1166
1194
  },
1167
1195
  {
1168
1196
  "path": "src/compatibility/openai-responses.ts",
1169
- "sha256": "bec435b3fff28b19fec79f6fe73b3ca5b7242aa7a193439d7e98cbeedbfd5485"
1197
+ "sha256": "c76aefec425a6c9b2360899216863ca97e7a88cf9ce76e7154fb1df7b168c0f7"
1170
1198
  },
1171
1199
  {
1172
1200
  "path": "src/config.ts",
@@ -1302,11 +1330,11 @@
1302
1330
  },
1303
1331
  {
1304
1332
  "path": "src/integrations/ownership-policy.ts",
1305
- "sha256": "22d6ab3de370c177c095e3d0a25148899e3d91329d7c1f5760265c244fca6a1b"
1333
+ "sha256": "1079d8fad8d4cf3adb1700f12e3c9497ec0ad3d9acd0d140c05a8675cff68f35"
1306
1334
  },
1307
1335
  {
1308
1336
  "path": "src/integrations/ownership.ts",
1309
- "sha256": "0b81bca5558e31ffef30b93c2c135ae31234ab1634dda488d8f5ffb285552f83"
1337
+ "sha256": "974d740dc6deab816726879b1d814a660769dce39b2d4856e41c4d0de05ca150"
1310
1338
  },
1311
1339
  {
1312
1340
  "path": "src/integrations/registry.ts",
@@ -1318,7 +1346,7 @@
1318
1346
  },
1319
1347
  {
1320
1348
  "path": "src/integrations/state.ts",
1321
- "sha256": "d98c0e384fa3226ab798b7d9f2da257640deabb4d35da11dd6baae34d8ecc5de"
1349
+ "sha256": "2bc3d2dc60f22636b48c49ec43b88a5f6ab494d92c36a15b803eaa2c526243b6"
1322
1350
  },
1323
1351
  {
1324
1352
  "path": "src/integrations/store.ts",
@@ -1330,7 +1358,7 @@
1330
1358
  },
1331
1359
  {
1332
1360
  "path": "src/integrations/writer.ts",
1333
- "sha256": "25f819c8c576bb2598ecae4084cd2f7c2d1f72f616c4638d5061ac79ef2280f6"
1361
+ "sha256": "73f1d7d44c9141f98a3cc0058acff871ec26b23cb28e75f0270d8fdc531451da"
1334
1362
  },
1335
1363
  {
1336
1364
  "path": "src/lab/artifacts/sanitize.ts",
@@ -1814,7 +1842,7 @@
1814
1842
  },
1815
1843
  {
1816
1844
  "path": "src/lib/admin-secrets.ts",
1817
- "sha256": "779f1ebba088b017945acafd2d1ee960ae95b93065cddb00eba0f6b26a395fa2"
1845
+ "sha256": "4a2b0b36bbde05e58046c89d4b9a9a5ae5948b8329e71eabb365f81f519a88f9"
1818
1846
  },
1819
1847
  {
1820
1848
  "path": "src/lib/admission.ts",
@@ -1882,7 +1910,7 @@
1882
1910
  },
1883
1911
  {
1884
1912
  "path": "src/lib/errors.ts",
1885
- "sha256": "2f1423df36f81495724e1653c956a2ad7ac51e9eb9eb36d9c04357497a1e96ae"
1913
+ "sha256": "3463f9b2bbe0e1c69f4193a17e27b2e3d8e657a8b44445bc01684504d4ff9400"
1886
1914
  },
1887
1915
  {
1888
1916
  "path": "src/lib/eventstream-decoder.ts",
@@ -1998,7 +2026,7 @@
1998
2026
  },
1999
2027
  {
2000
2028
  "path": "src/lib/service-secrets.ts",
2001
- "sha256": "53e83f9865943855c0a5489a9f9fafceb52ca63913fe5a84e4ba1ae83cea095f"
2029
+ "sha256": "2294a011014c249adea0571a1b8e9ce51d76b7c59e654bf9795f360d7ee1b53e"
2002
2030
  },
2003
2031
  {
2004
2032
  "path": "src/lib/shadow-call.ts",
@@ -2222,7 +2250,7 @@
2222
2250
  },
2223
2251
  {
2224
2252
  "path": "src/oauth/store.ts",
2225
- "sha256": "7a0126840e1db163d67ec9d11fcf7b9d471d0eb438afccac9338285eca5c42f2"
2253
+ "sha256": "5899e7b923336d8a16747efec10b4a12fbcadbedd669d16d9a081433a8485926"
2226
2254
  },
2227
2255
  {
2228
2256
  "path": "src/oauth/token-guardian.ts",
@@ -2318,7 +2346,7 @@
2318
2346
  },
2319
2347
  {
2320
2348
  "path": "src/providers/label.ts",
2321
- "sha256": "89977ce42ab3de1554dc03ee913281cdcc6829f15ec7ea73343bb5c0d8eec5c5"
2349
+ "sha256": "3685972fdf521fba31a9a7b87fb8a8543969749ae8ff82c51268f84090977c40"
2322
2350
  },
2323
2351
  {
2324
2352
  "path": "src/providers/model-discovery-limits.ts",
@@ -2512,6 +2540,10 @@
2512
2540
  "path": "src/responses/truncated-stop-reason.ts",
2513
2541
  "sha256": "44a1876c045a63f9275410fb9169d2c47ce0c1de309e9cc00a0f51c72698a6dd"
2514
2542
  },
2543
+ {
2544
+ "path": "src/responses/turn-termination.ts",
2545
+ "sha256": "bdfad46010472abd180a2807d54b92795ec5d318607f97dc5c3cc59727e764e3"
2546
+ },
2515
2547
  {
2516
2548
  "path": "src/router.ts",
2517
2549
  "sha256": "018b91d5a43affac3124ebac3a45590d258f68b0cf41eb57e3fb6dd633179e30"
@@ -2758,7 +2790,7 @@
2758
2790
  },
2759
2791
  {
2760
2792
  "path": "src/server/management/logs-usage-routes.ts",
2761
- "sha256": "77bd7f6ffef94bea9b11a5c0bdefb30cce9d6c69a4bea0281db7e71ad1a48cbc"
2793
+ "sha256": "c5509bcc2a09f22b4a9dba0cc4d57e4ca9da694b24d7e0a95236245bc53b8495"
2762
2794
  },
2763
2795
  {
2764
2796
  "path": "src/server/management/model-routes.ts",
@@ -2792,6 +2824,10 @@
2792
2824
  "path": "src/server/management/request-history-routes.ts",
2793
2825
  "sha256": "cdc658830f272b3e92151c2cf0a1c2130618075972b9390bf8b263500aae4afb"
2794
2826
  },
2827
+ {
2828
+ "path": "src/server/management/route-registry.ts",
2829
+ "sha256": "0ec3d6e5e507baa073bee522046b89822ef5e981b69b6962c004e35f8391a32f"
2830
+ },
2795
2831
  {
2796
2832
  "path": "src/server/management/routing-analytics-routes.ts",
2797
2833
  "sha256": "d6cff11ef0a4844095c4b6008b2dfe745ee3c3c5d3ef02fd70518cfee15c6258"
@@ -2854,7 +2890,7 @@
2854
2890
  },
2855
2891
  {
2856
2892
  "path": "src/server/proxy-liveness.ts",
2857
- "sha256": "3c48d0c5eb15dd97c11f723d0919bbf78944c5364020933122ee8f304bbc889d"
2893
+ "sha256": "1ef9fc2322b9a6fbda72c90b99251b4f04da18a2fa0e49ec5a2d924d84db5de8"
2858
2894
  },
2859
2895
  {
2860
2896
  "path": "src/server/readiness.ts",
@@ -2878,7 +2914,7 @@
2878
2914
  },
2879
2915
  {
2880
2916
  "path": "src/server/request-log.ts",
2881
- "sha256": "b05d8d7b84f9cc6bf7cdd003aae7b2ef3791eed9353ee9441f10b87dd34b1621"
2917
+ "sha256": "10882c61323f7a5aa4d197054418081f0467309b55fe0778f7d725ddc3a191d1"
2882
2918
  },
2883
2919
  {
2884
2920
  "path": "src/server/responses-custom-tool-repair.ts",
@@ -2950,7 +2986,7 @@
2950
2986
  },
2951
2987
  {
2952
2988
  "path": "src/server/responses/core.ts",
2953
- "sha256": "f5e37d03f10f99d7000421ef0ec8b0d63d064c67afe87eb24631e502f50fe62f"
2989
+ "sha256": "abdf102878d968d337a871bee32106f25cf3434a67d1e2669c1109b6bede9687"
2954
2990
  },
2955
2991
  {
2956
2992
  "path": "src/server/responses/empty-completion-guard.ts",
@@ -2978,7 +3014,7 @@
2978
3014
  },
2979
3015
  {
2980
3016
  "path": "src/server/responses/policy-fallback.ts",
2981
- "sha256": "f62da21dd6f6c1b33fc629c6ee1a8526cebae28b158d9a3d96326ac82c6d54b2"
3017
+ "sha256": "319513ffa8a69abe9d5e812391b2fe24ee49cc6fb75ce829532063d86d1ff40f"
2982
3018
  },
2983
3019
  {
2984
3020
  "path": "src/server/responses/responses-field-backfill.ts",
@@ -3046,7 +3082,7 @@
3046
3082
  },
3047
3083
  {
3048
3084
  "path": "src/service.ts",
3049
- "sha256": "cf58ee46884abcb948cd687749a051a563bb159bead45c8dd5390a591d8c1051"
3085
+ "sha256": "03739ace3f831125620b1653c0549d693e4ae67ebd6502604db439b86f38dc35"
3050
3086
  },
3051
3087
  {
3052
3088
  "path": "src/sidecar/auth.ts",
@@ -3086,7 +3122,7 @@
3086
3122
  },
3087
3123
  {
3088
3124
  "path": "src/storage/policy-job.ts",
3089
- "sha256": "4fa9f2297feb1a9404af6173adbf875c19f5e79f4b1aca0056744e83d503ad8a"
3125
+ "sha256": "ee26c2d0d124903c24898f9634aad747172c2353c95b598dad1da3525d59345f"
3090
3126
  },
3091
3127
  {
3092
3128
  "path": "src/storage/policy-scheduler.ts",
@@ -3098,7 +3134,7 @@
3098
3134
  },
3099
3135
  {
3100
3136
  "path": "src/storage/policy.ts",
3101
- "sha256": "aaefd080cf74c38596134ac4a62ef16128c090b38e9bf13eaf749fbd82862204"
3137
+ "sha256": "b442b99fcf8396a28cff4a931ec2cefdf703cad724a3c15f18708baff55013f4"
3102
3138
  },
3103
3139
  {
3104
3140
  "path": "src/storage/restore-job.ts",
@@ -3258,11 +3294,11 @@
3258
3294
  },
3259
3295
  {
3260
3296
  "path": "src/usage/log.ts",
3261
- "sha256": "a559008076a3d43365d4aa87f7d1b24c939822d915c143f7221cd3b915dc1f96"
3297
+ "sha256": "c57c975aff8ef4c14fea20e5c06ae6ab97250ef10f13a5e8a15842da3469891d"
3262
3298
  },
3263
3299
  {
3264
3300
  "path": "src/usage/summary.ts",
3265
- "sha256": "8b20c3349048b3e1010862efa2fb5b0f00d17d7f596ae3051f033228976a26b5"
3301
+ "sha256": "16275a6650c10b3162bd9e6dc134f0406365bceb43e16231dd185c7244cf51b7"
3266
3302
  },
3267
3303
  {
3268
3304
  "path": "src/usage/totals.ts",
@@ -12,7 +12,7 @@ import {
12
12
  type ManagedContribution,
13
13
  type ManagedFragment,
14
14
  } from "../clients/config-export";
15
- import { canonicalContribution, fingerprint } from "./ownership";
15
+ import { canonicalContribution, fingerprint, semanticContribution } from "./ownership";
16
16
 
17
17
  type JsonObject = Record<string, unknown>;
18
18
 
@@ -124,11 +124,10 @@ export function validRefreshablePaths(
124
124
  });
125
125
  }
126
126
 
127
- /** Fingerprint a contribution after removing only its explicitly refreshable paths. */
128
- export function protectedContributionFingerprint(
127
+ function contributionWithoutRefreshablePaths(
129
128
  contribution: ManagedContribution,
130
129
  refreshablePaths: readonly (readonly string[])[],
131
- ): string {
130
+ ): ManagedContribution {
132
131
  const fragments = contribution.fragments.map(cloneFragment);
133
132
  for (const refreshablePath of refreshablePaths) {
134
133
  for (const fragment of fragments) {
@@ -137,5 +136,25 @@ export function protectedContributionFingerprint(
137
136
  break;
138
137
  }
139
138
  }
140
- return fingerprint(canonicalContribution({ ...contribution, fragments }));
139
+ return { ...contribution, fragments };
140
+ }
141
+
142
+ /** Fingerprint a contribution after removing only its explicitly refreshable paths. */
143
+ export function protectedContributionFingerprint(
144
+ contribution: ManagedContribution,
145
+ refreshablePaths: readonly (readonly string[])[],
146
+ ): string {
147
+ return fingerprint(canonicalContribution(
148
+ contributionWithoutRefreshablePaths(contribution, refreshablePaths),
149
+ ));
150
+ }
151
+
152
+ /** Semantic protected fingerprint that ignores JSON object-key order only. */
153
+ export function semanticProtectedContributionFingerprint(
154
+ contribution: ManagedContribution,
155
+ refreshablePaths: readonly (readonly string[])[],
156
+ ): string {
157
+ return fingerprint(semanticContribution(
158
+ contributionWithoutRefreshablePaths(contribution, refreshablePaths),
159
+ ));
141
160
  }
@@ -22,8 +22,38 @@ export function fingerprint(text: string): string {
22
22
  }
23
23
 
24
24
  /**
25
- * Canonical bytes of a contribution. Fragments are sorted by path so two builds
26
- * of the same contribution hash identically regardless of emission order.
25
+ * Canonicalize JSON object members recursively for semantic comparisons.
26
+ * Arrays stay ordered because their position can carry configuration meaning.
27
+ */
28
+ function semanticJsonValue(value: unknown): unknown {
29
+ if (Array.isArray(value)) return value.map(semanticJsonValue);
30
+ if (value === null || typeof value !== "object") return value;
31
+
32
+ const record = value as Record<string, unknown>;
33
+ return Object.fromEntries(
34
+ Object.keys(record)
35
+ .sort()
36
+ .map(key => [key, semanticJsonValue(record[key])]),
37
+ );
38
+ }
39
+
40
+ /**
41
+ * Stable semantic bytes of a contribution. Third-party clients may
42
+ * re-serialize JSON object members in a different order; that formatting-only
43
+ * rewrite must not look like a protected-value edit.
44
+ */
45
+ export function semanticContribution(contribution: ManagedContribution): string {
46
+ const sorted = [...contribution.fragments].sort((a, b) => {
47
+ const left = a.path.join("\u0000");
48
+ const right = b.path.join("\u0000");
49
+ return left < right ? -1 : left > right ? 1 : 0;
50
+ });
51
+ return JSON.stringify(sorted.map(fragment => [fragment.path, semanticJsonValue(fragment.value)]));
52
+ }
53
+
54
+ /**
55
+ * Legacy-compatible bytes used by existing persisted fingerprints. Fragment
56
+ * paths are stable, while nested object insertion order remains exact.
27
57
  */
28
58
  export function canonicalContribution(contribution: ManagedContribution): string {
29
59
  const sorted = [...contribution.fragments].sort((a, b) => {
@@ -41,11 +71,15 @@ export interface OwnershipRecord {
41
71
  fileFingerprint: string;
42
72
  /** Hash of our contribution — detects catalog/port drift. */
43
73
  blockFingerprint: string;
74
+ /** Key-order-independent companion for JSON clients that normalize objects. */
75
+ semanticBlockFingerprint?: string;
44
76
  /**
45
77
  * Hash of the fields the client must not rewrite. Present only when a
46
78
  * client has explicitly declared runtime-derived paths below.
47
79
  */
48
80
  protectedBlockFingerprint?: string;
81
+ /** Key-order-independent companion to `protectedBlockFingerprint`. */
82
+ semanticProtectedBlockFingerprint?: string;
49
83
  /**
50
84
  * Exact document paths a client may derive after apply. These are recorded
51
85
  * per operation so later catalog changes cannot widen an older grant.