docs: add design for read_note line numbers by default
Changes withLineNumbers default from false to true so AI assistants can reference specific line numbers when discussing notes.
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
# Design: Line Numbers by Default in `read_note`
|
||||||
|
|
||||||
|
**Date:** 2026-01-31
|
||||||
|
**Version:** 1.2.1
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
Change `read_note` to return line-numbered content by default (e.g., `1→First line`) to help AI assistants reference specific locations when discussing notes. Add `withLineNumbers: false` to get raw content.
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
AI assistants can give much more precise references like "line 42 has a typo" rather than vague "in the section about X". Line numbers make file discussions unambiguous.
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
### 1. Default Behavior Change
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Before
|
||||||
|
const withLineNumbers = options?.withLineNumbers ?? false;
|
||||||
|
|
||||||
|
// After
|
||||||
|
const withLineNumbers = options?.withLineNumbers ?? true;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Apply to Parsed Path
|
||||||
|
|
||||||
|
Currently the `parseFrontmatter: true` path ignores line numbers. Add line numbering to the `content` field (and `contentWithoutFrontmatter`) when enabled.
|
||||||
|
|
||||||
|
### 3. Schema Update
|
||||||
|
|
||||||
|
Update the tool description to say "Default: true" and clarify opt-out with `withLineNumbers: false`.
|
||||||
|
|
||||||
|
## Files to Modify
|
||||||
|
|
||||||
|
### `src/tools/note-tools.ts`
|
||||||
|
- Line 48: Change default from `false` to `true`
|
||||||
|
- Lines 125-155: Add line numbering logic to the `parseFrontmatter` path for `content` and `contentWithoutFrontmatter` fields
|
||||||
|
- Add `totalLines` to parsed response when line numbers enabled
|
||||||
|
|
||||||
|
### `src/tools/index.ts`
|
||||||
|
- Lines 51-54: Update schema description to reflect new default
|
||||||
|
|
||||||
|
### `tests/note-tools.test.ts`
|
||||||
|
- Update existing tests that expect raw content to either:
|
||||||
|
- Explicitly pass `withLineNumbers: false`, or
|
||||||
|
- Update assertions to expect numbered content
|
||||||
|
|
||||||
|
## Response Format Examples
|
||||||
|
|
||||||
|
### Before (current default)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"content": "# Title\nSome content",
|
||||||
|
"wordCount": 3,
|
||||||
|
"versionId": "abc123"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (new default)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"content": "1→# Title\n2→Some content",
|
||||||
|
"totalLines": 2,
|
||||||
|
"wordCount": 3,
|
||||||
|
"versionId": "abc123"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Opt-out (`withLineNumbers: false`)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"content": "# Title\nSome content",
|
||||||
|
"wordCount": 3,
|
||||||
|
"versionId": "abc123"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Breaking Change
|
||||||
|
|
||||||
|
This changes the default response format. MCP clients that parse `content` expecting raw text will need to either:
|
||||||
|
- Update their parsing to handle line-numbered format
|
||||||
|
- Explicitly pass `withLineNumbers: false`
|
||||||
|
|
||||||
|
## Version
|
||||||
|
|
||||||
|
Bump to 1.2.1.
|
||||||
Reference in New Issue
Block a user