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