@plurnk/plurnk-service 0.56.0 → 0.57.0

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.
Files changed (87) hide show
  1. package/.env.example +9 -6
  2. package/SPEC.md +38 -22
  3. package/dist/content/matcher.d.ts +4 -0
  4. package/dist/content/matcher.d.ts.map +1 -1
  5. package/dist/content/matcher.js +22 -14
  6. package/dist/content/matcher.js.map +1 -1
  7. package/dist/core/ChannelWrite.d.ts +6 -1
  8. package/dist/core/ChannelWrite.d.ts.map +1 -1
  9. package/dist/core/ChannelWrite.js +8 -2
  10. package/dist/core/ChannelWrite.js.map +1 -1
  11. package/dist/core/ChannelWrite.sql +12 -2
  12. package/dist/core/Engine.d.ts +8 -0
  13. package/dist/core/Engine.d.ts.map +1 -1
  14. package/dist/core/Engine.js +246 -70
  15. package/dist/core/Engine.js.map +1 -1
  16. package/dist/core/Engine.sql +4 -0
  17. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  18. package/dist/core/SchemeRegistry.js +6 -1
  19. package/dist/core/SchemeRegistry.js.map +1 -1
  20. package/dist/core/git-membership.d.ts.map +1 -1
  21. package/dist/core/git-membership.js +40 -4
  22. package/dist/core/git-membership.js.map +1 -1
  23. package/dist/core/packet-wire.d.ts.map +1 -1
  24. package/dist/core/packet-wire.js +21 -37
  25. package/dist/core/packet-wire.js.map +1 -1
  26. package/dist/core/session-settings.d.ts +1 -1
  27. package/dist/core/session-settings.d.ts.map +1 -1
  28. package/dist/core/session-settings.js +4 -4
  29. package/dist/core/session-settings.js.map +1 -1
  30. package/dist/schemes/Exec.d.ts.map +1 -1
  31. package/dist/schemes/Exec.js +11 -3
  32. package/dist/schemes/Exec.js.map +1 -1
  33. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  34. package/dist/schemes/ExecOutputScheme.js +2 -1
  35. package/dist/schemes/ExecOutputScheme.js.map +1 -1
  36. package/dist/schemes/File.d.ts.map +1 -1
  37. package/dist/schemes/File.js +4 -5
  38. package/dist/schemes/File.js.map +1 -1
  39. package/dist/schemes/Run.d.ts +5 -1
  40. package/dist/schemes/Run.d.ts.map +1 -1
  41. package/dist/schemes/Run.js +36 -12
  42. package/dist/schemes/Run.js.map +1 -1
  43. package/dist/schemes/_entry-find.d.ts +16 -1
  44. package/dist/schemes/_entry-find.d.ts.map +1 -1
  45. package/dist/schemes/_entry-find.js +67 -47
  46. package/dist/schemes/_entry-find.js.map +1 -1
  47. package/dist/schemes/_entry-graph.d.ts +6 -1
  48. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  49. package/dist/schemes/_entry-graph.js +35 -22
  50. package/dist/schemes/_entry-graph.js.map +1 -1
  51. package/dist/schemes/_entry-graph.sql +9 -7
  52. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  53. package/dist/schemes/_entry-manifest.js +16 -3
  54. package/dist/schemes/_entry-manifest.js.map +1 -1
  55. package/dist/schemes/_entry-ops.d.ts +5 -0
  56. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  57. package/dist/schemes/_entry-ops.js +14 -0
  58. package/dist/schemes/_entry-ops.js.map +1 -1
  59. package/dist/schemes/_entry-semantic.d.ts +1 -1
  60. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  61. package/dist/schemes/_entry-semantic.js +15 -12
  62. package/dist/schemes/_entry-semantic.js.map +1 -1
  63. package/dist/server/Daemon.d.ts.map +1 -1
  64. package/dist/server/Daemon.js +7 -2
  65. package/dist/server/Daemon.js.map +1 -1
  66. package/dist/server/MethodRegistry.d.ts +1 -0
  67. package/dist/server/MethodRegistry.d.ts.map +1 -1
  68. package/dist/server/dsl.d.ts +9 -1
  69. package/dist/server/dsl.d.ts.map +1 -1
  70. package/dist/server/dsl.js +31 -4
  71. package/dist/server/dsl.js.map +1 -1
  72. package/dist/server/logEntry.d.ts.map +1 -1
  73. package/dist/server/logEntry.js +3 -1
  74. package/dist/server/logEntry.js.map +1 -1
  75. package/dist/server/methods/op_look.d.ts +5 -0
  76. package/dist/server/methods/op_look.d.ts.map +1 -0
  77. package/dist/server/methods/op_look.js +30 -0
  78. package/dist/server/methods/op_look.js.map +1 -0
  79. package/dist/server/methods/op_parse.d.ts.map +1 -1
  80. package/dist/server/methods/op_parse.js +7 -2
  81. package/dist/server/methods/op_parse.js.map +1 -1
  82. package/dist/server/methods/session_constraints.js +1 -1
  83. package/dist/server/methods/session_constraints.js.map +1 -1
  84. package/dist/server/methods/session_create.js +7 -7
  85. package/dist/server/methods/session_create.js.map +1 -1
  86. package/migrations/0000-00-00.01_schema.sql +11 -1
  87. package/package.json +5 -5
@@ -4,8 +4,9 @@ import EntryFind from "./_entry-find.js";
4
4
  import { foldAuthorityIntoPath } from "../core/plurnk-uri.js";
5
5
  // run:// — the run scheme: inter-run CONTROL (spawn/irc; COPY=fork is Engine.#handleCopy) AND
6
6
  // run-scoped STORAGE (§run-scheme). The run is always the AUTHORITY: run://<name>/<path> is
7
- // entry <path> owned by run <name>; run:/// (empty authority) is self. Run is excluded from
8
- // #extractTarget's authority-fold (Engine) so the empty-authority=self signal survives.
7
+ // entry <path> owned by run <name>; `run://self` is the current run, empty authority is invalid.
8
+ // Run is excluded from #extractTarget's authority-fold (Engine) so the authority stays the run
9
+ // name, never folded.
9
10
  // - path present → storage: READ any run's entry by address (cross-run read ok); EDIT self
10
11
  // only (cross-run write → 403 — a run reads a sister's notes, never writes them).
11
12
  // - path absent → control on the run-as-actor: EDIT spawns a sister, SEND ircs one.
@@ -19,10 +20,10 @@ export default class Run {
19
20
  writableBy: ["model", "client"],
20
21
  volatile: false,
21
22
  modelVisible: true,
22
- example: "<<EDIT(run:///todo.md):- [ ] investigate the timeout:EDIT",
23
+ example: "<<EDIT(run://self/todo.md):- [ ] investigate the timeout:EDIT",
23
24
  };
24
- // The run name from a run:// target's authority (hostname). "" = self (empty authority);
25
- // null when the target isn't a run:// url.
25
+ // The run name from a run:// target's authority (hostname). "self" = the current run;
26
+ // "" (empty authority) is invalid; null when the target isn't a run:// url.
26
27
  static #authority(target) {
27
28
  if (target === null || target.kind !== "url" || target.scheme !== "run")
28
29
  return null;
@@ -58,7 +59,7 @@ export default class Run {
58
59
  const entryPath = Run.#entryPath(statement.target);
59
60
  if (entryPath === "") {
60
61
  // Control: spawn the sister named by the authority. Self cannot be spawned.
61
- if (authority === "" || authority === ".")
62
+ if (authority === "" || authority === "self")
62
63
  return { status: 400, error: "run:// spawn cannot target self (run://<name>)" };
63
64
  if (ctx.injectRun === undefined)
64
65
  throw new Error("run.edit: injectRun capability absent");
@@ -74,12 +75,29 @@ export default class Run {
74
75
  return { status: 200, body: authority };
75
76
  }
76
77
  // Storage: write a run-scope entry. Self only — cross-run write is denied (§run-scheme).
78
+ if (authority === "")
79
+ return { status: 400, error: "run:// requires a run name or 'self' (run://self/<path>)" };
77
80
  const self = await Run.#selfName(ctx);
78
- const owner = authority === "" ? self : authority;
81
+ const owner = authority === "self" ? self : authority;
79
82
  if (owner !== self)
80
83
  return { status: 403, error: "run:// write is self-only — read a sister's notes, never write them" };
81
84
  return EntryOps.editSessionEntry(Run.#withOwner(statement, owner), ctx, Run.manifest);
82
85
  }
86
+ // KILL a run-scope scratch ENTRY (path present). Self-only — deleting a sister's notes
87
+ // is a cross-run write, denied like EDIT (§run-scheme). The path-ABSENT KILL form is run
88
+ // cancellation, handled in Engine.#handleKill (it routes only entry-path KILLs here).
89
+ async deleteEntry(statement, ctx) {
90
+ const authority = Run.#authority(statement.target);
91
+ if (authority === null)
92
+ return { status: 400, error: "run:// requires a run target" };
93
+ if (authority === "")
94
+ return { status: 400, error: "run:// requires a run name or 'self' (run://self/<path>)" };
95
+ const self = await Run.#selfName(ctx);
96
+ const owner = authority === "self" ? self : authority;
97
+ if (owner !== self)
98
+ return { status: 403, error: "run:// kill is self-only — read a sister's notes, never delete them" };
99
+ return EntryOps.deleteSessionEntry(Run.#withOwner(statement, owner), ctx, Run.manifest);
100
+ }
83
101
  async read(statement, ctx) {
84
102
  const authority = Run.#authority(statement.target);
85
103
  if (authority === null)
@@ -87,18 +105,22 @@ export default class Run {
87
105
  const entryPath = Run.#entryPath(statement.target);
88
106
  if (entryPath === "")
89
107
  return { status: 400, content: null, mimetype: null, channel: null }; // a run is not READable, only its entries
108
+ if (authority === "")
109
+ return { status: 400, content: null, mimetype: null, channel: null }; // retired empty-authority form
90
110
  // Cross-run READ is allowed — resolve self, fold the owner into the storage path.
91
- const owner = authority === "" ? await Run.#selfName(ctx) : authority;
111
+ const owner = authority === "self" ? await Run.#selfName(ctx) : authority;
92
112
  return EntryOps.readSessionEntry(Run.#withOwner(statement, owner), ctx, Run.manifest);
93
113
  }
94
- // §run-scheme — FIND a run's scratch. `run:///**` is self; `run://<name>/**` a sister
114
+ // §run-scheme — FIND a run's scratch. `run://self/**` is self; `run://<name>/**` a sister
95
115
  // (cross-run READ is allowed, so cross-run FIND is too). Resolve the owner and fold it into
96
116
  // the scope pathname (`/<owner>/<rest>`) so EntryFind draws from that run's partition alone.
97
117
  async find(statement, ctx) {
98
118
  const authority = Run.#authority(statement.target);
99
119
  if (authority === null)
100
- return { status: 400, content: null, mimetype: null, results: [], itemsTokenTotal: 0 };
101
- const owner = authority === "" ? await Run.#selfName(ctx) : authority;
120
+ return { status: 400, content: null, mimetype: null, results: [], itemsTokenTotal: 0, pathnames: [], matches: [] };
121
+ if (authority === "")
122
+ return { status: 400, content: null, mimetype: null, results: [], itemsTokenTotal: 0, pathnames: [], matches: [] };
123
+ const owner = authority === "self" ? await Run.#selfName(ctx) : authority;
102
124
  const t = statement.target;
103
125
  const folded = t !== null && t.kind === "url"
104
126
  ? { ...statement, target: { ...t, hostname: null, pathname: foldAuthorityIntoPath(owner, t.pathname) } }
@@ -109,10 +131,12 @@ export default class Run {
109
131
  const authority = Run.#authority(statement.target);
110
132
  if (authority === null)
111
133
  return { status: 400, error: "run:// irc requires a run (run://<name>)" };
134
+ if (authority === "")
135
+ return { status: 400, error: "run:// irc requires a run name or 'self' (run://<name>)" };
112
136
  if (ctx.injectRun === undefined)
113
137
  throw new Error("run.send: injectRun capability absent");
114
138
  let runId = ctx.runId;
115
- if (authority !== "" && authority !== ".") {
139
+ if (authority !== "self") {
116
140
  const row = await ctx.db.run_resolve_by_name.get({ session_id: ctx.sessionId, name: authority });
117
141
  if (row === undefined)
118
142
  return { status: 404, error: `run://${authority} not found in this session` };
@@ -1 +1 @@
1
- {"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/schemes/Run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/schemes/Run.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,27 @@
1
1
  import type { FindStatement } from "@plurnk/plurnk-grammar";
2
2
  import type { PlurnkSchemeContext, SchemeManifest } from "../core/scheme-types.ts";
3
3
  import { type CatalogEntry } from "./_entry-manifest.ts";
4
+ export interface Match {
5
+ pathname: string;
6
+ span: {
7
+ lineStart: number;
8
+ lineEnd: number;
9
+ } | null;
10
+ }
11
+ export type MatchItem = CatalogEntry & {
12
+ matchSpan?: {
13
+ lineStart: number;
14
+ lineEnd: number;
15
+ };
16
+ };
4
17
  export interface FindResult {
5
18
  status: number;
6
19
  content: string | null;
7
20
  mimetype: string | null;
8
- results: CatalogEntry[];
21
+ results: MatchItem[];
9
22
  itemsTokenTotal: number;
23
+ pathnames: string[];
24
+ matches: Match[];
10
25
  }
11
26
  export default class EntryFind {
12
27
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-find.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;;WA4Ib,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;CA2BrI"}
1
+ {"version":3,"file":"_entry-find.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,WAAW,KAAK;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAAE;AAEjG,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE9F,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,KAAK,EAAE,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;;WAsJb,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;CA8BrI"}
@@ -1,9 +1,10 @@
1
1
  // FIND helper for entry-bearing schemes (SPEC §find; plurnk.md FIND row).
2
2
  // FIND resolves to the scheme's CATALOG ROWS — the very rows the manifest catalogs —
3
3
  // filtered to the statement's matches. A matcher (glob/regex/jsonpath/xpath/~semantic/
4
- // @graph) decides WHICH entries appear; it never reshapes a row (there is no per-match
5
- // extentmatch-location is a READ, not a FIND field). The result is a JSON array of
6
- // catalog rows: the per-scheme slice of the catalog (§find-result-catalog-rows).
4
+ // @graph) decides WHICH entries appear. A CONTENT matcher also stamps each row with
5
+ // `matchLines`the source line(s) where it hit (plurnk.md:31: FIND returns the matching
6
+ // rows with the match lines in the metadata; the line CONTENT is a READ). The result is a
7
+ // JSON array of catalog rows: the per-scheme slice of the catalog (§find-result-catalog-rows).
7
8
  //
8
9
  // Slot semantics (plurnk.md §"Body matcher dispatch (FIND, READ, OPEN, FOLD)"):
9
10
  // target — required scope (path or glob); selects which entries are candidates
@@ -79,33 +80,38 @@ export default class EntryFind {
79
80
  // tags) runs in SQL (find_session_entry_candidates); a content matcher then runs against
80
81
  // each candidate's default-channel CONTENT (Matcher.matchAgainstContent → the mimetypes
81
82
  // daughter) and INCLUDES/EXCLUDES the entry — 200 keeps it, 204/415/203 drop it, 400
82
- // (malformed matcher) fails the whole op. Path-scoping stays in the (target). The matched
83
- // SET is what FIND returns; the match LOCATION (which line/symbol) is a READ concern.
83
+ // (malformed matcher) fails the whole op. Path-scoping stays in the (target). Returns the
84
+ // matched pathnames plus `locations` each content hit's source line(s), keyed by pathname.
84
85
  static async #matchPathnames(statement, ctx, manifest) {
85
86
  if (statement.target === null)
86
- return { status: 400, pathnames: [] };
87
+ return { status: 400, matches: [] };
87
88
  // Scope by the manifest's persisted entries.scheme (storedScheme; absent →
88
89
  // name). File sets storedScheme=null — bare rows.
89
90
  const scheme = manifest.storedScheme === undefined ? manifest.name : manifest.storedScheme;
90
91
  if (statement.body !== null && statement.body.dialect === "semantic") {
91
- // ~query: embed the query text, FTS-narrow by its terms, cosine-rank the
92
- // narrowed set, top-K. 501 when no embeddings handler is installed (the
93
- // channel degrades to empty bytes). <L> carries K.
92
+ // ~query: embed the query text, FTS-narrow by its terms, cosine-rank the narrowed
93
+ // set, top-K CHUNKS. Each ranked chunk is a (file, span) item — a file may appear
94
+ // more than once (#286, no dedup). 501 when no embeddings handler is installed. <L> carries the rank marker.
94
95
  const { mimetypes } = ctx;
95
96
  if (mimetypes === undefined)
96
- return { status: 501, pathnames: [] };
97
+ return { status: 501, matches: [] };
97
98
  if (statement.lineMarker === null)
98
- return { status: 400, pathnames: [] }; // ~query needs a top-K, e.g. ~query<10>
99
+ return { status: 400, matches: [] }; // ~query needs a rank marker, e.g. ~query<10>
99
100
  const ranked = await EntrySemantic.rankSemantic(ctx.db, ctx.sessionId, scheme, mimetypes, statement.body.raw, LineMarkerOps.firstLast(statement.lineMarker));
100
101
  if (ranked.status !== 200)
101
- return { status: ranked.status, pathnames: [] };
102
- // Rank order; a chunk-ranked list can repeat an entry across chunks dedupe,
103
- // keeping the highest-ranked occurrence. The winning chunk's span is a READ.
104
- return { status: 200, pathnames: EntryFind.#unique(ranked.results.map((x) => x.pathname)) };
102
+ return { status: ranked.status, matches: [] };
103
+ return { status: 200, matches: ranked.results.map((x) => ({ pathname: x.pathname, span: { lineStart: x.lineStart, lineEnd: x.lineEnd } })) };
105
104
  }
106
105
  const scopePathname = EntryFind.#scopePathnameOf(statement);
107
- // grammar 0.46 regex-in-path: a `#pattern#flags` target filters by regex over the pathname (below), so it takes no scope-prefix glob.
108
- const scopeGlob = statement.target.kind !== "regex" && scopePathname !== null && scopePathname.length > 0 ? `${scopePathname}*` : null; // scope prefix filter — §find-scope-prefix-filter
106
+ // The target's GLOB scope. A FOLDER (trailing slash, incl. the scheme root `/`) expands to
107
+ // its contents append `*`; a bare ENTRY path stays exact (one entry); an explicit glob
108
+ // passes through literally. The `*` is folderhood, not a blanket prefix — so FIND(README.md)
109
+ // is the one entry, uniform with READ's target contract (#286). grammar 0.46 regex-in-path:
110
+ // a `#pattern#flags` target filters by regex over the pathname (below), no scope glob.
111
+ // §find-scope-prefix-filter
112
+ const scopeGlob = statement.target.kind === "regex" || scopePathname === null || scopePathname.length === 0
113
+ ? null
114
+ : (scopePathname.endsWith("/") ? `${scopePathname}*` : scopePathname);
109
115
  const tags = Array.isArray(statement.signal) ? statement.signal : []; // tag filter, AND semantics — §find-tag-filter-and-semantics
110
116
  const tagsParam = tags.length > 0 ? JSON.stringify(tags) : "[]";
111
117
  const { db, sessionId } = ctx;
@@ -129,46 +135,55 @@ export default class EntryFind {
129
135
  re = new RegExp(statement.target.pattern, statement.target.flags || undefined);
130
136
  }
131
137
  catch {
132
- return { status: 400, pathnames: [] };
138
+ return { status: 400, matches: [] };
133
139
  }
134
140
  candidates = candidates.filter((c) => re.test(c.pathname));
135
141
  }
136
- let pathnames;
142
+ // Every dialect resolves to (file, span) items — one per match (#286). A body-less FIND
143
+ // selects the whole entry (span: null); a matcher selects spans within it.
144
+ let matches;
137
145
  if (statement.body === null) {
138
- // No body matcher every in-scope candidate is in the result.
139
- pathnames = candidates.map((c) => c.pathname);
146
+ matches = candidates.map((c) => ({ pathname: c.pathname, span: null }));
140
147
  }
141
148
  else if (statement.body.dialect === "graph") {
142
- // @graph (plurnk-service#186): body is `@<sym` / `@>sym` / `@sym`.
143
- // EntryGraph resolves the relation across (session, scheme); intersect
144
- // with the in-scope candidates (target glob + tags) for the final set.
149
+ // @graph (plurnk-service#186): body is `@<sym` / `@>sym` / `@sym`. EntryGraph resolves
150
+ // the relation across (session, scheme), each as a (file, span); intersect with the
151
+ // in-scope candidates (target glob + tags) for the final set.
145
152
  const inScope = new Set(candidates.map((c) => c.pathname));
146
153
  const graph = await EntryGraph.match(ctx.db, ctx.sessionId, scheme, statement.body.raw);
147
154
  if (graph.status !== 200)
148
- return { status: graph.status, pathnames: [] };
149
- pathnames = graph.pathnames.filter((p) => inScope.has(p));
155
+ return { status: graph.status, matches: [] };
156
+ matches = graph.matches.filter((m) => inScope.has(m.pathname)).map((m) => ({ pathname: m.pathname, span: { lineStart: m.lineStart, lineEnd: m.lineEnd } }));
150
157
  }
151
158
  else {
152
159
  const { mimetypes } = ctx;
153
160
  if (mimetypes === undefined)
154
161
  throw new Error("EntryFind.#matchPathnames: body matcher requires the mimetypes capability in ctx");
155
- pathnames = [];
162
+ matches = [];
156
163
  for (const cand of candidates) {
157
164
  const match = await Matcher.matchAgainstContent(statement.body, cand.content, cand.mimetype, mimetypes); // matcher runs on content — §find-glob-filter-on-content
158
165
  if (match.status === 400)
159
- return { status: 400, pathnames: [] };
166
+ return { status: 400, matches: [] };
160
167
  if (match.status !== 200)
161
168
  continue; // 204 no-match / 415 unsupported / 203 fallback → not a content hit
162
- pathnames.push(cand.pathname); // a content hit includes the entry — entry-level, no extent
169
+ const spans = match.spans ?? [];
170
+ // A matched-but-span-less hit (e.g. an xpath computed scalar — count()) still includes
171
+ // the entry; it has no source location, so the item carries the whole entry (span null).
172
+ if (spans.length === 0) {
173
+ matches.push({ pathname: cand.pathname, span: null });
174
+ continue;
175
+ }
176
+ for (const span of spans)
177
+ matches.push({ pathname: cand.pathname, span });
163
178
  }
164
179
  }
165
180
  if (statement.lineMarker !== null) {
166
- const page = EntryFind.#paginate(pathnames, LineMarkerOps.firstLast(statement.lineMarker));
181
+ const page = EntryFind.#paginate(matches, LineMarkerOps.firstLast(statement.lineMarker));
167
182
  if (page.status !== 200)
168
- return { status: page.status, pathnames: [] };
169
- pathnames = page.items ?? [];
183
+ return { status: page.status, matches: [] };
184
+ matches = page.items ?? [];
170
185
  }
171
- return { status: 200, pathnames };
186
+ return { status: 200, matches };
172
187
  }
173
188
  // FIND result = the scheme's catalog rows, filtered to the matched entries and kept in
174
189
  // match order. A catalog row is exactly what the manifest catalogs (path + per-channel
@@ -177,29 +192,34 @@ export default class EntryFind {
177
192
  static async findSessionEntries(statement, ctx, manifest) {
178
193
  const match = await EntryFind.#matchPathnames(statement, ctx, manifest);
179
194
  if (match.status !== 200)
180
- return { status: match.status, content: null, mimetype: null, results: [], itemsTokenTotal: 0 };
195
+ return { status: match.status, content: null, mimetype: null, results: [], itemsTokenTotal: 0, pathnames: [], matches: [] };
181
196
  const scheme = manifest.storedScheme === undefined ? manifest.name : manifest.storedScheme;
182
- // The catalog row is keyed by its addressable path; align each matched pathname to
183
- // its row through the same EntryManifest.toPath the catalog uses (single source of
184
- // truth). Match order is preserved (rank for ~semantic); a pathname with no row
185
- // (e.g. the self-excluded manifest) drops out.
197
+ // The catalog row is keyed by its addressable path; align each match to its row through
198
+ // the same EntryManifest.toPath the catalog uses (single source of truth). Match order is
199
+ // preserved (rank for ~semantic); a match whose entry has no row (e.g. the self-excluded
200
+ // manifest) drops out. Each match becomes ONE result item carrying its span (#286).
186
201
  // §run-scheme — a run-scope FIND aligns to the building run's OWN run-scope catalog rows
187
202
  // (the owner prefix the candidate scope already enforced), never the session filesystem.
188
203
  const runOwnerPrefix = manifest.scope === "run" ? EntryFind.#runOwnerPrefix(statement) : undefined;
189
204
  const byPath = new Map((await EntryManifest.catalogRowsFor(ctx, scheme, runOwnerPrefix)).map((r) => [r.path, r]));
190
205
  const results = [];
191
- for (const pathname of match.pathnames) {
192
- const row = byPath.get(EntryManifest.toPath(scheme, pathname));
193
- if (row !== undefined)
194
- results.push(row);
206
+ const matches = [];
207
+ const seenPath = new Set();
208
+ let itemsTokenTotal = 0; // content weight summed per UNIQUE entry (items repeat a file across its matches)
209
+ for (const m of match.matches) {
210
+ const row = byPath.get(EntryManifest.toPath(scheme, m.pathname));
211
+ if (row === undefined)
212
+ continue;
213
+ results.push(m.span !== null ? { ...row, matchSpan: m.span } : row);
214
+ matches.push(m);
215
+ if (!seenPath.has(m.pathname)) {
216
+ seenPath.add(m.pathname);
217
+ itemsTokenTotal += Object.values(row.channels).reduce((s, c) => s + c.tokens, 0);
218
+ }
195
219
  }
196
- // The matched set's content weight — the sum of every matched entry's live channel
197
- // tokens. Self-describes the FIND ("N items holding T tokens"): the per-scheme roll-up
198
- // in the turn-0 foist, the READ-cost of any search's hits before the model reads them.
199
- const itemsTokenTotal = results.reduce((sum, r) => sum + Object.values(r.channels).reduce((s, c) => s + c.tokens, 0), 0);
200
220
  // Compact JSON — the model parses it natively; the `null, 2` pretty-print was ~36%
201
221
  // whitespace of the catalog body, tokens the wire doesn't need.
202
- return { status: 200, content: JSON.stringify(results), mimetype: "application/json", results, itemsTokenTotal };
222
+ return { status: 200, content: JSON.stringify(results), mimetype: "application/json", results, itemsTokenTotal, pathnames: [...seenPath], matches };
203
223
  }
204
224
  }
205
225
  //# sourceMappingURL=_entry-find.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-find.js","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_entry-find.js","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,12 @@ export default class EntryGraph {
5
5
  static populateFrom(db: Db, sessionId: number, entryId: number, symbols: readonly MimeSymbol[], references: readonly MimeRef[]): Promise<void>;
6
6
  static match(db: Db, sessionId: number, scheme: string | null, raw: string): Promise<{
7
7
  status: number;
8
- pathnames: string[];
8
+ matches: GraphMatch[];
9
9
  }>;
10
10
  }
11
+ export interface GraphMatch {
12
+ pathname: string;
13
+ lineStart: number;
14
+ lineEnd: number;
15
+ }
11
16
  //# sourceMappingURL=_entry-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-graph.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-graph.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,UAAU;;WAId,YAAY,CACrB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC1C,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,OAAO,EAAE,GAC/D,OAAO,CAAC,IAAI,CAAC;WAmBH,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CA0CtI"}
1
+ {"version":3,"file":"_entry-graph.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-graph.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,UAAU;;WAId,YAAY,CACrB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC1C,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,UAAU,EAAE,SAAS,OAAO,EAAE,GAC/D,OAAO,CAAC,IAAI,CAAC;WAqBH,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAuDxI;AAID,MAAM,WAAW,UAAU;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE"}
@@ -28,40 +28,54 @@ export default class EntryGraph {
28
28
  });
29
29
  }
30
30
  }
31
- // Resolve a FIND graph-dialect body (`@<sym` / `@>sym` / `@sym`) to matching
32
- // pathnames within (session, scheme). Malformed 400.
31
+ // Resolve a FIND graph-dialect body (`@<sym` / `@>sym` / `@sym`) to matches within
32
+ // (session, scheme). Each match is a (pathname, span) — the reference's line (@<) or
33
+ // the symbol's def span (@> / def side of @) — so a matcher resolves to (file, span)
34
+ // uniformly with every other dialect (#286). Malformed → 400.
33
35
  static async match(db, sessionId, scheme, raw) {
34
36
  const m = /^@([<>]?)(.+)$/.exec(raw.trim());
35
37
  if (m === null)
36
- return { status: 400, pathnames: [] };
38
+ return { status: 400, matches: [] };
37
39
  const direction = m[1];
38
40
  const name = m[2].trim();
39
41
  if (name.length === 0)
40
- return { status: 400, pathnames: [] };
42
+ return { status: 400, matches: [] };
41
43
  if (direction === "<")
42
- return { status: 200, pathnames: await EntryGraph.#referrers(db, sessionId, scheme, name) };
44
+ return { status: 200, matches: await EntryGraph.#referrers(db, sessionId, scheme, name) };
43
45
  if (direction === ">")
44
- return { status: 200, pathnames: await EntryGraph.#referents(db, sessionId, scheme, name) };
45
- // @sym neighborhood: the def ∪ referrers ∪ referents, deduped.
46
- const set = new Set();
47
- for (const p of await EntryGraph.#defs(db, sessionId, scheme, name))
48
- set.add(p);
49
- for (const p of await EntryGraph.#referrers(db, sessionId, scheme, name))
50
- set.add(p);
51
- for (const p of await EntryGraph.#referents(db, sessionId, scheme, name))
52
- set.add(p);
53
- return { status: 200, pathnames: [...set].sort() };
46
+ return { status: 200, matches: await EntryGraph.#referents(db, sessionId, scheme, name) };
47
+ // @sym neighborhood: the def ∪ referrers ∪ referents, deduped by (pathname, span).
48
+ return {
49
+ status: 200,
50
+ matches: EntryGraph.#dedupe([
51
+ ...await EntryGraph.#defs(db, sessionId, scheme, name),
52
+ ...await EntryGraph.#referrers(db, sessionId, scheme, name),
53
+ ...await EntryGraph.#referents(db, sessionId, scheme, name),
54
+ ]),
55
+ };
56
+ }
57
+ static #dedupe(matches) {
58
+ const seen = new Set();
59
+ const out = [];
60
+ for (const m of matches) {
61
+ const key = `${m.pathname}\0${m.lineStart}\0${m.lineEnd}`;
62
+ if (!seen.has(key)) {
63
+ seen.add(key);
64
+ out.push(m);
65
+ }
66
+ }
67
+ return out.sort((a, b) => a.pathname.localeCompare(b.pathname) || a.lineStart - b.lineStart);
54
68
  }
55
69
  static async #referrers(db, sessionId, scheme, name) {
56
70
  const rows = await db.graph_referrers.all({ session_id: sessionId, scheme, name });
57
- return rows.map((r) => r.pathname);
71
+ return rows.map((r) => ({ pathname: r.pathname, lineStart: r.line, lineEnd: r.end_line }));
58
72
  }
59
73
  static async #defs(db, sessionId, scheme, name) {
60
74
  const rows = await db.graph_def_pathnames_by_name.all({ session_id: sessionId, scheme, name });
61
- return rows.map((r) => r.pathname);
75
+ return rows.map((r) => ({ pathname: r.pathname, lineStart: r.line, lineEnd: r.end_line }));
62
76
  }
63
77
  // @>sym: sym's def(s) → the target names those defs reference → those targets'
64
- // defining entries. The def's full qualified path is the @> join key (#186).
78
+ // defining entries (with their def spans). The def's full qualified path is the @> join key (#186).
65
79
  static async #referents(db, sessionId, scheme, name) {
66
80
  const defs = await db.graph_resolve_def.all({ session_id: sessionId, name });
67
81
  const targets = new Set();
@@ -71,11 +85,10 @@ export default class EntryGraph {
71
85
  for (const r of refs)
72
86
  targets.add(r.name);
73
87
  }
74
- const out = new Set();
88
+ const out = [];
75
89
  for (const t of targets)
76
- for (const p of await EntryGraph.#defs(db, sessionId, scheme, t))
77
- out.add(p);
78
- return [...out].sort();
90
+ out.push(...await EntryGraph.#defs(db, sessionId, scheme, t));
91
+ return EntryGraph.#dedupe(out);
79
92
  }
80
93
  }
81
94
  //# sourceMappingURL=_entry-graph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-graph.js","sourceRoot":"","sources":["../../src/schemes/_entry-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_entry-graph.js","sourceRoot":"","sources":["../../src/schemes/_entry-graph.ts"],"names":[],"mappings":"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"}
@@ -19,19 +19,21 @@ INSERT INTO symbol_refs (session_id, entry_id, name, kind, container, line, col)
19
19
  VALUES ($session_id, $entry_id, $name, $kind, $container, $line, $col);
20
20
 
21
21
  -- PREP: graph_referrers
22
- -- @<sym — entries (scheme-scoped) that reference sym.
23
- SELECT DISTINCT e.pathname
22
+ -- @<sym — entries (scheme-scoped) that reference sym, with each reference's line
23
+ -- (#286: a matcher resolves to (file, span) — one item per reference occurrence).
24
+ SELECT DISTINCT e.pathname, r.line AS line, r.line AS end_line
24
25
  FROM symbol_refs r JOIN entries e ON e.id = r.entry_id
25
26
  WHERE r.session_id = $session_id AND e.scheme IS $scheme AND r.name = $name
26
- ORDER BY e.pathname;
27
+ ORDER BY e.pathname, r.line;
27
28
 
28
29
  -- PREP: graph_def_pathnames_by_name
29
- -- Resolve a name → the defining entries' pathnames (scheme-scoped). Serves @>'s
30
- -- target resolution and @'s neighborhood def lookup.
31
- SELECT DISTINCT e.pathname
30
+ -- Resolve a name → the defining entries' pathnames + def span (scheme-scoped). Serves
31
+ -- @>'s target resolution and @'s neighborhood def lookup. end_line falls back to line
32
+ -- when a def has no end (#286: the symbol's line..end_line is its (file, span)).
33
+ SELECT DISTINCT e.pathname, d.line AS line, COALESCE(d.end_line, d.line) AS end_line
32
34
  FROM symbol_defs d JOIN entries e ON e.id = d.entry_id
33
35
  WHERE d.session_id = $session_id AND e.scheme IS $scheme AND d.name = $name
34
- ORDER BY e.pathname;
36
+ ORDER BY e.pathname, d.line;
35
37
 
36
38
  -- PREP: graph_resolve_def
37
39
  -- sym → its def(s): (entry_id, container) to compose the qualified path for @>.
@@ -1 +1 @@
1
- {"version":3,"file":"_entry-manifest.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-manifest.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAUnE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAE9J,MAAM,CAAC,OAAO,OAAO,aAAa;IAG9B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;WAqBjD,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;WAiDxH,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2C5E"}
1
+ {"version":3,"file":"_entry-manifest.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-manifest.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAanE,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAE9J,MAAM,CAAC,OAAO,OAAO,aAAa;IAG9B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;WAqBjD,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;WAiDxH,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwD5E"}