@pellux/goodvibes-sdk 1.0.0 → 1.2.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 (241) hide show
  1. package/dist/contracts/artifacts/operator-contract.json +2878 -264
  2. package/dist/events/communication.d.ts +1 -1
  3. package/dist/platform/agents/orchestrator-runner.d.ts +5 -5
  4. package/dist/platform/agents/orchestrator-runner.js +6 -6
  5. package/dist/platform/agents/orchestrator.d.ts +4 -4
  6. package/dist/platform/agents/orchestrator.js +2 -2
  7. package/dist/platform/agents/wrfc-controller.d.ts +1 -1
  8. package/dist/platform/agents/wrfc-controller.js +3 -3
  9. package/dist/platform/calendar/index.d.ts +2 -2
  10. package/dist/platform/calendar/index.js +3 -3
  11. package/dist/platform/calendar/oauth-providers.d.ts +1 -1
  12. package/dist/platform/calendar/oauth-providers.js +1 -1
  13. package/dist/platform/calendar/oauth-types.d.ts +1 -1
  14. package/dist/platform/calendar/oauth-types.js +1 -1
  15. package/dist/platform/companion/companion-chat-branching.d.ts +66 -0
  16. package/dist/platform/companion/companion-chat-branching.d.ts.map +1 -0
  17. package/dist/platform/companion/companion-chat-branching.js +142 -0
  18. package/dist/platform/companion/companion-chat-broker-bridge.d.ts +1 -1
  19. package/dist/platform/companion/companion-chat-broker-bridge.d.ts.map +1 -1
  20. package/dist/platform/companion/companion-chat-broker-sync.d.ts +2 -2
  21. package/dist/platform/companion/companion-chat-broker-sync.d.ts.map +1 -1
  22. package/dist/platform/companion/companion-chat-broker-sync.js +1 -1
  23. package/dist/platform/companion/companion-chat-manager.d.ts +26 -5
  24. package/dist/platform/companion/companion-chat-manager.d.ts.map +1 -1
  25. package/dist/platform/companion/companion-chat-manager.js +67 -81
  26. package/dist/platform/companion/companion-chat-routes.d.ts.map +1 -1
  27. package/dist/platform/companion/companion-chat-routes.js +77 -1
  28. package/dist/platform/companion/companion-chat-turn-execution.d.ts +61 -0
  29. package/dist/platform/companion/companion-chat-turn-execution.d.ts.map +1 -0
  30. package/dist/platform/companion/companion-chat-turn-execution.js +107 -0
  31. package/dist/platform/companion/companion-chat-types.d.ts +67 -0
  32. package/dist/platform/companion/companion-chat-types.d.ts.map +1 -1
  33. package/dist/platform/config/credential-status.d.ts +1 -1
  34. package/dist/platform/config/credential-status.js +1 -1
  35. package/dist/platform/config/index.d.ts +1 -1
  36. package/dist/platform/config/index.js +1 -1
  37. package/dist/platform/config/manager.d.ts +1 -1
  38. package/dist/platform/config/manager.js +1 -1
  39. package/dist/platform/config/migrations.d.ts +2 -2
  40. package/dist/platform/config/migrations.js +2 -2
  41. package/dist/platform/config/schema-domain-runtime.d.ts +8 -0
  42. package/dist/platform/config/schema-domain-runtime.d.ts.map +1 -1
  43. package/dist/platform/config/schema-domain-runtime.js +32 -0
  44. package/dist/platform/config/schema-types.d.ts +10 -2
  45. package/dist/platform/config/schema-types.d.ts.map +1 -1
  46. package/dist/platform/control-plane/gateway-scope-enforcement.js +2 -2
  47. package/dist/platform/control-plane/index.d.ts +2 -0
  48. package/dist/platform/control-plane/index.d.ts.map +1 -1
  49. package/dist/platform/control-plane/index.js +5 -1
  50. package/dist/platform/control-plane/invoke-input-validation.d.ts +1 -1
  51. package/dist/platform/control-plane/invoke-input-validation.js +1 -1
  52. package/dist/platform/control-plane/method-catalog-calendar.d.ts +2 -2
  53. package/dist/platform/control-plane/method-catalog-calendar.js +2 -2
  54. package/dist/platform/control-plane/method-catalog-channels.js +3 -3
  55. package/dist/platform/control-plane/method-catalog-control-automation.js +4 -4
  56. package/dist/platform/control-plane/method-catalog-control-companion.d.ts +1 -1
  57. package/dist/platform/control-plane/method-catalog-control-companion.d.ts.map +1 -1
  58. package/dist/platform/control-plane/method-catalog-control-companion.js +43 -0
  59. package/dist/platform/control-plane/method-catalog-control-core.js +3 -3
  60. package/dist/platform/control-plane/method-catalog-email.d.ts +1 -1
  61. package/dist/platform/control-plane/method-catalog-email.js +1 -1
  62. package/dist/platform/control-plane/method-catalog-fleet.d.ts +1 -1
  63. package/dist/platform/control-plane/method-catalog-push.d.ts +30 -0
  64. package/dist/platform/control-plane/method-catalog-push.d.ts.map +1 -0
  65. package/dist/platform/control-plane/method-catalog-push.js +80 -0
  66. package/dist/platform/control-plane/method-catalog-route-reconcile.d.ts +1 -1
  67. package/dist/platform/control-plane/method-catalog-runtime.d.ts.map +1 -1
  68. package/dist/platform/control-plane/method-catalog-runtime.js +177 -1
  69. package/dist/platform/control-plane/method-catalog.d.ts.map +1 -1
  70. package/dist/platform/control-plane/method-catalog.js +2 -0
  71. package/dist/platform/control-plane/operator-contract-schemas-fleet.js +1 -1
  72. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts +15 -0
  73. package/dist/platform/control-plane/operator-contract-schemas-runtime.d.ts.map +1 -1
  74. package/dist/platform/control-plane/operator-contract-schemas-runtime.js +81 -0
  75. package/dist/platform/control-plane/routes/checkpoints.d.ts +1 -1
  76. package/dist/platform/control-plane/routes/fleet.d.ts +2 -2
  77. package/dist/platform/control-plane/routes/fleet.js +1 -1
  78. package/dist/platform/control-plane/routes/gateway-verb-error.d.ts +1 -1
  79. package/dist/platform/control-plane/routes/gateway-verb-error.js +1 -1
  80. package/dist/platform/control-plane/routes/index.js +1 -1
  81. package/dist/platform/control-plane/routes/invocation-params.d.ts +1 -1
  82. package/dist/platform/control-plane/routes/push.d.ts +26 -0
  83. package/dist/platform/control-plane/routes/push.d.ts.map +1 -0
  84. package/dist/platform/control-plane/routes/push.js +104 -0
  85. package/dist/platform/control-plane/routes/register-gateway-verb-groups.d.ts +31 -0
  86. package/dist/platform/control-plane/routes/register-gateway-verb-groups.d.ts.map +1 -0
  87. package/dist/platform/control-plane/routes/register-gateway-verb-groups.js +16 -0
  88. package/dist/platform/control-plane/routes/register-w3-s2.d.ts +2 -2
  89. package/dist/platform/control-plane/routes/session-search.d.ts +4 -4
  90. package/dist/platform/control-plane/session-broker.d.ts +1 -1
  91. package/dist/platform/control-plane/session-broker.js +1 -1
  92. package/dist/platform/control-plane/session-store-importer.d.ts +1 -1
  93. package/dist/platform/control-plane/session-store-importer.js +1 -1
  94. package/dist/platform/control-plane/session-types.d.ts +1 -1
  95. package/dist/platform/core/orchestrator-runtime.d.ts +4 -4
  96. package/dist/platform/core/orchestrator-tool-runtime.d.ts +1 -1
  97. package/dist/platform/core/orchestrator-turn-loop.d.ts +6 -6
  98. package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  99. package/dist/platform/core/orchestrator-turn-loop.js +23 -22
  100. package/dist/platform/core/orchestrator.d.ts +10 -10
  101. package/dist/platform/core/orchestrator.d.ts.map +1 -1
  102. package/dist/platform/core/orchestrator.js +8 -8
  103. package/dist/platform/daemon/boot.d.ts +6 -0
  104. package/dist/platform/daemon/boot.d.ts.map +1 -1
  105. package/dist/platform/daemon/boot.js +1 -0
  106. package/dist/platform/daemon/control-plane.js +2 -2
  107. package/dist/platform/daemon/facade.d.ts +4 -7
  108. package/dist/platform/daemon/facade.d.ts.map +1 -1
  109. package/dist/platform/daemon/facade.js +5 -7
  110. package/dist/platform/daemon/http/router-session-broker-adapter.d.ts +1 -1
  111. package/dist/platform/daemon/http/router.d.ts +1 -0
  112. package/dist/platform/daemon/http/router.d.ts.map +1 -1
  113. package/dist/platform/daemon/http/router.js +36 -19
  114. package/dist/platform/daemon/http/runtime-route-types.d.ts +1 -1
  115. package/dist/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
  116. package/dist/platform/daemon/http/webui-serving.d.ts +68 -0
  117. package/dist/platform/daemon/http/webui-serving.d.ts.map +1 -0
  118. package/dist/platform/daemon/http/webui-serving.js +230 -0
  119. package/dist/platform/knowledge/knowledge-api.d.ts +1 -1
  120. package/dist/platform/orchestration/budget.d.ts +2 -2
  121. package/dist/platform/orchestration/cancellation.d.ts +2 -2
  122. package/dist/platform/orchestration/controller-compat.d.ts +2 -3
  123. package/dist/platform/orchestration/controller-compat.d.ts.map +1 -1
  124. package/dist/platform/orchestration/dirty-guard.js +1 -1
  125. package/dist/platform/orchestration/engine.d.ts.map +1 -1
  126. package/dist/platform/orchestration/engine.js +3 -4
  127. package/dist/platform/orchestration/persistence.js +2 -2
  128. package/dist/platform/orchestration/phase-runner.d.ts +4 -4
  129. package/dist/platform/orchestration/scheduler.d.ts +1 -1
  130. package/dist/platform/orchestration/types.d.ts +3 -3
  131. package/dist/platform/presentation/glyphs.d.ts +1 -1
  132. package/dist/platform/presentation/glyphs.js +1 -1
  133. package/dist/platform/presentation/index.d.ts +3 -3
  134. package/dist/platform/presentation/index.js +3 -3
  135. package/dist/platform/presentation/thinking-phrases.d.ts +1 -1
  136. package/dist/platform/presentation/thinking-phrases.js +1 -1
  137. package/dist/platform/presentation/waiting-wording.d.ts +1 -1
  138. package/dist/platform/presentation/waiting-wording.js +1 -1
  139. package/dist/platform/push/delivery.d.ts +48 -0
  140. package/dist/platform/push/delivery.d.ts.map +1 -0
  141. package/dist/platform/push/delivery.js +117 -0
  142. package/dist/platform/push/encryption.d.ts +41 -0
  143. package/dist/platform/push/encryption.d.ts.map +1 -0
  144. package/dist/platform/push/encryption.js +82 -0
  145. package/dist/platform/push/index.d.ts +17 -0
  146. package/dist/platform/push/index.d.ts.map +1 -0
  147. package/dist/platform/push/index.js +10 -0
  148. package/dist/platform/push/service.d.ts +75 -0
  149. package/dist/platform/push/service.d.ts.map +1 -0
  150. package/dist/platform/push/service.js +95 -0
  151. package/dist/platform/push/subscription-store.d.ts +50 -0
  152. package/dist/platform/push/subscription-store.d.ts.map +1 -0
  153. package/dist/platform/push/subscription-store.js +123 -0
  154. package/dist/platform/push/types.d.ts +68 -0
  155. package/dist/platform/push/types.d.ts.map +1 -0
  156. package/dist/platform/push/types.js +13 -0
  157. package/dist/platform/push/vapid.d.ts +54 -0
  158. package/dist/platform/push/vapid.d.ts.map +1 -0
  159. package/dist/platform/push/vapid.js +113 -0
  160. package/dist/platform/runtime/feature-flags/flags.js +3 -3
  161. package/dist/platform/runtime/fleet/adapters/agent.d.ts +2 -2
  162. package/dist/platform/runtime/fleet/adapters/agent.d.ts.map +1 -1
  163. package/dist/platform/runtime/fleet/adapters/agent.js +4 -4
  164. package/dist/platform/runtime/fleet/adapters/automation.d.ts +1 -1
  165. package/dist/platform/runtime/fleet/adapters/automation.js +1 -1
  166. package/dist/platform/runtime/fleet/adapters/code-index.d.ts +1 -1
  167. package/dist/platform/runtime/fleet/adapters/code-index.js +1 -1
  168. package/dist/platform/runtime/fleet/adapters/orchestration.js +1 -1
  169. package/dist/platform/runtime/fleet/adapters/schedule.d.ts +4 -4
  170. package/dist/platform/runtime/fleet/adapters/schedule.js +4 -4
  171. package/dist/platform/runtime/fleet/adapters/trigger.d.ts +3 -4
  172. package/dist/platform/runtime/fleet/adapters/trigger.d.ts.map +1 -1
  173. package/dist/platform/runtime/fleet/adapters/trigger.js +3 -4
  174. package/dist/platform/runtime/fleet/adapters/wrfc.js +1 -1
  175. package/dist/platform/runtime/fleet/registry.d.ts +7 -7
  176. package/dist/platform/runtime/fleet/registry.d.ts.map +1 -1
  177. package/dist/platform/runtime/fleet/registry.js +3 -3
  178. package/dist/platform/runtime/fleet/types.d.ts +9 -9
  179. package/dist/platform/runtime/fleet/types.d.ts.map +1 -1
  180. package/dist/platform/runtime/memory-spine/client.d.ts +240 -0
  181. package/dist/platform/runtime/memory-spine/client.d.ts.map +1 -0
  182. package/dist/platform/runtime/memory-spine/client.js +221 -0
  183. package/dist/platform/runtime/memory-spine/index.d.ts +17 -0
  184. package/dist/platform/runtime/memory-spine/index.d.ts.map +1 -0
  185. package/dist/platform/runtime/memory-spine/index.js +16 -0
  186. package/dist/platform/runtime/memory-spine/recall-snapshot.d.ts +74 -0
  187. package/dist/platform/runtime/memory-spine/recall-snapshot.d.ts.map +1 -0
  188. package/dist/platform/runtime/memory-spine/recall-snapshot.js +74 -0
  189. package/dist/platform/runtime/operator-client.d.ts +1 -1
  190. package/dist/platform/runtime/services.d.ts +6 -6
  191. package/dist/platform/runtime/services.d.ts.map +1 -1
  192. package/dist/platform/runtime/services.js +9 -9
  193. package/dist/platform/runtime/session-spine/union-cache.d.ts +1 -1
  194. package/dist/platform/runtime/session-spine/union-cache.js +1 -1
  195. package/dist/platform/state/canonical-memory.d.ts +7 -7
  196. package/dist/platform/state/canonical-memory.js +8 -8
  197. package/dist/platform/state/code-index-chunking.js +1 -1
  198. package/dist/platform/state/code-index-db.d.ts +1 -1
  199. package/dist/platform/state/code-index-store.js +1 -1
  200. package/dist/platform/state/index.d.ts +2 -2
  201. package/dist/platform/state/index.d.ts.map +1 -1
  202. package/dist/platform/state/index.js +1 -1
  203. package/dist/platform/state/memory-recall-contract.d.ts +59 -4
  204. package/dist/platform/state/memory-recall-contract.d.ts.map +1 -1
  205. package/dist/platform/state/memory-recall-contract.js +79 -3
  206. package/dist/platform/state/memory-registry.d.ts +8 -0
  207. package/dist/platform/state/memory-registry.d.ts.map +1 -1
  208. package/dist/platform/state/memory-registry.js +10 -0
  209. package/dist/platform/state/memory-vector-store.js +1 -1
  210. package/dist/platform/state/sqlite-vec-loader.d.ts +1 -1
  211. package/dist/platform/state/sqlite-vec-loader.js +1 -1
  212. package/dist/platform/state/vibe-projection.d.ts +3 -3
  213. package/dist/platform/state/vibe-projection.js +3 -3
  214. package/dist/platform/tools/agent/manager.d.ts +10 -10
  215. package/dist/platform/tools/agent/manager.js +7 -7
  216. package/dist/platform/tools/exec/runtime.js +5 -5
  217. package/dist/platform/tools/exec/schema.d.ts +1 -1
  218. package/dist/platform/tools/exec/schema.d.ts.map +1 -1
  219. package/dist/platform/tools/fetch/runtime.d.ts +1 -1
  220. package/dist/platform/tools/registry.d.ts +1 -1
  221. package/dist/platform/tools/registry.js +1 -1
  222. package/dist/platform/types/tools.d.ts +1 -1
  223. package/dist/platform/utils/request-body.d.ts.map +1 -1
  224. package/dist/platform/utils/request-body.js +50 -5
  225. package/dist/platform/version.js +1 -1
  226. package/dist/platform/voice/index.d.ts +2 -0
  227. package/dist/platform/voice/index.d.ts.map +1 -1
  228. package/dist/platform/voice/index.js +3 -0
  229. package/dist/platform/voice/spoken-turn/audio-sink.d.ts +111 -0
  230. package/dist/platform/voice/spoken-turn/audio-sink.d.ts.map +1 -0
  231. package/dist/platform/voice/spoken-turn/audio-sink.js +1 -0
  232. package/dist/platform/voice/spoken-turn/controller.d.ts +117 -0
  233. package/dist/platform/voice/spoken-turn/controller.d.ts.map +1 -0
  234. package/dist/platform/voice/spoken-turn/controller.js +448 -0
  235. package/dist/platform/voice/spoken-turn/index.d.ts +16 -0
  236. package/dist/platform/voice/spoken-turn/index.d.ts.map +1 -0
  237. package/dist/platform/voice/spoken-turn/index.js +12 -0
  238. package/dist/platform/voice/spoken-turn/text-chunker.d.ts +33 -0
  239. package/dist/platform/voice/spoken-turn/text-chunker.d.ts.map +1 -0
  240. package/dist/platform/voice/spoken-turn/text-chunker.js +97 -0
  241. package/package.json +13 -9
@@ -3,7 +3,7 @@
3
3
  "product": {
4
4
  "id": "goodvibes",
5
5
  "surface": "operator",
6
- "version": "1.0.0"
6
+ "version": "1.2.0"
7
7
  },
8
8
  "auth": {
9
9
  "modes": [
@@ -6799,7 +6799,7 @@
6799
6799
  {
6800
6800
  "id": "automation.jobs.update",
6801
6801
  "title": "Update Automation Job",
6802
- "description": "Update a durable automation job. (Renamed from automation.jobs.patch in the Wave-6 core-verb pass — canonical verb is update, not patch.)",
6802
+ "description": "Update a durable automation job. (Renamed from automation.jobs.patch in the 1.0.0 core-verb rename — canonical verb is update, not patch.)",
6803
6803
  "category": "automation",
6804
6804
  "source": "builtin",
6805
6805
  "access": "authenticated",
@@ -21829,6 +21829,100 @@
21829
21829
  },
21830
21830
  "invokable": true
21831
21831
  },
21832
+ {
21833
+ "id": "companion.chat.messages.edit",
21834
+ "title": "Edit Companion Chat Message And Branch",
21835
+ "description": "Edit a user message and branch the conversation from it. `messageId` (required) is the user message to edit; the edited text is passed as `body` or `content` (as message create accepts), with optional `attachments` referencing artifacts. The original message and everything after it are SUPERSEDED — retained as history, never deleted — a new user message carrying `revisionOf` back to the original is appended, and a fresh turn answers it. Returns the new message id and the superseded ids for honest lineage. Same closed/unknown-session refusals as companion.chat.messages.retry.",
21836
+ "category": "companion",
21837
+ "source": "builtin",
21838
+ "access": "authenticated",
21839
+ "transport": [
21840
+ "http",
21841
+ "ws"
21842
+ ],
21843
+ "scopes": [
21844
+ "write:sessions"
21845
+ ],
21846
+ "http": {
21847
+ "method": "POST",
21848
+ "path": "/api/companion/chat/sessions/{sessionId}/messages/edit"
21849
+ },
21850
+ "inputSchema": {
21851
+ "type": "object",
21852
+ "properties": {
21853
+ "messageId": {
21854
+ "type": "string"
21855
+ },
21856
+ "body": {
21857
+ "type": "string"
21858
+ },
21859
+ "content": {
21860
+ "type": "string"
21861
+ },
21862
+ "attachments": {
21863
+ "type": "array",
21864
+ "items": {
21865
+ "type": "object",
21866
+ "properties": {
21867
+ "artifactId": {
21868
+ "type": "string"
21869
+ },
21870
+ "label": {
21871
+ "type": "string"
21872
+ },
21873
+ "metadata": {
21874
+ "type": "object",
21875
+ "properties": {},
21876
+ "additionalProperties": false
21877
+ }
21878
+ },
21879
+ "required": [
21880
+ "artifactId"
21881
+ ],
21882
+ "additionalProperties": false
21883
+ }
21884
+ },
21885
+ "metadata": {
21886
+ "type": "object",
21887
+ "properties": {},
21888
+ "additionalProperties": false
21889
+ }
21890
+ },
21891
+ "additionalProperties": true
21892
+ },
21893
+ "outputSchema": {
21894
+ "type": "object",
21895
+ "properties": {
21896
+ "sessionId": {
21897
+ "type": "string"
21898
+ },
21899
+ "editedFrom": {
21900
+ "type": "string"
21901
+ },
21902
+ "messageId": {
21903
+ "type": "string"
21904
+ },
21905
+ "supersededMessageIds": {
21906
+ "type": "array",
21907
+ "items": {
21908
+ "type": "string"
21909
+ }
21910
+ },
21911
+ "turnStarted": {
21912
+ "type": "boolean"
21913
+ }
21914
+ },
21915
+ "required": [
21916
+ "sessionId",
21917
+ "editedFrom",
21918
+ "messageId",
21919
+ "supersededMessageIds",
21920
+ "turnStarted"
21921
+ ],
21922
+ "additionalProperties": false
21923
+ },
21924
+ "invokable": true
21925
+ },
21832
21926
  {
21833
21927
  "id": "companion.chat.messages.list",
21834
21928
  "title": "List Companion Chat Messages",
@@ -21995,6 +22089,62 @@
21995
22089
  },
21996
22090
  "invokable": true
21997
22091
  },
22092
+ {
22093
+ "id": "companion.chat.messages.retry",
22094
+ "title": "Regenerate Companion Chat Response",
22095
+ "description": "Regenerate an assistant response. Optional `messageId` targets a specific assistant message; omitted, the latest assistant response is re-run. The prior response (and any turns after it) is SUPERSEDED — kept in the message list and on disk, flagged as retained history — never deleted, then a fresh turn re-runs from the preceding user message. Returns the superseded message ids so the caller can render the honest lineage. Rejected on a closed session (409 SESSION_CLOSED) or unknown session (404 SESSION_NOT_FOUND), and with an honest machine code (409 NO_ASSISTANT_MESSAGE) when there is nothing to regenerate.",
22096
+ "category": "companion",
22097
+ "source": "builtin",
22098
+ "access": "authenticated",
22099
+ "transport": [
22100
+ "http",
22101
+ "ws"
22102
+ ],
22103
+ "scopes": [
22104
+ "write:sessions"
22105
+ ],
22106
+ "http": {
22107
+ "method": "POST",
22108
+ "path": "/api/companion/chat/sessions/{sessionId}/messages/retry"
22109
+ },
22110
+ "inputSchema": {
22111
+ "type": "object",
22112
+ "properties": {
22113
+ "messageId": {
22114
+ "type": "string"
22115
+ }
22116
+ },
22117
+ "additionalProperties": true
22118
+ },
22119
+ "outputSchema": {
22120
+ "type": "object",
22121
+ "properties": {
22122
+ "sessionId": {
22123
+ "type": "string"
22124
+ },
22125
+ "regeneratedFrom": {
22126
+ "type": "string"
22127
+ },
22128
+ "supersededMessageIds": {
22129
+ "type": "array",
22130
+ "items": {
22131
+ "type": "string"
22132
+ }
22133
+ },
22134
+ "turnStarted": {
22135
+ "type": "boolean"
22136
+ }
22137
+ },
22138
+ "required": [
22139
+ "sessionId",
22140
+ "regeneratedFrom",
22141
+ "supersededMessageIds",
22142
+ "turnStarted"
22143
+ ],
22144
+ "additionalProperties": false
22145
+ },
22146
+ "invokable": true
22147
+ },
21998
22148
  {
21999
22149
  "id": "companion.chat.sessions.close",
22000
22150
  "title": "Close Companion Chat Session",
@@ -57302,9 +57452,9 @@
57302
57452
  "invokable": true
57303
57453
  },
57304
57454
  {
57305
- "id": "memory.review-queue",
57306
- "title": "Memory Review Queue",
57307
- "description": "Return memory records prioritised for review. Accepts optional limit (?limit=N) and scope filter (?scope=session|project|team). A scope query parameter that is present but not one of the three valid values returns 400.",
57455
+ "id": "memory.records.add",
57456
+ "title": "Add Memory Record",
57457
+ "description": "Add a memory record to the daemon-owned canonical store. The daemon is the single writer for its store; a client surface routes its writes here instead of opening the store file, so two processes never write the same sql.js file. New records default to confidence 60 (the recall floor) and reviewState fresh unless the review block overrides them.",
57308
57458
  "category": "memory",
57309
57459
  "source": "builtin",
57310
57460
  "access": "authenticated",
@@ -57313,17 +57463,31 @@
57313
57463
  "ws"
57314
57464
  ],
57315
57465
  "scopes": [
57316
- "read:memory"
57466
+ "write:memory"
57317
57467
  ],
57318
57468
  "http": {
57319
- "method": "GET",
57320
- "path": "/api/memory/review-queue"
57469
+ "method": "POST",
57470
+ "path": "/api/memory/records"
57321
57471
  },
57322
57472
  "inputSchema": {
57323
57473
  "type": "object",
57324
57474
  "properties": {
57325
- "limit": {
57326
- "type": "number"
57475
+ "cls": {
57476
+ "type": "string",
57477
+ "enum": [
57478
+ "decision",
57479
+ "constraint",
57480
+ "incident",
57481
+ "pattern",
57482
+ "fact",
57483
+ "risk",
57484
+ "runbook",
57485
+ "architecture",
57486
+ "ownership"
57487
+ ]
57488
+ },
57489
+ "summary": {
57490
+ "type": "string"
57327
57491
  },
57328
57492
  "scope": {
57329
57493
  "type": "string",
@@ -57332,259 +57496,203 @@
57332
57496
  "project",
57333
57497
  "team"
57334
57498
  ]
57335
- }
57336
- },
57337
- "additionalProperties": false
57338
- },
57339
- "outputSchema": {
57340
- "type": "object",
57341
- "properties": {
57342
- "records": {
57499
+ },
57500
+ "detail": {
57501
+ "type": "string"
57502
+ },
57503
+ "tags": {
57504
+ "type": "array",
57505
+ "items": {
57506
+ "type": "string"
57507
+ }
57508
+ },
57509
+ "provenance": {
57343
57510
  "type": "array",
57344
57511
  "items": {
57345
57512
  "type": "object",
57346
- "properties": {},
57347
- "additionalProperties": true
57513
+ "properties": {
57514
+ "kind": {
57515
+ "type": "string",
57516
+ "enum": [
57517
+ "session",
57518
+ "turn",
57519
+ "task",
57520
+ "event",
57521
+ "file"
57522
+ ]
57523
+ },
57524
+ "ref": {
57525
+ "type": "string"
57526
+ },
57527
+ "label": {
57528
+ "type": "string"
57529
+ }
57530
+ },
57531
+ "required": [
57532
+ "kind",
57533
+ "ref"
57534
+ ],
57535
+ "additionalProperties": false
57348
57536
  }
57349
- }
57350
- },
57351
- "required": [
57352
- "records"
57353
- ],
57354
- "additionalProperties": false
57355
- },
57356
- "invokable": true
57357
- },
57358
- {
57359
- "id": "memory.vector.rebuild",
57360
- "title": "Rebuild Memory Vector Index",
57361
- "description": "Rebuild the sqlite-vec vector index.",
57362
- "category": "memory",
57363
- "source": "builtin",
57364
- "access": "admin",
57365
- "transport": [
57366
- "http",
57367
- "ws"
57368
- ],
57369
- "scopes": [
57370
- "write:memory"
57371
- ],
57372
- "http": {
57373
- "method": "POST",
57374
- "path": "/api/memory/vector/rebuild"
57375
- },
57376
- "inputSchema": {
57377
- "type": "object",
57378
- "properties": {},
57379
- "additionalProperties": false
57380
- },
57381
- "outputSchema": {
57382
- "type": "object",
57383
- "properties": {
57384
- "vector": {
57537
+ },
57538
+ "review": {
57385
57539
  "type": "object",
57386
57540
  "properties": {
57387
- "backend": {
57541
+ "state": {
57388
57542
  "type": "string",
57389
57543
  "enum": [
57390
- "sqlite-vec"
57544
+ "fresh",
57545
+ "reviewed",
57546
+ "stale",
57547
+ "contradicted"
57391
57548
  ]
57392
57549
  },
57393
- "enabled": {
57394
- "type": "boolean"
57395
- },
57396
- "available": {
57397
- "type": "boolean"
57398
- },
57399
- "path": {
57400
- "type": "string"
57401
- },
57402
- "dimensions": {
57403
- "type": "number"
57404
- },
57405
- "indexedRecords": {
57550
+ "confidence": {
57406
57551
  "type": "number"
57407
57552
  },
57408
- "embeddingProviderId": {
57409
- "type": "string"
57410
- },
57411
- "embeddingProviderLabel": {
57553
+ "reviewedBy": {
57412
57554
  "type": "string"
57413
57555
  },
57414
- "error": {
57556
+ "staleReason": {
57415
57557
  "type": "string"
57416
57558
  }
57417
57559
  },
57418
- "required": [
57419
- "backend",
57420
- "enabled",
57421
- "available",
57422
- "path",
57423
- "dimensions",
57424
- "indexedRecords",
57425
- "embeddingProviderId",
57426
- "embeddingProviderLabel"
57427
- ],
57428
- "additionalProperties": true
57560
+ "additionalProperties": false
57429
57561
  }
57430
57562
  },
57431
57563
  "required": [
57432
- "vector"
57564
+ "cls",
57565
+ "summary"
57433
57566
  ],
57434
- "additionalProperties": false
57435
- },
57436
- "invokable": true
57437
- },
57438
- {
57439
- "id": "memory.vector.stats",
57440
- "title": "Memory Vector Stats",
57441
- "description": "Return the current sqlite-vec vector-store posture.",
57442
- "category": "memory",
57443
- "source": "builtin",
57444
- "access": "authenticated",
57445
- "transport": [
57446
- "http",
57447
- "ws"
57448
- ],
57449
- "scopes": [
57450
- "read:memory"
57451
- ],
57452
- "http": {
57453
- "method": "GET",
57454
- "path": "/api/memory/vector"
57455
- },
57456
- "inputSchema": {
57457
- "type": "object",
57458
- "properties": {},
57459
- "additionalProperties": false
57567
+ "additionalProperties": true
57460
57568
  },
57461
57569
  "outputSchema": {
57462
57570
  "type": "object",
57463
57571
  "properties": {
57464
- "vector": {
57572
+ "record": {
57465
57573
  "type": "object",
57466
57574
  "properties": {
57467
- "backend": {
57575
+ "id": {
57576
+ "type": "string"
57577
+ },
57578
+ "scope": {
57468
57579
  "type": "string",
57469
57580
  "enum": [
57470
- "sqlite-vec"
57581
+ "session",
57582
+ "project",
57583
+ "team"
57471
57584
  ]
57472
57585
  },
57473
- "enabled": {
57474
- "type": "boolean"
57586
+ "cls": {
57587
+ "type": "string",
57588
+ "enum": [
57589
+ "decision",
57590
+ "constraint",
57591
+ "incident",
57592
+ "pattern",
57593
+ "fact",
57594
+ "risk",
57595
+ "runbook",
57596
+ "architecture",
57597
+ "ownership"
57598
+ ]
57475
57599
  },
57476
- "available": {
57477
- "type": "boolean"
57600
+ "summary": {
57601
+ "type": "string"
57478
57602
  },
57479
- "path": {
57603
+ "detail": {
57480
57604
  "type": "string"
57481
57605
  },
57482
- "dimensions": {
57606
+ "tags": {
57607
+ "type": "array",
57608
+ "items": {
57609
+ "type": "string"
57610
+ }
57611
+ },
57612
+ "provenance": {
57613
+ "type": "array",
57614
+ "items": {
57615
+ "type": "object",
57616
+ "properties": {
57617
+ "kind": {
57618
+ "type": "string",
57619
+ "enum": [
57620
+ "session",
57621
+ "turn",
57622
+ "task",
57623
+ "event",
57624
+ "file"
57625
+ ]
57626
+ },
57627
+ "ref": {
57628
+ "type": "string"
57629
+ },
57630
+ "label": {
57631
+ "type": "string"
57632
+ }
57633
+ },
57634
+ "required": [
57635
+ "kind",
57636
+ "ref"
57637
+ ],
57638
+ "additionalProperties": false
57639
+ }
57640
+ },
57641
+ "reviewState": {
57642
+ "type": "string",
57643
+ "enum": [
57644
+ "fresh",
57645
+ "reviewed",
57646
+ "stale",
57647
+ "contradicted"
57648
+ ]
57649
+ },
57650
+ "confidence": {
57483
57651
  "type": "number"
57484
57652
  },
57485
- "indexedRecords": {
57653
+ "reviewedAt": {
57486
57654
  "type": "number"
57487
57655
  },
57488
- "embeddingProviderId": {
57656
+ "reviewedBy": {
57489
57657
  "type": "string"
57490
57658
  },
57491
- "embeddingProviderLabel": {
57659
+ "staleReason": {
57492
57660
  "type": "string"
57493
57661
  },
57494
- "error": {
57495
- "type": "string"
57662
+ "createdAt": {
57663
+ "type": "number"
57664
+ },
57665
+ "updatedAt": {
57666
+ "type": "number"
57496
57667
  }
57497
57668
  },
57498
57669
  "required": [
57499
- "backend",
57500
- "enabled",
57501
- "available",
57502
- "path",
57503
- "dimensions",
57504
- "indexedRecords",
57505
- "embeddingProviderId",
57506
- "embeddingProviderLabel"
57670
+ "id",
57671
+ "scope",
57672
+ "cls",
57673
+ "summary",
57674
+ "tags",
57675
+ "provenance",
57676
+ "reviewState",
57677
+ "confidence",
57678
+ "createdAt",
57679
+ "updatedAt"
57507
57680
  ],
57508
57681
  "additionalProperties": true
57509
57682
  }
57510
57683
  },
57511
57684
  "required": [
57512
- "vector"
57513
- ],
57514
- "additionalProperties": false
57515
- },
57516
- "invokable": true
57517
- },
57518
- {
57519
- "id": "panels.list",
57520
- "title": "List Panels",
57521
- "description": "Return integration panel descriptors.",
57522
- "category": "panels",
57523
- "source": "builtin",
57524
- "access": "authenticated",
57525
- "transport": [
57526
- "http",
57527
- "ws"
57528
- ],
57529
- "scopes": [
57530
- "read:panels"
57531
- ],
57532
- "http": {
57533
- "method": "GET",
57534
- "path": "/api/panels"
57535
- },
57536
- "inputSchema": {
57537
- "type": "object",
57538
- "properties": {},
57539
- "additionalProperties": false
57540
- },
57541
- "outputSchema": {
57542
- "type": "object",
57543
- "properties": {
57544
- "panels": {
57545
- "type": "array",
57546
- "items": {
57547
- "type": "object",
57548
- "properties": {
57549
- "id": {
57550
- "type": "string"
57551
- },
57552
- "name": {
57553
- "type": "string"
57554
- },
57555
- "category": {
57556
- "type": "string"
57557
- },
57558
- "description": {
57559
- "type": "string"
57560
- },
57561
- "open": {
57562
- "type": "boolean"
57563
- }
57564
- },
57565
- "required": [
57566
- "id",
57567
- "name",
57568
- "category",
57569
- "description",
57570
- "open"
57571
- ],
57572
- "additionalProperties": false
57573
- }
57574
- }
57575
- },
57576
- "required": [
57577
- "panels"
57685
+ "record"
57578
57686
  ],
57579
57687
  "additionalProperties": false
57580
57688
  },
57581
57689
  "invokable": true
57582
57690
  },
57583
57691
  {
57584
- "id": "panels.open",
57585
- "title": "Open Panel",
57586
- "description": "Request that a panel be opened in the current TUI session.",
57587
- "category": "panels",
57692
+ "id": "memory.records.delete",
57693
+ "title": "Delete Memory Record",
57694
+ "description": "Permanently delete a memory record and its links from the canonical store. Delete means delete: the record is removed from the store and the semantic index, not merely flagged. Returns { deleted: false } when no record with that id existed — an honest boolean, never a 200 that pretends a phantom row was removed.",
57695
+ "category": "memory",
57588
57696
  "source": "builtin",
57589
57697
  "access": "authenticated",
57590
57698
  "transport": [
@@ -57592,58 +57700,47 @@
57592
57700
  "ws"
57593
57701
  ],
57594
57702
  "scopes": [
57595
- "write:panels"
57703
+ "write:memory"
57596
57704
  ],
57597
57705
  "http": {
57598
- "method": "POST",
57599
- "path": "/api/panels/open"
57706
+ "method": "DELETE",
57707
+ "path": "/api/memory/records/{id}"
57600
57708
  },
57601
57709
  "inputSchema": {
57602
57710
  "type": "object",
57603
57711
  "properties": {
57604
57712
  "id": {
57605
57713
  "type": "string"
57606
- },
57607
- "pane": {
57608
- "type": "string"
57609
57714
  }
57610
57715
  },
57611
57716
  "required": [
57612
57717
  "id"
57613
57718
  ],
57614
- "additionalProperties": true
57719
+ "additionalProperties": false
57615
57720
  },
57616
57721
  "outputSchema": {
57617
57722
  "type": "object",
57618
57723
  "properties": {
57619
- "opened": {
57620
- "type": "boolean"
57621
- },
57622
57724
  "id": {
57623
57725
  "type": "string"
57624
57726
  },
57625
- "pane": {
57626
- "type": "string",
57627
- "enum": [
57628
- "top",
57629
- "bottom"
57630
- ]
57727
+ "deleted": {
57728
+ "type": "boolean"
57631
57729
  }
57632
57730
  },
57633
57731
  "required": [
57634
- "opened",
57635
57732
  "id",
57636
- "pane"
57733
+ "deleted"
57637
57734
  ],
57638
57735
  "additionalProperties": false
57639
57736
  },
57640
57737
  "invokable": true
57641
57738
  },
57642
57739
  {
57643
- "id": "providers.get",
57644
- "title": "Provider Snapshot",
57645
- "description": "Return runtime metadata for a single provider.",
57646
- "category": "providers",
57740
+ "id": "memory.records.export",
57741
+ "title": "Export Memory Bundle",
57742
+ "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.",
57743
+ "category": "memory",
57647
57744
  "source": "builtin",
57648
57745
  "access": "authenticated",
57649
57746
  "transport": [
@@ -57651,46 +57748,2283 @@
57651
57748
  "ws"
57652
57749
  ],
57653
57750
  "scopes": [
57654
- "read:providers"
57751
+ "read:memory"
57655
57752
  ],
57656
57753
  "http": {
57657
- "method": "GET",
57658
- "path": "/api/providers/{providerId}"
57754
+ "method": "POST",
57755
+ "path": "/api/memory/records/export"
57659
57756
  },
57660
57757
  "inputSchema": {
57661
57758
  "type": "object",
57662
57759
  "properties": {
57663
- "providerId": {
57664
- "type": "string"
57665
- }
57666
- },
57667
- "required": [
57668
- "providerId"
57669
- ],
57670
- "additionalProperties": false
57671
- },
57672
- "outputSchema": {
57673
- "type": "object",
57674
- "properties": {
57675
- "providerId": {
57760
+ "scope": {
57761
+ "type": "string",
57762
+ "enum": [
57763
+ "session",
57764
+ "project",
57765
+ "team"
57766
+ ]
57767
+ },
57768
+ "cls": {
57769
+ "type": "string",
57770
+ "enum": [
57771
+ "decision",
57772
+ "constraint",
57773
+ "incident",
57774
+ "pattern",
57775
+ "fact",
57776
+ "risk",
57777
+ "runbook",
57778
+ "architecture",
57779
+ "ownership"
57780
+ ]
57781
+ },
57782
+ "tags": {
57783
+ "type": "array",
57784
+ "items": {
57785
+ "type": "string"
57786
+ }
57787
+ },
57788
+ "query": {
57676
57789
  "type": "string"
57677
57790
  },
57678
- "active": {
57791
+ "semantic": {
57679
57792
  "type": "boolean"
57680
57793
  },
57681
- "modelCount": {
57794
+ "since": {
57682
57795
  "type": "number"
57683
57796
  },
57684
- "runtime": {
57685
- "type": "object",
57686
- "properties": {
57687
- "auth": {
57688
- "type": "object",
57689
- "properties": {
57690
- "mode": {
57691
- "type": "string",
57692
- "enum": [
57693
- "api-key",
57797
+ "reviewState": {
57798
+ "type": "array",
57799
+ "items": {
57800
+ "type": "string",
57801
+ "enum": [
57802
+ "fresh",
57803
+ "reviewed",
57804
+ "stale",
57805
+ "contradicted"
57806
+ ]
57807
+ }
57808
+ },
57809
+ "minConfidence": {
57810
+ "type": "number"
57811
+ },
57812
+ "provenanceKinds": {
57813
+ "type": "array",
57814
+ "items": {
57815
+ "type": "string",
57816
+ "enum": [
57817
+ "session",
57818
+ "turn",
57819
+ "task",
57820
+ "event",
57821
+ "file"
57822
+ ]
57823
+ }
57824
+ },
57825
+ "staleOnly": {
57826
+ "type": "boolean"
57827
+ },
57828
+ "limit": {
57829
+ "type": "number"
57830
+ }
57831
+ },
57832
+ "additionalProperties": true
57833
+ },
57834
+ "outputSchema": {
57835
+ "type": "object",
57836
+ "properties": {
57837
+ "bundle": {
57838
+ "type": "object",
57839
+ "properties": {
57840
+ "schemaVersion": {
57841
+ "type": "string",
57842
+ "enum": [
57843
+ "v1"
57844
+ ]
57845
+ },
57846
+ "exportedAt": {
57847
+ "type": "number"
57848
+ },
57849
+ "scope": {
57850
+ "type": "string",
57851
+ "enum": [
57852
+ "session",
57853
+ "project",
57854
+ "team",
57855
+ "all"
57856
+ ]
57857
+ },
57858
+ "recordCount": {
57859
+ "type": "number"
57860
+ },
57861
+ "linkCount": {
57862
+ "type": "number"
57863
+ },
57864
+ "records": {
57865
+ "type": "array",
57866
+ "items": {
57867
+ "type": "object",
57868
+ "properties": {
57869
+ "id": {
57870
+ "type": "string"
57871
+ },
57872
+ "scope": {
57873
+ "type": "string",
57874
+ "enum": [
57875
+ "session",
57876
+ "project",
57877
+ "team"
57878
+ ]
57879
+ },
57880
+ "cls": {
57881
+ "type": "string",
57882
+ "enum": [
57883
+ "decision",
57884
+ "constraint",
57885
+ "incident",
57886
+ "pattern",
57887
+ "fact",
57888
+ "risk",
57889
+ "runbook",
57890
+ "architecture",
57891
+ "ownership"
57892
+ ]
57893
+ },
57894
+ "summary": {
57895
+ "type": "string"
57896
+ },
57897
+ "detail": {
57898
+ "type": "string"
57899
+ },
57900
+ "tags": {
57901
+ "type": "array",
57902
+ "items": {
57903
+ "type": "string"
57904
+ }
57905
+ },
57906
+ "provenance": {
57907
+ "type": "array",
57908
+ "items": {
57909
+ "type": "object",
57910
+ "properties": {
57911
+ "kind": {
57912
+ "type": "string",
57913
+ "enum": [
57914
+ "session",
57915
+ "turn",
57916
+ "task",
57917
+ "event",
57918
+ "file"
57919
+ ]
57920
+ },
57921
+ "ref": {
57922
+ "type": "string"
57923
+ },
57924
+ "label": {
57925
+ "type": "string"
57926
+ }
57927
+ },
57928
+ "required": [
57929
+ "kind",
57930
+ "ref"
57931
+ ],
57932
+ "additionalProperties": false
57933
+ }
57934
+ },
57935
+ "reviewState": {
57936
+ "type": "string",
57937
+ "enum": [
57938
+ "fresh",
57939
+ "reviewed",
57940
+ "stale",
57941
+ "contradicted"
57942
+ ]
57943
+ },
57944
+ "confidence": {
57945
+ "type": "number"
57946
+ },
57947
+ "reviewedAt": {
57948
+ "type": "number"
57949
+ },
57950
+ "reviewedBy": {
57951
+ "type": "string"
57952
+ },
57953
+ "staleReason": {
57954
+ "type": "string"
57955
+ },
57956
+ "createdAt": {
57957
+ "type": "number"
57958
+ },
57959
+ "updatedAt": {
57960
+ "type": "number"
57961
+ }
57962
+ },
57963
+ "required": [
57964
+ "id",
57965
+ "scope",
57966
+ "cls",
57967
+ "summary",
57968
+ "tags",
57969
+ "provenance",
57970
+ "reviewState",
57971
+ "confidence",
57972
+ "createdAt",
57973
+ "updatedAt"
57974
+ ],
57975
+ "additionalProperties": true
57976
+ }
57977
+ },
57978
+ "links": {
57979
+ "type": "array",
57980
+ "items": {
57981
+ "type": "object",
57982
+ "properties": {
57983
+ "fromId": {
57984
+ "type": "string"
57985
+ },
57986
+ "toId": {
57987
+ "type": "string"
57988
+ },
57989
+ "relation": {
57990
+ "type": "string"
57991
+ },
57992
+ "createdAt": {
57993
+ "type": "number"
57994
+ }
57995
+ },
57996
+ "required": [
57997
+ "fromId",
57998
+ "toId",
57999
+ "relation",
58000
+ "createdAt"
58001
+ ],
58002
+ "additionalProperties": false
58003
+ }
58004
+ }
58005
+ },
58006
+ "required": [
58007
+ "schemaVersion",
58008
+ "exportedAt",
58009
+ "scope",
58010
+ "recordCount",
58011
+ "linkCount",
58012
+ "records",
58013
+ "links"
58014
+ ],
58015
+ "additionalProperties": false
58016
+ }
58017
+ },
58018
+ "required": [
58019
+ "bundle"
58020
+ ],
58021
+ "additionalProperties": false
58022
+ },
58023
+ "invokable": true
58024
+ },
58025
+ {
58026
+ "id": "memory.records.get",
58027
+ "title": "Get Memory Record",
58028
+ "description": "Return a single memory record by id from the canonical store, or 404 when no record with that id exists.",
58029
+ "category": "memory",
58030
+ "source": "builtin",
58031
+ "access": "authenticated",
58032
+ "transport": [
58033
+ "http",
58034
+ "ws"
58035
+ ],
58036
+ "scopes": [
58037
+ "read:memory"
58038
+ ],
58039
+ "http": {
58040
+ "method": "GET",
58041
+ "path": "/api/memory/records/{id}"
58042
+ },
58043
+ "inputSchema": {
58044
+ "type": "object",
58045
+ "properties": {
58046
+ "id": {
58047
+ "type": "string"
58048
+ }
58049
+ },
58050
+ "required": [
58051
+ "id"
58052
+ ],
58053
+ "additionalProperties": false
58054
+ },
58055
+ "outputSchema": {
58056
+ "type": "object",
58057
+ "properties": {
58058
+ "record": {
58059
+ "type": "object",
58060
+ "properties": {
58061
+ "id": {
58062
+ "type": "string"
58063
+ },
58064
+ "scope": {
58065
+ "type": "string",
58066
+ "enum": [
58067
+ "session",
58068
+ "project",
58069
+ "team"
58070
+ ]
58071
+ },
58072
+ "cls": {
58073
+ "type": "string",
58074
+ "enum": [
58075
+ "decision",
58076
+ "constraint",
58077
+ "incident",
58078
+ "pattern",
58079
+ "fact",
58080
+ "risk",
58081
+ "runbook",
58082
+ "architecture",
58083
+ "ownership"
58084
+ ]
58085
+ },
58086
+ "summary": {
58087
+ "type": "string"
58088
+ },
58089
+ "detail": {
58090
+ "type": "string"
58091
+ },
58092
+ "tags": {
58093
+ "type": "array",
58094
+ "items": {
58095
+ "type": "string"
58096
+ }
58097
+ },
58098
+ "provenance": {
58099
+ "type": "array",
58100
+ "items": {
58101
+ "type": "object",
58102
+ "properties": {
58103
+ "kind": {
58104
+ "type": "string",
58105
+ "enum": [
58106
+ "session",
58107
+ "turn",
58108
+ "task",
58109
+ "event",
58110
+ "file"
58111
+ ]
58112
+ },
58113
+ "ref": {
58114
+ "type": "string"
58115
+ },
58116
+ "label": {
58117
+ "type": "string"
58118
+ }
58119
+ },
58120
+ "required": [
58121
+ "kind",
58122
+ "ref"
58123
+ ],
58124
+ "additionalProperties": false
58125
+ }
58126
+ },
58127
+ "reviewState": {
58128
+ "type": "string",
58129
+ "enum": [
58130
+ "fresh",
58131
+ "reviewed",
58132
+ "stale",
58133
+ "contradicted"
58134
+ ]
58135
+ },
58136
+ "confidence": {
58137
+ "type": "number"
58138
+ },
58139
+ "reviewedAt": {
58140
+ "type": "number"
58141
+ },
58142
+ "reviewedBy": {
58143
+ "type": "string"
58144
+ },
58145
+ "staleReason": {
58146
+ "type": "string"
58147
+ },
58148
+ "createdAt": {
58149
+ "type": "number"
58150
+ },
58151
+ "updatedAt": {
58152
+ "type": "number"
58153
+ }
58154
+ },
58155
+ "required": [
58156
+ "id",
58157
+ "scope",
58158
+ "cls",
58159
+ "summary",
58160
+ "tags",
58161
+ "provenance",
58162
+ "reviewState",
58163
+ "confidence",
58164
+ "createdAt",
58165
+ "updatedAt"
58166
+ ],
58167
+ "additionalProperties": true
58168
+ }
58169
+ },
58170
+ "required": [
58171
+ "record"
58172
+ ],
58173
+ "additionalProperties": false
58174
+ },
58175
+ "invokable": true
58176
+ },
58177
+ {
58178
+ "id": "memory.records.import",
58179
+ "title": "Import Memory Bundle",
58180
+ "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.",
58181
+ "category": "memory",
58182
+ "source": "builtin",
58183
+ "access": "authenticated",
58184
+ "transport": [
58185
+ "http",
58186
+ "ws"
58187
+ ],
58188
+ "scopes": [
58189
+ "write:memory"
58190
+ ],
58191
+ "http": {
58192
+ "method": "POST",
58193
+ "path": "/api/memory/records/import"
58194
+ },
58195
+ "inputSchema": {
58196
+ "type": "object",
58197
+ "properties": {
58198
+ "bundle": {
58199
+ "type": "object",
58200
+ "properties": {
58201
+ "schemaVersion": {
58202
+ "type": "string",
58203
+ "enum": [
58204
+ "v1"
58205
+ ]
58206
+ },
58207
+ "exportedAt": {
58208
+ "type": "number"
58209
+ },
58210
+ "scope": {
58211
+ "type": "string",
58212
+ "enum": [
58213
+ "session",
58214
+ "project",
58215
+ "team",
58216
+ "all"
58217
+ ]
58218
+ },
58219
+ "recordCount": {
58220
+ "type": "number"
58221
+ },
58222
+ "linkCount": {
58223
+ "type": "number"
58224
+ },
58225
+ "records": {
58226
+ "type": "array",
58227
+ "items": {
58228
+ "type": "object",
58229
+ "properties": {
58230
+ "id": {
58231
+ "type": "string"
58232
+ },
58233
+ "scope": {
58234
+ "type": "string",
58235
+ "enum": [
58236
+ "session",
58237
+ "project",
58238
+ "team"
58239
+ ]
58240
+ },
58241
+ "cls": {
58242
+ "type": "string",
58243
+ "enum": [
58244
+ "decision",
58245
+ "constraint",
58246
+ "incident",
58247
+ "pattern",
58248
+ "fact",
58249
+ "risk",
58250
+ "runbook",
58251
+ "architecture",
58252
+ "ownership"
58253
+ ]
58254
+ },
58255
+ "summary": {
58256
+ "type": "string"
58257
+ },
58258
+ "detail": {
58259
+ "type": "string"
58260
+ },
58261
+ "tags": {
58262
+ "type": "array",
58263
+ "items": {
58264
+ "type": "string"
58265
+ }
58266
+ },
58267
+ "provenance": {
58268
+ "type": "array",
58269
+ "items": {
58270
+ "type": "object",
58271
+ "properties": {
58272
+ "kind": {
58273
+ "type": "string",
58274
+ "enum": [
58275
+ "session",
58276
+ "turn",
58277
+ "task",
58278
+ "event",
58279
+ "file"
58280
+ ]
58281
+ },
58282
+ "ref": {
58283
+ "type": "string"
58284
+ },
58285
+ "label": {
58286
+ "type": "string"
58287
+ }
58288
+ },
58289
+ "required": [
58290
+ "kind",
58291
+ "ref"
58292
+ ],
58293
+ "additionalProperties": false
58294
+ }
58295
+ },
58296
+ "reviewState": {
58297
+ "type": "string",
58298
+ "enum": [
58299
+ "fresh",
58300
+ "reviewed",
58301
+ "stale",
58302
+ "contradicted"
58303
+ ]
58304
+ },
58305
+ "confidence": {
58306
+ "type": "number"
58307
+ },
58308
+ "reviewedAt": {
58309
+ "type": "number"
58310
+ },
58311
+ "reviewedBy": {
58312
+ "type": "string"
58313
+ },
58314
+ "staleReason": {
58315
+ "type": "string"
58316
+ },
58317
+ "createdAt": {
58318
+ "type": "number"
58319
+ },
58320
+ "updatedAt": {
58321
+ "type": "number"
58322
+ }
58323
+ },
58324
+ "required": [
58325
+ "id",
58326
+ "scope",
58327
+ "cls",
58328
+ "summary",
58329
+ "tags",
58330
+ "provenance",
58331
+ "reviewState",
58332
+ "confidence",
58333
+ "createdAt",
58334
+ "updatedAt"
58335
+ ],
58336
+ "additionalProperties": true
58337
+ }
58338
+ },
58339
+ "links": {
58340
+ "type": "array",
58341
+ "items": {
58342
+ "type": "object",
58343
+ "properties": {
58344
+ "fromId": {
58345
+ "type": "string"
58346
+ },
58347
+ "toId": {
58348
+ "type": "string"
58349
+ },
58350
+ "relation": {
58351
+ "type": "string"
58352
+ },
58353
+ "createdAt": {
58354
+ "type": "number"
58355
+ }
58356
+ },
58357
+ "required": [
58358
+ "fromId",
58359
+ "toId",
58360
+ "relation",
58361
+ "createdAt"
58362
+ ],
58363
+ "additionalProperties": false
58364
+ }
58365
+ }
58366
+ },
58367
+ "required": [
58368
+ "schemaVersion",
58369
+ "exportedAt",
58370
+ "scope",
58371
+ "recordCount",
58372
+ "linkCount",
58373
+ "records",
58374
+ "links"
58375
+ ],
58376
+ "additionalProperties": false
58377
+ }
58378
+ },
58379
+ "required": [
58380
+ "bundle"
58381
+ ],
58382
+ "additionalProperties": true
58383
+ },
58384
+ "outputSchema": {
58385
+ "type": "object",
58386
+ "properties": {
58387
+ "result": {
58388
+ "type": "object",
58389
+ "properties": {
58390
+ "importedRecords": {
58391
+ "type": "number"
58392
+ },
58393
+ "skippedRecords": {
58394
+ "type": "number"
58395
+ },
58396
+ "importedLinks": {
58397
+ "type": "number"
58398
+ }
58399
+ },
58400
+ "required": [
58401
+ "importedRecords",
58402
+ "skippedRecords",
58403
+ "importedLinks"
58404
+ ],
58405
+ "additionalProperties": false
58406
+ }
58407
+ },
58408
+ "required": [
58409
+ "result"
58410
+ ],
58411
+ "additionalProperties": false
58412
+ },
58413
+ "invokable": true
58414
+ },
58415
+ {
58416
+ "id": "memory.records.links.add",
58417
+ "title": "Link Memory Records",
58418
+ "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.",
58419
+ "category": "memory",
58420
+ "source": "builtin",
58421
+ "access": "authenticated",
58422
+ "transport": [
58423
+ "http",
58424
+ "ws"
58425
+ ],
58426
+ "scopes": [
58427
+ "write:memory"
58428
+ ],
58429
+ "http": {
58430
+ "method": "POST",
58431
+ "path": "/api/memory/records/{id}/links"
58432
+ },
58433
+ "inputSchema": {
58434
+ "type": "object",
58435
+ "properties": {
58436
+ "id": {
58437
+ "type": "string"
58438
+ },
58439
+ "toId": {
58440
+ "type": "string"
58441
+ },
58442
+ "relation": {
58443
+ "type": "string"
58444
+ }
58445
+ },
58446
+ "required": [
58447
+ "id",
58448
+ "toId",
58449
+ "relation"
58450
+ ],
58451
+ "additionalProperties": true
58452
+ },
58453
+ "outputSchema": {
58454
+ "type": "object",
58455
+ "properties": {
58456
+ "link": {
58457
+ "type": "object",
58458
+ "properties": {
58459
+ "fromId": {
58460
+ "type": "string"
58461
+ },
58462
+ "toId": {
58463
+ "type": "string"
58464
+ },
58465
+ "relation": {
58466
+ "type": "string"
58467
+ },
58468
+ "createdAt": {
58469
+ "type": "number"
58470
+ }
58471
+ },
58472
+ "required": [
58473
+ "fromId",
58474
+ "toId",
58475
+ "relation",
58476
+ "createdAt"
58477
+ ],
58478
+ "additionalProperties": false
58479
+ }
58480
+ },
58481
+ "required": [
58482
+ "link"
58483
+ ],
58484
+ "additionalProperties": false
58485
+ },
58486
+ "invokable": true
58487
+ },
58488
+ {
58489
+ "id": "memory.records.links.list",
58490
+ "title": "List Memory Record Links",
58491
+ "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).",
58492
+ "category": "memory",
58493
+ "source": "builtin",
58494
+ "access": "authenticated",
58495
+ "transport": [
58496
+ "http",
58497
+ "ws"
58498
+ ],
58499
+ "scopes": [
58500
+ "read:memory"
58501
+ ],
58502
+ "http": {
58503
+ "method": "GET",
58504
+ "path": "/api/memory/records/{id}/links"
58505
+ },
58506
+ "inputSchema": {
58507
+ "type": "object",
58508
+ "properties": {
58509
+ "id": {
58510
+ "type": "string"
58511
+ }
58512
+ },
58513
+ "required": [
58514
+ "id"
58515
+ ],
58516
+ "additionalProperties": false
58517
+ },
58518
+ "outputSchema": {
58519
+ "type": "object",
58520
+ "properties": {
58521
+ "links": {
58522
+ "type": "array",
58523
+ "items": {
58524
+ "type": "object",
58525
+ "properties": {
58526
+ "fromId": {
58527
+ "type": "string"
58528
+ },
58529
+ "toId": {
58530
+ "type": "string"
58531
+ },
58532
+ "relation": {
58533
+ "type": "string"
58534
+ },
58535
+ "createdAt": {
58536
+ "type": "number"
58537
+ }
58538
+ },
58539
+ "required": [
58540
+ "fromId",
58541
+ "toId",
58542
+ "relation",
58543
+ "createdAt"
58544
+ ],
58545
+ "additionalProperties": false
58546
+ }
58547
+ }
58548
+ },
58549
+ "required": [
58550
+ "links"
58551
+ ],
58552
+ "additionalProperties": false
58553
+ },
58554
+ "invokable": true
58555
+ },
58556
+ {
58557
+ "id": "memory.records.list",
58558
+ "title": "List Memory Records",
58559
+ "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.",
58560
+ "category": "memory",
58561
+ "source": "builtin",
58562
+ "access": "authenticated",
58563
+ "transport": [
58564
+ "http",
58565
+ "ws"
58566
+ ],
58567
+ "scopes": [
58568
+ "read:memory"
58569
+ ],
58570
+ "http": {
58571
+ "method": "POST",
58572
+ "path": "/api/memory/records/list"
58573
+ },
58574
+ "inputSchema": {
58575
+ "type": "object",
58576
+ "properties": {
58577
+ "scope": {
58578
+ "type": "string",
58579
+ "enum": [
58580
+ "session",
58581
+ "project",
58582
+ "team"
58583
+ ]
58584
+ },
58585
+ "cls": {
58586
+ "type": "string",
58587
+ "enum": [
58588
+ "decision",
58589
+ "constraint",
58590
+ "incident",
58591
+ "pattern",
58592
+ "fact",
58593
+ "risk",
58594
+ "runbook",
58595
+ "architecture",
58596
+ "ownership"
58597
+ ]
58598
+ },
58599
+ "tags": {
58600
+ "type": "array",
58601
+ "items": {
58602
+ "type": "string"
58603
+ }
58604
+ },
58605
+ "query": {
58606
+ "type": "string"
58607
+ },
58608
+ "semantic": {
58609
+ "type": "boolean"
58610
+ },
58611
+ "since": {
58612
+ "type": "number"
58613
+ },
58614
+ "reviewState": {
58615
+ "type": "array",
58616
+ "items": {
58617
+ "type": "string",
58618
+ "enum": [
58619
+ "fresh",
58620
+ "reviewed",
58621
+ "stale",
58622
+ "contradicted"
58623
+ ]
58624
+ }
58625
+ },
58626
+ "minConfidence": {
58627
+ "type": "number"
58628
+ },
58629
+ "provenanceKinds": {
58630
+ "type": "array",
58631
+ "items": {
58632
+ "type": "string",
58633
+ "enum": [
58634
+ "session",
58635
+ "turn",
58636
+ "task",
58637
+ "event",
58638
+ "file"
58639
+ ]
58640
+ }
58641
+ },
58642
+ "staleOnly": {
58643
+ "type": "boolean"
58644
+ },
58645
+ "limit": {
58646
+ "type": "number"
58647
+ }
58648
+ },
58649
+ "additionalProperties": true
58650
+ },
58651
+ "outputSchema": {
58652
+ "type": "object",
58653
+ "properties": {
58654
+ "records": {
58655
+ "type": "array",
58656
+ "items": {
58657
+ "type": "object",
58658
+ "properties": {
58659
+ "id": {
58660
+ "type": "string"
58661
+ },
58662
+ "scope": {
58663
+ "type": "string",
58664
+ "enum": [
58665
+ "session",
58666
+ "project",
58667
+ "team"
58668
+ ]
58669
+ },
58670
+ "cls": {
58671
+ "type": "string",
58672
+ "enum": [
58673
+ "decision",
58674
+ "constraint",
58675
+ "incident",
58676
+ "pattern",
58677
+ "fact",
58678
+ "risk",
58679
+ "runbook",
58680
+ "architecture",
58681
+ "ownership"
58682
+ ]
58683
+ },
58684
+ "summary": {
58685
+ "type": "string"
58686
+ },
58687
+ "detail": {
58688
+ "type": "string"
58689
+ },
58690
+ "tags": {
58691
+ "type": "array",
58692
+ "items": {
58693
+ "type": "string"
58694
+ }
58695
+ },
58696
+ "provenance": {
58697
+ "type": "array",
58698
+ "items": {
58699
+ "type": "object",
58700
+ "properties": {
58701
+ "kind": {
58702
+ "type": "string",
58703
+ "enum": [
58704
+ "session",
58705
+ "turn",
58706
+ "task",
58707
+ "event",
58708
+ "file"
58709
+ ]
58710
+ },
58711
+ "ref": {
58712
+ "type": "string"
58713
+ },
58714
+ "label": {
58715
+ "type": "string"
58716
+ }
58717
+ },
58718
+ "required": [
58719
+ "kind",
58720
+ "ref"
58721
+ ],
58722
+ "additionalProperties": false
58723
+ }
58724
+ },
58725
+ "reviewState": {
58726
+ "type": "string",
58727
+ "enum": [
58728
+ "fresh",
58729
+ "reviewed",
58730
+ "stale",
58731
+ "contradicted"
58732
+ ]
58733
+ },
58734
+ "confidence": {
58735
+ "type": "number"
58736
+ },
58737
+ "reviewedAt": {
58738
+ "type": "number"
58739
+ },
58740
+ "reviewedBy": {
58741
+ "type": "string"
58742
+ },
58743
+ "staleReason": {
58744
+ "type": "string"
58745
+ },
58746
+ "createdAt": {
58747
+ "type": "number"
58748
+ },
58749
+ "updatedAt": {
58750
+ "type": "number"
58751
+ }
58752
+ },
58753
+ "required": [
58754
+ "id",
58755
+ "scope",
58756
+ "cls",
58757
+ "summary",
58758
+ "tags",
58759
+ "provenance",
58760
+ "reviewState",
58761
+ "confidence",
58762
+ "createdAt",
58763
+ "updatedAt"
58764
+ ],
58765
+ "additionalProperties": true
58766
+ }
58767
+ }
58768
+ },
58769
+ "required": [
58770
+ "records"
58771
+ ],
58772
+ "additionalProperties": false
58773
+ },
58774
+ "invokable": true
58775
+ },
58776
+ {
58777
+ "id": "memory.records.search",
58778
+ "title": "Search Memory Records",
58779
+ "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.",
58780
+ "category": "memory",
58781
+ "source": "builtin",
58782
+ "access": "authenticated",
58783
+ "transport": [
58784
+ "http",
58785
+ "ws"
58786
+ ],
58787
+ "scopes": [
58788
+ "read:memory"
58789
+ ],
58790
+ "http": {
58791
+ "method": "POST",
58792
+ "path": "/api/memory/records/search"
58793
+ },
58794
+ "inputSchema": {
58795
+ "type": "object",
58796
+ "properties": {
58797
+ "scope": {
58798
+ "type": "string",
58799
+ "enum": [
58800
+ "session",
58801
+ "project",
58802
+ "team"
58803
+ ]
58804
+ },
58805
+ "cls": {
58806
+ "type": "string",
58807
+ "enum": [
58808
+ "decision",
58809
+ "constraint",
58810
+ "incident",
58811
+ "pattern",
58812
+ "fact",
58813
+ "risk",
58814
+ "runbook",
58815
+ "architecture",
58816
+ "ownership"
58817
+ ]
58818
+ },
58819
+ "tags": {
58820
+ "type": "array",
58821
+ "items": {
58822
+ "type": "string"
58823
+ }
58824
+ },
58825
+ "query": {
58826
+ "type": "string"
58827
+ },
58828
+ "semantic": {
58829
+ "type": "boolean"
58830
+ },
58831
+ "since": {
58832
+ "type": "number"
58833
+ },
58834
+ "reviewState": {
58835
+ "type": "array",
58836
+ "items": {
58837
+ "type": "string",
58838
+ "enum": [
58839
+ "fresh",
58840
+ "reviewed",
58841
+ "stale",
58842
+ "contradicted"
58843
+ ]
58844
+ }
58845
+ },
58846
+ "minConfidence": {
58847
+ "type": "number"
58848
+ },
58849
+ "provenanceKinds": {
58850
+ "type": "array",
58851
+ "items": {
58852
+ "type": "string",
58853
+ "enum": [
58854
+ "session",
58855
+ "turn",
58856
+ "task",
58857
+ "event",
58858
+ "file"
58859
+ ]
58860
+ }
58861
+ },
58862
+ "staleOnly": {
58863
+ "type": "boolean"
58864
+ },
58865
+ "limit": {
58866
+ "type": "number"
58867
+ },
58868
+ "recall": {
58869
+ "type": "boolean"
58870
+ }
58871
+ },
58872
+ "additionalProperties": true
58873
+ },
58874
+ "outputSchema": {
58875
+ "type": "object",
58876
+ "properties": {
58877
+ "records": {
58878
+ "type": "array",
58879
+ "items": {
58880
+ "type": "object",
58881
+ "properties": {
58882
+ "id": {
58883
+ "type": "string"
58884
+ },
58885
+ "scope": {
58886
+ "type": "string",
58887
+ "enum": [
58888
+ "session",
58889
+ "project",
58890
+ "team"
58891
+ ]
58892
+ },
58893
+ "cls": {
58894
+ "type": "string",
58895
+ "enum": [
58896
+ "decision",
58897
+ "constraint",
58898
+ "incident",
58899
+ "pattern",
58900
+ "fact",
58901
+ "risk",
58902
+ "runbook",
58903
+ "architecture",
58904
+ "ownership"
58905
+ ]
58906
+ },
58907
+ "summary": {
58908
+ "type": "string"
58909
+ },
58910
+ "detail": {
58911
+ "type": "string"
58912
+ },
58913
+ "tags": {
58914
+ "type": "array",
58915
+ "items": {
58916
+ "type": "string"
58917
+ }
58918
+ },
58919
+ "provenance": {
58920
+ "type": "array",
58921
+ "items": {
58922
+ "type": "object",
58923
+ "properties": {
58924
+ "kind": {
58925
+ "type": "string",
58926
+ "enum": [
58927
+ "session",
58928
+ "turn",
58929
+ "task",
58930
+ "event",
58931
+ "file"
58932
+ ]
58933
+ },
58934
+ "ref": {
58935
+ "type": "string"
58936
+ },
58937
+ "label": {
58938
+ "type": "string"
58939
+ }
58940
+ },
58941
+ "required": [
58942
+ "kind",
58943
+ "ref"
58944
+ ],
58945
+ "additionalProperties": false
58946
+ }
58947
+ },
58948
+ "reviewState": {
58949
+ "type": "string",
58950
+ "enum": [
58951
+ "fresh",
58952
+ "reviewed",
58953
+ "stale",
58954
+ "contradicted"
58955
+ ]
58956
+ },
58957
+ "confidence": {
58958
+ "type": "number"
58959
+ },
58960
+ "reviewedAt": {
58961
+ "type": "number"
58962
+ },
58963
+ "reviewedBy": {
58964
+ "type": "string"
58965
+ },
58966
+ "staleReason": {
58967
+ "type": "string"
58968
+ },
58969
+ "createdAt": {
58970
+ "type": "number"
58971
+ },
58972
+ "updatedAt": {
58973
+ "type": "number"
58974
+ }
58975
+ },
58976
+ "required": [
58977
+ "id",
58978
+ "scope",
58979
+ "cls",
58980
+ "summary",
58981
+ "tags",
58982
+ "provenance",
58983
+ "reviewState",
58984
+ "confidence",
58985
+ "createdAt",
58986
+ "updatedAt"
58987
+ ],
58988
+ "additionalProperties": true
58989
+ }
58990
+ },
58991
+ "mode": {
58992
+ "type": "string",
58993
+ "enum": [
58994
+ "literal",
58995
+ "semantic"
58996
+ ]
58997
+ },
58998
+ "requestedSemantic": {
58999
+ "type": "boolean"
59000
+ },
59001
+ "indexUnavailableReason": {
59002
+ "anyOf": [
59003
+ {
59004
+ "type": "string"
59005
+ },
59006
+ {
59007
+ "type": "null"
59008
+ }
59009
+ ]
59010
+ },
59011
+ "caveat": {
59012
+ "anyOf": [
59013
+ {
59014
+ "type": "string"
59015
+ },
59016
+ {
59017
+ "type": "null"
59018
+ }
59019
+ ]
59020
+ },
59021
+ "recallFiltered": {
59022
+ "type": "boolean"
59023
+ },
59024
+ "excludedFlaggedCount": {
59025
+ "type": "number"
59026
+ },
59027
+ "excludedBelowFloorCount": {
59028
+ "type": "number"
59029
+ },
59030
+ "totalBeforeRecallFilter": {
59031
+ "type": "number"
59032
+ }
59033
+ },
59034
+ "required": [
59035
+ "records",
59036
+ "mode",
59037
+ "requestedSemantic",
59038
+ "indexUnavailableReason",
59039
+ "caveat",
59040
+ "recallFiltered",
59041
+ "excludedFlaggedCount",
59042
+ "excludedBelowFloorCount",
59043
+ "totalBeforeRecallFilter"
59044
+ ],
59045
+ "additionalProperties": false
59046
+ },
59047
+ "invokable": true
59048
+ },
59049
+ {
59050
+ "id": "memory.records.search-semantic",
59051
+ "title": "Semantic Search Memory Records",
59052
+ "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.",
59053
+ "category": "memory",
59054
+ "source": "builtin",
59055
+ "access": "authenticated",
59056
+ "transport": [
59057
+ "http",
59058
+ "ws"
59059
+ ],
59060
+ "scopes": [
59061
+ "read:memory"
59062
+ ],
59063
+ "http": {
59064
+ "method": "POST",
59065
+ "path": "/api/memory/records/search-semantic"
59066
+ },
59067
+ "inputSchema": {
59068
+ "type": "object",
59069
+ "properties": {
59070
+ "scope": {
59071
+ "type": "string",
59072
+ "enum": [
59073
+ "session",
59074
+ "project",
59075
+ "team"
59076
+ ]
59077
+ },
59078
+ "cls": {
59079
+ "type": "string",
59080
+ "enum": [
59081
+ "decision",
59082
+ "constraint",
59083
+ "incident",
59084
+ "pattern",
59085
+ "fact",
59086
+ "risk",
59087
+ "runbook",
59088
+ "architecture",
59089
+ "ownership"
59090
+ ]
59091
+ },
59092
+ "tags": {
59093
+ "type": "array",
59094
+ "items": {
59095
+ "type": "string"
59096
+ }
59097
+ },
59098
+ "query": {
59099
+ "type": "string"
59100
+ },
59101
+ "semantic": {
59102
+ "type": "boolean"
59103
+ },
59104
+ "since": {
59105
+ "type": "number"
59106
+ },
59107
+ "reviewState": {
59108
+ "type": "array",
59109
+ "items": {
59110
+ "type": "string",
59111
+ "enum": [
59112
+ "fresh",
59113
+ "reviewed",
59114
+ "stale",
59115
+ "contradicted"
59116
+ ]
59117
+ }
59118
+ },
59119
+ "minConfidence": {
59120
+ "type": "number"
59121
+ },
59122
+ "provenanceKinds": {
59123
+ "type": "array",
59124
+ "items": {
59125
+ "type": "string",
59126
+ "enum": [
59127
+ "session",
59128
+ "turn",
59129
+ "task",
59130
+ "event",
59131
+ "file"
59132
+ ]
59133
+ }
59134
+ },
59135
+ "staleOnly": {
59136
+ "type": "boolean"
59137
+ },
59138
+ "limit": {
59139
+ "type": "number"
59140
+ }
59141
+ },
59142
+ "additionalProperties": true
59143
+ },
59144
+ "outputSchema": {
59145
+ "type": "object",
59146
+ "properties": {
59147
+ "results": {
59148
+ "type": "array",
59149
+ "items": {
59150
+ "type": "object",
59151
+ "properties": {
59152
+ "record": {
59153
+ "type": "object",
59154
+ "properties": {
59155
+ "id": {
59156
+ "type": "string"
59157
+ },
59158
+ "scope": {
59159
+ "type": "string",
59160
+ "enum": [
59161
+ "session",
59162
+ "project",
59163
+ "team"
59164
+ ]
59165
+ },
59166
+ "cls": {
59167
+ "type": "string",
59168
+ "enum": [
59169
+ "decision",
59170
+ "constraint",
59171
+ "incident",
59172
+ "pattern",
59173
+ "fact",
59174
+ "risk",
59175
+ "runbook",
59176
+ "architecture",
59177
+ "ownership"
59178
+ ]
59179
+ },
59180
+ "summary": {
59181
+ "type": "string"
59182
+ },
59183
+ "detail": {
59184
+ "type": "string"
59185
+ },
59186
+ "tags": {
59187
+ "type": "array",
59188
+ "items": {
59189
+ "type": "string"
59190
+ }
59191
+ },
59192
+ "provenance": {
59193
+ "type": "array",
59194
+ "items": {
59195
+ "type": "object",
59196
+ "properties": {
59197
+ "kind": {
59198
+ "type": "string",
59199
+ "enum": [
59200
+ "session",
59201
+ "turn",
59202
+ "task",
59203
+ "event",
59204
+ "file"
59205
+ ]
59206
+ },
59207
+ "ref": {
59208
+ "type": "string"
59209
+ },
59210
+ "label": {
59211
+ "type": "string"
59212
+ }
59213
+ },
59214
+ "required": [
59215
+ "kind",
59216
+ "ref"
59217
+ ],
59218
+ "additionalProperties": false
59219
+ }
59220
+ },
59221
+ "reviewState": {
59222
+ "type": "string",
59223
+ "enum": [
59224
+ "fresh",
59225
+ "reviewed",
59226
+ "stale",
59227
+ "contradicted"
59228
+ ]
59229
+ },
59230
+ "confidence": {
59231
+ "type": "number"
59232
+ },
59233
+ "reviewedAt": {
59234
+ "type": "number"
59235
+ },
59236
+ "reviewedBy": {
59237
+ "type": "string"
59238
+ },
59239
+ "staleReason": {
59240
+ "type": "string"
59241
+ },
59242
+ "createdAt": {
59243
+ "type": "number"
59244
+ },
59245
+ "updatedAt": {
59246
+ "type": "number"
59247
+ }
59248
+ },
59249
+ "required": [
59250
+ "id",
59251
+ "scope",
59252
+ "cls",
59253
+ "summary",
59254
+ "tags",
59255
+ "provenance",
59256
+ "reviewState",
59257
+ "confidence",
59258
+ "createdAt",
59259
+ "updatedAt"
59260
+ ],
59261
+ "additionalProperties": true
59262
+ },
59263
+ "distance": {
59264
+ "anyOf": [
59265
+ {
59266
+ "type": "number"
59267
+ },
59268
+ {
59269
+ "type": "null"
59270
+ }
59271
+ ]
59272
+ },
59273
+ "similarity": {
59274
+ "type": "number"
59275
+ },
59276
+ "score": {
59277
+ "type": "number"
59278
+ }
59279
+ },
59280
+ "required": [
59281
+ "record",
59282
+ "similarity",
59283
+ "score"
59284
+ ],
59285
+ "additionalProperties": false
59286
+ }
59287
+ }
59288
+ },
59289
+ "required": [
59290
+ "results"
59291
+ ],
59292
+ "additionalProperties": false
59293
+ },
59294
+ "invokable": true
59295
+ },
59296
+ {
59297
+ "id": "memory.records.update",
59298
+ "title": "Update Memory Record",
59299
+ "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.",
59300
+ "category": "memory",
59301
+ "source": "builtin",
59302
+ "access": "authenticated",
59303
+ "transport": [
59304
+ "http",
59305
+ "ws"
59306
+ ],
59307
+ "scopes": [
59308
+ "write:memory"
59309
+ ],
59310
+ "http": {
59311
+ "method": "POST",
59312
+ "path": "/api/memory/records/{id}/update"
59313
+ },
59314
+ "inputSchema": {
59315
+ "type": "object",
59316
+ "properties": {
59317
+ "id": {
59318
+ "type": "string"
59319
+ },
59320
+ "scope": {
59321
+ "type": "string",
59322
+ "enum": [
59323
+ "session",
59324
+ "project",
59325
+ "team"
59326
+ ]
59327
+ },
59328
+ "summary": {
59329
+ "type": "string"
59330
+ },
59331
+ "detail": {
59332
+ "type": "string"
59333
+ },
59334
+ "tags": {
59335
+ "type": "array",
59336
+ "items": {
59337
+ "type": "string"
59338
+ }
59339
+ }
59340
+ },
59341
+ "required": [
59342
+ "id"
59343
+ ],
59344
+ "additionalProperties": true
59345
+ },
59346
+ "outputSchema": {
59347
+ "type": "object",
59348
+ "properties": {
59349
+ "record": {
59350
+ "type": "object",
59351
+ "properties": {
59352
+ "id": {
59353
+ "type": "string"
59354
+ },
59355
+ "scope": {
59356
+ "type": "string",
59357
+ "enum": [
59358
+ "session",
59359
+ "project",
59360
+ "team"
59361
+ ]
59362
+ },
59363
+ "cls": {
59364
+ "type": "string",
59365
+ "enum": [
59366
+ "decision",
59367
+ "constraint",
59368
+ "incident",
59369
+ "pattern",
59370
+ "fact",
59371
+ "risk",
59372
+ "runbook",
59373
+ "architecture",
59374
+ "ownership"
59375
+ ]
59376
+ },
59377
+ "summary": {
59378
+ "type": "string"
59379
+ },
59380
+ "detail": {
59381
+ "type": "string"
59382
+ },
59383
+ "tags": {
59384
+ "type": "array",
59385
+ "items": {
59386
+ "type": "string"
59387
+ }
59388
+ },
59389
+ "provenance": {
59390
+ "type": "array",
59391
+ "items": {
59392
+ "type": "object",
59393
+ "properties": {
59394
+ "kind": {
59395
+ "type": "string",
59396
+ "enum": [
59397
+ "session",
59398
+ "turn",
59399
+ "task",
59400
+ "event",
59401
+ "file"
59402
+ ]
59403
+ },
59404
+ "ref": {
59405
+ "type": "string"
59406
+ },
59407
+ "label": {
59408
+ "type": "string"
59409
+ }
59410
+ },
59411
+ "required": [
59412
+ "kind",
59413
+ "ref"
59414
+ ],
59415
+ "additionalProperties": false
59416
+ }
59417
+ },
59418
+ "reviewState": {
59419
+ "type": "string",
59420
+ "enum": [
59421
+ "fresh",
59422
+ "reviewed",
59423
+ "stale",
59424
+ "contradicted"
59425
+ ]
59426
+ },
59427
+ "confidence": {
59428
+ "type": "number"
59429
+ },
59430
+ "reviewedAt": {
59431
+ "type": "number"
59432
+ },
59433
+ "reviewedBy": {
59434
+ "type": "string"
59435
+ },
59436
+ "staleReason": {
59437
+ "type": "string"
59438
+ },
59439
+ "createdAt": {
59440
+ "type": "number"
59441
+ },
59442
+ "updatedAt": {
59443
+ "type": "number"
59444
+ }
59445
+ },
59446
+ "required": [
59447
+ "id",
59448
+ "scope",
59449
+ "cls",
59450
+ "summary",
59451
+ "tags",
59452
+ "provenance",
59453
+ "reviewState",
59454
+ "confidence",
59455
+ "createdAt",
59456
+ "updatedAt"
59457
+ ],
59458
+ "additionalProperties": true
59459
+ }
59460
+ },
59461
+ "required": [
59462
+ "record"
59463
+ ],
59464
+ "additionalProperties": false
59465
+ },
59466
+ "invokable": true
59467
+ },
59468
+ {
59469
+ "id": "memory.records.update-review",
59470
+ "title": "Update Memory Record Review",
59471
+ "description": "Update a record's review signal (reviewState, confidence, reviewer, staleReason) in the canonical store. Marking a record stale or contradicted flags it so the recall-honesty contract will never inject it into a prompt again regardless of confidence. Returns 404 when no record with that id exists.",
59472
+ "category": "memory",
59473
+ "source": "builtin",
59474
+ "access": "authenticated",
59475
+ "transport": [
59476
+ "http",
59477
+ "ws"
59478
+ ],
59479
+ "scopes": [
59480
+ "write:memory"
59481
+ ],
59482
+ "http": {
59483
+ "method": "POST",
59484
+ "path": "/api/memory/records/{id}/review"
59485
+ },
59486
+ "inputSchema": {
59487
+ "type": "object",
59488
+ "properties": {
59489
+ "id": {
59490
+ "type": "string"
59491
+ },
59492
+ "state": {
59493
+ "type": "string",
59494
+ "enum": [
59495
+ "fresh",
59496
+ "reviewed",
59497
+ "stale",
59498
+ "contradicted"
59499
+ ]
59500
+ },
59501
+ "confidence": {
59502
+ "type": "number"
59503
+ },
59504
+ "reviewedBy": {
59505
+ "type": "string"
59506
+ },
59507
+ "staleReason": {
59508
+ "type": "string"
59509
+ }
59510
+ },
59511
+ "required": [
59512
+ "id"
59513
+ ],
59514
+ "additionalProperties": true
59515
+ },
59516
+ "outputSchema": {
59517
+ "type": "object",
59518
+ "properties": {
59519
+ "record": {
59520
+ "type": "object",
59521
+ "properties": {
59522
+ "id": {
59523
+ "type": "string"
59524
+ },
59525
+ "scope": {
59526
+ "type": "string",
59527
+ "enum": [
59528
+ "session",
59529
+ "project",
59530
+ "team"
59531
+ ]
59532
+ },
59533
+ "cls": {
59534
+ "type": "string",
59535
+ "enum": [
59536
+ "decision",
59537
+ "constraint",
59538
+ "incident",
59539
+ "pattern",
59540
+ "fact",
59541
+ "risk",
59542
+ "runbook",
59543
+ "architecture",
59544
+ "ownership"
59545
+ ]
59546
+ },
59547
+ "summary": {
59548
+ "type": "string"
59549
+ },
59550
+ "detail": {
59551
+ "type": "string"
59552
+ },
59553
+ "tags": {
59554
+ "type": "array",
59555
+ "items": {
59556
+ "type": "string"
59557
+ }
59558
+ },
59559
+ "provenance": {
59560
+ "type": "array",
59561
+ "items": {
59562
+ "type": "object",
59563
+ "properties": {
59564
+ "kind": {
59565
+ "type": "string",
59566
+ "enum": [
59567
+ "session",
59568
+ "turn",
59569
+ "task",
59570
+ "event",
59571
+ "file"
59572
+ ]
59573
+ },
59574
+ "ref": {
59575
+ "type": "string"
59576
+ },
59577
+ "label": {
59578
+ "type": "string"
59579
+ }
59580
+ },
59581
+ "required": [
59582
+ "kind",
59583
+ "ref"
59584
+ ],
59585
+ "additionalProperties": false
59586
+ }
59587
+ },
59588
+ "reviewState": {
59589
+ "type": "string",
59590
+ "enum": [
59591
+ "fresh",
59592
+ "reviewed",
59593
+ "stale",
59594
+ "contradicted"
59595
+ ]
59596
+ },
59597
+ "confidence": {
59598
+ "type": "number"
59599
+ },
59600
+ "reviewedAt": {
59601
+ "type": "number"
59602
+ },
59603
+ "reviewedBy": {
59604
+ "type": "string"
59605
+ },
59606
+ "staleReason": {
59607
+ "type": "string"
59608
+ },
59609
+ "createdAt": {
59610
+ "type": "number"
59611
+ },
59612
+ "updatedAt": {
59613
+ "type": "number"
59614
+ }
59615
+ },
59616
+ "required": [
59617
+ "id",
59618
+ "scope",
59619
+ "cls",
59620
+ "summary",
59621
+ "tags",
59622
+ "provenance",
59623
+ "reviewState",
59624
+ "confidence",
59625
+ "createdAt",
59626
+ "updatedAt"
59627
+ ],
59628
+ "additionalProperties": true
59629
+ }
59630
+ },
59631
+ "required": [
59632
+ "record"
59633
+ ],
59634
+ "additionalProperties": false
59635
+ },
59636
+ "invokable": true
59637
+ },
59638
+ {
59639
+ "id": "memory.review-queue",
59640
+ "title": "Memory Review Queue",
59641
+ "description": "Return memory records prioritised for review. Accepts optional limit (?limit=N) and scope filter (?scope=session|project|team). A scope query parameter that is present but not one of the three valid values returns 400.",
59642
+ "category": "memory",
59643
+ "source": "builtin",
59644
+ "access": "authenticated",
59645
+ "transport": [
59646
+ "http",
59647
+ "ws"
59648
+ ],
59649
+ "scopes": [
59650
+ "read:memory"
59651
+ ],
59652
+ "http": {
59653
+ "method": "GET",
59654
+ "path": "/api/memory/review-queue"
59655
+ },
59656
+ "inputSchema": {
59657
+ "type": "object",
59658
+ "properties": {
59659
+ "limit": {
59660
+ "type": "number"
59661
+ },
59662
+ "scope": {
59663
+ "type": "string",
59664
+ "enum": [
59665
+ "session",
59666
+ "project",
59667
+ "team"
59668
+ ]
59669
+ }
59670
+ },
59671
+ "additionalProperties": false
59672
+ },
59673
+ "outputSchema": {
59674
+ "type": "object",
59675
+ "properties": {
59676
+ "records": {
59677
+ "type": "array",
59678
+ "items": {
59679
+ "type": "object",
59680
+ "properties": {},
59681
+ "additionalProperties": true
59682
+ }
59683
+ }
59684
+ },
59685
+ "required": [
59686
+ "records"
59687
+ ],
59688
+ "additionalProperties": false
59689
+ },
59690
+ "invokable": true
59691
+ },
59692
+ {
59693
+ "id": "memory.vector.rebuild",
59694
+ "title": "Rebuild Memory Vector Index",
59695
+ "description": "Rebuild the sqlite-vec vector index.",
59696
+ "category": "memory",
59697
+ "source": "builtin",
59698
+ "access": "admin",
59699
+ "transport": [
59700
+ "http",
59701
+ "ws"
59702
+ ],
59703
+ "scopes": [
59704
+ "write:memory"
59705
+ ],
59706
+ "http": {
59707
+ "method": "POST",
59708
+ "path": "/api/memory/vector/rebuild"
59709
+ },
59710
+ "inputSchema": {
59711
+ "type": "object",
59712
+ "properties": {},
59713
+ "additionalProperties": false
59714
+ },
59715
+ "outputSchema": {
59716
+ "type": "object",
59717
+ "properties": {
59718
+ "vector": {
59719
+ "type": "object",
59720
+ "properties": {
59721
+ "backend": {
59722
+ "type": "string",
59723
+ "enum": [
59724
+ "sqlite-vec"
59725
+ ]
59726
+ },
59727
+ "enabled": {
59728
+ "type": "boolean"
59729
+ },
59730
+ "available": {
59731
+ "type": "boolean"
59732
+ },
59733
+ "path": {
59734
+ "type": "string"
59735
+ },
59736
+ "dimensions": {
59737
+ "type": "number"
59738
+ },
59739
+ "indexedRecords": {
59740
+ "type": "number"
59741
+ },
59742
+ "embeddingProviderId": {
59743
+ "type": "string"
59744
+ },
59745
+ "embeddingProviderLabel": {
59746
+ "type": "string"
59747
+ },
59748
+ "error": {
59749
+ "type": "string"
59750
+ }
59751
+ },
59752
+ "required": [
59753
+ "backend",
59754
+ "enabled",
59755
+ "available",
59756
+ "path",
59757
+ "dimensions",
59758
+ "indexedRecords",
59759
+ "embeddingProviderId",
59760
+ "embeddingProviderLabel"
59761
+ ],
59762
+ "additionalProperties": true
59763
+ }
59764
+ },
59765
+ "required": [
59766
+ "vector"
59767
+ ],
59768
+ "additionalProperties": false
59769
+ },
59770
+ "invokable": true
59771
+ },
59772
+ {
59773
+ "id": "memory.vector.stats",
59774
+ "title": "Memory Vector Stats",
59775
+ "description": "Return the current sqlite-vec vector-store posture.",
59776
+ "category": "memory",
59777
+ "source": "builtin",
59778
+ "access": "authenticated",
59779
+ "transport": [
59780
+ "http",
59781
+ "ws"
59782
+ ],
59783
+ "scopes": [
59784
+ "read:memory"
59785
+ ],
59786
+ "http": {
59787
+ "method": "GET",
59788
+ "path": "/api/memory/vector"
59789
+ },
59790
+ "inputSchema": {
59791
+ "type": "object",
59792
+ "properties": {},
59793
+ "additionalProperties": false
59794
+ },
59795
+ "outputSchema": {
59796
+ "type": "object",
59797
+ "properties": {
59798
+ "vector": {
59799
+ "type": "object",
59800
+ "properties": {
59801
+ "backend": {
59802
+ "type": "string",
59803
+ "enum": [
59804
+ "sqlite-vec"
59805
+ ]
59806
+ },
59807
+ "enabled": {
59808
+ "type": "boolean"
59809
+ },
59810
+ "available": {
59811
+ "type": "boolean"
59812
+ },
59813
+ "path": {
59814
+ "type": "string"
59815
+ },
59816
+ "dimensions": {
59817
+ "type": "number"
59818
+ },
59819
+ "indexedRecords": {
59820
+ "type": "number"
59821
+ },
59822
+ "embeddingProviderId": {
59823
+ "type": "string"
59824
+ },
59825
+ "embeddingProviderLabel": {
59826
+ "type": "string"
59827
+ },
59828
+ "error": {
59829
+ "type": "string"
59830
+ }
59831
+ },
59832
+ "required": [
59833
+ "backend",
59834
+ "enabled",
59835
+ "available",
59836
+ "path",
59837
+ "dimensions",
59838
+ "indexedRecords",
59839
+ "embeddingProviderId",
59840
+ "embeddingProviderLabel"
59841
+ ],
59842
+ "additionalProperties": true
59843
+ }
59844
+ },
59845
+ "required": [
59846
+ "vector"
59847
+ ],
59848
+ "additionalProperties": false
59849
+ },
59850
+ "invokable": true
59851
+ },
59852
+ {
59853
+ "id": "panels.list",
59854
+ "title": "List Panels",
59855
+ "description": "Return integration panel descriptors.",
59856
+ "category": "panels",
59857
+ "source": "builtin",
59858
+ "access": "authenticated",
59859
+ "transport": [
59860
+ "http",
59861
+ "ws"
59862
+ ],
59863
+ "scopes": [
59864
+ "read:panels"
59865
+ ],
59866
+ "http": {
59867
+ "method": "GET",
59868
+ "path": "/api/panels"
59869
+ },
59870
+ "inputSchema": {
59871
+ "type": "object",
59872
+ "properties": {},
59873
+ "additionalProperties": false
59874
+ },
59875
+ "outputSchema": {
59876
+ "type": "object",
59877
+ "properties": {
59878
+ "panels": {
59879
+ "type": "array",
59880
+ "items": {
59881
+ "type": "object",
59882
+ "properties": {
59883
+ "id": {
59884
+ "type": "string"
59885
+ },
59886
+ "name": {
59887
+ "type": "string"
59888
+ },
59889
+ "category": {
59890
+ "type": "string"
59891
+ },
59892
+ "description": {
59893
+ "type": "string"
59894
+ },
59895
+ "open": {
59896
+ "type": "boolean"
59897
+ }
59898
+ },
59899
+ "required": [
59900
+ "id",
59901
+ "name",
59902
+ "category",
59903
+ "description",
59904
+ "open"
59905
+ ],
59906
+ "additionalProperties": false
59907
+ }
59908
+ }
59909
+ },
59910
+ "required": [
59911
+ "panels"
59912
+ ],
59913
+ "additionalProperties": false
59914
+ },
59915
+ "invokable": true
59916
+ },
59917
+ {
59918
+ "id": "panels.open",
59919
+ "title": "Open Panel",
59920
+ "description": "Request that a panel be opened in the current TUI session.",
59921
+ "category": "panels",
59922
+ "source": "builtin",
59923
+ "access": "authenticated",
59924
+ "transport": [
59925
+ "http",
59926
+ "ws"
59927
+ ],
59928
+ "scopes": [
59929
+ "write:panels"
59930
+ ],
59931
+ "http": {
59932
+ "method": "POST",
59933
+ "path": "/api/panels/open"
59934
+ },
59935
+ "inputSchema": {
59936
+ "type": "object",
59937
+ "properties": {
59938
+ "id": {
59939
+ "type": "string"
59940
+ },
59941
+ "pane": {
59942
+ "type": "string"
59943
+ }
59944
+ },
59945
+ "required": [
59946
+ "id"
59947
+ ],
59948
+ "additionalProperties": true
59949
+ },
59950
+ "outputSchema": {
59951
+ "type": "object",
59952
+ "properties": {
59953
+ "opened": {
59954
+ "type": "boolean"
59955
+ },
59956
+ "id": {
59957
+ "type": "string"
59958
+ },
59959
+ "pane": {
59960
+ "type": "string",
59961
+ "enum": [
59962
+ "top",
59963
+ "bottom"
59964
+ ]
59965
+ }
59966
+ },
59967
+ "required": [
59968
+ "opened",
59969
+ "id",
59970
+ "pane"
59971
+ ],
59972
+ "additionalProperties": false
59973
+ },
59974
+ "invokable": true
59975
+ },
59976
+ {
59977
+ "id": "providers.get",
59978
+ "title": "Provider Snapshot",
59979
+ "description": "Return runtime metadata for a single provider.",
59980
+ "category": "providers",
59981
+ "source": "builtin",
59982
+ "access": "authenticated",
59983
+ "transport": [
59984
+ "http",
59985
+ "ws"
59986
+ ],
59987
+ "scopes": [
59988
+ "read:providers"
59989
+ ],
59990
+ "http": {
59991
+ "method": "GET",
59992
+ "path": "/api/providers/{providerId}"
59993
+ },
59994
+ "inputSchema": {
59995
+ "type": "object",
59996
+ "properties": {
59997
+ "providerId": {
59998
+ "type": "string"
59999
+ }
60000
+ },
60001
+ "required": [
60002
+ "providerId"
60003
+ ],
60004
+ "additionalProperties": false
60005
+ },
60006
+ "outputSchema": {
60007
+ "type": "object",
60008
+ "properties": {
60009
+ "providerId": {
60010
+ "type": "string"
60011
+ },
60012
+ "active": {
60013
+ "type": "boolean"
60014
+ },
60015
+ "modelCount": {
60016
+ "type": "number"
60017
+ },
60018
+ "runtime": {
60019
+ "type": "object",
60020
+ "properties": {
60021
+ "auth": {
60022
+ "type": "object",
60023
+ "properties": {
60024
+ "mode": {
60025
+ "type": "string",
60026
+ "enum": [
60027
+ "api-key",
57694
60028
  "oauth",
57695
60029
  "anonymous",
57696
60030
  "none"
@@ -58501,6 +60835,286 @@
58501
60835
  },
58502
60836
  "invokable": true
58503
60837
  },
60838
+ {
60839
+ "id": "push.subscriptions.create",
60840
+ "title": "Register Web Push Subscription",
60841
+ "description": "Store a browser Push subscription (endpoint capability URL + p256dh/auth keys) for the authenticated operator so the daemon can deliver notifications to that device. Re-registering the same endpoint updates its keys in place rather than duplicating it. The stored endpoint and keys are never returned over the wire; the response is the redacted subscription view.",
60842
+ "category": "push",
60843
+ "source": "builtin",
60844
+ "access": "authenticated",
60845
+ "transport": [
60846
+ "ws"
60847
+ ],
60848
+ "scopes": [
60849
+ "write:push"
60850
+ ],
60851
+ "inputSchema": {
60852
+ "type": "object",
60853
+ "properties": {
60854
+ "endpoint": {
60855
+ "type": "string"
60856
+ },
60857
+ "keys": {
60858
+ "type": "object",
60859
+ "properties": {
60860
+ "p256dh": {
60861
+ "type": "string"
60862
+ },
60863
+ "auth": {
60864
+ "type": "string"
60865
+ }
60866
+ },
60867
+ "required": [
60868
+ "p256dh",
60869
+ "auth"
60870
+ ],
60871
+ "additionalProperties": false
60872
+ }
60873
+ },
60874
+ "required": [
60875
+ "endpoint",
60876
+ "keys"
60877
+ ],
60878
+ "additionalProperties": false
60879
+ },
60880
+ "outputSchema": {
60881
+ "type": "object",
60882
+ "properties": {
60883
+ "subscription": {
60884
+ "type": "object",
60885
+ "properties": {
60886
+ "id": {
60887
+ "type": "string"
60888
+ },
60889
+ "principalId": {
60890
+ "type": "string"
60891
+ },
60892
+ "endpointOrigin": {
60893
+ "type": "string"
60894
+ },
60895
+ "endpointHash": {
60896
+ "type": "string"
60897
+ },
60898
+ "createdAt": {
60899
+ "type": "number"
60900
+ },
60901
+ "lastDeliveryAt": {
60902
+ "type": "number"
60903
+ },
60904
+ "lastOutcome": {
60905
+ "type": "string"
60906
+ }
60907
+ },
60908
+ "required": [
60909
+ "id",
60910
+ "principalId",
60911
+ "endpointOrigin",
60912
+ "endpointHash",
60913
+ "createdAt"
60914
+ ],
60915
+ "additionalProperties": false
60916
+ }
60917
+ },
60918
+ "required": [
60919
+ "subscription"
60920
+ ],
60921
+ "additionalProperties": false
60922
+ },
60923
+ "invokable": true
60924
+ },
60925
+ {
60926
+ "id": "push.subscriptions.delete",
60927
+ "title": "Delete Web Push Subscription",
60928
+ "description": "Permanently remove one of the authenticated operator's push subscriptions: the stored record (endpoint + keys) is dropped and cannot be listed afterward. An unknown id, or one owned by another principal, is a 404 SUBSCRIPTION_NOT_FOUND, never a 200-noop.",
60929
+ "category": "push",
60930
+ "source": "builtin",
60931
+ "access": "authenticated",
60932
+ "transport": [
60933
+ "ws"
60934
+ ],
60935
+ "scopes": [
60936
+ "write:push"
60937
+ ],
60938
+ "inputSchema": {
60939
+ "type": "object",
60940
+ "properties": {
60941
+ "subscriptionId": {
60942
+ "type": "string"
60943
+ }
60944
+ },
60945
+ "required": [
60946
+ "subscriptionId"
60947
+ ],
60948
+ "additionalProperties": false
60949
+ },
60950
+ "outputSchema": {
60951
+ "type": "object",
60952
+ "properties": {
60953
+ "subscriptionId": {
60954
+ "type": "string"
60955
+ },
60956
+ "deleted": {
60957
+ "type": "boolean"
60958
+ }
60959
+ },
60960
+ "required": [
60961
+ "subscriptionId",
60962
+ "deleted"
60963
+ ],
60964
+ "additionalProperties": false
60965
+ },
60966
+ "invokable": true
60967
+ },
60968
+ {
60969
+ "id": "push.subscriptions.list",
60970
+ "title": "List Web Push Subscriptions",
60971
+ "description": "List the authenticated operator's registered push devices as redacted subscription views (id, endpoint origin + hash, timestamps, last delivery outcome). The capability URL and key material are never included.",
60972
+ "category": "push",
60973
+ "source": "builtin",
60974
+ "access": "authenticated",
60975
+ "transport": [
60976
+ "ws"
60977
+ ],
60978
+ "scopes": [
60979
+ "read:push"
60980
+ ],
60981
+ "outputSchema": {
60982
+ "type": "object",
60983
+ "properties": {
60984
+ "subscriptions": {
60985
+ "type": "array",
60986
+ "items": {
60987
+ "type": "object",
60988
+ "properties": {
60989
+ "id": {
60990
+ "type": "string"
60991
+ },
60992
+ "principalId": {
60993
+ "type": "string"
60994
+ },
60995
+ "endpointOrigin": {
60996
+ "type": "string"
60997
+ },
60998
+ "endpointHash": {
60999
+ "type": "string"
61000
+ },
61001
+ "createdAt": {
61002
+ "type": "number"
61003
+ },
61004
+ "lastDeliveryAt": {
61005
+ "type": "number"
61006
+ },
61007
+ "lastOutcome": {
61008
+ "type": "string"
61009
+ }
61010
+ },
61011
+ "required": [
61012
+ "id",
61013
+ "principalId",
61014
+ "endpointOrigin",
61015
+ "endpointHash",
61016
+ "createdAt"
61017
+ ],
61018
+ "additionalProperties": false
61019
+ }
61020
+ }
61021
+ },
61022
+ "required": [
61023
+ "subscriptions"
61024
+ ],
61025
+ "additionalProperties": false
61026
+ },
61027
+ "invokable": true
61028
+ },
61029
+ {
61030
+ "id": "push.subscriptions.verify",
61031
+ "title": "Send Test Web Push",
61032
+ "description": "Send a live test notification to one of the authenticated operator's subscriptions and return an honest delivery receipt (delivered / pruned / failed). A subscription whose endpoint reports 404/410 gone is pruned as part of the attempt and the receipt says so. An unknown id, or one owned by another principal, is a 404 SUBSCRIPTION_NOT_FOUND.",
61033
+ "category": "push",
61034
+ "source": "builtin",
61035
+ "access": "authenticated",
61036
+ "transport": [
61037
+ "ws"
61038
+ ],
61039
+ "scopes": [
61040
+ "write:push"
61041
+ ],
61042
+ "inputSchema": {
61043
+ "type": "object",
61044
+ "properties": {
61045
+ "subscriptionId": {
61046
+ "type": "string"
61047
+ }
61048
+ },
61049
+ "required": [
61050
+ "subscriptionId"
61051
+ ],
61052
+ "additionalProperties": false
61053
+ },
61054
+ "outputSchema": {
61055
+ "type": "object",
61056
+ "properties": {
61057
+ "receipt": {
61058
+ "type": "object",
61059
+ "properties": {
61060
+ "subscriptionId": {
61061
+ "type": "string"
61062
+ },
61063
+ "endpointOrigin": {
61064
+ "type": "string"
61065
+ },
61066
+ "outcome": {
61067
+ "type": "string"
61068
+ },
61069
+ "httpStatus": {
61070
+ "type": "number"
61071
+ },
61072
+ "detail": {
61073
+ "type": "string"
61074
+ }
61075
+ },
61076
+ "required": [
61077
+ "subscriptionId",
61078
+ "endpointOrigin",
61079
+ "outcome"
61080
+ ],
61081
+ "additionalProperties": false
61082
+ }
61083
+ },
61084
+ "required": [
61085
+ "receipt"
61086
+ ],
61087
+ "additionalProperties": false
61088
+ },
61089
+ "invokable": true
61090
+ },
61091
+ {
61092
+ "id": "push.vapid.get",
61093
+ "title": "Get Web Push Public Key",
61094
+ "description": "Return the daemon's public VAPID key (base64url application-server key) that a browser client passes to pushManager.subscribe(). The matching private key never leaves the daemon and is never returned by any verb.",
61095
+ "category": "push",
61096
+ "source": "builtin",
61097
+ "access": "authenticated",
61098
+ "transport": [
61099
+ "ws"
61100
+ ],
61101
+ "scopes": [
61102
+ "read:push"
61103
+ ],
61104
+ "outputSchema": {
61105
+ "type": "object",
61106
+ "properties": {
61107
+ "publicKey": {
61108
+ "type": "string"
61109
+ }
61110
+ },
61111
+ "required": [
61112
+ "publicKey"
61113
+ ],
61114
+ "additionalProperties": false
61115
+ },
61116
+ "invokable": true
61117
+ },
58504
61118
  {
58505
61119
  "id": "remote.node_host.contract",
58506
61120
  "title": "Node Host Contract",
@@ -62796,7 +65410,7 @@
62796
65410
  {
62797
65411
  "id": "routes.bindings.update",
62798
65412
  "title": "Update Route Binding",
62799
- "description": "Update an existing route binding. (Renamed from routes.bindings.patch in the Wave-6 core-verb pass — canonical verb is update, not patch.)",
65413
+ "description": "Update an existing route binding. (Renamed from routes.bindings.patch in the 1.0.0 core-verb rename — canonical verb is update, not patch.)",
62800
65414
  "category": "routes",
62801
65415
  "source": "builtin",
62802
65416
  "access": "admin",
@@ -76435,7 +79049,7 @@
76435
79049
  {
76436
79050
  "id": "watchers.update",
76437
79051
  "title": "Update Watcher",
76438
- "description": "Update an existing watcher. (Renamed from watchers.patch in the Wave-6 core-verb pass — canonical verb is update, not patch.)",
79052
+ "description": "Update an existing watcher. (Renamed from watchers.patch in the 1.0.0 core-verb rename — canonical verb is update, not patch.)",
76439
79053
  "category": "watchers",
76440
79054
  "source": "builtin",
76441
79055
  "access": "admin",
@@ -78727,10 +81341,10 @@
78727
81341
  }
78728
81342
  ],
78729
81343
  "schemaCoverage": {
78730
- "methods": 308,
78731
- "typedInputs": 308,
81344
+ "methods": 327,
81345
+ "typedInputs": 327,
78732
81346
  "genericInputs": 0,
78733
- "typedOutputs": 308,
81347
+ "typedOutputs": 327,
78734
81348
  "genericOutputs": 0
78735
81349
  },
78736
81350
  "eventCoverage": {
@@ -78739,10 +81353,10 @@
78739
81353
  "withWireEvents": 31
78740
81354
  },
78741
81355
  "validationCoverage": {
78742
- "methods": 308,
78743
- "validated": 308,
81356
+ "methods": 327,
81357
+ "validated": 325,
78744
81358
  "skippedGeneric": 0,
78745
- "skippedUntyped": 0
81359
+ "skippedUntyped": 2
78746
81360
  }
78747
81361
  },
78748
81362
  "peer": {