You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
NanoBot upstream history is connected through 053722a2a2722e846d68562519bfbb4bc1b8c393 by #10. This issue tracks the remaining updates through the pinned upstream revision b9e7c7f6fe67253fecc387df49604ae40e4bc6b4 as small, ordered, reviewable pull requests.
This is a selective semantic integration, not a blanket merge. Each batch must preserve SagaSmith's authoritative MCP boundaries, hosted worker behavior, Local Agent Kit contract, package identity, and Apache-2.0 licensing/third-party notices.
Ordered batches
Security and correctness equivalence
Session persistence and recovery
Agent lifecycle, streaming, and reasoning behavior
MCP readiness and OAuth lifecycle
Channel package updates in bounded waves
Portable plugin support
WebUI functional slices
Provider updates
Native TUI and Herdr integration review
Usage, retrieval, and subagent concurrency improvements
Per-PR acceptance gate
Pin and cite the exact upstream commit(s) included.
List reviewed upstream commits intentionally skipped or deferred.
Adapt behavior to SagaSmith rather than overwriting product-specific contracts.
Add or update focused regression tests.
Run the full relevant Python, WebUI, and distribution checks for the changed surface.
Keep licensing and third-party attribution intact.
Use a separate PR for dependency-only upgrades or unrelated cleanup.
Current batch
Fix GitStore same-size rewrite detection #15 semantically backports HKUDS/nanobot@9f5a56f1ec224ca794017d4ab3f5f2d0ad60e4fc so GitStore detects rapid same-size rewrites even when filesystem mtime is preserved.
fix(search): bound find_files scans #16 semantically backports HKUDS/nanobot@649e3958c58bbf12342d2b254f3c40dea4d42f07 as the dedicated search-tool batch, preserving SagaSmith's current search schema and Grep/document surface while adding worker-thread cancellation, lexicographic early pagination, and bounded scans.
fix(discord): route unauthorized DMs to pairing #17 semantically backports HKUDS/nanobot@6d406d93c902e209f56f9f0ec0872fcb8abb5aa6, restoring Discord first-contact DM pairing while preserving guild-side prefiltering and SagaSmith principal routing.
fix(exec): validate allow patterns per shell segment #18 semantically integrates upstream exec-policy sequence bbca32fe through af582246, validating every top-level shell segment across POSIX, PowerShell, and cmd while deferring E2 path parsing.
fix(mcp): preserve real task cancellation #19 semantically integrates the MCP cancellation sequence 86f65587 -> 297a9e59 -> d4f5abe0, preserving real task cancellation while containing leaked MCP SDK CancelledError.
fix(exec): guard shell path boundaries #20 semantically integrates exec path-boundary commits 01c7323d and d3382d7e, including SagaSmith fail-closed handling for bare ~1 directory-stack paths.
fix(image): harden provider URL downloads #21 semantically integrates provider-returned image URL hardening from 681edfa6, 4408cde0, cc3dbbe8, d73794bc, and b3d3a3e6, preserving SagaSmith MIME and download boundaries.
fix(web): keep credential URLs away from Jina #22 semantically integrates the Jina credential-privacy sequence 31a71d6 through 5f916bbd and 76f629e9, preventing user-credential forwarding outside the trusted Jina boundary.
fix(slack): validate file downloads against SSRF #23 semantically integrates Slack download SSRF hardening from a4acd839, validating initial and redirected URLs, pinning direct DNS connections, preserving trusted proxy egress, and stripping cross-origin authorization.
fix(memory): prune encoded Dream sessions #28 semantically backports HKUDS/nanobot@791c7fd505e653b87801d858980c1e116f0b6852, pruning base64url-encoded Dream sessions while ignoring legacy and non-Dream session files.
NanoBot upstream history is connected through
053722a2a2722e846d68562519bfbb4bc1b8c393by #10. This issue tracks the remaining updates through the pinned upstream revisionb9e7c7f6fe67253fecc387df49604ae40e4bc6b4as small, ordered, reviewable pull requests.This is a selective semantic integration, not a blanket merge. Each batch must preserve SagaSmith's authoritative MCP boundaries, hosted worker behavior, Local Agent Kit contract, package identity, and Apache-2.0 licensing/third-party notices.
Ordered batches
Per-PR acceptance gate
Current batch
Fix GitStore same-size rewrite detection #15 semantically backports
HKUDS/nanobot@9f5a56f1ec224ca794017d4ab3f5f2d0ad60e4fcso GitStore detects rapid same-size rewrites even when filesystem mtime is preserved.fix(search): bound find_files scans #16 semantically backports
HKUDS/nanobot@649e3958c58bbf12342d2b254f3c40dea4d42f07as the dedicated search-tool batch, preserving SagaSmith's current search schema and Grep/document surface while adding worker-thread cancellation, lexicographic early pagination, and bounded scans.fix(discord): route unauthorized DMs to pairing #17 semantically backports
HKUDS/nanobot@6d406d93c902e209f56f9f0ec0872fcb8abb5aa6, restoring Discord first-contact DM pairing while preserving guild-side prefiltering and SagaSmith principal routing.fix(exec): validate allow patterns per shell segment #18 semantically integrates upstream exec-policy sequence
bbca32fethroughaf582246, validating every top-level shell segment across POSIX, PowerShell, and cmd while deferring E2 path parsing.fix(mcp): preserve real task cancellation #19 semantically integrates the MCP cancellation sequence 86f65587 -> 297a9e59 -> d4f5abe0, preserving real task cancellation while containing leaked MCP SDK CancelledError.
fix(exec): guard shell path boundaries #20 semantically integrates exec path-boundary commits 01c7323d and d3382d7e, including SagaSmith fail-closed handling for bare ~1 directory-stack paths.
fix(image): harden provider URL downloads #21 semantically integrates provider-returned image URL hardening from
681edfa6,4408cde0,cc3dbbe8,d73794bc, andb3d3a3e6, preserving SagaSmith MIME and download boundaries.fix(web): keep credential URLs away from Jina #22 semantically integrates the Jina credential-privacy sequence
31a71d6through5f916bbdand76f629e9, preventing user-credential forwarding outside the trusted Jina boundary.fix(slack): validate file downloads against SSRF #23 semantically integrates Slack download SSRF hardening from
a4acd839, validating initial and redirected URLs, pinning direct DNS connections, preserving trusted proxy egress, and stripping cross-origin authorization.fix(memory): prune encoded Dream sessions #28 semantically backports
HKUDS/nanobot@791c7fd505e653b87801d858980c1e116f0b6852, pruning base64url-encoded Dream sessions while ignoring legacy and non-Dream session files.Completed foundations
Fix GitStore same-size rewrite detection #15 merged the GitStore same-size rewrite detection backport after all six CI checks passed.
Connect imported NanoBot history through the July snapshot #10 connected the imported NanoBot ancestry without changing the product tree.
Include the config package in built wheels #11 restored complete
nanobot/configwheel contents and added installed-wheel verification.Reject oversized file reads before loading content #14 semantically backported
HKUDS/nanobot@cdb2df49827b674fb5a685acc44dc3a8f99329dd, rejecting oversized reads before PDF, Office, image, or text content is loaded.