npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
3c6cd9c3f0
feat(desktop): add persona event kind with client publish/read/retain
...
Implements the foundation for personas-as-events architecture:
- Define KIND_PERSONA (30175) as NIP-33 parameterized replaceable,
keyed by (pubkey, kind, d_tag) where d_tag is the plaintext persona
slug. Relay allowlists the kind under UsersWrite scope and marks it
global-only (never channel-scoped).
- Client-side serialization: PersonaRecord ↔ kind:30175 event with
JSON content body. Publish and fetch functions via relay HTTP API.
- SQLite retention store: local durable storage for persona events
enabling offline boot. INSERT OR REPLACE on (kind, pubkey, d_tag)
for NIP-33 latest-wins semantics. Pending-sync queue for deferred
relay publish.
- Migration: on first launch after upgrade, non-builtin personas from
personas.json are serialized as events and written to the retention
store with pending_sync=1. Idempotent via sentinel file. Runs after
the packs→teams migration.
The existing load_personas path is unchanged — retention-based loading
is wired up as a helper for PR 2 (instantiation flow) to activate.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-06-10 00:17:51 -04:00
tlongwell-block
fe14daa5d6
Fix post-compact handoff context for OpenAI providers ( #931 )
...
Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
2026-06-09 21:56:54 -04:00
Wes
877048d68f
fix: persona is source of truth at spawn + thread-depth conventions ( #930 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-09 23:58:45 +00:00
Will Pfleger
9a98e60fc2
feat: provider/model selection for personas and runtime-aware env injection ( #794 )
2026-06-09 20:42:27 +00:00
Wes
c38301bca5
fix(dm): keep hidden DMs hidden across refetch via relay-signed visibility snapshot (NIP-DV) ( #857 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
2026-06-09 10:23:57 -07:00
Wes
7dd5b34536
Add channel visibility & ephemeral TTL controls to manage sidebar ( #911 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-09 09:01:10 -07:00
tlongwell-block
421593062f
mesh: Rust-owned coordinator — fix saved-agent reconnect flakiness + DRY the start path ( #879 )
...
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-06-09 10:59:28 -04:00
tlongwell-block
7b854971c6
feat(acp): pass slash commands through to ACP connectors ( #919 )
...
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
2026-06-09 10:02:21 -04:00
Will Pfleger
bfafdd46b2
fix(sdk): resolve multi-word display names and add NIP-27 nostr:npub mention extraction ( #905 )
...
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-08 19:05:37 -04:00
tlongwell-block
732e23dd5c
Renew TTL when unarchiving ephemeral channels ( #902 )
...
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-06-08 12:43:39 -04:00
Wes
4ec7f8125e
sprout-agent: make Databricks defaults env-only ( #868 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-08 09:17:30 -07:00
Will Pfleger
0a6067ca1b
refactor: rename ACP "provider" to "runtime" across the codebase ( #783 )
2026-06-07 14:40:59 -04:00
Will Pfleger
5d7c748969
fix(presence): clear on disconnect, fix heartbeat/TTL, drop broken REST path ( #877 )
2026-06-05 13:28:00 -07:00
Will Pfleger
ef98ae942a
fix(cli): publish ephemeral events over WebSocket via sprout-ws-client ( #876 )
2026-06-05 16:26:30 -04:00
Will Pfleger
2f50011bdd
docs(sprout-acp): add communication discipline rules to base prompt + deprecate --mention flag ( #883 )
2026-06-05 15:52:05 -04:00
Will Pfleger
7129cd6f23
feat(cli): add emoji export and import subcommands ( #882 )
2026-06-05 15:33:31 -04:00
Will Pfleger
031152221b
fix(relay): wire custom filter fields through HTTP bridge ( #864 )
2026-06-05 12:36:22 -04:00
Will Pfleger
f1c672fea5
chore: deprecate sprout-mcp — fill CLI gaps, remove crate and all references ( #850 )
2026-06-05 12:31:52 -04:00
tlongwell-block
b295f51c90
fix(agent): gate handoff on provider token usage, not byte estimate ( #821 )
...
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-06-05 11:52:50 -04:00
tlongwell-block
4ead7de463
feat(acp): default SPROUT_ACP_MEMORY to on ( #854 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-06-04 15:17:28 -04:00
Will Pfleger
3b78dc5690
feat(mobile+desktop): two-tier Slack-style app icon badge ( #802 )
2026-06-03 18:16:49 -07:00
tlongwell-block
33cfc85293
Mesh-LLM v1: relay-gated direct-iroh inference between users (WAN) ( #822 )
...
Signed-off-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Max <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-06-03 10:49:09 -04:00
Will Pfleger
56c504a4c7
feat: code block rendering, syntax highlighting, and compose fixes ( #803 )
2026-06-02 14:43:08 -07:00
Wes
2349421304
feat: custom emoji — user-owned NIP-30 sets with a client-side union ( #816 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-06-02 14:19:07 -07:00
tlongwell-block
ede8ddb425
Sprout × mesh-llm: in-process mesh node (serve/consume) + relay admission ( #798 )
2026-06-02 10:28:20 -04:00
Wes
2b052eb465
feat(media): support arbitrary file types with download cards ( #810 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-01 12:57:04 -07:00
Will Pfleger
2a03851527
refactor: consolidate infra management into justfile + add mobile-dev ( #797 )
2026-05-29 18:26:24 -04:00
Will Pfleger
f34a21d32f
feat(sprout-agent): load AGENTS.md and SKILL.md into system prompt ( #762 )
2026-05-29 14:44:33 -04:00
tlongwell-block
61297ac80a
fix(agent): keep parallel tool-result messages contiguous on OpenAI Chat (Databricks image fix) ( #770 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-28 15:25:51 -04:00
Will Pfleger
b13db17faf
feat(desktop): two-layer agent prompts + dynamic AGENTS.md + MCP gating + harness-agnostic skill path ( #584 )
...
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-05-26 17:46:30 -04:00
Wes
7ac0466e12
fix: agent management UI fixes (permissions, parallelism, form validation) ( #750 )
2026-05-26 13:39:49 -07:00
tlongwell-block
6d50090c01
feat(cli): add channels search for human-readable channel lookup ( #712 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-26 11:41:49 -04:00
renovate[bot]
efa93c4383
chore(deps): update rust crate sqlx to 0.9 ( #740 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Will Pfleger <wpfleger@block.xyz >
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-05-25 21:32:34 +00:00
tlongwell-block
90192d8d48
chore: remove verified dead code ( #745 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-25 08:12:02 -07:00
tlongwell-block
86f4c5d9a9
docs: fix stale claims, remove counts, purge LiveKit references ( #742 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-24 13:09:34 -04:00
tlongwell-block
79399d9b8e
feat: NIP-IA identity archival (relay backend + desktop) ( #733 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-23 12:03:38 -04:00
renovate[bot]
4278eb5202
fix(deps): update rust crate similar to v3 ( #690 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 03:19:20 +00:00
renovate[bot]
0de910f14d
fix(deps): update rust crate toml to v1 ( #691 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 21:45:59 -04:00
tlongwell-block
2a8b765c45
feat(notes): add --latest to notes get for ambiguous slugs ( #730 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-22 21:16:48 -04:00
Will Pfleger
a65b7fc06f
fix(deps): migrate nostr crate from 0.36 to 0.44 ( #708 )
2026-05-22 17:17:11 -04:00
tlongwell-block
8e26836015
Allow owners to read agent memories ( #727 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Max (sprout agent) <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-05-22 16:52:02 -04:00
tlongwell-block
8bc94413eb
feat(relay/git): git on Sprout, S3-backed ( #726 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@users.noreply.sprout >
Co-authored-by: Sami <sami@users.noreply.sprout >
Co-authored-by: Quinn <quinn@users.noreply.sprout >
Co-authored-by: Mari <95cae996907d7cab9f5dbf43c0f53edeac6ab0b032a6feae4abfd784e467b3f5@users.noreply.sprout >
Co-authored-by: Eva <eva@users.noreply.sprout >
Co-authored-by: Tyler Longwell <tyler@block.xyz >
2026-05-22 15:05:07 -04:00
tlongwell-block
7b33c47eb4
fix(sprout-agent): retry on pre-response transport errors ( #700 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-22 10:35:39 -04:00
Will Pfleger
6dcb04bcd9
Fix CLI output normalization and wrong Nostr kinds (MCP parity) ( #612 )
2026-05-22 10:32:20 -04:00
tlongwell-block
504cfea20d
feat: sprout notes NIP-23 long-form CLI + relay a-tag deletion ( #719 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Max (sprout agent) <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Quinn (sprout agent) <96f056ad5f2305c8ddf637dc65d048aa4c12d7daeb8867690e34fca46b0ef64c@sprout-oss.stage.blox.sqprod.co >
2026-05-21 22:30:21 -04:00
Will Pfleger
d4f55cee3c
fix(deps): upgrade getrandom to 0.4 with fill() rename ( #704 )
2026-05-21 17:40:18 -04:00
tlongwell-block
962dd7dced
feat(sprout-agent): auto-fallback to Databricks OAuth ( #699 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-21 13:05:58 -04:00
tlongwell-block
fa9e26fa5c
feat(sprout-agent): Databricks provider with OAuth 2.0 PKCE auth ( #698 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-21 12:08:24 -04:00
renovate[bot]
0dd9a05948
fix(deps): update rust crate sha2 to 0.11 ( #665 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 22:54:25 +00:00
Will Pfleger
c8f99bbc31
fix: surface swallowed errors across crates and emit turn failures to activity log ( #628 )
2026-05-20 14:55:20 -04:00