Files
ai-agent-book/cursor-chats/20251018_173650_JSON_streaming.md
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

83 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Cursor Chat: ai-agent-book
## Metadata
- **Project**: ai-agent-book
- **Path**: `/Users/boj`
- **Date**: 2025-10-18 17:36:50
- **Session ID**: `5b250f5e-4896-43e2-9b87-a17c3cda9045`
## Conversation
### 👤 You
JSON streaming
Problem statement
To improve application responsiveness, we sometimes want to begin processing JSON responses before the entire payload is received. This requires special parsers that support JSON streaming, since standard JSON parsers cannot handle incomplete input.
However, it is always possible to convert a partial JSON into a valid one by appending additional characters. In most cases, there are infinitely many ways to do so.
{"For":"example → {"For":"example"}
Here's your task: for each input line representing the beginning of a valid JSON, output the minimum number of characters needed to complete the JSON.
You are not expected to handle all edge cases. Try to cover as many as possible within the time limit. When in doubt, check json.org or the ECMA-404 JSON specification.
Constraints
Each input line is either a valid JSON or the beginning of a valid JSON without line breaks (\n).
JSON objects, if present, have no duplicate keys.
Sample input
true
nul
[2,
{"a"
Expected output
0
1
2
3
Explanation
true is already a complete JSON, so no extra characters need to be added.
nul can be completed by adding l (i.e. null).
[2, can be completed by adding a digit and ] (e.g. [2,2]).
{"a" can be completed by adding :, a digit, and } (e.g. {"a":4}).
--
redo implementation
---
### 🤖 Cursor Assistant
I'll analyze this JSON streaming problem and look at what's already in the file.
---
### 🤖 Cursor Assistant
I'll scan the existing `json_streaming.py` and related sample input files to understand the current implementation and tests, then I'll rewrite the logic to compute the minimal characters needed to complete a JSON prefix.
---
### 🤖 Cursor Assistant
I updated my plan and will implement a cleaner streaming-state parser to compute minimal completion counts, replacing the old logic by modifying `min_chars_to_complete` to use the new algorithm and adding the new helper functions. I'll make the edit now.
---
### 🤖 Cursor Assistant
I'll run the updated script against a small sample and check for linter issues in the changed file.
---
### 🤖 Cursor Assistant
- I ran the updated program on the sample; outputs were 0, 2, 2, 3. The second line should be 1 for `nul`, so Ill adjust.
Let me fix keyword handling so partial keywords at top-level or within containers count remaining characters correctly.
---
*Exported from [Cursor View](https://github.com/saharmor/cursor-view)*