updated mcp
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-03-08 17:57:34 +05:30
parent 9191de9dff
commit 0e49f02c4c
167 changed files with 7632 additions and 98942 deletions

View File

@@ -1320,9 +1320,8 @@
<div class="doc doc-contents first">
<p>Mail provider adapter contracts for Mail Intake.</p>
<hr />
<h4 id="mail_intake.adapters.base--summary">Summary</h4>
<h3 id="mail_intake.adapters.base--summary">Summary</h3>
<p>Mail provider adapter contracts for Mail Intake.</p>
<p>This module defines the <strong>provider-agnostic adapter interface</strong> used for
read-only mail ingestion.</p>
<p>Adapters encapsulate all provider-specific access logic and expose a
@@ -1364,12 +1363,12 @@ types or semantics should leak beyond implementations of this interface.</p>
<p><strong>Guarantees:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- discover messages matching a query
- retrieve full message payloads
- retrieve full thread payloads
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Discover messages matching a query.
- Retrieve full message payloads.
- Retrieve full thread payloads.
</code></pre></div></td></tr></table></div>
<p><strong>Lifecycle:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- adapters are intentionally read-only and must not mutate provider state
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- Adapters are intentionally read-only and must not mutate provider state.
</code></pre></div></td></tr></table></div>
</details>
@@ -1613,21 +1612,23 @@ Dictionaries containing message and thread identifiers.</p>
<details class="notes" open>
<summary>Notes</summary>
<p><strong>Guarantees:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- Implementations must yield dictionaries containing at least ``message_id`` and ``thread_id``
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><code>- Implementations must yield dictionaries containing at least
`message_id` and `thread_id`.
</code></pre></div></td></tr></table></div>
</details>
<details class="example" open>
<summary>Example</summary>
<p>Typical yield:</p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code>{
&quot;message_id&quot;: &quot;...&quot;,
&quot;thread_id&quot;: &quot;...&quot;
}
</code></pre></div></td></tr></table></div>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span>
<span class="normal"><a href="#__codelineno-0-2">2</a></span>
<span class="normal"><a href="#__codelineno-0-3">3</a></span>
<span class="normal"><a href="#__codelineno-0-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="p">{</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> <span class="s2">&quot;message_id&quot;</span><span class="p">:</span> <span class="s2">&quot;...&quot;</span><span class="p">,</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> <span class="s2">&quot;thread_id&quot;</span><span class="p">:</span> <span class="s2">&quot;...&quot;</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="p">}</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>

View File

@@ -1368,15 +1368,16 @@
<div class="doc doc-contents first">
<p>Gmail adapter implementation for Mail Intake.</p>
<hr />
<h4 id="mail_intake.adapters.gmail--summary">Summary</h4>
<h3 id="mail_intake.adapters.gmail--summary">Summary</h3>
<p>Gmail adapter implementation for Mail Intake.</p>
<p>This module provides a <strong>Gmail-specific implementation</strong> of the
<code>MailIntakeAdapter</code> contract.</p>
<p>It is the only place in the codebase where:
- <code>googleapiclient</code> is imported
- Gmail REST API semantics are known
- Low-level <code>.execute()</code> calls are made</p>
<p>It is the only place in the codebase where:</p>
<ul>
<li><code>googleapiclient</code> is imported.</li>
<li>Gmail REST API semantics are known.</li>
<li>Low-level <code>.execute()</code> calls are made.</li>
</ul>
<p>All Gmail-specific behavior must be strictly contained within this module.</p>
@@ -1404,7 +1405,7 @@
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><a class="autorefs autorefs-internal" title="mail_intake.adapters.base.MailIntakeAdapter" href="../../mail_intake/adapters/base/#mail_intake.adapters.base.MailIntakeAdapter">MailIntakeAdapter</a></code></p>
Bases: <code><a class="autorefs autorefs-internal" title="mail_intake.adapters.base.MailIntakeAdapter" href="../base/#mail_intake.adapters.base.MailIntakeAdapter">MailIntakeAdapter</a></code></p>
<p>Gmail read-only adapter.</p>
@@ -1418,16 +1419,16 @@ Gmail-specific API calls.</p>
<p><strong>Responsibilities:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- This class is the ONLY place where googleapiclient is imported
- Gmail REST semantics are known
- .execute() is called
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- This class is the ONLY place where `googleapiclient` is imported.
- Gmail REST semantics are known.
- `.execute()` is called.
</code></pre></div></td></tr></table></div>
<p><strong>Constraints:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Must remain thin and imperative
- Must not perform parsing or interpretation
- Must not expose Gmail-specific types beyond this class
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Must remain thin and imperative.
- Must not perform parsing or interpretation.
- Must not expose Gmail-specific types beyond this class.
</code></pre></div></td></tr></table></div>
</details>
<p>Initialize the Gmail adapter.</p>
@@ -1447,7 +1448,7 @@ Gmail-specific API calls.</p>
<tr class="doc-section-item">
<td><code>auth_provider</code></td>
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.auth.base.MailIntakeAuthProvider" href="../../mail_intake/auth/base/#mail_intake.auth.base.MailIntakeAuthProvider">MailIntakeAuthProvider</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.auth.base.MailIntakeAuthProvider" href="../../auth/base/#mail_intake.auth.base.MailIntakeAuthProvider">MailIntakeAuthProvider</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1541,7 +1542,7 @@ Gmail-specific API calls.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1637,7 +1638,7 @@ Provider-native Gmail message payload.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1732,7 +1733,7 @@ Provider-native Gmail thread payload.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1827,7 +1828,7 @@ Dictionaries containing <code>message_id</code> and <code>thread_id</code>.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">

View File

@@ -1272,26 +1272,27 @@
<div class="doc doc-contents first">
<p>Mail provider adapter implementations for Mail Intake.</p>
<hr />
<h4 id="mail_intake.adapters--summary">Summary</h4>
<h3 id="mail_intake.adapters--summary">Summary</h3>
<p>Mail provider adapter implementations for Mail Intake.</p>
<p>This package contains <strong>adapter-layer implementations</strong> responsible for
interfacing with external mail providers and exposing a normalized,
provider-agnostic contract to the rest of the system.</p>
<p>Adapters in this package:
- Implement the <code>MailIntakeAdapter</code> interface
- Encapsulate all provider-specific APIs and semantics
- Perform read-only access to mail data
- Return provider-native payloads without interpretation</p>
<p>Adapters in this package:</p>
<ul>
<li>Implement the <code>MailIntakeAdapter</code> interface.</li>
<li>Encapsulate all provider-specific APIs and semantics.</li>
<li>Perform read-only access to mail data.</li>
<li>Return provider-native payloads without interpretation.</li>
</ul>
<p>Provider-specific logic <strong>must not leak</strong> outside of adapter implementations.
All parsings, normalizations, and transformations must be handled by downstream
components.</p>
<hr />
<h4 id="mail_intake.adapters--public-api">Public API</h4>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><code>MailIntakeAdapter
MailIntakeGmailAdapter
</code></pre></div></td></tr></table></div>
<h3 id="mail_intake.adapters--public-api">Public API</h3>
<ul>
<li><code>MailIntakeAdapter</code></li>
<li><code>MailIntakeGmailAdapter</code></li>
</ul>
<hr />
@@ -1329,12 +1330,12 @@ MailIntakeGmailAdapter
<p><strong>Guarantees:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- discover messages matching a query
- retrieve full message payloads
- retrieve full thread payloads
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Discover messages matching a query.
- Retrieve full message payloads.
- Retrieve full thread payloads.
</code></pre></div></td></tr></table></div>
<p><strong>Lifecycle:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- adapters are intentionally read-only and must not mutate provider state
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- Adapters are intentionally read-only and must not mutate provider state.
</code></pre></div></td></tr></table></div>
</details>
@@ -1578,21 +1579,23 @@ Dictionaries containing message and thread identifiers.</p>
<details class="notes" open>
<summary>Notes</summary>
<p><strong>Guarantees:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><code>- Implementations must yield dictionaries containing at least ``message_id`` and ``thread_id``
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><code>- Implementations must yield dictionaries containing at least
`message_id` and `thread_id`.
</code></pre></div></td></tr></table></div>
</details>
<details class="example" open>
<summary>Example</summary>
<p>Typical yield:</p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code>{
&quot;message_id&quot;: &quot;...&quot;,
&quot;thread_id&quot;: &quot;...&quot;
}
</code></pre></div></td></tr></table></div>
<div class="language-python highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span>
<span class="normal"><a href="#__codelineno-0-2">2</a></span>
<span class="normal"><a href="#__codelineno-0-3">3</a></span>
<span class="normal"><a href="#__codelineno-0-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="p">{</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> <span class="s2">&quot;message_id&quot;</span><span class="p">:</span> <span class="s2">&quot;...&quot;</span><span class="p">,</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> <span class="s2">&quot;thread_id&quot;</span><span class="p">:</span> <span class="s2">&quot;...&quot;</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="p">}</span>
</span></code></pre></div></td></tr></table></div>
</details>
</div>
@@ -1620,7 +1623,7 @@ Dictionaries containing message and thread identifiers.</p>
<div class="doc doc-contents ">
<p class="doc doc-class-bases">
Bases: <code><a class="autorefs autorefs-internal" title="mail_intake.adapters.base.MailIntakeAdapter" href="../mail_intake/adapters/base/#mail_intake.adapters.base.MailIntakeAdapter">MailIntakeAdapter</a></code></p>
Bases: <code><a class="autorefs autorefs-internal" title="mail_intake.adapters.base.MailIntakeAdapter" href="base/#mail_intake.adapters.base.MailIntakeAdapter">MailIntakeAdapter</a></code></p>
<p>Gmail read-only adapter.</p>
@@ -1634,16 +1637,16 @@ Gmail-specific API calls.</p>
<p><strong>Responsibilities:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- This class is the ONLY place where googleapiclient is imported
- Gmail REST semantics are known
- .execute() is called
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- This class is the ONLY place where `googleapiclient` is imported.
- Gmail REST semantics are known.
- `.execute()` is called.
</code></pre></div></td></tr></table></div>
<p><strong>Constraints:</strong></p>
<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Must remain thin and imperative
- Must not perform parsing or interpretation
- Must not expose Gmail-specific types beyond this class
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code>- Must remain thin and imperative.
- Must not perform parsing or interpretation.
- Must not expose Gmail-specific types beyond this class.
</code></pre></div></td></tr></table></div>
</details>
<p>Initialize the Gmail adapter.</p>
@@ -1663,7 +1666,7 @@ Gmail-specific API calls.</p>
<tr class="doc-section-item">
<td><code>auth_provider</code></td>
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.auth.base.MailIntakeAuthProvider" href="../mail_intake/auth/base/#mail_intake.auth.base.MailIntakeAuthProvider">MailIntakeAuthProvider</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.auth.base.MailIntakeAuthProvider" href="../auth/base/#mail_intake.auth.base.MailIntakeAuthProvider">MailIntakeAuthProvider</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1757,7 +1760,7 @@ Gmail-specific API calls.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1853,7 +1856,7 @@ Provider-native Gmail message payload.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -1948,7 +1951,7 @@ Provider-native Gmail thread payload.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">
@@ -2043,7 +2046,7 @@ Dictionaries containing <code>message_id</code> and <code>thread_id</code>.</p>
<tbody>
<tr class="doc-section-item">
<td>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../mail_intake/exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
<code><a class="autorefs autorefs-internal" title="mail_intake.exceptions.MailIntakeAdapterError" href="../exceptions/#mail_intake.exceptions.MailIntakeAdapterError">MailIntakeAdapterError</a></code>
</td>
<td>
<div class="doc-md-description">