Previously when append_kvp created a new section or added a key, it
stuffed the "\n " separator into the new kvp's wsc.0 (the whitespace
between its own key and colon) instead of the prior kvp's wsc.3 (the
whitespace after the prior trailing comma). Result looked like:
lsp_servers: [...],
learn
: {generate_alternates
: true,},}
The writer also didn't set any interior whitespace on the new section's
JSONObjectContext, so everything crammed onto one line — `{key: val,}`
compact, not `{\n key: val,\n}` multi-line.
Rewrote the appender as append_kvp_pretty(object, key, value,
inner_indent, outer_indent):
- separator between kvps goes in the prior kvp's wsc.3, or if we're the
first kvp in a fresh object, in the object's own wsc.0 (after its
opening `{`)
- new kvp's wsc.3 carries `,\n<outer_indent>` so the parent's closing
`}` lands correctly indented
- interior indent vs outer indent are both explicit, so we don't have
to rewrite this logic every time we add another nesting level
New tests: new_section_exact_multiline_layout asserts byte-exact
output shape; new_section_and_key_format_cleanly verifies no key wraps
to the next line. Prior tests just substring-matched and happily passed
on the broken output — that's why this shipped in the first place.
Also: dropped the json5 crate dependency. json-five's serde feature
(default) provides the same from_str / to_string API. One fewer
dependency, and the two were doing the same job.
Co-Authored-By: Proof of Concept <poc@bcachefs.org>
104 lines
2.1 KiB
TOML
104 lines
2.1 KiB
TOML
[workspace]
|
|
members = ["channels/irc", "channels/telegram", "channels/tmux", "channels/socat"]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
version = "0.4.0"
|
|
edition = "2024"
|
|
|
|
[profile.release]
|
|
opt-level = 2
|
|
debug = 1
|
|
|
|
[profile.release.package."*"]
|
|
debug = false
|
|
|
|
[package]
|
|
name = "consciousness"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
|
|
[dependencies]
|
|
anyhow = "1"
|
|
crossterm = { version = "0.29", features = ["event-stream", "bracketed-paste", "osc52"] }
|
|
clap = { version = "4", features = ["derive"] }
|
|
figment = { version = "0.10", features = ["env"] }
|
|
dirs = "6"
|
|
env_logger = "0.11"
|
|
log = "0.4"
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
json-five = "0.3"
|
|
|
|
ratatui = { version = "0.30", features = ["unstable-rendered-line-info"] }
|
|
tui-markdown = { git = "https://github.com/koverstreet/tui-markdown", subdirectory = "tui-markdown" }
|
|
tui-textarea = { version = "0.10.2", package = "tui-textarea-2" }
|
|
textwrap = "0.16"
|
|
|
|
uuid = { version = "1", features = ["v4"] }
|
|
regex = "1"
|
|
glob = "0.3"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
libc = "0.2"
|
|
memchr = "2"
|
|
memmap2 = "0.9"
|
|
peg = "0.8"
|
|
paste = "1"
|
|
|
|
ast-grep-core = "0.42"
|
|
ast-grep-language = { version = "0.42", features = ["builtin-parser"] }
|
|
walkdir = "2"
|
|
|
|
redb = "4"
|
|
tempfile = "3"
|
|
|
|
tokio = { version = "1", features = ["full"] }
|
|
tokio-util = { version = "0.7", features = ["compat"] }
|
|
futures = "0.3"
|
|
capnp = "0.25"
|
|
capnp-rpc = "0.25"
|
|
|
|
tokenizers = "0.22"
|
|
|
|
http = "1"
|
|
hyper = { version = "1", features = ["client", "http1"] }
|
|
hyper-util = { version = "0.1", features = ["tokio"], default-features = false }
|
|
http-body-util = "0.1"
|
|
bytes = "1"
|
|
base64 = "0.22"
|
|
|
|
rustls = "0.23"
|
|
tokio-rustls = "0.26"
|
|
rustls-native-certs = "0.8"
|
|
serde_urlencoded = "0.7"
|
|
|
|
[build-dependencies]
|
|
capnpc = "0.25"
|
|
|
|
[lib]
|
|
name = "consciousness"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "consciousness"
|
|
path = "src/bin/consciousness.rs"
|
|
|
|
[[bin]]
|
|
name = "poc-memory"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "merge-logs"
|
|
path = "src/bin/merge-logs.rs"
|
|
|
|
[[bin]]
|
|
name = "diag-key"
|
|
path = "src/bin/diag-key.rs"
|
|
|
|
[[bin]]
|
|
name = "find-deleted"
|
|
path = "src/bin/find-deleted.rs"
|
|
[[bin]]
|
|
name = "dump-table"
|
|
path = "src/bin/dump-table.rs"
|