@nuxtseo/protocol 0.2.0 → 0.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.
@@ -458,6 +458,7 @@ export declare const accountTokenDataSchema: import("./core.js").CompatibleRespo
458
458
  "audit:read": "audit:read";
459
459
  "content:read": "content:read";
460
460
  "content:write": "content:write";
461
+ "feedback:write": "feedback:write";
461
462
  "page:read": "page:read";
462
463
  "page:write": "page:write";
463
464
  "research:read": "research:read";
@@ -493,29 +494,8 @@ export declare const accountTokenDataSchema: import("./core.js").CompatibleRespo
493
494
  api_token: "api_token";
494
495
  session: "session";
495
496
  }>;
496
- readonly role: z.ZodEnum<{
497
- admin: "admin";
498
- member: "member";
499
- owner: "owner";
500
- viewer: "viewer";
501
- }>;
502
- readonly scopes: z.ZodArray<z.ZodEnum<{
503
- "account:read": "account:read";
504
- "actions:read": "actions:read";
505
- "actions:write": "actions:write";
506
- "analytics:read": "analytics:read";
507
- "audit:read": "audit:read";
508
- "content:read": "content:read";
509
- "content:write": "content:write";
510
- "page:read": "page:read";
511
- "page:write": "page:write";
512
- "research:read": "research:read";
513
- "research:write": "research:write";
514
- "sites:read": "sites:read";
515
- "sites:write": "sites:write";
516
- "timeline:read": "timeline:read";
517
- "timeline:write": "timeline:write";
518
- }>>;
497
+ readonly role: z.ZodString;
498
+ readonly scopes: z.ZodArray<z.ZodString>;
519
499
  readonly team: z.ZodObject<{
520
500
  id: z.ZodString;
521
501
  name: z.ZodNullable<z.ZodString>;
@@ -558,6 +538,7 @@ export declare const accountTokenResponseSchema: import("./core.js").CompatibleR
558
538
  "audit:read": "audit:read";
559
539
  "content:read": "content:read";
560
540
  "content:write": "content:write";
541
+ "feedback:write": "feedback:write";
561
542
  "page:read": "page:read";
562
543
  "page:write": "page:write";
563
544
  "research:read": "research:read";
@@ -599,29 +580,8 @@ export declare const accountTokenResponseSchema: import("./core.js").CompatibleR
599
580
  api_token: "api_token";
600
581
  session: "session";
601
582
  }>;
602
- readonly role: z.ZodEnum<{
603
- admin: "admin";
604
- member: "member";
605
- owner: "owner";
606
- viewer: "viewer";
607
- }>;
608
- readonly scopes: z.ZodArray<z.ZodEnum<{
609
- "account:read": "account:read";
610
- "actions:read": "actions:read";
611
- "actions:write": "actions:write";
612
- "analytics:read": "analytics:read";
613
- "audit:read": "audit:read";
614
- "content:read": "content:read";
615
- "content:write": "content:write";
616
- "page:read": "page:read";
617
- "page:write": "page:write";
618
- "research:read": "research:read";
619
- "research:write": "research:write";
620
- "sites:read": "sites:read";
621
- "sites:write": "sites:write";
622
- "timeline:read": "timeline:read";
623
- "timeline:write": "timeline:write";
624
- }>>;
583
+ readonly role: z.ZodString;
584
+ readonly scopes: z.ZodArray<z.ZodString>;
625
585
  readonly team: z.ZodObject<{
626
586
  id: z.ZodString;
627
587
  name: z.ZodNullable<z.ZodString>;
@@ -695,6 +655,7 @@ export declare const accountTokenOperation: {
695
655
  "audit:read": "audit:read";
696
656
  "content:read": "content:read";
697
657
  "content:write": "content:write";
658
+ "feedback:write": "feedback:write";
698
659
  "page:read": "page:read";
699
660
  "page:write": "page:write";
700
661
  "research:read": "research:read";
@@ -736,29 +697,8 @@ export declare const accountTokenOperation: {
736
697
  api_token: "api_token";
737
698
  session: "session";
738
699
  }>;
739
- readonly role: z.ZodEnum<{
740
- admin: "admin";
741
- member: "member";
742
- owner: "owner";
743
- viewer: "viewer";
744
- }>;
745
- readonly scopes: z.ZodArray<z.ZodEnum<{
746
- "account:read": "account:read";
747
- "actions:read": "actions:read";
748
- "actions:write": "actions:write";
749
- "analytics:read": "analytics:read";
750
- "audit:read": "audit:read";
751
- "content:read": "content:read";
752
- "content:write": "content:write";
753
- "page:read": "page:read";
754
- "page:write": "page:write";
755
- "research:read": "research:read";
756
- "research:write": "research:write";
757
- "sites:read": "sites:read";
758
- "sites:write": "sites:write";
759
- "timeline:read": "timeline:read";
760
- "timeline:write": "timeline:write";
761
- }>>;
700
+ readonly role: z.ZodString;
701
+ readonly scopes: z.ZodArray<z.ZodString>;
762
702
  readonly team: z.ZodObject<{
763
703
  id: z.ZodString;
764
704
  name: z.ZodNullable<z.ZodString>;
@@ -897,6 +837,190 @@ export declare const accountTokenOperation: {
897
837
  }];
898
838
  };
899
839
  };
840
+ export declare const accountFeedbackBodySchema: z.ZodObject<{
841
+ command: z.ZodString;
842
+ comment: z.ZodString;
843
+ agent: z.ZodString;
844
+ cliVersion: z.ZodString;
845
+ intent: z.ZodDefault<z.ZodEnum<{
846
+ bug: "bug";
847
+ improvement: "improvement";
848
+ }>>;
849
+ requestId: z.ZodOptional<z.ZodString>;
850
+ }, z.core.$strict>;
851
+ export declare const accountFeedbackResponseSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
852
+ data: z.ZodObject<{
853
+ readonly id: z.ZodString;
854
+ readonly status: z.ZodLiteral<"new">;
855
+ }, z.core.$strip>;
856
+ meta: z.ZodObject<{
857
+ requestId: z.ZodString;
858
+ version: z.ZodLiteral<"1.0">;
859
+ }, z.core.$strict>;
860
+ }, z.core.$strip>, z.ZodObject<{
861
+ data: z.ZodObject<{
862
+ readonly id: z.ZodString;
863
+ readonly status: z.ZodLiteral<"new">;
864
+ }, z.core.$strip>;
865
+ meta: z.ZodObject<{
866
+ requestId: z.ZodString;
867
+ version: z.ZodLiteral<"1.0">;
868
+ }, z.core.$loose>;
869
+ }, z.core.$strip>>;
870
+ export declare const accountFeedbackOperation: {
871
+ readonly id: 'account.feedback';
872
+ readonly method: 'POST';
873
+ readonly path: '/api/v1/account/feedback';
874
+ readonly visibility: 'public';
875
+ readonly semantics: {
876
+ readonly kind: 'mutation';
877
+ readonly sideEffects: 'state';
878
+ readonly retry: 'never';
879
+ readonly readConsistency: null;
880
+ };
881
+ readonly auth: {
882
+ readonly credentials: readonly ["session", "api_token"];
883
+ readonly scopes: readonly ["feedback:write"];
884
+ readonly minimumRole: 'viewer';
885
+ readonly ownership: 'team';
886
+ };
887
+ readonly request: {
888
+ readonly params: null;
889
+ readonly query: null;
890
+ readonly headers: null;
891
+ readonly body: z.ZodObject<{
892
+ command: z.ZodString;
893
+ comment: z.ZodString;
894
+ agent: z.ZodString;
895
+ cliVersion: z.ZodString;
896
+ intent: z.ZodDefault<z.ZodEnum<{
897
+ bug: "bug";
898
+ improvement: "improvement";
899
+ }>>;
900
+ requestId: z.ZodOptional<z.ZodString>;
901
+ }, z.core.$strict>;
902
+ };
903
+ readonly responses: {
904
+ readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
905
+ data: z.ZodObject<{
906
+ readonly id: z.ZodString;
907
+ readonly status: z.ZodLiteral<"new">;
908
+ }, z.core.$strip>;
909
+ meta: z.ZodObject<{
910
+ requestId: z.ZodString;
911
+ version: z.ZodLiteral<"1.0">;
912
+ }, z.core.$strict>;
913
+ }, z.core.$strip>, z.ZodObject<{
914
+ data: z.ZodObject<{
915
+ readonly id: z.ZodString;
916
+ readonly status: z.ZodLiteral<"new">;
917
+ }, z.core.$strip>;
918
+ meta: z.ZodObject<{
919
+ requestId: z.ZodString;
920
+ version: z.ZodLiteral<"1.0">;
921
+ }, z.core.$loose>;
922
+ }, z.core.$strip>>;
923
+ };
924
+ readonly errors: readonly ["invalid_request", "unauthorized", "auth_expired", "forbidden", "rate_limited", "contract_violation", "internal_error"];
925
+ readonly errorResponse: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
926
+ readonly error: z.ZodObject<{
927
+ code: z.ZodEnum<{
928
+ auth_expired: "auth_expired";
929
+ conflict: "conflict";
930
+ contract_violation: "contract_violation";
931
+ entitlement_required: "entitlement_required";
932
+ forbidden: "forbidden";
933
+ internal_error: "internal_error";
934
+ invalid_request: "invalid_request";
935
+ not_found: "not_found";
936
+ provider_unavailable: "provider_unavailable";
937
+ quota_exhausted: "quota_exhausted";
938
+ rate_limited: "rate_limited";
939
+ site_ambiguous: "site_ambiguous";
940
+ stale_evidence: "stale_evidence";
941
+ unauthorized: "unauthorized";
942
+ }>;
943
+ message: z.ZodString;
944
+ requestId: z.ZodString;
945
+ retryable: z.ZodBoolean;
946
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
947
+ }, z.core.$strict>;
948
+ }, z.core.$strip>, z.ZodObject<{
949
+ readonly error: z.ZodObject<{
950
+ code: z.ZodEnum<{
951
+ auth_expired: "auth_expired";
952
+ conflict: "conflict";
953
+ contract_violation: "contract_violation";
954
+ entitlement_required: "entitlement_required";
955
+ forbidden: "forbidden";
956
+ internal_error: "internal_error";
957
+ invalid_request: "invalid_request";
958
+ not_found: "not_found";
959
+ provider_unavailable: "provider_unavailable";
960
+ quota_exhausted: "quota_exhausted";
961
+ rate_limited: "rate_limited";
962
+ site_ambiguous: "site_ambiguous";
963
+ stale_evidence: "stale_evidence";
964
+ unauthorized: "unauthorized";
965
+ }>;
966
+ message: z.ZodString;
967
+ requestId: z.ZodString;
968
+ retryable: z.ZodBoolean;
969
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
970
+ }, z.core.$loose>;
971
+ }, z.core.$strip>>;
972
+ readonly resources: {
973
+ readonly reads: readonly [];
974
+ readonly changes: readonly [{
975
+ readonly type: 'account.feedback';
976
+ readonly idFrom: 'team.id';
977
+ }];
978
+ };
979
+ readonly policy: {
980
+ readonly rate: {
981
+ readonly name: 'cli-feedback';
982
+ readonly limit: 10;
983
+ readonly windowSeconds: 3600;
984
+ };
985
+ readonly idempotency: {
986
+ readonly _tag: 'none';
987
+ };
988
+ readonly entitlement: null;
989
+ readonly meter: null;
990
+ };
991
+ readonly lifecycle: {
992
+ readonly introduced: '1.0.0';
993
+ };
994
+ readonly docs: {
995
+ readonly summary: 'Submit CLI feedback';
996
+ readonly description: 'Stores an agent report in the existing feedback queue. Operators track fixes there and review unresolved reports during health checks. No Site or paid subscription is required. Send sanitized reproduction details only. This operation does not retry.';
997
+ readonly tags: readonly ["Account"];
998
+ readonly examples: readonly [{
999
+ readonly request: {
1000
+ readonly body: {
1001
+ readonly command: 'search cohorts';
1002
+ readonly comment: 'Agent report by Codex. Expected a reason for missing data. Received an empty list.';
1003
+ readonly agent: 'Codex';
1004
+ readonly cliVersion: '0.2.1';
1005
+ readonly intent: 'bug';
1006
+ };
1007
+ };
1008
+ readonly response: {
1009
+ readonly status: 200;
1010
+ readonly body: {
1011
+ readonly data: {
1012
+ readonly id: 'fb_01JXYZ';
1013
+ readonly status: 'new';
1014
+ };
1015
+ readonly meta: {
1016
+ readonly requestId: 'req_01JXYZ';
1017
+ readonly version: '1.0';
1018
+ };
1019
+ };
1020
+ };
1021
+ }];
1022
+ };
1023
+ };
900
1024
  export declare const accountV1Registry: import("./core.js").PublicV1Registry<{
901
1025
  readonly usage: {
902
1026
  readonly id: 'account.usage';
@@ -1158,6 +1282,7 @@ export declare const accountV1Registry: import("./core.js").PublicV1Registry<{
1158
1282
  "audit:read": "audit:read";
1159
1283
  "content:read": "content:read";
1160
1284
  "content:write": "content:write";
1285
+ "feedback:write": "feedback:write";
1161
1286
  "page:read": "page:read";
1162
1287
  "page:write": "page:write";
1163
1288
  "research:read": "research:read";
@@ -1199,29 +1324,8 @@ export declare const accountV1Registry: import("./core.js").PublicV1Registry<{
1199
1324
  api_token: "api_token";
1200
1325
  session: "session";
1201
1326
  }>;
1202
- readonly role: z.ZodEnum<{
1203
- admin: "admin";
1204
- member: "member";
1205
- owner: "owner";
1206
- viewer: "viewer";
1207
- }>;
1208
- readonly scopes: z.ZodArray<z.ZodEnum<{
1209
- "account:read": "account:read";
1210
- "actions:read": "actions:read";
1211
- "actions:write": "actions:write";
1212
- "analytics:read": "analytics:read";
1213
- "audit:read": "audit:read";
1214
- "content:read": "content:read";
1215
- "content:write": "content:write";
1216
- "page:read": "page:read";
1217
- "page:write": "page:write";
1218
- "research:read": "research:read";
1219
- "research:write": "research:write";
1220
- "sites:read": "sites:read";
1221
- "sites:write": "sites:write";
1222
- "timeline:read": "timeline:read";
1223
- "timeline:write": "timeline:write";
1224
- }>>;
1327
+ readonly role: z.ZodString;
1328
+ readonly scopes: z.ZodArray<z.ZodString>;
1225
1329
  readonly team: z.ZodObject<{
1226
1330
  id: z.ZodString;
1227
1331
  name: z.ZodNullable<z.ZodString>;
@@ -1360,4 +1464,158 @@ export declare const accountV1Registry: import("./core.js").PublicV1Registry<{
1360
1464
  }];
1361
1465
  };
1362
1466
  };
1467
+ readonly feedback: {
1468
+ readonly id: 'account.feedback';
1469
+ readonly method: 'POST';
1470
+ readonly path: '/api/v1/account/feedback';
1471
+ readonly visibility: 'public';
1472
+ readonly semantics: {
1473
+ readonly kind: 'mutation';
1474
+ readonly sideEffects: 'state';
1475
+ readonly retry: 'never';
1476
+ readonly readConsistency: null;
1477
+ };
1478
+ readonly auth: {
1479
+ readonly credentials: readonly ["session", "api_token"];
1480
+ readonly scopes: readonly ["feedback:write"];
1481
+ readonly minimumRole: 'viewer';
1482
+ readonly ownership: 'team';
1483
+ };
1484
+ readonly request: {
1485
+ readonly params: null;
1486
+ readonly query: null;
1487
+ readonly headers: null;
1488
+ readonly body: z.ZodObject<{
1489
+ command: z.ZodString;
1490
+ comment: z.ZodString;
1491
+ agent: z.ZodString;
1492
+ cliVersion: z.ZodString;
1493
+ intent: z.ZodDefault<z.ZodEnum<{
1494
+ bug: "bug";
1495
+ improvement: "improvement";
1496
+ }>>;
1497
+ requestId: z.ZodOptional<z.ZodString>;
1498
+ }, z.core.$strict>;
1499
+ };
1500
+ readonly responses: {
1501
+ readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1502
+ data: z.ZodObject<{
1503
+ readonly id: z.ZodString;
1504
+ readonly status: z.ZodLiteral<"new">;
1505
+ }, z.core.$strip>;
1506
+ meta: z.ZodObject<{
1507
+ requestId: z.ZodString;
1508
+ version: z.ZodLiteral<"1.0">;
1509
+ }, z.core.$strict>;
1510
+ }, z.core.$strip>, z.ZodObject<{
1511
+ data: z.ZodObject<{
1512
+ readonly id: z.ZodString;
1513
+ readonly status: z.ZodLiteral<"new">;
1514
+ }, z.core.$strip>;
1515
+ meta: z.ZodObject<{
1516
+ requestId: z.ZodString;
1517
+ version: z.ZodLiteral<"1.0">;
1518
+ }, z.core.$loose>;
1519
+ }, z.core.$strip>>;
1520
+ };
1521
+ readonly errors: readonly ["invalid_request", "unauthorized", "auth_expired", "forbidden", "rate_limited", "contract_violation", "internal_error"];
1522
+ readonly errorResponse: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1523
+ readonly error: z.ZodObject<{
1524
+ code: z.ZodEnum<{
1525
+ auth_expired: "auth_expired";
1526
+ conflict: "conflict";
1527
+ contract_violation: "contract_violation";
1528
+ entitlement_required: "entitlement_required";
1529
+ forbidden: "forbidden";
1530
+ internal_error: "internal_error";
1531
+ invalid_request: "invalid_request";
1532
+ not_found: "not_found";
1533
+ provider_unavailable: "provider_unavailable";
1534
+ quota_exhausted: "quota_exhausted";
1535
+ rate_limited: "rate_limited";
1536
+ site_ambiguous: "site_ambiguous";
1537
+ stale_evidence: "stale_evidence";
1538
+ unauthorized: "unauthorized";
1539
+ }>;
1540
+ message: z.ZodString;
1541
+ requestId: z.ZodString;
1542
+ retryable: z.ZodBoolean;
1543
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1544
+ }, z.core.$strict>;
1545
+ }, z.core.$strip>, z.ZodObject<{
1546
+ readonly error: z.ZodObject<{
1547
+ code: z.ZodEnum<{
1548
+ auth_expired: "auth_expired";
1549
+ conflict: "conflict";
1550
+ contract_violation: "contract_violation";
1551
+ entitlement_required: "entitlement_required";
1552
+ forbidden: "forbidden";
1553
+ internal_error: "internal_error";
1554
+ invalid_request: "invalid_request";
1555
+ not_found: "not_found";
1556
+ provider_unavailable: "provider_unavailable";
1557
+ quota_exhausted: "quota_exhausted";
1558
+ rate_limited: "rate_limited";
1559
+ site_ambiguous: "site_ambiguous";
1560
+ stale_evidence: "stale_evidence";
1561
+ unauthorized: "unauthorized";
1562
+ }>;
1563
+ message: z.ZodString;
1564
+ requestId: z.ZodString;
1565
+ retryable: z.ZodBoolean;
1566
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1567
+ }, z.core.$loose>;
1568
+ }, z.core.$strip>>;
1569
+ readonly resources: {
1570
+ readonly reads: readonly [];
1571
+ readonly changes: readonly [{
1572
+ readonly type: 'account.feedback';
1573
+ readonly idFrom: 'team.id';
1574
+ }];
1575
+ };
1576
+ readonly policy: {
1577
+ readonly rate: {
1578
+ readonly name: 'cli-feedback';
1579
+ readonly limit: 10;
1580
+ readonly windowSeconds: 3600;
1581
+ };
1582
+ readonly idempotency: {
1583
+ readonly _tag: 'none';
1584
+ };
1585
+ readonly entitlement: null;
1586
+ readonly meter: null;
1587
+ };
1588
+ readonly lifecycle: {
1589
+ readonly introduced: '1.0.0';
1590
+ };
1591
+ readonly docs: {
1592
+ readonly summary: 'Submit CLI feedback';
1593
+ readonly description: 'Stores an agent report in the existing feedback queue. Operators track fixes there and review unresolved reports during health checks. No Site or paid subscription is required. Send sanitized reproduction details only. This operation does not retry.';
1594
+ readonly tags: readonly ["Account"];
1595
+ readonly examples: readonly [{
1596
+ readonly request: {
1597
+ readonly body: {
1598
+ readonly command: 'search cohorts';
1599
+ readonly comment: 'Agent report by Codex. Expected a reason for missing data. Received an empty list.';
1600
+ readonly agent: 'Codex';
1601
+ readonly cliVersion: '0.2.1';
1602
+ readonly intent: 'bug';
1603
+ };
1604
+ };
1605
+ readonly response: {
1606
+ readonly status: 200;
1607
+ readonly body: {
1608
+ readonly data: {
1609
+ readonly id: 'fb_01JXYZ';
1610
+ readonly status: 'new';
1611
+ };
1612
+ readonly meta: {
1613
+ readonly requestId: 'req_01JXYZ';
1614
+ readonly version: '1.0';
1615
+ };
1616
+ };
1617
+ };
1618
+ }];
1619
+ };
1620
+ };
1363
1621
  }>;
@@ -159,8 +159,10 @@ export const accountTokenDataSchema = defineResponseObject({
159
159
  user: accountTokenUserProducerSchema,
160
160
  }, {
161
161
  credential: accountTokenCredentialSchema,
162
- role: schema.enum(PUBLIC_V1_ROLES),
163
- scopes: schema.array(schema.enum(PUBLIC_V1_SCOPES)),
162
+ // The server grants new roles and scopes over time. A client shipped
163
+ // earlier only displays them, so an unknown value must not fail the read.
164
+ role: schema.string().min(1),
165
+ scopes: schema.array(schema.string().min(1)),
164
166
  team: accountTokenTeamClientSchema,
165
167
  token: accountTokenDetailClientSchema.nullable(),
166
168
  user: accountTokenUserClientSchema,
@@ -233,10 +235,69 @@ export const accountTokenOperation = defineOperation({
233
235
  }],
234
236
  },
235
237
  });
238
+ export const accountFeedbackBodySchema = schema.strictObject({
239
+ command: schema.string().trim().min(1).max(200),
240
+ comment: schema.string().trim().min(1).max(2000),
241
+ agent: schema.string().trim().min(1).max(100),
242
+ cliVersion: schema.string().trim().min(1).max(64),
243
+ intent: schema.enum(['bug', 'improvement']).default('bug'),
244
+ requestId: schema.string().trim().min(1).max(128).optional(),
245
+ });
246
+ export const accountFeedbackResponseSchema = defineSuccessEnvelope(defineResponseObject({
247
+ id: schema.string().min(1),
248
+ status: schema.literal('new'),
249
+ }));
250
+ export const accountFeedbackOperation = defineOperation({
251
+ id: 'account.feedback',
252
+ method: 'POST',
253
+ path: '/api/v1/account/feedback',
254
+ visibility: 'public',
255
+ semantics: { kind: 'mutation', sideEffects: 'state', retry: 'never', readConsistency: null },
256
+ auth: {
257
+ credentials: ['session', 'api_token'],
258
+ scopes: ['feedback:write'],
259
+ minimumRole: 'viewer',
260
+ ownership: 'team',
261
+ },
262
+ request: { params: null, query: null, headers: null, body: accountFeedbackBodySchema },
263
+ responses: { 200: accountFeedbackResponseSchema },
264
+ errors: ['invalid_request', 'unauthorized', 'auth_expired', 'forbidden', 'rate_limited', 'contract_violation', 'internal_error'],
265
+ errorResponse: publicV1ErrorEnvelope,
266
+ resources: {
267
+ reads: [],
268
+ changes: [{ type: 'account.feedback', idFrom: 'team.id' }],
269
+ },
270
+ policy: {
271
+ rate: { name: 'cli-feedback', limit: 10, windowSeconds: 3600 },
272
+ idempotency: { _tag: 'none' },
273
+ entitlement: null,
274
+ meter: null,
275
+ },
276
+ lifecycle: { introduced: '1.0.0' },
277
+ docs: {
278
+ summary: 'Submit CLI feedback',
279
+ description: 'Stores an agent report in the existing feedback queue. Operators track fixes there and review unresolved reports during health checks. No Site or paid subscription is required. Send sanitized reproduction details only. This operation does not retry.',
280
+ tags: ['Account'],
281
+ examples: [{
282
+ request: { body: {
283
+ command: 'search cohorts',
284
+ comment: 'Agent report by Codex. Expected a reason for missing data. Received an empty list.',
285
+ agent: 'Codex',
286
+ cliVersion: '0.2.1',
287
+ intent: 'bug',
288
+ } },
289
+ response: { status: 200, body: {
290
+ data: { id: 'fb_01JXYZ', status: 'new' },
291
+ meta: { requestId: 'req_01JXYZ', version: '1.0' },
292
+ } },
293
+ }],
294
+ },
295
+ });
236
296
  export const accountV1Registry = defineRegistry({
237
297
  feature: 'account',
238
298
  operations: {
239
299
  usage: accountUsageOperation,
240
300
  token: accountTokenOperation,
301
+ feedback: accountFeedbackOperation,
241
302
  },
242
303
  });