Ian MacLeod
f46671b14a
Render assistant file citations as local links ( #42650 )
...
## What changed
- Convert `codex-file-citation` directives in assistant Markdown into local-file links while preserving paths with Markdown-significant characters, Unicode, Windows separators, and location suffixes.
- Apply citation rendering consistently to streaming output, finalized messages and plans, and resume-picker transcript previews.
- Keep directives literal in code, HTML, existing links, reference definitions, escaped text, and generic Markdown rendering.
- Bound repeated parsing work for malformed directive candidates without limiting valid citations.
## Testing
- Add coverage for citation parsing and rendering across finalized, streaming, and resume-preview output, including malformed input and path edge cases.
GitOrigin-RevId: 5a0bfb3fc7ac21b7e8846fd170a349fb2d2d5e85
2026-09-04 01:46:55 +00:00
..
2026-09-04 00:39:56 +00:00
2026-09-02 04:06:44 +00:00
2026-09-03 00:45:48 +00:00
2026-08-31 00:20:06 +00:00
2026-03-28 11:23:07 -06:00
2026-09-03 20:25:59 +00:00
2026-09-03 21:21:09 +00:00
2026-08-30 13:42:42 +00:00
2026-08-31 18:34:10 +00:00
2026-08-25 20:51:34 +00:00
2026-09-04 01:46:55 +00:00
2026-08-17 16:34:21 +00:00
2026-08-29 06:05:28 +00:00
2026-09-03 17:28:48 +00:00
2026-09-03 02:18:43 +00:00
2026-09-04 01:46:55 +00:00
2026-04-21 17:10:36 +00:00
2026-09-02 04:20:38 +00:00
2026-09-01 00:12:22 +00:00
2026-08-17 16:58:24 +00:00
2026-09-03 01:46:37 +00:00
2026-08-17 19:59:22 +00:00
2026-08-14 16:33:28 +00:00
2026-09-04 01:46:55 +00:00
2026-09-03 20:05:58 +00:00
2026-09-02 18:03:55 +00:00
2026-09-04 01:46:55 +00:00
2026-08-24 20:04:52 +00:00
2026-08-25 12:20:41 +00:00
2026-09-02 18:34:27 +00:00
2026-09-03 16:21:10 +00:00
2026-09-02 04:06:44 +00:00
2026-09-03 05:15:20 +00:00
2026-07-15 01:07:29 +00:00
2026-09-03 05:33:57 +00:00
2026-07-22 23:45:45 +00:00
2026-06-15 19:25:54 -07:00
2026-09-03 01:26:35 +00:00
2026-09-03 16:21:10 +00:00
2026-09-04 00:39:56 +00:00
2026-08-26 21:39:05 +00:00
2026-04-13 18:27:00 -07:00
2026-09-04 01:46:55 +00:00
2026-09-04 01:46:55 +00:00
2026-08-25 03:08:33 +00:00
2026-08-31 00:20:06 +00:00
2026-09-02 21:50:51 +00:00
2026-08-04 16:53:33 +00:00
2026-09-03 20:25:59 +00:00
2026-08-18 00:31:51 +00:00
2026-05-05 16:18:02 +00:00
2026-06-01 18:01:52 +02:00
2026-09-03 00:45:48 +00:00
2026-03-28 11:23:07 -06:00
2026-08-20 06:57:00 +00:00
2026-08-17 21:06:34 +00:00
2026-09-04 00:39:56 +00:00
2026-09-02 04:20:38 +00:00
2026-09-03 01:26:35 +00:00
2026-09-03 02:09:10 +00:00
2026-04-30 10:52:19 -07:00
2026-09-01 17:37:47 +00:00
2026-08-31 21:36:49 +00:00
2026-09-02 04:20:38 +00:00
2026-09-03 06:02:25 +00:00
2026-03-28 11:23:07 -06:00
2026-09-03 02:49:36 +00:00
2026-09-03 02:49:36 +00:00
2026-09-03 16:21:10 +00:00
2026-09-03 16:21:10 +00:00
2026-03-28 11:23:07 -06:00
2026-03-28 11:23:07 -06:00
2026-08-04 16:53:33 +00:00
2026-09-04 00:31:51 +00:00
2026-07-29 03:50:00 +00:00
2026-06-12 17:14:27 -07:00
2026-05-09 21:17:30 +00:00
2026-05-01 09:39:48 -07:00
2026-08-13 04:08:23 +00:00
2026-09-03 16:21:10 +00:00
2026-08-24 20:04:52 +00:00
2026-08-01 17:43:03 +00:00
2026-09-01 21:30:27 +00:00
2026-09-03 17:28:48 +00:00
2026-09-04 00:31:51 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-08-24 21:39:48 +00:00
2026-09-02 04:20:38 +00:00
2026-09-02 04:20:38 +00:00
2026-08-25 18:27:42 +00:00
2026-06-26 19:27:31 +00:00
2026-06-26 19:27:31 +00:00
2026-09-04 00:31:51 +00:00
2026-09-04 01:46:55 +00:00
2026-07-19 16:50:54 +00:00
2026-06-08 17:02:36 -07:00
2026-09-04 01:46:55 +00:00
2026-08-27 23:10:10 +00:00
2026-09-03 00:45:48 +00:00
2026-08-25 20:51:34 +00:00
2026-08-17 17:10:16 +00:00
2026-08-25 10:17:03 +00:00
2026-08-05 20:44:03 +00:00
2026-09-03 06:02:25 +00:00
2026-04-25 17:09:29 -07:00
2026-08-14 20:30:30 +00:00
2026-09-03 01:51:14 +00:00
2026-09-03 05:24:31 +00:00
2026-09-03 05:24:31 +00:00
2026-04-25 22:00:32 -03:00
2026-09-02 22:45:19 +00:00
2026-09-02 22:45:19 +00:00
2026-09-04 01:46:55 +00:00
2026-07-29 13:53:15 +00:00
2026-09-02 04:20:38 +00:00
2026-08-19 02:45:45 +00:00
2026-09-03 01:26:35 +00:00
2026-08-21 19:23:26 +00:00
2026-08-25 17:17:01 +00:00
2026-08-17 22:44:37 +00:00
2026-08-19 02:45:45 +00:00
2026-08-14 20:59:34 +00:00
2026-08-20 07:25:40 +00:00
2026-09-02 04:20:38 +00:00
2026-06-18 15:06:23 -07:00
2026-08-17 17:10:16 +00:00
2026-07-20 15:44:37 +00:00
2026-08-25 21:03:11 +00:00
2026-08-16 05:59:34 +00:00
2026-09-02 04:20:38 +00:00
2026-06-10 11:24:29 -07:00
2026-09-02 04:20:38 +00:00
2026-09-03 01:26:35 +00:00
2026-08-14 20:38:52 +00:00
2026-08-14 20:38:52 +00:00
2026-09-02 18:03:55 +00:00
2026-08-22 05:54:43 +00:00
2026-05-10 20:42:11 +00:00
2026-08-24 02:46:56 +00:00
2026-09-03 06:02:25 +00:00
2026-09-02 02:09:35 +00:00
2026-09-02 23:37:39 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 12:20:41 +00:00
2026-08-25 12:20:41 +00:00
2026-04-17 08:39:37 -07:00
2026-06-05 17:23:45 -07:00
2026-08-13 00:30:08 +00:00
2026-06-10 17:55:49 -07:00
2026-07-29 14:01:31 +00:00
2026-05-26 20:59:47 -07:00
2026-09-02 04:20:38 +00:00
2026-05-08 07:56:13 -07:00
2026-08-29 06:05:28 +00:00
2026-08-04 19:05:45 +00:00
2026-08-15 17:30:13 +00:00
2026-09-04 00:39:56 +00:00
2026-07-06 16:33:13 -04:00
2026-08-20 07:25:40 +00:00
2026-08-25 20:51:34 +00:00
2026-09-01 15:12:53 +00:00
2026-08-25 20:51:34 +00:00
2026-04-25 17:09:29 -07:00
2026-06-12 09:26:08 -07:00
2026-06-12 09:26:08 -07:00
2026-09-01 15:12:53 +00:00
2026-03-28 11:23:07 -06:00
2026-08-30 00:42:00 +00:00
2026-07-29 14:01:31 +00:00
2026-09-02 16:49:45 +00:00
2026-06-11 18:16:39 -07:00
2026-06-22 04:25:07 -07:00
2026-06-22 04:25:07 -07:00
2026-07-29 14:01:31 +00:00