Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
17ef2af
Add persona and format draft strategies
terisuke May 2, 2026
c4826e0
Merge pull request #33 from terisuke/codex/practical-persona-formats
terisuke May 2, 2026
2a86545
Tune strict Terisuke draft style loop
terisuke May 2, 2026
06285a4
Merge pull request #34 from terisuke/codex/issue-11-terisuke-style
terisuke May 2, 2026
8d8b5de
Use Evo X2 SSH tunnel as primary LLM
terisuke May 2, 2026
d48495b
Merge pull request #37 from terisuke/codex/evo-x2-ssh-primary
terisuke May 2, 2026
a2bfb93
Use Tailnet API as Evo X2 primary
terisuke May 2, 2026
fafe94d
Merge pull request #39 from terisuke/codex/evo-x2-tailnet-api-primary
terisuke May 2, 2026
7ecbfc8
Refresh next implementation plan
terisuke May 2, 2026
fbe77a4
Merge pull request #42 from terisuke/codex/next-implementation-readiness
terisuke May 2, 2026
c4b445b
Implement SSE streaming for workflow LLM calls
terisuke May 2, 2026
0566e28
Merge pull request #43 from terisuke/codex/issue-18-sse-streaming
terisuke May 2, 2026
6d28e83
Add ordered LLM fallback chain
terisuke May 2, 2026
40bfd15
Merge pull request #46 from terisuke/codex/llm-fallback-chain-before-17
terisuke May 2, 2026
1fbe9ea
Add lightweight draft verification
terisuke May 2, 2026
fa92867
Merge pull request #48 from terisuke/codex/lightweight-draft-verifica…
terisuke May 2, 2026
d58c813
Implement chat transcript answer forks for #17
terisuke May 2, 2026
8fc2bdc
Merge pull request #49 from terisuke/codex/issue-17-chat-transcript
terisuke May 2, 2026
dbc5e1c
Surface deep-dive rationale for #20
terisuke May 2, 2026
46a3ad1
Merge pull request #50 from terisuke/codex/issue-20-deep-dive-rationale
terisuke May 2, 2026
6ad876c
Implement editable draft section regeneration for #19
terisuke May 2, 2026
81558d8
Merge pull request #51 from terisuke/codex/issue-19-editable-draft-se…
terisuke May 2, 2026
3f46130
Generalize source fetchers for #22
terisuke May 2, 2026
8dd90d8
Merge pull request #52 from terisuke/codex/issue-22-source-fetchers
terisuke May 2, 2026
02e0165
Close format and persona seed gaps for #23 #24
terisuke May 2, 2026
0ecdb21
Merge pull request #53 from terisuke/codex/issue-23-24-format-persona…
terisuke May 2, 2026
aaba7bd
Add workflow handler coverage for #29
terisuke May 2, 2026
f93f230
Merge pull request #54 from terisuke/codex/issue-29-workflow-handler-…
terisuke May 2, 2026
48db8a8
Fix historical source fetching for issue 22
terisuke May 2, 2026
8a7a121
Merge pull request #55 from terisuke/codex/issue-22-history-source-va…
terisuke May 2, 2026
ac87d56
Implement persona format question templates
terisuke May 2, 2026
77fd848
Merge pull request #56 from terisuke/codex/issue-25-media-question-ma…
terisuke May 2, 2026
2a7b7d5
docs: align next implementation plan
terisuke May 2, 2026
18bcb17
Merge pull request #59 from terisuke/codex/docs-next-implementation-a…
terisuke May 2, 2026
5c39763
feat: add sqlite persistence and media matrix runner
terisuke May 2, 2026
9b30d71
Merge pull request #60 from terisuke/codex/parallel-c1-d1-implementation
terisuke May 2, 2026
d8f4adb
feat: expose storage mode in settings
terisuke May 2, 2026
b404555
Merge pull request #62 from terisuke/codex/ui-storage-config
terisuke May 2, 2026
b4d8bef
Fix Evo X2 runtime defaults and audit docs (#65)
terisuke May 2, 2026
07f3ffa
Simplify brief interview questions (#67)
terisuke May 2, 2026
0e1221b
Switch style source by persona and format (#69)
terisuke May 2, 2026
37fa650
docs: decompose issue 40 runtime stabilization (#76)
terisuke May 2, 2026
eb917e2
feat: stabilize issue 40 scenario gates (#77)
terisuke May 3, 2026
c066743
Stabilize Evo X2 media matrix style gates (#78)
terisuke May 3, 2026
9c56974
Document Cloudia Qiita Evo X2 proof (#79)
terisuke May 3, 2026
08f7787
Stabilize full Evo X2 publishing matrix
terisuke May 3, 2026
5489990
Implement history artifact UI cut (#82)
terisuke May 3, 2026
59d24e1
Implement project history and browser contracts
terisuke May 3, 2026
96663d7
Merge pull request #84 from terisuke/codex/phase-c-history-e2e
terisuke May 3, 2026
fff7a55
Add browser E2E coverage
terisuke May 3, 2026
94d1e13
Merge pull request #85 from terisuke/codex/issue13-browser-e2e
terisuke May 3, 2026
1b4afb8
Polish Phase C persona history cards
terisuke May 3, 2026
de54527
Merge pull request #86 from terisuke/codex/phase-c-persona-history-po…
terisuke May 3, 2026
4af05ca
Close product memory and launcher gaps
terisuke May 3, 2026
56d86ce
Document app handoff and main promotion plan
terisuke May 3, 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
32 changes: 20 additions & 12 deletions .env.evo-x2.example
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
PORT=8080
WORKFLOW_STORE_PATH=data/workflow_store.json
LLM_RUNTIME=remote
LLM_BASE_URL=http://evo-x2:11434/v1
EVO_X2_TAILNET_HOST=evo-x2.tailb30e58.ts.net
EVO_X2_SSH_HOST=evo-x2
EVO_X2_SSH_LOCAL_PORT=21434
LLM_BASE_URL=http://evo-x2.tailb30e58.ts.net/v1
LLM_MODEL=gemma4:31b
LLM_TIMEOUT_SECONDS=900

# Use smaller models for quick tests, and larger models for final drafts.
STYLE_LLM_MODEL=gemma4:latest
BRIEF_LLM_MODEL=gemma4:e2b
ARTICLE_LLM_MODEL=gemma4:latest
# Primary route is Evo X2 Ollama's OpenAI-compatible API.
# Use smaller models for source summarization, a stronger reasoning model for
# questions, and the high-quality Japanese draft model for final output.
STYLE_LLM_MODEL=gemma4:e2b
BRIEF_LLM_MODEL=qwen3.6:27b
ARTICLE_LLM_MODEL=gemma4:e2b
DRAFT_LLM_MODEL=gemma4:31b
VERIFY_LLM_MODEL=gemma4:latest

# Used only if Evo X2 is unavailable and a local llama.cpp server is already running.
FALLBACK_LLM_BASE_URL=http://127.0.0.1:8081/v1
# The fallback client reuses the selected model name for each phase.
# STYLE_FALLBACK_LLM_MODEL=gemma4:latest
# BRIEF_FALLBACK_LLM_MODEL=gemma4:e2b
# ARTICLE_FALLBACK_LLM_MODEL=gemma4:latest
# DRAFT_FALLBACK_LLM_MODEL=gemma4:31b
# Ordered fallback chain:
# 1. Evo X2 llama.cpp over Tailnet/Caddy.
# 2. Last-resort local llama.cpp on this workstation.
LLM_FALLBACK_BASE_URLS=http://evo-x2.tailb30e58.ts.net/llama/v1,http://127.0.0.1:8081/v1
STYLE_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
BRIEF_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,qwen3:30b-a3b
ARTICLE_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
DRAFT_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,qwen3:30b-a3b
VERIFY_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
18 changes: 13 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,21 @@ LLM_BASE_URL=http://127.0.0.1:8081/v1
LLM_MODEL=gemma4:31b
LLM_TIMEOUT_SECONDS=180
# Optional per-phase overrides:
# STYLE_LLM_MODEL=gemma4:latest
# BRIEF_LLM_MODEL=gemma4:e2b
# ARTICLE_LLM_MODEL=gemma4:latest
# STYLE_LLM_MODEL=gemma4:e2b
# BRIEF_LLM_MODEL=qwen3.6:27b
# ARTICLE_LLM_MODEL=gemma4:e2b
# DRAFT_LLM_MODEL=gemma4:31b
# VERIFY_LLM_MODEL=gemma4:latest
# Ordered fallback chain. Use comma-separated OpenAI-compatible base URLs.
# LLM_FALLBACK_BASE_URLS=http://remote-llama/v1,http://127.0.0.1:8081/v1
# Optional comma-separated per-phase fallback model names:
# STYLE_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
# BRIEF_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,qwen3:30b-a3b
# ARTICLE_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
# DRAFT_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,qwen3:30b-a3b
# VERIFY_LLM_FALLBACK_MODELS=gemma-4-E2B-it-Q8_0.gguf,gemma4:e2b
# Legacy single fallback remains supported:
# FALLBACK_LLM_BASE_URL=http://127.0.0.1:8081/v1
# フォールバック時のモデル名は選択中のフェーズ別モデルを引き継ぎます。
# 明示的に変える場合だけ STYLE_FALLBACK_LLM_MODEL などを設定してください。
LLAMACPP_HOST=127.0.0.1
LLAMACPP_PORT=8081
LLAMACPP_BASE_URL=http://127.0.0.1:8081/v1
Expand Down
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Thumbs.db
bin/
dist/
tmp/
server
/server
data/

# ログ関連
Expand All @@ -39,6 +39,11 @@ logs/
vendor/
node_modules/

# Python/E2E
__pycache__/
*.py[cod]
.pytest_cache/

# その他
*.bak
*.tmp
Expand Down
110 changes: 97 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,122 @@ export
endif

PORT ?= 8080
LLM_RUNTIME ?= local
LLM_BASE_URL ?= http://$(LLAMACPP_HOST):$(LLAMACPP_PORT)/v1
EVO_X2_TAILNET_HOST ?= evo-x2.tailb30e58.ts.net
EVO_X2_SSH_HOST ?= evo-x2
EVO_X2_SSH_LOCAL_PORT ?= 21434
EVO_X2_OLLAMA_LLM_BASE_URL ?= http://$(EVO_X2_TAILNET_HOST)/v1
EVO_X2_LLAMA_CPP_LLM_BASE_URL ?= http://$(EVO_X2_TAILNET_HOST)/llama/v1
EVO_X2_LLAMA_CPP_SERVICE ?= note-maker-llama-cpp.service
EVO_X2_LLAMA_CPP_PROFILE ?= fallback-gemma-e2b
EVO_X2_LLAMA_CPP_APPLY ?= 0
EVO_X2_LLAMA_CPP_ALLOW_RESTART ?= 0
EVO_X2_LLM_BASE_URL ?= $(EVO_X2_OLLAMA_LLM_BASE_URL)
EVO_X2_SSH_LLM_BASE_URL ?= http://127.0.0.1:$(EVO_X2_SSH_LOCAL_PORT)/v1
LLM_RUNTIME ?= remote
LLM_BASE_URL ?= $(EVO_X2_LLM_BASE_URL)
LLM_MODEL ?= gemma4:31b
EVO_X2_LLM_BASE_URL ?= http://evo-x2:11434/v1
EVO_X2_LLM_MODEL ?= gemma4:31b
EVO_X2_BRIEF_LLM_MODEL ?= gemma4:e2b
EVO_X2_STYLE_LLM_MODEL ?= gemma4:latest
EVO_X2_ARTICLE_LLM_MODEL ?= gemma4:latest
EVO_X2_BRIEF_LLM_MODEL ?= qwen3.6:27b
EVO_X2_STYLE_LLM_MODEL ?= gemma4:e2b
EVO_X2_ARTICLE_LLM_MODEL ?= gemma4:e2b
EVO_X2_DRAFT_LLM_MODEL ?= gemma4:31b
EVO_X2_VERIFY_LLM_MODEL ?= gemma4:latest
FALLBACK_LLM_BASE_URL ?= http://127.0.0.1:8081/v1
LLM_FALLBACK_BASE_URLS ?= $(EVO_X2_LLAMA_CPP_LLM_BASE_URL),$(FALLBACK_LLM_BASE_URL)
EVO_X2_LLAMA_CPP_MODEL ?= gemma-4-E2B-it-Q8_0.gguf
EVO_X2_LLAMA_CPP_STYLE_MODEL ?= $(EVO_X2_LLAMA_CPP_MODEL)
EVO_X2_LLAMA_CPP_BRIEF_MODEL ?= $(EVO_X2_LLAMA_CPP_MODEL)
EVO_X2_LLAMA_CPP_ARTICLE_MODEL ?= $(EVO_X2_LLAMA_CPP_MODEL)
EVO_X2_LLAMA_CPP_DRAFT_MODEL ?= $(EVO_X2_LLAMA_CPP_MODEL)
EVO_X2_LLAMA_CPP_VERIFY_MODEL ?= $(EVO_X2_LLAMA_CPP_MODEL)
STYLE_LLM_FALLBACK_MODELS ?= $(EVO_X2_LLAMA_CPP_MODEL),gemma4:e2b
BRIEF_LLM_FALLBACK_MODELS ?= $(EVO_X2_LLAMA_CPP_MODEL),qwen3:30b-a3b
ARTICLE_LLM_FALLBACK_MODELS ?= $(EVO_X2_LLAMA_CPP_MODEL),gemma4:e2b
DRAFT_LLM_FALLBACK_MODELS ?= $(EVO_X2_LLAMA_CPP_MODEL),qwen3:30b-a3b
VERIFY_LLM_FALLBACK_MODELS ?= $(EVO_X2_LLAMA_CPP_MODEL),gemma4:e2b
LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS ?= 45
LLM_STREAM_IDLE_TIMEOUT_SECONDS ?= 45
LLAMACPP_HOST ?= 127.0.0.1
LLAMACPP_PORT ?= 8081
LLAMACPP_BASE_URL ?= $(LLM_BASE_URL)
LLAMACPP_MODEL ?= gemma4:31b
LLAMACPP_HF_REPO ?= ggml-org/gemma-4-31B-it-GGUF
LLAMACPP_HF_FILE ?= gemma-4-31B-it-Q4_K_M.gguf
LOCAL_LLAMACPP_FALLBACK_BASE_URL ?= http://127.0.0.1:8081/v1
LOCAL_LLAMACPP_FALLBACK_MODEL ?= qwen3:30b-a3b
LOCAL_LLAMACPP_FALLBACK_VERIFY_MODEL ?= $(LOCAL_LLAMACPP_FALLBACK_MODEL)
LOCAL_LLAMACPP_FALLBACK_LOAD_FLAGS ?=
LOCAL_LLAMACPP_FALLBACK_OUTPUT_DIR ?= tmp/local_llamacpp_fallback
LOCAL_LLAMACPP_FALLBACK_MIN_STYLE_SCORE ?= 82
LOCAL_LLAMACPP_FALLBACK_MIN_KEYWORD_OVERLAP ?= 70
LOCAL_LLAMACPP_FALLBACK_MIN_DRAFT_RUNES ?= 2800
LOCAL_LLAMACPP_FALLBACK_TIMEOUT_SECONDS ?= 900
LOCAL_LLAMACPP_FALLBACK_MAX_ATTEMPTS ?= 2
LLAMA_SERVER ?= llama-server

.PHONY: app dev evo-x2 remote evo-x2-models scenario-evo-x2 server llama check
.PHONY: app launcher launcher-local launcher-status launcher-check dev evo-x2 remote evo-x2-preflight evo-x2-models evo-x2-ssh-models evo-x2-llama-status evo-x2-llama-plan evo-x2-llama-start evo-x2-llama-swap evo-x2-llama-check scenario-evo-x2 scenario-evo-x2-llama-brief-draft scenario-local-llamacpp-fallback scenario-media-matrix-live server llama check e2e

app: dev
app: launcher

launcher:
./scripts/launcher.sh

launcher-local:
NOTE_MAKER_START_LOCAL_LLM=1 ./scripts/launcher.sh --local-llm

launcher-status:
./scripts/launcher.sh --status

launcher-check:
./scripts/check-launcher.sh

dev:
./scripts/dev.sh

evo-x2: remote

remote:
NOTE_MAKER_SKIP_ENV=1 LLM_RUNTIME=remote LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLM_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_STYLE_LLM_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_BRIEF_LLM_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_ARTICLE_LLM_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_DRAFT_LLM_MODEL)" FALLBACK_LLM_BASE_URL="$(FALLBACK_LLM_BASE_URL)" ./scripts/dev.sh
remote: evo-x2-preflight
NOTE_MAKER_SKIP_ENV=1 LLM_RUNTIME=remote LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLM_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_STYLE_LLM_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_BRIEF_LLM_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_ARTICLE_LLM_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_DRAFT_LLM_MODEL)" VERIFY_LLM_MODEL="$(EVO_X2_VERIFY_LLM_MODEL)" LLM_FALLBACK_BASE_URLS="$(LLM_FALLBACK_BASE_URLS)" STYLE_LLM_FALLBACK_MODELS="$(STYLE_LLM_FALLBACK_MODELS)" BRIEF_LLM_FALLBACK_MODELS="$(BRIEF_LLM_FALLBACK_MODELS)" ARTICLE_LLM_FALLBACK_MODELS="$(ARTICLE_LLM_FALLBACK_MODELS)" DRAFT_LLM_FALLBACK_MODELS="$(DRAFT_LLM_FALLBACK_MODELS)" VERIFY_LLM_FALLBACK_MODELS="$(VERIFY_LLM_FALLBACK_MODELS)" ./scripts/dev.sh

evo-x2-models:
evo-x2-preflight:
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" ./scripts/evo-x2-tailnet-preflight.sh

evo-x2-models: evo-x2-preflight
curl -s "$(EVO_X2_LLM_BASE_URL)/models"

scenario-evo-x2:
RUN_NOTE_SCENARIO=1 RUN_LOCAL_LLM_SCENARIO=1 LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLM_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_STYLE_LLM_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_BRIEF_LLM_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_ARTICLE_LLM_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_DRAFT_LLM_MODEL)" LLM_TIMEOUT_SECONDS=900 FALLBACK_LLM_BASE_URL="$(FALLBACK_LLM_BASE_URL)" SCENARIO_MIN_STYLE_SCORE=80 SCENARIO_MIN_DRAFT_RUNES=2800 DRAFT_MAX_ATTEMPTS=2 go run ./cmd/scenario/full_workflow
evo-x2-ssh-models:
EVO_X2_SSH_HOST="$(EVO_X2_SSH_HOST)" EVO_X2_SSH_LOCAL_PORT="$(EVO_X2_SSH_LOCAL_PORT)" EVO_X2_LLM_BASE_URL="$(EVO_X2_SSH_LLM_BASE_URL)" ./scripts/evo-x2-ssh-preflight.sh
curl -s "$(EVO_X2_SSH_LLM_BASE_URL)/models"

evo-x2-llama-status:
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_SSH_HOST="$(EVO_X2_SSH_HOST)" EVO_X2_OLLAMA_LLM_BASE_URL="$(EVO_X2_OLLAMA_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_SERVICE="$(EVO_X2_LLAMA_CPP_SERVICE)" EVO_X2_LLAMA_CPP_PROFILE="$(EVO_X2_LLAMA_CPP_PROFILE)" EVO_X2_LLAMA_CPP_APPLY="$(EVO_X2_LLAMA_CPP_APPLY)" EVO_X2_LLAMA_CPP_ALLOW_RESTART="$(EVO_X2_LLAMA_CPP_ALLOW_RESTART)" ./scripts/evo-x2-llama-swap.sh inspect

evo-x2-llama-plan:
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_SSH_HOST="$(EVO_X2_SSH_HOST)" EVO_X2_OLLAMA_LLM_BASE_URL="$(EVO_X2_OLLAMA_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_SERVICE="$(EVO_X2_LLAMA_CPP_SERVICE)" EVO_X2_LLAMA_CPP_PROFILE="$(EVO_X2_LLAMA_CPP_PROFILE)" EVO_X2_LLAMA_CPP_APPLY="$(EVO_X2_LLAMA_CPP_APPLY)" EVO_X2_LLAMA_CPP_ALLOW_RESTART="$(EVO_X2_LLAMA_CPP_ALLOW_RESTART)" ./scripts/evo-x2-llama-swap.sh plan

evo-x2-llama-start:
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_SSH_HOST="$(EVO_X2_SSH_HOST)" EVO_X2_OLLAMA_LLM_BASE_URL="$(EVO_X2_OLLAMA_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_SERVICE="$(EVO_X2_LLAMA_CPP_SERVICE)" EVO_X2_LLAMA_CPP_PROFILE="$(EVO_X2_LLAMA_CPP_PROFILE)" EVO_X2_LLAMA_CPP_APPLY="$(EVO_X2_LLAMA_CPP_APPLY)" EVO_X2_LLAMA_CPP_ALLOW_RESTART="$(EVO_X2_LLAMA_CPP_ALLOW_RESTART)" ./scripts/evo-x2-llama-swap.sh start

evo-x2-llama-swap:
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_SSH_HOST="$(EVO_X2_SSH_HOST)" EVO_X2_OLLAMA_LLM_BASE_URL="$(EVO_X2_OLLAMA_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" EVO_X2_LLAMA_CPP_SERVICE="$(EVO_X2_LLAMA_CPP_SERVICE)" EVO_X2_LLAMA_CPP_PROFILE="$(EVO_X2_LLAMA_CPP_PROFILE)" EVO_X2_LLAMA_CPP_APPLY="$(EVO_X2_LLAMA_CPP_APPLY)" EVO_X2_LLAMA_CPP_ALLOW_RESTART="$(EVO_X2_LLAMA_CPP_ALLOW_RESTART)" ./scripts/evo-x2-llama-swap.sh swap

evo-x2-llama-check:
bash -n scripts/dev.sh scripts/evo-x2-tailnet-preflight.sh scripts/evo-x2-ssh-preflight.sh scripts/evo-x2-llama-swap.sh

scenario-evo-x2: evo-x2-preflight
RUN_NOTE_SCENARIO=1 RUN_LOCAL_LLM_SCENARIO=1 SCENARIO_STREAM_DRAFT=1 LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLM_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_STYLE_LLM_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_BRIEF_LLM_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_ARTICLE_LLM_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_DRAFT_LLM_MODEL)" VERIFY_LLM_MODEL="$(EVO_X2_VERIFY_LLM_MODEL)" LLM_TIMEOUT_SECONDS=900 LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS="$(LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS)" LLM_STREAM_IDLE_TIMEOUT_SECONDS="$(LLM_STREAM_IDLE_TIMEOUT_SECONDS)" LLM_FALLBACK_BASE_URLS="$(LLM_FALLBACK_BASE_URLS)" STYLE_LLM_FALLBACK_MODELS="$(STYLE_LLM_FALLBACK_MODELS)" BRIEF_LLM_FALLBACK_MODELS="$(BRIEF_LLM_FALLBACK_MODELS)" ARTICLE_LLM_FALLBACK_MODELS="$(ARTICLE_LLM_FALLBACK_MODELS)" DRAFT_LLM_FALLBACK_MODELS="$(DRAFT_LLM_FALLBACK_MODELS)" VERIFY_LLM_FALLBACK_MODELS="$(VERIFY_LLM_FALLBACK_MODELS)" SCENARIO_MIN_STYLE_SCORE=80 SCENARIO_MIN_DRAFT_RUNES=2800 DRAFT_MAX_ATTEMPTS=2 go run ./cmd/scenario/full_workflow

scenario-evo-x2-llama-brief-draft:
@if [ "$${RUN_EVO_X2_LLAMA_CPP_SCENARIO:-0}" != "1" ]; then echo "Set RUN_EVO_X2_LLAMA_CPP_SCENARIO=1 to run the live Evo X2 llama.cpp brief/draft validation."; exit 2; fi
EVO_X2_TAILNET_HOST="$(EVO_X2_TAILNET_HOST)" EVO_X2_LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" ./scripts/evo-x2-tailnet-preflight.sh
RUN_NOTE_SCENARIO=1 RUN_LOCAL_LLM_SCENARIO=1 SCENARIO_STREAM_DRAFT=1 LLM_BASE_URL="$(EVO_X2_LLAMA_CPP_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLAMA_CPP_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_LLAMA_CPP_STYLE_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_LLAMA_CPP_BRIEF_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_LLAMA_CPP_ARTICLE_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_LLAMA_CPP_DRAFT_MODEL)" VERIFY_LLM_MODEL="$(EVO_X2_LLAMA_CPP_VERIFY_MODEL)" LLM_TIMEOUT_SECONDS=900 LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS="$(LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS)" LLM_STREAM_IDLE_TIMEOUT_SECONDS="$(LLM_STREAM_IDLE_TIMEOUT_SECONDS)" LLM_FALLBACK_BASE_URLS="" STYLE_LLM_FALLBACK_MODELS="" BRIEF_LLM_FALLBACK_MODELS="" ARTICLE_LLM_FALLBACK_MODELS="" DRAFT_LLM_FALLBACK_MODELS="" VERIFY_LLM_FALLBACK_MODELS="" SCENARIO_MIN_STYLE_SCORE=80 SCENARIO_MIN_DRAFT_RUNES=2800 DRAFT_MAX_ATTEMPTS=2 go run ./cmd/scenario/full_workflow

scenario-local-llamacpp-fallback:
LOCAL_LLAMACPP_FALLBACK_BASE_URL="$(LOCAL_LLAMACPP_FALLBACK_BASE_URL)" LOCAL_LLAMACPP_FALLBACK_MODEL="$(LOCAL_LLAMACPP_FALLBACK_MODEL)" LOCAL_LLAMACPP_FALLBACK_VERIFY_MODEL="$(LOCAL_LLAMACPP_FALLBACK_VERIFY_MODEL)" LOCAL_LLAMACPP_FALLBACK_LOAD_FLAGS="$(LOCAL_LLAMACPP_FALLBACK_LOAD_FLAGS)" LOCAL_LLAMACPP_FALLBACK_OUTPUT_DIR="$(LOCAL_LLAMACPP_FALLBACK_OUTPUT_DIR)" LOCAL_LLAMACPP_FALLBACK_MIN_STYLE_SCORE="$(LOCAL_LLAMACPP_FALLBACK_MIN_STYLE_SCORE)" LOCAL_LLAMACPP_FALLBACK_MIN_KEYWORD_OVERLAP="$(LOCAL_LLAMACPP_FALLBACK_MIN_KEYWORD_OVERLAP)" LOCAL_LLAMACPP_FALLBACK_MIN_DRAFT_RUNES="$(LOCAL_LLAMACPP_FALLBACK_MIN_DRAFT_RUNES)" LOCAL_LLAMACPP_FALLBACK_TIMEOUT_SECONDS="$(LOCAL_LLAMACPP_FALLBACK_TIMEOUT_SECONDS)" LOCAL_LLAMACPP_FALLBACK_MAX_ATTEMPTS="$(LOCAL_LLAMACPP_FALLBACK_MAX_ATTEMPTS)" go run ./cmd/scenario/local_llamacpp_fallback

scenario-media-matrix-live: evo-x2-preflight
SCENARIO_OUTPUT_DIR=tmp/media_matrix go run ./cmd/scenario/media_matrix
RUN_LIVE_MEDIA_MATRIX=1 SCENARIO_STREAM_DRAFT=1 SCENARIO_OUTPUT_DIR=tmp/media_matrix LIVE_MEDIA_MATRIX_OUTPUT_DIR=tmp/media_matrix/live LLM_BASE_URL="$(EVO_X2_LLM_BASE_URL)" LLM_MODEL="$(EVO_X2_LLM_MODEL)" STYLE_LLM_MODEL="$(EVO_X2_STYLE_LLM_MODEL)" BRIEF_LLM_MODEL="$(EVO_X2_BRIEF_LLM_MODEL)" ARTICLE_LLM_MODEL="$(EVO_X2_ARTICLE_LLM_MODEL)" DRAFT_LLM_MODEL="$(EVO_X2_DRAFT_LLM_MODEL)" VERIFY_LLM_MODEL="$(EVO_X2_VERIFY_LLM_MODEL)" LLM_TIMEOUT_SECONDS=900 LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS="$(LLM_STREAM_FIRST_BYTE_TIMEOUT_SECONDS)" LLM_STREAM_IDLE_TIMEOUT_SECONDS="$(LLM_STREAM_IDLE_TIMEOUT_SECONDS)" LLM_FALLBACK_BASE_URLS="$(LLM_FALLBACK_BASE_URLS)" STYLE_LLM_FALLBACK_MODELS="$(STYLE_LLM_FALLBACK_MODELS)" BRIEF_LLM_FALLBACK_MODELS="$(BRIEF_LLM_FALLBACK_MODELS)" ARTICLE_LLM_FALLBACK_MODELS="$(ARTICLE_LLM_FALLBACK_MODELS)" DRAFT_LLM_FALLBACK_MODELS="$(DRAFT_LLM_FALLBACK_MODELS)" VERIFY_LLM_FALLBACK_MODELS="$(VERIFY_LLM_FALLBACK_MODELS)" SCENARIO_MIN_STYLE_SCORE=80 SCENARIO_MIN_DRAFT_RUNES=1400 DRAFT_MAX_ATTEMPTS=2 go run ./cmd/scenario/live_media_matrix

server:
go run ./cmd/server
Expand All @@ -55,3 +136,6 @@ llama:

check:
go test ./...

e2e:
python3 -m pytest tests/e2e
Loading
Loading