-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
147 lines (106 loc) · 6.19 KB
/
Copy pathMakefile
File metadata and controls
147 lines (106 loc) · 6.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
SHELL := /bin/bash
.DEFAULT_GOAL := help
NPM ?= npm
NODE ?= node
PYTHON ?= python3
ROOT ?= .
TASK ?= TASK.md
TODO ?= TODO.md
CHANGELOG ?= CHANGELOG.md
DOCS ?= README.md,docs/**/*.md,project/**/*.md
OUT ?= .intent
PACKAGE ?= todo2code.zip
PYTHON_WHEEL_DIR ?= .intent-packages/python
E2E_COMPOSE ?= compose.e2e.yml
PREFLIGHT_ROOT ?= .
PREFLIGHT_BASELINE ?= refs/remotes/origin/main
PREFLIGHT_EXPECTED_BRANCH ?=
PREFLIGHT_ACTOR ?= agent
# Quote raw Make values as one Bash argument without recursively expanding them.
shell_quote = '$(subst ','"'"',$(value $(1)))'
.PHONY: help setup install install-tf build check test verify verify-no-llm verify-modules verify-env governance smoke doctor mcp-probe a2a-probe protocol-smoke validate live-contract-check live-model-comparison demo demollm examples-check pipeline compare-workspace preflight mcp a2a docker-build docker-smoke docker-up docker-down e2e-core e2e-full e2e-clean python-wheel package clean
help: ## Pokaż dostępne cele
@awk 'BEGIN {FS = ":.*## "; printf "todo2code targets:\n"} /^[a-zA-Z0-9_-]+:.*## / {printf " %-18s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
setup: ## Utwórz .env i zainstaluj zależności bez opcjonalnego TensorFlow
@test -f .env || cp .env.example .env
$(NPM) install --omit=optional
install: ## Zainstaluj zależności bez opcjonalnego TensorFlow
$(NPM) install --omit=optional
install-tf: ## Zainstaluj izolowany opcjonalny adapter @tensorflow/tfjs-node
$(NPM) --prefix adapters/tensorflow install
build: ## Skompiluj TypeScript
$(NPM) run build
check: ## Sprawdź typy bez emisji
$(NPM) run check
test: build ## Uruchom testy Node
$(NPM) test
verify-no-llm: ## Sprawdź granicę importów LLM
$(NPM) run verify:no-llm
verify-modules: ## Sprawdź cykle importów i niezależność warstwy core
$(NPM) run verify:modules
verify-env: ## Sprawdź kompletność i brak duplikatów kontraktu .env
$(NPM) run verify:env
verify: ## Typy, granica LLM, build i testy
$(NPM) run verify
governance: ## Sprawdź aktywny ticket, intencję, zakres i integralność standardu
bash project/governance-check.sh --actor agent
smoke: build ## Uruchom pełny offline smoke test na tymczasowym repo Git
bash scripts/smoke.sh
doctor: build ## Sprawdź runtime i zredagowaną konfigurację
$(NODE) dist/src/cli.js doctor
mcp-probe: build ## Sprawdź nowoczesny i legacy profil MCP
bash scripts/mcp-request.sh
a2a-probe: build ## Sprawdź A2A v1 przez lokalny serwer HTTP
bash scripts/a2a-request.sh
protocol-smoke: mcp-probe a2a-probe ## Uruchom probes MCP i A2A
validate: verify smoke protocol-smoke doctor docker-smoke ## Pełna walidacja bez live OpenRouter, łącznie ze smoke obrazu Docker
live-contract-check: ## Uruchom opt-in audyt prawdziwego kontraktu OpenRouter i budżetów
$(NPM) run live:check
live-model-comparison: ## Porównaj modele batcha TODO/CHANGELOG na żywo (opt-in, płatne)
$(NPM) run live:models
demo: build ## Przeanalizuj katalog examples bez OpenRouter
OPENROUTER_API_KEY= T2C_NL_MODE=deterministic T2C_MARKDOWN_MODE=deterministic T2C_COMMUNICATION_MODE=deterministic $(NODE) dist/src/cli.js pipeline examples --task task.md --todo TODO.md --changelog CHANGELOG.md --docs 'docs/**/*.md' --no-docs-llm --no-summary-llm --out .intent-demo
T2C_COMMUNICATION_MODE=deterministic $(NODE) dist/src/cli.js communication examples --project-dir project --ticket DEMO-101 --out examples/.intent-communication/analysis.json --md examples/.intent-communication/analysis.md --graph examples/.intent-communication/graph.json
demollm: build ## Uruchom pełny pipeline examples z wymaganym OpenRouter bez fallbacku
OPENROUTER_TIMEOUT_MS=300000 T2C_DOC_TIMEOUT_MS=300000 $(NODE) dist/src/cli.js pipeline examples --task task.md --todo TODO.md --changelog CHANGELOG.md --docs 'docs/**/*.md' --nl-mode require-llm --markdown-mode require-llm --communication-mode require-llm --summary-fallback false --task-mode require-llm --out .intent-demo-llm
$(NODE) scripts/assert-demollm-run.mjs examples .intent-demo-llm
examples-check: build ## Sprawdź demo, backend/frontend i przykłady wszystkich dostępnych SDK
bash scripts/examples-check.sh
pipeline: build ## Uruchom pipeline; parametry ROOT/TASK/TODO/CHANGELOG/DOCS/OUT
$(NODE) dist/src/cli.js pipeline "$(ROOT)" --task "$(TASK)" --todo "$(TODO)" --changelog "$(CHANGELOG)" --docs "$(DOCS)" --out "$(OUT)"
compare-workspace: build ## Porównaj intencje origin/main z bieżącym filesystemem
$(NODE) dist/src/cli.js compare-workspace "$(ROOT)" --base "$${BASE_REF:-origin/main}" --out "$(OUT)"
preflight: ## Sprawdź workspace przed edycją; wymaga PREFLIGHT_EXPECTED_BRANCH
@$(NPM) run build >&2
@$(NODE) scripts/workspace-preflight.mjs \
--root $(call shell_quote,PREFLIGHT_ROOT) \
--baseline $(call shell_quote,PREFLIGHT_BASELINE) \
--expected-branch $(call shell_quote,PREFLIGHT_EXPECTED_BRANCH) \
--actor $(call shell_quote,PREFLIGHT_ACTOR)
mcp: build ## Uruchom serwer MCP stdio
$(NODE) dist/src/interfaces/mcp.js
a2a: build ## Uruchom serwer A2A
$(NODE) dist/src/interfaces/a2a.js
docker-build: ## Zbuduj obraz Docker
docker build -t todo2code:local .
docker-smoke: ## Zbuduj obraz i sprawdź healthz oraz doctor wewnątrz kontenera
bash scripts/docker-smoke.sh
docker-up: ## Uruchom A2A w Docker Compose (make setup najpierw)
docker compose -f docker-compose.yml up --build -d
docker-down: ## Zatrzymaj Docker Compose
docker compose -f docker-compose.yml down
e2e-core: ## Uruchom izolowane Docker E2E dla rdzenia Node/Python
docker compose -f $(E2E_COMPOSE) build e2e-core
docker compose -f $(E2E_COMPOSE) run --rm --no-deps e2e-core
e2e-full: ## Uruchom Docker E2E z Go, JDK 17, Rust i PHP
docker compose -f $(E2E_COMPOSE) build e2e-full
docker compose -f $(E2E_COMPOSE) run --rm --no-deps e2e-full
e2e-clean: ## Usuń kontenery i lokalne obrazy środowisk E2E
docker compose -f $(E2E_COMPOSE) down --remove-orphans --rmi all
python-wheel: build ## Zbuduj wheel SDK z lokalnym mostem do runtime TypeScript
mkdir -p "$(PYTHON_WHEEL_DIR)"
$(PYTHON) -m pip wheel . --no-deps --wheel-dir "$(PYTHON_WHEEL_DIR)"
package: validate ## Utwórz ZIP i plik SHA-256 bez sekretów i node_modules
$(PYTHON) scripts/package.py "$(PACKAGE)"
clean: ## Usuń artefakty build/test/demo
rm -rf dist coverage .intent-demo .intent-test *.zip