@nio-cli/cli 0.10.0 → 0.11.0

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.
Files changed (62) hide show
  1. package/.env.example +118 -114
  2. package/Dockerfile.gateway +20 -20
  3. package/README.md +539 -539
  4. package/dist/adapters/pg/auth-event-repository.js +4 -4
  5. package/dist/adapters/pg/auth-session-repository.js +2 -2
  6. package/dist/adapters/pg/client.js +62 -8
  7. package/dist/adapters/pg/client.js.map +1 -1
  8. package/dist/adapters/pg/dependency-event-repository.js +4 -4
  9. package/dist/adapters/pg/login-challenge-repository.js +2 -2
  10. package/dist/adapters/pg/login-ip-repository.js +3 -3
  11. package/dist/adapters/pg/session-repository.js +3 -3
  12. package/dist/cli/commands/auth.js +38 -16
  13. package/dist/cli/commands/auth.js.map +1 -1
  14. package/dist/cli/commands/completion.js +28 -28
  15. package/dist/cli/commands/docs/html.js +78 -78
  16. package/dist/cli/copy/auth.json +13 -13
  17. package/dist/cli/copy/flows.json +5 -5
  18. package/dist/cli/copy/init.json +15 -15
  19. package/dist/cli/copy/sync.json +3 -3
  20. package/dist/cli.js +3 -7
  21. package/dist/cli.js.map +1 -1
  22. package/dist/gateway/index.js +11 -1
  23. package/dist/gateway/index.js.map +1 -1
  24. package/dist/lib/auth/gateway-process.js +59 -2
  25. package/dist/lib/auth/gateway-process.js.map +1 -1
  26. package/dist/lib/auth/nio-config.js +58 -14
  27. package/dist/lib/auth/nio-config.js.map +1 -1
  28. package/dist/lib/clients/client-configs.js +7 -3
  29. package/dist/lib/clients/client-configs.js.map +1 -1
  30. package/dist/lib/clients/nio-oc-config.js +84 -0
  31. package/dist/lib/clients/nio-oc-config.js.map +1 -0
  32. package/dist/lib/exec/plan-delegate.js.map +1 -1
  33. package/dist/lib/exec/qwen-client.js +39 -24
  34. package/dist/lib/exec/qwen-client.js.map +1 -1
  35. package/dist/lib/shutdown.js +25 -0
  36. package/dist/lib/shutdown.js.map +1 -0
  37. package/dist/mcp-server-lang.js +0 -0
  38. package/dist/mcp-server.js +0 -0
  39. package/dist/profiles/analyst.js +1 -0
  40. package/dist/profiles/analyst.js.map +1 -1
  41. package/dist/profiles/bi.js +1 -0
  42. package/dist/profiles/bi.js.map +1 -1
  43. package/dist/profiles/dba.js +3 -2
  44. package/dist/profiles/dba.js.map +1 -1
  45. package/dist/profiles/mcps.js.map +1 -1
  46. package/dist/profiles/scientist.js +3 -1
  47. package/dist/profiles/scientist.js.map +1 -1
  48. package/dist/tui/app.js +44 -13
  49. package/dist/tui/app.js.map +1 -1
  50. package/dist/tui/components.js +9 -8
  51. package/dist/tui/components.js.map +1 -1
  52. package/dist/tui/launch.js +16 -2
  53. package/dist/tui/launch.js.map +1 -1
  54. package/dist/tui/opencode.js +17 -0
  55. package/dist/tui/opencode.js.map +1 -1
  56. package/dist/tui/palette.js +29 -0
  57. package/dist/tui/palette.js.map +1 -1
  58. package/dist/tui/state.js +146 -92
  59. package/dist/tui/state.js.map +1 -1
  60. package/docker/docker-compose.yml +114 -114
  61. package/docker/kong.yml +59 -55
  62. package/package.json +97 -97
package/dist/tui/state.js CHANGED
@@ -43,6 +43,33 @@ export function reconcilePendingPermissions(prev, rawList) {
43
43
  return prev;
44
44
  return { ...prev, permissions: [...kept, ...added] };
45
45
  }
46
+ export function toQuestionReq(raw) {
47
+ const r = raw;
48
+ const id = r.requestID ?? r.id;
49
+ if (!id || !r.sessionID)
50
+ return null;
51
+ const rawQs = r.questions ?? r.input?.questions ?? [];
52
+ const questions = rawQs.map((q) => ({
53
+ question: String(q.question ?? ''),
54
+ header: q.header ? String(q.header) : undefined,
55
+ multi: Boolean(q.multi ?? q.multiple),
56
+ options: (q.options ?? []).map((o) => ({
57
+ label: String(o.label ?? o.value ?? o ?? ''),
58
+ description: o.description ? String(o.description) : undefined,
59
+ })),
60
+ }));
61
+ return { id: String(id), sessionId: String(r.sessionID), questions };
62
+ }
63
+ export function reconcilePendingQuestions(prev, rawList) {
64
+ const live = rawList.map(toQuestionReq).filter((r) => r !== null);
65
+ const liveIds = new Set(live.map((r) => r.id));
66
+ const kept = prev.questions.filter((r) => liveIds.has(r.id));
67
+ const known = new Set(kept.map((r) => r.id));
68
+ const added = live.filter((r) => !known.has(r.id));
69
+ if (added.length === 0 && kept.length === prev.questions.length)
70
+ return prev;
71
+ return { ...prev, questions: [...kept, ...added] };
72
+ }
46
73
  function errorHint(name) {
47
74
  switch (name) {
48
75
  case 'ProviderAuthError':
@@ -59,6 +86,7 @@ export const emptyChat = {
59
86
  messages: [],
60
87
  busy: false,
61
88
  permissions: [],
89
+ questions: [],
62
90
  toasts: [],
63
91
  todos: [],
64
92
  files: [],
@@ -67,52 +95,75 @@ export const emptyChat = {
67
95
  diff: [],
68
96
  };
69
97
  const PENDING_USER = 'pending-user';
70
- function clone(prev) {
71
- return {
72
- messages: prev.messages.map((m) => ({ ...m, parts: m.parts.map((p) => ({ ...p })) })),
73
- busy: prev.busy,
74
- permissions: prev.permissions,
75
- toasts: prev.toasts,
76
- todos: prev.todos,
77
- files: prev.files,
78
- retry: prev.retry,
79
- error: prev.error,
80
- diff: prev.diff,
81
- };
98
+ function withoutPending(messages, realId) {
99
+ if (realId === PENDING_USER)
100
+ return messages;
101
+ const i = messages.findIndex((m) => m.id === PENDING_USER);
102
+ if (i < 0)
103
+ return messages;
104
+ return [...messages.slice(0, i), ...messages.slice(i + 1)];
82
105
  }
83
- function upsertMessage(state, id, role) {
84
- let msg = state.messages.find((m) => m.id === id);
85
- if (!msg) {
86
- msg = { id, role, parts: [] };
87
- state.messages.push(msg);
88
- }
89
- return msg;
106
+ function withMessage(messages, id, role, transform, meta) {
107
+ const i = messages.findIndex((m) => m.id === id);
108
+ if (i < 0)
109
+ return [...messages, { id, role, parts: transform([]), ...meta }];
110
+ const msg = messages[i];
111
+ const parts = transform(msg.parts);
112
+ const metaChanged = !!meta && ((meta.mode !== undefined && meta.mode !== msg.mode) || (meta.summary !== undefined && meta.summary !== msg.summary));
113
+ if (parts === msg.parts && !metaChanged)
114
+ return messages;
115
+ const next = messages.slice();
116
+ next[i] = { ...msg, parts, ...meta };
117
+ return next;
90
118
  }
91
- function upsertPart(msg, id, kind) {
92
- let part = msg.parts.find((p) => p.id === id);
93
- if (!part) {
94
- part = { id, kind, text: '' };
95
- msg.parts.push(part);
96
- }
97
- part.kind = kind;
98
- return part;
119
+ function metaFromInfo(info) {
120
+ const meta = {};
121
+ if (typeof info.mode === 'string')
122
+ meta.mode = info.mode;
123
+ if (typeof info.summary === 'boolean')
124
+ meta.summary = info.summary;
125
+ return meta;
99
126
  }
100
- function reconcilePending(state, realId) {
101
- if (realId === PENDING_USER)
102
- return;
103
- const i = state.messages.findIndex((m) => m.id === PENDING_USER);
104
- if (i >= 0)
105
- state.messages.splice(i, 1);
127
+ function computePart(prev, raw) {
128
+ const id = raw.id;
129
+ const type = raw.type ?? 'text';
130
+ if (type === 'step-start')
131
+ return null;
132
+ if (type === 'step-finish') {
133
+ return {
134
+ id, kind: 'step', text: prev?.text ?? '',
135
+ step: { tokensIn: raw.tokens?.input ?? 0, tokensOut: raw.tokens?.output ?? 0, cost: raw.cost ?? 0 },
136
+ };
137
+ }
138
+ if (type === 'tool') {
139
+ return {
140
+ id, kind: 'tool', text: raw.state?.title ?? raw.tool ?? 'tool',
141
+ tool: {
142
+ name: raw.tool ?? 'tool', status: raw.state?.status ?? 'running',
143
+ input: raw.state?.input, output: String(raw.state?.output ?? raw.state?.error ?? ''),
144
+ },
145
+ };
146
+ }
147
+ if (typeof raw.text === 'string') {
148
+ return { id, kind: type === 'reasoning' ? 'reasoning' : 'text', text: raw.text };
149
+ }
150
+ return prev ?? null;
106
151
  }
107
- function applyPart(state, raw) {
108
- const messageID = raw.messageID;
109
- if (!messageID || !raw.id)
110
- return;
111
- reconcilePending(state, messageID);
112
- applyPartInto(upsertMessage(state, messageID, 'assistant'), raw);
152
+ function applyRawPart(parts, raw) {
153
+ if (!raw.id)
154
+ return parts;
155
+ const i = parts.findIndex((p) => p.id === raw.id);
156
+ const next = computePart(i < 0 ? undefined : parts[i], raw);
157
+ if (next === null || next === parts[i])
158
+ return parts;
159
+ if (i < 0)
160
+ return [...parts, next];
161
+ const arr = parts.slice();
162
+ arr[i] = next;
163
+ return arr;
113
164
  }
114
165
  export function applyEvent(prev, evt) {
115
- const state = clone(prev);
166
+ const state = { ...prev };
116
167
  const p = evt.properties ?? {};
117
168
  tlog('event', evt.type, JSON.stringify(p).slice(0, 200));
118
169
  const etype = evt.type;
@@ -123,18 +174,34 @@ export function applyEvent(prev, evt) {
123
174
  }
124
175
  return state;
125
176
  }
177
+ if (etype === 'question.asked' || etype === 'question.updated') {
178
+ const req = toQuestionReq(p);
179
+ if (req && !state.questions.some((x) => x.id === req.id)) {
180
+ state.questions = [...state.questions, req];
181
+ }
182
+ return state;
183
+ }
184
+ if (etype === 'question.replied' || etype === 'question.answered') {
185
+ const id = (p.requestID ?? p.questionID);
186
+ state.questions = id ? state.questions.filter((x) => x.id !== id) : [];
187
+ return state;
188
+ }
126
189
  switch (evt.type) {
127
190
  case 'message.updated': {
128
191
  const info = (p.info ?? p);
129
192
  if (info.id) {
130
- reconcilePending(state, info.id);
131
- upsertMessage(state, info.id, info.role === 'user' ? 'user' : 'assistant');
193
+ const role = info.role === 'user' ? 'user' : 'assistant';
194
+ state.messages = withMessage(withoutPending(state.messages, info.id), info.id, role, (parts) => parts, metaFromInfo(info));
132
195
  }
133
196
  break;
134
197
  }
135
- case 'message.part.updated':
136
- applyPart(state, (p.part ?? p));
198
+ case 'message.part.updated': {
199
+ const raw = (p.part ?? p);
200
+ if (raw.messageID && raw.id) {
201
+ state.messages = withMessage(withoutPending(state.messages, raw.messageID), raw.messageID, 'assistant', (parts) => applyRawPart(parts, raw));
202
+ }
137
203
  break;
204
+ }
138
205
  case 'permission.replied': {
139
206
  const id = p.permissionID;
140
207
  state.permissions = id ? state.permissions.filter((x) => x.id !== id) : [];
@@ -229,65 +296,29 @@ export function applyEvent(prev, evt) {
229
296
  return state;
230
297
  }
231
298
  export function syncMessages(prev, raw, busy) {
232
- const state = {
233
- messages: [],
234
- busy,
235
- permissions: prev.permissions,
236
- toasts: prev.toasts,
237
- todos: prev.todos,
238
- files: prev.files,
239
- retry: busy ? prev.retry : null,
240
- error: prev.error,
241
- diff: prev.diff,
242
- };
299
+ let messages = [];
243
300
  for (const m of raw) {
244
301
  if (!m.info?.id)
245
302
  continue;
246
- const msg = upsertMessage(state, m.info.id, m.info.role === 'user' ? 'user' : 'assistant');
247
- for (const raw of m.parts ?? [])
248
- applyPartInto(msg, raw);
303
+ const role = m.info.role === 'user' ? 'user' : 'assistant';
304
+ const meta = metaFromInfo(m.info);
305
+ messages = withMessage(messages, m.info.id, role, (parts) => {
306
+ let acc = parts;
307
+ for (const rp of m.parts ?? [])
308
+ acc = applyRawPart(acc, rp);
309
+ return acc;
310
+ }, meta);
249
311
  }
250
312
  const pending = prev.messages.find((x) => x.id === PENDING_USER);
251
- if (pending && !state.messages.some((x) => x.role === 'user' && sameText(x, pending))) {
252
- state.messages.push(pending);
313
+ if (pending && !messages.some((x) => x.role === 'user' && sameText(x, pending))) {
314
+ messages = [...messages, pending];
253
315
  }
254
- return state;
316
+ return { ...prev, messages, busy, retry: busy ? prev.retry : null };
255
317
  }
256
318
  function sameText(a, b) {
257
319
  const t = (m) => m.parts.map((p) => p.text).join('').trim();
258
320
  return t(a) === t(b);
259
321
  }
260
- function applyPartInto(msg, raw) {
261
- const part = raw;
262
- if (!part.id)
263
- return;
264
- const type = part.type ?? 'text';
265
- if (type === 'step-start')
266
- return;
267
- if (type === 'step-finish') {
268
- const cp = upsertPart(msg, part.id, 'step');
269
- cp.step = {
270
- tokensIn: part.tokens?.input ?? 0,
271
- tokensOut: part.tokens?.output ?? 0,
272
- cost: part.cost ?? 0,
273
- };
274
- return;
275
- }
276
- if (type === 'tool') {
277
- const cp = upsertPart(msg, part.id, 'tool');
278
- cp.text = part.state?.title ?? part.tool ?? 'tool';
279
- cp.tool = {
280
- name: part.tool ?? 'tool',
281
- status: part.state?.status ?? 'running',
282
- input: part.state?.input,
283
- output: String(part.state?.output ?? part.state?.error ?? ''),
284
- };
285
- return;
286
- }
287
- if (typeof part.text === 'string') {
288
- upsertPart(msg, part.id, type === 'reasoning' ? 'reasoning' : 'text').text = part.text;
289
- }
290
- }
291
322
  export function pushUserMessage(prev, text) {
292
323
  return {
293
324
  messages: [
@@ -296,6 +327,7 @@ export function pushUserMessage(prev, text) {
296
327
  ],
297
328
  busy: true,
298
329
  permissions: prev.permissions,
330
+ questions: prev.questions,
299
331
  toasts: prev.toasts,
300
332
  todos: [],
301
333
  files: [],
@@ -304,6 +336,28 @@ export function pushUserMessage(prev, text) {
304
336
  diff: [],
305
337
  };
306
338
  }
339
+ const SCAFFOLD_MARKERS = [
340
+ 'objective', 'important details', 'work state', 'completed',
341
+ 'active', 'blocked', 'next move', 'relevant files',
342
+ ];
343
+ export function looksLikeScaffolding(text) {
344
+ if (!text)
345
+ return false;
346
+ let hits = 0;
347
+ for (const m of SCAFFOLD_MARKERS) {
348
+ if (new RegExp(`(^|\\n)\\s*#{0,3}\\s*${m}\\b`, 'i').test(text))
349
+ hits++;
350
+ if (hits >= 3)
351
+ return true;
352
+ }
353
+ return false;
354
+ }
355
+ export function isInternalMessage(m) {
356
+ if (m.mode === 'compaction' || m.summary === true)
357
+ return true;
358
+ const text = m.parts.filter((p) => p.kind === 'text').map((p) => p.text).join('\n');
359
+ return looksLikeScaffolding(text);
360
+ }
307
361
  export function summarizeToolInput(input) {
308
362
  if (!input)
309
363
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/tui/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/tui/state.ts"],"names":[],"mappings":"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"}
@@ -1,114 +1,114 @@
1
- # Compose file for NIO CLI (dockerized) - T3
2
- name: nio
3
-
4
- networks:
5
- nio-net:
6
- name: nio-net
7
- driver: bridge
8
- nio-infra:
9
- name: nio-infra
10
- driver: bridge
11
-
12
- volumes:
13
- nio_portainer_data: { name: nio_portainer_data }
14
- nio_headroom_cache: { name: nio_headroom_cache }
15
-
16
- services:
17
- nio-gateway:
18
- build:
19
- context: ..
20
- dockerfile: Dockerfile.gateway
21
- image: nio-gateway:local
22
- container_name: nio-gateway
23
- restart: unless-stopped
24
- env_file: [ ../.env ] # NIO_DATABASE_URL, JWT_SECRET (gitignored)
25
- environment:
26
- # o gateway lê env via env() que PREFIXA NIO_ → a var é NIO_GATEWAY_HOST
27
- # (não GATEWAY_HOST). 0.0.0.0 = ouvir na interface da rede, não só loopback.
28
- NIO_GATEWAY_HOST: "0.0.0.0"
29
- ports: [ "127.0.0.1:3000:3000" ] # acesso direto da CLI (padrão)
30
- healthcheck:
31
- test: ["CMD-SHELL", "curl -fsS http://localhost:3000/health || exit 1"]
32
- interval: 10s
33
- timeout: 3s
34
- retries: 5
35
- start_period: 15s
36
- networks: [ nio-net ]
37
-
38
- headroom:
39
- image: ghcr.io/headroomlabs-ai/headroom@sha256:35b799e94eef4644cb15a2e695b4b99698fe7668614623e9338cb10c10ececf9 # headroom:latest, pinado 2026-09-03
40
- container_name: nio-headroom
41
- restart: unless-stopped
42
- command: ["--host", "0.0.0.0", "--port", "8787"]
43
- environment:
44
- OPENAI_TARGET_API_URL: "${NIO_HEADROOM_OPENAI_TARGET:-https://opencode.ai/zen/v1}"
45
- HEADROOM_UPDATE_CHECK: "off"
46
- ports: [ "127.0.0.1:8787:8787" ]
47
- volumes: [ "nio_headroom_cache:/root/.headroom" ]
48
- networks: [ nio-net ]
49
-
50
- kong:
51
- image: kong@sha256:2a8cf3b110cdaba1cb00adc665b8635ed1fc75c907f7a4298613c68e4976de0a # kong:3.9, pinado 2026-09-03
52
- container_name: nio-kong
53
- restart: unless-stopped
54
- environment:
55
- KONG_DATABASE: "off"
56
- KONG_DECLARATIVE_CONFIG: /kong/kong.yml
57
- KONG_PROXY_LISTEN: "0.0.0.0:8000"
58
- # Admin API desligada (auditoria M-7) — config é declarativa (kong.yml),
59
- # nada chama o admin em runtime.
60
- KONG_ADMIN_LISTEN: "off"
61
- volumes: [ "./kong.yml:/kong/kong.yml:ro" ] # docker/kong.yml (T3)
62
- ports:
63
- - "127.0.0.1:${NIO_KONG_PROXY_PORT:-8000}:8000" # sem colisão: Portainer largou :8000
64
- depends_on:
65
- nio-gateway: { condition: service_healthy }
66
- networks: [ nio-net ]
67
-
68
- # ── plano de infra (toca o docker.sock) — rede nio-infra ─────────────
69
-
70
- mcp-gateway:
71
- image: docker/mcp-gateway@sha256:f5a679a05fc39022a046167bef92aeeb01bcd59485ad27843ae5227db7950688 # docker/mcp-gateway:latest, pinado 2026-09-03
72
- container_name: nio-mcp-gateway
73
- restart: unless-stopped
74
- command: ["--transport=streaming", "--port=8811", "--servers=docker"]
75
- ports: [ "127.0.0.1:8811:8811" ]
76
- # Mount DIRETO de propósito: o `--servers=docker` existe pra CRIAR containers
77
- # (tools de Docker pro operador de IA). Um proxy que permita isso é a própria
78
- # fuga — então a contenção aqui é: rede isolada + rodar opt-in
79
- # (`nio docker toolkit up/down`). Contenção real = daemon dedicado (backlog).
80
- volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ]
81
- networks: [ nio-infra ]
82
-
83
- docker-socket-proxy:
84
- image: ghcr.io/tecnativa/docker-socket-proxy:0.3.0@sha256:9e4b9e7517a6b660f2cc903a19b257b1852d5b3344794e3ea334ff00ae677ac2
85
- container_name: nio-docker-proxy
86
- restart: unless-stopped
87
- environment:
88
- # GET-only: sem POST → ninguém cria/inicia/exec container através dele.
89
- CONTAINERS: 1
90
- IMAGES: 1
91
- NETWORKS: 1
92
- VOLUMES: 1
93
- INFO: 1
94
- VERSION: 1
95
- PING: 1
96
- # POST/EXEC/AUTH/SECRETS/CONFIGS/SWARM/SERVICES/SYSTEM/PLUGINS: 0 (default).
97
- volumes: [ "/var/run/docker.sock:/var/run/docker.sock:ro" ]
98
- networks: [ nio-infra ]
99
-
100
- portainer:
101
- image: portainer/portainer-ce@sha256:511f3f06c96fe3b993ebeaafde311c1959cae73a7ef825dba6397d51b450dffa # portainer-ce:lts, pinado 2026-09-03
102
- container_name: nio-portainer
103
- restart: unless-stopped
104
- # Fala com o daemon SÓ pelo proxy GET-only (auditoria M-8) — não monta o
105
- # docker.sock. Efeito: dashboard read-mostly (vê containers/logs/stats/redes;
106
- # não sobe/derruba pela UI). Se o time precisar gerenciar pela UI, ligue
107
- # `POST: 1` no docker-socket-proxy — mas aí Portainer volta a poder criar
108
- # container = root no host.
109
- command: -H tcp://docker-socket-proxy:2375
110
- ports: [ "127.0.0.1:9443:9443" ] # UI (edge :8000 REMOVIDO — libera p/ Kong)
111
- volumes:
112
- - "nio_portainer_data:/data"
113
- depends_on: [ docker-socket-proxy ]
114
- networks: [ nio-infra ]
1
+ # Compose file for NIO CLI (dockerized) - T3
2
+ name: nio
3
+
4
+ networks:
5
+ nio-net:
6
+ name: nio-net
7
+ driver: bridge
8
+ nio-infra:
9
+ name: nio-infra
10
+ driver: bridge
11
+
12
+ volumes:
13
+ nio_portainer_data: { name: nio_portainer_data }
14
+ nio_headroom_cache: { name: nio_headroom_cache }
15
+
16
+ services:
17
+ nio-gateway:
18
+ build:
19
+ context: ..
20
+ dockerfile: Dockerfile.gateway
21
+ image: nio-gateway:local
22
+ container_name: nio-gateway
23
+ restart: unless-stopped
24
+ env_file: [ ../.env ] # NIO_DATABASE_URL, JWT_SECRET (gitignored)
25
+ environment:
26
+ # o gateway lê env via env() que PREFIXA NIO_ → a var é NIO_GATEWAY_HOST
27
+ # (não GATEWAY_HOST). 0.0.0.0 = ouvir na interface da rede, não só loopback.
28
+ NIO_GATEWAY_HOST: "0.0.0.0"
29
+ ports: [ "127.0.0.1:3000:3000" ] # acesso direto da CLI (padrão)
30
+ healthcheck:
31
+ test: ["CMD-SHELL", "curl -fsS http://localhost:3000/health || exit 1"]
32
+ interval: 10s
33
+ timeout: 3s
34
+ retries: 5
35
+ start_period: 15s
36
+ networks: [ nio-net ]
37
+
38
+ headroom:
39
+ image: ghcr.io/headroomlabs-ai/headroom@sha256:35b799e94eef4644cb15a2e695b4b99698fe7668614623e9338cb10c10ececf9 # headroom:latest, pinado 2026-09-03
40
+ container_name: nio-headroom
41
+ restart: unless-stopped
42
+ command: ["--host", "0.0.0.0", "--port", "8787"]
43
+ environment:
44
+ OPENAI_TARGET_API_URL: "${NIO_HEADROOM_OPENAI_TARGET:-https://opencode.ai/zen/v1}"
45
+ HEADROOM_UPDATE_CHECK: "off"
46
+ ports: [ "127.0.0.1:8787:8787" ]
47
+ volumes: [ "nio_headroom_cache:/root/.headroom" ]
48
+ networks: [ nio-net ]
49
+
50
+ kong:
51
+ image: kong@sha256:2a8cf3b110cdaba1cb00adc665b8635ed1fc75c907f7a4298613c68e4976de0a # kong:3.9, pinado 2026-09-03
52
+ container_name: nio-kong
53
+ restart: unless-stopped
54
+ environment:
55
+ KONG_DATABASE: "off"
56
+ KONG_DECLARATIVE_CONFIG: /kong/kong.yml
57
+ KONG_PROXY_LISTEN: "0.0.0.0:8000"
58
+ # Admin API desligada (auditoria M-7) — config é declarativa (kong.yml),
59
+ # nada chama o admin em runtime.
60
+ KONG_ADMIN_LISTEN: "off"
61
+ volumes: [ "./kong.yml:/kong/kong.yml:ro" ] # docker/kong.yml (T3)
62
+ ports:
63
+ - "127.0.0.1:${NIO_KONG_PROXY_PORT:-8000}:8000" # sem colisão: Portainer largou :8000
64
+ depends_on:
65
+ nio-gateway: { condition: service_healthy }
66
+ networks: [ nio-net ]
67
+
68
+ # ── plano de infra (toca o docker.sock) — rede nio-infra ─────────────
69
+
70
+ mcp-gateway:
71
+ image: docker/mcp-gateway@sha256:f5a679a05fc39022a046167bef92aeeb01bcd59485ad27843ae5227db7950688 # docker/mcp-gateway:latest, pinado 2026-09-03
72
+ container_name: nio-mcp-gateway
73
+ restart: unless-stopped
74
+ command: ["--transport=streaming", "--port=8811", "--servers=docker"]
75
+ ports: [ "127.0.0.1:8811:8811" ]
76
+ # Mount DIRETO de propósito: o `--servers=docker` existe pra CRIAR containers
77
+ # (tools de Docker pro operador de IA). Um proxy que permita isso é a própria
78
+ # fuga — então a contenção aqui é: rede isolada + rodar opt-in
79
+ # (`nio docker toolkit up/down`). Contenção real = daemon dedicado (backlog).
80
+ volumes: [ "/var/run/docker.sock:/var/run/docker.sock" ]
81
+ networks: [ nio-infra ]
82
+
83
+ docker-socket-proxy:
84
+ image: ghcr.io/tecnativa/docker-socket-proxy:0.3.0@sha256:9e4b9e7517a6b660f2cc903a19b257b1852d5b3344794e3ea334ff00ae677ac2
85
+ container_name: nio-docker-proxy
86
+ restart: unless-stopped
87
+ environment:
88
+ # GET-only: sem POST → ninguém cria/inicia/exec container através dele.
89
+ CONTAINERS: 1
90
+ IMAGES: 1
91
+ NETWORKS: 1
92
+ VOLUMES: 1
93
+ INFO: 1
94
+ VERSION: 1
95
+ PING: 1
96
+ # POST/EXEC/AUTH/SECRETS/CONFIGS/SWARM/SERVICES/SYSTEM/PLUGINS: 0 (default).
97
+ volumes: [ "/var/run/docker.sock:/var/run/docker.sock:ro" ]
98
+ networks: [ nio-infra ]
99
+
100
+ portainer:
101
+ image: portainer/portainer-ce@sha256:511f3f06c96fe3b993ebeaafde311c1959cae73a7ef825dba6397d51b450dffa # portainer-ce:lts, pinado 2026-09-03
102
+ container_name: nio-portainer
103
+ restart: unless-stopped
104
+ # Fala com o daemon SÓ pelo proxy GET-only (auditoria M-8) — não monta o
105
+ # docker.sock. Efeito: dashboard read-mostly (vê containers/logs/stats/redes;
106
+ # não sobe/derruba pela UI). Se o time precisar gerenciar pela UI, ligue
107
+ # `POST: 1` no docker-socket-proxy — mas aí Portainer volta a poder criar
108
+ # container = root no host.
109
+ command: -H tcp://docker-socket-proxy:2375
110
+ ports: [ "127.0.0.1:9443:9443" ] # UI (edge :8000 REMOVIDO — libera p/ Kong)
111
+ volumes:
112
+ - "nio_portainer_data:/data"
113
+ depends_on: [ docker-socket-proxy ]
114
+ networks: [ nio-infra ]