zinkee 0.1.44 → 0.1.46

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 (94) hide show
  1. package/README.md +4 -0
  2. package/dist/chunk-MHEVRMDX.js +1230 -0
  3. package/dist/chunk-MHEVRMDX.js.map +1 -0
  4. package/{src/utils/examples.ts → dist/examples-67U5IRBS.js} +866 -1141
  5. package/dist/examples-67U5IRBS.js.map +1 -0
  6. package/dist/index.js +1145 -8456
  7. package/dist/index.js.map +1 -1
  8. package/package.json +6 -3
  9. package/.github/workflows/npm-publish.yml +0 -77
  10. package/.github/workflows/pr-checks.yml +0 -36
  11. package/AGENTS.md +0 -110
  12. package/docs/cli-contract.md +0 -41
  13. package/docs/npm-release.md +0 -64
  14. package/docs/superpowers/plans/2026-03-24-zinkee-cli-implementation.md +0 -837
  15. package/docs/superpowers/plans/2026-03-25-cli-backend-error-contract.md +0 -503
  16. package/docs/superpowers/plans/2026-03-26-display-freeform-create.md +0 -389
  17. package/docs/superpowers/specs/2026-03-24-zinkee-cli-backend-blockers.md +0 -172
  18. package/docs/superpowers/specs/2026-03-24-zinkee-cli-design.md +0 -1576
  19. package/docs/superpowers/specs/2026-03-24-zinkee-cli-e2e-checklist.md +0 -215
  20. package/docs/superpowers/specs/2026-03-24-zinkee-cli-e2e-design.md +0 -492
  21. package/docs/superpowers/specs/2026-03-24-zinkee-cli-e2e-status.md +0 -307
  22. package/docs/superpowers/specs/2026-07-30-cli-pr-checks-design.md +0 -37
  23. package/src/api/automations.ts +0 -404
  24. package/src/api/comments.ts +0 -51
  25. package/src/api/displays.ts +0 -337
  26. package/src/api/document-templates.ts +0 -110
  27. package/src/api/files.ts +0 -50
  28. package/src/api/formulas.test.ts +0 -65
  29. package/src/api/formulas.ts +0 -67
  30. package/src/api/logs.ts +0 -34
  31. package/src/api/navigation.ts +0 -70
  32. package/src/api/records.ts +0 -184
  33. package/src/api/schemas.ts +0 -148
  34. package/src/api/teamspace.ts +0 -110
  35. package/src/cli-examples.ts +0 -130
  36. package/src/cli-runner.ts +0 -95
  37. package/src/client.test.ts +0 -189
  38. package/src/client.ts +0 -269
  39. package/src/command-registry.ts +0 -882
  40. package/src/commands/automations.test.ts +0 -1030
  41. package/src/commands/automations.ts +0 -2102
  42. package/src/commands/comments.test.ts +0 -214
  43. package/src/commands/comments.ts +0 -303
  44. package/src/commands/config.test.ts +0 -81
  45. package/src/commands/config.ts +0 -150
  46. package/src/commands/displays.test.ts +0 -1105
  47. package/src/commands/displays.ts +0 -1442
  48. package/src/commands/document-templates.test.ts +0 -569
  49. package/src/commands/document-templates.ts +0 -563
  50. package/src/commands/files.test.ts +0 -284
  51. package/src/commands/files.ts +0 -280
  52. package/src/commands/formulas.test.ts +0 -194
  53. package/src/commands/formulas.ts +0 -243
  54. package/src/commands/logs.test.ts +0 -123
  55. package/src/commands/logs.ts +0 -159
  56. package/src/commands/navigation.test.ts +0 -211
  57. package/src/commands/navigation.ts +0 -348
  58. package/src/commands/profiles.test.ts +0 -191
  59. package/src/commands/profiles.ts +0 -303
  60. package/src/commands/records.test.ts +0 -860
  61. package/src/commands/records.ts +0 -883
  62. package/src/commands/schemas.test.ts +0 -1252
  63. package/src/commands/schemas.ts +0 -890
  64. package/src/commands/teamspace.test.ts +0 -229
  65. package/src/commands/teamspace.ts +0 -546
  66. package/src/completion/engine.test.ts +0 -138
  67. package/src/completion/engine.ts +0 -168
  68. package/src/completion/install.test.ts +0 -179
  69. package/src/completion/install.ts +0 -260
  70. package/src/completion/runtime.ts +0 -150
  71. package/src/completion/scripts.ts +0 -91
  72. package/src/config.test.ts +0 -362
  73. package/src/config.ts +0 -294
  74. package/src/index.test.ts +0 -217
  75. package/src/index.ts +0 -8
  76. package/src/parsers/expressions.test.ts +0 -95
  77. package/src/parsers/expressions.ts +0 -128
  78. package/src/parsers/kv.test.ts +0 -35
  79. package/src/parsers/kv.ts +0 -49
  80. package/src/parsers/selectors.test.ts +0 -23
  81. package/src/parsers/selectors.ts +0 -29
  82. package/src/program.ts +0 -64
  83. package/src/runtime-context.ts +0 -103
  84. package/src/types.ts +0 -76
  85. package/src/utils/argv-rewrite.test.ts +0 -149
  86. package/src/utils/argv-rewrite.ts +0 -269
  87. package/src/utils/errors.test.ts +0 -85
  88. package/src/utils/errors.ts +0 -191
  89. package/src/utils/examples.test.ts +0 -374
  90. package/src/utils/output.test.ts +0 -65
  91. package/src/utils/output.ts +0 -154
  92. package/src/utils/schema-fields.ts +0 -1016
  93. package/tsconfig.json +0 -20
  94. package/tsup.config.ts +0 -13
@@ -1,389 +0,0 @@
1
- # Display Freeform Create Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Extend the public display create API so clients can create a freeform display and persist `freeformLayouts` in the initial `POST`, while preserving all existing create behavior for non-freeform layouts.
6
-
7
- **Architecture:** Keep the contract shape consistent by adding optional `layout.freeformLayouts` to the create request, then route creation through the same layout rules already used by `PATCH /api/v2/displays/{id}/layout`. The backend remains the source of truth for layout validation and persistence, and the CLI can adopt the new field later without requiring a second request.
8
-
9
- **Tech Stack:** Java Spring WebFlux backend, Java records for API contracts, JUnit/Reactor tests, TypeScript ESM CLI with Commander/Vitest for follow-up parity.
10
-
11
- ---
12
-
13
- ## File Map
14
-
15
- **Backend files**
16
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java`
17
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2ContractValidator.java`
18
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java`
19
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/infra/web/v2/ApiV2DisplayDocumentation.java`
20
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java`
21
-
22
- **CLI follow-up files**
23
- - Modify: `/Users/david/dev/z2/cli/src/commands/displays.ts`
24
- - Modify: `/Users/david/dev/z2/cli/src/utils/examples.ts`
25
- - Modify: `/Users/david/dev/z2/cli/src/commands/displays.test.ts`
26
-
27
- ## Task 1: Extend the Create Contract to Accept `layout.freeformLayouts`
28
-
29
- **Files:**
30
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java`
31
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2ContractValidator.java`
32
-
33
- - [ ] **Step 1: Add or adjust the relevant tests**
34
-
35
- Add service-level tests that cover these create cases:
36
-
37
- ```java
38
- new DisplayV2CreateRequest(
39
- "Board",
40
- new DisplayV2CreateRequest.Layout("freeform", Map.of("lg", List.of()))
41
- )
42
- ```
43
-
44
- and:
45
-
46
- ```java
47
- new DisplayV2CreateRequest(
48
- "Board",
49
- new DisplayV2CreateRequest.Layout("widget_row", Map.of("lg", List.of()))
50
- )
51
- ```
52
-
53
- Assert that:
54
- - freeform create accepts `freeformLayouts`
55
- - non-freeform create rejects `freeformLayouts`
56
- - existing create without `freeformLayouts` still works
57
-
58
- - [ ] **Step 2: Run the relevant check and capture the current result**
59
-
60
- Run:
61
-
62
- ```bash
63
- cd /Users/david/dev/z2/z2-backend
64
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
65
- ```
66
-
67
- Expected: compilation or test failure because `DisplayV2CreateRequest.Layout` does not yet accept `freeformLayouts`.
68
-
69
- - [ ] **Step 3: Write minimal implementation**
70
-
71
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java`:
72
- - add `Object freeformLayouts` to the nested `Layout` record
73
-
74
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2ContractValidator.java`:
75
- - keep `name` and `layout.template` required
76
- - reject `layout.freeformLayouts` when `layout.template` is not `"freeform"`
77
- - do not require `freeformLayouts` for freeform layouts
78
-
79
- - [ ] **Step 4: Run verification to confirm the intended result**
80
-
81
- Run:
82
-
83
- ```bash
84
- cd /Users/david/dev/z2/z2-backend
85
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
86
- ```
87
-
88
- Expected: create contract compiles and validation cases behave as intended.
89
-
90
- - [ ] **Step 5: Commit**
91
-
92
- ```bash
93
- cd /Users/david/dev/z2/z2-backend
94
- git add api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2ContractValidator.java api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java
95
- git commit -m "feat: accept freeform layouts in display create contract"
96
- ```
97
-
98
- ## Task 2: Persist `currentLayouts` During Display Creation
99
-
100
- **Files:**
101
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java`
102
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java`
103
-
104
- - [ ] **Step 1: Add or adjust the relevant test**
105
-
106
- Add a test proving that:
107
-
108
- ```java
109
- service.createDisplay(
110
- APP_NAME,
111
- new DisplayV2CreateRequest(
112
- "Employees",
113
- new DisplayV2CreateRequest.Layout(
114
- "freeform",
115
- Map.of("lg", List.of(Map.of("i", "widget-1", "x", 0, "y", 0, "w", 6, "h", 5)))
116
- )
117
- )
118
- )
119
- ```
120
-
121
- persists:
122
- - `"layoutTemplate": "freeform"`
123
- - `"slots": "{\"grid\":[]}"`
124
- - `"currentLayouts"` with serialized freeform JSON
125
-
126
- - [ ] **Step 2: Run the relevant check and capture the current result**
127
-
128
- Run:
129
-
130
- ```bash
131
- cd /Users/david/dev/z2/z2-backend
132
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
133
- ```
134
-
135
- Expected: the new persistence assertion fails because `createDisplay` currently never writes `currentLayouts`.
136
-
137
- - [ ] **Step 3: Write minimal implementation**
138
-
139
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java`:
140
- - update `createDisplay` to read `request.layout().freeformLayouts()`
141
- - when template is `"freeform"` and layouts are present, persist them to `additionalProperties.put("currentLayouts", writeJson(...))`
142
- - keep slot initialization unchanged
143
-
144
- Refactor only if it materially reduces duplication:
145
- - extract a private helper that applies `layoutTemplate`, `slots`, and optional `currentLayouts` to `additionalProperties`
146
- - use the helper from both `createDisplay` and `patchDisplayLayout`
147
-
148
- Do not change response shapes or existing slot behavior.
149
-
150
- - [ ] **Step 4: Run verification to confirm the intended result**
151
-
152
- Run:
153
-
154
- ```bash
155
- cd /Users/david/dev/z2/z2-backend
156
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
157
- ```
158
-
159
- Expected: create now persists `currentLayouts` only for valid freeform create requests.
160
-
161
- - [ ] **Step 5: Commit**
162
-
163
- ```bash
164
- cd /Users/david/dev/z2/z2-backend
165
- git add api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java
166
- git commit -m "feat: persist freeform layouts during display creation"
167
- ```
168
-
169
- ## Task 3: Keep Error Messages and Serialization Semantics Consistent
170
-
171
- **Files:**
172
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java`
173
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java`
174
-
175
- - [ ] **Step 1: Add or adjust the relevant test**
176
-
177
- Add a test that passes a non-serializable `freeformLayouts` object through create and asserts the backend returns a display-layout validation error instead of saving broken data.
178
-
179
- - [ ] **Step 2: Run the relevant check and capture the current result**
180
-
181
- Run:
182
-
183
- ```bash
184
- cd /Users/david/dev/z2/z2-backend
185
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
186
- ```
187
-
188
- Expected: either no coverage for the case exists, or the current error code/message is tied specifically to patch-only wording.
189
-
190
- - [ ] **Step 3: Write minimal implementation**
191
-
192
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java`:
193
- - rename or generalize `writeJson` failure messaging so it is correct for both create and patch flows
194
- - keep the error in the display layout family
195
- - avoid introducing create-only and patch-only serializers if one shared helper is enough
196
-
197
- - [ ] **Step 4: Run verification to confirm the intended result**
198
-
199
- Run:
200
-
201
- ```bash
202
- cd /Users/david/dev/z2/z2-backend
203
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
204
- ```
205
-
206
- Expected: invalid freeform layout payloads fail with a clear, reusable display layout validation error.
207
-
208
- - [ ] **Step 5: Commit**
209
-
210
- ```bash
211
- cd /Users/david/dev/z2/z2-backend
212
- git add api/src/main/java/com/zinkee/api/service/v2/display/DisplayV2Service.java api/src/test/java/com/zinkee/api/service/v2/display/DisplayV2ServiceTest.java
213
- git commit -m "refactor: reuse display layout serialization errors across create and patch"
214
- ```
215
-
216
- ## Task 4: Update the Public API Documentation
217
-
218
- **Files:**
219
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/infra/web/v2/ApiV2DisplayDocumentation.java`
220
- - Modify: `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java`
221
-
222
- - [ ] **Step 1: Add or adjust the relevant example**
223
-
224
- Update the documented create example so it shows both:
225
- - a normal create payload with `layout.template`
226
- - a freeform create payload with nested `layout.freeformLayouts`
227
-
228
- - [ ] **Step 2: Run the relevant check and capture the current result**
229
-
230
- Run:
231
-
232
- ```bash
233
- cd /Users/david/dev/z2/z2-backend
234
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
235
- ```
236
-
237
- Expected: no behavior change, but docs still show the old create-only-template example until updated.
238
-
239
- - [ ] **Step 3: Write minimal implementation**
240
-
241
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/infra/web/v2/ApiV2DisplayDocumentation.java`:
242
- - update the create description to mention optional `layout.freeformLayouts` for freeform displays
243
- - replace the current example with one that reflects the new contract
244
-
245
- In `/Users/david/dev/z2/z2-backend/api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java`:
246
- - add `@Schema` descriptions for the new nested field
247
-
248
- - [ ] **Step 4: Run verification to confirm the intended result**
249
-
250
- Run:
251
-
252
- ```bash
253
- cd /Users/david/dev/z2/z2-backend
254
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
255
- ```
256
-
257
- Expected: the API docs and record schema now describe the new create capability without changing runtime behavior.
258
-
259
- - [ ] **Step 5: Commit**
260
-
261
- ```bash
262
- cd /Users/david/dev/z2/z2-backend
263
- git add api/src/main/java/com/zinkee/api/infra/web/v2/ApiV2DisplayDocumentation.java api/src/main/java/com/zinkee/api/domain/model/v2/display/DisplayV2CreateRequest.java
264
- git commit -m "docs: document freeform layouts in display create api"
265
- ```
266
-
267
- ## Task 5: Add CLI Parity for Single-Step Freeform Create
268
-
269
- **Files:**
270
- - Modify: `/Users/david/dev/z2/cli/src/commands/displays.ts`
271
- - Modify: `/Users/david/dev/z2/cli/src/utils/examples.ts`
272
- - Modify: `/Users/david/dev/z2/cli/src/commands/displays.test.ts`
273
-
274
- - [ ] **Step 1: Add or adjust the relevant test**
275
-
276
- Add a CLI test asserting that:
277
-
278
- ```bash
279
- zinkee --json displays create --name Pipeline --template freeform --freeform-layouts '{"lg":[]}'
280
- ```
281
-
282
- sends:
283
-
284
- ```json
285
- {
286
- "name": "Pipeline",
287
- "layout": {
288
- "template": "freeform",
289
- "freeformLayouts": {
290
- "lg": []
291
- }
292
- }
293
- }
294
- ```
295
-
296
- - [ ] **Step 2: Run the relevant check and capture the current result**
297
-
298
- Run:
299
-
300
- ```bash
301
- cd /Users/david/dev/z2/cli
302
- npm test -- src/commands/displays.test.ts
303
- ```
304
-
305
- Expected: the new assertion fails because `displays create` currently only sends `name` and `layout.template`.
306
-
307
- - [ ] **Step 3: Write minimal implementation**
308
-
309
- In `/Users/david/dev/z2/cli/src/commands/displays.ts`:
310
- - add `--freeform-layouts <json>` and `--freeform-layouts-file <path>` to `displays create`
311
- - reuse `readNamedJsonOption(...)`
312
- - include `layout.freeformLayouts` only when provided
313
-
314
- In `/Users/david/dev/z2/cli/src/utils/examples.ts`:
315
- - add a concrete freeform create example
316
-
317
- - [ ] **Step 4: Run verification to confirm the intended result**
318
-
319
- Run:
320
-
321
- ```bash
322
- cd /Users/david/dev/z2/cli
323
- npm test -- src/commands/displays.test.ts
324
- ```
325
-
326
- Expected: CLI create supports the new API contract in one request.
327
-
328
- - [ ] **Step 5: Commit**
329
-
330
- ```bash
331
- cd /Users/david/dev/z2/cli
332
- git add src/commands/displays.ts src/utils/examples.ts src/commands/displays.test.ts
333
- git commit -m "feat: support freeform layouts in displays create"
334
- ```
335
-
336
- ## Task 6: Run Final Verification Across Backend and CLI
337
-
338
- **Files:**
339
- - Verify only
340
-
341
- - [ ] **Step 1: Run backend display tests**
342
-
343
- Run:
344
-
345
- ```bash
346
- cd /Users/david/dev/z2/z2-backend
347
- ./gradlew :api:test --tests com.zinkee.api.service.v2.display.DisplayV2ServiceTest
348
- ```
349
-
350
- Expected: all display service tests pass.
351
-
352
- - [ ] **Step 2: Run CLI display tests**
353
-
354
- Run:
355
-
356
- ```bash
357
- cd /Users/david/dev/z2/cli
358
- npm test -- src/commands/displays.test.ts
359
- ```
360
-
361
- Expected: CLI display tests pass.
362
-
363
- - [ ] **Step 3: Run a focused end-to-end create flow manually**
364
-
365
- Run:
366
-
367
- ```bash
368
- cd /Users/david/dev/z2/cli
369
- zinkee --json displays create --name "Freeform desde CLI" --template freeform --freeform-layouts '{"lg":[{"i":"widget-1","x":0,"y":0,"w":6,"h":5}]}'
370
- ```
371
-
372
- Then verify with:
373
-
374
- ```bash
375
- zinkee --json displays get <display-id>
376
- ```
377
-
378
- Expected: the returned `layout.freeformLayouts` is present immediately after create, without a second layout patch.
379
-
380
- - [ ] **Step 4: Commit**
381
-
382
- ```bash
383
- cd /Users/david/dev/z2/z2-backend
384
- git status --short
385
- cd /Users/david/dev/z2/cli
386
- git status --short
387
- ```
388
-
389
- Expected: only intended backend and CLI files remain changed.
@@ -1,172 +0,0 @@
1
- # Zinkee CLI Backend Blockers
2
-
3
- Lista de problemas detectados desde la CLI contra el backend local (`z2` + `api`) que parecen ser del backend o del contrato backend, no del binario del CLI.
4
-
5
- Perfil usado para reproducir:
6
-
7
- - `local`
8
- - `base_url = http://localhost:8088`
9
-
10
- ## 1. `schemas fields create` falla cuando se manda `config`
11
-
12
- ### Síntoma
13
-
14
- La creación de fields funciona si la CLI no manda `config`, pero falla cuando se manda `config` en el payload.
15
-
16
- ### Request
17
-
18
- Ruta:
19
-
20
- ```text
21
- POST /api/v2/schemas/{schemaId}/fields
22
- ```
23
-
24
- Ejemplo de payload que falla:
25
-
26
- ```json
27
- {
28
- "type": "TextField",
29
- "slug": "test-name",
30
- "label": "Test Name",
31
- "required": true,
32
- "config": {
33
- "textType": "LONG",
34
- "defaultValue": "Ada",
35
- "conditionalFormatting": []
36
- }
37
- }
38
- ```
39
-
40
- ### Resultado
41
-
42
- - HTTP `500`
43
-
44
- ### Error observado en logs
45
-
46
- ```text
47
- InvalidDefinitionException
48
- Cannot construct instance of `com.fasterxml.jackson.databind.JsonNode`
49
- through reference chain: com.zinkee.api.domain.model.v2.schema.SchemaV2CreateFieldRequest["config"]
50
- ```
51
-
52
- ### Interpretación
53
-
54
- El backend local está rompiendo en binding/deserialización del campo `config` en `SchemaV2CreateFieldRequest`.
55
-
56
- ## 2. `displays delete` no tiene ruta efectiva en API v2
57
-
58
- ### Síntoma
59
-
60
- La CLI intenta borrar displays con:
61
-
62
- ```text
63
- DELETE /api/v2/displays/{displayId}
64
- ```
65
-
66
- pero el backend responde con error.
67
-
68
- ### Resultado
69
-
70
- - HTTP `500`
71
-
72
- ### Error observado en logs
73
-
74
- ```text
75
- 500 Server Error for HTTP DELETE "/api/v2/displays/{displayId}"
76
- ResponseStatusException: 404 NOT_FOUND
77
- ```
78
-
79
- ### Interpretación
80
-
81
- La ruta de borrado parece no existir realmente en `ApiV2DisplayRoutes`, aunque desde el punto de vista del dominio sería esperable.
82
-
83
- ## 3. `automations create` devuelve `automation_create_payload_invalid`
84
-
85
- ### Síntoma
86
-
87
- La creación de automatizaciones falla incluso con payloads alineados con la documentación.
88
-
89
- ### Request
90
-
91
- Ruta:
92
-
93
- ```text
94
- POST /api/v2/automations
95
- ```
96
-
97
- Payload mínimo probado:
98
-
99
- ```json
100
- {
101
- "name": "e2e-auto-direct",
102
- "folderId": "0fd93776-33ac-4089-a7b8-ec1fcb810312",
103
- "trigger": {
104
- "type": "scheduled",
105
- "config": {
106
- "cronExpression": "0 15 10 * * 1"
107
- }
108
- }
109
- }
110
- ```
111
-
112
- ### Resultado
113
-
114
- - HTTP `400`
115
-
116
- ### Error observado
117
-
118
- ```json
119
- {
120
- "reason": "automation_create_payload_invalid",
121
- "message": "Automation create payload is invalid."
122
- }
123
- ```
124
-
125
- ### Interpretación
126
-
127
- El backend local rechaza `POST /api/v2/automations` incluso con payloads que parecen compatibles con:
128
-
129
- - `AutomationV2CreateRequest`
130
- - `AutomationTriggerV2PutRequest`
131
- - `AutomationScheduledTriggerV2Config`
132
-
133
- No se observó stacktrace claro asociado en logs, solo paso por el error handler.
134
-
135
- ## 4. `displays tabs create` falla correctamente en layouts que no soportan tabs
136
-
137
- ### Nota
138
-
139
- Esto no parece bug del backend, sino validación correcta.
140
-
141
- ### Error observado
142
-
143
- - HTTP `400`
144
- - `reason=display_tabs_unsupported`
145
-
146
- Mensaje:
147
-
148
- ```text
149
- Display layout does not support shared tabs.
150
- ```
151
-
152
- ### Observación útil
153
-
154
- `displays tabs create` sí funciona con el layout:
155
-
156
- - `side_tabs_widgets`
157
-
158
- ## 5. Warnings de entorno no bloqueantes
159
-
160
- Estos warnings aparecen en logs pero no parecen ser la causa de los fallos funcionales:
161
-
162
- - OTLP metrics:
163
- - `Connection refused` a `http://localhost:4318/v1/metrics`
164
- - warning de Netty DNS nativo en macOS
165
-
166
- ## Resumen
167
-
168
- Problemas a revisar en backend:
169
-
170
- - [ ] binding de `config` en `SchemaV2CreateFieldRequest`
171
- - [ ] existencia/soporte de `DELETE /api/v2/displays/{displayId}`
172
- - [ ] validación/binding de `POST /api/v2/automations`