@pellux/goodvibes-contracts 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "1.1.0"
6
+ "version": "1.3.0"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -42121,6 +42121,21 @@
42121
42121
  "estimatedTokens": {
42122
42122
  "type": "number"
42123
42123
  },
42124
+ "truncated": {
42125
+ "type": "boolean"
42126
+ },
42127
+ "totalCandidates": {
42128
+ "type": "number"
42129
+ },
42130
+ "droppedCount": {
42131
+ "type": "number"
42132
+ },
42133
+ "droppedForBudget": {
42134
+ "type": "number"
42135
+ },
42136
+ "budgetExhausted": {
42137
+ "type": "boolean"
42138
+ },
42124
42139
  "items": {
42125
42140
  "type": "array",
42126
42141
  "items": {
@@ -42213,6 +42228,11 @@
42213
42228
  "strategy",
42214
42229
  "budgetLimit",
42215
42230
  "estimatedTokens",
42231
+ "truncated",
42232
+ "totalCandidates",
42233
+ "droppedCount",
42234
+ "droppedForBudget",
42235
+ "budgetExhausted",
42216
42236
  "items"
42217
42237
  ],
42218
42238
  "additionalProperties": false
@@ -57736,6 +57756,292 @@
57736
57756
  },
57737
57757
  "invokable": true
57738
57758
  },
57759
+ {
57760
+ "id": "memory.records.export",
57761
+ "title": "Export Memory Bundle",
57762
+ "description": "Export a no-loss bundle (records + links) for the given filter from the canonical store. The bundle round-trips through import id-keyed, so it is the wire form of the cross-surface fold/reconcile seam. Read-only.",
57763
+ "category": "memory",
57764
+ "source": "builtin",
57765
+ "access": "authenticated",
57766
+ "transport": [
57767
+ "http",
57768
+ "ws"
57769
+ ],
57770
+ "scopes": [
57771
+ "read:memory"
57772
+ ],
57773
+ "http": {
57774
+ "method": "POST",
57775
+ "path": "/api/memory/records/export"
57776
+ },
57777
+ "inputSchema": {
57778
+ "type": "object",
57779
+ "properties": {
57780
+ "scope": {
57781
+ "type": "string",
57782
+ "enum": [
57783
+ "session",
57784
+ "project",
57785
+ "team"
57786
+ ]
57787
+ },
57788
+ "cls": {
57789
+ "type": "string",
57790
+ "enum": [
57791
+ "decision",
57792
+ "constraint",
57793
+ "incident",
57794
+ "pattern",
57795
+ "fact",
57796
+ "risk",
57797
+ "runbook",
57798
+ "architecture",
57799
+ "ownership"
57800
+ ]
57801
+ },
57802
+ "tags": {
57803
+ "type": "array",
57804
+ "items": {
57805
+ "type": "string"
57806
+ }
57807
+ },
57808
+ "query": {
57809
+ "type": "string"
57810
+ },
57811
+ "semantic": {
57812
+ "type": "boolean"
57813
+ },
57814
+ "since": {
57815
+ "type": "number"
57816
+ },
57817
+ "reviewState": {
57818
+ "type": "array",
57819
+ "items": {
57820
+ "type": "string",
57821
+ "enum": [
57822
+ "fresh",
57823
+ "reviewed",
57824
+ "stale",
57825
+ "contradicted"
57826
+ ]
57827
+ }
57828
+ },
57829
+ "minConfidence": {
57830
+ "type": "number"
57831
+ },
57832
+ "provenanceKinds": {
57833
+ "type": "array",
57834
+ "items": {
57835
+ "type": "string",
57836
+ "enum": [
57837
+ "session",
57838
+ "turn",
57839
+ "task",
57840
+ "event",
57841
+ "file"
57842
+ ]
57843
+ }
57844
+ },
57845
+ "staleOnly": {
57846
+ "type": "boolean"
57847
+ },
57848
+ "limit": {
57849
+ "type": "number"
57850
+ }
57851
+ },
57852
+ "additionalProperties": true
57853
+ },
57854
+ "outputSchema": {
57855
+ "type": "object",
57856
+ "properties": {
57857
+ "bundle": {
57858
+ "type": "object",
57859
+ "properties": {
57860
+ "schemaVersion": {
57861
+ "type": "string",
57862
+ "enum": [
57863
+ "v1"
57864
+ ]
57865
+ },
57866
+ "exportedAt": {
57867
+ "type": "number"
57868
+ },
57869
+ "scope": {
57870
+ "type": "string",
57871
+ "enum": [
57872
+ "session",
57873
+ "project",
57874
+ "team",
57875
+ "all"
57876
+ ]
57877
+ },
57878
+ "recordCount": {
57879
+ "type": "number"
57880
+ },
57881
+ "linkCount": {
57882
+ "type": "number"
57883
+ },
57884
+ "records": {
57885
+ "type": "array",
57886
+ "items": {
57887
+ "type": "object",
57888
+ "properties": {
57889
+ "id": {
57890
+ "type": "string"
57891
+ },
57892
+ "scope": {
57893
+ "type": "string",
57894
+ "enum": [
57895
+ "session",
57896
+ "project",
57897
+ "team"
57898
+ ]
57899
+ },
57900
+ "cls": {
57901
+ "type": "string",
57902
+ "enum": [
57903
+ "decision",
57904
+ "constraint",
57905
+ "incident",
57906
+ "pattern",
57907
+ "fact",
57908
+ "risk",
57909
+ "runbook",
57910
+ "architecture",
57911
+ "ownership"
57912
+ ]
57913
+ },
57914
+ "summary": {
57915
+ "type": "string"
57916
+ },
57917
+ "detail": {
57918
+ "type": "string"
57919
+ },
57920
+ "tags": {
57921
+ "type": "array",
57922
+ "items": {
57923
+ "type": "string"
57924
+ }
57925
+ },
57926
+ "provenance": {
57927
+ "type": "array",
57928
+ "items": {
57929
+ "type": "object",
57930
+ "properties": {
57931
+ "kind": {
57932
+ "type": "string",
57933
+ "enum": [
57934
+ "session",
57935
+ "turn",
57936
+ "task",
57937
+ "event",
57938
+ "file"
57939
+ ]
57940
+ },
57941
+ "ref": {
57942
+ "type": "string"
57943
+ },
57944
+ "label": {
57945
+ "type": "string"
57946
+ }
57947
+ },
57948
+ "required": [
57949
+ "kind",
57950
+ "ref"
57951
+ ],
57952
+ "additionalProperties": false
57953
+ }
57954
+ },
57955
+ "reviewState": {
57956
+ "type": "string",
57957
+ "enum": [
57958
+ "fresh",
57959
+ "reviewed",
57960
+ "stale",
57961
+ "contradicted"
57962
+ ]
57963
+ },
57964
+ "confidence": {
57965
+ "type": "number"
57966
+ },
57967
+ "reviewedAt": {
57968
+ "type": "number"
57969
+ },
57970
+ "reviewedBy": {
57971
+ "type": "string"
57972
+ },
57973
+ "staleReason": {
57974
+ "type": "string"
57975
+ },
57976
+ "createdAt": {
57977
+ "type": "number"
57978
+ },
57979
+ "updatedAt": {
57980
+ "type": "number"
57981
+ }
57982
+ },
57983
+ "required": [
57984
+ "id",
57985
+ "scope",
57986
+ "cls",
57987
+ "summary",
57988
+ "tags",
57989
+ "provenance",
57990
+ "reviewState",
57991
+ "confidence",
57992
+ "createdAt",
57993
+ "updatedAt"
57994
+ ],
57995
+ "additionalProperties": true
57996
+ }
57997
+ },
57998
+ "links": {
57999
+ "type": "array",
58000
+ "items": {
58001
+ "type": "object",
58002
+ "properties": {
58003
+ "fromId": {
58004
+ "type": "string"
58005
+ },
58006
+ "toId": {
58007
+ "type": "string"
58008
+ },
58009
+ "relation": {
58010
+ "type": "string"
58011
+ },
58012
+ "createdAt": {
58013
+ "type": "number"
58014
+ }
58015
+ },
58016
+ "required": [
58017
+ "fromId",
58018
+ "toId",
58019
+ "relation",
58020
+ "createdAt"
58021
+ ],
58022
+ "additionalProperties": false
58023
+ }
58024
+ }
58025
+ },
58026
+ "required": [
58027
+ "schemaVersion",
58028
+ "exportedAt",
58029
+ "scope",
58030
+ "recordCount",
58031
+ "linkCount",
58032
+ "records",
58033
+ "links"
58034
+ ],
58035
+ "additionalProperties": false
58036
+ }
58037
+ },
58038
+ "required": [
58039
+ "bundle"
58040
+ ],
58041
+ "additionalProperties": false
58042
+ },
58043
+ "invokable": true
58044
+ },
57739
58045
  {
57740
58046
  "id": "memory.records.get",
57741
58047
  "title": "Get Memory Record",
@@ -57889,9 +58195,9 @@
57889
58195
  "invokable": true
57890
58196
  },
57891
58197
  {
57892
- "id": "memory.records.search",
57893
- "title": "Search Memory Records",
57894
- "description": "Search the canonical store, literal or semantic. When semantic is requested but the semantic index cannot be consulted, the search falls back to a literal scan and states the reason in indexUnavailableReason rather than returning a silent empty result that reads as \"nothing was ever stored\". With recall=true the cross-surface recall-honesty contract is applied: flagged (stale/contradicted) records are excluded outright and records below the 60% confidence floor are dropped, each exclusion counted honestly.",
58198
+ "id": "memory.records.import",
58199
+ "title": "Import Memory Bundle",
58200
+ "description": "Import a bundle into the canonical store as an id-keyed union: an id already present is left untouched (counted skipped), a new id is added; a link is added only when both its endpoints exist. Never overwrites, never deletes, idempotent on re-run. The daemon is the single writer, so a client imports here instead of writing the store file.",
57895
58201
  "category": "memory",
57896
58202
  "source": "builtin",
57897
58203
  "access": "authenticated",
@@ -57900,101 +58206,700 @@
57900
58206
  "ws"
57901
58207
  ],
57902
58208
  "scopes": [
57903
- "read:memory"
58209
+ "write:memory"
57904
58210
  ],
57905
58211
  "http": {
57906
58212
  "method": "POST",
57907
- "path": "/api/memory/records/search"
58213
+ "path": "/api/memory/records/import"
57908
58214
  },
57909
58215
  "inputSchema": {
57910
58216
  "type": "object",
57911
58217
  "properties": {
57912
- "scope": {
57913
- "type": "string",
57914
- "enum": [
57915
- "session",
57916
- "project",
57917
- "team"
57918
- ]
57919
- },
57920
- "cls": {
57921
- "type": "string",
57922
- "enum": [
57923
- "decision",
57924
- "constraint",
57925
- "incident",
57926
- "pattern",
57927
- "fact",
57928
- "risk",
57929
- "runbook",
57930
- "architecture",
57931
- "ownership"
57932
- ]
57933
- },
57934
- "tags": {
57935
- "type": "array",
57936
- "items": {
57937
- "type": "string"
57938
- }
57939
- },
57940
- "query": {
58218
+ "bundle": {
58219
+ "type": "object",
58220
+ "properties": {
58221
+ "schemaVersion": {
58222
+ "type": "string",
58223
+ "enum": [
58224
+ "v1"
58225
+ ]
58226
+ },
58227
+ "exportedAt": {
58228
+ "type": "number"
58229
+ },
58230
+ "scope": {
58231
+ "type": "string",
58232
+ "enum": [
58233
+ "session",
58234
+ "project",
58235
+ "team",
58236
+ "all"
58237
+ ]
58238
+ },
58239
+ "recordCount": {
58240
+ "type": "number"
58241
+ },
58242
+ "linkCount": {
58243
+ "type": "number"
58244
+ },
58245
+ "records": {
58246
+ "type": "array",
58247
+ "items": {
58248
+ "type": "object",
58249
+ "properties": {
58250
+ "id": {
58251
+ "type": "string"
58252
+ },
58253
+ "scope": {
58254
+ "type": "string",
58255
+ "enum": [
58256
+ "session",
58257
+ "project",
58258
+ "team"
58259
+ ]
58260
+ },
58261
+ "cls": {
58262
+ "type": "string",
58263
+ "enum": [
58264
+ "decision",
58265
+ "constraint",
58266
+ "incident",
58267
+ "pattern",
58268
+ "fact",
58269
+ "risk",
58270
+ "runbook",
58271
+ "architecture",
58272
+ "ownership"
58273
+ ]
58274
+ },
58275
+ "summary": {
58276
+ "type": "string"
58277
+ },
58278
+ "detail": {
58279
+ "type": "string"
58280
+ },
58281
+ "tags": {
58282
+ "type": "array",
58283
+ "items": {
58284
+ "type": "string"
58285
+ }
58286
+ },
58287
+ "provenance": {
58288
+ "type": "array",
58289
+ "items": {
58290
+ "type": "object",
58291
+ "properties": {
58292
+ "kind": {
58293
+ "type": "string",
58294
+ "enum": [
58295
+ "session",
58296
+ "turn",
58297
+ "task",
58298
+ "event",
58299
+ "file"
58300
+ ]
58301
+ },
58302
+ "ref": {
58303
+ "type": "string"
58304
+ },
58305
+ "label": {
58306
+ "type": "string"
58307
+ }
58308
+ },
58309
+ "required": [
58310
+ "kind",
58311
+ "ref"
58312
+ ],
58313
+ "additionalProperties": false
58314
+ }
58315
+ },
58316
+ "reviewState": {
58317
+ "type": "string",
58318
+ "enum": [
58319
+ "fresh",
58320
+ "reviewed",
58321
+ "stale",
58322
+ "contradicted"
58323
+ ]
58324
+ },
58325
+ "confidence": {
58326
+ "type": "number"
58327
+ },
58328
+ "reviewedAt": {
58329
+ "type": "number"
58330
+ },
58331
+ "reviewedBy": {
58332
+ "type": "string"
58333
+ },
58334
+ "staleReason": {
58335
+ "type": "string"
58336
+ },
58337
+ "createdAt": {
58338
+ "type": "number"
58339
+ },
58340
+ "updatedAt": {
58341
+ "type": "number"
58342
+ }
58343
+ },
58344
+ "required": [
58345
+ "id",
58346
+ "scope",
58347
+ "cls",
58348
+ "summary",
58349
+ "tags",
58350
+ "provenance",
58351
+ "reviewState",
58352
+ "confidence",
58353
+ "createdAt",
58354
+ "updatedAt"
58355
+ ],
58356
+ "additionalProperties": true
58357
+ }
58358
+ },
58359
+ "links": {
58360
+ "type": "array",
58361
+ "items": {
58362
+ "type": "object",
58363
+ "properties": {
58364
+ "fromId": {
58365
+ "type": "string"
58366
+ },
58367
+ "toId": {
58368
+ "type": "string"
58369
+ },
58370
+ "relation": {
58371
+ "type": "string"
58372
+ },
58373
+ "createdAt": {
58374
+ "type": "number"
58375
+ }
58376
+ },
58377
+ "required": [
58378
+ "fromId",
58379
+ "toId",
58380
+ "relation",
58381
+ "createdAt"
58382
+ ],
58383
+ "additionalProperties": false
58384
+ }
58385
+ }
58386
+ },
58387
+ "required": [
58388
+ "schemaVersion",
58389
+ "exportedAt",
58390
+ "scope",
58391
+ "recordCount",
58392
+ "linkCount",
58393
+ "records",
58394
+ "links"
58395
+ ],
58396
+ "additionalProperties": false
58397
+ }
58398
+ },
58399
+ "required": [
58400
+ "bundle"
58401
+ ],
58402
+ "additionalProperties": true
58403
+ },
58404
+ "outputSchema": {
58405
+ "type": "object",
58406
+ "properties": {
58407
+ "result": {
58408
+ "type": "object",
58409
+ "properties": {
58410
+ "importedRecords": {
58411
+ "type": "number"
58412
+ },
58413
+ "skippedRecords": {
58414
+ "type": "number"
58415
+ },
58416
+ "importedLinks": {
58417
+ "type": "number"
58418
+ }
58419
+ },
58420
+ "required": [
58421
+ "importedRecords",
58422
+ "skippedRecords",
58423
+ "importedLinks"
58424
+ ],
58425
+ "additionalProperties": false
58426
+ }
58427
+ },
58428
+ "required": [
58429
+ "result"
58430
+ ],
58431
+ "additionalProperties": false
58432
+ },
58433
+ "invokable": true
58434
+ },
58435
+ {
58436
+ "id": "memory.records.links.add",
58437
+ "title": "Link Memory Records",
58438
+ "description": "Create a directed relation (e.g. \"supersedes\", \"caused\") from the path record to a target record. Returns 404 when either endpoint does not exist — never a 200 that pretends a link was made between records that do not both exist.",
58439
+ "category": "memory",
58440
+ "source": "builtin",
58441
+ "access": "authenticated",
58442
+ "transport": [
58443
+ "http",
58444
+ "ws"
58445
+ ],
58446
+ "scopes": [
58447
+ "write:memory"
58448
+ ],
58449
+ "http": {
58450
+ "method": "POST",
58451
+ "path": "/api/memory/records/{id}/links"
58452
+ },
58453
+ "inputSchema": {
58454
+ "type": "object",
58455
+ "properties": {
58456
+ "id": {
57941
58457
  "type": "string"
57942
58458
  },
57943
- "semantic": {
57944
- "type": "boolean"
57945
- },
57946
- "since": {
57947
- "type": "number"
57948
- },
57949
- "reviewState": {
57950
- "type": "array",
57951
- "items": {
57952
- "type": "string",
57953
- "enum": [
57954
- "fresh",
57955
- "reviewed",
57956
- "stale",
57957
- "contradicted"
57958
- ]
57959
- }
57960
- },
57961
- "minConfidence": {
57962
- "type": "number"
57963
- },
57964
- "provenanceKinds": {
57965
- "type": "array",
57966
- "items": {
57967
- "type": "string",
57968
- "enum": [
57969
- "session",
57970
- "turn",
57971
- "task",
57972
- "event",
57973
- "file"
57974
- ]
57975
- }
57976
- },
57977
- "staleOnly": {
57978
- "type": "boolean"
57979
- },
57980
- "limit": {
57981
- "type": "number"
58459
+ "toId": {
58460
+ "type": "string"
57982
58461
  },
57983
- "recall": {
57984
- "type": "boolean"
58462
+ "relation": {
58463
+ "type": "string"
57985
58464
  }
57986
58465
  },
58466
+ "required": [
58467
+ "id",
58468
+ "toId",
58469
+ "relation"
58470
+ ],
57987
58471
  "additionalProperties": true
57988
58472
  },
57989
58473
  "outputSchema": {
57990
58474
  "type": "object",
57991
58475
  "properties": {
57992
- "records": {
57993
- "type": "array",
57994
- "items": {
57995
- "type": "object",
57996
- "properties": {
57997
- "id": {
58476
+ "link": {
58477
+ "type": "object",
58478
+ "properties": {
58479
+ "fromId": {
58480
+ "type": "string"
58481
+ },
58482
+ "toId": {
58483
+ "type": "string"
58484
+ },
58485
+ "relation": {
58486
+ "type": "string"
58487
+ },
58488
+ "createdAt": {
58489
+ "type": "number"
58490
+ }
58491
+ },
58492
+ "required": [
58493
+ "fromId",
58494
+ "toId",
58495
+ "relation",
58496
+ "createdAt"
58497
+ ],
58498
+ "additionalProperties": false
58499
+ }
58500
+ },
58501
+ "required": [
58502
+ "link"
58503
+ ],
58504
+ "additionalProperties": false
58505
+ },
58506
+ "invokable": true
58507
+ },
58508
+ {
58509
+ "id": "memory.records.links.list",
58510
+ "title": "List Memory Record Links",
58511
+ "description": "Return every link where the record is the source or the target. Returns 404 when no record with that id exists — an honest not-found, distinct from a record that exists but has no links (an empty array).",
58512
+ "category": "memory",
58513
+ "source": "builtin",
58514
+ "access": "authenticated",
58515
+ "transport": [
58516
+ "http",
58517
+ "ws"
58518
+ ],
58519
+ "scopes": [
58520
+ "read:memory"
58521
+ ],
58522
+ "http": {
58523
+ "method": "GET",
58524
+ "path": "/api/memory/records/{id}/links"
58525
+ },
58526
+ "inputSchema": {
58527
+ "type": "object",
58528
+ "properties": {
58529
+ "id": {
58530
+ "type": "string"
58531
+ }
58532
+ },
58533
+ "required": [
58534
+ "id"
58535
+ ],
58536
+ "additionalProperties": false
58537
+ },
58538
+ "outputSchema": {
58539
+ "type": "object",
58540
+ "properties": {
58541
+ "links": {
58542
+ "type": "array",
58543
+ "items": {
58544
+ "type": "object",
58545
+ "properties": {
58546
+ "fromId": {
58547
+ "type": "string"
58548
+ },
58549
+ "toId": {
58550
+ "type": "string"
58551
+ },
58552
+ "relation": {
58553
+ "type": "string"
58554
+ },
58555
+ "createdAt": {
58556
+ "type": "number"
58557
+ }
58558
+ },
58559
+ "required": [
58560
+ "fromId",
58561
+ "toId",
58562
+ "relation",
58563
+ "createdAt"
58564
+ ],
58565
+ "additionalProperties": false
58566
+ }
58567
+ }
58568
+ },
58569
+ "required": [
58570
+ "links"
58571
+ ],
58572
+ "additionalProperties": false
58573
+ },
58574
+ "invokable": true
58575
+ },
58576
+ {
58577
+ "id": "memory.records.list",
58578
+ "title": "List Memory Records",
58579
+ "description": "Bulk read from the canonical store: a literal (non-semantic) search returning the matching records as a plain array. An empty filter returns every record (getAll). This is the read a client surface uses instead of opening the store file for its browse/list and knowledge-injection paths.",
58580
+ "category": "memory",
58581
+ "source": "builtin",
58582
+ "access": "authenticated",
58583
+ "transport": [
58584
+ "http",
58585
+ "ws"
58586
+ ],
58587
+ "scopes": [
58588
+ "read:memory"
58589
+ ],
58590
+ "http": {
58591
+ "method": "POST",
58592
+ "path": "/api/memory/records/list"
58593
+ },
58594
+ "inputSchema": {
58595
+ "type": "object",
58596
+ "properties": {
58597
+ "scope": {
58598
+ "type": "string",
58599
+ "enum": [
58600
+ "session",
58601
+ "project",
58602
+ "team"
58603
+ ]
58604
+ },
58605
+ "cls": {
58606
+ "type": "string",
58607
+ "enum": [
58608
+ "decision",
58609
+ "constraint",
58610
+ "incident",
58611
+ "pattern",
58612
+ "fact",
58613
+ "risk",
58614
+ "runbook",
58615
+ "architecture",
58616
+ "ownership"
58617
+ ]
58618
+ },
58619
+ "tags": {
58620
+ "type": "array",
58621
+ "items": {
58622
+ "type": "string"
58623
+ }
58624
+ },
58625
+ "query": {
58626
+ "type": "string"
58627
+ },
58628
+ "semantic": {
58629
+ "type": "boolean"
58630
+ },
58631
+ "since": {
58632
+ "type": "number"
58633
+ },
58634
+ "reviewState": {
58635
+ "type": "array",
58636
+ "items": {
58637
+ "type": "string",
58638
+ "enum": [
58639
+ "fresh",
58640
+ "reviewed",
58641
+ "stale",
58642
+ "contradicted"
58643
+ ]
58644
+ }
58645
+ },
58646
+ "minConfidence": {
58647
+ "type": "number"
58648
+ },
58649
+ "provenanceKinds": {
58650
+ "type": "array",
58651
+ "items": {
58652
+ "type": "string",
58653
+ "enum": [
58654
+ "session",
58655
+ "turn",
58656
+ "task",
58657
+ "event",
58658
+ "file"
58659
+ ]
58660
+ }
58661
+ },
58662
+ "staleOnly": {
58663
+ "type": "boolean"
58664
+ },
58665
+ "limit": {
58666
+ "type": "number"
58667
+ }
58668
+ },
58669
+ "additionalProperties": true
58670
+ },
58671
+ "outputSchema": {
58672
+ "type": "object",
58673
+ "properties": {
58674
+ "records": {
58675
+ "type": "array",
58676
+ "items": {
58677
+ "type": "object",
58678
+ "properties": {
58679
+ "id": {
58680
+ "type": "string"
58681
+ },
58682
+ "scope": {
58683
+ "type": "string",
58684
+ "enum": [
58685
+ "session",
58686
+ "project",
58687
+ "team"
58688
+ ]
58689
+ },
58690
+ "cls": {
58691
+ "type": "string",
58692
+ "enum": [
58693
+ "decision",
58694
+ "constraint",
58695
+ "incident",
58696
+ "pattern",
58697
+ "fact",
58698
+ "risk",
58699
+ "runbook",
58700
+ "architecture",
58701
+ "ownership"
58702
+ ]
58703
+ },
58704
+ "summary": {
58705
+ "type": "string"
58706
+ },
58707
+ "detail": {
58708
+ "type": "string"
58709
+ },
58710
+ "tags": {
58711
+ "type": "array",
58712
+ "items": {
58713
+ "type": "string"
58714
+ }
58715
+ },
58716
+ "provenance": {
58717
+ "type": "array",
58718
+ "items": {
58719
+ "type": "object",
58720
+ "properties": {
58721
+ "kind": {
58722
+ "type": "string",
58723
+ "enum": [
58724
+ "session",
58725
+ "turn",
58726
+ "task",
58727
+ "event",
58728
+ "file"
58729
+ ]
58730
+ },
58731
+ "ref": {
58732
+ "type": "string"
58733
+ },
58734
+ "label": {
58735
+ "type": "string"
58736
+ }
58737
+ },
58738
+ "required": [
58739
+ "kind",
58740
+ "ref"
58741
+ ],
58742
+ "additionalProperties": false
58743
+ }
58744
+ },
58745
+ "reviewState": {
58746
+ "type": "string",
58747
+ "enum": [
58748
+ "fresh",
58749
+ "reviewed",
58750
+ "stale",
58751
+ "contradicted"
58752
+ ]
58753
+ },
58754
+ "confidence": {
58755
+ "type": "number"
58756
+ },
58757
+ "reviewedAt": {
58758
+ "type": "number"
58759
+ },
58760
+ "reviewedBy": {
58761
+ "type": "string"
58762
+ },
58763
+ "staleReason": {
58764
+ "type": "string"
58765
+ },
58766
+ "createdAt": {
58767
+ "type": "number"
58768
+ },
58769
+ "updatedAt": {
58770
+ "type": "number"
58771
+ }
58772
+ },
58773
+ "required": [
58774
+ "id",
58775
+ "scope",
58776
+ "cls",
58777
+ "summary",
58778
+ "tags",
58779
+ "provenance",
58780
+ "reviewState",
58781
+ "confidence",
58782
+ "createdAt",
58783
+ "updatedAt"
58784
+ ],
58785
+ "additionalProperties": true
58786
+ }
58787
+ }
58788
+ },
58789
+ "required": [
58790
+ "records"
58791
+ ],
58792
+ "additionalProperties": false
58793
+ },
58794
+ "invokable": true
58795
+ },
58796
+ {
58797
+ "id": "memory.records.search",
58798
+ "title": "Search Memory Records",
58799
+ "description": "Search the canonical store, literal or semantic. When semantic is requested but the semantic index cannot be consulted, the search falls back to a literal scan and states the reason in indexUnavailableReason rather than returning a silent empty result that reads as \"nothing was ever stored\". With recall=true the cross-surface recall-honesty contract is applied: flagged (stale/contradicted) records are excluded outright and records below the 60% confidence floor are dropped, each exclusion counted honestly.",
58800
+ "category": "memory",
58801
+ "source": "builtin",
58802
+ "access": "authenticated",
58803
+ "transport": [
58804
+ "http",
58805
+ "ws"
58806
+ ],
58807
+ "scopes": [
58808
+ "read:memory"
58809
+ ],
58810
+ "http": {
58811
+ "method": "POST",
58812
+ "path": "/api/memory/records/search"
58813
+ },
58814
+ "inputSchema": {
58815
+ "type": "object",
58816
+ "properties": {
58817
+ "scope": {
58818
+ "type": "string",
58819
+ "enum": [
58820
+ "session",
58821
+ "project",
58822
+ "team"
58823
+ ]
58824
+ },
58825
+ "cls": {
58826
+ "type": "string",
58827
+ "enum": [
58828
+ "decision",
58829
+ "constraint",
58830
+ "incident",
58831
+ "pattern",
58832
+ "fact",
58833
+ "risk",
58834
+ "runbook",
58835
+ "architecture",
58836
+ "ownership"
58837
+ ]
58838
+ },
58839
+ "tags": {
58840
+ "type": "array",
58841
+ "items": {
58842
+ "type": "string"
58843
+ }
58844
+ },
58845
+ "query": {
58846
+ "type": "string"
58847
+ },
58848
+ "semantic": {
58849
+ "type": "boolean"
58850
+ },
58851
+ "since": {
58852
+ "type": "number"
58853
+ },
58854
+ "reviewState": {
58855
+ "type": "array",
58856
+ "items": {
58857
+ "type": "string",
58858
+ "enum": [
58859
+ "fresh",
58860
+ "reviewed",
58861
+ "stale",
58862
+ "contradicted"
58863
+ ]
58864
+ }
58865
+ },
58866
+ "minConfidence": {
58867
+ "type": "number"
58868
+ },
58869
+ "provenanceKinds": {
58870
+ "type": "array",
58871
+ "items": {
58872
+ "type": "string",
58873
+ "enum": [
58874
+ "session",
58875
+ "turn",
58876
+ "task",
58877
+ "event",
58878
+ "file"
58879
+ ]
58880
+ }
58881
+ },
58882
+ "staleOnly": {
58883
+ "type": "boolean"
58884
+ },
58885
+ "limit": {
58886
+ "type": "number"
58887
+ },
58888
+ "recall": {
58889
+ "type": "boolean"
58890
+ }
58891
+ },
58892
+ "additionalProperties": true
58893
+ },
58894
+ "outputSchema": {
58895
+ "type": "object",
58896
+ "properties": {
58897
+ "records": {
58898
+ "type": "array",
58899
+ "items": {
58900
+ "type": "object",
58901
+ "properties": {
58902
+ "id": {
57998
58903
  "type": "string"
57999
58904
  },
58000
58905
  "scope": {
@@ -58144,6 +59049,9 @@
58144
59049
  },
58145
59050
  "totalBeforeRecallFilter": {
58146
59051
  "type": "number"
59052
+ },
59053
+ "recallFloor": {
59054
+ "type": "number"
58147
59055
  }
58148
59056
  },
58149
59057
  "required": [
@@ -58155,7 +59063,427 @@
58155
59063
  "recallFiltered",
58156
59064
  "excludedFlaggedCount",
58157
59065
  "excludedBelowFloorCount",
58158
- "totalBeforeRecallFilter"
59066
+ "totalBeforeRecallFilter",
59067
+ "recallFloor"
59068
+ ],
59069
+ "additionalProperties": false
59070
+ },
59071
+ "invokable": true
59072
+ },
59073
+ {
59074
+ "id": "memory.records.search-semantic",
59075
+ "title": "Semantic Search Memory Records",
59076
+ "description": "Rank records by semantic similarity against the query, returning scored results (distance, similarity, score). When the query has no vector match the store falls back to a lexical ranking rather than a silent empty. distance is null for a fallback (non-vector) result. Read-only against the daemon's canonical index.",
59077
+ "category": "memory",
59078
+ "source": "builtin",
59079
+ "access": "authenticated",
59080
+ "transport": [
59081
+ "http",
59082
+ "ws"
59083
+ ],
59084
+ "scopes": [
59085
+ "read:memory"
59086
+ ],
59087
+ "http": {
59088
+ "method": "POST",
59089
+ "path": "/api/memory/records/search-semantic"
59090
+ },
59091
+ "inputSchema": {
59092
+ "type": "object",
59093
+ "properties": {
59094
+ "scope": {
59095
+ "type": "string",
59096
+ "enum": [
59097
+ "session",
59098
+ "project",
59099
+ "team"
59100
+ ]
59101
+ },
59102
+ "cls": {
59103
+ "type": "string",
59104
+ "enum": [
59105
+ "decision",
59106
+ "constraint",
59107
+ "incident",
59108
+ "pattern",
59109
+ "fact",
59110
+ "risk",
59111
+ "runbook",
59112
+ "architecture",
59113
+ "ownership"
59114
+ ]
59115
+ },
59116
+ "tags": {
59117
+ "type": "array",
59118
+ "items": {
59119
+ "type": "string"
59120
+ }
59121
+ },
59122
+ "query": {
59123
+ "type": "string"
59124
+ },
59125
+ "semantic": {
59126
+ "type": "boolean"
59127
+ },
59128
+ "since": {
59129
+ "type": "number"
59130
+ },
59131
+ "reviewState": {
59132
+ "type": "array",
59133
+ "items": {
59134
+ "type": "string",
59135
+ "enum": [
59136
+ "fresh",
59137
+ "reviewed",
59138
+ "stale",
59139
+ "contradicted"
59140
+ ]
59141
+ }
59142
+ },
59143
+ "minConfidence": {
59144
+ "type": "number"
59145
+ },
59146
+ "provenanceKinds": {
59147
+ "type": "array",
59148
+ "items": {
59149
+ "type": "string",
59150
+ "enum": [
59151
+ "session",
59152
+ "turn",
59153
+ "task",
59154
+ "event",
59155
+ "file"
59156
+ ]
59157
+ }
59158
+ },
59159
+ "staleOnly": {
59160
+ "type": "boolean"
59161
+ },
59162
+ "limit": {
59163
+ "type": "number"
59164
+ }
59165
+ },
59166
+ "additionalProperties": true
59167
+ },
59168
+ "outputSchema": {
59169
+ "type": "object",
59170
+ "properties": {
59171
+ "results": {
59172
+ "type": "array",
59173
+ "items": {
59174
+ "type": "object",
59175
+ "properties": {
59176
+ "record": {
59177
+ "type": "object",
59178
+ "properties": {
59179
+ "id": {
59180
+ "type": "string"
59181
+ },
59182
+ "scope": {
59183
+ "type": "string",
59184
+ "enum": [
59185
+ "session",
59186
+ "project",
59187
+ "team"
59188
+ ]
59189
+ },
59190
+ "cls": {
59191
+ "type": "string",
59192
+ "enum": [
59193
+ "decision",
59194
+ "constraint",
59195
+ "incident",
59196
+ "pattern",
59197
+ "fact",
59198
+ "risk",
59199
+ "runbook",
59200
+ "architecture",
59201
+ "ownership"
59202
+ ]
59203
+ },
59204
+ "summary": {
59205
+ "type": "string"
59206
+ },
59207
+ "detail": {
59208
+ "type": "string"
59209
+ },
59210
+ "tags": {
59211
+ "type": "array",
59212
+ "items": {
59213
+ "type": "string"
59214
+ }
59215
+ },
59216
+ "provenance": {
59217
+ "type": "array",
59218
+ "items": {
59219
+ "type": "object",
59220
+ "properties": {
59221
+ "kind": {
59222
+ "type": "string",
59223
+ "enum": [
59224
+ "session",
59225
+ "turn",
59226
+ "task",
59227
+ "event",
59228
+ "file"
59229
+ ]
59230
+ },
59231
+ "ref": {
59232
+ "type": "string"
59233
+ },
59234
+ "label": {
59235
+ "type": "string"
59236
+ }
59237
+ },
59238
+ "required": [
59239
+ "kind",
59240
+ "ref"
59241
+ ],
59242
+ "additionalProperties": false
59243
+ }
59244
+ },
59245
+ "reviewState": {
59246
+ "type": "string",
59247
+ "enum": [
59248
+ "fresh",
59249
+ "reviewed",
59250
+ "stale",
59251
+ "contradicted"
59252
+ ]
59253
+ },
59254
+ "confidence": {
59255
+ "type": "number"
59256
+ },
59257
+ "reviewedAt": {
59258
+ "type": "number"
59259
+ },
59260
+ "reviewedBy": {
59261
+ "type": "string"
59262
+ },
59263
+ "staleReason": {
59264
+ "type": "string"
59265
+ },
59266
+ "createdAt": {
59267
+ "type": "number"
59268
+ },
59269
+ "updatedAt": {
59270
+ "type": "number"
59271
+ }
59272
+ },
59273
+ "required": [
59274
+ "id",
59275
+ "scope",
59276
+ "cls",
59277
+ "summary",
59278
+ "tags",
59279
+ "provenance",
59280
+ "reviewState",
59281
+ "confidence",
59282
+ "createdAt",
59283
+ "updatedAt"
59284
+ ],
59285
+ "additionalProperties": true
59286
+ },
59287
+ "distance": {
59288
+ "anyOf": [
59289
+ {
59290
+ "type": "number"
59291
+ },
59292
+ {
59293
+ "type": "null"
59294
+ }
59295
+ ]
59296
+ },
59297
+ "similarity": {
59298
+ "type": "number"
59299
+ },
59300
+ "score": {
59301
+ "type": "number"
59302
+ }
59303
+ },
59304
+ "required": [
59305
+ "record",
59306
+ "similarity",
59307
+ "score"
59308
+ ],
59309
+ "additionalProperties": false
59310
+ }
59311
+ }
59312
+ },
59313
+ "required": [
59314
+ "results"
59315
+ ],
59316
+ "additionalProperties": false
59317
+ },
59318
+ "invokable": true
59319
+ },
59320
+ {
59321
+ "id": "memory.records.update",
59322
+ "title": "Update Memory Record",
59323
+ "description": "Edit a record's content fields (scope, summary, detail, tags) in the canonical store. This is distinct from the review update: it changes the record itself — e.g. moving scope project→team promotes a record to the shared surface. Returns 404 when no record with that id exists.",
59324
+ "category": "memory",
59325
+ "source": "builtin",
59326
+ "access": "authenticated",
59327
+ "transport": [
59328
+ "http",
59329
+ "ws"
59330
+ ],
59331
+ "scopes": [
59332
+ "write:memory"
59333
+ ],
59334
+ "http": {
59335
+ "method": "POST",
59336
+ "path": "/api/memory/records/{id}/update"
59337
+ },
59338
+ "inputSchema": {
59339
+ "type": "object",
59340
+ "properties": {
59341
+ "id": {
59342
+ "type": "string"
59343
+ },
59344
+ "scope": {
59345
+ "type": "string",
59346
+ "enum": [
59347
+ "session",
59348
+ "project",
59349
+ "team"
59350
+ ]
59351
+ },
59352
+ "summary": {
59353
+ "type": "string"
59354
+ },
59355
+ "detail": {
59356
+ "type": "string"
59357
+ },
59358
+ "tags": {
59359
+ "type": "array",
59360
+ "items": {
59361
+ "type": "string"
59362
+ }
59363
+ }
59364
+ },
59365
+ "required": [
59366
+ "id"
59367
+ ],
59368
+ "additionalProperties": true
59369
+ },
59370
+ "outputSchema": {
59371
+ "type": "object",
59372
+ "properties": {
59373
+ "record": {
59374
+ "type": "object",
59375
+ "properties": {
59376
+ "id": {
59377
+ "type": "string"
59378
+ },
59379
+ "scope": {
59380
+ "type": "string",
59381
+ "enum": [
59382
+ "session",
59383
+ "project",
59384
+ "team"
59385
+ ]
59386
+ },
59387
+ "cls": {
59388
+ "type": "string",
59389
+ "enum": [
59390
+ "decision",
59391
+ "constraint",
59392
+ "incident",
59393
+ "pattern",
59394
+ "fact",
59395
+ "risk",
59396
+ "runbook",
59397
+ "architecture",
59398
+ "ownership"
59399
+ ]
59400
+ },
59401
+ "summary": {
59402
+ "type": "string"
59403
+ },
59404
+ "detail": {
59405
+ "type": "string"
59406
+ },
59407
+ "tags": {
59408
+ "type": "array",
59409
+ "items": {
59410
+ "type": "string"
59411
+ }
59412
+ },
59413
+ "provenance": {
59414
+ "type": "array",
59415
+ "items": {
59416
+ "type": "object",
59417
+ "properties": {
59418
+ "kind": {
59419
+ "type": "string",
59420
+ "enum": [
59421
+ "session",
59422
+ "turn",
59423
+ "task",
59424
+ "event",
59425
+ "file"
59426
+ ]
59427
+ },
59428
+ "ref": {
59429
+ "type": "string"
59430
+ },
59431
+ "label": {
59432
+ "type": "string"
59433
+ }
59434
+ },
59435
+ "required": [
59436
+ "kind",
59437
+ "ref"
59438
+ ],
59439
+ "additionalProperties": false
59440
+ }
59441
+ },
59442
+ "reviewState": {
59443
+ "type": "string",
59444
+ "enum": [
59445
+ "fresh",
59446
+ "reviewed",
59447
+ "stale",
59448
+ "contradicted"
59449
+ ]
59450
+ },
59451
+ "confidence": {
59452
+ "type": "number"
59453
+ },
59454
+ "reviewedAt": {
59455
+ "type": "number"
59456
+ },
59457
+ "reviewedBy": {
59458
+ "type": "string"
59459
+ },
59460
+ "staleReason": {
59461
+ "type": "string"
59462
+ },
59463
+ "createdAt": {
59464
+ "type": "number"
59465
+ },
59466
+ "updatedAt": {
59467
+ "type": "number"
59468
+ }
59469
+ },
59470
+ "required": [
59471
+ "id",
59472
+ "scope",
59473
+ "cls",
59474
+ "summary",
59475
+ "tags",
59476
+ "provenance",
59477
+ "reviewState",
59478
+ "confidence",
59479
+ "createdAt",
59480
+ "updatedAt"
59481
+ ],
59482
+ "additionalProperties": true
59483
+ }
59484
+ },
59485
+ "required": [
59486
+ "record"
58159
59487
  ],
58160
59488
  "additionalProperties": false
58161
59489
  },
@@ -80037,10 +81365,10 @@
80037
81365
  }
80038
81366
  ],
80039
81367
  "schemaCoverage": {
80040
- "methods": 320,
80041
- "typedInputs": 320,
81368
+ "methods": 327,
81369
+ "typedInputs": 327,
80042
81370
  "genericInputs": 0,
80043
- "typedOutputs": 320,
81371
+ "typedOutputs": 327,
80044
81372
  "genericOutputs": 0
80045
81373
  },
80046
81374
  "eventCoverage": {
@@ -80049,8 +81377,8 @@
80049
81377
  "withWireEvents": 31
80050
81378
  },
80051
81379
  "validationCoverage": {
80052
- "methods": 320,
80053
- "validated": 318,
81380
+ "methods": 327,
81381
+ "validated": 325,
80054
81382
  "skippedGeneric": 0,
80055
81383
  "skippedUntyped": 2
80056
81384
  }