@vibexp/api-client 0.26.0 → 0.28.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.
@@ -288,6 +288,10 @@ export type Prompt = {
288
288
  * Version number for optimistic concurrency control
289
289
  */
290
290
  version: number;
291
+ /**
292
+ * Depth-1 typed neighborhood of this resource — the relations touching it in both directions, newest first, capped at 20. Typed summaries only, never bodies. Populated on the detail GET; empty in list responses.
293
+ */
294
+ related: Array<RelatedResource>;
291
295
  };
292
296
  export type CreatePromptRequest = {
293
297
  name: string;
@@ -1227,6 +1231,10 @@ export type Artifact = {
1227
1231
  metadata?: {
1228
1232
  [key: string]: unknown;
1229
1233
  };
1234
+ /**
1235
+ * Depth-1 typed neighborhood of this resource — the relations touching it in both directions, newest first, capped at 20. Typed summaries only, never bodies. Populated on the detail GET; empty in list responses.
1236
+ */
1237
+ related: Array<RelatedResource>;
1230
1238
  };
1231
1239
  export type CreateArtifactRequest = {
1232
1240
  /**
@@ -1809,6 +1817,10 @@ export type Memory = {
1809
1817
  * Version number for optimistic concurrency control
1810
1818
  */
1811
1819
  version: number;
1820
+ /**
1821
+ * Depth-1 typed neighborhood of this resource — the relations touching it in both directions, newest first, capped at 20. Typed summaries only, never bodies. Populated on the detail GET; empty in list responses.
1822
+ */
1823
+ related: Array<RelatedResource>;
1812
1824
  };
1813
1825
  export type CreateMemoryRequest = {
1814
1826
  /**
@@ -2028,6 +2040,10 @@ export type Blueprint = {
2028
2040
  */
2029
2041
  content_sha?: string;
2030
2042
  source?: BlueprintSource;
2043
+ /**
2044
+ * Depth-1 typed neighborhood of this resource — the relations touching it in both directions, newest first, capped at 20. Typed summaries only, never bodies. Populated on the detail GET; empty in list responses.
2045
+ */
2046
+ related: Array<RelatedResource>;
2031
2047
  };
2032
2048
  /**
2033
2049
  * Read-only import provenance; present only for imported blueprints.
@@ -3665,6 +3681,172 @@ export type RecentCommentListResponse = {
3665
3681
  */
3666
3682
  total_count: number;
3667
3683
  };
3684
+ /**
3685
+ * A directed, typed edge between two resources within a project.
3686
+ */
3687
+ export type Relation = {
3688
+ /**
3689
+ * Unique relation identifier
3690
+ */
3691
+ id: string;
3692
+ /**
3693
+ * Owning team
3694
+ */
3695
+ team_id: string;
3696
+ /**
3697
+ * Project both endpoints belong to
3698
+ */
3699
+ project_id: string;
3700
+ /**
3701
+ * Subject resource type (artifact, memory, prompt, or blueprint)
3702
+ */
3703
+ from_type: string;
3704
+ /**
3705
+ * Subject resource identifier
3706
+ */
3707
+ from_id: string;
3708
+ /**
3709
+ * Object resource type (artifact, memory, prompt, or blueprint)
3710
+ */
3711
+ to_type: string;
3712
+ /**
3713
+ * Object resource identifier
3714
+ */
3715
+ to_id: string;
3716
+ /**
3717
+ * The edge's intent
3718
+ */
3719
+ relation_type: 'governed-by' | 'supersedes' | 'built-from' | 'explained-by';
3720
+ /**
3721
+ * Whether a human or the AI proposed the edge
3722
+ */
3723
+ origin: 'ai' | 'human';
3724
+ /**
3725
+ * Tiered-trust lifecycle state
3726
+ */
3727
+ status: 'suggested' | 'confirmed';
3728
+ /**
3729
+ * User who created the edge (absent if that user was deleted)
3730
+ */
3731
+ created_by?: string;
3732
+ /**
3733
+ * User who confirmed the edge (absent while suggested or if that user was deleted)
3734
+ */
3735
+ confirmed_by?: string;
3736
+ /**
3737
+ * When the edge was created
3738
+ */
3739
+ created_at: string;
3740
+ /**
3741
+ * When the edge was last updated (e.g. confirmed)
3742
+ */
3743
+ updated_at: string;
3744
+ };
3745
+ /**
3746
+ * Request body for creating a typed relation between two resources.
3747
+ */
3748
+ export type CreateRelationRequest = {
3749
+ /**
3750
+ * Subject resource type (artifact, memory, prompt, or blueprint)
3751
+ */
3752
+ from_type: 'artifact' | 'memory' | 'prompt' | 'blueprint';
3753
+ /**
3754
+ * Subject resource identifier
3755
+ */
3756
+ from_id: string;
3757
+ /**
3758
+ * Object resource type (artifact, memory, prompt, or blueprint)
3759
+ */
3760
+ to_type: 'artifact' | 'memory' | 'prompt' | 'blueprint';
3761
+ /**
3762
+ * Object resource identifier
3763
+ */
3764
+ to_id: string;
3765
+ /**
3766
+ * The edge's intent. The object type is constrained per relation type: governed-by -> blueprint, built-from -> prompt, explained-by -> memory, supersedes -> same type as the subject.
3767
+ *
3768
+ */
3769
+ relation_type: 'governed-by' | 'supersedes' | 'built-from' | 'explained-by';
3770
+ /**
3771
+ * Whether a human or the AI proposed the edge
3772
+ */
3773
+ origin: 'ai' | 'human';
3774
+ };
3775
+ /**
3776
+ * One endpoint of a relation as seen from the other endpoint, enriched with the related resource's resolved title and link fields. project_id is present for every type; slug is present for artifact/blueprint/prompt and absent for memory.
3777
+ *
3778
+ */
3779
+ export type RelatedResource = {
3780
+ /**
3781
+ * The relation this entry came from
3782
+ */
3783
+ relation_id: string;
3784
+ /**
3785
+ * The edge's intent
3786
+ */
3787
+ relation_type: 'governed-by' | 'supersedes' | 'built-from' | 'explained-by';
3788
+ /**
3789
+ * Whether the queried resource is the subject (outgoing) or object (incoming) of the edge
3790
+ */
3791
+ direction: 'outgoing' | 'incoming';
3792
+ /**
3793
+ * Whether a human or the AI proposed the edge
3794
+ */
3795
+ origin: 'ai' | 'human';
3796
+ /**
3797
+ * Tiered-trust lifecycle state
3798
+ */
3799
+ status: 'suggested' | 'confirmed';
3800
+ /**
3801
+ * Type of the related (other) resource
3802
+ */
3803
+ resource_type: string;
3804
+ /**
3805
+ * Identifier of the related (other) resource
3806
+ */
3807
+ resource_id: string;
3808
+ /**
3809
+ * Resolved display title of the related resource
3810
+ */
3811
+ title: string;
3812
+ /**
3813
+ * Project the related resource belongs to
3814
+ */
3815
+ project_id?: string;
3816
+ /**
3817
+ * Related resource slug for the detail link (absent for memories)
3818
+ */
3819
+ slug?: string;
3820
+ /**
3821
+ * When the edge was created
3822
+ */
3823
+ created_at: string;
3824
+ };
3825
+ /**
3826
+ * A page of the relations touching a resource (both directions), newest first.
3827
+ */
3828
+ export type RelationListResponse = {
3829
+ /**
3830
+ * Relations touching the resource, newest first
3831
+ */
3832
+ relations: Array<RelatedResource>;
3833
+ /**
3834
+ * Total number of relations touching the resource
3835
+ */
3836
+ total_count: number;
3837
+ /**
3838
+ * Current page number
3839
+ */
3840
+ page: number;
3841
+ /**
3842
+ * Number of items per page
3843
+ */
3844
+ per_page: number;
3845
+ /**
3846
+ * Total number of pages
3847
+ */
3848
+ total_pages: number;
3849
+ };
3668
3850
  /**
3669
3851
  * Instance-wide totals for the top-level entities (unscoped counts).
3670
3852
  */
@@ -11107,6 +11289,199 @@ export type UpdateCommentResponses = {
11107
11289
  200: Comment;
11108
11290
  };
11109
11291
  export type UpdateCommentResponse = UpdateCommentResponses[keyof UpdateCommentResponses];
11292
+ export type ListRelationsData = {
11293
+ body?: never;
11294
+ path: {
11295
+ /**
11296
+ * Team identifier
11297
+ */
11298
+ team_id: string;
11299
+ };
11300
+ query: {
11301
+ /**
11302
+ * Type of the resource whose relations to list (artifact, memory, prompt, or blueprint)
11303
+ */
11304
+ resource_type: string;
11305
+ /**
11306
+ * Identifier of the resource whose relations to list
11307
+ */
11308
+ resource_id: string;
11309
+ /**
11310
+ * Page number (1-based)
11311
+ */
11312
+ page?: number;
11313
+ /**
11314
+ * Items per page
11315
+ */
11316
+ limit?: number;
11317
+ };
11318
+ url: '/api/v1/{team_id}/relations';
11319
+ };
11320
+ export type ListRelationsErrors = {
11321
+ /**
11322
+ * Invalid resource_type or query parameters
11323
+ */
11324
+ 400: ErrorResponse;
11325
+ /**
11326
+ * Unauthorized
11327
+ */
11328
+ 401: ErrorResponse;
11329
+ /**
11330
+ * Caller is not a member of the team
11331
+ */
11332
+ 403: ErrorResponse;
11333
+ /**
11334
+ * Failed to list relations
11335
+ */
11336
+ 500: ErrorResponse;
11337
+ };
11338
+ export type ListRelationsError = ListRelationsErrors[keyof ListRelationsErrors];
11339
+ export type ListRelationsResponses = {
11340
+ /**
11341
+ * Relations retrieved successfully
11342
+ */
11343
+ 200: RelationListResponse;
11344
+ };
11345
+ export type ListRelationsResponse = ListRelationsResponses[keyof ListRelationsResponses];
11346
+ export type CreateRelationData = {
11347
+ body: CreateRelationRequest;
11348
+ path: {
11349
+ /**
11350
+ * Team identifier
11351
+ */
11352
+ team_id: string;
11353
+ };
11354
+ query?: never;
11355
+ url: '/api/v1/{team_id}/relations';
11356
+ };
11357
+ export type CreateRelationErrors = {
11358
+ /**
11359
+ * Invalid types, self-link, cross-project link, or matrix violation
11360
+ */
11361
+ 400: ErrorResponse;
11362
+ /**
11363
+ * Unauthorized
11364
+ */
11365
+ 401: ErrorResponse;
11366
+ /**
11367
+ * Caller may not create relations in the team
11368
+ */
11369
+ 403: ErrorResponse;
11370
+ /**
11371
+ * One of the endpoints does not exist in the team
11372
+ */
11373
+ 404: ErrorResponse;
11374
+ /**
11375
+ * Failed to create relation
11376
+ */
11377
+ 500: ErrorResponse;
11378
+ };
11379
+ export type CreateRelationError = CreateRelationErrors[keyof CreateRelationErrors];
11380
+ export type CreateRelationResponses = {
11381
+ /**
11382
+ * Relation already existed; the existing edge is returned (idempotent create)
11383
+ */
11384
+ 200: Relation;
11385
+ /**
11386
+ * Relation created successfully
11387
+ */
11388
+ 201: Relation;
11389
+ };
11390
+ export type CreateRelationResponse = CreateRelationResponses[keyof CreateRelationResponses];
11391
+ export type ConfirmRelationData = {
11392
+ body?: never;
11393
+ path: {
11394
+ /**
11395
+ * Team identifier
11396
+ */
11397
+ team_id: string;
11398
+ /**
11399
+ * Relation identifier
11400
+ */
11401
+ relation_id: string;
11402
+ };
11403
+ query?: never;
11404
+ url: '/api/v1/{team_id}/relations/{relation_id}/confirm';
11405
+ };
11406
+ export type ConfirmRelationErrors = {
11407
+ /**
11408
+ * relation_id is not a valid UUID
11409
+ */
11410
+ 400: ErrorResponse;
11411
+ /**
11412
+ * Unauthorized
11413
+ */
11414
+ 401: ErrorResponse;
11415
+ /**
11416
+ * Caller may not confirm relations in the team
11417
+ */
11418
+ 403: ErrorResponse;
11419
+ /**
11420
+ * Relation not found in the team
11421
+ */
11422
+ 404: ErrorResponse;
11423
+ /**
11424
+ * Relation is already confirmed
11425
+ */
11426
+ 409: ErrorResponse;
11427
+ /**
11428
+ * Failed to confirm relation
11429
+ */
11430
+ 500: ErrorResponse;
11431
+ };
11432
+ export type ConfirmRelationError = ConfirmRelationErrors[keyof ConfirmRelationErrors];
11433
+ export type ConfirmRelationResponses = {
11434
+ /**
11435
+ * Relation confirmed successfully
11436
+ */
11437
+ 200: Relation;
11438
+ };
11439
+ export type ConfirmRelationResponse = ConfirmRelationResponses[keyof ConfirmRelationResponses];
11440
+ export type DeleteRelationData = {
11441
+ body?: never;
11442
+ path: {
11443
+ /**
11444
+ * Team identifier
11445
+ */
11446
+ team_id: string;
11447
+ /**
11448
+ * Relation identifier
11449
+ */
11450
+ relation_id: string;
11451
+ };
11452
+ query?: never;
11453
+ url: '/api/v1/{team_id}/relations/{relation_id}';
11454
+ };
11455
+ export type DeleteRelationErrors = {
11456
+ /**
11457
+ * relation_id is not a valid UUID
11458
+ */
11459
+ 400: ErrorResponse;
11460
+ /**
11461
+ * Unauthorized
11462
+ */
11463
+ 401: ErrorResponse;
11464
+ /**
11465
+ * Caller may not delete this relation
11466
+ */
11467
+ 403: ErrorResponse;
11468
+ /**
11469
+ * Relation not found in the team
11470
+ */
11471
+ 404: ErrorResponse;
11472
+ /**
11473
+ * Failed to delete relation
11474
+ */
11475
+ 500: ErrorResponse;
11476
+ };
11477
+ export type DeleteRelationError = DeleteRelationErrors[keyof DeleteRelationErrors];
11478
+ export type DeleteRelationResponses = {
11479
+ /**
11480
+ * Relation deleted (no content)
11481
+ */
11482
+ 204: void;
11483
+ };
11484
+ export type DeleteRelationResponse = DeleteRelationResponses[keyof DeleteRelationResponses];
11110
11485
  export type ListEmbeddingProvidersData = {
11111
11486
  body?: never;
11112
11487
  path: {