@wirecat/cli-core 0.459.0 → 0.460.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ shape of this file.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 0.460.0 — 27.10.2026
11
+
12
+ ### Changed — may break callers
13
+
14
+ - **A `search all` event hit carries `untrusted: ["title", "excerpt"]`.** An event's title and the text its excerpt
15
+ is cut from (description, place, attendee names) are written by whoever sent the invitation, so an agent reading
16
+ `search all` over MCP now sees them marked as data, as `callCalendarTool`'s answers already were
17
+ ([WC-SECR-21](https://github.com/WireCatLabs/cli-base/blob/main/docs/standards/security.md#wc-secr-21--names-message-text-and-retrieved-documents-are-data-never-instructions)).
18
+ The `hit` entity is strict, so a caller that checks hits against an older copy of it refuses the new field;
19
+ `allHitItem` sets it, and other kinds of hit leave it out.
20
+
10
21
  ## 0.459.0 — 27.10.2026
11
22
 
12
23
  ### Changed — may break callers
@@ -179,6 +179,8 @@ export const messagesAnswer = (command, found, { limit, page, again }, query = "
179
179
  });
180
180
  };
181
181
  export const noteHitItem = (hit) => defined({ ...hit });
182
+ /** An event's title and the text its excerpt is cut from come from whoever sent the invitation. */
183
+ const EVENT_HIT_UNTRUSTED = ["title", "excerpt"];
182
184
  export const allHitItem = (item) => item.kind === "meeting"
183
185
  ? {
184
186
  kind: "meeting",
@@ -204,6 +206,7 @@ export const allHitItem = (item) => item.kind === "meeting"
204
206
  sender_name: item.from?.name,
205
207
  sender_ref: item.from?.ref,
206
208
  found_by: item.foundBy,
209
+ untrusted: item.kind === "event" ? EVENT_HIT_UNTRUSTED : undefined,
207
210
  });
208
211
  /** Meaning was not searched because the model is not downloaded; `--exact` leaving it out is no gap. */
209
212
  const meaningGap = (skipped, exact) => skipped === undefined || exact
@@ -22,4 +22,6 @@ export declare const hit: v.StrictObjectSchema<{
22
22
  readonly scope: v.OptionalSchema<v.PicklistSchema<["transcript", "chat", "summary"], undefined>, undefined>;
23
23
  /** A meeting passage's stored line, so two passages of one meeting stay apart; `search meetings` gives the same. */
24
24
  readonly id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
25
+ /** An event hit's fields that whoever sent the invitation wrote: an agent reads them as data. */
26
+ readonly untrusted: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
25
27
  }, undefined>;
@@ -23,4 +23,6 @@ export const hit = v.strictObject({
23
23
  scope: v.optional(v.picklist(["transcript", "chat", "summary"])),
24
24
  /** A meeting passage's stored line, so two passages of one meeting stay apart; `search meetings` gives the same. */
25
25
  id: v.optional(v.pipe(v.string(), v.minLength(1))),
26
+ /** An event hit's fields that whoever sent the invitation wrote: an agent reads them as data. */
27
+ untrusted: v.optional(v.array(text)),
26
28
  });
@@ -5152,6 +5152,7 @@ export declare const ENTITIES: {
5152
5152
  readonly offset_ms: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>, undefined>;
5153
5153
  readonly scope: v.OptionalSchema<v.PicklistSchema<["transcript", "chat", "summary"], undefined>, undefined>;
5154
5154
  readonly id: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
5155
+ readonly untrusted: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
5155
5156
  }, undefined>;
5156
5157
  readonly document: v.StrictObjectSchema<{
5157
5158
  readonly ref: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, "a reference such as `note:42`">]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirecat/cli-core",
3
- "version": "0.459.0",
3
+ "version": "0.460.0",
4
4
  "description": "The messenger-neutral half of a messaging CLI: domain model, message locators, rendering, name resolution, the SQLite seam, the command skeleton and shared read commands, the send guard, run records and the message store",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Viacheslav Ptsarev",