Will Pfleger
7b3a192102
style: apply cargo fmt to e2e_env_flow.rs
2026-06-08 11:31:51 -04:00
Will Pfleger
1872e406f5
fix: round-trip provider field through persona dialog state
...
- Add provider field to ParsedPersonaPreview Rust struct and thread it
through parse_png_persona, parse_json_persona, parse_md_persona, and
parse_zip_pack (md and pack set it to None; JSON reads llmProvider key)
- Add llmProvider key support in extract_sprout_fields and encode_persona_json
so exported persona cards carry the LLM inference provider
- Update export_persona_to_json to include provider in the serialized card
- Update all encode_persona_json call sites (tests + commands) for new param
TypeScript side was already correct in this branch:
- RawParsedPersonaPreview and ParsedPersonaPreview already had provider field
- parsePersonaFiles mapping already passed provider through
- personaDialogState.ts already threaded provider in edit/duplicate/import
- personaDialogState.test.mjs already had provider round-trip tests
All 573 JS tests pass. Rust build clean (no new warnings).
2026-06-08 11:31:51 -04:00
Will Pfleger
7cf61d55f9
feat: normalized config schema with PersonaRecord.provider and SPROUT_AGENT_MODEL
...
sprout-agent personas all failed because the desktop never injected
SPROUT_AGENT_PROVIDER or model env vars at spawn time, and the goose
config fallback only understood the old flat format. Extract goose
config compat into an isolated submodule, add support for the newer
active_provider + nested providers format, and wire a normalized
config schema so Sprout injects the right env vars for any runtime.
Key changes:
- PersonaRecord.provider captures the LLM provider independently
- SPROUT_AGENT_MODEL works as a universal model fallback
- provider_env_var and model_env_var always injected at spawn time
- Pack import now stores resolved env vars (was always empty)
- runtime_env_vars() emits runtime-appropriate vars (SPROUT_AGENT_*
vs GOOSE_*)
2026-06-08 11:31:51 -04:00
Will Pfleger and GitHub
0a6067ca1b
refactor: rename ACP "provider" to "runtime" across the codebase ( #783 )
2026-06-07 14:40:59 -04:00
Will Pfleger and GitHub
5d7c748969
fix(presence): clear on disconnect, fix heartbeat/TTL, drop broken REST path ( #877 )
2026-06-05 13:28:00 -07:00
Will Pfleger and GitHub
ef98ae942a
fix(cli): publish ephemeral events over WebSocket via sprout-ws-client ( #876 )
2026-06-05 16:26:30 -04:00
Will Pfleger and GitHub
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 and GitHub
7129cd6f23
feat(cli): add emoji export and import subcommands ( #882 )
2026-06-05 15:33:31 -04:00
Will Pfleger and GitHub
031152221b
fix(relay): wire custom filter fields through HTTP bridge ( #864 )
2026-06-05 12:36:22 -04:00
Will Pfleger and GitHub
f1c672fea5
chore: deprecate sprout-mcp — fill CLI gaps, remove crate and all references ( #850 )
2026-06-05 12:31:52 -04:00
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 and GitHub
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 and GitHub
3b78dc5690
feat(mobile+desktop): two-tier Slack-style app icon badge ( #802 )
2026-06-03 18:16:49 -07:00
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 and GitHub
56c504a4c7
feat: code block rendering, syntax highlighting, and compose fixes ( #803 )
2026-06-02 14:43:08 -07:00
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 and GitHub
ede8ddb425
Sprout × mesh-llm: in-process mesh node (serve/consume) + relay admission ( #798 )
2026-06-02 10:28:20 -04:00
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 and GitHub
2a03851527
refactor: consolidate infra management into justfile + add mobile-dev ( #797 )
2026-05-29 18:26:24 -04:00
Will Pfleger and GitHub
f34a21d32f
feat(sprout-agent): load AGENTS.md and SKILL.md into system prompt ( #762 )
2026-05-29 14:44:33 -04:00
tlongwell-block and GitHub
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 and GitHub
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 and GitHub
7ac0466e12
fix: agent management UI fixes (permissions, parallelism, form validation) ( #750 )
2026-05-26 13:39:49 -07:00
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
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 and GitHub
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 and GitHub
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 and GitHub
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
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
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 and GitHub
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 and GitHub
a65b7fc06f
fix(deps): migrate nostr crate from 0.36 to 0.44 ( #708 )
2026-05-22 17:17:11 -04:00
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
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
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 and GitHub
6dcb04bcd9
Fix CLI output normalization and wrong Nostr kinds (MCP parity) ( #612 )
2026-05-22 10:32:20 -04:00
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 and GitHub
d4f55cee3c
fix(deps): upgrade getrandom to 0.4 with fill() rename ( #704 )
2026-05-21 17:40:18 -04:00
tlongwell-block and GitHub
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
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
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 and GitHub
c8f99bbc31
fix: surface swallowed errors across crates and emit turn failures to activity log ( #628 )
2026-05-20 14:55:20 -04:00
c9dd97ba1a
feat(cli/mem): add mem patch, mem hash, and reject empty-stdin in mem set ( #627 )
...
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-20 14:51:30 -04:00
23c8fa72c7
Add relay support for NIP-51 lists ( #616 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
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-20 13:59:22 -04:00
2a69f285e7
cli(mem): clarify 'no memories' wording to note core is excluded ( #622 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn <dawn@sprout-agents.local >
2026-05-20 14:10:39 +00:00
c0c9cf9271
cli(messages): allow --content - to read body from stdin ( #624 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-20 02:38:17 +00:00
tlongwell-block and GitHub
24520aa2b1
NIP-AE: agent engrams (kind:30174) — core memory injection + sprout mem CLI ( #593 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-19 13:16:37 -04:00
tlongwell-block and GitHub
6e1418e571
feat(huddle): fix concurrent-speaker mixing + jitter buffer + protocol v2 (up to 10 peers) ( #609 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-18 16:34:52 -04:00
tlongwell-block and GitHub
70cb53e2c7
Add Sprig all-in-one agent binary ( #605 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-17 13:31:58 -04:00
tlongwell-block and GitHub
e4e9923799
feat(agent): add OpenAI Responses API with auto endpoint detection ( #604 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-16 21:23:33 -04:00