diff --git a/README.md b/README.md index dbc3139..42672b0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ Substrate is a local-first room where humans, agents, and other tools take turns There are no private agent channels, provider-specific roles, hosted accounts, or conversation database. A room is an append-only directory of Markdown entries. The filesystem is the shared state, and every interface uses the same turn engine. +One turn engine now backs five interfaces: TUI, MCP, CLI, HTTP proxy, and +unattended agents. Independent processes share the same append-only room state, +with filesystem locks and recovery records covering concurrent writes. + ```text humans ─┐ agents ─┼── TUI / MCP / CLI / HTTP proxy ──> .substrate/ ──> one shared room @@ -519,3 +523,7 @@ go test -race ./... CI tests Linux, macOS, and Windows, plus the race detector. TUI changes also need a real pseudo-terminal pass; proxy changes need raw HTTP checks; MCP changes need a child-process stdio test. Green unit tests are necessary, not sufficient, at those boundaries. Start with the short product contract in [docs/notes/README.md](docs/notes/README.md). Package boundaries and open design work are in [docs/architecture.md](docs/architecture.md). + +Related: [alignment.farm](https://alignment.farm) | +[construct](https://github.com/alignment-farm/construct) | +[materialize](https://github.com/alignment-farm/materialize) diff --git a/cmd/substrate-mcp/integration_test.go b/cmd/substrate-mcp/integration_test.go index 7072f68..d7272b1 100644 --- a/cmd/substrate-mcp/integration_test.go +++ b/cmd/substrate-mcp/integration_test.go @@ -9,8 +9,8 @@ import ( "time" "github.com/modelcontextprotocol/go-sdk/mcp" - "github.com/stack-research/substrate/internal/mcpserver" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/mcpserver" + "github.com/alignment-farm/substrate/internal/substrate" ) func TestMCPHelperProcess(t *testing.T) { diff --git a/cmd/substrate-mcp/main.go b/cmd/substrate-mcp/main.go index 1fcf057..593ecc7 100644 --- a/cmd/substrate-mcp/main.go +++ b/cmd/substrate-mcp/main.go @@ -12,10 +12,10 @@ import ( "strings" "github.com/modelcontextprotocol/go-sdk/mcp" - "github.com/stack-research/substrate/internal/lifecycle" - "github.com/stack-research/substrate/internal/mcpserver" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/version" + "github.com/alignment-farm/substrate/internal/lifecycle" + "github.com/alignment-farm/substrate/internal/mcpserver" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/version" ) type pathsFlag []string diff --git a/cmd/substrate/main.go b/cmd/substrate/main.go index e957fdc..96d0586 100644 --- a/cmd/substrate/main.go +++ b/cmd/substrate/main.go @@ -5,8 +5,8 @@ import ( "fmt" "os" - "github.com/stack-research/substrate/internal/cli" - "github.com/stack-research/substrate/internal/lifecycle" + "github.com/alignment-farm/substrate/internal/cli" + "github.com/alignment-farm/substrate/internal/lifecycle" ) func main() { diff --git a/go.mod b/go.mod index 9fb5fa2..53aacec 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/stack-research/substrate +module github.com/alignment-farm/substrate go 1.26.0 diff --git a/internal/cli/root.go b/internal/cli/root.go index 53a91f2..e5d7f21 100644 --- a/internal/cli/root.go +++ b/internal/cli/root.go @@ -20,11 +20,11 @@ import ( "time" "github.com/spf13/cobra" - "github.com/stack-research/substrate/internal/proxy" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/ui" - "github.com/stack-research/substrate/internal/version" - "github.com/stack-research/substrate/internal/watcher" + "github.com/alignment-farm/substrate/internal/proxy" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/ui" + "github.com/alignment-farm/substrate/internal/version" + "github.com/alignment-farm/substrate/internal/watcher" ) type App struct { diff --git a/internal/cli/root_test.go b/internal/cli/root_test.go index 9464b24..f72201a 100644 --- a/internal/cli/root_test.go +++ b/internal/cli/root_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) func runCLI(t *testing.T, input string, args ...string) (string, error) { diff --git a/internal/mcpserver/service.go b/internal/mcpserver/service.go index 2f6ceed..5073042 100644 --- a/internal/mcpserver/service.go +++ b/internal/mcpserver/service.go @@ -13,8 +13,8 @@ import ( "github.com/fsnotify/fsnotify" "github.com/modelcontextprotocol/go-sdk/mcp" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/version" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/version" ) const ( diff --git a/internal/mcpserver/service_test.go b/internal/mcpserver/service_test.go index f1b85a2..802b28b 100644 --- a/internal/mcpserver/service_test.go +++ b/internal/mcpserver/service_test.go @@ -9,8 +9,8 @@ import ( "time" "github.com/modelcontextprotocol/go-sdk/mcp" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/version" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/version" ) func setupSpace(t *testing.T) (*substrate.Space, substrate.Name) { diff --git a/internal/mcpserver/spaces.go b/internal/mcpserver/spaces.go index 2c2eea2..df65f8d 100644 --- a/internal/mcpserver/spaces.go +++ b/internal/mcpserver/spaces.go @@ -6,7 +6,7 @@ import ( "sort" "strings" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) type SpaceSource struct { diff --git a/internal/proxy/proxy.go b/internal/proxy/proxy.go index 63649ee..a074f50 100644 --- a/internal/proxy/proxy.go +++ b/internal/proxy/proxy.go @@ -15,7 +15,7 @@ import ( "strconv" "strings" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) type Participant struct { diff --git a/internal/proxy/proxy_test.go b/internal/proxy/proxy_test.go index a28cf23..b5fe626 100644 --- a/internal/proxy/proxy_test.go +++ b/internal/proxy/proxy_test.go @@ -10,7 +10,7 @@ import ( "strings" "testing" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) func proxySpace(t *testing.T) (*substrate.Space, substrate.Name) { diff --git a/internal/ui/model.go b/internal/ui/model.go index 29bed23..c49467d 100644 --- a/internal/ui/model.go +++ b/internal/ui/model.go @@ -12,8 +12,8 @@ import ( "charm.land/bubbles/v2/viewport" tea "charm.land/bubbletea/v2" "github.com/fsnotify/fsnotify" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/watcher" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/watcher" ) type focus int diff --git a/internal/ui/model_test.go b/internal/ui/model_test.go index e5c685c..a028f4f 100644 --- a/internal/ui/model_test.go +++ b/internal/ui/model_test.go @@ -9,8 +9,8 @@ import ( "time" tea "charm.land/bubbletea/v2" - "github.com/stack-research/substrate/internal/substrate" - "github.com/stack-research/substrate/internal/watcher" + "github.com/alignment-farm/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/watcher" ) func TestThemePaletteIsMonochrome(t *testing.T) { diff --git a/internal/ui/render.go b/internal/ui/render.go index dc5fa93..959d0c9 100644 --- a/internal/ui/render.go +++ b/internal/ui/render.go @@ -7,7 +7,7 @@ import ( "charm.land/glamour/v2" "charm.land/lipgloss/v2" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) func (m *Model) render() string { diff --git a/internal/watcher/watcher.go b/internal/watcher/watcher.go index 2799993..e79bfc4 100644 --- a/internal/watcher/watcher.go +++ b/internal/watcher/watcher.go @@ -14,7 +14,7 @@ import ( "time" "github.com/fsnotify/fsnotify" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) func Watch(ctx context.Context, space *substrate.Space, thread substrate.Name, forName *substrate.Name, command string, out, errOut io.Writer) error { diff --git a/internal/watcher/watcher_test.go b/internal/watcher/watcher_test.go index 6d23cb1..b612d69 100644 --- a/internal/watcher/watcher_test.go +++ b/internal/watcher/watcher_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/stack-research/substrate/internal/substrate" + "github.com/alignment-farm/substrate/internal/substrate" ) type lockedBuffer struct {