Chinesezjc
f61b138e08
refactor(tools): restore py-types to the ts-types trusted-after-validation stance
...
Rounds 6-9 of the bot review kept finding adjacent hostile-getter variants
(post-validation cycles, TOCTOU on const/enum/oneOf, self-referential
functions) because the renderer had grown per-shape runtime defenses the
sibling ts-types renderer does not have. Those inputs are unreachable: the
schema is a first-party defineTool object literal that already passed
assertSupportedJsonSchema, and per AGENTS.md "Trust TypeScript at typed
same-process seams" a typed same-process seam does not add hostile-input
handling for values the static interface forbids.
renderType now validates the whole tree once and trusts it, wrapping the walk
in one try/catch that degrades to Any — byte-for-byte the stance of the
ts-types sibling. This removes the cycle-tracking (activeSchemas/hasIdentity),
the const/enum/oneOf read snapshots, the isPyScalar re-check, the typing
rollback, and the pyScalar null->None re-read handling; the corresponding
hostile-getter tests are removed. Behavior fixes that hold for legitimate
input are kept: RESERVED soft-keyword exclusion, closed-empty-object TypedDict,
class-name cap + per-base collision counter, BigInt digits for beyond-safe
integers. py-types.ts stays at 100% per-file coverage.
The language-dispatch Agent Note documents the stance and its symmetry with
ts-types so the boundary is not re-litigated.
2026-08-02 16:25:01 +08:00
..
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-25 01:58:42 +08:00
2026-08-02 13:55:28 +08:00
2026-08-02 13:55:28 +08:00
2026-08-02 13:55:28 +08:00
2026-07-23 19:48:00 +08:00
2026-07-23 19:33:30 +08:00
2026-07-23 19:48:00 +08:00
2026-07-30 17:40:25 +08:00
2026-07-30 17:40:25 +08:00
2026-07-30 17:40:25 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 05:22:47 -07:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-29 23:15:15 +08:00
2026-07-27 17:38:42 +08:00
2026-07-27 17:38:42 +08:00
2026-07-27 17:38:42 +08:00
2026-07-30 21:28:13 +08:00
2026-07-30 21:28:13 +08:00
2026-07-30 21:28:13 +08:00
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-25 01:58:42 +08:00
2026-07-29 21:51:01 +08:00
2026-07-29 21:51:01 +08:00
2026-07-29 21:51:01 +08:00
2026-07-31 13:49:41 +08:00
2026-07-31 13:49:41 +08:00
2026-07-31 13:49:41 +08:00
2026-07-24 13:57:16 +08:00
2026-07-22 23:07:14 +08:00
2026-07-24 13:57:16 +08:00
2026-07-31 15:19:59 +08:00
2026-07-31 15:19:59 +08:00
2026-07-31 15:19:59 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-29 21:15:42 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-29 22:10:26 +08:00
2026-07-29 22:10:26 +08:00
2026-07-29 22:10:26 +08:00
2026-07-26 23:06:00 +08:00
2026-07-26 23:06:00 +08:00
2026-07-26 23:06:00 +08:00
2026-07-24 17:39:22 +08:00
2026-07-22 23:07:14 +08:00
2026-07-24 17:39:22 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-22 21:37:30 +08:00
2026-07-22 21:37:30 +08:00
2026-07-22 21:37:30 +08:00
2026-07-25 16:43:07 +08:00
2026-07-25 16:43:07 +08:00
2026-07-25 16:43:07 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-28 10:26:15 -07:00
2026-07-30 19:57:49 +08:00
2026-07-30 19:57:49 +08:00
2026-07-30 19:57:49 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-24 01:40:25 +08:00
2026-07-26 14:29:30 +08:00
2026-07-26 14:05:33 +08:00
2026-07-26 14:05:33 +08:00
2026-07-20 20:35:15 +08:00
2026-07-20 20:35:15 +08:00
2026-07-20 20:35:15 +08:00
2026-07-24 22:12:23 +08:00
2026-07-24 22:12:23 +08:00
2026-07-24 22:12:23 +08:00
2026-07-26 14:29:30 +08:00
2026-07-26 14:05:33 +08:00
2026-07-26 14:05:33 +08:00
2026-07-27 21:20:06 +08:00
2026-07-27 21:20:06 +08:00
2026-07-27 21:20:06 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-07-20 21:16:40 +08:00
2026-07-20 21:16:40 +08:00
2026-07-20 21:16:40 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-07-28 13:58:06 +08:00
2026-07-28 13:58:06 +08:00
2026-07-28 13:58:06 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-22 14:29:52 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-28 17:22:41 +08:00
2026-07-28 17:22:41 +08:00
2026-07-28 17:22:41 +08:00
2026-08-02 12:45:36 +08:00
2026-08-02 12:45:36 +08:00
2026-08-02 12:45:36 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-08-02 12:51:09 +08:00
2026-07-22 20:35:38 +08:00
2026-07-22 20:35:38 +08:00
2026-07-22 20:35:38 +08:00
2026-07-27 21:30:28 +08:00
2026-07-27 21:30:28 +08:00
2026-07-27 21:30:28 +08:00
2026-07-23 17:39:30 +08:00
2026-07-23 17:39:30 +08:00
2026-07-23 17:39:30 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 12:04:12 +08:00
2026-07-27 12:04:12 +08:00
2026-07-27 12:04:12 +08:00
2026-07-24 19:15:04 +08:00
2026-07-24 19:15:04 +08:00
2026-07-24 19:15:04 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-28 17:58:09 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00
2026-07-26 01:16:41 +08:00
2026-07-26 01:16:41 +08:00
2026-07-26 01:16:41 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-30 10:34:21 +08:00
2026-07-30 10:11:38 +08:00
2026-07-30 10:11:38 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 22:53:47 +08:00
2026-07-26 03:29:22 +08:00
2026-07-26 02:43:34 +08:00
2026-07-26 03:29:22 +08:00
2026-07-26 04:24:13 +08:00
2026-07-26 04:02:38 +08:00
2026-07-26 04:24:13 +08:00
2026-07-26 15:26:52 +08:00
2026-07-26 15:26:52 +08:00
2026-07-26 15:26:52 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-29 22:27:49 +08:00
2026-07-29 22:27:49 +08:00
2026-07-29 22:27:49 +08:00
2026-07-31 18:25:03 +08:00
2026-07-31 18:25:03 +08:00
2026-07-31 18:25:03 +08:00
2026-07-29 20:16:13 +08:00
2026-07-29 20:16:13 +08:00
2026-07-29 20:16:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-27 18:55:13 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-29 21:15:34 +08:00
2026-07-28 01:41:32 +08:00
2026-07-28 01:41:32 +08:00
2026-07-28 01:41:32 +08:00
2026-07-31 20:48:22 +08:00
2026-07-31 20:47:55 +08:00
2026-07-31 20:47:55 +08:00
2026-07-30 09:40:38 +08:00
2026-07-30 09:40:38 +08:00
2026-07-30 09:40:38 +08:00
2026-08-02 12:51:11 +08:00
2026-08-02 12:51:11 +08:00
2026-08-02 12:51:11 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-07-31 18:37:34 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-07-31 16:49:55 +08:00
2026-07-31 16:49:55 +08:00
2026-07-31 16:49:55 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-30 21:04:00 +08:00
2026-07-30 21:04:00 +08:00
2026-07-30 21:04:00 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 19:43:56 +08:00
2026-07-28 14:24:41 +08:00
2026-07-28 14:24:41 +08:00
2026-07-28 14:24:41 +08:00
2026-07-29 16:42:10 +08:00
2026-07-29 16:42:10 +08:00
2026-07-29 16:42:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-07-29 14:12:01 +08:00
2026-07-29 14:12:01 +08:00
2026-07-29 14:12:01 +08:00
2026-07-29 21:09:02 +08:00
2026-07-29 21:09:02 +08:00
2026-07-29 21:09:02 +08:00
2026-07-31 14:28:52 +08:00
2026-07-31 14:28:52 +08:00
2026-07-31 14:28:52 +08:00
2026-07-31 01:27:56 +08:00
2026-07-31 01:27:56 +08:00
2026-07-31 01:27:56 +08:00
2026-07-31 15:27:10 +08:00
2026-07-31 15:27:10 +08:00
2026-07-31 15:27:10 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-07-31 13:49:41 +08:00
2026-07-31 13:49:41 +08:00
2026-07-31 13:49:41 +08:00
2026-07-31 10:29:20 +08:00
2026-07-31 10:29:20 +08:00
2026-07-31 10:29:20 +08:00
2026-07-31 16:20:54 +08:00
2026-07-31 16:20:54 +08:00
2026-07-31 16:20:54 +08:00
2026-07-30 19:38:18 +08:00
2026-07-30 19:38:18 +08:00
2026-07-30 19:38:18 +08:00
2026-07-30 22:00:34 +08:00
2026-07-30 22:00:34 +08:00
2026-07-30 22:00:34 +08:00
2026-07-31 16:34:06 +08:00
2026-07-31 16:34:06 +08:00
2026-07-31 16:34:06 +08:00
2026-07-31 17:05:30 +08:00
2026-07-31 17:05:30 +08:00
2026-07-31 17:05:30 +08:00
2026-07-31 17:47:07 +08:00
2026-07-31 17:47:07 +08:00
2026-07-31 17:47:07 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 17:26:44 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 16:20:34 +08:00
2026-07-30 21:36:42 +08:00
2026-07-30 21:36:42 +08:00
2026-07-30 21:36:42 +08:00
2026-07-30 21:28:38 +08:00
2026-07-30 21:28:38 +08:00
2026-07-30 21:28:38 +08:00
2026-07-30 22:26:31 +08:00
2026-07-30 22:26:14 +08:00
2026-07-30 22:26:14 +08:00
2026-07-30 22:24:57 +08:00
2026-07-30 22:24:57 +08:00
2026-07-30 22:24:57 +08:00
2026-07-30 21:13:09 +08:00
2026-07-30 21:13:09 +08:00
2026-07-30 21:13:09 +08:00
2026-07-30 22:49:41 +08:00
2026-07-30 22:49:41 +08:00
2026-07-30 22:49:41 +08:00
2026-07-30 21:21:29 +08:00
2026-07-30 21:21:29 +08:00
2026-07-30 21:21:29 +08:00
2026-07-31 15:49:59 +08:00
2026-07-31 15:49:59 +08:00
2026-07-31 15:49:59 +08:00
2026-08-02 16:25:01 +08:00
2026-08-02 16:25:01 +08:00
2026-08-02 16:25:01 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 23:37:53 +08:00
2026-07-31 13:24:30 +08:00
2026-07-31 13:24:30 +08:00
2026-07-31 13:24:30 +08:00
2026-07-31 16:13:12 +08:00
2026-07-31 16:13:12 +08:00
2026-07-31 16:13:12 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 14:08:13 +08:00
2026-07-31 14:08:13 +08:00
2026-07-31 14:08:13 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 02:34:52 -07:00
2026-07-31 02:34:52 -07:00
2026-07-31 02:34:52 -07:00
2026-07-31 16:34:16 +08:00
2026-07-31 16:34:16 +08:00
2026-07-31 16:34:16 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 14:28:03 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-07-31 20:39:53 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00
2026-08-02 03:56:25 +08:00