@finebi/finebi-cli 1.2.1 → 1.3.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 (65) hide show
  1. package/README.md +63 -39
  2. package/package.json +38 -35
  3. package/skills/finebi-cli-agent/SKILL.md +133 -0
  4. package/skills/finebi-cli-agent/agents/openai.yaml +7 -0
  5. package/skills/finebi-cli-agent/references/analysis-dsl-api.md +318 -0
  6. package/skills/finebi-cli-agent/references/artifact-ordering.md +29 -0
  7. package/skills/finebi-cli-agent/references/command-workflows.md +194 -0
  8. package/skills/finebi-cli-agent/references/dashboard-dsl-api.md +1025 -0
  9. package/skills/finebi-cli-agent/references/dsl-handoff-contract.md +195 -0
  10. package/skills/finebi-cli-agent/references/file-to-dashboard.md +65 -0
  11. package/skills/finebi-cli-agent/references/formula-basics.md +102 -0
  12. package/skills/finebi-cli-agent/references/formula-contexts.md +66 -0
  13. package/skills/finebi-cli-agent/references/formula-functions.md +247 -0
  14. package/skills/finebi-cli-agent/references/formula-generation.md +121 -0
  15. package/skills/finebi-cli-agent/references/formula-glossary.md +17 -0
  16. package/skills/finebi-cli-agent/references/formula-help-boundaries.md +87 -0
  17. package/skills/finebi-cli-agent/references/formula-help-index.md +264 -0
  18. package/skills/finebi-cli-agent/references/formula-parameters-aggregate.md +143 -0
  19. package/skills/finebi-cli-agent/references/formula-parameters-analysis.md +223 -0
  20. package/skills/finebi-cli-agent/references/formula-parameters-date.md +236 -0
  21. package/skills/finebi-cli-agent/references/formula-parameters-math-logic.md +271 -0
  22. package/skills/finebi-cli-agent/references/formula-parameters-text.md +217 -0
  23. package/skills/finebi-cli-agent/references/formula-recipes-analysis.md +124 -0
  24. package/skills/finebi-cli-agent/references/formula-recipes-text-date.md +86 -0
  25. package/skills/finebi-cli-agent/references/formula-semantics.md +39 -0
  26. package/skills/finebi-cli-agent/references/formula-syntax.md +70 -0
  27. package/skills/finebi-cli-agent/references/formula-troubleshooting.md +63 -0
  28. package/skills/finebi-cli-agent/references/formula-validation.md +36 -0
  29. package/skills/finebi-cli-agent/references/formula.md +37 -0
  30. package/skills/finebi-cli-agent/references/handoff-contract.md +210 -0
  31. package/skills/finebi-cli-agent/references/mapping-rules.md +423 -0
  32. package/skills/finebi-cli-agent/references/mutation-confirmation-contract.md +150 -0
  33. package/skills/finebi-cli-agent/references/scenario-workflows.md +75 -0
  34. package/skills/finebi-cli-agent/references/widget-dsl-api-examples.md +457 -0
  35. package/skills/finebi-cli-agent/references/widget-dsl-api.md +1340 -0
  36. package/skills/finebi-cli-agent/scripts/finebi-cli/package.json +11 -0
  37. package/skills/finebi-cli-agent/scripts/finebi-cli/src/access-key-contract.js +2 -0
  38. package/skills/finebi-cli-agent/scripts/finebi-cli/src/access-key.js +174 -0
  39. package/skills/finebi-cli-agent/scripts/finebi-cli/src/auth-failure.js +18 -0
  40. package/skills/finebi-cli-agent/scripts/finebi-cli/src/auth-headers.js +21 -0
  41. package/skills/finebi-cli-agent/scripts/finebi-cli/src/auth.js +116 -0
  42. package/skills/finebi-cli-agent/scripts/finebi-cli/src/branding.js +31 -0
  43. package/skills/finebi-cli-agent/scripts/finebi-cli/src/browser-auth.js +331 -0
  44. package/skills/finebi-cli-agent/scripts/finebi-cli/src/capability.js +122 -0
  45. package/skills/finebi-cli-agent/scripts/finebi-cli/src/config-permissions.js +87 -0
  46. package/skills/finebi-cli-agent/scripts/finebi-cli/src/config.js +189 -0
  47. package/skills/finebi-cli-agent/scripts/finebi-cli/src/dynamic-command.js +324 -0
  48. package/skills/finebi-cli-agent/scripts/finebi-cli/src/error-catalog.js +482 -0
  49. package/skills/finebi-cli-agent/scripts/finebi-cli/src/errors.js +22 -0
  50. package/skills/finebi-cli-agent/scripts/finebi-cli/src/help.js +467 -0
  51. package/skills/finebi-cli-agent/scripts/finebi-cli/src/index.js +1343 -0
  52. package/skills/finebi-cli-agent/scripts/finebi-cli/src/install-skill.js +87 -0
  53. package/skills/finebi-cli-agent/scripts/finebi-cli/src/output-limits.js +188 -0
  54. package/skills/finebi-cli-agent/scripts/finebi-cli/src/output.js +33 -0
  55. package/skills/finebi-cli-agent/scripts/finebi-cli/src/profiles.js +158 -0
  56. package/skills/finebi-cli-agent/scripts/finebi-cli/src/schema-options.js +265 -0
  57. package/skills/finebi-cli-agent/scripts/finebi-cli/src/schema-validator.js +194 -0
  58. package/skills/finebi-cli-agent/scripts/finebi-cli/src/skill-files.js +94 -0
  59. package/skills/finebi-cli-agent/scripts/finebi-cli-runner-core.mjs +399 -0
  60. package/skills/finebi-cli-agent/scripts/finebi-cli-runner.mjs +29 -0
  61. package/src/error-catalog.js +12 -0
  62. package/src/help.js +15 -0
  63. package/src/index.js +6 -1
  64. package/src/install-skill.js +87 -0
  65. package/src/skill-files.js +94 -0
@@ -0,0 +1,482 @@
1
+ export const ERROR_CATALOG = [
2
+ {
3
+ code: "SKILL_INSTALL_FAILED",
4
+ layer: "node",
5
+ origin: "install-skill",
6
+ category: "configuration",
7
+ recoverableByAgent: false,
8
+ defaultRetryable: false,
9
+ pathSemantics: "Local Skill directory or installation record",
10
+ canonicalNextActions: ["finebi-cli install-skill --help"],
11
+ expectedAgentBehaviors: ["inspect the installation result and preserve local edits", "request explicit replacement before overwriting local changes"],
12
+ benchmarkTags: ["skills", "installation"],
13
+ },
14
+ {
15
+ code: "BROWSER_AUTH_URL_INVALID",
16
+ layer: "node",
17
+ origin: "browser-auth",
18
+ category: "configuration",
19
+ recoverableByAgent: true,
20
+ defaultRetryable: false,
21
+ pathSemantics: "Browser authorization base URL",
22
+ canonicalNextActions: ["finebi-cli config set base-url <https-url>"],
23
+ expectedAgentBehaviors: ["configure an HTTPS URL or localhost HTTP URL", "rerun browser login"],
24
+ benchmarkTags: ["auth", "browser", "url-validation"],
25
+ },
26
+ {
27
+ code: "BROWSER_AUTH_START_INVALID",
28
+ layer: "node",
29
+ origin: "browser-auth",
30
+ category: "contract",
31
+ recoverableByAgent: false,
32
+ defaultRetryable: false,
33
+ pathSemantics: "Browser authorization start response field",
34
+ canonicalNextActions: ["finebi-cli auth login --browser"],
35
+ expectedAgentBehaviors: ["report browser authorization contract mismatch"],
36
+ benchmarkTags: ["auth", "browser", "contract-mismatch"],
37
+ },
38
+ {
39
+ code: "BROWSER_AUTH_POLL_INVALID",
40
+ layer: "node",
41
+ origin: "browser-auth",
42
+ category: "contract",
43
+ recoverableByAgent: false,
44
+ defaultRetryable: false,
45
+ pathSemantics: "Browser authorization poll response field",
46
+ canonicalNextActions: ["finebi-cli auth login --browser"],
47
+ expectedAgentBehaviors: ["report browser authorization contract mismatch"],
48
+ benchmarkTags: ["auth", "browser", "contract-mismatch"],
49
+ },
50
+ {
51
+ code: "BROWSER_AUTH_DENIED",
52
+ layer: "node",
53
+ origin: "browser-auth",
54
+ category: "authentication",
55
+ recoverableByAgent: true,
56
+ defaultRetryable: false,
57
+ pathSemantics: "Browser authorization status",
58
+ canonicalNextActions: ["finebi-cli auth login --browser"],
59
+ expectedAgentBehaviors: ["request a new browser authorization"],
60
+ benchmarkTags: ["auth", "browser", "denied"],
61
+ },
62
+ {
63
+ code: "BROWSER_AUTH_EXPIRED",
64
+ layer: "node",
65
+ origin: "browser-auth",
66
+ category: "authentication",
67
+ recoverableByAgent: true,
68
+ defaultRetryable: false,
69
+ pathSemantics: "Browser authorization status",
70
+ canonicalNextActions: ["finebi-cli auth login --browser"],
71
+ expectedAgentBehaviors: ["request a new browser authorization"],
72
+ benchmarkTags: ["auth", "browser", "expired"],
73
+ },
74
+ {
75
+ code: "BROWSER_AUTH_CONSUMED",
76
+ layer: "node",
77
+ origin: "browser-auth",
78
+ category: "authentication",
79
+ recoverableByAgent: true,
80
+ defaultRetryable: false,
81
+ pathSemantics: "Browser authorization status",
82
+ canonicalNextActions: ["finebi-cli auth login --browser"],
83
+ expectedAgentBehaviors: ["request a new browser authorization"],
84
+ benchmarkTags: ["auth", "browser", "consumed"],
85
+ },
86
+ {
87
+ code: "BROWSER_AUTH_ABORTED",
88
+ layer: "node",
89
+ origin: "browser-auth",
90
+ category: "authentication",
91
+ recoverableByAgent: true,
92
+ defaultRetryable: false,
93
+ pathSemantics: "Browser authorization lifecycle",
94
+ canonicalNextActions: ["finebi-cli auth login --browser"],
95
+ expectedAgentBehaviors: ["request a new browser authorization"],
96
+ benchmarkTags: ["auth", "browser", "aborted"],
97
+ },
98
+ {
99
+ code: "BROWSER_AUTH_TIMEOUT",
100
+ layer: "node",
101
+ origin: "browser-auth",
102
+ category: "authentication",
103
+ recoverableByAgent: true,
104
+ defaultRetryable: false,
105
+ pathSemantics: "Browser authorization expiry",
106
+ canonicalNextActions: ["finebi-cli auth login --browser"],
107
+ expectedAgentBehaviors: ["request a new browser authorization"],
108
+ benchmarkTags: ["auth", "browser", "timeout"],
109
+ },
110
+ {
111
+ code: "BROWSER_AUTH_RATE_LIMITED",
112
+ layer: "node",
113
+ origin: "browser-auth",
114
+ category: "http",
115
+ recoverableByAgent: true,
116
+ defaultRetryable: true,
117
+ pathSemantics: "Browser authorization poll endpoint",
118
+ canonicalNextActions: ["Wait before polling again"],
119
+ expectedAgentBehaviors: ["back off polling"],
120
+ benchmarkTags: ["auth", "browser", "rate-limit"],
121
+ },
122
+ {
123
+ code: "BROWSER_AUTH_HTTP_ERROR",
124
+ layer: "node",
125
+ origin: "browser-auth",
126
+ category: "http",
127
+ recoverableByAgent: false,
128
+ defaultRetryable: false,
129
+ pathSemantics: "Browser authorization endpoint",
130
+ canonicalNextActions: ["finebi-cli auth login --browser"],
131
+ expectedAgentBehaviors: ["inspect the server response", "retry only when the service is available"],
132
+ benchmarkTags: ["auth", "browser", "http"],
133
+ },
134
+ {
135
+ code: "BROWSER_AUTH_SAVE_FAILED",
136
+ layer: "node",
137
+ origin: "browser-auth",
138
+ category: "local-state",
139
+ recoverableByAgent: true,
140
+ defaultRetryable: false,
141
+ pathSemantics: "Stored auth.accessKey",
142
+ canonicalNextActions: ["finebi-cli auth login --browser"],
143
+ expectedAgentBehaviors: ["fix local configuration write access", "retry browser login"],
144
+ benchmarkTags: ["auth", "browser", "local-state"],
145
+ },
146
+ {
147
+ code: "CONFIG_MISSING",
148
+ layer: "node",
149
+ origin: "config",
150
+ category: "configuration",
151
+ recoverableByAgent: true,
152
+ defaultRetryable: false,
153
+ pathSemantics: "Config field name",
154
+ canonicalNextActions: ["finebi-cli config set base-url <baseUrl>"],
155
+ expectedAgentBehaviors: ["run config set base-url", "rerun original command"],
156
+ benchmarkTags: ["config", "setup", "self-recovery"],
157
+ },
158
+ {
159
+ code: "AUTH_REQUIRED",
160
+ layer: "node",
161
+ origin: "auth",
162
+ category: "authentication",
163
+ recoverableByAgent: true,
164
+ defaultRetryable: false,
165
+ pathSemantics: "Auth config field",
166
+ canonicalNextActions: ["finebi-cli auth login --username <username>"],
167
+ expectedAgentBehaviors: ["run auth login", "rerun original command"],
168
+ benchmarkTags: ["auth", "setup", "self-recovery"],
169
+ },
170
+ {
171
+ code: "AUTH_EXPIRED",
172
+ layer: "node",
173
+ origin: "auth",
174
+ category: "authentication",
175
+ recoverableByAgent: true,
176
+ defaultRetryable: false,
177
+ pathSemantics: "Auth token expiry field",
178
+ canonicalNextActions: ["finebi-cli auth login --username <username>"],
179
+ expectedAgentBehaviors: ["run auth login", "rerun original command"],
180
+ benchmarkTags: ["auth", "token-expiry", "self-recovery"],
181
+ },
182
+ {
183
+ code: "AUTHENTICATION_FAILED",
184
+ layer: "node",
185
+ origin: "auth",
186
+ category: "authentication",
187
+ recoverableByAgent: true,
188
+ defaultRetryable: true,
189
+ pathSemantics: "Request URL path",
190
+ canonicalNextActions: ["finebi-cli auth login"],
191
+ expectedAgentBehaviors: ["run auth login", "rerun original command"],
192
+ benchmarkTags: ["auth", "access-key", "self-recovery"],
193
+ },
194
+ {
195
+ code: "PASSWORD_INPUT_FAILED",
196
+ layer: "node",
197
+ origin: "auth",
198
+ category: "authentication",
199
+ recoverableByAgent: true,
200
+ defaultRetryable: false,
201
+ pathSemantics: "Password input method",
202
+ canonicalNextActions: [
203
+ "finebi-cli auth login --from-env",
204
+ "echo <password> | finebi-cli auth login --username <username> --password-stdin",
205
+ ],
206
+ expectedAgentBehaviors: ["switch to --from-env", "provide FINEBI_PASSWORD env var"],
207
+ benchmarkTags: ["auth", "password", "self-recovery"],
208
+ },
209
+ {
210
+ code: "NETWORK_ERROR",
211
+ layer: "node",
212
+ origin: "http-client",
213
+ category: "network",
214
+ recoverableByAgent: false,
215
+ defaultRetryable: true,
216
+ pathSemantics: "Request URL path",
217
+ canonicalNextActions: [
218
+ "finebi-cli config set base-url <baseUrl>",
219
+ "finebi-cli auth login --username <username>",
220
+ ],
221
+ expectedAgentBehaviors: ["check base-url config", "retry after network issue is resolved"],
222
+ benchmarkTags: ["network", "transient"],
223
+ },
224
+ {
225
+ code: "AUTH_REDIRECT_OR_HTML_RESPONSE",
226
+ layer: "node",
227
+ origin: "http-client",
228
+ category: "authentication",
229
+ recoverableByAgent: true,
230
+ defaultRetryable: true,
231
+ pathSemantics: "Request URL path",
232
+ canonicalNextActions: ["finebi-cli auth login", "finebi-cli capability refresh"],
233
+ expectedAgentBehaviors: ["run auth login", "rerun original command"],
234
+ benchmarkTags: ["auth", "session-expired", "self-recovery"],
235
+ },
236
+ {
237
+ code: "HTTP_ERROR",
238
+ layer: "node",
239
+ origin: "http-client",
240
+ category: "http",
241
+ recoverableByAgent: false,
242
+ defaultRetryable: false,
243
+ pathSemantics: "Request URL path",
244
+ canonicalNextActions: ["finebi-cli capability refresh"],
245
+ expectedAgentBehaviors: ["check server logs", "inspect HTTP status code"],
246
+ benchmarkTags: ["http", "server-error"],
247
+ },
248
+ {
249
+ code: "HTTP_HTML_RESPONSE",
250
+ layer: "node",
251
+ origin: "http-client",
252
+ category: "http",
253
+ recoverableByAgent: false,
254
+ defaultRetryable: false,
255
+ pathSemantics: "Request URL path",
256
+ canonicalNextActions: ["Check FineBI server logs"],
257
+ expectedAgentBehaviors: ["check server logs", "report backend error"],
258
+ benchmarkTags: ["http", "server-error"],
259
+ },
260
+ {
261
+ code: "LOGIN_TOKEN_NOT_FOUND",
262
+ layer: "node",
263
+ origin: "auth",
264
+ category: "authentication",
265
+ recoverableByAgent: false,
266
+ defaultRetryable: false,
267
+ pathSemantics: "JSON path in login response",
268
+ canonicalNextActions: ["finebi-cli auth info"],
269
+ expectedAgentBehaviors: ["check FineBI version compatibility", "report auth contract mismatch"],
270
+ benchmarkTags: ["auth", "contract-mismatch"],
271
+ },
272
+ {
273
+ code: "CAPABILITY_REFRESH_FAILED",
274
+ layer: "node",
275
+ origin: "capability",
276
+ category: "capability",
277
+ recoverableByAgent: true,
278
+ defaultRetryable: true,
279
+ pathSemantics: "Capability endpoint path",
280
+ canonicalNextActions: ["finebi-cli auth login", "finebi-cli capability refresh"],
281
+ expectedAgentBehaviors: ["run auth login", "run capability refresh", "rerun original command"],
282
+ benchmarkTags: ["capability", "self-recovery"],
283
+ },
284
+ {
285
+ code: "CAPABILITY_CACHE_EXPIRED",
286
+ layer: "node",
287
+ origin: "capability",
288
+ category: "capability",
289
+ recoverableByAgent: true,
290
+ defaultRetryable: true,
291
+ pathSemantics: "Local capability cache path",
292
+ canonicalNextActions: ["finebi-cli capability refresh"],
293
+ expectedAgentBehaviors: ["run capability refresh", "rerun original command"],
294
+ benchmarkTags: ["capability", "cache", "self-recovery"],
295
+ },
296
+ {
297
+ code: "CAPABILITY_NOT_FOUND",
298
+ layer: "node",
299
+ origin: "capability",
300
+ category: "capability",
301
+ recoverableByAgent: true,
302
+ defaultRetryable: true,
303
+ pathSemantics: "resource.command identifier",
304
+ canonicalNextActions: ["finebi-cli capability refresh", "finebi-cli --help"],
305
+ expectedAgentBehaviors: ["run capability refresh", "verify command name", "run --help"],
306
+ benchmarkTags: ["capability", "command-routing", "self-recovery"],
307
+ },
308
+ {
309
+ code: "CAPABILITY_MANIFEST_INVALID",
310
+ layer: "node",
311
+ origin: "capability",
312
+ category: "capability",
313
+ recoverableByAgent: false,
314
+ defaultRetryable: false,
315
+ pathSemantics: "Capability manifest field",
316
+ canonicalNextActions: ["finebi-cli capability refresh"],
317
+ expectedAgentBehaviors: ["report manifest format error", "run capability refresh"],
318
+ benchmarkTags: ["capability", "schema"],
319
+ },
320
+ {
321
+ code: "CAPABILITY_AUTO_REFRESH_FAILED",
322
+ layer: "node",
323
+ origin: "capability",
324
+ category: "capability",
325
+ recoverableByAgent: true,
326
+ defaultRetryable: false,
327
+ pathSemantics: "",
328
+ canonicalNextActions: ["finebi-cli capability refresh"],
329
+ expectedAgentBehaviors: ["run capability refresh manually", "continue with main task"],
330
+ benchmarkTags: ["capability", "auto-refresh"],
331
+ },
332
+ {
333
+ code: "ACCESS_KEY_CREATE_INVALID",
334
+ layer: "node",
335
+ origin: "access-key",
336
+ category: "contract",
337
+ recoverableByAgent: false,
338
+ defaultRetryable: false,
339
+ pathSemantics: "JSON path in access-key create response",
340
+ canonicalNextActions: ["finebi-cli auth info"],
341
+ expectedAgentBehaviors: ["report access-key endpoint contract mismatch"],
342
+ benchmarkTags: ["auth", "access-key", "contract-mismatch"],
343
+ },
344
+ {
345
+ code: "ACCESS_KEY_ERROR",
346
+ layer: "node",
347
+ origin: "access-key",
348
+ category: "authentication",
349
+ recoverableByAgent: true,
350
+ defaultRetryable: false,
351
+ pathSemantics: "Access Key endpoint path",
352
+ canonicalNextActions: ["finebi-cli auth info", "finebi-cli auth login"],
353
+ expectedAgentBehaviors: ["inspect auth info", "run auth login if credentials are invalid"],
354
+ benchmarkTags: ["auth", "access-key", "self-recovery"],
355
+ },
356
+ {
357
+ code: "ACCESS_KEY_ISSUE_FAILED",
358
+ layer: "node",
359
+ origin: "access-key",
360
+ category: "authentication",
361
+ recoverableByAgent: true,
362
+ defaultRetryable: false,
363
+ pathSemantics: "Access Key issue flow",
364
+ canonicalNextActions: ["finebi-cli auth login"],
365
+ expectedAgentBehaviors: ["continue with session token", "retry auth login when persistent credentials are needed"],
366
+ benchmarkTags: ["auth", "access-key", "warning"],
367
+ },
368
+ {
369
+ code: "ACCESS_KEY_REVOKE_FAILED",
370
+ layer: "node",
371
+ origin: "access-key",
372
+ category: "authentication",
373
+ recoverableByAgent: true,
374
+ defaultRetryable: true,
375
+ pathSemantics: "Stored auth.accessKey",
376
+ canonicalNextActions: ["finebi-cli auth logout", "finebi-cli auth logout --force"],
377
+ expectedAgentBehaviors: ["retry logout", "use --force only when local cleanup is acceptable"],
378
+ benchmarkTags: ["auth", "access-key", "self-recovery"],
379
+ },
380
+ {
381
+ code: "ACCESS_KEY_STALE_DELETE_FAILED",
382
+ layer: "node",
383
+ origin: "access-key",
384
+ category: "authentication",
385
+ recoverableByAgent: true,
386
+ defaultRetryable: true,
387
+ pathSemantics: "Stale Access Key id",
388
+ canonicalNextActions: ["finebi-cli auth login"],
389
+ expectedAgentBehaviors: ["retry auth login", "report stale key cleanup warning if it persists"],
390
+ benchmarkTags: ["auth", "access-key", "warning"],
391
+ },
392
+ {
393
+ code: "ACCESS_KEY_LIST_FAILED",
394
+ layer: "node",
395
+ origin: "access-key",
396
+ category: "authentication",
397
+ recoverableByAgent: true,
398
+ defaultRetryable: true,
399
+ pathSemantics: "Access Key list endpoint",
400
+ canonicalNextActions: ["finebi-cli auth login"],
401
+ expectedAgentBehaviors: ["retry auth login", "avoid creating duplicate keys when list status is unknown"],
402
+ benchmarkTags: ["auth", "access-key", "self-recovery"],
403
+ },
404
+ {
405
+ code: "INVALID_ARGUMENT",
406
+ layer: "node",
407
+ origin: "cli",
408
+ category: "argument-validation",
409
+ recoverableByAgent: true,
410
+ defaultRetryable: false,
411
+ pathSemantics: "CLI argument name or config key",
412
+ canonicalNextActions: ["finebi-cli <resource> <command> --help"],
413
+ expectedAgentBehaviors: ["read error.path", "fix argument value", "rerun original command"],
414
+ benchmarkTags: ["argument", "self-recovery"],
415
+ },
416
+ {
417
+ code: "INVALID_JSON",
418
+ layer: "node",
419
+ origin: "cli",
420
+ category: "json-syntax",
421
+ recoverableByAgent: true,
422
+ defaultRetryable: false,
423
+ pathSemantics: "CLI field populated from a JSON file",
424
+ canonicalNextActions: ["finebi-cli <resource> <command> --help"],
425
+ expectedAgentBehaviors: ["fix JSON syntax", "rerun original command"],
426
+ benchmarkTags: ["json", "file-input", "self-recovery"],
427
+ },
428
+ {
429
+ code: "INVALID_REQUEST_JSON",
430
+ layer: "node",
431
+ origin: "schema-validator",
432
+ category: "json-file-validation",
433
+ recoverableByAgent: true,
434
+ defaultRetryable: false,
435
+ pathSemantics: "JSON path inside --file input",
436
+ canonicalNextActions: ["finebi-cli <resource> <command> --help"],
437
+ expectedAgentBehaviors: ["read error.path", "fix JSON file", "rerun original command"],
438
+ benchmarkTags: ["schema", "file-input", "self-recovery"],
439
+ },
440
+ {
441
+ code: "FORMULA_INVALID",
442
+ layer: "node",
443
+ origin: "business-validation",
444
+ category: "formula-validation",
445
+ recoverableByAgent: true,
446
+ defaultRetryable: false,
447
+ pathSemantics: "Calculated field definition formula",
448
+ canonicalNextActions: ["finebi-cli calculated-field validate --subject-id <subjectId> --file <calculated-field.js>"],
449
+ expectedAgentBehaviors: ["inspect parser or backend diagnostics", "fix definition formula", "rerun validate"],
450
+ benchmarkTags: ["calculated-field", "formula", "self-recovery"],
451
+ },
452
+ {
453
+ code: "DEPENDENCY_CONFLICT",
454
+ layer: "node",
455
+ origin: "business-validation",
456
+ category: "dependency-conflict",
457
+ recoverableByAgent: true,
458
+ defaultRetryable: false,
459
+ pathSemantics: "Calculated field config ID or dependency path",
460
+ canonicalNextActions: ["finebi-cli calculated-field info --subject-id <subjectId> --id <id>"],
461
+ expectedAgentBehaviors: ["inspect error.detail", "remove or change every dependency", "rerun original command"],
462
+ benchmarkTags: ["calculated-field", "dependency", "self-recovery"],
463
+ },
464
+ {
465
+ code: "UPDATE_FAILED",
466
+ layer: "node",
467
+ origin: "business-service",
468
+ category: "business-mutation",
469
+ recoverableByAgent: true,
470
+ defaultRetryable: false,
471
+ pathSemantics: "Resource update target path",
472
+ canonicalNextActions: ["Inspect the current resource state before retrying the update"],
473
+ expectedAgentBehaviors: ["inspect current resource state", "avoid blind retry", "report backend rejection"],
474
+ benchmarkTags: ["business", "mutation", "update"],
475
+ },
476
+ ];
477
+
478
+ const _catalogByCode = new Map(ERROR_CATALOG.map((entry) => [entry.code, entry]));
479
+
480
+ export function lookupErrorMeta(code) {
481
+ return _catalogByCode.get(code) ?? null;
482
+ }
@@ -0,0 +1,22 @@
1
+ import {brandCommandText, brandCommandValue} from "./branding.js";
2
+ import {lookupErrorMeta} from "./error-catalog.js";
3
+
4
+ export function cliError(code, overrides = {}) {
5
+ const meta = lookupErrorMeta(code);
6
+ return {
7
+ path: overrides.path ?? "",
8
+ code,
9
+ message: overrides.message ?? (meta ? `Error: ${code}` : `Unknown error code: ${code}`),
10
+ hint: brandCommandText(overrides.hint !== undefined ? overrides.hint : null),
11
+ retryable: overrides.retryable !== undefined ? overrides.retryable : (meta ? meta.defaultRetryable : false),
12
+ nextActions: brandCommandValue(overrides.nextActions !== undefined ? overrides.nextActions : (meta ? meta.canonicalNextActions : [])),
13
+ layer: meta ? meta.layer : "node",
14
+ origin: meta ? meta.origin : "unknown",
15
+ category: meta ? meta.category : "unknown",
16
+ recoverableByAgent: meta ? meta.recoverableByAgent : false,
17
+ pathSemantics: meta ? meta.pathSemantics : "",
18
+ expectedAgentBehaviors: meta ? meta.expectedAgentBehaviors : [],
19
+ benchmarkTags: meta ? meta.benchmarkTags : [],
20
+ ...(overrides.partialResult !== undefined ? {partialResult: overrides.partialResult} : {}),
21
+ };
22
+ }