@pidgeon-ai/sdk 1.29.0 → 1.31.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,20 @@ the two would publish a release for every unrelated product deploy.
7
7
  Semver applies to **this package's own surface** — the exported names, the
8
8
  call shapes, the result shape — not to the API behind it.
9
9
 
10
+ ## 1.31.0 — `receive_policy`
11
+
12
+ Every address carries `receive_policy`: `open` (anyone, the default) or
13
+ `list`, which accepts only senders with an `inbox` receive rule on mail that
14
+ passes DMARC and refuses everybody else before anything is stored.
15
+ `identitiesUpdate` sets it; `identitiesReceiveRulesList` and
16
+ `identitiesReceiveRulesCreate` return it beside the rules. Additive.
17
+
18
+ ## 1.30.0 — `authentication.signature`
19
+
20
+ A message carries `authentication.signature`: `pass` when it came from
21
+ another Pidgeon address directly and its signed sender verified against the
22
+ sending domain's key, null otherwise. Additive.
23
+
10
24
  ## 1.29.0 — The signed-sender records
11
25
 
12
26
  Every domain's DNS records (`domainsGet`, `domainsCreate`, `domainsVerify`)
package/dist/index.d.cts CHANGED
@@ -425,6 +425,10 @@ type Identity = {
425
425
  * Who it may write to: open, reply_only (somebody who wrote to it first), or list.
426
426
  */
427
427
  send_policy: string;
428
+ /**
429
+ * Who may write to it: open, or list (only senders with an inbox rule, on mail that passes DMARC).
430
+ */
431
+ receive_policy: string;
428
432
  /**
429
433
  * Your own opaque grouping for this address. Never parsed here.
430
434
  */
@@ -489,12 +493,16 @@ type Message = {
489
493
  [key: string]: string;
490
494
  };
491
495
  /**
492
- * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged.
496
+ * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged. A `From:` is the sending domain's own word when `dmarc` or `signature` is `pass`.
493
497
  */
494
498
  authentication: {
495
499
  spf: string | null;
496
500
  dkim: string | null;
497
501
  dmarc: string | null;
502
+ /**
503
+ * `pass` when the message came from another Pidgeon address directly, and its signed sender verified against the sending domain's published key. Null on mail that came through SMTP, which DMARC speaks for instead.
504
+ */
505
+ signature: string | null;
498
506
  };
499
507
  /**
500
508
  * Who this message says it is from. A Pidgeon sender declares it on every message it sends; mail from ordinary email has only the address.
@@ -705,12 +713,16 @@ type AwaitedMessage = {
705
713
  [key: string]: string;
706
714
  };
707
715
  /**
708
- * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged.
716
+ * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged. A `From:` is the sending domain's own word when `dmarc` or `signature` is `pass`.
709
717
  */
710
718
  authentication: {
711
719
  spf: string | null;
712
720
  dkim: string | null;
713
721
  dmarc: string | null;
722
+ /**
723
+ * `pass` when the message came from another Pidgeon address directly, and its signed sender verified against the sending domain's published key. Null on mail that came through SMTP, which DMARC speaks for instead.
724
+ */
725
+ signature: string | null;
714
726
  };
715
727
  /**
716
728
  * Who this message says it is from. A Pidgeon sender declares it on every message it sends; mail from ordinary email has only the address.
@@ -1710,6 +1722,10 @@ type TenantSuspended = {
1710
1722
  };
1711
1723
  type ReceiveRules = {
1712
1724
  identity_id: string;
1725
+ /**
1726
+ * open, or list: only senders with an inbox rule, on mail that passes DMARC.
1727
+ */
1728
+ receive_policy: string;
1713
1729
  rules: Array<{
1714
1730
  id: string;
1715
1731
  /**
@@ -1885,6 +1901,10 @@ type PodCreated = {
1885
1901
  * Who it may write to: open, reply_only (somebody who wrote to it first), or list.
1886
1902
  */
1887
1903
  send_policy: string;
1904
+ /**
1905
+ * Who may write to it: open, or list (only senders with an inbox rule, on mail that passes DMARC).
1906
+ */
1907
+ receive_policy: string;
1888
1908
  /**
1889
1909
  * Your own opaque grouping for this address. Never parsed here.
1890
1910
  */
@@ -2504,6 +2524,10 @@ type IdentitiesUpdateData = {
2504
2524
  * Who it may write to. `reply_only` makes an address structurally unable to start a conversation with a stranger.
2505
2525
  */
2506
2526
  send_policy?: 'open' | 'reply_only' | 'list';
2527
+ /**
2528
+ * Who may write to it. `list` accepts only senders with an `inbox` receive rule whose mail passes DMARC, and refuses everybody else before anything is stored. A key with admin on the address may tighten it; loosening needs its owner.
2529
+ */
2530
+ receive_policy?: 'open' | 'list';
2507
2531
  /**
2508
2532
  * Your own opaque grouping — a customer id, whatever your side calls it. Never parsed here.
2509
2533
  */
package/dist/index.d.ts CHANGED
@@ -425,6 +425,10 @@ type Identity = {
425
425
  * Who it may write to: open, reply_only (somebody who wrote to it first), or list.
426
426
  */
427
427
  send_policy: string;
428
+ /**
429
+ * Who may write to it: open, or list (only senders with an inbox rule, on mail that passes DMARC).
430
+ */
431
+ receive_policy: string;
428
432
  /**
429
433
  * Your own opaque grouping for this address. Never parsed here.
430
434
  */
@@ -489,12 +493,16 @@ type Message = {
489
493
  [key: string]: string;
490
494
  };
491
495
  /**
492
- * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged.
496
+ * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged. A `From:` is the sending domain's own word when `dmarc` or `signature` is `pass`.
493
497
  */
494
498
  authentication: {
495
499
  spf: string | null;
496
500
  dkim: string | null;
497
501
  dmarc: string | null;
502
+ /**
503
+ * `pass` when the message came from another Pidgeon address directly, and its signed sender verified against the sending domain's published key. Null on mail that came through SMTP, which DMARC speaks for instead.
504
+ */
505
+ signature: string | null;
498
506
  };
499
507
  /**
500
508
  * Who this message says it is from. A Pidgeon sender declares it on every message it sends; mail from ordinary email has only the address.
@@ -705,12 +713,16 @@ type AwaitedMessage = {
705
713
  [key: string]: string;
706
714
  };
707
715
  /**
708
- * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged.
716
+ * What the receiving transport said about the sending domain. Null means it did not report, not that the check failed — normal on outbound, and on inbound it is the difference between unknown and forged. A `From:` is the sending domain's own word when `dmarc` or `signature` is `pass`.
709
717
  */
710
718
  authentication: {
711
719
  spf: string | null;
712
720
  dkim: string | null;
713
721
  dmarc: string | null;
722
+ /**
723
+ * `pass` when the message came from another Pidgeon address directly, and its signed sender verified against the sending domain's published key. Null on mail that came through SMTP, which DMARC speaks for instead.
724
+ */
725
+ signature: string | null;
714
726
  };
715
727
  /**
716
728
  * Who this message says it is from. A Pidgeon sender declares it on every message it sends; mail from ordinary email has only the address.
@@ -1710,6 +1722,10 @@ type TenantSuspended = {
1710
1722
  };
1711
1723
  type ReceiveRules = {
1712
1724
  identity_id: string;
1725
+ /**
1726
+ * open, or list: only senders with an inbox rule, on mail that passes DMARC.
1727
+ */
1728
+ receive_policy: string;
1713
1729
  rules: Array<{
1714
1730
  id: string;
1715
1731
  /**
@@ -1885,6 +1901,10 @@ type PodCreated = {
1885
1901
  * Who it may write to: open, reply_only (somebody who wrote to it first), or list.
1886
1902
  */
1887
1903
  send_policy: string;
1904
+ /**
1905
+ * Who may write to it: open, or list (only senders with an inbox rule, on mail that passes DMARC).
1906
+ */
1907
+ receive_policy: string;
1888
1908
  /**
1889
1909
  * Your own opaque grouping for this address. Never parsed here.
1890
1910
  */
@@ -2504,6 +2524,10 @@ type IdentitiesUpdateData = {
2504
2524
  * Who it may write to. `reply_only` makes an address structurally unable to start a conversation with a stranger.
2505
2525
  */
2506
2526
  send_policy?: 'open' | 'reply_only' | 'list';
2527
+ /**
2528
+ * Who may write to it. `list` accepts only senders with an `inbox` receive rule whose mail passes DMARC, and refuses everybody else before anything is stored. A key with admin on the address may tighten it; loosening needs its owner.
2529
+ */
2530
+ receive_policy?: 'open' | 'list';
2507
2531
  /**
2508
2532
  * Your own opaque grouping — a customer id, whatever your side calls it. Never parsed here.
2509
2533
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pidgeon-ai/sdk",
3
- "version": "1.29.0",
3
+ "version": "1.31.0",
4
4
  "description": "Email inboxes for AI agents — TypeScript SDK for Pidgeon: create addresses, send, receive and reply.",
5
5
  "keywords": [
6
6
  "email",