Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
8b54ea0
feat: US-001 - Migrate CLI to Cobra Framework
MiniCodeMonkey Feb 15, 2026
f836835
feat: US-002 - Implement Credential Storage
MiniCodeMonkey Feb 15, 2026
0b31666
feat: US-003 - Implement chief login
MiniCodeMonkey Feb 15, 2026
fd4ce04
feat: US-004 - Implement chief logout and Automatic Token Refresh
MiniCodeMonkey Feb 15, 2026
5daa52b
feat: US-005 - Extract Shared Engine from TUI
MiniCodeMonkey Feb 15, 2026
cc9a42c
feat: US-006 - Implement WebSocket Client with Reconnection
MiniCodeMonkey Feb 15, 2026
82b2a5e
feat: US-007 - Implement Protocol Handshake
MiniCodeMonkey Feb 15, 2026
aa77861
feat: US-008 - Implement Message Types and Serialization
MiniCodeMonkey Feb 15, 2026
18fdc51
feat: US-009 - Implement Basic chief serve Command
MiniCodeMonkey Feb 15, 2026
0ff4b9a
feat: US-009 - Implement Basic chief serve Command
MiniCodeMonkey Feb 15, 2026
86d36fb
feat: US-010 - Implement Workspace Scanner
MiniCodeMonkey Feb 15, 2026
5535d9b
feat: US-011 - Implement Selective File Watching
MiniCodeMonkey Feb 15, 2026
72d4609
feat: US-012 - Implement State Snapshot and Project Handlers
MiniCodeMonkey Feb 15, 2026
fdab43e
feat: US-012 - Implement State Snapshot and Project Handlers
MiniCodeMonkey Feb 15, 2026
c06a181
feat: US-013 - Implement Interactive Claude PRD Sessions over WebSocket
MiniCodeMonkey Feb 15, 2026
86fe80d
feat: US-014 - Implement Session Timeout with Warnings
MiniCodeMonkey Feb 15, 2026
41a523b
feat: US-015 - Implement Run Control via WebSocket
MiniCodeMonkey Feb 15, 2026
34059a6
feat: US-016 - Implement Quota Detection and Auto-Pause
MiniCodeMonkey Feb 15, 2026
4029051
feat: US-017 - Implement Run Progress Streaming
MiniCodeMonkey Feb 15, 2026
ee75e03
feat: US-018 - Implement Project Settings via WebSocket
MiniCodeMonkey Feb 15, 2026
9d4c9d0
feat: US-019 - Implement Per-Story Logging
MiniCodeMonkey Feb 15, 2026
fc5577b
feat: US-020 - Implement Per-Story Diff Generation and Retrieval
MiniCodeMonkey Feb 15, 2026
b758dbf
feat: US-021 - Implement Git Clone and Project Creation via WebSocket
MiniCodeMonkey Feb 15, 2026
0a0eb66
feat: US-022 - Implement Version Check and `chief update` Command
MiniCodeMonkey Feb 15, 2026
e3c2725
feat: US-023 - Implement Remote Update via WebSocket
MiniCodeMonkey Feb 15, 2026
ba8b8b6
feat: US-024 - Create Systemd Service and Cloud-Init Script
MiniCodeMonkey Feb 15, 2026
c0976f5
feat: US-025 - Implement One-Time Setup Token for Automated Chief Auth
MiniCodeMonkey Feb 15, 2026
aa4d03f
feat: US-026 - Implement WebSocket Rate Limiting
MiniCodeMonkey Feb 16, 2026
7ca642a
feat: US-027 - Implement Graceful Shutdown for `chief serve`
MiniCodeMonkey Feb 16, 2026
91fe5bd
feat: US-028 - Implement WebSocket URL Configuration for Local Develo…
MiniCodeMonkey Feb 16, 2026
81ff265
build: output binary to bin/ directory instead of project root
MiniCodeMonkey Feb 16, 2026
8a7bd42
fix(auth): add /api prefix to OAuth endpoint paths
MiniCodeMonkey Feb 16, 2026
c3e393f
fix(auth): correct device authorization URL path
MiniCodeMonkey Feb 16, 2026
7e11269
fix(serve): default --workspace to current directory
MiniCodeMonkey Feb 16, 2026
58bfe59
feat(ws): discover WebSocket URL from server during login and token r…
MiniCodeMonkey Feb 16, 2026
09d0be1
fix(ws): round retry delay to nearest millisecond in log output
MiniCodeMonkey Feb 16, 2026
bdbe10b
docs: Websocket refactor spec
MiniCodeMonkey Feb 16, 2026
dea78b9
feat: US-014 - HTTP uplink client — connect and disconnect
MiniCodeMonkey Feb 16, 2026
b7d17a3
feat: US-015 - HTTP uplink client — message sending
MiniCodeMonkey Feb 16, 2026
9b44f63
feat: US-016 - Message batcher
MiniCodeMonkey Feb 16, 2026
3f9c2ba
feat: US-017 - Pusher client for receiving commands
MiniCodeMonkey Feb 16, 2026
9a49c13
feat: US-018 - Uplink unified interface
MiniCodeMonkey Feb 16, 2026
e960834
feat: US-019 - Heartbeat goroutine
MiniCodeMonkey Feb 16, 2026
6166731
feat: US-020 - Reconnection logic
MiniCodeMonkey Feb 16, 2026
59f695b
feat: US-021 - Refactor serve.go to use uplink
MiniCodeMonkey Feb 16, 2026
0f3051d
feat: US-022 - Graceful shutdown updates
MiniCodeMonkey Feb 16, 2026
2c21811
feat: US-023 - End-to-end integration testing
MiniCodeMonkey Feb 16, 2026
5395156
feat: US-027 - Remove old WebSocket client code
MiniCodeMonkey Feb 16, 2026
439d88b
fix(uplink): correct Pusher protocol handling for origin and data enc…
MiniCodeMonkey Feb 17, 2026
65053a4
fix(auth): send grant_type and Accept header in token refresh request
MiniCodeMonkey Feb 17, 2026
a6f34d3
fix(uplink): unwrap payload envelope from CommandRelayController mess…
MiniCodeMonkey Feb 17, 2026
da49281
feat: add contract testing between chief CLI and chief-uplink
MiniCodeMonkey Feb 17, 2026
3d4dea7
feat: add get_prds/get_diffs handlers and fix settings response format
MiniCodeMonkey Feb 17, 2026
0dad225
test: add serve E2E tests for get_prds and get_diffs handlers
MiniCodeMonkey Feb 17, 2026
4f8a825
feat(serve): log received command type and ID in event loop
MiniCodeMonkey Feb 17, 2026
02a04d7
fix(pusher): unwrap double-encoded JSON data from Reverb events
MiniCodeMonkey Feb 17, 2026
871dae5
feat: US-001 - Fix CLI PRD Message Types (prd_output / prd_response_c…
MiniCodeMonkey Feb 17, 2026
81b4c21
feat: US-002 - Fix CLI Field Name Mismatches (new_prd, prd_message)
MiniCodeMonkey Feb 17, 2026
749c9f3
feat: US-003 - Implement refine_prd Handler in CLI
MiniCodeMonkey Feb 17, 2026
b8b47a7
fix(cmd): prevent browser launch during tests
MiniCodeMonkey Feb 18, 2026
80ed779
fix(cmd): spawn claude in print mode for non-interactive piped I/O
MiniCodeMonkey Feb 18, 2026
cfe46a2
fix(prd): wrap PRD messages in payload and support configurable claud…
MiniCodeMonkey Feb 18, 2026
4b4736f
Merge remote-tracking branch 'origin/main' into feat/uplink
MiniCodeMonkey Feb 21, 2026
d6c4524
chore: add PNG versions of chief logo assets
MiniCodeMonkey Feb 21, 2026
a6e299e
feat(login): add --server-url flag and CHIEF_SERVER_URL env var support
MiniCodeMonkey Feb 21, 2026
d524ce0
build: output binary to project root instead of bin/
MiniCodeMonkey Feb 21, 2026
836cc77
chore: update default server URL to uplink.chiefloop.com
MiniCodeMonkey Feb 21, 2026
42e445e
fix(prd): stream PRD session output using PTY stdin and stream-json f…
MiniCodeMonkey Feb 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
496 changes: 496 additions & 0 deletions .chief/prds/uplink/prd.json

Large diffs are not rendered by default.

536 changes: 536 additions & 0 deletions .chief/prds/uplink/progress.md

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Binaries
/chief
/bin/
*.exe

# Log files
Expand All @@ -11,3 +11,6 @@ node_modules/
# VitePress
docs/.vitepress/cache/
docs/.vitepress/dist/

# Contract fixtures (synced from chief-uplink)
contract/fixtures/
35 changes: 31 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Chief - Autonomous PRD Agent
# https://github.com/minicodemonkey/chief

BINARY_NAME := chief
BINARY_NAME := bin/chief
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
BIN_DIR := ./bin
BUILD_DIR := ./build
Expand All @@ -10,14 +10,14 @@ MAIN_PKG := ./cmd/chief
# Go build flags
LDFLAGS := -ldflags "-X main.Version=$(VERSION)"

.PHONY: all build install test lint clean release snapshot help
.PHONY: all build install test lint clean release snapshot help sync-fixtures test-contract

all: build

## build: Build the binary
build:
@mkdir -p $(BIN_DIR)
go build $(LDFLAGS) -o $(BIN_DIR)/$(BINARY_NAME) $(MAIN_PKG)
go build $(LDFLAGS) -o $(BINARY_NAME) $(MAIN_PKG)

## install: Install to $GOPATH/bin
install:
Expand Down Expand Up @@ -64,7 +64,34 @@ release:

## run: Build and run the TUI
run: build
$(BIN_DIR)/$(BINARY_NAME)
$(BINARY_NAME)

## Contract fixtures — chief-uplink is the source of truth.
## Override FIXTURES_REPO for local dev: make sync-fixtures FIXTURES_REPO=../chief-uplink/contract/fixtures
FIXTURES_REPO ?= https://raw.githubusercontent.com/MiniCodeMonkey/chief-uplink/main/contract/fixtures
FIXTURES_DIR := contract/fixtures

## sync-fixtures: Download contract fixtures from chief-uplink
sync-fixtures:
@mkdir -p $(FIXTURES_DIR)/cli-to-server $(FIXTURES_DIR)/server-to-cli
@for f in cli-to-server/connect_request.json cli-to-server/state_snapshot.json \
cli-to-server/messages_batch.json cli-to-server/prds_response.json \
cli-to-server/settings_response.json cli-to-server/diffs_response.json \
server-to-cli/welcome_response.json server-to-cli/command_create_project.json \
server-to-cli/command_list_projects.json server-to-cli/command_start_run.json \
server-to-cli/command_get_prds.json server-to-cli/command_get_settings.json \
server-to-cli/command_get_diffs.json server-to-cli/command_new_prd.json \
server-to-cli/command_refine_prd.json server-to-cli/command_prd_message.json; do \
if echo "$(FIXTURES_REPO)" | grep -q "^http"; then \
curl -sf "$(FIXTURES_REPO)/$$f" -o "$(FIXTURES_DIR)/$$f" || echo "WARN: failed to fetch $$f"; \
else \
cp "$(FIXTURES_REPO)/$$f" "$(FIXTURES_DIR)/$$f" || echo "WARN: failed to copy $$f"; \
fi; \
done

## test-contract: Run contract tests (syncs fixtures first)
test-contract: sync-fixtures
go test ./internal/contract/ -v

## help: Show this help
help:
Expand Down
Loading