Skip to content

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 03:19
· 111 commits to main since this release

Changelog

  • 7a15446 build(npm): ship a README in the main package; skip already-published versions
  • c571a26 build: move publish-npm.sh into npm/ and add make npm-publish target
  • aea4e6d build: release pipeline with goreleaser, npm platform packages, and install.sh
  • 30a520d chore(project): events dir is plural (events/), matching other dirs
  • d14a5fc chore(reason): remove TODO.md
  • 2684e1f chore(webui): update dist entry html for the rebuilt assets
  • f1856b8 chore(webui): update dist entry html for the rebuilt assets
  • 9310ed6 core/bus: define core protocol interfaces
  • 9abdfab core/event: add Recipients field for delivery tracking
  • 0d600bd docs(reason): align ToolProvider comment with BuiltinTools (own call-and-answer tools)
  • 1c532f4 docs(reason): clarify BuiltinTools is the worker's own call-and-answer tools
  • 1dc2f06 docs(reason): don't reference future upstream workers from a dependency
  • a4a3140 docs(reason): drop 'conversation' from comments/descriptions
  • 7f4775d docs(reason): drop the 'shell' metaphor from comments
  • 31a7abe docs(reason): fix package/comments after BaseReasonWorker extraction
  • 54410ec docs(reason): fix stale comments after the refactor
  • 43ea7cc docs(reason): relocate and rewrite README/TODO; inline tool-result helpers
  • 96d07e6 docs(reason): replace 'domain-agnostic' with a defensible split
  • 74d5029 docs(reason): treat the three input modes as a spectrum, not a default
  • aaeb149 feat(config): move providers & templates under the shared common dir
  • 05a355f feat(config): subscriptions support source-restricted patterns
  • 6f9dbe4 feat(control): fixed-port control plane with project start + SPA mode context
  • c396b55 feat(control,webui): create a new project from a template and start it
  • 165508d feat(control,webui): template management panel; running detects manual CLI starts
  • a7a62a4 feat(eventbus): multi-worker filter, target_worker_id, deterministic order
  • 09a5b15 feat(llm): support provider.json and additional LLM APIs
  • de9863e feat(project): consolidate sqlite event files under an event/ dir
  • 42e3b17 feat(project): migrate legacy global swarm into a project
  • 4fdad3c feat(project): persisted ports are authoritative — kill any holder
  • 69f4bc2 feat(project): project definition store + project.json CLI
  • 6d6b475 feat(project): reclaim a stale process and check ports on start
  • ebec9fa feat(project): run a project instance with its own bus, ports and data dirs
  • 2021a80 feat(provider): configured models list is authoritative over API discovery
  • ec7f221 feat(providercfg,reason): multi-model providers + runtime LLM provider switching
  • 642f9e1 feat(reason): align handleInput with all three input levels
  • 01f9231 feat(reason): append a completion note after context compaction
  • de2dd76 feat(reason): cap oversized transcript payloads at 20KB
  • 662e149 feat(reason): context builder — transcript projection, compaction, episodes, spawn seeding
  • c27708a feat(reason): extract Compactor as a replaceable compression strategy
  • 92e0ddd feat(reason): meta ops as their own event types; unify responses on request.* + Event.RequestId
  • 2570a32 feat(reason): retire tool.request — tools become their own event types
  • a442980 feat(reason): self-synchronized transcript with edit-buffered Apply
  • f76c172 feat(reason): unify meta operations (compress/rotate) via worker.update
  • e110e2b feat(swarm): launch and supervise unmanaged (external) workers
  • 0c55c4e feat(swarm): print webui url to stdout and open it in the browser
  • 4a5a91a feat(swarm): wire the SQLite event store per project
  • 77311e6 feat(template): JSON project templates; default template auto-uses providers.json
  • a489cd7 feat(transport,webui): support dynamic (:0) port allocation
  • c4c1433 feat(webui): add favicon from the niq logo
  • 319e116 feat(webui): archived workers sort last and show an archived status
  • e5e66b9 feat(webui): archiving a worker suspends it first; restore resumes it
  • 83dc9e6 feat(webui): edit worker subscribe_allow against the bus registry
  • ff34c76 feat(webui): gate oversized event payloads behind a hint
  • 89549b6 feat(webui): launch declared-but-idle external workers from project.json
  • 5279b58 feat(webui): mention popup left-aligned, right check, exclude archived/suspended
  • 04c5b78 feat(webui): query and switch a reason worker's provider over the bus
  • 8879ae3 feat(webui): restart a running project, and a real loading state
  • 32bd183 feat(webui): show current project name under the logo
  • 4b29439 feat(webui): soft-wrap toggle for tool JSON + click-blank to collapse
  • 0597953 feat(webui): start/create no longer redirect — stay on the Projects page
  • f5dab83 feat(webui): syntax-highlight the tool_call / tool_call_result JSON
  • 56899d2 feat(webui): talk/events/workers UI overhaul
  • ee26094 feat(webui): trim the workers list — drop Action and Subscribe columns
  • 04be219 feat(webui): workers managed column, model switcher, allow-list tags
  • 550d978 feat(worker/reason): pass Compactor and BuiltinTools through the shell
  • 1b03606 feat(workerhost,swarm): persisted-authoritative worker recovery
  • 04e9f43 feat(workspace): bound bash tool output at 20KB head+tail
  • 39f372c feat: bus-level source-filtered subscriptions, ReplyRejected, UUIDv7 event ids
  • 381d23e feat: drop the tool name from request.* results; merge results into invocations
  • 0f21c17 feat: flat project layout + archived workers
  • 78e6320 feat: init
  • 3d1df92 feat: template detail panel + per-project dated logs
  • e2354cb feat: worker lifecycle suspend/resume + persistence + WebUI worker view
  • 7b9fb35 fix eventbus: wire EventLog via Engine.OnEvent so Send events reach SSE stream
  • 5e364a8 fix(control): don't respawn a project that is already running
  • 7341ccd fix(control,webui): real running state; Start/Stop/Jump by liveness, not stale ports
  • 5519989 fix(eventbus): don't persist transient streaming deltas
  • 1803446 fix(evtstore): order & paginate by insertion order (rowid/index), not timestamp
  • 1acd828 fix(evtstore,webui): persist request_id; name tool invocations from their type
  • d694d9f fix(httptrans): check scanner.Err() after the SSE read loop
  • 1dc5392 fix(llm): guarantee a tool_call_id on every tool call
  • 54430c6 fix(preset): update default.json to the request.* event convention
  • 6355abe fix(project): stop churning project.json on every start
  • 64a3e9e fix(project): validate persisted ports (1-65535)
  • 00f9536 fix(reason): DefaultConverter text branch keeps intended shape (no payload repeat)
  • d008020 fix(reason): drop tautological parked != nil check on late result
  • 2467717 fix(reason): keep meta tool calls out of the transcript
  • 77fe8c9 fix(reason): precise LLM error policy with event-driven 429 backoff
  • 98e1306 fix(reason): restore tool-name reverse mapping for dotted tool dispatch
  • 9f1470a fix(reason): retry transient provider errors; fix ContextLength retry
  • 2f280e6 fix(reason): route ErrorContextLength compaction through worker.update; rename emitMetaRequest
  • e3062b9 fix(reason,timer,swarm): tool naming, unavailable-tool notice, timer cancel, hiw rename, webui banner
  • e4d5839 fix(swarm): reuse a project's persisted ports so they stop jumping
  • 9639bf6 fix(swarm): use hyphenated default hiw id (default-hiw)
  • 5315ea8 fix(swarm): workspace uses the declared worker id, not a path-derived one
  • 990649c fix(template): clear superseded builtin YAML templates when seeding
  • 069b996 fix(webui): Jump opens the project in a new tab
  • 32e0699 fix(webui): Jump/create/start stay in the current dev origin
  • e8e15d1 fix(webui): apply the wrap toggle to the element too
  • 5eced3644adac743514fef8480488f790eadab80 fix(webui): hide host suspend/resume tool calls from the talk stream
  • 1433539315a371e2874bd57539844b2d0bcf2d42 fix(webui): keep immediate workers fetch for the talk mention dropdown
  • 4cb3eac783e725b82dc941e493d3d818c69d484f fix(webui): keep the Talk header when there are no messages
  • 4cd19058139d8144c00a4a98ab9e963250c4495a fix(webui): keep the talk viewport stable while paging older history
  • 87495ecda9578d66b843e8efc17a7aebd724b99f fix(webui): map the frontend to the request.* event convention
  • 5450687a1c0991fcc860faa893240eb3604ed4de fix(webui): no Start-button flash after starting a project
  • 2abdce6069dd0c23fa28a229f131529abdb09dda fix(webui): no flash when switching to the talk view
  • b42b9cc00183b8b69159bd64f92621dc608be018 fix(webui): project name under logo missing in dev ?project mode
  • fb827e8374d3db7829c8af8790516cb309ee9139 fix(webui): rename the swarm-owned hiw to webui-hiw everywhere
  • 832647966f8ff70da1eaffeedb979f956db9ee88 fix(webui): section dividers span edge-to-edge, content clips at talk divider
  • 90305a3c1992961598ed9a5c2d578222dfe7a694 fix(webui): stop workers polling + SSE on the Projects surface
  • d9c35ddf64effec597c86c6a27c811e09faf64fd fix(webui): talk shows tool events only when a reason worker is a party
  • bf4bdd2f9a51f4363bb2a1851ef44ef1c7f6ad70 fix(webui): target picker keyboard nav, view-settings persistence, scroll + SSE races
  • 2aced375172266b098c5e544d52d69b62cc9dced fix(webui): usePolling must re-run when enabled flips
  • 132dea2ea4daeb04788b01b9b0770ece45db0e25 fix(webui): workers polling doesn't fetch on activation
  • c17ffc90b6b1ee2bf2dd4199d945fae5d7708f2d fix(webui): workers polling hits the project's own address; live project status
  • 244a175e333662946389a4e3fa2c3fe053b60704 fix: Update IdentityRegistry interface to propagate worker type
  • 333a091ba284fa13a951c693bd60e1ad7d21442e fix: add MemoryEventStore for hiw event history
  • 566595c9ef51bd985881a6809e55ff8f11b0a50c fix: add Type field to Identity, fix WebUI workers endpoint
  • 18d5e70ca17ae59b2f0607bdc4d50437d63de8da fix: gate unix-only process-group syscalls behind build tags
  • f66a9ad36ebe8dbe6e2a133e5bfbed6690c30f6a fix: handle duplicate identity registration on restart
  • bc0e0209f4ac0ab2ac36ce6f8f1741dc8de1d606 migrate all workers to WorkerSideChannel
  • 4e4d74e99e513f1de53007e644f65eb75a62782d perf(evtstore): bare timestamp index for all-history pagination
  • 8d9c3e83183f09af2ad867b73544dfa8a32416ca pkg/service/eventbus/transport/inprocess: align with 'ball and arrows' model
  • b4d8c4be7d9e1ac6b5a5476eb89d01d32af1e0ff pkg/service/eventbus: implement event bus engine, transports, and registry API
  • facbc0607cb6098dfc39f82a3c47e587f6f753a8 pkg/service/swarm: migrate to new eventbus
  • 55353a924b18f1fc2f5b6f63759a733aa478d5b9 pkg/worker/reason: migrate to WorkerSideChannel
  • db4e7de76b4da8c96b461175598fa0c203a7ce7b pkg/worker/timer: migrate to WorkerSideChannel (experiment)
  • 078a36bc685478841c56d02c1438575d0064aca1 reason: add worker identity & collaboration guidance to the system prompt
  • c12926987796d99372913a9b51dcd2b5cd31cbf1 reason: clarify transcript docs & naming; update README
  • 015238bde5955197b4cea5edbbe0c674a6cb4fda reason: implement streaming interrupt preservation (TODO 1+2)
  • 081f461d5909b05d0b004ce29497752df8ad1f23 reason: rename built-in tools to DefaultTools / bus-declared capabilities
  • 6caf10015a1d104df7af3f115e77b4fa892f8ff0 reason: route self-tool declarations through the tool provider
  • 057d234d3fcb47b01a576e08fe836ea45de502c1 refactor(build): unify SubscribeAllow — template-first, hardcoded defaults
  • bf523a6dc7f4db54a583c23c724c3aee84242440 refactor(config): JSON-only, drop YAML template support and migration cleanup
  • 468ddd06b748fee4e09813d6c1a6f725b4cdf07a refactor(event): type universal bus protocol events as EventType
  • e54879afc56099adadde92baf3d36e0dcc3b09fb refactor(eventbus): mark transient events at the source instead of filtering by type in the bus
  • da06c002a0c3cf2f81da1f1affdf51c5d16f2d75 refactor(project): config.json is the authoritative worker config
  • 66889087ed736bc9bb4357d1db6dbe38a727ec28 refactor(reason): actionable list_workers serialization error
  • 2b24c5ec74f6ebd3662a8aabdcb7f41e03415702 refactor(reason): capability registry; feat(provider): context window + custom headers; feat(webui): mobile layout
  • 0341dc6fb9dada74e4e62badc0b5de54c081fe4e refactor(reason): converge mechanism scope; compression becomes a worker-owned event convention
  • 59df72f85d82930273aebb11817fd2b3276bb7b4 refactor(reason): decouple tool-call timeout from the timer worker
  • 12d87d1d7dcd4d0656bf5d72c8e8a4fdb0066a86 refactor(reason): discover own tools from a self-directed worker.ready
  • bda883451de7c669643d75a42d192312610f0513 refactor(reason): extract baseworker + transcript/requesttracker subpackages, rename capabilities to extensions
  • 98654c36a1c65bb477393f610200ab5d012bfd07 refactor(reason): extract common reasoning base into pkg/reason
  • 615693dcd4a25000ba940ebe7af7d001d6dd1d98 refactor(reason): extract three-level input handling, consolidate parking, improve naming
  • be6ff51f7b811171dd94ac759fcd61eb799789df refactor(reason): fold transcript subpackage into main package; rename inputs to Patch
  • d926e2c25bc89c84e97c90ecaf78a3c617cdf167 refactor(reason): major reason worker restructure + message layer extraction
  • cbab3b8af25dd831f3806c7672fe22e6a397e5fd refactor(reason): merge compactor.go into compact.go
  • 1ad337cfe0d869f4f043416c5ce85ca7c1cc0d9d refactor(reason): move cloneParams to the end of tools.go
  • 161054f817d05501411e70fbee5ce386ef0ae991 refactor(reason): move llmToolDefs into tools.go
  • 008a07fc8e0feef994646f648ad34d88cd1246d7 refactor(reason): persist provider selection; drop dead compactor/seed seams
  • e7b05db607ab90044bee3ec799ff286ec0f7b1ac refactor(reason): rename budget.go->compact.go, fix toolset/tools test naming
  • fb77e05b0cc6a067b79cc610ff6de055f55c4939 refactor(reason): rename compress built-in to context.compress
  • 2bae60e6c6753a3df0472071a38b519d18ac2084 refactor(reason): rename context.close_episode to context.rotate
  • 8ce28b74e10107aec1190703bea2b423dc80c57c refactor(reason): rename pkg/reason/base.go to worker.go
  • 73675f32292c309422dcf37f6d1232060ee7b3d5 refactor(reason): rename recordUsage to handleBudget
  • feee7cabce6f3d476727ced67c44db500f907238 refactor(reason): rename snapshotMessages to renderTranscriptLocked
  • 6ce74a9887f2a229133c8d124b7253f2b17160ee refactor(reason): split domain-agnostic BaseReasonWorker into pkg/reason
  • c5917474161341ce642290054f30d0dd1ae6565e refactor(reason): split reason() into focused helpers
  • db78b64fd4a1a20abaaf924ceb41115aa4a106b5 refactor(reason): split watch into watch (loop) and process (dispatch)
  • f854ff6589db7a91b00db31d7547f25a3e3cf555 refactor(reason): tool provider interface + private fields
  • 80847c68a09638d6ad07a26a4d4703ce0b8d3480 refactor(reason): unambiguous tool naming via provider__name
  • 81b732aec64fddf625f771411b725385acdf28e5 refactor(reason): when a meta op yields to pending input, drop it cleanly
  • 23b5be8f13fc9986460688d3026844031e3609f5 refactor(swarm): consolidate LLM provider config into provider subpackage
  • 0afc34ce4639bf042a192a59811b4a2bbeb20299 refactor(swarm): worker dir is truth; provider gate; drop legacy migrations
  • 7782be3927960c2428b1a8167dd794150d98e57c refactor(transcript): buffer only input + late result during a meta edit
  • e5646188033ae65aff64557c9b65b985910df5f2 refactor(transcript): name files by ownership
  • e6525cd1688937f4bd2c69851a6d730012c4123e refactor(webui): remove decision.made machinery, converge human decisions into worker.input
  • 19575076716e78b7540754d55eb3bed74cbe83a4 refactor(worker): solidify core tool-serving workers and add reason tests
  • f8d8e76f34741faf8c7f01ce21c845e3963af84d refactor(workerstore): persist worker snapshots as raw text, not base64
  • bd91da93c7c111a5472aa9d02dabda392e91506a refactor: move eventbus out of services — services are worker backends only
  • 77c578282e63406d8e75782effdf1be1e075f78b refactor: move swarm and webui to internal/, simplify HIW to only SendInput
  • 547cd7cded09fb9a6ec2fa82a5c7525d8bbd6903 refactor: normalize layout — workers/services under pkg/, ext keeps only http
  • 6f19de30e2f2113e5e182668afbab802ab3db3a2 refactor: rename pkg/llmprovider to pkg/provider
  • ab8a85b0c9540ff7e1f266d07dcb1255860edcdb refactor: split internal/swarm into control + project packages, drop the legacy swarm mode
  • 97c59fbcd0c1455264a59c99681964496cac9113 rename ToolCallCause → InterruptCause, use typed constants for interruptReason
  • 80af5ec8d91b2dd0bf83dfa53dfcdf47ff16a9c5 restore TODO.md that was accidentally deleted, update to new constant names
  • 9e2f656cd606e745c5ea1d3a7055808b722027ee style(webui): 2s-coalesced streaming; split invocation/result into two blocks
  • e444851c6546c13b9279ea0121b8460cf7b7b01b style(webui): breathing room in worker-detail actions
  • bfb2cdeced08d535920418ea336540613734c5bd style(webui): cap tool_call / tool_call_result height with scroll
  • c05c19b2e649495c34213ce1a4dc3db5ca29827c style(webui): faster, decelerating logo spring-back
  • 52f53b41c84b534652dbb91fbe1f7c365a05397e style(webui): no hover background on the subscribe allow edit/close toggle
  • 67b75114d0d5e9913630b5680944887e5a8ed8a1 style(webui): project name as plain text under the logo
  • 5b742cd8ce62079ddf602098d2a0cf60a9bb7a23 style(webui): project name — remove italic
  • 745b0f691151fdca194970abef32b187a01362bb style(webui): pull the logo flush to the text's left edge
  • 58c28172d06f7c1e42333b58ad118be8a057f8df style(webui): refresh sidebar logo typography and add divider
  • f76a5bb9dab2fc8b1afc4cb6e1495059ce45dce6 style(webui): render subscribe_allow one per line in WorkerDetail
  • 118f803ff5a27e4b1dc60e0bad24e17f00e8366b style(webui): show subscribe_allow in the editor layout, read-only
  • f19da34b4ad9894aa75b34a4d197db7cc70bb629 style(webui): source dropdown in SubscribeAllow editor, no read-only placeholders
  • ad85a76b600bf0a1ecd2285c832c160d082b8a91 style(webui): swap action descriptions above their buttons in WorkerDetail
  • 66474648e672a0f59cc083c683aff105f875487d style(webui): swap favicon to the reverse niq logo
  • 0d6e1f487845963db48635aadb15847d32a9c8d7 test(reason): consolidate worker/reason tests into a single file
  • 1fcafb693a1aeb259e27d59e9500f309873c5509 test(reason): move handler tests to process_test, watch_test keeps integration
  • 4f3bfe7c30579e2cf42756d05cd4cd3b081d1987 test(reason): rename message_test to process_test, drop duplicated EventPattern test
  • faca34a5e0faf07a110126a1ed5a3c4e8ac68819 test(reason): tidy helpers_test.go names and docs
  • bc34230cb510bdbf1a0b17e2237bf3fced5e9966 test(transcript): fix unconditionally-terminated loop in cut-alignment test
  • 1f2f467eeecd5006202908a9806cbdbc4c2d0de5 webui tweaks: logo font/bold, detail block spacing, dev proxy→9527, logo assets
  • 1877da7714c5ea6644838a3f52b84298d3f62615 webui: clip logo at divider, unify divider width, drop error from tool title
  • 19b2b3e7fff1e2d3c67c5bd06e5cfa5900faca88 webui: polish talk/event views and fix streaming trace loss
  • 10d11e90db449c398c2b53fbc4fc555c5d1436b9 webui: rebuild talk timeline via watermark + history pagination