Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
5f63dcd
chore(probe): temporary debug_image_probe for connector image-passthr…
aliasunder Jul 18, 2026
0b24cb2
Revert "chore(probe): temporary debug_image_probe for connector image…
aliasunder Jul 18, 2026
915e60a
feat(assets): data layer, canvas linearizer, image pipeline, bytes co…
aliasunder Jul 18, 2026
1f1f7eb
feat(assets): vault_read_asset + vault_list_assets tools, safeHandler…
aliasunder Jul 18, 2026
bb331fc
feat(assets): env vars across deploy surfaces + docs sweep
aliasunder Jul 18, 2026
9c8436c
docs(assets): TDQS refinements — searchability limitation + traversal…
aliasunder Jul 18, 2026
cdd6501
test(assets): update pinned instructions + orientation-prompt assertions
aliasunder Jul 18, 2026
343fdec
Merge remote-tracking branch 'origin/main' into worktree-read-attachment
aliasunder Jul 18, 2026
23c67a5
docs(assets): re-render social preview — fit feature line with assets…
aliasunder Jul 18, 2026
9ff2563
style: simplify extension counting loop, add env group separator
aliasunder Jul 18, 2026
cb2faec
test: cover getExtension, readBinaryFileOrNull, statOrNull, and asset…
aliasunder Jul 18, 2026
6842d85
test(assets): cover the watcher's vanished-file guard (triage of Phas…
aliasunder Jul 18, 2026
c6bd847
fix: qualify animated GIF first-frame claim in vault_read_asset descr…
aliasunder Jul 18, 2026
fc86fff
fix(assets): review-thread fixes — canvas group tiebreak, UTF-8 stric…
aliasunder Jul 19, 2026
2b69f79
docs(assets): state that listed bytes are on-disk size, not delivery …
aliasunder Jul 19, 2026
9859214
fix(assets): CodeRabbit review round — descent floor, tag-safe displa…
aliasunder Jul 19, 2026
5e34955
docs(assets): reframe README Assets section on the sibling problem-fi…
aliasunder Jul 19, 2026
b90482b
docs(assets): credit the see-and-size baseline to vault-cortex's own …
aliasunder Jul 19, 2026
3b13cc5
feat(assets): raw option on vault_read_asset for exact canvas source
aliasunder Jul 19, 2026
ffbddc8
docs(assets): colocate why-comments on the image-fit tuning constants
aliasunder Jul 19, 2026
2867704
feat(assets): log image dimensions and original bytes in tool_result
aliasunder Jul 19, 2026
9c038a5
docs(assets): make image fitting conditional across every surface
aliasunder Jul 19, 2026
d1dcba2
docs(assets): link Canvas docs alongside Bases
aliasunder Jul 19, 2026
d82230b
refactor(assets): truthy checks over explicit comparisons in the imag…
aliasunder Jul 19, 2026
3e24849
docs(assets): tighten the Assets opener to the linked-sized-readable …
aliasunder Jul 19, 2026
e297fb3
refactor(assets): flatten review-flagged logic for top-to-bottom reading
aliasunder Jul 19, 2026
3cd3676
refactor(assets): name the per-attempt encode quality for its role
aliasunder Jul 19, 2026
f3db2a1
refactor(assets): extract asset-reader and asset-listing use-cases fr…
aliasunder Jul 19, 2026
938a35b
docs(assets): say what asset-reader implements instead of 'the dispatch'
aliasunder Jul 19, 2026
4be8d4c
refactor(assets): drop filter predicate annotations — TS 6 infers them
aliasunder Jul 19, 2026
b5066ea
refactor(assets): namespace-export the asset use-cases per folder con…
aliasunder Jul 19, 2026
35e8d0f
docs(agents): sharpen the export-style rule — operations vs config re…
aliasunder Jul 19, 2026
be5847c
refactor(assets): merge the asset use-cases into one asset-operations…
aliasunder Jul 19, 2026
4ae8b02
docs(agents): codify group-by-dependency-layer-not-topic in module la…
aliasunder Jul 19, 2026
772bc61
docs(assets): state the canvas linearizer's why, spec, and prior art …
aliasunder Jul 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .devin/wiki.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
},
{
"title": "Obsidian Markdown Parsing",
"purpose": "The pure parser layer in obsidian-markdown/ — no filesystem I/O, just domain knowledge about the Obsidian/Markdown format. Covers: links.ts (link grammar, fence-aware extraction, resolution for wikilinks, markdown links, embeds, frontmatter links, and relative path-from-current-file links — all three of Obsidian's 'New link format' modes); lines.ts (CRLF-safe line splitting, the consolidated fence state machine, classifyLines for identifying fenced regions); frontmatter.ts (gray-matter parse/stringify, frontmatter merge); callouts.ts (leading-callout parser for > [!type] blocks); headings.ts (shared H1-H6 section-span parser used by both read and patch operations); tasks.ts (Tasks-plugin task-line grammar covering emoji signifiers and Dataview inline fields); memory-entries.ts (memory-entry grammar — parses the dated-bullet format of About Me/ memory files into individual entries for vault_memory_recall's entry-granular index); plaintext.ts (strips Obsidian/Markdown syntax to produce plain text for the embedding pipeline). This layer is architecturally significant — it encodes the Obsidian-parity behavior that distinguishes Vault Cortex from simpler file-based integrations.",
"purpose": "The pure parser layer in obsidian-markdown/ — no filesystem I/O, just domain knowledge about the Obsidian/Markdown format. Covers: links.ts (link grammar, fence-aware extraction, resolution for wikilinks, markdown links, embeds, frontmatter links, and relative path-from-current-file links — all three of Obsidian's 'New link format' modes); canvas.ts (JSON Canvas 1.0 linearizer — spatial group containment, reading-order node sort, id-resolved edge lists — pure string-to-string despite parsing JSON, same leaf layer); lines.ts (CRLF-safe line splitting, the consolidated fence state machine, classifyLines for identifying fenced regions); frontmatter.ts (gray-matter parse/stringify, frontmatter merge); callouts.ts (leading-callout parser for > [!type] blocks); headings.ts (shared H1-H6 section-span parser used by both read and patch operations); tasks.ts (Tasks-plugin task-line grammar covering emoji signifiers and Dataview inline fields); memory-entries.ts (memory-entry grammar — parses the dated-bullet format of About Me/ memory files into individual entries for vault_memory_recall's entry-granular index); plaintext.ts (strips Obsidian/Markdown syntax to produce plain text for the embedding pipeline). This layer is architecturally significant — it encodes the Obsidian-parity behavior that distinguishes Vault Cortex from simpler file-based integrations.",
"parent": "Architecture",
"page_notes": [
{
Expand All @@ -50,7 +50,7 @@
},
{
"title": "Vault Operations",
"purpose": "The filesystem I/O layer in vault-operations/ that reads, writes, and transforms vault content. Safety primitives: atomic writes (atomicWriteFile temp-then-rename, atomicWriteFileExclusive link-based no-clobber for TOCTOU-safe creates), per-file write locking (file-write-lock.ts — serializing, fail-fast, and multi-file fail-fast modes), path traversal prevention (resolveSafePath resolve + prefix check, toVaultRelativePath normalization), and protected-path enforcement (PROTECTED_PATHS checked after normalization). Covers: vault-filesystem.ts (read/write/list/delete .md files, outline and section reads, protected-path validation); vault-patcher.ts (surgical edits — heading-targeted patch with prepend/append/replace operations, and find-and-replace with optional replace-all); note-mover.ts (move/rename a note and rewrite every vault-wide link that pointed to it, using the link resolution engine from obsidian-markdown/links.ts — preflight-then-commit design with multi-file exclusive locking); memory-store.ts (About Me/ heading-aware read/append/delete with shrink guard, idempotency guard, and ambiguity guard — see Memory Layer page); daily-notes.ts (daily note config reader and path resolver — see Memory Layer page). All functions follow the (params, logger) two-argument pattern.",
"purpose": "The filesystem I/O layer in vault-operations/ that reads, writes, and transforms vault content. Asset use-case: asset-operations.ts (per-type read dispatch — image fitting, canvas linearize/raw, strict-UTF-8 text passthrough, structured errors — plus browsing: extension filter, per-extension counts, capped statted slice) composes the vaultFs primitives readAsset (binary read with .md rejection and stat-first size cap), listAssets (folder-scoped non-md walk), and statAssets (bounded-concurrency stat) behind the vault_read_asset/vault_list_assets tools. Safety primitives: atomic writes (atomicWriteFile temp-then-rename, atomicWriteFileExclusive link-based no-clobber for TOCTOU-safe creates), per-file write locking (file-write-lock.ts — serializing, fail-fast, and multi-file fail-fast modes), path traversal prevention (resolveSafePath resolve + prefix check, toVaultRelativePath normalization), and protected-path enforcement (PROTECTED_PATHS checked after normalization). Covers: vault-filesystem.ts (read/write/list/delete .md files, outline and section reads, protected-path validation); vault-patcher.ts (surgical edits — heading-targeted patch with prepend/append/replace operations, and find-and-replace with optional replace-all); note-mover.ts (move/rename a note and rewrite every vault-wide link that pointed to it, using the link resolution engine from obsidian-markdown/links.ts — preflight-then-commit design with multi-file exclusive locking); memory-store.ts (About Me/ heading-aware read/append/delete with shrink guard, idempotency guard, and ambiguity guard — see Memory Layer page); daily-notes.ts (daily note config reader and path resolver — see Memory Layer page). All functions follow the (params, logger) two-argument pattern.",
"parent": "Architecture"
},
{
Expand All @@ -69,7 +69,7 @@
},
{
"title": "Tool Reference",
"purpose": "The MCP tools, now organized in domain group modules under mcp-core/tools/: vault-crud-tools.ts (read, write, patch, replace, delete-span, list, delete, move, update-properties), search-tools.ts (search, search-by-tag, search-by-folder, recent-notes, list-tags, list-property-keys, list-property-values, search-by-property, get-backlinks, get-outgoing-links, find-orphans), task-tools.ts (list-tasks, update-task), memory-tools.ts (get-memory, update-memory, list-memory-files, delete-memory, memory-recall; conditionally registered when MEMORY_ENABLED=true), and daily-note-tools.ts (get-daily-note). vault_list_tasks and vault_update_task in task-tools.ts provide Kanban-aware task management: vault_list_tasks is a vault-wide task index with structured filters (status, 6 date fields, priority, folder/tag/heading/path scope), array params for multi-lane queries, date cascade sorting, and position sorting for board order; vault_update_task applies status, priority, and/or lane changes in a single call — marking done auto-detects the done lane (via **Complete** markers, falling back to 'Done' heading), stamps/removes completion dates, and writes in the user's configured Tasks plugin format (emoji or Dataview). The orchestrator in tool-definitions.ts composes TOOL_NAMES from each group and calls register functions. Each tool description includes Example, When to use, Returns, and Errors sections — optimized against Glama's TDQS (Tool Description Quality Score) model to ensure agents select and invoke the right tool efficiently.",
"purpose": "The MCP tools, now organized in domain group modules under mcp-core/tools/: vault-crud-tools.ts (read, write, patch, replace, delete-span, list, delete, move, update-properties), search-tools.ts (search, search-by-tag, search-by-folder, recent-notes, list-tags, list-property-keys, list-property-values, search-by-property, get-backlinks, get-outgoing-links, find-orphans), task-tools.ts (list-tasks, update-task), memory-tools.ts (get-memory, update-memory, list-memory-files, delete-memory, memory-recall; conditionally registered when MEMORY_ENABLED=true), daily-note-tools.ts (get-daily-note), and asset-tools.ts (read-asset — images as MCP image blocks via a sharp fit-to-byte-budget pipeline, .canvas linearized via obsidian-markdown/canvas.ts, text formats verbatim; list-assets — filesystem-backed discovery with folder/extension filters and per-extension counts). vault_list_tasks and vault_update_task in task-tools.ts provide Kanban-aware task management: vault_list_tasks is a vault-wide task index with structured filters (status, 6 date fields, priority, folder/tag/heading/path scope), array params for multi-lane queries, date cascade sorting, and position sorting for board order; vault_update_task applies status, priority, and/or lane changes in a single call — marking done auto-detects the done lane (via **Complete** markers, falling back to 'Done' heading), stamps/removes completion dates, and writes in the user's configured Tasks plugin format (emoji or Dataview). The orchestrator in tool-definitions.ts composes TOOL_NAMES from each group and calls register functions. Each tool description includes Example, When to use, Returns, and Errors sections — optimized against Glama's TDQS (Tool Description Quality Score) model to ensure agents select and invoke the right tool efficiently.",
"parent": "MCP Interface"
},
{
Expand Down
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ TZ=UTC
# Enables polling for the file watcher and rename-based moves across
# the Docker Desktop/WSL2 bridge.
# WINDOWS_MODE=false
#
# Largest asset file vault_read_asset will read, in bytes (default: 52428800 = 50 MiB).
# MAX_ASSET_BYTES=52428800
# Byte budget for images returned by vault_read_asset, in binary bytes before
# base64 encoding (default: 49152 = 48 KiB, sized for Claude Code's response cap).
# MAX_IMAGE_OUTPUT_BYTES=49152
# Enable or disable the memory layer (default: true).
# Set to false to hide memory tools, skip auto-initialization, and omit
# memory references from server metadata. MEMORY_DIR is ignored when false.
Expand Down
Loading
Loading