@elevasis/ui 2.71.0 → 2.73.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 (71) hide show
  1. package/dist/api/index.js +3 -3
  2. package/dist/app/index.d.ts +116 -22
  3. package/dist/app/index.js +8 -8
  4. package/dist/auth/index.js +4 -4
  5. package/dist/charts/index.js +4 -4
  6. package/dist/{chunk-DCMFNSJ6.js → chunk-3TS5U5BL.js} +1 -1
  7. package/dist/{chunk-VRRIHA3S.js → chunk-4CW2C5BD.js} +1 -1
  8. package/dist/{chunk-26BTE3Z4.js → chunk-5B2ZFO44.js} +1 -1
  9. package/dist/{chunk-BM2WKRAQ.js → chunk-AJOVWB47.js} +3 -3
  10. package/dist/{chunk-DH2MO5DX.js → chunk-CJ2232PQ.js} +1 -1
  11. package/dist/{chunk-TVFSVTRG.js → chunk-ETN3TTRT.js} +7 -7
  12. package/dist/{chunk-NM4A63KJ.js → chunk-IBCEAVB2.js} +56 -20
  13. package/dist/{chunk-3BLYJT5L.js → chunk-IGBPWD6S.js} +3 -3
  14. package/dist/{chunk-TB2PM2OU.js → chunk-JYBJMVNY.js} +1 -1
  15. package/dist/{chunk-TCQZ4AJI.js → chunk-LEPYXLJ2.js} +1 -1
  16. package/dist/{chunk-H3SDGC5F.js → chunk-LZT2H2MA.js} +4 -4
  17. package/dist/{chunk-VDX6DL7Z.js → chunk-NHNTX6ZL.js} +1 -1
  18. package/dist/{chunk-VHPHWTX7.js → chunk-NI37YNRP.js} +4 -4
  19. package/dist/{chunk-UZ7MSORW.js → chunk-OCVSPAKM.js} +540 -29
  20. package/dist/{chunk-LL5H7J4N.js → chunk-PQ4B62HH.js} +2 -2
  21. package/dist/{chunk-CPBT6Z2G.js → chunk-SWKAH2YM.js} +52 -20
  22. package/dist/{chunk-C75XWBYZ.js → chunk-U2H3TIHD.js} +1 -1
  23. package/dist/{chunk-AIOV5NM7.js → chunk-Z4ICFQXG.js} +1 -1
  24. package/dist/{chunk-JTSNU6KA.js → chunk-ZDKPHFTH.js} +3 -3
  25. package/dist/components/index.d.ts +307 -24
  26. package/dist/components/index.js +316 -26
  27. package/dist/components/navigation/index.js +5 -5
  28. package/dist/features/auth/index.d.ts +76 -0
  29. package/dist/features/auth/index.js +6 -6
  30. package/dist/features/clients/index.js +5 -5
  31. package/dist/features/content/index.d.ts +586 -66
  32. package/dist/features/content/index.js +1213 -312
  33. package/dist/features/crm/index.d.ts +117 -22
  34. package/dist/features/crm/index.js +6 -6
  35. package/dist/features/dashboard/index.d.ts +20 -11
  36. package/dist/features/dashboard/index.js +6 -6
  37. package/dist/features/delivery/index.d.ts +76 -0
  38. package/dist/features/delivery/index.js +5 -5
  39. package/dist/features/knowledge/index.js +4 -4
  40. package/dist/features/lead-gen/index.d.ts +41 -22
  41. package/dist/features/lead-gen/index.js +6 -6
  42. package/dist/features/monitoring/index.js +7 -7
  43. package/dist/features/monitoring/requests/index.js +5 -5
  44. package/dist/features/operations/index.d.ts +40 -22
  45. package/dist/features/operations/index.js +9 -9
  46. package/dist/features/settings/index.d.ts +76 -0
  47. package/dist/features/settings/index.js +6 -6
  48. package/dist/hooks/access/index.js +4 -4
  49. package/dist/hooks/delivery/index.d.ts +76 -0
  50. package/dist/hooks/delivery/index.js +2 -2
  51. package/dist/hooks/index.d.ts +1259 -32
  52. package/dist/hooks/index.js +4 -4
  53. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +20 -11
  54. package/dist/hooks/published.d.ts +1259 -32
  55. package/dist/hooks/published.js +4 -4
  56. package/dist/initialization/index.d.ts +76 -0
  57. package/dist/knowledge/index.d.ts +40 -22
  58. package/dist/knowledge/index.js +18 -18
  59. package/dist/{knowledge-search-index-LP2WVSQX.js → knowledge-search-index-RZLIVWPJ.js} +5 -5
  60. package/dist/layout/index.js +7 -7
  61. package/dist/profile/index.d.ts +76 -0
  62. package/dist/provider/index.d.ts +116 -22
  63. package/dist/provider/index.js +4 -4
  64. package/dist/provider/published.d.ts +116 -22
  65. package/dist/provider/published.js +4 -4
  66. package/dist/supabase/index.d.ts +149 -0
  67. package/dist/test-utils/index.js +3 -3
  68. package/dist/types/index.d.ts +126 -14
  69. package/dist/utils/index.d.ts +20 -11
  70. package/dist/utils/index.js +1 -1
  71. package/package.json +5 -5
@@ -1832,6 +1832,63 @@ type Database = {
1832
1832
  }
1833
1833
  ];
1834
1834
  };
1835
+ content_item_source_assets: {
1836
+ Row: {
1837
+ alt_text: string | null;
1838
+ content_item_id: string;
1839
+ created_at: string;
1840
+ crop: Json | null;
1841
+ derivative_crop: Json | null;
1842
+ derivative_path: string | null;
1843
+ derivative_rendered_at: string | null;
1844
+ id: string;
1845
+ organization_id: string;
1846
+ position: number;
1847
+ source_asset_id: string;
1848
+ };
1849
+ Insert: {
1850
+ alt_text?: string | null;
1851
+ content_item_id: string;
1852
+ created_at?: string;
1853
+ crop?: Json | null;
1854
+ derivative_crop?: Json | null;
1855
+ derivative_path?: string | null;
1856
+ derivative_rendered_at?: string | null;
1857
+ id?: string;
1858
+ organization_id: string;
1859
+ position: number;
1860
+ source_asset_id: string;
1861
+ };
1862
+ Update: {
1863
+ alt_text?: string | null;
1864
+ content_item_id?: string;
1865
+ created_at?: string;
1866
+ crop?: Json | null;
1867
+ derivative_crop?: Json | null;
1868
+ derivative_path?: string | null;
1869
+ derivative_rendered_at?: string | null;
1870
+ id?: string;
1871
+ organization_id?: string;
1872
+ position?: number;
1873
+ source_asset_id?: string;
1874
+ };
1875
+ Relationships: [
1876
+ {
1877
+ foreignKeyName: "content_item_source_assets_asset_fkey";
1878
+ columns: ["source_asset_id", "organization_id"];
1879
+ isOneToOne: false;
1880
+ referencedRelation: "content_source_assets";
1881
+ referencedColumns: ["id", "organization_id"];
1882
+ },
1883
+ {
1884
+ foreignKeyName: "content_item_source_assets_item_fkey";
1885
+ columns: ["content_item_id", "organization_id"];
1886
+ isOneToOne: false;
1887
+ referencedRelation: "content_items";
1888
+ referencedColumns: ["id", "organization_id"];
1889
+ }
1890
+ ];
1891
+ };
1835
1892
  content_items: {
1836
1893
  Row: {
1837
1894
  body: string | null;
@@ -3587,6 +3644,25 @@ type Database = {
3587
3644
  };
3588
3645
  Returns: Json;
3589
3646
  };
3647
+ activate_deployment_atomic: {
3648
+ Args: {
3649
+ p_deployment_id: string;
3650
+ p_organization_id: string;
3651
+ };
3652
+ Returns: {
3653
+ created_at: string;
3654
+ deployment_version: string | null;
3655
+ error_message: string | null;
3656
+ id: string;
3657
+ organization_id: string;
3658
+ pid: number | null;
3659
+ port: number | null;
3660
+ sdk_version: string;
3661
+ status: string;
3662
+ tarball_path: string | null;
3663
+ updated_at: string;
3664
+ };
3665
+ };
3590
3666
  append_deal_activity: {
3591
3667
  Args: {
3592
3668
  p_activity: Json;
@@ -3828,7 +3904,9 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3828
3904
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3829
3905
  properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3830
3906
  storage: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3831
- }, z.core.$loose>>>>;
3907
+ rowSchema: z.ZodOptional<z.ZodString>;
3908
+ stateCatalogId: z.ZodOptional<z.ZodString>;
3909
+ }, z.core.$strict>>>>;
3832
3910
  linkTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3833
3911
  id: z.ZodString;
3834
3912
  label: z.ZodOptional<z.ZodString>;
@@ -3839,7 +3917,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3839
3917
  to: z.ZodString;
3840
3918
  cardinality: z.ZodOptional<z.ZodString>;
3841
3919
  via: z.ZodOptional<z.ZodString>;
3842
- }, z.core.$loose>>>>;
3920
+ }, z.core.$strict>>>>;
3843
3921
  actionTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3844
3922
  id: z.ZodString;
3845
3923
  label: z.ZodOptional<z.ZodString>;
@@ -3849,7 +3927,11 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3849
3927
  actsOn: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
3850
3928
  input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3851
3929
  effects: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
3852
- }, z.core.$loose>>>>;
3930
+ resourceId: z.ZodOptional<z.ZodString>;
3931
+ invocations: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
3932
+ lifecycle: z.ZodOptional<z.ZodString>;
3933
+ legacyActionId: z.ZodOptional<z.ZodString>;
3934
+ }, z.core.$strict>>>>;
3853
3935
  catalogTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3854
3936
  id: z.ZodString;
3855
3937
  label: z.ZodOptional<z.ZodString>;
@@ -3859,7 +3941,10 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3859
3941
  kind: z.ZodOptional<z.ZodString>;
3860
3942
  appliesTo: z.ZodOptional<z.ZodString>;
3861
3943
  entries: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3862
- }, z.core.$loose>>>>;
3944
+ legacyCatalogKey: z.ZodOptional<z.ZodString>;
3945
+ legacyPipelineKey: z.ZodOptional<z.ZodString>;
3946
+ legacyEntityKey: z.ZodOptional<z.ZodString>;
3947
+ }, z.core.$strict>>>>;
3863
3948
  eventTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3864
3949
  id: z.ZodString;
3865
3950
  label: z.ZodOptional<z.ZodString>;
@@ -3867,7 +3952,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3867
3952
  ownerSystemId: z.ZodOptional<z.ZodString>;
3868
3953
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3869
3954
  payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3870
- }, z.core.$loose>>>>;
3955
+ }, z.core.$strict>>>>;
3871
3956
  interfaceTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3872
3957
  id: z.ZodString;
3873
3958
  label: z.ZodOptional<z.ZodString>;
@@ -3875,7 +3960,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3875
3960
  ownerSystemId: z.ZodOptional<z.ZodString>;
3876
3961
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3877
3962
  properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3878
- }, z.core.$loose>>>>;
3963
+ }, z.core.$strict>>>>;
3879
3964
  valueTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3880
3965
  id: z.ZodString;
3881
3966
  label: z.ZodOptional<z.ZodString>;
@@ -3883,7 +3968,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3883
3968
  ownerSystemId: z.ZodOptional<z.ZodString>;
3884
3969
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3885
3970
  primitive: z.ZodOptional<z.ZodString>;
3886
- }, z.core.$loose>>>>;
3971
+ }, z.core.$strict>>>>;
3887
3972
  sharedProperties: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3888
3973
  id: z.ZodString;
3889
3974
  label: z.ZodOptional<z.ZodString>;
@@ -3893,7 +3978,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3893
3978
  valueType: z.ZodOptional<z.ZodString>;
3894
3979
  searchable: z.ZodOptional<z.ZodBoolean>;
3895
3980
  pii: z.ZodOptional<z.ZodBoolean>;
3896
- }, z.core.$loose>>>>;
3981
+ }, z.core.$strict>>>>;
3897
3982
  groups: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3898
3983
  id: z.ZodString;
3899
3984
  label: z.ZodOptional<z.ZodString>;
@@ -3901,7 +3986,7 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3901
3986
  ownerSystemId: z.ZodOptional<z.ZodString>;
3902
3987
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3903
3988
  members: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
3904
- }, z.core.$loose>>>>;
3989
+ }, z.core.$strict>>>>;
3905
3990
  endpoints: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
3906
3991
  id: z.ZodString;
3907
3992
  label: z.ZodOptional<z.ZodString>;
@@ -3909,8 +3994,8 @@ declare const OntologyScopeSchema: z.ZodDefault<z.ZodObject<{
3909
3994
  ownerSystemId: z.ZodOptional<z.ZodString>;
3910
3995
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
3911
3996
  route: z.ZodOptional<z.ZodString>;
3912
- }, z.core.$loose>>>>;
3913
- }, z.core.$strip>>;
3997
+ }, z.core.$strict>>>>;
3998
+ }, z.core.$strict>>;
3914
3999
  type OntologyScope = z.infer<typeof OntologyScopeSchema>;
3915
4000
 
3916
4001
  declare const SystemApiInterfaceSchema: z.ZodObject<{
@@ -5363,6 +5448,126 @@ declare const ContentPipelineIdSchema: z.ZodString;
5363
5448
  declare const ContentItemStatusSchema: z.ZodString;
5364
5449
  /** `content:catalog/pillar` entries. */
5365
5450
  declare const ContentPillarSchema: z.ZodString;
5451
+ /** Response-side crop: unknown keys are stripped, not rejected, like every other response schema here. */
5452
+ declare const ContentAssetCropSchema: z.ZodObject<{
5453
+ x: z.ZodNumber;
5454
+ y: z.ZodNumber;
5455
+ width: z.ZodNumber;
5456
+ height: z.ZodNumber;
5457
+ }, z.core.$strip>;
5458
+ /** Request-side crop: `.strict()`, the same mass-assignment guard every request schema in this file uses. */
5459
+ declare const ContentAssetCropInputSchema: z.ZodObject<{
5460
+ x: z.ZodNumber;
5461
+ y: z.ZodNumber;
5462
+ width: z.ZodNumber;
5463
+ height: z.ZodNumber;
5464
+ }, z.core.$strict>;
5465
+ declare const ContentItemSourceAssetResponseSchema: z.ZodObject<{
5466
+ id: z.ZodString;
5467
+ organizationId: z.ZodString;
5468
+ contentItemId: z.ZodString;
5469
+ sourceAssetId: z.ZodString;
5470
+ position: z.ZodNumber;
5471
+ crop: z.ZodNullable<z.ZodObject<{
5472
+ x: z.ZodNumber;
5473
+ y: z.ZodNumber;
5474
+ width: z.ZodNumber;
5475
+ height: z.ZodNumber;
5476
+ }, z.core.$strip>>;
5477
+ altText: z.ZodNullable<z.ZodString>;
5478
+ derivativePath: z.ZodNullable<z.ZodString>;
5479
+ derivativeCrop: z.ZodNullable<z.ZodObject<{
5480
+ x: z.ZodNumber;
5481
+ y: z.ZodNumber;
5482
+ width: z.ZodNumber;
5483
+ height: z.ZodNumber;
5484
+ }, z.core.$strip>>;
5485
+ derivativeRenderedAt: z.ZodNullable<z.ZodString>;
5486
+ createdAt: z.ZodString;
5487
+ }, z.core.$strip>;
5488
+ declare const ContentItemSourceAssetListResponseSchema: z.ZodObject<{
5489
+ data: z.ZodArray<z.ZodObject<{
5490
+ id: z.ZodString;
5491
+ organizationId: z.ZodString;
5492
+ contentItemId: z.ZodString;
5493
+ sourceAssetId: z.ZodString;
5494
+ position: z.ZodNumber;
5495
+ crop: z.ZodNullable<z.ZodObject<{
5496
+ x: z.ZodNumber;
5497
+ y: z.ZodNumber;
5498
+ width: z.ZodNumber;
5499
+ height: z.ZodNumber;
5500
+ }, z.core.$strip>>;
5501
+ altText: z.ZodNullable<z.ZodString>;
5502
+ derivativePath: z.ZodNullable<z.ZodString>;
5503
+ derivativeCrop: z.ZodNullable<z.ZodObject<{
5504
+ x: z.ZodNumber;
5505
+ y: z.ZodNumber;
5506
+ width: z.ZodNumber;
5507
+ height: z.ZodNumber;
5508
+ }, z.core.$strip>>;
5509
+ derivativeRenderedAt: z.ZodNullable<z.ZodString>;
5510
+ createdAt: z.ZodString;
5511
+ }, z.core.$strip>>;
5512
+ }, z.core.$strip>;
5513
+ /**
5514
+ * One membership as a caller supplies it. Two callers share it:
5515
+ * `CreateContentItemRequestSchema.sourceAssets` (the ordered set a carousel is
5516
+ * created with, in one transaction) and the body of the `addItemSourceAsset`
5517
+ * write, whose `itemId` arrives as a path param rather than in the body.
5518
+ */
5519
+ declare const ContentItemSourceAssetInputSchema: z.ZodObject<{
5520
+ sourceAssetId: z.ZodString;
5521
+ position: z.ZodNumber;
5522
+ crop: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5523
+ x: z.ZodNumber;
5524
+ y: z.ZodNumber;
5525
+ width: z.ZodNumber;
5526
+ height: z.ZodNumber;
5527
+ }, z.core.$strict>>>;
5528
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5529
+ }, z.core.$strict>;
5530
+ /**
5531
+ * Patches one membership's per-slide attributes. `position` is deliberately
5532
+ * absent: moving a slide is a reorder of the whole set (below), because a
5533
+ * single-row position write only makes sense inside the transaction that fixes
5534
+ * up its neighbours. `sourceAssetId` is immutable — swapping the asset is a
5535
+ * remove plus an add.
5536
+ *
5537
+ * `derivativeRenderedAt` is likewise absent, and deliberately: the server stamps
5538
+ * it whenever `derivativePath` is written, because a client clock is not evidence
5539
+ * of when a server-side row changed.
5540
+ */
5541
+ declare const UpdateContentItemSourceAssetRequestSchema: z.ZodObject<{
5542
+ crop: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5543
+ x: z.ZodNumber;
5544
+ y: z.ZodNumber;
5545
+ width: z.ZodNumber;
5546
+ height: z.ZodNumber;
5547
+ }, z.core.$strict>>>;
5548
+ altText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5549
+ derivativePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5550
+ derivativeCrop: z.ZodOptional<z.ZodNullable<z.ZodObject<{
5551
+ x: z.ZodNumber;
5552
+ y: z.ZodNumber;
5553
+ width: z.ZodNumber;
5554
+ height: z.ZodNumber;
5555
+ }, z.core.$strict>>>;
5556
+ }, z.core.$strict>;
5557
+ /**
5558
+ * The item's complete membership set in its new order — index becomes
5559
+ * `position`, so index 0 is the new cover. Wholesale rather than per-row
5560
+ * because `UNIQUE (content_item_id, position)` is DEFERRABLE INITIALLY
5561
+ * DEFERRED: the writer issues plain per-row updates inside one transaction and
5562
+ * the constraint is checked at COMMIT. An implementation that shuffles through
5563
+ * a temporary offset is a sign the deferrable constraint was not used.
5564
+ *
5565
+ * The service rejects a list that does not name exactly the item's current
5566
+ * memberships — this schema can only check shape, not membership.
5567
+ */
5568
+ declare const ReorderContentItemSourceAssetsRequestSchema: z.ZodObject<{
5569
+ orderedAssetIds: z.ZodArray<z.ZodString>;
5570
+ }, z.core.$strict>;
5366
5571
  declare const ListContentItemsQuerySchema: z.ZodObject<{
5367
5572
  status: z.ZodOptional<z.ZodString>;
5368
5573
  pillar: z.ZodOptional<z.ZodString>;
@@ -5384,6 +5589,29 @@ declare const ContentItemResponseSchema: z.ZodObject<{
5384
5589
  pipelineId: z.ZodNullable<z.ZodString>;
5385
5590
  clientId: z.ZodNullable<z.ZodString>;
5386
5591
  sourceAssetId: z.ZodNullable<z.ZodString>;
5592
+ sourceAssets: z.ZodOptional<z.ZodArray<z.ZodObject<{
5593
+ id: z.ZodString;
5594
+ organizationId: z.ZodString;
5595
+ contentItemId: z.ZodString;
5596
+ sourceAssetId: z.ZodString;
5597
+ position: z.ZodNumber;
5598
+ crop: z.ZodNullable<z.ZodObject<{
5599
+ x: z.ZodNumber;
5600
+ y: z.ZodNumber;
5601
+ width: z.ZodNumber;
5602
+ height: z.ZodNumber;
5603
+ }, z.core.$strip>>;
5604
+ altText: z.ZodNullable<z.ZodString>;
5605
+ derivativePath: z.ZodNullable<z.ZodString>;
5606
+ derivativeCrop: z.ZodNullable<z.ZodObject<{
5607
+ x: z.ZodNumber;
5608
+ y: z.ZodNumber;
5609
+ width: z.ZodNumber;
5610
+ height: z.ZodNumber;
5611
+ }, z.core.$strip>>;
5612
+ derivativeRenderedAt: z.ZodNullable<z.ZodString>;
5613
+ createdAt: z.ZodString;
5614
+ }, z.core.$strip>>>;
5387
5615
  processingState: z.ZodRecord<z.ZodString, z.ZodObject<{
5388
5616
  status: z.ZodEnum<{
5389
5617
  error: "error";
@@ -5418,6 +5646,29 @@ declare const ContentItemListResponseSchema: z.ZodObject<{
5418
5646
  pipelineId: z.ZodNullable<z.ZodString>;
5419
5647
  clientId: z.ZodNullable<z.ZodString>;
5420
5648
  sourceAssetId: z.ZodNullable<z.ZodString>;
5649
+ sourceAssets: z.ZodOptional<z.ZodArray<z.ZodObject<{
5650
+ id: z.ZodString;
5651
+ organizationId: z.ZodString;
5652
+ contentItemId: z.ZodString;
5653
+ sourceAssetId: z.ZodString;
5654
+ position: z.ZodNumber;
5655
+ crop: z.ZodNullable<z.ZodObject<{
5656
+ x: z.ZodNumber;
5657
+ y: z.ZodNumber;
5658
+ width: z.ZodNumber;
5659
+ height: z.ZodNumber;
5660
+ }, z.core.$strip>>;
5661
+ altText: z.ZodNullable<z.ZodString>;
5662
+ derivativePath: z.ZodNullable<z.ZodString>;
5663
+ derivativeCrop: z.ZodNullable<z.ZodObject<{
5664
+ x: z.ZodNumber;
5665
+ y: z.ZodNumber;
5666
+ width: z.ZodNumber;
5667
+ height: z.ZodNumber;
5668
+ }, z.core.$strip>>;
5669
+ derivativeRenderedAt: z.ZodNullable<z.ZodString>;
5670
+ createdAt: z.ZodString;
5671
+ }, z.core.$strip>>>;
5421
5672
  processingState: z.ZodRecord<z.ZodString, z.ZodObject<{
5422
5673
  status: z.ZodEnum<{
5423
5674
  error: "error";
@@ -5444,6 +5695,14 @@ declare const ContentItemListResponseSchema: z.ZodObject<{
5444
5695
  limit: z.ZodNumber;
5445
5696
  offset: z.ZodNumber;
5446
5697
  }, z.core.$strip>;
5698
+ /**
5699
+ * Membership is deliberately absent here (Open Decision 11, 2026-08-17). A
5700
+ * wholesale-replace `sourceAssets` array would force every partial item update
5701
+ * to say something about the asset list, and once omission means "leave alone"
5702
+ * there is no longer any way to clear membership at all. Use
5703
+ * `addItemSourceAsset` / `removeItemSourceAsset` / `reorderItemSourceAssets` /
5704
+ * `updateItemSourceAsset` instead. Do not "complete" this schema by adding it.
5705
+ */
5447
5706
  declare const UpdateContentItemRequestSchema: z.ZodObject<{
5448
5707
  title: z.ZodOptional<z.ZodString>;
5449
5708
  body: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -5506,8 +5765,15 @@ declare const ContentItemAttemptListResponseSchema: z.ZodObject<{
5506
5765
  }, z.core.$strip>;
5507
5766
  /**
5508
5767
  * `content_source_assets.kind` -- free text, validated against the OM's
5509
- * per-kind source-asset catalog (`organization-model/catalogs/content.ts`),
5510
- * the same split as `ContentItemStatusSchema` / `ContentPillarSchema` above.
5768
+ * per-kind source-asset catalog (schema in
5769
+ * `packages/core/src/organization-model/catalogs/content.ts`; entries in the
5770
+ * organization's own model), the same split as `ContentItemStatusSchema` /
5771
+ * `ContentPillarSchema` above.
5772
+ *
5773
+ * An unlisted kind is legal and writes unvalidated -- kinds whose content is a
5774
+ * reference rather than inline text (`externalUrl` + `durationSeconds`) carry
5775
+ * no payload fields, so they get no catalog entry at all and are validated by
5776
+ * `UrlSchema` on the request body instead.
5511
5777
  */
5512
5778
  declare const ContentSourceAssetKindSchema: z.ZodString;
5513
5779
  declare const ContentSourceAssetResponseSchema: z.ZodObject<{
@@ -5578,7 +5844,14 @@ declare const ContentDistributionResponseSchema: z.ZodObject<{
5578
5844
  adaptedBody: z.ZodNullable<z.ZodString>;
5579
5845
  platformContent: z.ZodNullable<z.ZodUnknown>;
5580
5846
  checklist: z.ZodNullable<z.ZodUnknown>;
5581
- mediaUrls: z.ZodArray<z.ZodUnknown>;
5847
+ mediaUrls: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
5848
+ kind: z.ZodLiteral<"storage">;
5849
+ bucket: z.ZodString;
5850
+ path: z.ZodString;
5851
+ }, z.core.$strict>, z.ZodObject<{
5852
+ kind: z.ZodLiteral<"url">;
5853
+ url: z.ZodString;
5854
+ }, z.core.$strict>], "kind">>;
5582
5855
  processingState: z.ZodRecord<z.ZodString, z.ZodObject<{
5583
5856
  status: z.ZodEnum<{
5584
5857
  error: "error";
@@ -5612,7 +5885,14 @@ declare const ContentDistributionListResponseSchema: z.ZodObject<{
5612
5885
  adaptedBody: z.ZodNullable<z.ZodString>;
5613
5886
  platformContent: z.ZodNullable<z.ZodUnknown>;
5614
5887
  checklist: z.ZodNullable<z.ZodUnknown>;
5615
- mediaUrls: z.ZodArray<z.ZodUnknown>;
5888
+ mediaUrls: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
5889
+ kind: z.ZodLiteral<"storage">;
5890
+ bucket: z.ZodString;
5891
+ path: z.ZodString;
5892
+ }, z.core.$strict>, z.ZodObject<{
5893
+ kind: z.ZodLiteral<"url">;
5894
+ url: z.ZodString;
5895
+ }, z.core.$strict>], "kind">>;
5616
5896
  processingState: z.ZodRecord<z.ZodString, z.ZodObject<{
5617
5897
  status: z.ZodEnum<{
5618
5898
  error: "error";
@@ -5636,6 +5916,23 @@ declare const ContentDistributionListResponseSchema: z.ZodObject<{
5636
5916
  updatedAt: z.ZodString;
5637
5917
  }, z.core.$strip>>;
5638
5918
  }, z.core.$strip>;
5919
+ declare const CreateContentDistributionRequestSchema: z.ZodObject<{
5920
+ contentItemId: z.ZodString;
5921
+ platform: z.ZodString;
5922
+ format: z.ZodString;
5923
+ status: z.ZodOptional<z.ZodString>;
5924
+ adaptedBody: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5925
+ platformContent: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
5926
+ checklist: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
5927
+ mediaUrls: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
5928
+ kind: z.ZodLiteral<"storage">;
5929
+ bucket: z.ZodString;
5930
+ path: z.ZodString;
5931
+ }, z.core.$strict>, z.ZodObject<{
5932
+ kind: z.ZodLiteral<"url">;
5933
+ url: z.ZodString;
5934
+ }, z.core.$strict>], "kind">>>;
5935
+ }, z.core.$strict>;
5639
5936
  /**
5640
5937
  * `publishMethod` is where D7's manual-publish state becomes visible: a row
5641
5938
  * with `publishedAt` set and no `platformPostId`.
@@ -5645,7 +5942,14 @@ declare const UpdateContentDistributionRequestSchema: z.ZodObject<{
5645
5942
  adaptedBody: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5646
5943
  platformContent: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
5647
5944
  checklist: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
5648
- mediaUrls: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
5945
+ mediaUrls: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
5946
+ kind: z.ZodLiteral<"storage">;
5947
+ bucket: z.ZodString;
5948
+ path: z.ZodString;
5949
+ }, z.core.$strict>, z.ZodObject<{
5950
+ kind: z.ZodLiteral<"url">;
5951
+ url: z.ZodString;
5952
+ }, z.core.$strict>], "kind">>>;
5649
5953
  publishMethod: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5650
5954
  publishedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5651
5955
  platformPostId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -5656,6 +5960,13 @@ declare const UpdateContentDistributionRequestSchema: z.ZodObject<{
5656
5960
  type ContentPipelineId = z.infer<typeof ContentPipelineIdSchema>;
5657
5961
  type ContentItemStatus = z.infer<typeof ContentItemStatusSchema>;
5658
5962
  type ContentPillar = z.infer<typeof ContentPillarSchema>;
5963
+ type ContentAssetCrop = z.infer<typeof ContentAssetCropSchema>;
5964
+ type ContentAssetCropInput = z.infer<typeof ContentAssetCropInputSchema>;
5965
+ type ContentItemSourceAssetResponse = z.infer<typeof ContentItemSourceAssetResponseSchema>;
5966
+ type ContentItemSourceAssetListResponse = z.infer<typeof ContentItemSourceAssetListResponseSchema>;
5967
+ type ContentItemSourceAssetInput = z.infer<typeof ContentItemSourceAssetInputSchema>;
5968
+ type UpdateContentItemSourceAssetRequest = z.infer<typeof UpdateContentItemSourceAssetRequestSchema>;
5969
+ type ReorderContentItemSourceAssetsRequest = z.infer<typeof ReorderContentItemSourceAssetsRequestSchema>;
5659
5970
  type ListContentItemsQuery = z.infer<typeof ListContentItemsQuerySchema>;
5660
5971
  type ContentItemResponse = z.infer<typeof ContentItemResponseSchema>;
5661
5972
  type ContentItemListResponse = z.infer<typeof ContentItemListResponseSchema>;
@@ -5671,6 +5982,7 @@ type UpdateContentSourceAssetRequest = z.infer<typeof UpdateContentSourceAssetRe
5671
5982
  type ListContentDistributionsQuery = z.infer<typeof ListContentDistributionsQuerySchema>;
5672
5983
  type ContentDistributionResponse = z.infer<typeof ContentDistributionResponseSchema>;
5673
5984
  type ContentDistributionListResponse = z.infer<typeof ContentDistributionListResponseSchema>;
5985
+ type CreateContentDistributionRequest = z.infer<typeof CreateContentDistributionRequestSchema>;
5674
5986
  type UpdateContentDistributionRequest = z.infer<typeof UpdateContentDistributionRequestSchema>;
5675
5987
 
5676
5988
  /**
@@ -6881,7 +7193,9 @@ declare const OrganizationModelSchema: z.ZodObject<{
6881
7193
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6882
7194
  properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6883
7195
  storage: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6884
- }, z.core.$loose>>>>;
7196
+ rowSchema: z.ZodOptional<z.ZodString>;
7197
+ stateCatalogId: z.ZodOptional<z.ZodString>;
7198
+ }, z.core.$strict>>>>;
6885
7199
  linkTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6886
7200
  id: z.ZodString;
6887
7201
  label: z.ZodOptional<z.ZodString>;
@@ -6892,7 +7206,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6892
7206
  to: z.ZodString;
6893
7207
  cardinality: z.ZodOptional<z.ZodString>;
6894
7208
  via: z.ZodOptional<z.ZodString>;
6895
- }, z.core.$loose>>>>;
7209
+ }, z.core.$strict>>>>;
6896
7210
  actionTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6897
7211
  id: z.ZodString;
6898
7212
  label: z.ZodOptional<z.ZodString>;
@@ -6902,7 +7216,11 @@ declare const OrganizationModelSchema: z.ZodObject<{
6902
7216
  actsOn: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
6903
7217
  input: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6904
7218
  effects: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
6905
- }, z.core.$loose>>>>;
7219
+ resourceId: z.ZodOptional<z.ZodString>;
7220
+ invocations: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
7221
+ lifecycle: z.ZodOptional<z.ZodString>;
7222
+ legacyActionId: z.ZodOptional<z.ZodString>;
7223
+ }, z.core.$strict>>>>;
6906
7224
  catalogTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6907
7225
  id: z.ZodString;
6908
7226
  label: z.ZodOptional<z.ZodString>;
@@ -6912,7 +7230,10 @@ declare const OrganizationModelSchema: z.ZodObject<{
6912
7230
  kind: z.ZodOptional<z.ZodString>;
6913
7231
  appliesTo: z.ZodOptional<z.ZodString>;
6914
7232
  entries: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6915
- }, z.core.$loose>>>>;
7233
+ legacyCatalogKey: z.ZodOptional<z.ZodString>;
7234
+ legacyPipelineKey: z.ZodOptional<z.ZodString>;
7235
+ legacyEntityKey: z.ZodOptional<z.ZodString>;
7236
+ }, z.core.$strict>>>>;
6916
7237
  eventTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6917
7238
  id: z.ZodString;
6918
7239
  label: z.ZodOptional<z.ZodString>;
@@ -6920,7 +7241,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6920
7241
  ownerSystemId: z.ZodOptional<z.ZodString>;
6921
7242
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6922
7243
  payload: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6923
- }, z.core.$loose>>>>;
7244
+ }, z.core.$strict>>>>;
6924
7245
  interfaceTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6925
7246
  id: z.ZodString;
6926
7247
  label: z.ZodOptional<z.ZodString>;
@@ -6928,7 +7249,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6928
7249
  ownerSystemId: z.ZodOptional<z.ZodString>;
6929
7250
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6930
7251
  properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6931
- }, z.core.$loose>>>>;
7252
+ }, z.core.$strict>>>>;
6932
7253
  valueTypes: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6933
7254
  id: z.ZodString;
6934
7255
  label: z.ZodOptional<z.ZodString>;
@@ -6936,7 +7257,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6936
7257
  ownerSystemId: z.ZodOptional<z.ZodString>;
6937
7258
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6938
7259
  primitive: z.ZodOptional<z.ZodString>;
6939
- }, z.core.$loose>>>>;
7260
+ }, z.core.$strict>>>>;
6940
7261
  sharedProperties: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6941
7262
  id: z.ZodString;
6942
7263
  label: z.ZodOptional<z.ZodString>;
@@ -6946,7 +7267,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6946
7267
  valueType: z.ZodOptional<z.ZodString>;
6947
7268
  searchable: z.ZodOptional<z.ZodBoolean>;
6948
7269
  pii: z.ZodOptional<z.ZodBoolean>;
6949
- }, z.core.$loose>>>>;
7270
+ }, z.core.$strict>>>>;
6950
7271
  groups: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6951
7272
  id: z.ZodString;
6952
7273
  label: z.ZodOptional<z.ZodString>;
@@ -6954,7 +7275,7 @@ declare const OrganizationModelSchema: z.ZodObject<{
6954
7275
  ownerSystemId: z.ZodOptional<z.ZodString>;
6955
7276
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6956
7277
  members: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
6957
- }, z.core.$loose>>>>;
7278
+ }, z.core.$strict>>>>;
6958
7279
  endpoints: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
6959
7280
  id: z.ZodString;
6960
7281
  label: z.ZodOptional<z.ZodString>;
@@ -6962,8 +7283,8 @@ declare const OrganizationModelSchema: z.ZodObject<{
6962
7283
  ownerSystemId: z.ZodOptional<z.ZodString>;
6963
7284
  aliases: z.ZodOptional<z.ZodArray<z.ZodString>>;
6964
7285
  route: z.ZodOptional<z.ZodString>;
6965
- }, z.core.$loose>>>>;
6966
- }, z.core.$strip>>>;
7286
+ }, z.core.$strict>>>>;
7287
+ }, z.core.$strict>>>;
6967
7288
  resources: z.ZodDefault<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
6968
7289
  id: z.ZodString;
6969
7290
  order: z.ZodDefault<z.ZodNumber>;
@@ -7915,6 +8236,50 @@ declare const ListCredentialsResponseSchema: z.ZodObject<{
7915
8236
  /** API response type for a single credential list item */
7916
8237
  type CredentialListItem = z.infer<typeof ListCredentialsResponseSchema>['credentials'][number];
7917
8238
 
8239
+ /**
8240
+ * Storage-neutral file descriptor.
8241
+ *
8242
+ * Dropbox and Google Drive (the foreseeable second provider) both ship
8243
+ * their own file/metadata shapes. Consumers on both sides of the wire —
8244
+ * a UI file browser and the API route that talks to the provider — need
8245
+ * to agree on one normalized shape, which is why it lives here instead
8246
+ * of being duplicated in each consumer.
8247
+ *
8248
+ * Adapters (`createDropboxAdapter`, a future Drive adapter) stay concrete
8249
+ * and keep their own provider-shaped responses. Normalization into this
8250
+ * type happens at the route/hook boundary — a few lines per provider,
8251
+ * not behind a shared `CloudStorageAdapter` interface.
8252
+ */
8253
+ interface CloudStorageFile {
8254
+ id: string;
8255
+ name: string;
8256
+ kind: 'file' | 'folder';
8257
+ path?: string;
8258
+ mimeType?: string;
8259
+ sizeBytes?: number;
8260
+ width?: number;
8261
+ height?: number;
8262
+ /** ISO 8601 timestamp the asset was captured (e.g. photo EXIF date), when the provider exposes one. */
8263
+ capturedAt?: string;
8264
+ /**
8265
+ * Optional on purpose. Dropbox does not produce a thumbnail for HEIC or
8266
+ * for anything over 20 MB — "no thumbnail" is a normal state a consumer
8267
+ * renders a fallback for, not an error.
8268
+ */
8269
+ thumbnailUrl?: string;
8270
+ }
8271
+ /**
8272
+ * Paginated list of storage-neutral file descriptors.
8273
+ *
8274
+ * `nextCursor` deliberately covers both Dropbox's cursor and Google
8275
+ * Drive's `pageToken` — one field, not a provider-specific pagination
8276
+ * field per provider.
8277
+ */
8278
+ interface CloudStorageListResult {
8279
+ files: CloudStorageFile[];
8280
+ nextCursor?: string;
8281
+ }
8282
+
7918
8283
  /**
7919
8284
  * Query key factory for executions TanStack Query hooks.
7920
8285
  * Uses organization UUID (not name) for cache isolation.
@@ -9568,6 +9933,21 @@ declare const contentKeys: {
9568
9933
  }, "limit" | "offset" | "search" | "status" | "pillar" | "clientId" | "pipelineId" | "reviewedBy">>];
9569
9934
  itemDetail: (organizationId: WorkOsOrgId | null | undefined, itemId: string | undefined) => readonly ["content", "items", "detail", WorkOsOrgId | null | undefined, string | undefined];
9570
9935
  itemAttempts: (organizationId: WorkOsOrgId | null | undefined, itemId: string | undefined) => readonly ["content", "items", "attempts", WorkOsOrgId | null | undefined, string | undefined];
9936
+ /**
9937
+ * One item's ordered source-asset membership (`content_item_source_assets`).
9938
+ *
9939
+ * Nested under `items()` on purpose, matching `itemAttempts`: membership is a
9940
+ * property of the item, and every item read that expands `sourceAssets` goes
9941
+ * stale for exactly the same writes. That makes `contentKeys.items()` a
9942
+ * prefix that reaches this key, the item list, and the item detail in one
9943
+ * invalidation -- which is why the membership mutations invalidate both this
9944
+ * key (the direct read) and `items()` (every reader carrying the expansion).
9945
+ *
9946
+ * Distinct from `sourceAssets()` below, which keys the assets themselves.
9947
+ * A membership row carries `sourceAssetId` and no display fields, so the two
9948
+ * caches are never interchangeable.
9949
+ */
9950
+ itemSourceAssets: (organizationId: WorkOsOrgId | null | undefined, itemId: string | undefined) => readonly ["content", "items", "source-assets", WorkOsOrgId | null | undefined, string | undefined];
9571
9951
  distributions: () => readonly ["content", "distributions"];
9572
9952
  distributionsList: (organizationId: WorkOsOrgId | null | undefined, filters: ContentDistributionsListFilters) => readonly ["content", "distributions", "list", WorkOsOrgId | null | undefined, Partial<Pick<{
9573
9953
  limit: number;
@@ -9614,6 +9994,29 @@ declare function useContentItems(filters?: ContentItemsListFilters): _tanstack_r
9614
9994
  updatedBy: string | null;
9615
9995
  createdAt: string;
9616
9996
  updatedAt: string;
9997
+ sourceAssets?: {
9998
+ id: string;
9999
+ organizationId: string;
10000
+ contentItemId: string;
10001
+ sourceAssetId: string;
10002
+ position: number;
10003
+ crop: {
10004
+ x: number;
10005
+ y: number;
10006
+ width: number;
10007
+ height: number;
10008
+ } | null;
10009
+ altText: string | null;
10010
+ derivativePath: string | null;
10011
+ derivativeCrop: {
10012
+ x: number;
10013
+ y: number;
10014
+ width: number;
10015
+ height: number;
10016
+ } | null;
10017
+ derivativeRenderedAt: string | null;
10018
+ createdAt: string;
10019
+ }[] | undefined;
9617
10020
  }[];
9618
10021
  total: number;
9619
10022
  limit: number;
@@ -9647,6 +10050,29 @@ declare function useContentItem(itemId: string | undefined): _tanstack_react_que
9647
10050
  updatedBy: string | null;
9648
10051
  createdAt: string;
9649
10052
  updatedAt: string;
10053
+ sourceAssets?: {
10054
+ id: string;
10055
+ organizationId: string;
10056
+ contentItemId: string;
10057
+ sourceAssetId: string;
10058
+ position: number;
10059
+ crop: {
10060
+ x: number;
10061
+ y: number;
10062
+ width: number;
10063
+ height: number;
10064
+ } | null;
10065
+ altText: string | null;
10066
+ derivativePath: string | null;
10067
+ derivativeCrop: {
10068
+ x: number;
10069
+ y: number;
10070
+ width: number;
10071
+ height: number;
10072
+ } | null;
10073
+ derivativeRenderedAt: string | null;
10074
+ createdAt: string;
10075
+ }[] | undefined;
9650
10076
  }, Error>;
9651
10077
 
9652
10078
  /**
@@ -9688,7 +10114,14 @@ declare function useContentDistributions(filters?: ContentDistributionsListFilte
9688
10114
  adaptedBody: string | null;
9689
10115
  platformContent: unknown;
9690
10116
  checklist: unknown;
9691
- mediaUrls: unknown[];
10117
+ mediaUrls: ({
10118
+ kind: "storage";
10119
+ bucket: string;
10120
+ path: string;
10121
+ } | {
10122
+ kind: "url";
10123
+ url: string;
10124
+ })[];
9692
10125
  processingState: Record<string, {
9693
10126
  [x: string]: unknown;
9694
10127
  status: "error" | "success" | "running" | "no_result" | "skipped";
@@ -9723,7 +10156,14 @@ declare function useContentDistribution(distributionId: string | undefined): _ta
9723
10156
  adaptedBody: string | null;
9724
10157
  platformContent: unknown;
9725
10158
  checklist: unknown;
9726
- mediaUrls: unknown[];
10159
+ mediaUrls: ({
10160
+ kind: "storage";
10161
+ bucket: string;
10162
+ path: string;
10163
+ } | {
10164
+ kind: "url";
10165
+ url: string;
10166
+ })[];
9727
10167
  processingState: Record<string, {
9728
10168
  [x: string]: unknown;
9729
10169
  status: "error" | "success" | "running" | "no_result" | "skipped";
@@ -9774,8 +10214,101 @@ declare function useUpdateContentItem(): _tanstack_react_query.UseMutationResult
9774
10214
  updatedBy: string | null;
9775
10215
  createdAt: string;
9776
10216
  updatedAt: string;
10217
+ sourceAssets?: {
10218
+ id: string;
10219
+ organizationId: string;
10220
+ contentItemId: string;
10221
+ sourceAssetId: string;
10222
+ position: number;
10223
+ crop: {
10224
+ x: number;
10225
+ y: number;
10226
+ width: number;
10227
+ height: number;
10228
+ } | null;
10229
+ altText: string | null;
10230
+ derivativePath: string | null;
10231
+ derivativeCrop: {
10232
+ x: number;
10233
+ y: number;
10234
+ width: number;
10235
+ height: number;
10236
+ } | null;
10237
+ derivativeRenderedAt: string | null;
10238
+ createdAt: string;
10239
+ }[] | undefined;
9777
10240
  }, Error, UpdateContentItemParams, unknown>;
9778
10241
 
10242
+ /**
10243
+ * POST `/content/distributions` -- open the record of one item going out on one
10244
+ * platform. `organizationId` is never sent; the route takes it from authenticated
10245
+ * context.
10246
+ *
10247
+ * **A `mediaUrls` entry names its own kind** (`ContentMediaEntrySchema`): either a
10248
+ * `storage` object carrying its bucket and path, or an already-fetchable `url`.
10249
+ * Derivatives are the first kind, because they live in a private, RLS-gated bucket --
10250
+ * the only URL that would fetch one is a signed URL that expires, and a stored URL
10251
+ * that expires is a row that is correct when written and silently wrong later. The
10252
+ * path is the durable fact; `useStorageSignedUrls` turns it into a URL at the moment
10253
+ * something renders it. Storing paths is also what makes the distribution an honest
10254
+ * record of which files went out: re-cropping a slide afterwards replaces that
10255
+ * object, but the row still names exactly the slides that were posted.
10256
+ *
10257
+ * The manual-publish path is already designed into the update schema: a row with
10258
+ * `publishedAt` set and no `platformPostId` is a post someone made by hand.
10259
+ */
10260
+ declare function useCreateContentDistribution(): _tanstack_react_query.UseMutationResult<{
10261
+ id: string;
10262
+ organizationId: string;
10263
+ contentItemId: string;
10264
+ platform: string;
10265
+ format: string;
10266
+ status: string;
10267
+ adaptedBody: string | null;
10268
+ platformContent: unknown;
10269
+ checklist: unknown;
10270
+ mediaUrls: ({
10271
+ kind: "storage";
10272
+ bucket: string;
10273
+ path: string;
10274
+ } | {
10275
+ kind: "url";
10276
+ url: string;
10277
+ })[];
10278
+ processingState: Record<string, {
10279
+ [x: string]: unknown;
10280
+ status: "error" | "success" | "running" | "no_result" | "skipped";
10281
+ attemptId: string;
10282
+ executionId: string | null;
10283
+ attemptedAt: string;
10284
+ data?: unknown;
10285
+ }>;
10286
+ publishMethod: string | null;
10287
+ publishedAt: string | null;
10288
+ platformPostId: string | null;
10289
+ platformUrl: string | null;
10290
+ metrics: unknown;
10291
+ metricsUpdatedAt: string | null;
10292
+ createdAt: string;
10293
+ updatedAt: string;
10294
+ }, Error, {
10295
+ contentItemId: string;
10296
+ platform: string;
10297
+ format: string;
10298
+ status?: string | undefined;
10299
+ adaptedBody?: string | null | undefined;
10300
+ platformContent?: unknown;
10301
+ checklist?: unknown;
10302
+ mediaUrls?: ({
10303
+ kind: "storage";
10304
+ bucket: string;
10305
+ path: string;
10306
+ } | {
10307
+ kind: "url";
10308
+ url: string;
10309
+ })[] | undefined;
10310
+ }, unknown>;
10311
+
9779
10312
  interface UpdateContentDistributionParams {
9780
10313
  distributionId: string;
9781
10314
  updates: UpdateContentDistributionRequest;
@@ -9798,7 +10331,14 @@ declare function useUpdateContentDistribution(): _tanstack_react_query.UseMutati
9798
10331
  adaptedBody: string | null;
9799
10332
  platformContent: unknown;
9800
10333
  checklist: unknown;
9801
- mediaUrls: unknown[];
10334
+ mediaUrls: ({
10335
+ kind: "storage";
10336
+ bucket: string;
10337
+ path: string;
10338
+ } | {
10339
+ kind: "url";
10340
+ url: string;
10341
+ })[];
9802
10342
  processingState: Record<string, {
9803
10343
  [x: string]: unknown;
9804
10344
  status: "error" | "success" | "running" | "no_result" | "skipped";
@@ -9852,6 +10392,29 @@ declare function useReviewContentItem(): _tanstack_react_query.UseMutationResult
9852
10392
  updatedBy: string | null;
9853
10393
  createdAt: string;
9854
10394
  updatedAt: string;
10395
+ sourceAssets?: {
10396
+ id: string;
10397
+ organizationId: string;
10398
+ contentItemId: string;
10399
+ sourceAssetId: string;
10400
+ position: number;
10401
+ crop: {
10402
+ x: number;
10403
+ y: number;
10404
+ width: number;
10405
+ height: number;
10406
+ } | null;
10407
+ altText: string | null;
10408
+ derivativePath: string | null;
10409
+ derivativeCrop: {
10410
+ x: number;
10411
+ y: number;
10412
+ width: number;
10413
+ height: number;
10414
+ } | null;
10415
+ derivativeRenderedAt: string | null;
10416
+ createdAt: string;
10417
+ }[] | undefined;
9855
10418
  }, Error, ReviewContentItemParams, unknown>;
9856
10419
 
9857
10420
  /**
@@ -9892,6 +10455,89 @@ declare function useContentSourceAsset(sourceAssetId: string | undefined): _tans
9892
10455
  updatedAt: string;
9893
10456
  }, Error>;
9894
10457
 
10458
+ /**
10459
+ * POST `/content/items` -- creates one content item. `organizationId` is never
10460
+ * sent; it is injected server-side from the authenticated context.
10461
+ *
10462
+ * `sourceAssets` carries the ordered membership a carousel is created with, in
10463
+ * the same request (Open Decision 11). That write is NOT atomic -- `apps/api`
10464
+ * does a bulk insert plus a compensating delete, because `@supabase/supabase-js`
10465
+ * has no transaction primitive -- so a mid-write failure yields an item with no
10466
+ * memberships rather than a half-built carousel. Callers that must know either
10467
+ * way should re-read the item, not assume the array they sent.
10468
+ */
10469
+ declare function useCreateContentItem(): _tanstack_react_query.UseMutationResult<{
10470
+ id: string;
10471
+ organizationId: string;
10472
+ title: string;
10473
+ body: string | null;
10474
+ payload: unknown;
10475
+ status: string;
10476
+ pillar: string | null;
10477
+ pipelineId: string | null;
10478
+ clientId: string | null;
10479
+ sourceAssetId: string | null;
10480
+ processingState: Record<string, {
10481
+ [x: string]: unknown;
10482
+ status: "error" | "success" | "running" | "no_result" | "skipped";
10483
+ attemptId: string;
10484
+ executionId: string | null;
10485
+ attemptedAt: string;
10486
+ data?: unknown;
10487
+ }>;
10488
+ reviewedAt: string | null;
10489
+ reviewedBy: string | null;
10490
+ reviewerFeedback: string | null;
10491
+ rejectReason: string | null;
10492
+ createdBy: string | null;
10493
+ updatedBy: string | null;
10494
+ createdAt: string;
10495
+ updatedAt: string;
10496
+ sourceAssets?: {
10497
+ id: string;
10498
+ organizationId: string;
10499
+ contentItemId: string;
10500
+ sourceAssetId: string;
10501
+ position: number;
10502
+ crop: {
10503
+ x: number;
10504
+ y: number;
10505
+ width: number;
10506
+ height: number;
10507
+ } | null;
10508
+ altText: string | null;
10509
+ derivativePath: string | null;
10510
+ derivativeCrop: {
10511
+ x: number;
10512
+ y: number;
10513
+ width: number;
10514
+ height: number;
10515
+ } | null;
10516
+ derivativeRenderedAt: string | null;
10517
+ createdAt: string;
10518
+ }[] | undefined;
10519
+ }, Error, {
10520
+ title: string;
10521
+ body?: string | null | undefined;
10522
+ payload?: Record<string, unknown> | undefined;
10523
+ status?: string | undefined;
10524
+ pillar?: string | null | undefined;
10525
+ pipelineId?: string | null | undefined;
10526
+ clientId?: string | null | undefined;
10527
+ sourceAssetId?: string | null | undefined;
10528
+ sourceAssets?: {
10529
+ sourceAssetId: string;
10530
+ position: number;
10531
+ crop?: {
10532
+ x: number;
10533
+ y: number;
10534
+ width: number;
10535
+ height: number;
10536
+ } | null | undefined;
10537
+ altText?: string | null | undefined;
10538
+ }[] | undefined;
10539
+ }, unknown>;
10540
+
9895
10541
  /**
9896
10542
  * POST `/content/source-assets` -- `kind` and `title` are the only required fields;
9897
10543
  * `organizationId` is never sent, it is injected server-side from the authenticated
@@ -9954,6 +10600,302 @@ declare function useUpdateContentSourceAsset(): _tanstack_react_query.UseMutatio
9954
10600
  updatedAt: string;
9955
10601
  }, Error, UpdateContentSourceAssetParams, unknown>;
9956
10602
 
10603
+ /**
10604
+ * GET `/content/items/:itemId/source-assets` -- one item's ordered source-asset
10605
+ * membership, ascending by `position`. `position` 0 is the cover.
10606
+ *
10607
+ * The membership row does NOT embed the `content_source_assets` row it points at:
10608
+ * it carries `sourceAssetId` and no title, URL, or dimensions. A caller that needs
10609
+ * display fields resolves them through `useContentSourceAsset` /
10610
+ * `useContentSourceAssets`, or uses `useContentItemSourceAssetDetails`, which does
10611
+ * that join and shares the same per-asset cache entries.
10612
+ *
10613
+ * Read-open, like every other content GET -- only the writes sit behind
10614
+ * `content.manage`.
10615
+ */
10616
+ declare function useContentItemSourceAssets(itemId: string | undefined): _tanstack_react_query.UseQueryResult<{
10617
+ data: {
10618
+ id: string;
10619
+ organizationId: string;
10620
+ contentItemId: string;
10621
+ sourceAssetId: string;
10622
+ position: number;
10623
+ crop: {
10624
+ x: number;
10625
+ y: number;
10626
+ width: number;
10627
+ height: number;
10628
+ } | null;
10629
+ altText: string | null;
10630
+ derivativePath: string | null;
10631
+ derivativeCrop: {
10632
+ x: number;
10633
+ y: number;
10634
+ width: number;
10635
+ height: number;
10636
+ } | null;
10637
+ derivativeRenderedAt: string | null;
10638
+ createdAt: string;
10639
+ }[];
10640
+ }, Error>;
10641
+ /**
10642
+ * The two states `ContentItemResponse.sourceAssets` can be in, made explicit so a
10643
+ * renderer cannot lose the difference.
10644
+ *
10645
+ * `expanded: false` means the reader did not expand membership -- say nothing about
10646
+ * the asset list and fetch it with `useContentItemSourceAssets` if it is needed.
10647
+ * `expanded: true` with an empty array means the item genuinely has no source assets.
10648
+ *
10649
+ * Defaulting the absent case to `[]` erases that distinction and renders "no photos"
10650
+ * over an item that may well have twenty.
10651
+ */
10652
+ type ContentItemSourceAssetExpansion = {
10653
+ expanded: false;
10654
+ sourceAssets: undefined;
10655
+ } | {
10656
+ expanded: true;
10657
+ sourceAssets: ContentItemSourceAssetResponse[];
10658
+ };
10659
+ /**
10660
+ * Narrows `ContentItemResponse.sourceAssets` into `ContentItemSourceAssetExpansion`.
10661
+ *
10662
+ * Which reads expand, as of the routes landed 2026-08-17: single-item reads
10663
+ * (`getItem`, `updateItem`, `reviewItem`) always expand, and the session
10664
+ * `GET /content/items` list route expands too. Only the unbounded analytics readers
10665
+ * leave it absent, so `expanded: false` is a real state a shared component can be
10666
+ * handed -- it is not dead code.
10667
+ *
10668
+ * A `null` or `undefined` item is `expanded: false`: nothing has been read yet, which
10669
+ * is the same "say nothing" case.
10670
+ */
10671
+ declare function readItemSourceAssets(item: Pick<ContentItemResponse, 'sourceAssets'> | null | undefined): ContentItemSourceAssetExpansion;
10672
+ /**
10673
+ * The cover membership -- the lowest `position` in the set, or `undefined` for an
10674
+ * empty set.
10675
+ *
10676
+ * `position` 0 is the cover by contract, and a reorder always writes contiguous
10677
+ * indices from 0. But the column only requires uniqueness within an item, not
10678
+ * contiguity and not a zero, so an item assembled by individual `addItemSourceAsset`
10679
+ * calls can legally have no `position` 0 at all. Taking the minimum agrees with the
10680
+ * contract whenever 0 is present and still yields a cover when it is not; a literal
10681
+ * `position === 0` lookup would silently return nothing.
10682
+ *
10683
+ * This adds no contiguity rule -- it never renumbers, and gaps stay legal.
10684
+ */
10685
+ declare function pickCoverSourceAsset(memberships: readonly ContentItemSourceAssetResponse[] | undefined): ContentItemSourceAssetResponse | undefined;
10686
+
10687
+ /**
10688
+ * One membership paired with the source-asset row it points at.
10689
+ *
10690
+ * `asset` is `undefined` while its own query is still in flight or has failed --
10691
+ * never a fabricated placeholder. A renderer shows the membership (position, crop,
10692
+ * alt text) immediately and fills in the title/URL when it lands.
10693
+ */
10694
+ interface ContentItemSourceAssetDetail {
10695
+ membership: ContentItemSourceAssetResponse;
10696
+ asset: ContentSourceAssetResponse | undefined;
10697
+ }
10698
+ interface ContentItemSourceAssetDetailsResult {
10699
+ /** Ascending by `position`, exactly the order the membership route returned. */
10700
+ memberships: ContentItemSourceAssetDetail[];
10701
+ /** True while the membership list or any asset lookup is still loading. */
10702
+ isLoading: boolean;
10703
+ /** True once the membership list has loaded, whatever the asset lookups did. */
10704
+ isMembershipLoaded: boolean;
10705
+ }
10706
+ /**
10707
+ * Pairs memberships with resolved assets, positionally by `sourceAssetId`.
10708
+ * Exported standalone so the join is testable without a QueryClient.
10709
+ */
10710
+ declare function joinSourceAssetDetails(memberships: readonly ContentItemSourceAssetResponse[], assets: readonly (ContentSourceAssetResponse | undefined)[]): ContentItemSourceAssetDetail[];
10711
+ /**
10712
+ * The membership list plus the display fields it deliberately does not carry.
10713
+ *
10714
+ * `content_item_source_assets` rows hold `sourceAssetId`, `position`, `crop`, and
10715
+ * `altText` and nothing else -- no title, no URL, no dimensions -- because embedding
10716
+ * the asset would double the payload of every item list read. Resolving those fields
10717
+ * is therefore a second query, and this hook is that second query so each carousel
10718
+ * surface does not rebuild it.
10719
+ *
10720
+ * One `GET /content/source-assets/:id` per membership, each on the SAME
10721
+ * `contentKeys.sourceAssetDetail` key `useContentSourceAsset` uses. Two consequences
10722
+ * worth relying on: an asset shared by several items is fetched once, and
10723
+ * `useUpdateContentSourceAsset`'s existing invalidation already refreshes what this
10724
+ * hook renders. Per-asset rather than one list read because the list route filters
10725
+ * only by `kind`/`limit`/`offset` -- it has no id filter, so a list call would
10726
+ * over-fetch and still risk missing an asset past the page boundary.
10727
+ *
10728
+ * The transport caps membership at 50 per item, so this is a bounded fan-out.
10729
+ */
10730
+ declare function useContentItemSourceAssetDetails(itemId: string | undefined): ContentItemSourceAssetDetailsResult;
10731
+
10732
+ interface AddContentItemSourceAssetParams {
10733
+ itemId: string;
10734
+ membership: ContentItemSourceAssetInput;
10735
+ }
10736
+ /**
10737
+ * POST `/content/items/:itemId/source-assets` (201) -- links one source asset into an
10738
+ * item at a `position`.
10739
+ *
10740
+ * `position` 0 is the cover. Positions must be unique within the item but need not be
10741
+ * contiguous, so there is deliberately no client-side renumbering here: use
10742
+ * `useReorderContentItemSourceAssets` when the whole order changes.
10743
+ *
10744
+ * `crop` is normalized fractions of the source (`x`, `y`, `width`, `height`, each
10745
+ * 0-1, with `x + width <= 1` and `y + height <= 1`), never pixels -- one crop then
10746
+ * survives a resized derivative. `organizationId` is never sent; it comes from the
10747
+ * authenticated context server-side, and composite foreign keys make a cross-org link
10748
+ * impossible at the database level.
10749
+ *
10750
+ * Behind `content.manage`.
10751
+ */
10752
+ declare function useAddContentItemSourceAsset(): _tanstack_react_query.UseMutationResult<{
10753
+ id: string;
10754
+ organizationId: string;
10755
+ contentItemId: string;
10756
+ sourceAssetId: string;
10757
+ position: number;
10758
+ crop: {
10759
+ x: number;
10760
+ y: number;
10761
+ width: number;
10762
+ height: number;
10763
+ } | null;
10764
+ altText: string | null;
10765
+ derivativePath: string | null;
10766
+ derivativeCrop: {
10767
+ x: number;
10768
+ y: number;
10769
+ width: number;
10770
+ height: number;
10771
+ } | null;
10772
+ derivativeRenderedAt: string | null;
10773
+ createdAt: string;
10774
+ }, Error, AddContentItemSourceAssetParams, unknown>;
10775
+
10776
+ interface RemoveContentItemSourceAssetParams {
10777
+ itemId: string;
10778
+ sourceAssetId: string;
10779
+ }
10780
+ /**
10781
+ * DELETE `/content/items/:itemId/source-assets/:sourceAssetId` (204, no body) --
10782
+ * unlinks one source asset from one item.
10783
+ *
10784
+ * Unlinks the membership only: the `content_source_assets` row survives and stays
10785
+ * usable by other items, so the source-asset caches are untouched.
10786
+ *
10787
+ * The remaining memberships keep their positions -- removing the middle of a set
10788
+ * leaves a gap, which is legal (`position` is unique per item, not contiguous).
10789
+ * Follow with `useReorderContentItemSourceAssets` only if the caller actually wants
10790
+ * renumbering.
10791
+ *
10792
+ * Behind `content.manage`.
10793
+ */
10794
+ declare function useRemoveContentItemSourceAsset(): _tanstack_react_query.UseMutationResult<void, Error, RemoveContentItemSourceAssetParams, unknown>;
10795
+
10796
+ interface ReorderContentItemSourceAssetsParams {
10797
+ itemId: string;
10798
+ /**
10799
+ * The item's COMPLETE membership set in its new order -- index becomes `position`,
10800
+ * so index 0 is the new cover.
10801
+ */
10802
+ orderedAssetIds: string[];
10803
+ }
10804
+ /**
10805
+ * POST `/content/items/:itemId/source-assets/reorder` -- rewrites the whole slide
10806
+ * order in one transaction.
10807
+ *
10808
+ * Wholesale rather than per-row: `UNIQUE (content_item_id, position)` is DEFERRABLE
10809
+ * INITIALLY DEFERRED, so the server issues plain per-row updates inside one
10810
+ * transaction and the constraint is checked at COMMIT. There is no per-membership
10811
+ * position write, and none is wanted -- moving one slide is a reorder of the set.
10812
+ *
10813
+ * The server rejects a list that does not name EXACTLY the item's current membership,
10814
+ * and its message names both directions (`missing:` for memberships the list omits,
10815
+ * `not linked to this item:` for ids that are not members). That message is surfaced
10816
+ * through `showApiErrorNotification` rather than replaced with a generic one -- it is
10817
+ * the only thing that tells an operator which side of the mismatch to fix. A caller
10818
+ * that wants it inline reads `mutation.error` too.
10819
+ *
10820
+ * Deliberately no client-side pre-check of the id set against a cached membership
10821
+ * list: the cache can be stale, and a stale-cache false negative would block a
10822
+ * legitimate reorder the server would have accepted.
10823
+ *
10824
+ * Behind `content.manage`. Returns the reordered set, ascending by `position`.
10825
+ */
10826
+ declare function useReorderContentItemSourceAssets(): _tanstack_react_query.UseMutationResult<{
10827
+ data: {
10828
+ id: string;
10829
+ organizationId: string;
10830
+ contentItemId: string;
10831
+ sourceAssetId: string;
10832
+ position: number;
10833
+ crop: {
10834
+ x: number;
10835
+ y: number;
10836
+ width: number;
10837
+ height: number;
10838
+ } | null;
10839
+ altText: string | null;
10840
+ derivativePath: string | null;
10841
+ derivativeCrop: {
10842
+ x: number;
10843
+ y: number;
10844
+ width: number;
10845
+ height: number;
10846
+ } | null;
10847
+ derivativeRenderedAt: string | null;
10848
+ createdAt: string;
10849
+ }[];
10850
+ }, Error, ReorderContentItemSourceAssetsParams, unknown>;
10851
+
10852
+ interface UpdateContentItemSourceAssetParams {
10853
+ itemId: string;
10854
+ sourceAssetId: string;
10855
+ updates: UpdateContentItemSourceAssetRequest;
10856
+ }
10857
+ /**
10858
+ * PATCH `/content/items/:itemId/source-assets/:sourceAssetId` -- patches ONE
10859
+ * membership's per-slide attributes: `crop` and `altText`. At least one must be
10860
+ * present.
10861
+ *
10862
+ * Both are per-membership, not per-asset: the same photo is cropped 4:5 in one
10863
+ * carousel and square in another, so this never touches the
10864
+ * `content_source_assets` row and never invalidates the source-asset caches.
10865
+ *
10866
+ * `position` is deliberately not patchable here -- use
10867
+ * `useReorderContentItemSourceAssets`. `sourceAssetId` is immutable; swapping the
10868
+ * asset is a remove plus an add.
10869
+ *
10870
+ * `crop` is normalized fractions of the source (0-1), not pixels, and `null` clears
10871
+ * it. `altText` is likewise nullable to clear.
10872
+ *
10873
+ * Behind `content.manage`.
10874
+ */
10875
+ declare function useUpdateContentItemSourceAsset(): _tanstack_react_query.UseMutationResult<{
10876
+ id: string;
10877
+ organizationId: string;
10878
+ contentItemId: string;
10879
+ sourceAssetId: string;
10880
+ position: number;
10881
+ crop: {
10882
+ x: number;
10883
+ y: number;
10884
+ width: number;
10885
+ height: number;
10886
+ } | null;
10887
+ altText: string | null;
10888
+ derivativePath: string | null;
10889
+ derivativeCrop: {
10890
+ x: number;
10891
+ y: number;
10892
+ width: number;
10893
+ height: number;
10894
+ } | null;
10895
+ derivativeRenderedAt: string | null;
10896
+ createdAt: string;
10897
+ }, Error, UpdateContentItemSourceAssetParams, unknown>;
10898
+
9957
10899
  interface ContentPipelineSummary {
9958
10900
  /** Item count per declared status key. */
9959
10901
  countsByStatus: Record<string, number>;
@@ -9988,6 +10930,291 @@ declare function pickLatestRunAt(latestExecutions: (APIExecutionSummary | undefi
9988
10930
  */
9989
10931
  declare function useContentPipelineSummary(pipelineId: string | undefined, statusKeys: string[], stepResourceIds: string[]): ContentPipelineSummary;
9990
10932
 
10933
+ /**
10934
+ * Filters that identify one folder listing. `credentialName` selects which connected
10935
+ * cloud-storage credential to read from (resolved org-scoped server-side); `cursor`
10936
+ * threads a previous page's `CloudStorageListResult.nextCursor` back in for the next
10937
+ * page, so it is part of the key -- a different cursor is a different page, not a
10938
+ * refetch of the same one.
10939
+ */
10940
+ interface CloudStorageFolderFilters {
10941
+ credentialName: string;
10942
+ folderPath?: string;
10943
+ cursor?: string;
10944
+ }
10945
+ declare const cloudStorageKeys: {
10946
+ all: readonly ["cloud-storage"];
10947
+ folders: () => readonly ["cloud-storage", "folders"];
10948
+ folder: (organizationId: WorkOsOrgId | null | undefined, filters: CloudStorageFolderFilters) => readonly ["cloud-storage", "folders", WorkOsOrgId | null | undefined, CloudStorageFolderFilters];
10949
+ thumbnails: () => readonly ["cloud-storage", "thumbnails"];
10950
+ /**
10951
+ * One key per resolved batch (at most `THUMBNAIL_BATCH_SIZE` ids) -- `useQueries`
10952
+ * issues one query per batch, so the batch's own id list is part of its key.
10953
+ */
10954
+ thumbnailBatch: (organizationId: WorkOsOrgId | null | undefined, credentialName: string, batchFileIds: string[]) => readonly ["cloud-storage", "thumbnails", WorkOsOrgId | null | undefined, string, string[]];
10955
+ temporaryLinks: () => readonly ["cloud-storage", "temporary-links"];
10956
+ /**
10957
+ * Keyed per file. Shared by every consumer that needs the original's bytes --
10958
+ * measuring, cropping, and previewing all read this one key, so a selected
10959
+ * image resolves one link and downloads once rather than three times.
10960
+ */
10961
+ temporaryLinkFor: (organizationId: WorkOsOrgId | null | undefined, credentialName: string, fileId: string) => readonly ["cloud-storage", "temporary-links", WorkOsOrgId | null | undefined, string, string];
10962
+ imageDimensions: () => readonly ["cloud-storage", "image-dimensions"];
10963
+ /**
10964
+ * Keyed per file rather than per set -- dimensions are measured one file at a time
10965
+ * and a measured file stays measured no matter what else is selected alongside it.
10966
+ */
10967
+ imageDimensionsFor: (organizationId: WorkOsOrgId | null | undefined, credentialName: string, fileId: string) => readonly ["cloud-storage", "image-dimensions", WorkOsOrgId | null | undefined, string, string];
10968
+ };
10969
+
10970
+ type CloudStorageFolderParams = CloudStorageFolderFilters;
10971
+ /**
10972
+ * `CloudStorageListResult` plus the `connected` flag the route surfaces when the named
10973
+ * credential does not exist for this org yet. Matches the google-calendar
10974
+ * `{ connected: false, events: [] }`-with-HTTP-200 convention
10975
+ * (`apps/api/src/integrations/google-calendar/handlers.ts`) -- "not connected" is a
10976
+ * normal query result the caller renders a connect-prompt for, never a thrown error.
10977
+ */
10978
+ interface CloudStorageFolderResponse extends CloudStorageListResult {
10979
+ connected: boolean;
10980
+ }
10981
+ /**
10982
+ * GET `/integrations/dropbox/files` -- lists one folder's contents, normalized to
10983
+ * `CloudStorageFile` at the route boundary (never a Dropbox-shaped payload here).
10984
+ *
10985
+ * `cursor` threads a previous page's `nextCursor` back in; pass the response's
10986
+ * `nextCursor` on the next call to page forward. `nextCursor` is `undefined` on the
10987
+ * last page.
10988
+ */
10989
+ declare function useCloudStorageFolder(params: CloudStorageFolderParams): _tanstack_react_query.UseQueryResult<CloudStorageFolderResponse, Error>;
10990
+
10991
+ /**
10992
+ * Dropbox's thumbnail batch endpoint caps a single request at 25 files, and the core
10993
+ * adapter enforces that cap with a thrown error rather than paging internally --
10994
+ * paging lives here instead.
10995
+ */
10996
+ declare const THUMBNAIL_BATCH_SIZE = 25;
10997
+ /**
10998
+ * Splits `items` into fixed-size batches of at most `size`, preserving order.
10999
+ * Exported standalone so the 25-file cap is testable without a QueryClient.
11000
+ */
11001
+ declare function chunkIntoBatches<T>(items: T[], size: number): T[][];
11002
+ /**
11003
+ * One entry per requested file id. `null` means the file exists but Dropbox produced
11004
+ * no thumbnail for it -- HEIC/unsupported formats, or an original over 20MB -- which
11005
+ * is a normal value the card renders a fallback from, never an error. A key absent
11006
+ * from the map means its batch has not resolved yet.
11007
+ */
11008
+ type CloudStorageThumbnailMap = Record<string, string | null>;
11009
+ interface CloudStorageThumbnailBatchResponse {
11010
+ connected: boolean;
11011
+ thumbnails: CloudStorageThumbnailMap;
11012
+ }
11013
+ /**
11014
+ * Merges one `{connected, thumbnails}` response per resolved batch into a single map.
11015
+ * `connected` is true as soon as any batch reports connected -- one credential backs
11016
+ * every batch, so a mixed result should not occur, but this stays conservative rather
11017
+ * than assuming `true` before any batch has resolved.
11018
+ * Exported standalone so batch-merge behavior is testable without a QueryClient.
11019
+ */
11020
+ declare function mergeThumbnailBatches(batches: (CloudStorageThumbnailBatchResponse | undefined)[]): {
11021
+ thumbnails: CloudStorageThumbnailMap;
11022
+ connected: boolean;
11023
+ };
11024
+ interface CloudStorageThumbnailsResult {
11025
+ /** fileId -> thumbnail URL, or `null` when Dropbox produced no thumbnail for that file. */
11026
+ thumbnails: CloudStorageThumbnailMap;
11027
+ connected: boolean;
11028
+ isLoading: boolean;
11029
+ }
11030
+ /**
11031
+ * GET `/integrations/dropbox/thumbnails` -- resolves thumbnail URLs for a set of
11032
+ * `CloudStorageFile` ids, chunked into batches of at most `THUMBNAIL_BATCH_SIZE`
11033
+ * (Dropbox's server-side cap). Each batch is its own TanStack Query so batches
11034
+ * resolve and cache independently -- a slow batch does not block the rest.
11035
+ */
11036
+ declare function useCloudStorageThumbnails(credentialName: string, fileIds: string[]): CloudStorageThumbnailsResult;
11037
+
11038
+ /**
11039
+ * Pixel dimensions of one original, or `null` when they could not be read.
11040
+ *
11041
+ * `null` is a normal value, not an error: the file may not be an image, the
11042
+ * temporary link may have failed, or the browser may have declined to decode it.
11043
+ * Callers should treat an absent measurement as "unknown", never as "too small".
11044
+ */
11045
+ type CloudStorageDimensions = {
11046
+ width: number;
11047
+ height: number;
11048
+ } | null;
11049
+ /** One entry per requested file id. A key absent from the map has not resolved yet. */
11050
+ type CloudStorageDimensionMap = Record<string, CloudStorageDimensions>;
11051
+ /**
11052
+ * Decode an image far enough to read its intrinsic size, then discard it.
11053
+ *
11054
+ * The browser is the only source that answers for **every** format. Dropbox's
11055
+ * `include_media_info` populates `dimensions` for JPEG and returns no `media_info`
11056
+ * at all for PNG and GIF, so asking the provider would silently cover some images
11057
+ * and skip others -- confirmed against a real account on 2026-08-18, where a JPEG
11058
+ * reported 352x400 and a PNG reported nothing.
11059
+ *
11060
+ * Resolves `null` rather than rejecting: a failed measurement means the caller
11061
+ * knows nothing about the size, which is exactly what an unmeasured file means.
11062
+ * Exported standalone so the decode path is testable without a QueryClient.
11063
+ */
11064
+ declare function measureImageDimensions(url: string): Promise<CloudStorageDimensions>;
11065
+ interface CloudStorageImageDimensionsResult {
11066
+ /** fileId -> measured dimensions, or `null` when they could not be read. */
11067
+ dimensions: CloudStorageDimensionMap;
11068
+ isLoading: boolean;
11069
+ }
11070
+ /**
11071
+ * Resolve a temporary link per file and measure the original's dimensions from it.
11072
+ *
11073
+ * **Call this with the files a person actually chose, not a whole folder listing.**
11074
+ * Each id costs one `/temporary-link` round trip plus a full-size image download, so
11075
+ * running it over a browse grid would fetch every original to render a label. Doing
11076
+ * it on selection puts the cost where the value is, and it is the same load a crop
11077
+ * step performs anyway.
11078
+ *
11079
+ * One TanStack Query per file, so each resolves and caches on its own -- a slow or
11080
+ * failing file does not hold up the rest.
11081
+ */
11082
+ declare function useCloudStorageImageDimensions(credentialName: string, fileIds: string[]): CloudStorageImageDimensionsResult;
11083
+
11084
+ /** One file's full-resolution URL, or `null` when the provider would not issue one. */
11085
+ type CloudStorageTemporaryLink = string | null;
11086
+ /** One entry per requested file id. A key absent from the map has not resolved yet. */
11087
+ type CloudStorageTemporaryLinkMap = Record<string, CloudStorageTemporaryLink>;
11088
+ /**
11089
+ * How long a resolved link is treated as fresh. Dropbox's own links last four
11090
+ * hours and return 410 Gone after that, so this is deliberately shorter -- a
11091
+ * link that expires while a crop editor still holds it produces a broken image
11092
+ * with no way to tell it apart from a bad file.
11093
+ */
11094
+ declare const TEMPORARY_LINK_STALE_MS: number;
11095
+ interface CloudStorageTemporaryLinksResult {
11096
+ /** fileId -> full-resolution URL, or `null` when none could be issued. */
11097
+ links: CloudStorageTemporaryLinkMap;
11098
+ isLoading: boolean;
11099
+ }
11100
+ /**
11101
+ * Resolve a short-lived, publicly-fetchable URL for each requested file.
11102
+ *
11103
+ * This is the full original, not a thumbnail -- it is what a crop editor and a
11104
+ * post preview have to render, because a crop expressed as fractions of the
11105
+ * source is meaningless against a downsampled copy.
11106
+ *
11107
+ * **Call it with the files a person actually chose.** Every id is one round
11108
+ * trip, and every URL a consumer renders is a full-size download. Running it
11109
+ * over a browse grid would fetch every original in the folder.
11110
+ *
11111
+ * One TanStack Query per file, so each resolves and caches on its own and a
11112
+ * failing file does not hold up the rest. The key is shared with
11113
+ * `useCloudStorageImageDimensions`, which measures from this same link rather
11114
+ * than resolving a second one -- that is what keeps a selected image to a
11115
+ * single download across measuring, cropping, and previewing.
11116
+ */
11117
+ declare function useCloudStorageTemporaryLinks(credentialName: string, fileIds: string[]): CloudStorageTemporaryLinksResult;
11118
+
11119
+ declare const storageKeys: {
11120
+ all: readonly ["storage"];
11121
+ signedUrls: () => readonly ["storage", "signed-urls"];
11122
+ /**
11123
+ * Keyed per object rather than per set, so a path already signed stays signed no
11124
+ * matter what else is requested alongside it -- the same reason
11125
+ * `cloudStorageKeys.temporaryLinkFor` is per file.
11126
+ */
11127
+ signedUrlFor: (organizationId: WorkOsOrgId | null | undefined, bucket: string, path: string) => readonly ["storage", "signed-urls", WorkOsOrgId | null | undefined, string, string];
11128
+ };
11129
+
11130
+ /** What the caller supplies. `organizationId` is never sent -- the route reads it from authenticated context. */
11131
+ interface UploadStorageFileParams {
11132
+ /** Bucket id, e.g. `content-derivatives`. */
11133
+ bucket: string;
11134
+ /**
11135
+ * Object key WITHOUT the `{organizationId}/` prefix. `StorageService.buildPath`
11136
+ * prepends it server-side, and the `storage.objects` policies read the org back
11137
+ * out of that prefix -- so a caller that adds one itself writes to a path no
11138
+ * policy will match.
11139
+ */
11140
+ path: string;
11141
+ /** The bytes to store. */
11142
+ file: Blob;
11143
+ /** Content type recorded on the object. Defaults to the blob's own `type`. */
11144
+ contentType?: string;
11145
+ /** Replace an object already at `path`. Default false, which makes a re-upload fail. */
11146
+ upsert?: boolean;
11147
+ }
11148
+ interface UploadStorageFileResult {
11149
+ success: boolean;
11150
+ /** The key as supplied, without the org prefix. This is what a row stores. */
11151
+ path: string;
11152
+ /** The key the object actually lives at, org prefix included. Diagnostic -- do not store it. */
11153
+ fullPath: string;
11154
+ size?: number;
11155
+ }
11156
+ /**
11157
+ * POST `/storage/upload` -- store a file in a Supabase bucket through the API.
11158
+ *
11159
+ * The transport is base64 in a JSON body, which inflates the payload by about a
11160
+ * third. That is acceptable for what this is used for -- a cropped, downsized
11161
+ * derivative of roughly 100 KB -- and it is not a free choice: `@fastify/multipart`
11162
+ * is registered only inside the deployments plugin scope, so the storage routes
11163
+ * cannot take a multipart body without widening that registration.
11164
+ *
11165
+ * Nothing is invalidated on success. Storage objects are not a query cache in this
11166
+ * package; what a caller usually needs to invalidate afterwards is the ROW that
11167
+ * now points at the object, which belongs to that row's own hook.
11168
+ *
11169
+ * The route runs on `request.userClient`, so `storage.objects` RLS applies -- an
11170
+ * upload into a bucket the member lacks the permission for fails at the database,
11171
+ * not at a check in this hook.
11172
+ */
11173
+ declare function useUploadStorageFile(): _tanstack_react_query.UseMutationResult<UploadStorageFileResult, Error, UploadStorageFileParams, unknown>;
11174
+
11175
+ /** One object in a bucket. Callers hold these; they do not hold URLs. */
11176
+ interface StorageObjectRef {
11177
+ bucket: string;
11178
+ path: string;
11179
+ }
11180
+ /**
11181
+ * How a ref indexes into the returned map. Bucket and path together, because the
11182
+ * same path can exist in two buckets and a path-only key would collide.
11183
+ */
11184
+ declare function storageObjectRefKey(ref: StorageObjectRef): string;
11185
+ /** One entry per requested ref, keyed by `storageObjectRefKey`. Absent = not resolved yet. */
11186
+ type StorageSignedUrlMap = Record<string, string>;
11187
+ interface StorageSignedUrlsResult {
11188
+ /** ref key -> a URL that fetches the object, valid for `SIGNED_URL_EXPIRES_IN_SECONDS`. */
11189
+ urls: StorageSignedUrlMap;
11190
+ isLoading: boolean;
11191
+ }
11192
+ /** How long a minted URL is valid for. */
11193
+ declare const SIGNED_URL_EXPIRES_IN_SECONDS: number;
11194
+ /**
11195
+ * POST `/storage/signed-url` per path -- resolve private storage objects into URLs
11196
+ * a browser can actually fetch.
11197
+ *
11198
+ * **Sign at read; never store the result.** A signed URL expires, so persisting one
11199
+ * produces a row that is correct when written and silently wrong later. What gets
11200
+ * stored is the path (`content_item_source_assets.derivative_path`,
11201
+ * `content_distributions.media_urls`), and this hook turns it into a URL at the
11202
+ * moment something renders it. Same rule as
11203
+ * `acq_deals.proposal_data.proposalPdfPath`.
11204
+ *
11205
+ * One query per ref, so each resolves and caches on its own and one unreadable
11206
+ * object does not hold up the rest.
11207
+ *
11208
+ * Each ref carries its own bucket rather than the caller passing one for the whole
11209
+ * batch: a stored entry names where it lives, so nothing here has to know which
11210
+ * bucket a given record's objects happen to be in.
11211
+ *
11212
+ * The route runs on `request.userClient`, so `storage.objects` RLS decides whether
11213
+ * a URL can be minted at all -- a member of another organization gets an error
11214
+ * here, not a URL that fails later.
11215
+ */
11216
+ declare function useStorageSignedUrls(refs: StorageObjectRef[]): StorageSignedUrlsResult;
11217
+
9991
11218
  /**
9992
11219
  * Query key factories for Operations TanStack Query hooks.
9993
11220
  *
@@ -12842,5 +14069,5 @@ declare function useCreateNote(): _tanstack_react_query.UseMutationResult<{
12842
14069
  type?: string;
12843
14070
  }, "organization_id">, unknown>;
12844
14071
 
12845
- export { AccessKeys, ApiKeyService, CredentialService, DeploymentService, OperationsService, OrganizationMembershipService, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, WebhookEndpointService, acquisitionListKeys, clientsKeys, collectResourceFilterFacets, companyKeys, contactKeys, contentKeys, dealKeys, dealNoteKeys, dealTaskKeys, executionsKeys, filterByDomainFilters, getResourceFilterFacetIds, isSessionCapable, labelResourceFilterFacet, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, mergeSessionMessages, milestoneKeys, noteKeys, observabilityKeys, operationsKeys, pickLatestRunAt, projectActivityKeys, projectKeys, requestsKeys, scheduleKeys, sessionsKeys, sortData, sumStatusCounts, taskKeys, useAccess, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useAddCompaniesToList, useAddContactsToList, useArchiveSession, useArchivedLogs, useArtifacts, useAssignRole, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useClient, useClientStatus, useClients, useCommandQueue, useCommandQueueTask, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompanyFacets, useCompleteDealTask, useContact, useContacts, useContentDistribution, useContentDistributions, useContentItem, useContentItemAttempts, useContentItems, useContentPipelineSummary, useContentSourceAsset, useContentSourceAssets, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateArtifact, useCreateClient, useCreateCompany, useCreateContact, useCreateContentSourceAsset, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateProject as useCreateDeliveryProject, useCreateList, useCreateMilestone, useCreateNote, useCreateOrgRole, useCreateSchedule, useCreateSession, useCreateTask, useCreateWebhookEndpoint, useCredentials, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDealsLookup, useDealsSummary, useDeleteApiKey, useDeleteClient, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteProject as useDeleteDeliveryProject, useDeleteTask as useDeleteDeliveryTask, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteMilestone, useDeleteOrgRole, useDeleteRequest, useDeleteSchedule, useDeleteSession, useDeleteTask$1 as useDeleteTask, useDeleteWebhookEndpoint, useDeriveActions, useEffectivePermissions, useEndSession, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useErrorTrends, useExecuteAction, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutionSSE, useExecutions, useGetExecutionHistory, useGetSchedule, useInFlightExecutions, useList, useListApiKeys, useListDeployments, useListExecutions, useListMember, useListMembers, useListProgress, useListRecords, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useMergedExecution, useMilestones, useNotificationCount as useNotificationCountSSE, useNotifications, useOrgRoles, useOrganizationMembers, useOrganizationModelDrift, usePaginationState, usePatchTask, usePauseSchedule, usePermissionCatalog, useProject, useProjectActivities, useProjectMilestones, useProjectNotes, useProjectRealtime, useProjectTasks, useProjects, useReactivateMembership, useRecentExecutionsByResource, useRemoveCompaniesFromList, useRequest, useRequestsList, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useReviewContentItem, useRevokeRole, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useStatusFilter, useSubmitAction, useSubmitRequest, useSuccessNotification, useSystemHealth, useTableSelection, useTableSort, useTasks, useTestNotification, useTimeRangeDates, useTopFailingResources, useTransitionItem, useTransitionListCompany, useTransitionListMember, useTransitionState, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateClient, useUpdateCompany, useUpdateContact, useUpdateContentDistribution, useUpdateContentItem, useUpdateContentSourceAsset, useUpdateCredential, useUpdateProject as useUpdateDeliveryProject, useUpdateList, useUpdateListConfig, useUpdateListStatus, useUpdateMilestone, useUpdateOrgRole, useUpdateRequestStatus, useUpdateSchedule, useUpdateTask, useUpdateWebhookEndpoint, useUserMemberships, useVerifyCredential, useVisibleResources, useWarningNotification, useWorkflowExecution };
12846
- export type { AccessKeyInput, AcqCompanyWithCount, AcqContactWithCompany, AcqDealNote, AcqDealTask, AcqDealTaskKind, ActivityFilters, ActivityTrendResponse, AddCompaniesToListResult, AddContactsToListResult, AssignRoleInput, BulkDeleteExecutionsParams, BulkDeleteExecutionsResult, BusinessImpactMetrics, CancelExecutionParams, CancelExecutionResult, ChatMessage, ClientDetailResponse, ClientResponse, ClientStatus, ClientStatusResponse, ClientsListFilters, ContentDistributionListResponse, ContentDistributionResponse, ContentDistributionsListFilters, ContentItemAttemptListResponse, ContentItemAttemptResponse, ContentItemListResponse, ContentItemResponse, ContentItemReviewDecision, ContentItemStatus, ContentItemsListFilters, ContentPillar, ContentPipelineId, ContentPipelineSummary, ContentSourceAssetKind, ContentSourceAssetListResponse, ContentSourceAssetResponse, ContentSourceAssetsListFilters, CreateApiKeyRequest, CreateApiKeyResponse, CreateClientRequest, CreateContentSourceAssetRequest, CreateCredentialRequest, CreateCredentialResponse, CreateOrgRoleInput, CreateScheduleInput, CreateSessionResponse, CredentialListItem, DealDetail, DealLookupFilters, DealLookupItem, DealSummaryStageItem, DealsSummaryResponse, DeleteExecutionParams, Deployment, ErrorDistributionItem, ErrorDistributionParams, ErrorFilters, ErrorTrendsParams, ExecuteActionInput, ExecuteAsyncParams, ExecuteAsyncResult, ExecutionErrorDetails, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLogsFilters, ExecutionLogsPageResponse, FailingResource, GetMessagesResponse, ListActivitiesResponse, ListApiKeysResponse, ListCredentialsResponse, ListExecutionsFilters, ListRecordsFilters, ListSchedulesFilters, ListSchedulesResponse, ListWebhookEndpointsResponse, MessageEvent, MessageType, OrgRole, OrganizationModelDriftState, RemoveCompaniesFromListResult, RequestRow, RequestSeverity, RequestType, RequestsListFilters, ResourceFilterFacet, ResourcesResponse, RetryExecutionParams, ReviewContentItemRequest, RevokeRoleInput, SessionDTO, SessionExecution, SessionExecutionsResponse, SessionListItem, SessionTokenUsage, SortDirection, SortState, StaleDealSummaryItem, StatefulItem, StatusFilter, SubmitActionRequest, SubmitActionResponse, SubmitRequestInput, SystemHealthExecutionSummary, SystemHealthResponse, TaskSchedule, TopFailingResourcesParams, TransitionItemInput, TransitionListCompanyInput, TransitionListMemberInput, TransitionStateInput, UpdateClientRequest, UpdateContentItemRequest, UpdateContentSourceAssetRequest, UpdateListStatusInput, UpdateOrgRoleInput, UpdateScheduleInput, UseAccessResult, UseActivitiesParams, UseActivityTrendParams, UseArtifactsParams, UseBatchedResourcesHealthParams, UseExecuteResourceOptions, UseExecutionHealthParams, UseExecutionLogsParams, UseExecutionPanelStateOptions, UseExecutionPanelStateReturn, UseExecutionSSEOptions, UseExecutionSSEResult, UseInFlightExecutionsOptions, UseListProgressOptions, UseNotificationCountArgs, UseResourcesHealthParams, UseSSEConnectionOptions, UseScheduledTasksOptions, UseSystemHealthParams, UseWorkflowExecutionOptions, UseWorkflowExecutionResult, VerifyCredentialResponse, WebSocketState, WorkflowExecutionTriggerParams };
14072
+ export { AccessKeys, ApiKeyService, CredentialService, DeploymentService, OperationsService, OrganizationMembershipService, REFETCH_INTERVAL_RUNNING, SIGNED_URL_EXPIRES_IN_SECONDS, TEMPORARY_LINK_STALE_MS, THUMBNAIL_BATCH_SIZE, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, WebhookEndpointService, acquisitionListKeys, chunkIntoBatches, clientsKeys, cloudStorageKeys, collectResourceFilterFacets, companyKeys, contactKeys, contentKeys, dealKeys, dealNoteKeys, dealTaskKeys, executionsKeys, filterByDomainFilters, getResourceFilterFacetIds, isSessionCapable, joinSourceAssetDetails, labelResourceFilterFacet, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, measureImageDimensions, mergeSessionMessages, mergeThumbnailBatches, milestoneKeys, noteKeys, observabilityKeys, operationsKeys, pickCoverSourceAsset, pickLatestRunAt, projectActivityKeys, projectKeys, readItemSourceAssets, requestsKeys, scheduleKeys, sessionsKeys, sortData, storageKeys, storageObjectRefKey, sumStatusCounts, taskKeys, useAccess, useActivateDeployment, useActivities, useActivitiesRealtime, useActivityFilters, useActivityTrend, useAddCompaniesToList, useAddContactsToList, useAddContentItemSourceAsset, useArchiveSession, useArchivedLogs, useArtifacts, useAssignRole, useBatchDelete, useBatchTelemetry, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useClient, useClientStatus, useClients, useCloudStorageFolder, useCloudStorageImageDimensions, useCloudStorageTemporaryLinks, useCloudStorageThumbnails, useCommandQueue, useCommandQueueTask, useCommandQueueTotals, useCommandViewData, useCommandViewDomainFilters, useCommandViewStats, useCommandViewStore, useCompanies, useCompany, useCompanyFacets, useCompleteDealTask, useContact, useContacts, useContentDistribution, useContentDistributions, useContentItem, useContentItemAttempts, useContentItemSourceAssetDetails, useContentItemSourceAssets, useContentItems, useContentPipelineSummary, useContentSourceAsset, useContentSourceAssets, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateApiKey, useCreateArtifact, useCreateClient, useCreateCompany, useCreateContact, useCreateContentDistribution, useCreateContentItem, useCreateContentSourceAsset, useCreateCredential, useCreateDealNote, useCreateDealTask, useCreateProject as useCreateDeliveryProject, useCreateList, useCreateMilestone, useCreateNote, useCreateOrgRole, useCreateSchedule, useCreateSession, useCreateTask, useCreateWebhookEndpoint, useCredentials, useDashboardMetrics, useDeactivateDeployment, useDeactivateMembership, useDealDetail, useDealNotes, useDealTasks, useDealTasksDue, useDeals, useDealsLookup, useDealsSummary, useDeleteApiKey, useDeleteClient, useDeleteCompanies, useDeleteContacts, useDeleteCredential, useDeleteDeal, useDeleteProject as useDeleteDeliveryProject, useDeleteTask as useDeleteDeliveryTask, useDeleteDeployment, useDeleteExecution, useDeleteList, useDeleteMilestone, useDeleteOrgRole, useDeleteRequest, useDeleteSchedule, useDeleteSession, useDeleteTask$1 as useDeleteTask, useDeleteWebhookEndpoint, useDeriveActions, useEffectivePermissions, useEndSession, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useErrorTrends, useExecuteAction, useExecuteAsync, useExecuteResource, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionLogsFilters, useExecutionPanelState, useExecutionSSE, useExecutions, useGetExecutionHistory, useGetSchedule, useInFlightExecutions, useList, useListApiKeys, useListDeployments, useListExecutions, useListMember, useListMembers, useListProgress, useListRecords, useListSchedules, useListWebhookEndpoints, useLists, useListsTelemetry, useMarkAllAsRead, useMarkAsRead, useMergedExecution, useMilestones, useNotificationCount as useNotificationCountSSE, useNotifications, useOrgRoles, useOrganizationMembers, useOrganizationModelDrift, usePaginationState, usePatchTask, usePauseSchedule, usePermissionCatalog, useProject, useProjectActivities, useProjectMilestones, useProjectNotes, useProjectRealtime, useProjectTasks, useProjects, useReactivateMembership, useRecentExecutionsByResource, useRemoveCompaniesFromList, useRemoveContentItemSourceAsset, useReorderContentItemSourceAssets, useRequest, useRequestsList, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResourceSearch, useResources, useResourcesDomainFilters, useResourcesHealth, useResumeSchedule, useRetryExecution, useReviewContentItem, useRevokeRole, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useStatusFilter, useStorageSignedUrls, useSubmitAction, useSubmitRequest, useSuccessNotification, useSystemHealth, useTableSelection, useTableSort, useTasks, useTestNotification, useTimeRangeDates, useTopFailingResources, useTransitionItem, useTransitionListCompany, useTransitionListMember, useTransitionState, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateApiKey, useUpdateClient, useUpdateCompany, useUpdateContact, useUpdateContentDistribution, useUpdateContentItem, useUpdateContentItemSourceAsset, useUpdateContentSourceAsset, useUpdateCredential, useUpdateProject as useUpdateDeliveryProject, useUpdateList, useUpdateListConfig, useUpdateListStatus, useUpdateMilestone, useUpdateOrgRole, useUpdateRequestStatus, useUpdateSchedule, useUpdateTask, useUpdateWebhookEndpoint, useUploadStorageFile, useUserMemberships, useVerifyCredential, useVisibleResources, useWarningNotification, useWorkflowExecution };
14073
+ export type { AccessKeyInput, AcqCompanyWithCount, AcqContactWithCompany, AcqDealNote, AcqDealTask, AcqDealTaskKind, ActivityFilters, ActivityTrendResponse, AddCompaniesToListResult, AddContactsToListResult, AssignRoleInput, BulkDeleteExecutionsParams, BulkDeleteExecutionsResult, BusinessImpactMetrics, CancelExecutionParams, CancelExecutionResult, ChatMessage, ClientDetailResponse, ClientResponse, ClientStatus, ClientStatusResponse, ClientsListFilters, CloudStorageDimensionMap, CloudStorageDimensions, CloudStorageFolderFilters, CloudStorageFolderParams, CloudStorageFolderResponse, CloudStorageImageDimensionsResult, CloudStorageTemporaryLink, CloudStorageTemporaryLinkMap, CloudStorageTemporaryLinksResult, CloudStorageThumbnailMap, CloudStorageThumbnailsResult, ContentAssetCrop, ContentAssetCropInput, ContentDistributionListResponse, ContentDistributionResponse, ContentDistributionsListFilters, ContentItemAttemptListResponse, ContentItemAttemptResponse, ContentItemListResponse, ContentItemResponse, ContentItemReviewDecision, ContentItemSourceAssetDetail, ContentItemSourceAssetDetailsResult, ContentItemSourceAssetExpansion, ContentItemSourceAssetInput, ContentItemSourceAssetListResponse, ContentItemSourceAssetResponse, ContentItemStatus, ContentItemsListFilters, ContentPillar, ContentPipelineId, ContentPipelineSummary, ContentSourceAssetKind, ContentSourceAssetListResponse, ContentSourceAssetResponse, ContentSourceAssetsListFilters, CreateApiKeyRequest, CreateApiKeyResponse, CreateClientRequest, CreateContentDistributionRequest, CreateContentSourceAssetRequest, CreateCredentialRequest, CreateCredentialResponse, CreateOrgRoleInput, CreateScheduleInput, CreateSessionResponse, CredentialListItem, DealDetail, DealLookupFilters, DealLookupItem, DealSummaryStageItem, DealsSummaryResponse, DeleteExecutionParams, Deployment, ErrorDistributionItem, ErrorDistributionParams, ErrorFilters, ErrorTrendsParams, ExecuteActionInput, ExecuteAsyncParams, ExecuteAsyncResult, ExecutionErrorDetails, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLogsFilters, ExecutionLogsPageResponse, FailingResource, GetMessagesResponse, ListActivitiesResponse, ListApiKeysResponse, ListCredentialsResponse, ListExecutionsFilters, ListRecordsFilters, ListSchedulesFilters, ListSchedulesResponse, ListWebhookEndpointsResponse, MessageEvent, MessageType, OrgRole, OrganizationModelDriftState, RemoveCompaniesFromListResult, ReorderContentItemSourceAssetsRequest, RequestRow, RequestSeverity, RequestType, RequestsListFilters, ResourceFilterFacet, ResourcesResponse, RetryExecutionParams, ReviewContentItemRequest, RevokeRoleInput, SessionDTO, SessionExecution, SessionExecutionsResponse, SessionListItem, SessionTokenUsage, SortDirection, SortState, StaleDealSummaryItem, StatefulItem, StatusFilter, StorageObjectRef, StorageSignedUrlMap, StorageSignedUrlsResult, SubmitActionRequest, SubmitActionResponse, SubmitRequestInput, SystemHealthExecutionSummary, SystemHealthResponse, TaskSchedule, TopFailingResourcesParams, TransitionItemInput, TransitionListCompanyInput, TransitionListMemberInput, TransitionStateInput, UpdateClientRequest, UpdateContentDistributionRequest, UpdateContentItemRequest, UpdateContentItemSourceAssetRequest, UpdateContentSourceAssetRequest, UpdateListStatusInput, UpdateOrgRoleInput, UpdateScheduleInput, UploadStorageFileParams, UploadStorageFileResult, UseAccessResult, UseActivitiesParams, UseActivityTrendParams, UseArtifactsParams, UseBatchedResourcesHealthParams, UseExecuteResourceOptions, UseExecutionHealthParams, UseExecutionLogsParams, UseExecutionPanelStateOptions, UseExecutionPanelStateReturn, UseExecutionSSEOptions, UseExecutionSSEResult, UseInFlightExecutionsOptions, UseListProgressOptions, UseNotificationCountArgs, UseResourcesHealthParams, UseSSEConnectionOptions, UseScheduledTasksOptions, UseSystemHealthParams, UseWorkflowExecutionOptions, UseWorkflowExecutionResult, VerifyCredentialResponse, WebSocketState, WorkflowExecutionTriggerParams };