Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ GRAYCODE_DAEMON_API_KEY=
# The following are NOT read by graycode-cli — setting them has no effect:
# GRAYCODE_DAEMON_PORT / GRAYCODE_DAEMON_HOST — daemon binds 127.0.0.1:4590;
# override with the --host / --port flags (see `graycode daemon start --help`)
# EYRIE_API_KEY / EYRIE_BASE_URL, HARRIER_API_KEY / HARRIER_ADDR —
# GRAYCODE_ROUTER_API_KEY / GRAYCODE_ROUTER_BASE_URL, HARRIER_API_KEY / HARRIER_ADDR —
# consumed by sibling services, not by this binary
# See docs/user-guide/05-configuration.md for the full precedence chain.
32 changes: 16 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ env:
# Go's reference is explicit that a committed go.work "may cause a continuous
# integration (CI) system to select and thus test the wrong versions of a
# module's dependencies" and that "CI systems should generally not be allowed to
# use the go.work file". Because ./.github/actions/checkout-eyrie clones the
# use the go.work file". Because ./.github/actions/checkout-graycode-router clones the
# siblings at branch HEAD into the workspace parent, workspace mode would silently
# hide version skew (e.g. a shared pin that no longer matches).
# The `module` job opts back in (GOWORK: "auto") since `go work sync` and the
Expand Down Expand Up @@ -77,10 +77,10 @@ jobs:
run: bash ./scripts/check-ecosystem-boundaries.sh
- name: internal layer boundary guard
run: bash ./scripts/check-internal-layer-imports.sh
- name: eyrie client boundary guard
run: bash ./scripts/check-eyrie-client-imports.sh
- name: eyrie engine facade boundary guard
run: bash ./scripts/check-eyrie-engine-boundary.sh
- name: graycode-router client boundary guard
run: bash ./scripts/check-graycode-router-client-imports.sh
- name: graycode-router engine facade boundary guard
run: bash ./scripts/check-graycode-router-engine-boundary.sh

# -------------------------------------------------------------------------
# 2. Module hygiene — tidy, verify Graycode plus the sibling Go modules via go.work.
Expand All @@ -98,7 +98,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref == 'feat/ecosystem-wiring-pr' && 'feat/ecosystem-wiring' || github.head_ref || github.ref_name }}
- name: Generate ecosystem workspace
Expand Down Expand Up @@ -149,7 +149,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand All @@ -172,7 +172,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand All @@ -191,7 +191,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand All @@ -216,7 +216,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down Expand Up @@ -245,7 +245,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down Expand Up @@ -315,7 +315,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down Expand Up @@ -423,7 +423,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
Expand Down Expand Up @@ -481,7 +481,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down Expand Up @@ -526,7 +526,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand All @@ -553,7 +553,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/compatibility-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.head_ref || github.ref_name }}
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
fetch-depth: 0 # goreleaser needs full history for changelog

# Releases build against the sibling repos resolved via the workspace go.work.
- uses: ./.github/actions/checkout-eyrie
- uses: ./.github/actions/checkout-graycode-router
with:
ref: ${{ github.ref_name }}

Expand Down
4 changes: 2 additions & 2 deletions .shared-templates/scripts/check-ecosystem-boundaries.sh.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"

# =============================================================================
# VARIANT 1 — Support engine (eyrie, harrier, shrike, swift, kestrel, merlin).
# VARIANT 1 — Support engine (graycode-router, harrier, shrike, swift, kestrel, merlin).
# Engines are peers: they may depend on falcon,
# but never on graycode/internal/* or another engine.
# =============================================================================
Expand Down Expand Up @@ -81,7 +81,7 @@ echo "ecosystem boundary guard passed"
# only — never on a support engine directly, and never on graycode/internal.
# =============================================================================
#
# FORBIDDEN_ENGINES='github\.com/GrayCodeAI/(eyrie|harrier|shrike|swift|kestrel|merlin)(/|")'
# FORBIDDEN_ENGINES='github\.com/GrayCodeAI/(graycode-router|harrier|shrike|swift|kestrel|merlin)(/|")'
# FORBIDDEN_INTERNAL='github\.com/GrayCodeAI/graycode-cli/internal'
#
# (same rg/grep + report pattern as Variant 1, naming "SDKs/skills must go
Expand Down
4 changes: 2 additions & 2 deletions .shared-templates/workflows/go-release.yml.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ jobs:
fetch-depth: 0 # goreleaser needs full history for changelog

# Only needed if this repo has local workspace dependencies on other
# graycode-eco repos at build time (graycode itself clones eyrie this way via
# ./.github/actions/checkout-eyrie). Omit for repos with none.
# graycode-eco repos at build time (graycode itself clones graycode-router this way via
# ./.github/actions/checkout-graycode-router). Omit for repos with none.

- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
Expand Down
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ alwaysApply: false
# Extending graycode

graycode is an open-source code intelligence platform. It lives in the `graycode-eco`
workspace alongside the ecosystem repos that power it (`eyrie`,
workspace alongside the ecosystem repos that power it (`graycode-router`,
`shrike`, `harrier`, `swift`, `kestrel`, `merlin`). This document describes how to extend
graycode with custom tools, skills, hooks, and integrations.

Expand Down Expand Up @@ -192,8 +192,8 @@ Legacy `graycode/shared/types` has been removed. Cross-repo severity and finding
### Architecture note: provider ownership

Implement provider protocols, adapters, catalog metadata, credential mappings, and
provider contract tests in `../graycode-router` (the eyrie engine's repo) first. Graycode consumes providers only
through Eyrie's stable engine facade; Graycode changes should be limited to host UX
provider contract tests in `../graycode-router` (the graycode-router engine's repo) first. Graycode consumes providers only
through GraycodeRouter's stable engine facade; Graycode changes should be limited to host UX
and facade integration. Concentrate AI is a pay-as-you-go gateway implemented
with its native Responses API (`/v1/responses`) under the
`concentrate-payg` deployment.
Expand Down Expand Up @@ -245,7 +245,7 @@ This project is indexed by GitNexus as **graycode** (97743 symbols, 322940 relat

### Workspace workflow (sibling repos)

graycode depends on ecosystem repos (`eyrie`, etc.) as independent sibling repos in the `graycode-eco` workspace. Graycode's `go.work` lists them as `../<repo>`, so local changes in any sibling are automatically picked up by graycode. Each sibling is its own git repo, versioned and released independently.
graycode depends on ecosystem repos (`graycode-router`, etc.) as independent sibling repos in the `graycode-eco` workspace. Graycode's `go.work` lists them as `../<repo>`, so local changes in any sibling are automatically picked up by graycode. Each sibling is its own git repo, versioned and released independently.

1. Edit + test in `../<repo>` — run its tests, run `make test` in graycode
2. Push from the sibling: `git push origin <branch>`
Expand Down
14 changes: 7 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.2.0] — 2026-07-13

### Changed
- **Graycode/Eyrie production boundary completed**: Graycode owns the product face,
sessions, tools, permissions, and public schemas while Eyrie v0.2.1 owns
- **Graycode/GraycodeRouter production boundary completed**: Graycode owns the product face,
sessions, tools, permissions, and public schemas while GraycodeRouter v0.2.1 owns
credentials, catalog resolution, provider transport, resilience, and usage
telemetry behind the stable `eyrie/engine` facade.
telemetry behind the stable `graycode-router/engine` facade.
- **Provider routing and usage attribution hardened**: resolved route changes,
continuation segments, and terminal usage are propagated without duplicate
accounting, and production Eyrie calls use exactly one resilience layer.
accounting, and production GraycodeRouter calls use exactly one resilience layer.
- **Daemon conversations are durable**: JSON and SSE chat requests create or
resume persisted sessions, expose stable session IDs, preserve metadata, and
distinguish invalid, missing, and corrupt state.
Expand All @@ -42,8 +42,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **`--permission-mode` CLI flag removed**; `--dangerously-skip-permissions` unchanged (now maps to the Autonomous tier). New `--dry-run` flag added as an unconditional kill switch (deny every tool call, regardless of tier or spec stage) — replaces `dontAsk`'s hard-lockout role.
- **Version re-baselined to `0.1.0`** across `cmd/graycode/main.go`, `cmd/daemon.go`,
`flake.nix`, `.github/workflows/release.yml`, and the `update`/daemon test suites, aligning graycode
with the rest of the GrayCodeAI ecosystem (`eyrie`, `shrike`, `harrier`, `kestrel`, `merlin`).
- **Architecture boundary hardening**: Graycode now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `eyrie/client` usage restricted to internal adapters and guarded in CI.
with the rest of the GrayCodeAI ecosystem (`graycode-router`, `shrike`, `harrier`, `kestrel`, `merlin`).
- **Architecture boundary hardening**: Graycode now owns runtime request/response DTOs, transport config/provider seams, and review/verification product-boundary contracts, with `graycode-router/client` usage restricted to internal adapters and guarded in CI.
- **`shared/types` removed**: Graycode no longer ships the old shared type path, and local boundary checks now block any attempt to reintroduce it.

### Added
Expand Down Expand Up @@ -231,5 +231,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Project scaffold with cobra CLI and Bubbletea TUI
- Interactive chat REPL with textarea input, spinner, lipgloss styling
- eyrie wired as LLM provider dependency
- graycode-router wired as LLM provider dependency
- GitHub Actions CI
12 changes: 6 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ GORELEASER := $(GOBIN_DIR)/goreleaser
# ---------------------------------------------------------------------------
# Phony declarations (alphabetical).
# ---------------------------------------------------------------------------
.PHONY: all bench boundaries build check-replace ci clean contracts-guard ecosystem-guard eyrie-client-guard eyrie-engine-guard manifest-guard peer-guard internal-layers-guard package-boundaries-guard release-parity cover cover-new fmt help install lint lint-fix \
.PHONY: all bench boundaries build check-replace ci clean contracts-guard ecosystem-guard graycode-router-client-guard graycode-router-engine-guard manifest-guard peer-guard internal-layers-guard package-boundaries-guard release-parity cover cover-new fmt help install lint lint-fix \
release security setup smoke path sync test test-10x test-live test-new test-race tidy version vet api-docs api-validate workspace

check-replace: ## Fail if go.mod has local replace directives (run before tagging)
Expand Down Expand Up @@ -118,11 +118,11 @@ contracts-guard: ## Fail on any legacy imports of removed graycode/shared/types.
ecosystem-guard: ## Fail if external ecosystem repos import graycode/internal or removed graycode/shared/types.
bash ./scripts/check-ecosystem-boundaries.sh

eyrie-client-guard: ## Fail on any production eyrie/client import.
bash ./scripts/check-eyrie-client-imports.sh
graycode-router-client-guard: ## Fail on any production graycode-router/client import.
bash ./scripts/check-graycode-router-client-imports.sh

eyrie-engine-guard: ## Require all production Eyrie imports to use the stable engine facade.
bash ./scripts/check-eyrie-engine-boundary.sh
graycode-router-engine-guard: ## Require all production GraycodeRouter imports to use the stable engine facade.
bash ./scripts/check-graycode-router-engine-boundary.sh

peer-guard: ## Fail if support engines import each other instead of depending only on Graycode contracts.
bash ./scripts/check-support-repo-coupling.sh
Expand All @@ -133,7 +133,7 @@ internal-layers-guard: ## Enforce one-way dependencies across stable Graycode in
package-boundaries-guard: ## Enforce AST/package-graph boundaries with file/line diagnostics.
bash ./scripts/check-package-boundaries.sh

boundaries: manifest-guard check-replace contracts-guard ecosystem-guard eyrie-client-guard eyrie-engine-guard peer-guard internal-layers-guard package-boundaries-guard ## Alias for all boundary guards (matches `make boundaries` in engine repos).
boundaries: manifest-guard check-replace contracts-guard ecosystem-guard graycode-router-client-guard graycode-router-engine-guard peer-guard internal-layers-guard package-boundaries-guard ## Alias for all boundary guards (matches `make boundaries` in engine repos).

release-parity: ## Verify every go.mod ecosystem version resolves to a reachable remote commit.
bash ./scripts/check-module-release-parity.sh
Expand Down
Loading
Loading