@mestra-dev/contract 0.0.26 → 0.0.28

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 (2) hide show
  1. package/dist/index.d.ts +320 -147
  2. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -94,7 +94,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
94
94
  },
95
95
  {
96
96
  readonly name: "Files";
97
- readonly description: "Context-based S3 file upload and confirmation using presigned POSTs, with storage, profile, workspace, and comment contexts. Includes folder create/delete, workspace listing, pin/unpin, download, and delete.";
97
+ readonly description: "S3 file upload (presigned POST to a temporary `.tmp` key), confirm (magic-byte validation then promote to final key), profile and workspace picture upload/confirm/delete, comment attachment upload, list task comment files with download URLs, folder create/delete, list (includes pin metadata; excludes `.tmp` objects), pin/unpin, download, and file delete. General uploads accept JPEG/PNG/WebP/PDF; profile/workspace pictures accept JPEG/PNG only (0.5 MB).";
98
98
  },
99
99
  {
100
100
  readonly name: "Chat";
@@ -1404,41 +1404,21 @@ declare const routes: import("hono/hono-base").HonoBase<{
1404
1404
  readonly required: readonly [
1405
1405
  "filename",
1406
1406
  "contentType",
1407
- "context"
1407
+ "workspace"
1408
1408
  ];
1409
1409
  readonly properties: {
1410
1410
  readonly filename: {
1411
1411
  readonly type: "string";
1412
- readonly description: "Original file name (trimmed). Must not contain path separators or `..`.";
1412
+ readonly description: "Original file name (trimmed).";
1413
1413
  readonly example: "invoice-2026.pdf";
1414
1414
  };
1415
1415
  readonly contentType: {
1416
1416
  readonly $ref: "#/components/schemas/FileContentType";
1417
1417
  };
1418
- readonly context: {
1419
- readonly type: "string";
1420
- readonly enum: readonly [
1421
- "storage",
1422
- "profile",
1423
- "workspace",
1424
- "comment"
1425
- ];
1426
- readonly description: "Determines the S3 key prefix. Profile and workspace contexts accept only JPEG, PNG, or WebP; storage and comment also accept PDF.";
1427
- };
1428
1418
  readonly workspace: {
1429
1419
  readonly type: "string";
1430
1420
  readonly format: "uuid";
1431
- readonly description: "Required for storage, workspace, and comment contexts.";
1432
- };
1433
- readonly taskId: {
1434
- readonly type: "string";
1435
- readonly format: "uuid";
1436
- readonly description: "Required for comment context.";
1437
- };
1438
- readonly commentId: {
1439
- readonly type: "string";
1440
- readonly format: "uuid";
1441
- readonly description: "Required for comment context.";
1421
+ readonly description: "Workspace identifier.";
1442
1422
  };
1443
1423
  };
1444
1424
  };
@@ -1446,44 +1426,18 @@ declare const routes: import("hono/hono-base").HonoBase<{
1446
1426
  readonly type: "object";
1447
1427
  readonly required: readonly [
1448
1428
  "filename",
1449
- "context",
1450
- "uploadId"
1429
+ "workspace"
1451
1430
  ];
1452
1431
  readonly properties: {
1453
1432
  readonly filename: {
1454
1433
  readonly type: "string";
1455
- readonly description: "Original file name used in `/files/upload` (without `.tmp`). Must not contain path separators or `..`.";
1434
+ readonly description: "Original file name used for `/files/upload` (without the `.tmp` suffix).";
1456
1435
  readonly example: "invoice-2026.pdf";
1457
1436
  };
1458
- readonly context: {
1459
- readonly type: "string";
1460
- readonly enum: readonly [
1461
- "storage",
1462
- "profile",
1463
- "workspace",
1464
- "comment"
1465
- ];
1466
- readonly description: "Must match the context used for `/files/upload`. Profile and workspace contexts must contain an image, not a PDF.";
1467
- };
1468
- readonly uploadId: {
1469
- readonly type: "string";
1470
- readonly format: "uuid";
1471
- readonly description: "Upload session identifier returned by `/files/upload`.";
1472
- };
1473
1437
  readonly workspace: {
1474
1438
  readonly type: "string";
1475
1439
  readonly format: "uuid";
1476
- readonly description: "Required for storage, workspace, and comment contexts.";
1477
- };
1478
- readonly taskId: {
1479
- readonly type: "string";
1480
- readonly format: "uuid";
1481
- readonly description: "Required for comment context.";
1482
- };
1483
- readonly commentId: {
1484
- readonly type: "string";
1485
- readonly format: "uuid";
1486
- readonly description: "Required for comment context.";
1440
+ readonly description: "Workspace identifier.";
1487
1441
  };
1488
1442
  };
1489
1443
  };
@@ -1500,7 +1454,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
1500
1454
  };
1501
1455
  readonly key: {
1502
1456
  readonly type: "string";
1503
- readonly description: "Final S3 object key after confirmation, derived from context.";
1457
+ readonly description: "Final S3 object key after promotion (`{workspace}/{filename}`).";
1504
1458
  readonly example: "550e8400-e29b-41d4-a716-446655440000/invoice-2026.pdf";
1505
1459
  };
1506
1460
  };
@@ -1511,8 +1465,6 @@ declare const routes: import("hono/hono-base").HonoBase<{
1511
1465
  "url",
1512
1466
  "fields",
1513
1467
  "key",
1514
- "fileKey",
1515
- "uploadId",
1516
1468
  "maxSize"
1517
1469
  ];
1518
1470
  readonly properties: {
@@ -1529,23 +1481,14 @@ declare const routes: import("hono/hono-base").HonoBase<{
1529
1481
  };
1530
1482
  readonly key: {
1531
1483
  readonly type: "string";
1532
- readonly description: "Context-derived temporary S3 object key. Call `/files/confirm` after upload.";
1533
- readonly example: "550e8400-e29b-41d4-a716-446655440000/invoice-2026.pdf.tmp/7b7c3c8b-2d17-4d5f-9f2b-1e7b3b4c5d6e";
1484
+ readonly description: "Temporary S3 object key (`{workspace}/{filename}.tmp`). Call `/files/confirm` after upload.";
1485
+ readonly example: "550e8400-e29b-41d4-a716-446655440000/invoice-2026.pdf.tmp";
1534
1486
  };
1535
1487
  readonly maxSize: {
1536
1488
  readonly type: "integer";
1537
- readonly description: "Maximum allowed upload size in bytes: 15 MB for storage/comment, 0.5 MB for profile/workspace.";
1489
+ readonly description: "Maximum allowed upload size in bytes (15 MB).";
1538
1490
  readonly example: 15728640;
1539
1491
  };
1540
- readonly fileKey: {
1541
- readonly type: "string";
1542
- readonly description: "Final S3 object key to use with generic file operations.";
1543
- };
1544
- readonly uploadId: {
1545
- readonly type: "string";
1546
- readonly format: "uuid";
1547
- readonly description: "Upload session identifier required by `/files/confirm`.";
1548
- };
1549
1492
  };
1550
1493
  };
1551
1494
  readonly UploadToCommentRequest: {
@@ -1620,6 +1563,37 @@ declare const routes: import("hono/hono-base").HonoBase<{
1620
1563
  };
1621
1564
  };
1622
1565
  };
1566
+ readonly DeleteCommentFileRequest: {
1567
+ readonly type: "object";
1568
+ readonly required: readonly [
1569
+ "filename",
1570
+ "workspace",
1571
+ "taskId",
1572
+ "commentId"
1573
+ ];
1574
+ readonly properties: {
1575
+ readonly filename: {
1576
+ readonly type: "string";
1577
+ readonly description: "Original file name (trimmed).";
1578
+ readonly example: "receipt.pdf";
1579
+ };
1580
+ readonly workspace: {
1581
+ readonly type: "string";
1582
+ readonly format: "uuid";
1583
+ readonly description: "Workspace identifier.";
1584
+ };
1585
+ readonly taskId: {
1586
+ readonly type: "string";
1587
+ readonly format: "uuid";
1588
+ readonly description: "Task the comment belongs to.";
1589
+ };
1590
+ readonly commentId: {
1591
+ readonly type: "string";
1592
+ readonly format: "uuid";
1593
+ readonly description: "Comment the file is attached to.";
1594
+ };
1595
+ };
1596
+ };
1623
1597
  readonly TaskCommentFile: {
1624
1598
  readonly type: "object";
1625
1599
  readonly required: readonly [
@@ -1824,11 +1798,11 @@ declare const routes: import("hono/hono-base").HonoBase<{
1824
1798
  readonly workspace: {
1825
1799
  readonly type: "string";
1826
1800
  readonly format: "uuid";
1827
- readonly description: "Workspace identifier. `fileKey` must be under `{workspace}/`.";
1801
+ readonly description: "Workspace identifier (used for access check).";
1828
1802
  };
1829
1803
  readonly fileKey: {
1830
1804
  readonly type: "string";
1831
- readonly description: "Full S3 object key to pin or unpin. Must start with `{workspace}/` (as returned by list or confirm).";
1805
+ readonly description: "Full S3 object key to pin or unpin (as returned by list or upload).";
1832
1806
  readonly example: "550e8400-e29b-41d4-a716-446655440000/invoice-2026.pdf";
1833
1807
  };
1834
1808
  readonly pin: {
@@ -1956,34 +1930,15 @@ declare const routes: import("hono/hono-base").HonoBase<{
1956
1930
  readonly workspace: {
1957
1931
  readonly type: "string";
1958
1932
  readonly format: "uuid";
1959
- readonly description: "Workspace identifier. `fileKey` must be under `{workspace}/`.";
1933
+ readonly description: "Workspace identifier (used for access check).";
1960
1934
  };
1961
1935
  readonly fileKey: {
1962
1936
  readonly type: "string";
1963
- readonly description: "Full S3 object key to delete. Must start with `{workspace}/` (as returned by list or confirm).";
1937
+ readonly description: "Full S3 object key to delete (as returned by list or upload).";
1964
1938
  readonly example: "550e8400-e29b-41d4-a716-446655440000/invoice-2026.pdf";
1965
1939
  };
1966
1940
  };
1967
1941
  };
1968
- readonly DeleteCommentFileRequest: {
1969
- readonly type: "object";
1970
- readonly required: readonly [
1971
- "workspace",
1972
- "fileKey"
1973
- ];
1974
- readonly properties: {
1975
- readonly workspace: {
1976
- readonly type: "string";
1977
- readonly format: "uuid";
1978
- readonly description: "Workspace identifier. `fileKey` must be under `{workspace}_comments/`.";
1979
- };
1980
- readonly fileKey: {
1981
- readonly type: "string";
1982
- readonly description: "Full S3 object key to delete (as returned by upload-to-comment or download-from-task).";
1983
- readonly example: "550e8400-e29b-41d4-a716-446655440000_comments/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/ffffffff-1111-2222-3333-444444444444/receipt.pdf";
1984
- };
1985
- };
1986
- };
1987
1942
  readonly DeleteFileSuccess: {
1988
1943
  readonly type: "object";
1989
1944
  readonly required: readonly [
@@ -2006,28 +1961,6 @@ declare const routes: import("hono/hono-base").HonoBase<{
2006
1961
  };
2007
1962
  };
2008
1963
  };
2009
- readonly DeleteCommentFileSuccess: {
2010
- readonly type: "object";
2011
- readonly required: readonly [
2012
- "success",
2013
- "message",
2014
- "key"
2015
- ];
2016
- readonly properties: {
2017
- readonly success: {
2018
- readonly type: "boolean";
2019
- readonly const: true;
2020
- };
2021
- readonly message: {
2022
- readonly type: "string";
2023
- readonly example: "Comment file deleted successfully";
2024
- };
2025
- readonly key: {
2026
- readonly type: "string";
2027
- readonly description: "S3 object key that was deleted.";
2028
- };
2029
- };
2030
- };
2031
1964
  readonly DeleteFileFailure: {
2032
1965
  readonly type: "object";
2033
1966
  readonly required: readonly [
@@ -9795,7 +9728,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
9795
9728
  "Files"
9796
9729
  ];
9797
9730
  readonly summary: "Create presigned S3 upload";
9798
- readonly description: "Returns a presigned POST URL for a context-based temporary upload (15 MB for `storage` and `comment`; 0.5 MB for `profile` and `workspace`, with a 5-minute expiry). The context may be `storage`, `profile`, `workspace`, or `comment`; related identifiers are required for each context. The response includes a server-generated `uploadId`, which must be sent to `/files/confirm` to prevent temporary-upload substitution. Workspace, comment, and workspace-profile contexts require the corresponding workspace permissions.";
9731
+ readonly description: "Returns a presigned POST URL and form fields for uploading a file to S3 (max 15 MB, 5-minute expiry). Object key is `{workspace}/{filename}.tmp`. Only JPEG, PNG, WebP, and PDF content types are accepted. After the multipart upload succeeds, call `/files/confirm` to validate magic bytes and promote the object to `{workspace}/{filename}`. Temporary objects are excluded from list results. Requires workspace access.";
9799
9732
  readonly security: readonly [
9800
9733
  never
9801
9734
  ];
@@ -9821,7 +9754,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
9821
9754
  };
9822
9755
  };
9823
9756
  readonly 400: {
9824
- readonly description: "Invalid request payload, unsupported content type, or unsafe filename.";
9757
+ readonly description: "Invalid request payload or unsupported content type.";
9825
9758
  readonly content: {
9826
9759
  readonly "application/json": {
9827
9760
  readonly schema: {
@@ -9868,8 +9801,8 @@ declare const routes: import("hono/hono-base").HonoBase<{
9868
9801
  readonly tags: readonly [
9869
9802
  "Files"
9870
9803
  ];
9871
- readonly summary: "Confirm and persist an uploaded workspace file";
9872
- readonly description: "Reads the context-specific temporary object identified by `uploadId`, verifies size (<= 15 MB) and real file type via magic bytes (JPEG, PNG, WebP, or PDF), writes it to the context-derived final key, and deletes the temporary object. On failure, the temporary object is deleted. The same context identifiers and uploadId returned by `/files/upload` are required.";
9804
+ readonly summary: "Confirm and promote a temporary upload";
9805
+ readonly description: "Reads the temporary object at `{workspace}/{filename}.tmp`, verifies size (<= 15 MB) and real file type (JPEG, PNG, WebP, or PDF), copies it to `{workspace}/{filename}`, and deletes the temporary object. On failure, the temporary object is deleted. Requires workspace access.";
9873
9806
  readonly security: readonly [
9874
9807
  never
9875
9808
  ];
@@ -9885,7 +9818,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
9885
9818
  };
9886
9819
  readonly responses: {
9887
9820
  readonly 200: {
9888
- readonly description: "File confirmed and stored at the final key.";
9821
+ readonly description: "File confirmed and promoted successfully.";
9889
9822
  readonly content: {
9890
9823
  readonly "application/json": {
9891
9824
  readonly schema: {
@@ -9895,7 +9828,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
9895
9828
  };
9896
9829
  };
9897
9830
  readonly 400: {
9898
- readonly description: "Invalid payload, missing temp object, file too large, or invalid file type.";
9831
+ readonly description: "Temporary object missing, file too large, invalid file type, or processing failed.";
9899
9832
  readonly content: {
9900
9833
  readonly "application/json": {
9901
9834
  readonly schema: {
@@ -10091,7 +10024,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
10091
10024
  "Files"
10092
10025
  ];
10093
10026
  readonly summary: "List workspace files";
10094
- readonly description: "Lists up to 50 S3 objects under the workspace prefix (excludes keys ending in `.tmp`). Each item includes `pin` from S3 object user metadata. Requires workspace access.";
10027
+ readonly description: "Lists up to 50 S3 objects under the workspace prefix. Temporary uploads ending in `.tmp` are excluded. Each item includes `pin` from S3 object user metadata. Requires workspace access.";
10095
10028
  readonly security: readonly [
10096
10029
  never
10097
10030
  ];
@@ -10252,7 +10185,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
10252
10185
  "Files"
10253
10186
  ];
10254
10187
  readonly summary: "Pin or unpin a file";
10255
- readonly description: "Sets S3 object user metadata `pin` to `true` or `false` on the given full `fileKey` via copy-in-place with MetadataDirective REPLACE. `fileKey` must start with `{workspace}/`. Requires workspace access.";
10188
+ readonly description: "Sets S3 object user metadata `pin` to `true` or `false` on the given full `fileKey` via copy-in-place with MetadataDirective REPLACE. Requires workspace access.";
10256
10189
  readonly security: readonly [
10257
10190
  never
10258
10191
  ];
@@ -10326,7 +10259,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
10326
10259
  "Files"
10327
10260
  ];
10328
10261
  readonly summary: "Delete a file by S3 key";
10329
- readonly description: "Deletes an S3 object by full `fileKey`. Rejects keys that are not under `{workspace}/`. Verifies the object exists before deletion and confirms removal afterward. Requires workspace access.";
10262
+ readonly description: "Deletes an S3 object by full `fileKey`. Verifies the object exists before deletion and confirms removal afterward. Requires workspace access.";
10330
10263
  readonly security: readonly [
10331
10264
  never
10332
10265
  ];
@@ -10372,11 +10305,11 @@ declare const routes: import("hono/hono-base").HonoBase<{
10372
10305
  };
10373
10306
  };
10374
10307
  readonly 403: {
10375
- readonly description: "Forbidden - Token issuer is not 'access', user lacks workspace access, or fileKey is outside the workspace prefix.";
10308
+ readonly description: "Forbidden - Token issuer is not 'access' or user lacks workspace access.";
10376
10309
  readonly content: {
10377
10310
  readonly "application/json": {
10378
10311
  readonly schema: {
10379
- readonly $ref: "#/components/schemas/DeleteFileFailure";
10312
+ readonly $ref: "#/components/schemas/ErrorResponse";
10380
10313
  };
10381
10314
  };
10382
10315
  };
@@ -10478,13 +10411,13 @@ declare const routes: import("hono/hono-base").HonoBase<{
10478
10411
  };
10479
10412
  };
10480
10413
  };
10481
- readonly "/files/delete-from-comment": {
10414
+ readonly "/files/delete-comment-file": {
10482
10415
  readonly post: {
10483
10416
  readonly tags: readonly [
10484
10417
  "Files"
10485
10418
  ];
10486
- readonly summary: "Delete a comment attachment by S3 key";
10487
- readonly description: "Deletes a comment attachment S3 object by full `fileKey`. Rejects keys that are not under `{workspace}_comments/`. Requires workspace access and write access to crm::tasks.";
10419
+ readonly summary: "Delete a comment attachment";
10420
+ readonly description: "Deletes the S3 object at `{workspace}_comments/{taskId}/{commentId}/{filename}`. Verifies the object exists before deletion and confirms removal afterward. Requires workspace access and write access to crm::tasks.";
10488
10421
  readonly security: readonly [
10489
10422
  never
10490
10423
  ];
@@ -10504,7 +10437,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
10504
10437
  readonly content: {
10505
10438
  readonly "application/json": {
10506
10439
  readonly schema: {
10507
- readonly $ref: "#/components/schemas/DeleteCommentFileSuccess";
10440
+ readonly $ref: "#/components/schemas/DeleteFileSuccess";
10508
10441
  };
10509
10442
  };
10510
10443
  };
@@ -10530,17 +10463,27 @@ declare const routes: import("hono/hono-base").HonoBase<{
10530
10463
  };
10531
10464
  };
10532
10465
  readonly 403: {
10533
- readonly description: "Forbidden - Token issuer is not 'access', user lacks workspace access, user lacks write access to crm::tasks, or fileKey is outside the comment attachments prefix.";
10466
+ readonly description: "Forbidden - Token issuer is not 'access', user lacks workspace access, or user lacks write access to crm::tasks.";
10534
10467
  readonly content: {
10535
10468
  readonly "application/json": {
10536
10469
  readonly schema: {
10537
- readonly $ref: "#/components/schemas/DeleteFileFailure";
10470
+ readonly $ref: "#/components/schemas/ErrorResponse";
10538
10471
  };
10539
10472
  };
10540
10473
  };
10541
10474
  };
10542
10475
  readonly 404: {
10543
- readonly description: "File not found at the given key.";
10476
+ readonly description: "File not found at the given comment attachment key.";
10477
+ readonly content: {
10478
+ readonly "application/json": {
10479
+ readonly schema: {
10480
+ readonly $ref: "#/components/schemas/DeleteFileFailure";
10481
+ };
10482
+ };
10483
+ };
10484
+ };
10485
+ readonly 500: {
10486
+ readonly description: "Delete command ran but the object still exists.";
10544
10487
  readonly content: {
10545
10488
  readonly "application/json": {
10546
10489
  readonly schema: {
@@ -16721,21 +16664,18 @@ declare const routes: import("hono/hono-base").HonoBase<{
16721
16664
  input: {};
16722
16665
  output: {
16723
16666
  success: false;
16724
- error: string;
16667
+ error: never;
16725
16668
  };
16726
16669
  outputFormat: "json";
16727
16670
  status: 400;
16728
16671
  } | {
16729
16672
  input: {};
16730
16673
  output: {
16731
- success: true;
16732
16674
  url: string;
16733
16675
  fields: {
16734
16676
  [x: string]: string;
16735
16677
  };
16736
16678
  key: string;
16737
- fileKey: string;
16738
- uploadId: `${string}-${string}-${string}-${string}-${string}`;
16739
16679
  maxSize: number;
16740
16680
  };
16741
16681
  outputFormat: "json";
@@ -16745,6 +16685,14 @@ declare const routes: import("hono/hono-base").HonoBase<{
16745
16685
  } & {
16746
16686
  "/confirm": {
16747
16687
  $post: {
16688
+ input: {};
16689
+ output: {
16690
+ success: true;
16691
+ key: string;
16692
+ };
16693
+ outputFormat: "json";
16694
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16695
+ } | {
16748
16696
  input: {};
16749
16697
  output: {
16750
16698
  success: false;
@@ -16752,15 +16700,69 @@ declare const routes: import("hono/hono-base").HonoBase<{
16752
16700
  };
16753
16701
  outputFormat: "json";
16754
16702
  status: 400;
16703
+ };
16704
+ };
16705
+ } & {
16706
+ "/create-folder": {
16707
+ $post: {
16708
+ input: {};
16709
+ output: {
16710
+ success: false;
16711
+ error: never;
16712
+ };
16713
+ outputFormat: "json";
16714
+ status: 400;
16755
16715
  } | {
16756
16716
  input: {};
16757
16717
  output: {
16758
16718
  success: true;
16719
+ message: string;
16759
16720
  key: string;
16760
- fileKey: string;
16761
16721
  };
16762
16722
  outputFormat: "json";
16763
- status: import("hono/utils/http-status").ContentfulStatusCode;
16723
+ status: 201;
16724
+ };
16725
+ };
16726
+ } & {
16727
+ "/delete-folder": {
16728
+ $post: {
16729
+ input: {};
16730
+ output: {
16731
+ success: false;
16732
+ error: never;
16733
+ };
16734
+ outputFormat: "json";
16735
+ status: 400;
16736
+ } | {
16737
+ input: {};
16738
+ output: {
16739
+ success: true;
16740
+ message: string;
16741
+ };
16742
+ outputFormat: "json";
16743
+ status: 200;
16744
+ };
16745
+ };
16746
+ } & {
16747
+ "/list/:workspace": {
16748
+ $get: {
16749
+ input: {
16750
+ param: {
16751
+ workspace: string;
16752
+ };
16753
+ };
16754
+ output: {
16755
+ success: true;
16756
+ files: {
16757
+ key: string | undefined;
16758
+ size: number | undefined;
16759
+ lastModified: string | undefined;
16760
+ pin: boolean;
16761
+ }[];
16762
+ nextToken: string | undefined;
16763
+ };
16764
+ outputFormat: "json";
16765
+ status: 200;
16764
16766
  };
16765
16767
  };
16766
16768
  } & {
@@ -16821,6 +16823,15 @@ declare const routes: import("hono/hono-base").HonoBase<{
16821
16823
  };
16822
16824
  outputFormat: "json";
16823
16825
  status: 404;
16826
+ } | {
16827
+ input: {};
16828
+ output: {
16829
+ success: false;
16830
+ message: string;
16831
+ key: string;
16832
+ };
16833
+ outputFormat: "json";
16834
+ status: 500;
16824
16835
  } | {
16825
16836
  input: {};
16826
16837
  output: {
@@ -16833,7 +16844,7 @@ declare const routes: import("hono/hono-base").HonoBase<{
16833
16844
  };
16834
16845
  };
16835
16846
  } & {
16836
- "/create-folder": {
16847
+ "/upload-to-comment": {
16837
16848
  $post: {
16838
16849
  input: {};
16839
16850
  output: {
@@ -16846,15 +16857,19 @@ declare const routes: import("hono/hono-base").HonoBase<{
16846
16857
  input: {};
16847
16858
  output: {
16848
16859
  success: true;
16849
- message: string;
16860
+ url: string;
16861
+ fields: {
16862
+ [x: string]: string;
16863
+ };
16850
16864
  key: string;
16865
+ maxSize: number;
16851
16866
  };
16852
16867
  outputFormat: "json";
16853
- status: 201;
16868
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16854
16869
  };
16855
16870
  };
16856
16871
  } & {
16857
- "/delete-folder": {
16872
+ "/delete-comment-file": {
16858
16873
  $post: {
16859
16874
  input: {};
16860
16875
  output: {
@@ -16863,38 +16878,196 @@ declare const routes: import("hono/hono-base").HonoBase<{
16863
16878
  };
16864
16879
  outputFormat: "json";
16865
16880
  status: 400;
16881
+ } | {
16882
+ input: {};
16883
+ output: {
16884
+ success: false;
16885
+ message: string;
16886
+ key: string;
16887
+ };
16888
+ outputFormat: "json";
16889
+ status: 404;
16890
+ } | {
16891
+ input: {};
16892
+ output: {
16893
+ success: false;
16894
+ message: string;
16895
+ key: string;
16896
+ };
16897
+ outputFormat: "json";
16898
+ status: 500;
16866
16899
  } | {
16867
16900
  input: {};
16868
16901
  output: {
16869
16902
  success: true;
16870
16903
  message: string;
16904
+ key: string;
16871
16905
  };
16872
16906
  outputFormat: "json";
16873
16907
  status: import("hono/utils/http-status").ContentfulStatusCode;
16874
16908
  };
16875
16909
  };
16876
16910
  } & {
16877
- "/list/:workspace": {
16911
+ "/download-from-task/:workspace/:taskId": {
16878
16912
  $get: {
16879
16913
  input: {
16880
16914
  param: {
16881
16915
  workspace: string;
16916
+ } & {
16917
+ taskId: string;
16882
16918
  };
16883
16919
  };
16884
16920
  output: {
16885
16921
  success: true;
16886
16922
  files: {
16887
- key: string | undefined;
16888
- size: number | undefined;
16889
- lastModified: string | undefined;
16890
- pin: boolean;
16923
+ key: string;
16924
+ filename: string;
16925
+ commentId: string;
16926
+ size: number;
16927
+ lastModified: string | null;
16928
+ downloadUrl: string;
16891
16929
  }[];
16892
- nextToken: string | undefined;
16893
16930
  };
16894
16931
  outputFormat: "json";
16895
16932
  status: import("hono/utils/http-status").ContentfulStatusCode;
16896
16933
  };
16897
16934
  };
16935
+ } & {
16936
+ "/upload-profile-picture": {
16937
+ $post: {
16938
+ input: {};
16939
+ output: {
16940
+ success: false;
16941
+ error: never;
16942
+ };
16943
+ outputFormat: "json";
16944
+ status: 400;
16945
+ } | {
16946
+ input: {};
16947
+ output: {
16948
+ url: string;
16949
+ fields: {
16950
+ [x: string]: string;
16951
+ };
16952
+ key: string;
16953
+ maxSize: number;
16954
+ };
16955
+ outputFormat: "json";
16956
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16957
+ };
16958
+ };
16959
+ } & {
16960
+ "/confirm-profile-picture": {
16961
+ $post: {
16962
+ input: {};
16963
+ output: {
16964
+ success: true;
16965
+ url: string;
16966
+ };
16967
+ outputFormat: "json";
16968
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16969
+ } | {
16970
+ input: {};
16971
+ output: {
16972
+ success: false;
16973
+ error: string;
16974
+ };
16975
+ outputFormat: "json";
16976
+ status: 400;
16977
+ };
16978
+ };
16979
+ } & {
16980
+ "/delete-profile-picture": {
16981
+ $post: {
16982
+ input: {};
16983
+ output: {
16984
+ success: true;
16985
+ message: string;
16986
+ };
16987
+ outputFormat: "json";
16988
+ status: import("hono/utils/http-status").ContentfulStatusCode;
16989
+ } | {
16990
+ input: {};
16991
+ output: {
16992
+ success: false;
16993
+ error: string;
16994
+ };
16995
+ outputFormat: "json";
16996
+ status: 500;
16997
+ };
16998
+ };
16999
+ } & {
17000
+ "/upload-workspace-picture": {
17001
+ $post: {
17002
+ input: {};
17003
+ output: {
17004
+ success: false;
17005
+ error: never;
17006
+ };
17007
+ outputFormat: "json";
17008
+ status: 400;
17009
+ } | {
17010
+ input: {};
17011
+ output: {
17012
+ url: string;
17013
+ fields: {
17014
+ [x: string]: string;
17015
+ };
17016
+ key: string;
17017
+ maxSize: number;
17018
+ };
17019
+ outputFormat: "json";
17020
+ status: import("hono/utils/http-status").ContentfulStatusCode;
17021
+ };
17022
+ };
17023
+ } & {
17024
+ "/confirm-workspace-picture": {
17025
+ $post: {
17026
+ input: {};
17027
+ output: {
17028
+ success: true;
17029
+ url: string;
17030
+ };
17031
+ outputFormat: "json";
17032
+ status: import("hono/utils/http-status").ContentfulStatusCode;
17033
+ } | {
17034
+ input: {};
17035
+ output: {
17036
+ success: false;
17037
+ error: string;
17038
+ };
17039
+ outputFormat: "json";
17040
+ status: 400;
17041
+ };
17042
+ };
17043
+ } & {
17044
+ "/delete-workspace-picture": {
17045
+ $post: {
17046
+ input: {};
17047
+ output: {
17048
+ success: false;
17049
+ error: never;
17050
+ };
17051
+ outputFormat: "json";
17052
+ status: 400;
17053
+ } | {
17054
+ input: {};
17055
+ output: {
17056
+ success: true;
17057
+ message: string;
17058
+ };
17059
+ outputFormat: "json";
17060
+ status: import("hono/utils/http-status").ContentfulStatusCode;
17061
+ } | {
17062
+ input: {};
17063
+ output: {
17064
+ success: false;
17065
+ error: string;
17066
+ };
17067
+ outputFormat: "json";
17068
+ status: 500;
17069
+ };
17070
+ };
16898
17071
  }, "/files"> | import("hono/types").MergeSchemaPath<{
16899
17072
  "/start": {
16900
17073
  $post: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mestra-dev/contract",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "description": "Types-only Hono AppType contract for the Mestra auth API",
5
5
  "type": "module",
6
6
  "sideEffects": false,