@orchestrator-claude/cli 3.1.12 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client/OrchestratorAPIClient.d.ts +50 -1
- package/dist/api-client/OrchestratorAPIClient.d.ts.map +1 -1
- package/dist/api-client/OrchestratorAPIClient.js +73 -1
- package/dist/api-client/OrchestratorAPIClient.js.map +1 -1
- package/dist/api-client/types.d.ts +95 -2
- package/dist/api-client/types.d.ts.map +1 -1
- package/dist/commands/InitCommand.d.ts +22 -3
- package/dist/commands/InitCommand.d.ts.map +1 -1
- package/dist/commands/InitCommand.js +147 -13
- package/dist/commands/InitCommand.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/BootstrapService.d.ts +100 -0
- package/dist/services/BootstrapService.d.ts.map +1 -0
- package/dist/services/BootstrapService.js +231 -0
- package/dist/services/BootstrapService.js.map +1 -0
- package/dist/services/CleanupManager.d.ts +49 -0
- package/dist/services/CleanupManager.d.ts.map +1 -0
- package/dist/services/CleanupManager.js +87 -0
- package/dist/services/CleanupManager.js.map +1 -0
- package/dist/services/CredentialGenerator.d.ts +11 -0
- package/dist/services/CredentialGenerator.d.ts.map +1 -0
- package/dist/services/CredentialGenerator.js +25 -0
- package/dist/services/CredentialGenerator.js.map +1 -0
- package/dist/services/VerificationService.d.ts +103 -0
- package/dist/services/VerificationService.d.ts.map +1 -0
- package/dist/services/VerificationService.js +350 -0
- package/dist/services/VerificationService.js.map +1 -0
- package/dist/templates/base/claude/skills/release/SKILL.md +236 -0
- package/dist/templates/base/claude/skills/release/release.sh +460 -0
- package/dist/templates/base/docker-compose.yml.hbs +189 -8
- package/dist/templates/base/mcp.json.hbs +16 -9
- package/dist/templates/default/docker-compose.yml +190 -10
- package/package.json +1 -1
- package/templates/base/claude/skills/release/SKILL.md +236 -0
- package/templates/base/claude/skills/release/release.sh +460 -0
- package/templates/base/docker-compose.yml.hbs +189 -8
- package/templates/base/mcp.json.hbs +16 -9
- package/templates/default/docker-compose.yml +190 -10
- package/dist/templates/base/orchestrator-index.json.hbs +0 -37
- package/dist/templates/projects/api/files/index.ts.hbs +0 -30
- package/dist/templates/projects/api/files/server.ts.hbs +0 -63
- package/dist/templates/projects/api/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/api/files/vitest.config.ts.hbs +0 -28
- package/dist/templates/projects/api/template.config.json +0 -238
- package/dist/templates/projects/api/template.config.ts +0 -149
- package/dist/templates/projects/cli/files/cli.ts.hbs +0 -50
- package/dist/templates/projects/cli/files/index.ts.hbs +0 -8
- package/dist/templates/projects/cli/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/cli/files/vitest.config.ts.hbs +0 -28
- package/dist/templates/projects/cli/template.config.json +0 -213
- package/dist/templates/projects/cli/template.config.ts +0 -126
- package/dist/templates/projects/frontend/files/App.tsx.hbs +0 -31
- package/dist/templates/projects/frontend/files/index.html.hbs +0 -13
- package/dist/templates/projects/frontend/files/main.tsx.hbs +0 -22
- package/dist/templates/projects/frontend/files/tsconfig.json.hbs +0 -34
- package/dist/templates/projects/frontend/files/tsconfig.node.json.hbs +0 -10
- package/dist/templates/projects/frontend/files/vite.config.ts.hbs +0 -19
- package/dist/templates/projects/frontend/files/vitest.config.ts.hbs +0 -36
- package/dist/templates/projects/frontend/template.config.json +0 -241
- package/dist/templates/projects/frontend/template.config.ts +0 -153
- package/dist/templates/projects/minimal/files/claude-settings.json.hbs +0 -20
- package/dist/templates/projects/minimal/files/env.example.hbs +0 -17
- package/dist/templates/projects/minimal/files/gitignore.hbs +0 -41
- package/dist/templates/projects/minimal/files/index.ts.hbs +0 -13
- package/dist/templates/projects/minimal/files/tsconfig.json.hbs +0 -27
- package/dist/templates/projects/minimal/template.config.json +0 -185
- package/dist/templates/projects/minimal/template.config.ts +0 -88
- package/templates/base/orchestrator-index.json.hbs +0 -37
- package/templates/projects/api/files/index.ts.hbs +0 -30
- package/templates/projects/api/files/server.ts.hbs +0 -63
- package/templates/projects/api/files/tsconfig.json.hbs +0 -27
- package/templates/projects/api/files/vitest.config.ts.hbs +0 -28
- package/templates/projects/api/template.config.json +0 -238
- package/templates/projects/api/template.config.ts +0 -149
- package/templates/projects/cli/files/cli.ts.hbs +0 -50
- package/templates/projects/cli/files/index.ts.hbs +0 -8
- package/templates/projects/cli/files/tsconfig.json.hbs +0 -27
- package/templates/projects/cli/files/vitest.config.ts.hbs +0 -28
- package/templates/projects/cli/template.config.json +0 -213
- package/templates/projects/cli/template.config.ts +0 -126
- package/templates/projects/frontend/files/App.tsx.hbs +0 -31
- package/templates/projects/frontend/files/index.html.hbs +0 -13
- package/templates/projects/frontend/files/main.tsx.hbs +0 -22
- package/templates/projects/frontend/files/tsconfig.json.hbs +0 -34
- package/templates/projects/frontend/files/tsconfig.node.json.hbs +0 -10
- package/templates/projects/frontend/files/vite.config.ts.hbs +0 -19
- package/templates/projects/frontend/files/vitest.config.ts.hbs +0 -36
- package/templates/projects/frontend/template.config.json +0 -241
- package/templates/projects/frontend/template.config.ts +0 -153
- package/templates/projects/minimal/files/claude-settings.json.hbs +0 -20
- package/templates/projects/minimal/files/env.example.hbs +0 -17
- package/templates/projects/minimal/files/gitignore.hbs +0 -41
- package/templates/projects/minimal/files/index.ts.hbs +0 -13
- package/templates/projects/minimal/files/tsconfig.json.hbs +0 -27
- package/templates/projects/minimal/template.config.json +0 -185
- package/templates/projects/minimal/template.config.ts +0 -88
|
@@ -1,19 +1,200 @@
|
|
|
1
|
+
# docker-compose.yml — Generated by orchestrator init
|
|
2
|
+
# Stack: PostgreSQL (state) + MinIO (artifacts) + Neo4j (knowledge graph, optional) + API
|
|
3
|
+
#
|
|
4
|
+
# Ports:
|
|
5
|
+
# API: http://localhost:3001 (orchestrator REST API + MCP server)
|
|
6
|
+
# PostgreSQL: localhost:5432 (workflow state - direct access)
|
|
7
|
+
# MinIO S3: http://localhost:9000 (artifact storage - S3 API)
|
|
8
|
+
# MinIO UI: http://localhost:9001 (MinIO console)
|
|
9
|
+
# Neo4j HTTP: http://localhost:7474 (knowledge graph browser - requires --profile knowledge-graph)
|
|
10
|
+
# Neo4j Bolt: bolt://localhost:7687 (knowledge graph driver - requires --profile knowledge-graph)
|
|
11
|
+
#
|
|
12
|
+
# Usage:
|
|
13
|
+
# docker compose up -d # Start core services (API + PostgreSQL)
|
|
14
|
+
# docker compose --profile object-storage up -d # Add MinIO
|
|
15
|
+
# docker compose --profile knowledge-graph up -d # Add Neo4j
|
|
16
|
+
# docker compose --profile full up -d # Start everything
|
|
17
|
+
|
|
1
18
|
services:
|
|
19
|
+
postgres:
|
|
20
|
+
image: postgres:15-alpine
|
|
21
|
+
container_name: {{projectName}}-postgres
|
|
22
|
+
environment:
|
|
23
|
+
POSTGRES_DB: ${POSTGRES_DB:-orchestrator}
|
|
24
|
+
POSTGRES_USER: ${POSTGRES_USER:-orchestrator}
|
|
25
|
+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
26
|
+
volumes:
|
|
27
|
+
- {{projectName}}-postgres-data:/var/lib/postgresql/data
|
|
28
|
+
ports:
|
|
29
|
+
- "${POSTGRES_PORT:-5432}:5432" # PostgreSQL
|
|
30
|
+
healthcheck:
|
|
31
|
+
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-orchestrator} -d ${POSTGRES_DB:-orchestrator}"]
|
|
32
|
+
interval: 10s
|
|
33
|
+
timeout: 5s
|
|
34
|
+
retries: 5
|
|
35
|
+
start_period: 10s
|
|
36
|
+
restart: unless-stopped
|
|
37
|
+
networks:
|
|
38
|
+
- {{projectName}}-network
|
|
39
|
+
|
|
40
|
+
neo4j:
|
|
41
|
+
image: neo4j:5-community
|
|
42
|
+
container_name: {{projectName}}-neo4j
|
|
43
|
+
environment:
|
|
44
|
+
NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-orchestrator_neo4j}
|
|
45
|
+
NEO4J_PLUGINS: '["apoc"]'
|
|
46
|
+
NEO4J_dbms_memory_pagecache_size: 512M
|
|
47
|
+
NEO4J_dbms_memory_heap_initial__size: 512M
|
|
48
|
+
NEO4J_dbms_memory_heap_max__size: 1G
|
|
49
|
+
NEO4J_dbms_security_procedures_unrestricted: apoc.*
|
|
50
|
+
NEO4J_dbms_security_procedures_allowlist: apoc.*
|
|
51
|
+
ports:
|
|
52
|
+
- "${NEO4J_HTTP_PORT:-7474}:7474" # Neo4j browser
|
|
53
|
+
- "${NEO4J_BOLT_PORT:-7687}:7687" # Neo4j bolt
|
|
54
|
+
volumes:
|
|
55
|
+
- {{projectName}}-neo4j-data:/data
|
|
56
|
+
- {{projectName}}-neo4j-logs:/logs
|
|
57
|
+
healthcheck:
|
|
58
|
+
test: ["CMD", "wget", "-qO-", "http://localhost:7474"]
|
|
59
|
+
interval: 10s
|
|
60
|
+
timeout: 5s
|
|
61
|
+
retries: 5
|
|
62
|
+
start_period: 20s
|
|
63
|
+
restart: unless-stopped
|
|
64
|
+
networks:
|
|
65
|
+
- {{projectName}}-network
|
|
66
|
+
profiles:
|
|
67
|
+
- knowledge-graph
|
|
68
|
+
- full
|
|
69
|
+
|
|
70
|
+
minio:
|
|
71
|
+
image: minio/minio:latest
|
|
72
|
+
container_name: {{projectName}}-minio
|
|
73
|
+
command: server /data --console-address ":9001"
|
|
74
|
+
environment:
|
|
75
|
+
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
|
76
|
+
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
|
77
|
+
ports:
|
|
78
|
+
- "${MINIO_S3_PORT:-9000}:9000" # MinIO S3 API
|
|
79
|
+
- "${MINIO_CONSOLE_PORT:-9001}:9001" # MinIO console
|
|
80
|
+
volumes:
|
|
81
|
+
- {{projectName}}-minio-data:/data
|
|
82
|
+
healthcheck:
|
|
83
|
+
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
|
84
|
+
interval: 10s
|
|
85
|
+
timeout: 5s
|
|
86
|
+
retries: 5
|
|
87
|
+
start_period: 10s
|
|
88
|
+
restart: unless-stopped
|
|
89
|
+
networks:
|
|
90
|
+
- {{projectName}}-network
|
|
91
|
+
profiles:
|
|
92
|
+
- object-storage
|
|
93
|
+
- full
|
|
94
|
+
|
|
95
|
+
minio-init:
|
|
96
|
+
image: minio/mc:latest
|
|
97
|
+
container_name: {{projectName}}-minio-init
|
|
98
|
+
depends_on:
|
|
99
|
+
minio:
|
|
100
|
+
condition: service_healthy
|
|
101
|
+
entrypoint: >
|
|
102
|
+
/bin/sh -c "
|
|
103
|
+
mc alias set myminio http://minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD};
|
|
104
|
+
mc mb --ignore-existing myminio/orchestrator-static;
|
|
105
|
+
mc mb --ignore-existing myminio/orchestrator-artifacts;
|
|
106
|
+
mc anonymous set download myminio/orchestrator-static;
|
|
107
|
+
echo 'MinIO buckets initialized successfully';
|
|
108
|
+
exit 0;
|
|
109
|
+
"
|
|
110
|
+
networks:
|
|
111
|
+
- {{projectName}}-network
|
|
112
|
+
profiles:
|
|
113
|
+
- object-storage
|
|
114
|
+
- full
|
|
115
|
+
restart: "no"
|
|
116
|
+
|
|
117
|
+
db-migrate:
|
|
118
|
+
image: cmac01/orchestrator-api:{{orchestratorVersion}}
|
|
119
|
+
container_name: {{projectName}}-db-migrate
|
|
120
|
+
depends_on:
|
|
121
|
+
postgres:
|
|
122
|
+
condition: service_healthy
|
|
123
|
+
environment:
|
|
124
|
+
NODE_ENV: production
|
|
125
|
+
RUN_MIGRATIONS: "true"
|
|
126
|
+
PERSISTENCE_MODE: postgres
|
|
127
|
+
DATABASE_URL: postgresql://${POSTGRES_USER:-orchestrator}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-orchestrator}
|
|
128
|
+
POSTGRES_HOST: postgres
|
|
129
|
+
POSTGRES_PORT: "5432"
|
|
130
|
+
POSTGRES_DB: ${POSTGRES_DB:-orchestrator}
|
|
131
|
+
POSTGRES_USER: ${POSTGRES_USER:-orchestrator}
|
|
132
|
+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
133
|
+
networks:
|
|
134
|
+
- {{projectName}}-network
|
|
135
|
+
restart: "no"
|
|
136
|
+
|
|
2
137
|
orchestrator-api:
|
|
3
138
|
image: cmac01/orchestrator-api:{{orchestratorVersion}}
|
|
4
139
|
container_name: {{projectName}}-orchestrator-api
|
|
5
|
-
|
|
140
|
+
depends_on:
|
|
141
|
+
postgres:
|
|
142
|
+
condition: service_healthy
|
|
143
|
+
db-migrate:
|
|
144
|
+
condition: service_completed_successfully
|
|
145
|
+
env_file: .env
|
|
146
|
+
environment:
|
|
147
|
+
NODE_ENV: production
|
|
148
|
+
API_HOST: "0.0.0.0"
|
|
149
|
+
API_PORT: "3001"
|
|
150
|
+
PERSISTENCE_MODE: postgres
|
|
151
|
+
RUN_MIGRATIONS: "false"
|
|
152
|
+
# PostgreSQL connection (service name resolves within Docker network)
|
|
153
|
+
POSTGRES_HOST: postgres
|
|
154
|
+
POSTGRES_PORT: "5432"
|
|
155
|
+
DATABASE_URL: postgresql://${POSTGRES_USER:-orchestrator}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-orchestrator}
|
|
156
|
+
# MinIO object storage (requires --profile object-storage or --profile full)
|
|
157
|
+
ENABLE_OBJECT_STORAGE: "${ENABLE_OBJECT_STORAGE:-true}"
|
|
158
|
+
OBJECT_STORAGE_PROVIDER: minio
|
|
159
|
+
OBJECT_STORAGE_ENDPOINT: "http://minio:9000"
|
|
160
|
+
OBJECT_STORAGE_REGION: us-east-1
|
|
161
|
+
OBJECT_STORAGE_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
|
|
162
|
+
OBJECT_STORAGE_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
|
|
163
|
+
BUCKET_STATIC: orchestrator-static
|
|
164
|
+
BUCKET_ARTIFACTS: orchestrator-artifacts
|
|
165
|
+
# Neo4j knowledge graph (requires --profile knowledge-graph or --profile full)
|
|
166
|
+
NEO4J_URI: "${NEO4J_URI:-bolt://neo4j:7687}"
|
|
167
|
+
NEO4J_USER: "${NEO4J_USER:-neo4j}"
|
|
168
|
+
NEO4J_PASSWORD: "${NEO4J_PASSWORD:-orchestrator_neo4j}"
|
|
169
|
+
ENABLE_KNOWLEDGE_GRAPH: "${ENABLE_KNOWLEDGE_GRAPH:-false}"
|
|
170
|
+
# JWT Authentication
|
|
171
|
+
JWT_SECRET: ${JWT_SECRET}
|
|
6
172
|
ports:
|
|
7
|
-
- "3001:3001"
|
|
173
|
+
- "3001:3001" # Orchestrator REST API + MCP server
|
|
8
174
|
volumes:
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
- NODE_ENV=development
|
|
175
|
+
# Staging area for Artifact Relay Pattern (TD-039)
|
|
176
|
+
# Sub-agents write artifacts here; main agent relays to MinIO via MCP
|
|
177
|
+
- /tmp/orchestrator:/tmp/orchestrator
|
|
13
178
|
healthcheck:
|
|
14
179
|
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:3001/api/v1/health"]
|
|
15
180
|
interval: 30s
|
|
16
|
-
timeout:
|
|
17
|
-
start_period: 10s
|
|
181
|
+
timeout: 10s
|
|
18
182
|
retries: 3
|
|
183
|
+
start_period: 15s
|
|
19
184
|
restart: unless-stopped
|
|
185
|
+
networks:
|
|
186
|
+
- {{projectName}}-network
|
|
187
|
+
|
|
188
|
+
volumes:
|
|
189
|
+
{{projectName}}-postgres-data:
|
|
190
|
+
driver: local
|
|
191
|
+
{{projectName}}-neo4j-data:
|
|
192
|
+
driver: local
|
|
193
|
+
{{projectName}}-neo4j-logs:
|
|
194
|
+
driver: local
|
|
195
|
+
{{projectName}}-minio-data:
|
|
196
|
+
driver: local
|
|
197
|
+
|
|
198
|
+
networks:
|
|
199
|
+
{{projectName}}-network:
|
|
200
|
+
driver: bridge
|
|
@@ -3,22 +3,29 @@
|
|
|
3
3
|
"mcpServers": {
|
|
4
4
|
"orchestrator-tools": {
|
|
5
5
|
"command": "npx",
|
|
6
|
-
"args": [
|
|
7
|
-
"@orchestrator-claude/mcp-server"
|
|
8
|
-
],
|
|
6
|
+
"args": ["@orchestrator-claude/mcp-server"],
|
|
9
7
|
"env": {
|
|
10
8
|
"ORCHESTRATOR_API_URL": "http://localhost:3001",
|
|
11
|
-
"
|
|
9
|
+
"ORCHESTRATOR_PROJECT_ID": "{{projectId}}",
|
|
10
|
+
"ORCHESTRATOR_AUTH_EMAIL": "{{authEmail}}",
|
|
11
|
+
"ORCHESTRATOR_AUTH_PASSWORD": "{{authPassword}}",
|
|
12
|
+
"NODE_ENV": "production"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"orchestrator-extended": {
|
|
16
|
+
"command": "npx",
|
|
17
|
+
"args": ["@orchestrator-claude/mcp-server", "--server", "extended"],
|
|
18
|
+
"env": {
|
|
19
|
+
"ORCHESTRATOR_API_URL": "http://localhost:3001",
|
|
20
|
+
"ORCHESTRATOR_PROJECT_ID": "{{projectId}}",
|
|
21
|
+
"ORCHESTRATOR_AUTH_EMAIL": "{{authEmail}}",
|
|
22
|
+
"ORCHESTRATOR_AUTH_PASSWORD": "{{authPassword}}",
|
|
12
23
|
"NODE_ENV": "production"
|
|
13
24
|
}
|
|
14
25
|
},
|
|
15
26
|
"perplexity": {
|
|
16
27
|
"command": "npx",
|
|
17
|
-
"args": [
|
|
18
|
-
"@orchestrator-claude/mcp-server",
|
|
19
|
-
"--server",
|
|
20
|
-
"perplexity"
|
|
21
|
-
],
|
|
28
|
+
"args": ["@orchestrator-claude/mcp-server", "--server", "perplexity"],
|
|
22
29
|
"env": {
|
|
23
30
|
"ORCHESTRATOR_API_URL": "http://localhost:3001",
|
|
24
31
|
"PERPLEXITY_API_KEY": "{{perplexityApiKey}}"
|
|
@@ -1,20 +1,200 @@
|
|
|
1
|
-
|
|
1
|
+
# docker-compose.yml — Generated by orchestrator init
|
|
2
|
+
# Stack: PostgreSQL (state) + MinIO (artifacts) + Neo4j (knowledge graph, optional) + API
|
|
3
|
+
#
|
|
4
|
+
# Ports:
|
|
5
|
+
# API: http://localhost:3001 (orchestrator REST API + MCP server)
|
|
6
|
+
# PostgreSQL: localhost:5432 (workflow state - direct access)
|
|
7
|
+
# MinIO S3: http://localhost:9000 (artifact storage - S3 API)
|
|
8
|
+
# MinIO UI: http://localhost:9001 (MinIO console)
|
|
9
|
+
# Neo4j HTTP: http://localhost:7474 (knowledge graph browser - requires --profile knowledge-graph)
|
|
10
|
+
# Neo4j Bolt: bolt://localhost:7687 (knowledge graph driver - requires --profile knowledge-graph)
|
|
11
|
+
#
|
|
12
|
+
# Usage:
|
|
13
|
+
# docker compose up -d # Start core services (API + PostgreSQL)
|
|
14
|
+
# docker compose --profile object-storage up -d # Add MinIO
|
|
15
|
+
# docker compose --profile knowledge-graph up -d # Add Neo4j
|
|
16
|
+
# docker compose --profile full up -d # Start everything
|
|
2
17
|
|
|
3
18
|
services:
|
|
4
|
-
|
|
5
|
-
image:
|
|
6
|
-
container_name:
|
|
19
|
+
postgres:
|
|
20
|
+
image: postgres:15-alpine
|
|
21
|
+
container_name: my-project-postgres
|
|
22
|
+
environment:
|
|
23
|
+
POSTGRES_DB: ${POSTGRES_DB:-orchestrator}
|
|
24
|
+
POSTGRES_USER: ${POSTGRES_USER:-orchestrator}
|
|
25
|
+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
26
|
+
volumes:
|
|
27
|
+
- my-project-postgres-data:/var/lib/postgresql/data
|
|
28
|
+
ports:
|
|
29
|
+
- "${POSTGRES_PORT:-5432}:5432" # PostgreSQL
|
|
30
|
+
healthcheck:
|
|
31
|
+
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-orchestrator} -d ${POSTGRES_DB:-orchestrator}"]
|
|
32
|
+
interval: 10s
|
|
33
|
+
timeout: 5s
|
|
34
|
+
retries: 5
|
|
35
|
+
start_period: 10s
|
|
36
|
+
restart: unless-stopped
|
|
37
|
+
networks:
|
|
38
|
+
- my-project-network
|
|
39
|
+
|
|
40
|
+
neo4j:
|
|
41
|
+
image: neo4j:5-community
|
|
42
|
+
container_name: my-project-neo4j
|
|
43
|
+
environment:
|
|
44
|
+
NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-orchestrator_neo4j}
|
|
45
|
+
NEO4J_PLUGINS: '["apoc"]'
|
|
46
|
+
NEO4J_dbms_memory_pagecache_size: 512M
|
|
47
|
+
NEO4J_dbms_memory_heap_initial__size: 512M
|
|
48
|
+
NEO4J_dbms_memory_heap_max__size: 1G
|
|
49
|
+
NEO4J_dbms_security_procedures_unrestricted: apoc.*
|
|
50
|
+
NEO4J_dbms_security_procedures_allowlist: apoc.*
|
|
51
|
+
ports:
|
|
52
|
+
- "${NEO4J_HTTP_PORT:-7474}:7474" # Neo4j browser
|
|
53
|
+
- "${NEO4J_BOLT_PORT:-7687}:7687" # Neo4j bolt
|
|
54
|
+
volumes:
|
|
55
|
+
- my-project-neo4j-data:/data
|
|
56
|
+
- my-project-neo4j-logs:/logs
|
|
57
|
+
healthcheck:
|
|
58
|
+
test: ["CMD", "wget", "-qO-", "http://localhost:7474"]
|
|
59
|
+
interval: 10s
|
|
60
|
+
timeout: 5s
|
|
61
|
+
retries: 5
|
|
62
|
+
start_period: 20s
|
|
63
|
+
restart: unless-stopped
|
|
64
|
+
networks:
|
|
65
|
+
- my-project-network
|
|
66
|
+
profiles:
|
|
67
|
+
- knowledge-graph
|
|
68
|
+
- full
|
|
69
|
+
|
|
70
|
+
minio:
|
|
71
|
+
image: minio/minio:latest
|
|
72
|
+
container_name: my-project-minio
|
|
73
|
+
command: server /data --console-address ":9001"
|
|
74
|
+
environment:
|
|
75
|
+
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
|
76
|
+
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
|
|
7
77
|
ports:
|
|
8
|
-
- "
|
|
78
|
+
- "${MINIO_S3_PORT:-9000}:9000" # MinIO S3 API
|
|
79
|
+
- "${MINIO_CONSOLE_PORT:-9001}:9001" # MinIO console
|
|
9
80
|
volumes:
|
|
10
|
-
-
|
|
81
|
+
- my-project-minio-data:/data
|
|
82
|
+
healthcheck:
|
|
83
|
+
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
|
84
|
+
interval: 10s
|
|
85
|
+
timeout: 5s
|
|
86
|
+
retries: 5
|
|
87
|
+
start_period: 10s
|
|
88
|
+
restart: unless-stopped
|
|
89
|
+
networks:
|
|
90
|
+
- my-project-network
|
|
91
|
+
profiles:
|
|
92
|
+
- object-storage
|
|
93
|
+
- full
|
|
94
|
+
|
|
95
|
+
minio-init:
|
|
96
|
+
image: minio/mc:latest
|
|
97
|
+
container_name: my-project-minio-init
|
|
98
|
+
depends_on:
|
|
99
|
+
minio:
|
|
100
|
+
condition: service_healthy
|
|
101
|
+
entrypoint: >
|
|
102
|
+
/bin/sh -c "
|
|
103
|
+
mc alias set myminio http://minio:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD};
|
|
104
|
+
mc mb --ignore-existing myminio/orchestrator-static;
|
|
105
|
+
mc mb --ignore-existing myminio/orchestrator-artifacts;
|
|
106
|
+
mc anonymous set download myminio/orchestrator-static;
|
|
107
|
+
echo 'MinIO buckets initialized successfully';
|
|
108
|
+
exit 0;
|
|
109
|
+
"
|
|
110
|
+
networks:
|
|
111
|
+
- my-project-network
|
|
112
|
+
profiles:
|
|
113
|
+
- object-storage
|
|
114
|
+
- full
|
|
115
|
+
restart: "no"
|
|
116
|
+
|
|
117
|
+
db-migrate:
|
|
118
|
+
image: cmac01/orchestrator-api:latest
|
|
119
|
+
container_name: my-project-db-migrate
|
|
120
|
+
depends_on:
|
|
121
|
+
postgres:
|
|
122
|
+
condition: service_healthy
|
|
123
|
+
environment:
|
|
124
|
+
NODE_ENV: production
|
|
125
|
+
RUN_MIGRATIONS: "true"
|
|
126
|
+
PERSISTENCE_MODE: postgres
|
|
127
|
+
DATABASE_URL: postgresql://${POSTGRES_USER:-orchestrator}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-orchestrator}
|
|
128
|
+
POSTGRES_HOST: postgres
|
|
129
|
+
POSTGRES_PORT: "5432"
|
|
130
|
+
POSTGRES_DB: ${POSTGRES_DB:-orchestrator}
|
|
131
|
+
POSTGRES_USER: ${POSTGRES_USER:-orchestrator}
|
|
132
|
+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
133
|
+
networks:
|
|
134
|
+
- my-project-network
|
|
135
|
+
restart: "no"
|
|
136
|
+
|
|
137
|
+
orchestrator-api:
|
|
138
|
+
image: cmac01/orchestrator-api:latest
|
|
139
|
+
container_name: my-project-orchestrator-api
|
|
140
|
+
depends_on:
|
|
141
|
+
postgres:
|
|
142
|
+
condition: service_healthy
|
|
143
|
+
db-migrate:
|
|
144
|
+
condition: service_completed_successfully
|
|
145
|
+
env_file: .env
|
|
11
146
|
environment:
|
|
12
|
-
|
|
13
|
-
|
|
147
|
+
NODE_ENV: production
|
|
148
|
+
API_HOST: "0.0.0.0"
|
|
149
|
+
API_PORT: "3001"
|
|
150
|
+
PERSISTENCE_MODE: postgres
|
|
151
|
+
RUN_MIGRATIONS: "false"
|
|
152
|
+
# PostgreSQL connection (service name resolves within Docker network)
|
|
153
|
+
POSTGRES_HOST: postgres
|
|
154
|
+
POSTGRES_PORT: "5432"
|
|
155
|
+
DATABASE_URL: postgresql://${POSTGRES_USER:-orchestrator}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-orchestrator}
|
|
156
|
+
# MinIO object storage (requires --profile object-storage or --profile full)
|
|
157
|
+
ENABLE_OBJECT_STORAGE: "${ENABLE_OBJECT_STORAGE:-true}"
|
|
158
|
+
OBJECT_STORAGE_PROVIDER: minio
|
|
159
|
+
OBJECT_STORAGE_ENDPOINT: "http://minio:9000"
|
|
160
|
+
OBJECT_STORAGE_REGION: us-east-1
|
|
161
|
+
OBJECT_STORAGE_ACCESS_KEY: ${MINIO_ROOT_USER:-minioadmin}
|
|
162
|
+
OBJECT_STORAGE_SECRET_KEY: ${MINIO_ROOT_PASSWORD}
|
|
163
|
+
BUCKET_STATIC: orchestrator-static
|
|
164
|
+
BUCKET_ARTIFACTS: orchestrator-artifacts
|
|
165
|
+
# Neo4j knowledge graph (requires --profile knowledge-graph or --profile full)
|
|
166
|
+
NEO4J_URI: "${NEO4J_URI:-bolt://neo4j:7687}"
|
|
167
|
+
NEO4J_USER: "${NEO4J_USER:-neo4j}"
|
|
168
|
+
NEO4J_PASSWORD: "${NEO4J_PASSWORD:-orchestrator_neo4j}"
|
|
169
|
+
ENABLE_KNOWLEDGE_GRAPH: "${ENABLE_KNOWLEDGE_GRAPH:-false}"
|
|
170
|
+
# JWT Authentication
|
|
171
|
+
JWT_SECRET: ${JWT_SECRET}
|
|
172
|
+
ports:
|
|
173
|
+
- "3001:3001" # Orchestrator REST API + MCP server
|
|
174
|
+
volumes:
|
|
175
|
+
# Staging area for Artifact Relay Pattern (TD-039)
|
|
176
|
+
# Sub-agents write artifacts here; main agent relays to MinIO via MCP
|
|
177
|
+
- /tmp/orchestrator:/tmp/orchestrator
|
|
14
178
|
healthcheck:
|
|
15
179
|
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1:3001/api/v1/health"]
|
|
16
180
|
interval: 30s
|
|
17
|
-
timeout:
|
|
18
|
-
start_period: 10s
|
|
181
|
+
timeout: 10s
|
|
19
182
|
retries: 3
|
|
183
|
+
start_period: 15s
|
|
20
184
|
restart: unless-stopped
|
|
185
|
+
networks:
|
|
186
|
+
- my-project-network
|
|
187
|
+
|
|
188
|
+
volumes:
|
|
189
|
+
my-project-postgres-data:
|
|
190
|
+
driver: local
|
|
191
|
+
my-project-neo4j-data:
|
|
192
|
+
driver: local
|
|
193
|
+
my-project-neo4j-logs:
|
|
194
|
+
driver: local
|
|
195
|
+
my-project-minio-data:
|
|
196
|
+
driver: local
|
|
197
|
+
|
|
198
|
+
networks:
|
|
199
|
+
my-project-network:
|
|
200
|
+
driver: bridge
|
package/package.json
CHANGED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release
|
|
3
|
+
description: Executa release oficial do Orchestrator via CI/CD. NUNCA faca bump manual de versao - sempre use esta skill.
|
|
4
|
+
allowed-tools: Read, Bash, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Release Skill
|
|
8
|
+
|
|
9
|
+
## REGRA CRITICA
|
|
10
|
+
|
|
11
|
+
**NUNCA faca bump de versao manualmente!**
|
|
12
|
+
|
|
13
|
+
- ❌ NUNCA edite `package.json` para alterar versao
|
|
14
|
+
- ❌ NUNCA crie tags git manualmente
|
|
15
|
+
- ❌ NUNCA faca `docker build` + `docker push` manual
|
|
16
|
+
- ✅ SEMPRE use esta skill para releases
|
|
17
|
+
|
|
18
|
+
Releases manuais causam dessincronizacao entre npm, Docker e package.json.
|
|
19
|
+
|
|
20
|
+
## Descricao
|
|
21
|
+
|
|
22
|
+
Esta skill automatiza o processo de release do Orchestrator:
|
|
23
|
+
|
|
24
|
+
1. Valida pre-requisitos (git clean, branch main)
|
|
25
|
+
2. Calcula nova versao (patch/minor/major)
|
|
26
|
+
3. Atualiza TODOS os arquivos de versao
|
|
27
|
+
4. Cria commit e tag
|
|
28
|
+
5. Push dispara CI/CD (npm publish + Docker build)
|
|
29
|
+
|
|
30
|
+
## Arquivos Atualizados pelo Script
|
|
31
|
+
|
|
32
|
+
O script atualiza automaticamente:
|
|
33
|
+
|
|
34
|
+
- `package.json` (root)
|
|
35
|
+
- `packages/cli/package.json`
|
|
36
|
+
- `packages/mcp-server/package.json`
|
|
37
|
+
- `packages/cli/src/index.ts` (CLI_VERSION constant)
|
|
38
|
+
- `src/infrastructure/templates/base/package.json.hbs` (template versions)
|
|
39
|
+
|
|
40
|
+
## Invocacao
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
/release patch # 1.5.6 -> 1.5.7
|
|
44
|
+
/release minor # 1.5.6 -> 1.6.0
|
|
45
|
+
/release major # 1.5.6 -> 2.0.0
|
|
46
|
+
/release 2.0.0 # Versao explicita
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Parametros
|
|
50
|
+
|
|
51
|
+
| Parametro | Tipo | Obrigatorio | Descricao |
|
|
52
|
+
|-----------|------|-------------|-----------|
|
|
53
|
+
| `version` | string | Sim | patch, minor, major, ou x.y.z |
|
|
54
|
+
| `--dry-run` | flag | Nao | Mostra o que seria feito sem executar |
|
|
55
|
+
| `--force` | flag | Nao | Pula confirmacoes interativas |
|
|
56
|
+
|
|
57
|
+
## Processo de Execucao
|
|
58
|
+
|
|
59
|
+
### 1. Pre-verificacao
|
|
60
|
+
|
|
61
|
+
Antes de executar o script, verifique:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Working tree limpa?
|
|
65
|
+
git status
|
|
66
|
+
|
|
67
|
+
# Na branch main?
|
|
68
|
+
git branch --show-current
|
|
69
|
+
|
|
70
|
+
# Ultima tag?
|
|
71
|
+
git describe --tags --abbrev=0
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Dry Run (Recomendado)
|
|
75
|
+
|
|
76
|
+
Sempre faca dry-run primeiro:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
./scripts/release.sh --dry-run patch
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Executar Release
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
./scripts/release.sh patch
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. Monitorar CI/CD
|
|
89
|
+
|
|
90
|
+
Apos o push, monitore o pipeline:
|
|
91
|
+
- GitHub Actions: https://github.com/orchestratorAII/orchestrator_claude/actions
|
|
92
|
+
|
|
93
|
+
## Exemplos de Uso
|
|
94
|
+
|
|
95
|
+
### Release de Patch (Bug Fix)
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
User: "Faca release do fix que acabamos de fazer"
|
|
99
|
+
|
|
100
|
+
Claude:
|
|
101
|
+
1. Verifico pre-requisitos
|
|
102
|
+
2. Executo: ./scripts/release.sh --dry-run patch
|
|
103
|
+
3. Confirmo com usuario
|
|
104
|
+
4. Executo: ./scripts/release.sh patch
|
|
105
|
+
5. Reporto URL do pipeline
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Release de Minor (Nova Feature)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
User: "Release da nova feature de dashboard"
|
|
112
|
+
|
|
113
|
+
Claude:
|
|
114
|
+
1. Verifico CHANGELOG atualizado
|
|
115
|
+
2. Executo: ./scripts/release.sh --dry-run minor
|
|
116
|
+
3. Confirmo com usuario
|
|
117
|
+
4. Executo: ./scripts/release.sh minor
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Release de Major (Breaking Change)
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
User: "Precisamos fazer release 2.0.0"
|
|
124
|
+
|
|
125
|
+
Claude:
|
|
126
|
+
1. Verifico CHANGELOG com breaking changes documentados
|
|
127
|
+
2. Executo: ./scripts/release.sh --dry-run 2.0.0
|
|
128
|
+
3. ALERTA sobre breaking changes
|
|
129
|
+
4. Confirmo DUAS vezes com usuario
|
|
130
|
+
5. Executo: ./scripts/release.sh 2.0.0
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Output Esperado
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
════════════════════════════════════════
|
|
137
|
+
Orchestrator Release Script
|
|
138
|
+
════════════════════════════════════════
|
|
139
|
+
|
|
140
|
+
🔍 Validating prerequisites...
|
|
141
|
+
✅ All prerequisites satisfied
|
|
142
|
+
🔍 Validating working tree...
|
|
143
|
+
✅ Working tree is clean
|
|
144
|
+
|
|
145
|
+
Release Plan:
|
|
146
|
+
Current version: 1.5.6
|
|
147
|
+
New version: 1.5.7
|
|
148
|
+
Git tag: v1.5.7
|
|
149
|
+
|
|
150
|
+
✅ Tag 'v1.5.7' is available
|
|
151
|
+
|
|
152
|
+
Files to update:
|
|
153
|
+
- package.json (root)
|
|
154
|
+
- packages/cli/package.json
|
|
155
|
+
- packages/mcp-server/package.json
|
|
156
|
+
- packages/cli/src/index.ts (CLI_VERSION)
|
|
157
|
+
- src/infrastructure/templates/base/package.json.hbs (templates)
|
|
158
|
+
|
|
159
|
+
Continue with release? (y/N): y
|
|
160
|
+
|
|
161
|
+
📝 Updating versions to 1.5.7...
|
|
162
|
+
✅ All versions updated to 1.5.7
|
|
163
|
+
✅ Version bump committed
|
|
164
|
+
✅ Tag created: v1.5.7
|
|
165
|
+
⬆️ Pushing to remote...
|
|
166
|
+
✅ Pushed main and tag v1.5.7
|
|
167
|
+
|
|
168
|
+
════════════════════════════════════════
|
|
169
|
+
Release v1.5.7 initiated!
|
|
170
|
+
════════════════════════════════════════
|
|
171
|
+
|
|
172
|
+
🚀 CI/CD pipeline will now:
|
|
173
|
+
- Build and publish Docker image
|
|
174
|
+
- Publish npm packages
|
|
175
|
+
|
|
176
|
+
📍 Monitor pipeline at:
|
|
177
|
+
https://github.com/orchestratorAII/orchestrator_claude/actions
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Troubleshooting
|
|
181
|
+
|
|
182
|
+
### Working tree not clean
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
❌ Working tree is not clean
|
|
186
|
+
Please commit or stash your changes
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Solucao:** Commit ou stash as mudancas pendentes antes do release.
|
|
190
|
+
|
|
191
|
+
### Tag already exists
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
❌ Tag 'v1.5.7' already exists
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Solucao:** Use uma versao diferente ou delete a tag existente (se foi erro).
|
|
198
|
+
|
|
199
|
+
### Not on main branch
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
⚠️ You are on branch 'feature-x', not main
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Solucao:** Merge para main primeiro, depois faca release.
|
|
206
|
+
|
|
207
|
+
## Integracao com CI/CD
|
|
208
|
+
|
|
209
|
+
O push da tag dispara automaticamente:
|
|
210
|
+
|
|
211
|
+
1. **GitHub Actions** (`release.yml`)
|
|
212
|
+
- Build e teste
|
|
213
|
+
- Publish npm packages
|
|
214
|
+
- Build e push Docker image
|
|
215
|
+
|
|
216
|
+
2. **Versoes Sincronizadas**
|
|
217
|
+
- npm: @orchestrator-claude/cli
|
|
218
|
+
- npm: @orchestrator-claude/mcp-server
|
|
219
|
+
- Docker: orchestrator-api:vX.Y.Z
|
|
220
|
+
|
|
221
|
+
## Notas Importantes
|
|
222
|
+
|
|
223
|
+
1. **Sempre faca dry-run primeiro** para verificar mudancas
|
|
224
|
+
2. **CHANGELOG deve estar atualizado** antes do release
|
|
225
|
+
3. **CI/CD faz o publish** - nunca publique manualmente
|
|
226
|
+
4. **Uma tag = uma versao** em todos os lugares
|
|
227
|
+
5. **Major releases** requerem confirmacao extra
|
|
228
|
+
|
|
229
|
+
## Checklist Pre-Release
|
|
230
|
+
|
|
231
|
+
- [ ] CHANGELOG.md atualizado com todas as mudancas
|
|
232
|
+
- [ ] Todos os testes passando (`npm test`)
|
|
233
|
+
- [ ] Build funcionando (`npm run build`)
|
|
234
|
+
- [ ] Working tree limpa
|
|
235
|
+
- [ ] Na branch main
|
|
236
|
+
- [ ] Dry-run executado e revisado
|