@imunitic/synapse 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43,7 +43,7 @@ frontmatter (unlike task notes) -- a content match, scoped to `designs/`. Needs
43
43
  synapse vault-search --fields frontmatter.title <<'EOF'
44
44
  {"and": [
45
45
  {"glob": ["designs/*", {"var": "path"}]},
46
- {"regexp": ["## Status\\nDiscussing", {"var": "content"}]}
46
+ {"regexp": ["## Status\nDiscussing", {"var": "content"}]}
47
47
  ]}
48
48
  EOF
49
49
  ```
@@ -57,7 +57,7 @@ only the title:
57
57
  synapse vault-search --fields frontmatter.title <<'EOF'
58
58
  {"and": [
59
59
  {"glob": ["designs/*", {"var": "path"}]},
60
- {"regexp": ["## Status\\nReady", {"var": "content"}]},
60
+ {"regexp": ["## Status\nReady", {"var": "content"}]},
61
61
  {"!": [{"regexp": ["Compiled task:", {"var": "content"}]}]}
62
62
  ]}
63
63
  EOF
@@ -74,22 +74,24 @@ rather than reading the note again:
74
74
  synapse vault-search --fields frontmatter.title,content <<'EOF'
75
75
  {"and": [
76
76
  {"glob": ["designs/*", {"var": "path"}]},
77
- {"regexp": ["## Open Questions\\n- ", {"var": "content"}]}
77
+ {"regexp": ["## Open Questions\n- ", {"var": "content"}]}
78
78
  ]}
79
79
  EOF
80
80
  ```
81
81
 
82
- Do not chain further `and`/`regexp` conditions onto this query to sort matches by status -- compound
83
- `regexp` conditions against `content` have been observed to return results that are logically
84
- impossible (a query with strictly more AND-ed conditions returning *more* matches than one with
85
- fewer), so any query beyond a single `glob` + single `regexp` pair is unverified and not to be
86
- trusted here. Instead, take two things from each row's `content` column directly, no second call
87
- needed for either: the line following `## Status` (normally `Discussing`/`Ready`/`Reference`, but a
88
- note written before the three-word convention can carry free text instead, e.g. `Superseded by
89
- [[...]]` -- report that verbatim rather than forcing it into a bucket, surfacing an odd note beats
90
- losing it) and the target of a `> Compiled task: [[...]]` line, if present -- that's the compiled
91
- task, parsed straight out of the wikilink text rather than resolved through any vault-wide link
92
- index.
82
+ This spans every status, so take two things from each row's `content` column directly instead of
83
+ chaining further status-specific `regexp` branches onto the query: the line following `## Status`
84
+ (normally `Discussing`/`Ready`/`Reference`, but a note written before the three-word convention can
85
+ carry free text instead, e.g. `Superseded by [[...]]` -- report that verbatim rather than forcing it
86
+ into a bucket, surfacing an odd note beats losing it) and the target of a `> Compiled task: [[...]]`
87
+ line, if present -- that's the compiled task, parsed straight out of the wikilink text rather than
88
+ resolved through any vault-wide link index.
89
+
90
+ A `regexp` pattern containing a literal newline (`\n`) must be written with a single backslash, byte-
91
+ for-byte, in the JSON text piped to `vault-search` -- the heredocs above are unquoted-delimiter
92
+ (`<<'EOF'`), so nothing here re-escapes it; `\\n` would reach the JSON parser as a literal backslash
93
+ followed by `n`, never matching a real line break, and every one of this command's five queries would
94
+ silently stop finding anything under a multi-line pattern.
93
95
 
94
96
  **4. Open task notes with at least one unchecked item.** Task notes carry `status:` in frontmatter,
95
97
  unlike design notes -- filter there first, and request `content` to count `- [ ]` lines directly from
@@ -45,7 +45,7 @@ frontmatter (unlike task notes) -- a content match, scoped to `designs/`. Needs
45
45
  synapse vault-search --fields frontmatter.title <<'EOF'
46
46
  {"and": [
47
47
  {"glob": ["designs/*", {"var": "path"}]},
48
- {"regexp": ["## Status\\nDiscussing", {"var": "content"}]}
48
+ {"regexp": ["## Status\nDiscussing", {"var": "content"}]}
49
49
  ]}
50
50
  EOF
51
51
  ```
@@ -59,7 +59,7 @@ title -- "`Ready` and missing that line" is a direct signal, not fuzzy title-mat
59
59
  synapse vault-search --fields frontmatter.title <<'EOF'
60
60
  {"and": [
61
61
  {"glob": ["designs/*", {"var": "path"}]},
62
- {"regexp": ["## Status\\nReady", {"var": "content"}]},
62
+ {"regexp": ["## Status\nReady", {"var": "content"}]},
63
63
  {"!": [{"regexp": ["Compiled task:", {"var": "content"}]}]}
64
64
  ]}
65
65
  EOF
@@ -75,21 +75,23 @@ the status directly out of the returned text rather than reading the note again:
75
75
  synapse vault-search --fields frontmatter.title,content <<'EOF'
76
76
  {"and": [
77
77
  {"glob": ["designs/*", {"var": "path"}]},
78
- {"regexp": ["## Open Questions\\n- ", {"var": "content"}]}
78
+ {"regexp": ["## Open Questions\n- ", {"var": "content"}]}
79
79
  ]}
80
80
  EOF
81
81
  ```
82
82
 
83
- Do not chain further `and`/`regexp` conditions onto this query to sort matches by status -- compound
84
- `regexp` conditions against `content` have been observed to return results that are logically
85
- impossible (a query with strictly more AND-ed conditions returning *more* matches than one with
86
- fewer), so any query beyond a single `glob` + single `regexp` pair is unverified and not to be
87
- trusted here. Instead, take the line following `## Status` directly out of each row's `content`
88
- column -- normally `Discussing`/`Ready`/`Reference`, but a design note written before that
89
- three-word convention was standardized can carry free text there instead (e.g. `Superseded by
90
- [[...]]`); report that verbatim rather than forcing it into a bucket, surfacing an odd note beats
91
- losing it, the same reasoning behind reporting a 0-unchecked task instead of hiding it (see Query 4
92
- below).
83
+ This spans every status, so take the line following `## Status` directly out of each row's `content`
84
+ column instead of chaining further status-specific `regexp` branches onto the query -- normally
85
+ `Discussing`/`Ready`/`Reference`, but a design note written before that three-word convention was
86
+ standardized can carry free text there instead (e.g. `Superseded by [[...]]`); report that verbatim
87
+ rather than forcing it into a bucket, surfacing an odd note beats losing it, the same reasoning behind
88
+ reporting a 0-unchecked task instead of hiding it (see Query 4 below).
89
+
90
+ A `regexp` pattern containing a literal newline (`\n`) must be written with a single backslash, byte-
91
+ for-byte, in the JSON text piped to `vault-search` -- the heredocs above are unquoted-delimiter
92
+ (`<<'EOF'`), so nothing here re-escapes it; `\\n` would reach the JSON parser as a literal backslash
93
+ followed by `n`, never matching a real line break, and every one of this skill's five queries would
94
+ silently stop finding anything under a multi-line pattern.
93
95
 
94
96
  **4. Open task notes with at least one unchecked item.** Task notes carry `status:` in frontmatter,
95
97
  unlike design notes -- filter there first, and request `content` to count `- [ ]` lines directly from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imunitic/synapse",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Memory for Claude Code, Codex CLI, and OpenCode: a durable Obsidian vault plus a per-repo code graph.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,9 +22,9 @@
22
22
  "*.conf.template"
23
23
  ],
24
24
  "optionalDependencies": {
25
- "@imunitic/synapse-darwin-arm64": "0.2.6",
26
- "@imunitic/synapse-linux-x64": "0.2.6",
27
- "@imunitic/synapse-linux-arm64": "0.2.6"
25
+ "@imunitic/synapse-darwin-arm64": "0.2.7",
26
+ "@imunitic/synapse-linux-x64": "0.2.7",
27
+ "@imunitic/synapse-linux-arm64": "0.2.7"
28
28
  },
29
29
  "license": "SEE LICENSE IN LICENSE"
30
30
  }