@pidgeon-ai/sdk 1.12.0 → 1.14.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
@@ -9,6 +9,25 @@ call shapes, the result shape — not to the API behind it.
9
9
 
10
10
  ## Unreleased
11
11
 
12
+ ## 1.14.0 — clean bodies in a conversation
13
+
14
+ `body=clean` on `GET /messages`, as on `GET /messages/{id}` and
15
+ `/messages/await`: every message in the conversation comes back with
16
+ Pidgeon Firewall's `clean_text` as its text and empty HTML. The MCP
17
+ `list_messages` tool asks for it by default. And a message the Firewall
18
+ calls suspicious is stored with a preview cut from its cleaned text, so a
19
+ hidden instruction no longer shows in search results or folder listings.
20
+
21
+ ## 1.13.0 — what the agent reads
22
+
23
+ `firewall.clean_text` on every inbound message: the new text with hidden
24
+ content and invisible characters removed, and lines posing as a chat turn
25
+ marked, under a one-line note saying what changed. `body=clean` on
26
+ `GET /messages/{id}` and `GET /messages/await` returns it as `text` and
27
+ `reply_text`, with `html` and `reply_html` empty. The default is still
28
+ `original`. The MCP server and the AI SDK ask for `clean` unless told
29
+ otherwise.
30
+
12
31
  ## 1.12.0 — Pidgeon Firewall
13
32
 
14
33
  Every inbound `Message` carries `firewall`: a `verdict` (`clean` or
package/dist/index.d.cts CHANGED
@@ -547,6 +547,10 @@ type Message = {
547
547
  detail: string;
548
548
  where: 'subject' | 'text' | 'html' | 'from' | 'quoted';
549
549
  }>;
550
+ /**
551
+ * What an agent should read: the new text with hidden content and invisible characters removed and lines posing as a chat turn marked, under a one-line note saying what changed. The new text unchanged when nothing needed it. Ask for `body=clean` to get it in place of the body.
552
+ */
553
+ clean_text: string;
550
554
  /**
551
555
  * Bumped when the rules change in a way that could change a verdict.
552
556
  */
@@ -724,6 +728,10 @@ type AwaitedMessage = {
724
728
  detail: string;
725
729
  where: 'subject' | 'text' | 'html' | 'from' | 'quoted';
726
730
  }>;
731
+ /**
732
+ * What an agent should read: the new text with hidden content and invisible characters removed and lines posing as a chat turn marked, under a one-line note saying what changed. The new text unchanged when nothing needed it. Ask for `body=clean` to get it in place of the body.
733
+ */
734
+ clean_text: string;
727
735
  /**
728
736
  * Bumped when the rules change in a way that could change a verdict.
729
737
  */
@@ -2704,6 +2712,7 @@ type MessagesListInThreadData = {
2704
2712
  */
2705
2713
  cursor?: string;
2706
2714
  thread_id: string;
2715
+ body?: 'original' | 'clean';
2707
2716
  };
2708
2717
  url: '/messages';
2709
2718
  };
@@ -2926,6 +2935,7 @@ type MessagesAwaitData = {
2926
2935
  path?: never;
2927
2936
  query: {
2928
2937
  identity_id: string;
2938
+ body?: 'original' | 'clean';
2929
2939
  from?: string;
2930
2940
  subject_contains?: string;
2931
2941
  has_code?: 'true' | 'false';
@@ -2963,7 +2973,9 @@ type MessagesGetData = {
2963
2973
  path: {
2964
2974
  id: string;
2965
2975
  };
2966
- query?: never;
2976
+ query?: {
2977
+ body?: 'original' | 'clean';
2978
+ };
2967
2979
  url: '/messages/{id}';
2968
2980
  };
2969
2981
  type MessagesGetErrors = {
package/dist/index.d.ts CHANGED
@@ -547,6 +547,10 @@ type Message = {
547
547
  detail: string;
548
548
  where: 'subject' | 'text' | 'html' | 'from' | 'quoted';
549
549
  }>;
550
+ /**
551
+ * What an agent should read: the new text with hidden content and invisible characters removed and lines posing as a chat turn marked, under a one-line note saying what changed. The new text unchanged when nothing needed it. Ask for `body=clean` to get it in place of the body.
552
+ */
553
+ clean_text: string;
550
554
  /**
551
555
  * Bumped when the rules change in a way that could change a verdict.
552
556
  */
@@ -724,6 +728,10 @@ type AwaitedMessage = {
724
728
  detail: string;
725
729
  where: 'subject' | 'text' | 'html' | 'from' | 'quoted';
726
730
  }>;
731
+ /**
732
+ * What an agent should read: the new text with hidden content and invisible characters removed and lines posing as a chat turn marked, under a one-line note saying what changed. The new text unchanged when nothing needed it. Ask for `body=clean` to get it in place of the body.
733
+ */
734
+ clean_text: string;
727
735
  /**
728
736
  * Bumped when the rules change in a way that could change a verdict.
729
737
  */
@@ -2704,6 +2712,7 @@ type MessagesListInThreadData = {
2704
2712
  */
2705
2713
  cursor?: string;
2706
2714
  thread_id: string;
2715
+ body?: 'original' | 'clean';
2707
2716
  };
2708
2717
  url: '/messages';
2709
2718
  };
@@ -2926,6 +2935,7 @@ type MessagesAwaitData = {
2926
2935
  path?: never;
2927
2936
  query: {
2928
2937
  identity_id: string;
2938
+ body?: 'original' | 'clean';
2929
2939
  from?: string;
2930
2940
  subject_contains?: string;
2931
2941
  has_code?: 'true' | 'false';
@@ -2963,7 +2973,9 @@ type MessagesGetData = {
2963
2973
  path: {
2964
2974
  id: string;
2965
2975
  };
2966
- query?: never;
2976
+ query?: {
2977
+ body?: 'original' | 'clean';
2978
+ };
2967
2979
  url: '/messages/{id}';
2968
2980
  };
2969
2981
  type MessagesGetErrors = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pidgeon-ai/sdk",
3
- "version": "1.12.0",
3
+ "version": "1.14.0",
4
4
  "description": "Thin TypeScript client for the Pidgeon email API.",
5
5
  "keywords": [
6
6
  "pidgeon",