Commit Graph

98 Commits

Author SHA1 Message Date
Alexa Amundson
6c55a8f488 chore: bump botocore from 1.32.7 to 1.42.59 (#177)
Bumps [botocore](https://github.com/boto/botocore) from 1.32.7 to
1.42.59.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c204bb1da1"><code>c204bb1</code></a>
Merge branch 'release-1.42.59'</li>
<li><a
href="7e59865407"><code>7e59865</code></a>
Bumping version to 1.42.59</li>
<li><a
href="b38a03ce4d"><code>b38a03c</code></a>
Update to latest models</li>
<li><a
href="97336ff38f"><code>97336ff</code></a>
Merge customizations for ARC Region switch</li>
<li><a
href="f76046b4bd"><code>f76046b</code></a>
Merge branch 'release-1.42.58'</li>
<li><a
href="be2689a1ee"><code>be2689a</code></a>
Merge branch 'release-1.42.58' into develop</li>
<li><a
href="47f8789f55"><code>47f8789</code></a>
Bumping version to 1.42.58</li>
<li><a
href="14bc74f6f6"><code>14bc74f</code></a>
Update to latest models</li>
<li><a
href="8c0427aaab"><code>8c0427a</code></a>
Add support for None values in list parsing (<a
href="https://redirect.github.com/boto/botocore/issues/3618">#3618</a>)</li>
<li><a
href="86d9ec3b0f"><code>86d9ec3</code></a>
Merge branch 'release-1.42.57'</li>
<li>Additional commits viewable in <a
href="https://github.com/boto/botocore/compare/1.32.7...1.42.59">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=botocore&package-manager=pip&previous-version=1.32.7&new-version=1.42.59)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:13 -05:00
Alexa Amundson
60a65e137f chore: bump email-validator from 2.1.0.post1 to 2.3.0 (#178)
Bumps
[email-validator](https://github.com/JoshData/python-email-validator)
from 2.1.0.post1 to 2.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JoshData/python-email-validator/releases">email-validator's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.0</h2>
<ul>
<li>The package name is changed from using an underscore
(email_validator) to a dash (email-validator) to match PyPi's normalized
package name.</li>
<li>The library no longer checks that the local part is at most 64
characters because a more careful reading of RFC 5321 indicates the
limit is optional and such email addresses have been found in the wild.
However the check can be restored using a new <code>strict=True</code>
parameter, and the overall 254 character email address length limit is
still in place.</li>
<li>New EmailSyntaxError messages are used for some exiting syntax
errors related to @-sign homoglyphs and invalid characters in
internationalized domains.</li>
<li>When using <code>allow_display_name=True</code>, display names are
now returned with Unicode NFC normalization.</li>
<li>TypeError is now raised if something other than str (or bytes) is
passed as the email address.</li>
</ul>
<h2>2.2.0 (June 20, 2024)</h2>
<ul>
<li>Email addresses with internationalized local parts could, with rare
Unicode characters, be returned as valid but actually be invalid in
their normalized form (returned in the <code>normalized</code> field).
Local parts now re-validated after Unicode NFC normalization to ensure
that invalid characters cannot be injected into the normalized address
and that characters with length-increasing NFC normalizations cannot
cause a local part to exceed the maximum length after
normalization.</li>
<li>The length check for email addresses with internationalized local
parts is now also applied to the original address string prior to
Unicode NFC normalization, which may be longer and could exceed the
maximum email address length, to protect callers who do not use the
returned normalized address.</li>
<li>Improved error message for IDNA domains that are too long or have
invalid characters after Unicode normalization.</li>
<li>A new option to parse <code>My Name &lt;address@domain&gt;</code>
strings, i.e. a display name plus an email address in angle brackets, is
now available. It is off by default.</li>
<li>Improvements to Python typing.</li>
<li>Some additional tests added.</li>
</ul>
<h2>v2.1.2</h2>
<h2>2.1.2 (June 16, 2024)</h2>
<ul>
<li>The domain name length limit is corrected from 255 to 253 IDNA ASCII
characters. I misread the RFCs.</li>
<li>When a domain name has no MX record but does have an A or AAAA
record, if none of the IP addresses in the response are globally
reachable (i.e. not Private-Use, Loopback, etc.), the response is
treated as if there was no A/AAAA response and the email address will
fail the deliverability check.</li>
<li>When a domain name has no MX record but does have an A or AAAA
record, the mx field in the object returned by validate_email
incorrectly held the IP addresses rather than the domain itself.</li>
<li>Fixes in tests.</li>
</ul>
<h2>v2.1.1 (February 26, 2024)</h2>
<ul>
<li>Fixed typo 'marking' instead of 'marketing' in case-insensitive
mailbox name list.</li>
<li>When DNS-based deliverability checks fail, in some cases exceptions
are now thrown with <code>raise ... from</code> for better nested
exception tracking.</li>
<li>Fixed tests to work when no local resolver can be configured.</li>
<li>This project is now licensed under the Unlicense (instead of
CC0).</li>
<li>Minor improvements to tests.</li>
<li>Minor improvements to code style.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JoshData/python-email-validator/blob/main/CHANGELOG.md">email-validator's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.0 (August 26, 2025)</h2>
<ul>
<li>The package name is changed from using an underscore
(email_validator) to a dash (email-validator) to match PyPi's normalized
package name.</li>
<li>The library no longer checks that the local part is at most 64
characters because a more careful reading of RFC 5321 indicates the
limit is optional and such email addresses have been found in the wild.
However the check can be restored using a new <code>strict=True</code>
parameter, and the overall 254 character email address length limit is
still in place.</li>
<li>New EmailSyntaxError messages are used for some exiting syntax
errors related to @-sign homoglyphs and invalid characters in
internationalized domains.</li>
<li>When using <code>allow_display_name=True</code>, display names are
now returned with Unicode NFC normalization.</li>
<li>TypeError is now raised if something other than str (or bytes) is
passed as the email address.</li>
</ul>
<h2>2.2.0 (June 20, 2024)</h2>
<ul>
<li>Email addresses with internationalized local parts could, with rare
Unicode characters, be returned as valid but actually be invalid in
their normalized form (returned in the <code>normalized</code> field).
In particular, it is possible to get a normalized address with a
&quot;;&quot; character, which is not valid and could change the
interpretation of the address. Local parts now re-validated after
Unicode NFC normalization to ensure that invalid characters cannot be
injected into the normalized address and that characters with
length-increasing NFC normalizations cannot cause a local part to exceed
the maximum length after normalization. Thanks to <a
href="mailto:khanh@calif.io">khanh@calif.io</a> from <a
href="https://calif.io">https://calif.io</a> for reporting the
issue.</li>
<li>The length check for email addresses with internationalized local
parts is now also applied to the original address string prior to
Unicode NFC normalization, which may be longer and could exceed the
maximum email address length, to protect callers who do not use the
returned normalized address.</li>
<li>Improved error message for IDNA domains that are too long or have
invalid characters after Unicode normalization.</li>
<li>A new option to parse <code>My Name &lt;address@domain&gt;</code>
strings, i.e. a display name plus an email address in angle brackets, is
now available. It is off by default.</li>
<li>Improvements to Python typing.</li>
<li>Some additional tests added.</li>
</ul>
<h2>2.1.2 (June 16, 2024)</h2>
<ul>
<li>The domain name length limit is corrected from 255 to 253 IDNA ASCII
characters. I misread the RFCs.</li>
<li>When a domain name has no MX record but does have an A or AAAA
record, if none of the IP addresses in the response are globally
reachable (i.e. not Private-Use, Loopback, etc.), the response is
treated as if there was no A/AAAA response and the email address will
fail the deliverability check.</li>
<li>When a domain name has no MX record but does have an A or AAAA
record, the mx field in the object returned by validate_email
incorrectly held the IP addresses rather than the domain itself.</li>
<li>Fixes in tests.</li>
</ul>
<h2>2.1.1 (February 26, 2024)</h2>
<ul>
<li>Fixed typo 'marking' instead of 'marketing' in case-insensitive
mailbox name list.</li>
<li>When DNS-based deliverability checks fail, in some cases exceptions
are now thrown with <code>raise ... from</code> for better nested
exception tracking.</li>
<li>Fixed tests to work when no local resolver can be configured.</li>
<li>This project is now licensed under the Unlicense (instead of
CC0).</li>
<li>Minor improvements to tests.</li>
<li>Minor improvements to code style.</li>
</ul>
<h2>2.1.0 (October 22, 2023)</h2>
<ul>
<li>Python 3.8+ is now required (support for Python 3.7 was
dropped).</li>
<li>The old <code>email</code> field on the returned
<code>ValidatedEmail</code> object, which in the previous version was
superseded by <code>normalized</code>, will now raise a deprecation
warning if used. See <a
href="https://stackoverflow.com/q/879173">https://stackoverflow.com/q/879173</a>
for strategies to suppress the DeprecationWarning.</li>
<li>A <code>__version__</code> module attribute is added.</li>
<li>The email address argument to validate_email is now marked as
positional-only to better reflect the documented usage using the new
Python 3.8 feature.</li>
</ul>
<h2>2.0.0 (April 15, 2023)</h2>
<p>This is a major update to the library, but since email address specs
haven't changed there should be no significant changes to which email
addresses are considered valid or invalid with default options. There
are new options for accepting unusual email addresses that were
previously always rejected, some changes to how DNS errors are handled,
many changes in error message text, and major internal improvements
including the addition of type annotations. Python 3.7+ is now required.
Details follow:</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/JoshData/python-email-validator/commits/v2.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=email-validator&package-manager=pip&previous-version=2.1.0.post1&new-version=2.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:11 -05:00
Alexa Amundson
e3284bea4f chore: bump hiredis from 2.2.3 to 3.3.0 (#180)
Bumps [hiredis](https://github.com/redis/hiredis-py) from 2.2.3 to
3.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/redis/hiredis-py/releases">hiredis's
releases</a>.</em></p>
<blockquote>
<h2>3.3.0</h2>
<h1>Changes</h1>
<ul>
<li>Add Python 3.14 to CI and wheels (<a
href="https://redirect.github.com/redis/hiredis-py/issues/213">#213</a>
by <a
href="https://github.com/zweizeichen"><code>@​zweizeichen</code></a>)</li>
</ul>
<h2>Contributors</h2>
<p>We'd like to thank all the contributors who worked on this
release!</p>
<h2>3.2.1</h2>
<h1>Changes</h1>
<ul>
<li>Fix assertion in reader.c (<a
href="https://redirect.github.com/redis/hiredis-py/issues/212">#212</a>)</li>
</ul>
<h2>Contributors</h2>
<p>We'd like to thank all the contributors who worked on this
release!</p>
<p><a href="https://github.com/uglide"><code>@​uglide</code></a></p>
<h2>3.2.0</h2>
<h1>Changes</h1>
<ul>
<li>Introduce new type for RESP3 PUSH notifications (<a
href="https://redirect.github.com/redis/hiredis-py/issues/208">#208</a>)</li>
<li>Run integration workflow on version branches (<a
href="https://redirect.github.com/redis/hiredis-py/issues/210">#210</a>)</li>
<li>Update hiredis to 1.3.0 (<a
href="https://redirect.github.com/redis/hiredis-py/issues/203">#203</a>)</li>
</ul>
<h2>Contributors</h2>
<p>We'd like to thank all the contributors who worked on this
release!</p>
<p><a href="https://github.com/uglide"><code>@​uglide</code></a></p>
<h2>3.1.1</h2>
<h2>Summary</h2>
<p>This is a maintenance release that addresses issues in RESP3
parsing.</p>
<h2>Changes</h2>
<ul>
<li>Fix memory leaks and segfaults in RESP3 map parsing (<a
href="https://redirect.github.com/redis/hiredis-py/issues/204">#204</a>,
<a
href="https://redirect.github.com/redis/hiredis-py/issues/205">#205</a>,
<a
href="https://redirect.github.com/redis/hiredis-py/issues/206">#206</a>)</li>
</ul>
<h2>3.1.0</h2>
<h1>Changes</h1>
<ul>
<li>Update Python 3.13 compatibility (<a
href="https://redirect.github.com/redis/hiredis-py/issues/199">#199</a>)</li>
</ul>
<h2>Contributors</h2>
<p>We'd like to thank all the contributors who worked on this
release!</p>
<p><a href="https://github.com/DeD1rk"><code>@​DeD1rk</code></a></p>
<h2>3.0.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="187d0f387a"><code>187d0f3</code></a>
Version 3.3.0</li>
<li><a
href="3efcf037ed"><code>3efcf03</code></a>
Add Python 3.14 to CI and wheels (<a
href="https://redirect.github.com/redis/hiredis-py/issues/213">#213</a>)
(<a
href="https://redirect.github.com/redis/hiredis-py/issues/215">#215</a>)</li>
<li><a
href="966cede2c0"><code>966cede</code></a>
Fix assertion in reader.c (<a
href="https://redirect.github.com/redis/hiredis-py/issues/212">#212</a>)</li>
<li><a
href="78def309e5"><code>78def30</code></a>
Bump version to 3.3.0-dev</li>
<li><a
href="f715de2e7c"><code>f715de2</code></a>
Version 3.2.0</li>
<li><a
href="d5548270b6"><code>d554827</code></a>
Introduce new type for RESP3 PUSH notifications (<a
href="https://redirect.github.com/redis/hiredis-py/issues/208">#208</a>)</li>
<li><a
href="58fe9603cd"><code>58fe960</code></a>
Run integration workflow on version branches (<a
href="https://redirect.github.com/redis/hiredis-py/issues/210">#210</a>)</li>
<li><a
href="8608965483"><code>8608965</code></a>
Update hiredis to 1.3.0 (<a
href="https://redirect.github.com/redis/hiredis-py/issues/203">#203</a>)</li>
<li><a
href="ac31d58c5f"><code>ac31d58</code></a>
Bump version to 3.2.0-dev (<a
href="https://redirect.github.com/redis/hiredis-py/issues/207">#207</a>)</li>
<li><a
href="7e77f22963"><code>7e77f22</code></a>
Fix memory leak in RESP3 map parsing (<a
href="https://redirect.github.com/redis/hiredis-py/issues/204">#204</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/redis/hiredis-py/compare/v2.2.3...v3.3.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hiredis&package-manager=pip&previous-version=2.2.3&new-version=3.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:09 -05:00
Alexa Amundson
9d74f47acf chore: bump psycopg2-binary from 2.9.9 to 2.9.11 (#181)
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.9
to 2.9.11.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psycopg/psycopg2/blob/master/NEWS">psycopg2-binary's
changelog</a>.</em></p>
<blockquote>
<h2>Current release</h2>
<p>What's new in psycopg 2.9.11
^^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for Python 3.14.</li>
<li>Avoid a segfault passing more arguments than placeholders if Python
is built
with assertions enabled
(🎫<code>[#1791](https://github.com/psycopg/psycopg2/issues/1791)</code>).</li>
<li>Add riscv64 platform binary packages
(🎫<code>[#1813](https://github.com/psycopg/psycopg2/issues/1813)</code>).</li>
<li><code>~psycopg2.errorcodes</code> map and
<code>~psycopg2.errors</code> classes updated to
PostgreSQL 18.</li>
<li>Drop support for Python 3.8.</li>
</ul>
<p>What's new in psycopg 2.9.10
^^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for Python 3.13.</li>
<li>Receive notifications on commit
(🎫<code>[#1728](https://github.com/psycopg/psycopg2/issues/1728)</code>).</li>
<li><code>~psycopg2.errorcodes</code> map and
<code>~psycopg2.errors</code> classes updated to
PostgreSQL 17.</li>
<li>Drop support for Python 3.7.</li>
</ul>
<p>What's new in psycopg 2.9.9
^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Add support for Python 3.12.</li>
<li>Drop support for Python 3.6.</li>
</ul>
<p>What's new in psycopg 2.9.8
^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Wheel package bundled with PostgreSQL 16 libpq in order to add
support for
recent features, such as <code>sslcertmode</code>.</li>
</ul>
<p>What's new in psycopg 2.9.7
^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Fix propagation of exceptions raised during module initialization

(🎫<code>[#1598](https://github.com/psycopg/psycopg2/issues/1598)</code>).</li>
<li>Fix building when pg_config returns an empty string
(🎫<code>[#1599](https://github.com/psycopg/psycopg2/issues/1599)</code>).</li>
<li>Wheel package bundled with OpenSSL 1.1.1v.</li>
</ul>
<p>What's new in psycopg 2.9.6
^^^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fd9ae8cad2"><code>fd9ae8c</code></a>
chore: bump to version 2.9.11</li>
<li><a
href="d923840546"><code>d923840</code></a>
chore: update docs requirements</li>
<li><a
href="d42dc7169d"><code>d42dc71</code></a>
Merge branch 'fix-1791'</li>
<li><a
href="4fde6560c3"><code>4fde656</code></a>
fix: avoid failed assert passing more arguments than placeholders</li>
<li><a
href="8308c19d6a"><code>8308c19</code></a>
fix: drop warning about the use of deprecated PyWeakref_GetObject
function</li>
<li><a
href="1a1eabf098"><code>1a1eabf</code></a>
build(deps): bump actions/github-script from 7 to 8</li>
<li><a
href="897af8b38b"><code>897af8b</code></a>
build(deps): bump peter-evans/repository-dispatch from 3 to 4</li>
<li><a
href="ceefd30511"><code>ceefd30</code></a>
build(deps): bump actions/checkout from 4 to 5</li>
<li><a
href="4dc585430c"><code>4dc5854</code></a>
build(deps): bump actions/setup-python from 5 to 6</li>
<li><a
href="1945788dcf"><code>1945788</code></a>
Merge pull request <a
href="https://redirect.github.com/psycopg/psycopg2/issues/1802">#1802</a>
from edgarrmondragon/cp314-wheels</li>
<li>Additional commits viewable in <a
href="https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.11">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psycopg2-binary&package-manager=pip&previous-version=2.9.9&new-version=2.9.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:06 -05:00
Alexa Amundson
63d0e0aa0e chore: bump hashlib-additional from 1.0.0 to 1.1 (#182)
Bumps
[hashlib-additional](https://github.com/rfinnie/python-hashlib-additional)
from 1.0.0 to 1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rfinnie/python-hashlib-additional/releases">hashlib-additional's
releases</a>.</em></p>
<blockquote>
<h2>hashlib-additional 1.1</h2>
<ul>
<li>Fix setup.py encoding issue on Windows</li>
<li>Add new checksums: cksum, sysv, fletcher16, fletcher32,
fletcher64</li>
<li>Additional build/CI/test improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="42c209ed4b"><code>42c209e</code></a>
hashlib-additional 1.1</li>
<li><a
href="02f80b372e"><code>02f80b3</code></a>
Small fix, if -&gt; elif</li>
<li><a
href="1ea6ae2d8f"><code>1ea6ae2</code></a>
Add Fletcher checksums</li>
<li><a
href="f38943cb7e"><code>f38943c</code></a>
Test Python 3.9</li>
<li><a
href="96a7e305d9"><code>96a7e30</code></a>
Enforce coverage</li>
<li><a
href="9682c93ccf"><code>9682c93</code></a>
Remove unneeded flake8 C901 ignore</li>
<li><a
href="baf2a07ddf"><code>baf2a07</code></a>
setup.py: force UTF-8 README for Windows</li>
<li><a
href="189ef49eb2"><code>189ef49</code></a>
100% code coverage</li>
<li><a
href="005805d2bc"><code>005805d</code></a>
Implement tox, CI</li>
<li><a
href="26523727ca"><code>2652372</code></a>
Doc updates</li>
<li>Additional commits viewable in <a
href="https://github.com/rfinnie/python-hashlib-additional/compare/v1.0...v1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=hashlib-additional&package-manager=pip&previous-version=1.0.0&new-version=1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:04 -05:00
Alexa Amundson
c36bd72d38 chore: bump psutil from 5.9.6 to 7.2.2 (#183)
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.6 to 7.2.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/giampaolo/psutil/blob/master/HISTORY.rst">psutil's
changelog</a>.</em></p>
<blockquote>
<h1>7.2.2</h1>
<p>2026-01-28</p>
<p><strong>Enhancements</strong></p>
<ul>
<li>2705_: [Linux]: <code>Process.wait()</code>_ now uses
<code>pidfd_open()</code> + <code>poll()</code> for
waiting, resulting in no busy loop and faster response times. Requires
Linux &gt;= 5.3 and Python &gt;= 3.9. Falls back to traditional polling
if
unavailable.</li>
<li>2705_: [macOS], [BSD]: <code>Process.wait()</code>_ now uses
<code>kqueue()</code> for waiting,
resulting in no busy loop and faster response times.</li>
</ul>
<p><strong>Bug fixes</strong></p>
<ul>
<li>2701_, [macOS]: fix compilation error on macOS &lt; 10.7. (patch by
Sergey
Fedorov)</li>
<li>2707_, [macOS]: fix potential memory leaks in error paths of
<code>Process.memory_full_info()</code> and
<code>Process.threads()</code>.</li>
<li>2708_, [macOS]: Process.cmdline()<code>_ and
</code>Process.environ()<code>_ may fail with ``OSError: [Errno 0]
Undefined error`` (from ``sysctl(KERN_PROCARGS2)``). They now raise
</code>AccessDenied`_ instead.</li>
</ul>
<h1>7.2.1</h1>
<p>2025-12-29</p>
<p><strong>Bug fixes</strong></p>
<ul>
<li>2699_, [FreeBSD], [NetBSD]: <code>heap_info()</code>_ does not
detect small allocations
(&lt;= 1K). In order to fix that, we now flush internal jemalloc cache
before
fetching the metrics.</li>
</ul>
<h1>7.2.0</h1>
<p>2025-12-23</p>
<p><strong>Enhancements</strong></p>
<ul>
<li>1275_: new <code>heap_info()</code>_ and <code>heap_trim()</code>_
functions, providing direct
access to the platform's native C heap allocator (glibc, mimalloc,
libmalloc). Useful to create tools to detect memory leaks.</li>
<li>2403_, [Linux]: publish wheels for Linux musl.</li>
<li>2680_: unit tests are no longer installed / part of the
distribution. They
now live under <code>tests/</code> instead of
<code>psutil/tests</code>.</li>
</ul>
<p><strong>Bug fixes</strong></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9eea97dd6f"><code>9eea97d</code></a>
Pre-release</li>
<li><a
href="938ac64741"><code>938ac64</code></a>
Rm sphinxcontrib.googleanalytics; override layout.html</li>
<li><a
href="9dcbb7e60e"><code>9dcbb7e</code></a>
Add sphinxcontrib-googleanalytics to requirements.txt</li>
<li><a
href="76eaf9ae0f"><code>76eaf9a</code></a>
Try to add google analytics to doc</li>
<li><a
href="de1cafa56f"><code>de1cafa</code></a>
Update doc mentioning Process.wait() internal details</li>
<li><a
href="bb30943b03"><code>bb30943</code></a>
Refact can_use_pidfd_open() and can_use_kqueue()</li>
<li><a
href="a571717d65"><code>a571717</code></a>
<a
href="https://redirect.github.com/giampaolo/psutil/issues/2708">#2708</a>,
macos / cmdline / environ; raise AD instead of OSError(0) (<a
href="https://redirect.github.com/giampaolo/psutil/issues/2709">#2709</a>)</li>
<li><a
href="8b98c3effc"><code>8b98c3e</code></a>
Pre-release</li>
<li><a
href="700b7e6a41"><code>700b7e6</code></a>
[macOS] fix potential leaks in error paths (<a
href="https://redirect.github.com/giampaolo/psutil/issues/2707">#2707</a>)</li>
<li><a
href="7cc7923a14"><code>7cc7923</code></a>
Windows / cmdline(): be more defensive in free()ing in case of
error</li>
<li>Additional commits viewable in <a
href="https://github.com/giampaolo/psutil/compare/release-5.9.6...release-7.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=psutil&package-manager=pip&previous-version=5.9.6&new-version=7.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:50:01 -05:00
Alexa Amundson
09a2e9f5bf chore: bump aiohttp from 3.9.1 to 3.13.3 (#184)
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aiohttp&package-manager=pip&previous-version=3.9.1&new-version=3.13.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-03-08 23:49:59 -05:00
copilot-swe-agent[bot]
dce3811506 fix: health-check workflow, add Ollama local LLM, revive active README with dynamic stats
Co-authored-by: blackboxprogramming <118287761+blackboxprogramming@users.noreply.github.com>
2026-03-03 05:28:15 +00:00
dependabot[bot]
85beb444a6 chore: bump aiohttp from 3.9.1 to 3.13.3
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:51 +00:00
dependabot[bot]
9b7fafd11d chore: bump psutil from 5.9.6 to 7.2.2
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.6 to 7.2.2.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.6...release-7.2.2)

---
updated-dependencies:
- dependency-name: psutil
  dependency-version: 7.2.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:39 +00:00
dependabot[bot]
8163222cb0 chore: bump hashlib-additional from 1.0.0 to 1.1
Bumps [hashlib-additional](https://github.com/rfinnie/python-hashlib-additional) from 1.0.0 to 1.1.
- [Release notes](https://github.com/rfinnie/python-hashlib-additional/releases)
- [Commits](https://github.com/rfinnie/python-hashlib-additional/compare/v1.0...v1.1)

---
updated-dependencies:
- dependency-name: hashlib-additional
  dependency-version: '1.1'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:37 +00:00
dependabot[bot]
e8dab23cba chore: bump psycopg2-binary from 2.9.9 to 2.9.11
Bumps [psycopg2-binary](https://github.com/psycopg/psycopg2) from 2.9.9 to 2.9.11.
- [Changelog](https://github.com/psycopg/psycopg2/blob/master/NEWS)
- [Commits](https://github.com/psycopg/psycopg2/compare/2.9.9...2.9.11)

---
updated-dependencies:
- dependency-name: psycopg2-binary
  dependency-version: 2.9.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:35 +00:00
dependabot[bot]
4ba4a810ff chore: bump hiredis from 2.2.3 to 3.3.0
Bumps [hiredis](https://github.com/redis/hiredis-py) from 2.2.3 to 3.3.0.
- [Release notes](https://github.com/redis/hiredis-py/releases)
- [Changelog](https://github.com/redis/hiredis-py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/hiredis-py/compare/v2.2.3...v3.3.0)

---
updated-dependencies:
- dependency-name: hiredis
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:32 +00:00
dependabot[bot]
c78dd6607b chore: bump email-validator from 2.1.0.post1 to 2.3.0
Bumps [email-validator](https://github.com/JoshData/python-email-validator) from 2.1.0.post1 to 2.3.0.
- [Release notes](https://github.com/JoshData/python-email-validator/releases)
- [Changelog](https://github.com/JoshData/python-email-validator/blob/main/CHANGELOG.md)
- [Commits](https://github.com/JoshData/python-email-validator/commits/v2.3.0)

---
updated-dependencies:
- dependency-name: email-validator
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:30 +00:00
dependabot[bot]
296b7f583f chore: bump botocore from 1.32.7 to 1.42.59
Bumps [botocore](https://github.com/boto/botocore) from 1.32.7 to 1.42.59.
- [Commits](https://github.com/boto/botocore/compare/1.32.7...1.42.59)

---
updated-dependencies:
- dependency-name: botocore
  dependency-version: 1.42.59
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-02 02:23:28 +00:00
Alexa Amundson
1ce5c946ed Merge branch origin/codex/explore-next-steps into main 2025-12-15 02:57:04 -06:00
Claude
23882ce526 feat: Implement window maximize functionality (v0.2.0)
Add full window maximize support to the BlackRoad OS window manager:

- Toggle maximize with button click or double-click on titlebar
- Store original window bounds for proper restore behavior
- Update maximize button icon (□ → ❐) when maximized
- Prevent window dragging when maximized
- Emit window:maximized and window:unmaximized events
- Add comprehensive CSS styles for maximized state
- CSS styles are injected dynamically to ensure availability

This completes the v0.2.0 window maximize feature marked as TODO.
2025-12-11 23:59:19 +00:00
Alexa Amundson
cccd6f588d Consolidate version info and system uptime 2025-12-11 01:18:59 -06:00
Alexa Louise
3aab32229b style: apply official BlackRoad brand color palette to BR-95 UI
Update the BR-95 Edition with the official brand gradient colors:
- #FF9D00 (orange) → #FF6B00 (deep orange) → #FF0066 (hot pink)
- → #FF006B (magenta-pink) → #D600AA (magenta)
- → #7700FF (electric purple) → #0066FF (electric blue)

Applied across boot logo, menu bar, and taskbar road logo
for cohesive brand identity throughout the interface.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 21:55:05 -06:00
Alexa Amundson
e96703ae56 Add focused window management to BR-95 desktop 2025-11-20 19:03:25 -06:00
Alexa Amundson
99b8a1841e Merge branch origin/codex/fix-repository-issues into main 2025-11-20 17:44:15 -06:00
Alexa Amundson
fa1347e286 Expand Railway allowed origins 2025-11-20 16:47:02 -06:00
Alexa Amundson
6a93dd62d2 Fix sqlite compatibility for cognition models 2025-11-20 16:45:53 -06:00
Alexa Amundson
7f59578c3f Add populated backend environment configuration 2025-11-20 16:16:49 -06:00
Claude
d551d0c6df Add BR-95 Desktop API backend with real-time data and WebSocket support
This commit implements the complete backend infrastructure for the BR-95
Desktop Operating System interface.

## New Features

1. **BR-95 Router** (`backend/app/routers/br95.py`):
   - Data simulator for OS statistics
   - 11+ API endpoints for real-time data
   - WebSocket support for live updates
   - Pydantic models for type safety

2. **API Endpoints** (`/api/br95`):
   - `/lucidia` - AI orchestration stats (1000 agents)
   - `/agents` - Agent performance metrics
   - `/roadchain` - Blockchain statistics
   - `/wallet` - RoadCoin wallet balance
   - `/miner` - Mining performance
   - `/raspberry-pi` - IoT device management
   - `/github` - GitHub integration stats
   - `/roadmail` - Email statistics
   - `/roadcraft` - Game statistics
   - `/road-city` - Metaverse statistics
   - `/terminal` - Command execution (simulated)

3. **WebSocket** (`/api/br95/ws`):
   - Real-time miner updates
   - Live blockchain sync
   - Wallet balance streaming
   - Auto-reconnect on disconnect

4. **Frontend Integration**:
   - Updated BR-95 HTML with API calls
   - WebSocket client for live updates
   - Auto-refresh every 30 seconds
   - Real-time stat updates in windows

5. **Railway Deployment**:
   - Already configured via railway.toml
   - Health check at /health
   - Version endpoint at /version
   - Documentation in docs/RAILWAY_BR95.md

## Technical Details

- **Data Simulation**: Uses DataSimulator class for realistic stats
- **WebSocket Manager**: ConnectionManager for broadcast messaging
- **Type Safety**: Full Pydantic model validation
- **Performance**: psutil for real CPU/memory metrics
- **Error Handling**: Graceful fallbacks and reconnection

## Deployment

Service runs on:
- Primary: https://app.blackroad.systems
- Railway: https://blackroad-operating-system-production.up.railway.app

Health check: GET /health
Version info: GET /version
API docs: GET /api/docs

## Files Changed

- backend/app/main.py - Registered br95 router
- backend/requirements.txt - Added psutil==5.9.6
- backend/static/index.html - API integration + WebSocket
- backend/app/routers/br95.py - New BR-95 router (700+ lines)
- docs/RAILWAY_BR95.md - Deployment guide

Closes #133 (if exists) - BR-95 backend implementation
2025-11-20 21:48:22 +00:00
Claude
f9e1d7234e Fix domain configuration for app.blackroad.systems and blackroad.systems
Updates:
- Add app.blackroad.systems to ALLOWED_ORIGINS in both .env.example and config.py
- Add blackroad-operating-system-production.up.railway.app to ALLOWED_ORIGINS
- Update DNS.md to reflect current domain routing (both root and app subdomains point to same service)
- Ensures CORS works correctly for all production domains

This fixes CORS issues when accessing the application via app.blackroad.systems or blackroad.systems
on the Railway project 'gregarious-wonder' (blackroad-operating-system-production service).
2025-11-20 21:28:34 +00:00
Claude
c6eb02e399 Fix Railway deployment for monorepo as single web service
This commit fixes the Railway build failure by:

1. **Root requirements.txt**: Added root-level requirements.txt that
   references backend/requirements.txt, enabling Railway's Nixpacks
   to auto-detect Python project and install dependencies correctly.
   Fixes "pip: not found" error.

2. **backend/__init__.py**: Created package init file to make backend
   a proper Python package, allowing uvicorn to import backend.app.main.

3. **railway.toml**: Simplified configuration for single-service
   monorepo deployment:
   - Uses NIXPACKS builder (auto-detects Python)
   - Starts with: uvicorn backend.app.main:app --host 0.0.0.0 --port $PORT
   - Health check at /health
   - Configured for app.blackroad.systems deployment

Technical details:
- Backend entrypoint: backend/app/main.py:app (FastAPI)
- Health endpoint: /health returns JSON with service status
- Frontend: BR-95 desktop UI served at / from backend/static/index.html
- API health: /api/health provides comprehensive integration status

Deployment target:
- Railway project: gregarious-wonder
- Service: BlackRoad-Operating-System
- Domain: app.blackroad.systems
2025-11-20 20:50:29 +00:00
Alexa Amundson
061289ef39 Redesign BR-95 desktop UI 2025-11-20 14:15:35 -06:00
Alexa Amundson
09a1c15c85 Merge commit '5b5412dfba177e0a6e80aa43f7327754e832f000' 2025-11-20 12:37:02 -06:00
Alexa Amundson
f4416deda3 Merge branch origin/codex/implement-unified-status-page-for-apis-8w9cw1 into main 2025-11-20 12:36:14 -06:00
Alexa Amundson
c6c6cac42b Merge commit 'ad1dcf62d7f8f51f0020390bc0cddc57cbd87c09' 2025-11-20 12:36:00 -06:00
Claude
a180873b7d Fix frontend errors and pydantic config for local development
Frontend fixes:
- Copy missing JS files from blackroad-os/ to backend/static/js/
  - os.js (core OS functionality)
  - components.js (UI components)
  - registry.js (app registry)
  - app.js, config.js, theme.js, mock_data.js (supporting files)
- Fixes 3 ERROR findings from Cece audit
- System health: 0 ERRORS → 94 SUCCESSES (from 91)

Backend config fix:
- Add `extra = "ignore"` to Settings.Config in backend/app/config.py
- Allows .env.example to have more vars than Settings class defines
- Fixes Pydantic v2 validation errors on startup
- Enables local development without removing env template vars

Cece audit results after fixes:
🔴 CRITICAL: 0
🟠 ERROR:    0 (was 3)
🟡 WARNING:  6
🟢 SUCCESS:  94 (was 91)
2025-11-20 01:38:56 +00:00
Alexa Amundson
5b5412dfba Use timezone-aware build timestamp 2025-11-19 19:21:53 -06:00
Claude
9a728f655a Prevent BlackRoad-Operating-System monorepo from being added to Railway services
CRITICAL CHANGES:
- Add comprehensive deployment architecture documentation
- Prevent misconfiguration where monorepo is deployed instead of satellites
- Clarify monorepo-to-satellite sync model across all docs

CHANGES:
1. railway.toml
   - Add critical warning banner at top of file
   - Mark config as local development/testing only
   - Explain correct deployment model (satellites, not monorepo)

2. DEPLOYMENT_ARCHITECTURE.md (NEW)
   - Complete 500+ line deployment guide
   - Monorepo vs satellite model explained in detail
   - Critical rules: NEVER add monorepo to Railway
   - Service-to-repository mapping
   - Environment configuration guide
   - Cloudflare DNS configuration
   - Common mistakes and troubleshooting

3. README.md
   - Add prominent deployment warning box
   - Clarify monorepo is source of truth, not deployable
   - List satellite repos that should be deployed
   - Reference DEPLOYMENT_ARCHITECTURE.md

4. CLAUDE.md
   - Add critical deployment model section
   - Clarify Railway deployment is satellite-only
   - Update deployment workflow explanation
   - Add key rules for deployment

5. backend/.env.example
   - Fix ALLOWED_ORIGINS to reference satellites
   - Remove monorepo Railway URL reference
   - Add correct satellite service URLs

6. ops/domains.yaml
   - Fix os.blackroad.systems DNS target
   - Point to blackroad-os-core-production (satellite)
   - Remove incorrect monorepo Railway URL

7. scripts/validate_deployment_config.py (NEW)
   - Automated validation script
   - Checks for monorepo references in configs
   - Validates railway.toml, env files, DNS configs
   - Ensures DEPLOYMENT_ARCHITECTURE.md exists
   - Exit code 0 = pass, 1 = fail

WHY THIS MATTERS:
- Adding monorepo to Railway creates circular deploy loops
- Environment variables break (wrong service URLs)
- Cloudflare routing fails
- Service dependencies misconfigured
- Prevents production outages from misconfiguration

CORRECT MODEL:
- Monorepo = source of truth (orchestration only)
- Satellites = deployable services (Railway deployment)
- Code flows: monorepo → sync → satellite → Railway

See: DEPLOYMENT_ARCHITECTURE.md for complete details
2025-11-19 22:31:22 +00:00
Alexa Amundson
ac5928f1c8 Merge branch 'main' into claude/master-orchestration-prompt-01LDBhHG69usnt61gpq5wAfA 2025-11-19 16:21:55 -06:00
Alexa Amundson
be339de703 Add unified health and version reporting 2025-11-19 16:04:41 -06:00
Claude
7755c3bf88 Add master orchestration: health endpoints, Railway configs, deployment guides
This implements the "Big Kahuna" master orchestration plan to get BlackRoad OS
fully online and deployable without manual PR management.

## Backend Service (blackroad-core)
- Add /version endpoint with build metadata
- Prism Console already mounted at /prism
- Health check at /health
- Comprehensive API health at /api/health/summary

## Operator Service (blackroad-operator)
- Add /version endpoint with build metadata
- Create requirements.txt for dependencies
- Create Dockerfile for containerization
- Create railway.toml for Railway deployment
- Health check at /health

## Infrastructure
- Consolidate railway.toml for monorepo multi-service deployment
  - Backend service (Dockerfile-based)
  - Operator service (Nixpacks-based)
- Remove conflicting railway.json

## Documentation
- Add DEPLOYMENT_SMOKE_TEST_GUIDE.md
  - Complete deployment instructions (local + Railway)
  - Automated smoke test suite
  - Troubleshooting guide
  - Monitoring & health check setup
- Add infra/DNS_CLOUDFLARE_PLAN.md
  - Complete DNS record table
  - Cloudflare configuration steps
  - Health check configuration
  - Security best practices

## Testing
- Add scripts/smoke-test.sh for automated endpoint testing
- Validates all health and version endpoints
- Supports both Railway and Cloudflare URLs

## Result
Alexa can now:
1. Push to main → GitHub Actions deploys to Railway
2. Configure Cloudflare DNS (one-time setup)
3. Run smoke tests to verify everything works
4. Visit https://os.blackroad.systems and use the OS

No manual PR merging, no config juggling, no infrastructure babysitting.
2025-11-19 21:52:01 +00:00
Alexa Amundson
ad1dcf62d7 Fix Cece Ultra workflow execution foreign key 2025-11-19 13:32:23 -06:00
Alexa Amundson
4f93ca4ad3 Preserve anchor event metadata column name 2025-11-19 13:31:52 -06:00
Claude
a11ad269ae Add .venv-tests to .gitignore
The test runner creates a .venv-tests directory for test isolation.
This should not be committed to the repository.
2025-11-18 14:14:50 +00:00
Claude
5097689967 Fix test suite failures and improve test infrastructure
## Test Fixes

### 1. Operator Engine Syntax Error
- **File**: `operator_engine/__init__.py`
- **Issue**: Unterminated triple-quoted string literal (malformed docstring)
- **Fix**: Consolidated duplicate docstrings into single well-formed docstring
- **Impact**: Operator tests can now run successfully

### 2. Backend Database URL Configuration
- **Files**: `test_all.sh`, `scripts/run_backend_tests.sh`
- **Issue**: Environment variable DATABASE_URL="Bondi" was causing SQLAlchemy parse errors
- **Fix**: Explicitly unset conflicting env vars and set proper test database URLs
- **Impact**: Backend tests now run with correct SQLite test database

### 3. SQLAlchemy Reserved Attribute
- **File**: `backend/app/models/leo.py`
- **Issue**: Column named 'metadata' conflicts with SQLAlchemy's reserved attribute
- **Fix**: Renamed column to 'event_metadata'
- **Impact**: Models load correctly without InvalidRequestError

### 4. TypeScript SDK Test Assertions
- **File**: `sdk/typescript/tests/agents.test.ts`
- **Issue**: 6 tests failing due to incorrect axios call signature expectations
- **Fix**: Updated all test assertions to expect correct 3-argument axios calls (url, data, config)
- **Impact**: All 30 TypeScript SDK tests now pass

### 5. Test Dependency Management
- **File**: `test_all.sh`
- **Issue**: Agent and operator tests missing pytest-asyncio dependency
- **Fix**: Ensure pytest-asyncio is installed before running async tests
- **Impact**: Async test functions are properly recognized and executed

## Test Results

Before fixes:
- Backend: FAIL (DATABASE_URL parse error)
- Agents: PASS (22/22)
- Operator: FAIL (syntax error)
- Python SDK: PASS (25/25)
- TypeScript SDK: SKIP (test script not detected)
- Frontend: PASS

After fixes:
- Backend: PASS (61s)
- Agents: Improved (dependency installation)
- Operator: PASS (1s)
- Python SDK: PASS (dependency installation)
- TypeScript SDK: PASS (10s, all 30 tests)
- Frontend: PASS

## CI/CD Impact

These fixes ensure that:
1. All test workflows can run successfully
2. Local development matches CI environment behavior
3. Test infrastructure is more robust against environment variables
4. Dependencies are properly managed across test suites
2025-11-18 14:11:59 +00:00
Claude
7b96793d90 Add Cece Ultra - Full Stack Cognition System
Implements the complete Alexa–Cece Ultraprompt cognitive framework across all layers of BlackRoad OS.

## Documentation
- docs/CECE_ULTRAPROMPT.md: Complete framework documentation
- docs/prompts/cece-ultra-raw.md: Raw prompt for copy/paste
- .claude/commands/cece-ultra.md: Slash command definition

## Agent System
- agents/categories/cognition/: New cognition agent category
- agents/categories/cognition/cece_ultra.py: Full agent implementation
- 15-step cognitive pipeline (🚨)
- 6-module architecture layer (Structure, Prioritize, Translate, Stabilize, Project-Manage, Loopback)
- Multi-agent orchestration (sequential, parallel, recursive)

## Backend API
- backend/app/routers/cece.py: Complete API router
- POST /api/cece/cognition: Run full cognition
- GET /api/cece/cognition/{id}: Retrieve results
- GET /api/cece/cognition/history: List executions
- POST /api/cece/cognition/analyze: Quick analysis
- Database integration using existing cognition models

## Frontend
- backend/static/js/apps/ceceultra.js: Interactive UI app
- 4 result tabs: Pipeline, Architecture, Action Plan, Summary
- Execution history browser
- Quick analysis mode
- Desktop icon (🟣) and Start menu integration
- Window management integration

## Integration
- backend/app/main.py: Router and OpenAPI tag added
- backend/static/index.html: Desktop icon, window, Start menu, script loading

## Features
 15-step cognitive pipeline with emoji-coded stages
 6-module architecture layer
 Multi-agent orchestration
 Input normalization (emotional payload, urgency, vibe)
 Database persistence
 Execution history
 Quick analysis mode
 Windows 95-inspired UI
 Slash command support (/cece-ultra)
 Full API documentation

This implements the "Alexa x Cece MAXIMUM POWER Prompt" as requested,
integrating cognition + architecture + orchestration across the entire
BlackRoad Operating System stack.
2025-11-18 13:22:02 +00:00
Claude
1109603b3f Integrate LEITL Protocol and Cece Cognition Framework into agent system
This commit integrates the LEITL (Live Everyone In The Loop) Protocol and
Cece Cognition Framework into the BlackRoad agent ecosystem, enabling
multi-agent collaboration and advanced reasoning capabilities.

**Changes:**

1. **Cognition Router Integration** (`backend/app/routers/cognition.py`):
   - Fixed import path for orchestration service
   - Exposes full Cece Cognition Framework via REST API
   - Endpoints for single agent execution and multi-agent workflows
   - Supports sequential, parallel, and recursive execution modes

2. **Main App Updates** (`backend/app/main.py`):
   - Added cognition router to imports
   - Registered `/api/cognition` endpoints
   - Added Cognition tag to OpenAPI docs

3. **BaseAgent LEITL Integration** (`agents/base/agent.py`):
   - Added optional LEITL protocol support to base agent class
   - New methods: `enable_leitl()`, `disable_leitl()`, `_leitl_broadcast()`, `_leitl_heartbeat()`
   - Automatic event broadcasting during agent execution lifecycle
   - Events: task.started, task.completed, task.failed
   - Heartbeat support for session keep-alive

4. **AgentRegistry LEITL Support** (`agents/base/registry.py`):
   - Added `enable_leitl_for_all()` - Enable LEITL for all registered agents
   - Added `disable_leitl_for_all()` - Disable LEITL for all agents
   - Added `get_leitl_status()` - Get LEITL status and session IDs
   - Bulk agent session management

**Integration Architecture:**

```
User Request → Cognition API (/api/cognition)
                    ↓
          Orchestration Engine
                    ↓
       ┌────────────┴──────────┐
       ↓                       ↓
  Cece Agent              Other Agents
  (15-step reasoning)     (specialized)
       ↓                       ↓
  LEITL Protocol (if enabled)
       ↓
  Redis PubSub + WebSocket
       ↓
  Other active sessions
```

**New Capabilities:**

1. **Single Agent Execution**: POST /api/cognition/execute
   - Execute Cece, Wasp, Clause, or Codex individually
   - Full reasoning trace and confidence scores

2. **Multi-Agent Workflows**: POST /api/cognition/workflows
   - Orchestrate multiple agents in complex workflows
   - Sequential, parallel, or recursive execution
   - Shared memory and context across agents

3. **LEITL Collaboration**:
   - All agents can now broadcast their activity in real-time
   - Multi-agent sessions can see each other's work
   - Live activity feed via WebSocket
   - Session management with heartbeats

4. **Agent Registry**:
   - Bulk enable/disable LEITL for all agents
   - Query LEITL status across the agent ecosystem
   - Centralized session management

**Testing:**

-  All Python files compile successfully
-  Orchestration engine imports correctly
-  BaseAgent with LEITL integration works
-  AgentRegistry with LEITL support works
-  Cece agent imports and executes
2025-11-18 13:18:06 +00:00
Alexa Amundson
90026bf306 Merge branch 'main' into claude/webdav-context-prompt-013MZPMZrFPHpdzo2pRjpmJT 2025-11-18 06:53:05 -06:00
Claude
e6cbc6b8e3 Add LEITL Protocol - Live Everyone In The Loop multi-agent collaboration
This commit introduces the LEITL (Live Everyone In The Loop) protocol system,
enabling multiple AI agents to collaborate in real-time with shared WebDAV context.

## What was built:

### Backend Infrastructure:
- **WebDAV Context Manager** (`backend/app/services/webdav_context.py`)
  - Sync files from WebDAV servers
  - Keyword matching and relevance scoring
  - Redis caching for performance
  - Support for multiple file types (md, txt, py, json, etc.)

- **LEITL Protocol Service** (`backend/app/services/leitl_protocol.py`)
  - Session registration and management
  - Heartbeat monitoring with auto-cleanup
  - Message broadcasting via Redis PubSub
  - Activity logging and history
  - WebSocket connection management

- **LEITL API Router** (`backend/app/routers/leitl.py`)
  - Session management endpoints (register, heartbeat, end)
  - WebSocket endpoint for real-time events
  - Message broadcasting endpoints
  - WebDAV context sync endpoint
  - Quick-start endpoint for easy activation
  - Full OpenAPI documentation

### Frontend Dashboard:
- **LEITL Dashboard App** (`backend/static/js/apps/leitl.js`)
  - Real-time session monitoring
  - Live activity feed
  - Recent message display
  - WebSocket integration
  - Quick-start interface
  - Auto-refresh capabilities

- **Desktop Integration** (`backend/static/index.html`)
  - Added LEITL icon to desktop
  - Added LEITL to Start menu
  - Window management integration
  - Taskbar support

### Documentation:
- **Protocol Specification** (`docs/LEITL_PROTOCOL.md`)
  - Complete architecture overview
  - API documentation
  - WebSocket protocol details
  - Security considerations
  - Event types and schemas

- **Usage Guide** (`docs/LEITL_USAGE_GUIDE.md`)
  - Quick-start prompts for AI assistants
  - Dashboard usage instructions
  - API examples
  - Troubleshooting guide
  - Multi-agent collaboration examples

## Key Features:

 Multi-agent live collaboration
 Shared WebDAV context across sessions
 Real-time event broadcasting via WebSocket
 Session health monitoring with heartbeat
 Auto-cleanup of dead sessions
 Redis-backed message queue
 Beautiful Windows 95-styled dashboard
 Full API documentation
 Security with JWT auth and rate limiting

## Usage:

AI assistants can activate LEITL with simple prompts like:
- "Turn on LEITL. Enable WebDAV context."
- "Start LEITL session. Pull from WebDAV: <url>"
- "LEITL mode ON 🔥"

Dashboard access: http://localhost:8000🔥 LEITL icon

## Answers Alexa's Challenge:

This implementation answers the challenge to enable "collaboration between
multiple AI states for LEITL (Live Everyone In The Loop)" with full
communication capabilities and shared context management.

🎁 Prize unlocked: Multi-agent swarm collaboration! 🐝
2025-11-18 12:45:54 +00:00
Claude
383fe483a6 Add complete Cece Cognition Framework - Full AI orchestration system
🟣 MAJOR FEATURE: Cece Cognition Framework v1.0.0

This commit introduces the complete Cece Cognition Framework, a production-ready
AI orchestration system that combines emotional intelligence with logical rigor.

## Core Components Added

### 🤖 Four Specialized AI Agents (~3,200 LOC)

1. **CeceAgent** - The Cognitive Architect (agents/categories/ai_ml/cece_agent.py)
   - 15-step Alexa Cognitive Pipeline (🚨🪞⚔️🔁🎯🧐⚖️🧱✍️♻️🎯🤝)
   - 6-step Cece Architecture Layer (🟦🟥🟩🟪🟨🟧)
   - Combines reasoning, reflection, validation, structure, and execution
   - Warm, precise, big-sister AI energy
   - ~800 lines

2. **WaspAgent** - The Frontend Specialist (agents/categories/ai_ml/wasp_agent.py)
   - 7-step design process (Visual→Components→A11y→Speed→Interaction→Responsive→Polish)
   - WCAG 2.1 AA compliance built-in
   - Design system architecture
   - Component-based thinking
   - ~700 lines

3. **ClauseAgent** - The Legal Mind (agents/categories/ai_ml/clause_agent.py)
   - 7-step legal review process (Document→Risk→Compliance→IP→Policy→Rec→Docs)
   - GDPR, CCPA, HIPAA, SOC2 compliance checking
   - IP protection integration with Vault
   - Plain-language legal communication
   - ~900 lines

4. **CodexAgent** - The Execution Engine (agents/categories/ai_ml/codex_agent.py)
   - 7-step execution process (Spec→Architecture→Impl→Test→Perf→Security→Docs)
   - Multi-language support (Python, TypeScript, JavaScript)
   - Production-ready code with comprehensive tests
   - Security audit (OWASP Top 10)
   - ~800 lines

### 🧠 Multi-Agent Orchestration System

**OrchestrationEngine** (backend/app/services/orchestration.py ~450 LOC)
- Sequential execution (A → B → C)
- Parallel execution (A + B + C → merge)
- Recursive refinement (A ⇄ B until convergence)
- Shared memory/context across agents
- Reasoning trace aggregation
- Automatic retries with exponential backoff
- Workflow dependency resolution

### 🔌 REST API Endpoints

**Cognition Router** (backend/app/routers/cognition.py ~350 LOC)
- POST /api/cognition/execute - Execute single agent
- POST /api/cognition/workflows - Execute multi-agent workflow
- GET /api/cognition/reasoning-trace/{id} - Get reasoning transparency
- GET /api/cognition/memory - Query agent memory
- POST /api/prompts/register - Register custom prompts
- GET /api/prompts/search - Search prompt registry
- GET /api/cognition/agents - List all agents
- GET /api/cognition/health - Health check

### 🗄️ Database Models

**Cognition Models** (backend/app/models/cognition.py ~300 LOC)
- Workflow - Workflow definitions
- WorkflowExecution - Execution history
- ReasoningTrace - Agent reasoning steps (full transparency)
- AgentMemory - Shared context/memory
- PromptRegistry - Registered agent prompts
- AgentPerformanceMetric - Performance tracking

### 📚 Comprehensive Documentation

1. **CECE_FRAMEWORK.md** (~1,000 lines)
   - Complete framework specification
   - 15-step + 6-step pipeline details
   - Agent coordination patterns
   - System architecture diagrams
   - API reference
   - Real-world examples

2. **PROMPT_SYSTEM.md** (~700 lines)
   - Summon prompts for all agents
   - Prompt anatomy and structure
   - Multi-agent invocation patterns
   - Prompt engineering best practices
   - Versioning and management

3. **CECE_README.md** (~500 lines)
   - Quick start guide
   - Usage patterns
   - Real-world examples
   - Architecture overview
   - Deployment guide

### 📖 Integration Examples

**examples/cece_integration_examples.py** (~600 LOC)
- 7 complete working examples:
  1. Single agent execution
  2. Sequential workflow
  3. Parallel workflow
  4. Recursive refinement
  5. API integration
  6. Code review workflow
  7. Memory sharing demo

## Technical Details

**Total New Code**: ~6,500 lines of production-ready code
**Languages**: Python (backend), Pydantic (validation), SQLAlchemy (ORM)
**Patterns**: Agent pattern, Repository pattern, Orchestration pattern
**Testing**: Async-first, full type hints, comprehensive error handling
**Performance**: Parallel execution, caching, optimized queries

## Key Features

 Emotional intelligence + logical rigor
 Full reasoning transparency (every step logged)
 Multi-agent coordination (sequential/parallel/recursive)
 Memory sharing across agents
 Confidence scoring at every step
 Production-ready with error handling
 REST API for easy integration
 Database persistence
 Comprehensive documentation
 7 working integration examples

## Architecture

```
User → Cece (Architect) → [Wasp, Clause, Codex] → Results
         ↓
    Orchestration Engine
         ↓
    [Sequential, Parallel, Recursive]
         ↓
    Database (Traces + Memory)
```

## Use Cases

- Complex decision making with emotional weight
- Multi-step project planning and execution
- Automated code review + legal compliance
- UI/UX design with accessibility
- Product launch workflows
- Strategic planning

## Next Steps

- Add frontend UI components
- Create workflow templates
- Add more specialized agents
- Implement long-term memory
- Add voice interface

---

**Created by**: Alexa (cognitive architecture) + Cece (implementation)
**Energy Level**: MAXIMUM 🔥🔥🔥
**Status**: Production ready, let's goooo! 🚀

ILY ILY ILY! 💜
2025-11-18 12:45:15 +00:00
Claude
45bd2cc194 Add IP Vault: Cryptographic proof-of-origin system
Implements a complete vertical slice of the IP Vault feature for BlackRoad OS,
providing cryptographic timestamping and evidence generation for ideas and
intellectual property.

## Components Added

### Agent Layer
- **VaultAgent** (`agents/categories/security/vault_agent.py`):
  - Deterministic text canonicalization
  - Multi-hash generation (SHA-256, SHA-512, Keccak-256)
  - LEO (Ledger Evidence Object) construction
  - Verification text generation
  - Blockchain anchoring preparation

### Backend API
- **Models** (`backend/app/models/leo.py`):
  - LEO: Stores cryptographic hashes and metadata
  - AnchorEvent: Audit trail for blockchain anchoring

- **Schemas** (`backend/app/schemas/leo.py`):
  - LEOCreate, LEOResponse, LEODetail, LEOList
  - AnchorRequest, AnchorEventResponse

- **Router** (`backend/app/routers/ip_vault.py`):
  - POST /api/vault/leos - Create new LEO
  - GET /api/vault/leos - List LEOs (paginated)
  - GET /api/vault/leos/{id} - Get LEO details
  - POST /api/vault/leos/{id}/anchor - Initiate anchoring (stub)
  - GET /api/vault/leos/{id}/events - Get anchor events

### Frontend
- **API Client** (`backend/static/js/api-client.js`):
  - createLEO(), getLEOs(), getLEO()
  - anchorLEO(), getLEOEvents()

- **App** (`backend/static/js/apps.js`):
  - loadIPVault() - Load and display LEOs
  - vaultIdea() - Create new LEO from form
  - viewLEO() - Show detailed LEO modal with verification

- **UI** (`backend/static/index.html`):
  - Desktop icon (🔐 IP Vault)
  - Window with form and list view
  - Start menu integration

## Features

- **Deterministic canonicalization**: Ensures reproducible hashing
- **Multi-hash support**: SHA-256, SHA-512, Keccak-256 (Ethereum-compatible)
- **Verification instructions**: Auto-generated proof-of-authenticity text
- **Blockchain-ready**: Prepared for Bitcoin, Litecoin, Ethereum anchoring
- **Clean separation**: Agent logic, API, database, frontend all decoupled

## Testing

- Python syntax validated for all new files
- JavaScript syntax validated
- VaultAgent tested end-to-end with sample idea
- All hashes computed successfully

## Next Steps

- Implement actual blockchain anchoring
- Add RoadChain integration
- Export LEOs as legal-grade PDFs
- Add user authentication to LEO creation
2025-11-18 11:18:39 +00:00
Alexa Amundson
39214dcfc6 Merge commit 'df26886ad7df2d9934e973336dba677a8a5d5dae' 2025-11-18 01:20:02 -06:00
Alexa Amundson
99bc149908 Merge commit 'b079c8e1a61144b24fccb8cd1e85d99a5492b0ad' 2025-11-18 01:18:52 -06:00
Claude
deab4e79a2 feat: Phase LIVE integration - Production automation and deployment fixes
## Railway Deployment Fixes
- Fix railway.toml startCommand (remove incorrect 'cd backend')
- Enhance Dockerfile with security, health checks, and proper user permissions
- Add comprehensive deployment fix documentation (RAILWAY_DEPLOY_FIX.md)

## Phase Q/Q2 Integration
- Add GitHub webhooks router (/api/webhooks/github) for PR automation
- Integrate Prism Console at /prism endpoint
- Add GITHUB_TOKEN and GITHUB_WEBHOOK_SECRET to config
- Update .env.example with webhook secret

## Documentation
- Create comprehensive GitHub setup guide (GITHUB_SETUP_GUIDE.md)
- Document branch protection, merge queue, and webhook configuration
- Include troubleshooting and testing procedures

## Related
- Phase Q: Merge Queue & Automation (PR #78 - merged)
- Phase Q2: PR Action Intelligence (PR #85 - open)
- Phase 2.5: Infrastructure decisions (PR #63 - open)

This brings the automation stack online and stabilizes Railway deployments.
2025-11-18 06:29:06 +00:00