agentfootprint 9.24.0 → 9.26.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 (289) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +7 -1
  3. package/README.md +3 -1
  4. package/ai-instructions/claude-code/SKILL.md +1 -1
  5. package/dist/adapters/code/local.js +102 -2
  6. package/dist/adapters/code/local.js.map +1 -1
  7. package/dist/adapters/hosting/agentcore.js +11 -0
  8. package/dist/adapters/hosting/agentcore.js.map +1 -1
  9. package/dist/adapters/identity/jwks.js +277 -0
  10. package/dist/adapters/identity/jwks.js.map +1 -0
  11. package/dist/adapters/types.js +18 -1
  12. package/dist/adapters/types.js.map +1 -1
  13. package/dist/artifacts/fileArtifacts.js +144 -17
  14. package/dist/artifacts/fileArtifacts.js.map +1 -1
  15. package/dist/artifacts/gcsArtifacts.js +398 -0
  16. package/dist/artifacts/gcsArtifacts.js.map +1 -0
  17. package/dist/artifacts/index.js +17 -1
  18. package/dist/artifacts/index.js.map +1 -1
  19. package/dist/artifacts/objectStore.js +264 -0
  20. package/dist/artifacts/objectStore.js.map +1 -0
  21. package/dist/artifacts/payload.js +41 -2
  22. package/dist/artifacts/payload.js.map +1 -1
  23. package/dist/artifacts/recordingArtifact.js +88 -0
  24. package/dist/artifacts/recordingArtifact.js.map +1 -0
  25. package/dist/artifacts/s3Artifacts.js +542 -0
  26. package/dist/artifacts/s3Artifacts.js.map +1 -0
  27. package/dist/artifacts/scopePath.js +87 -0
  28. package/dist/artifacts/scopePath.js.map +1 -0
  29. package/dist/artifacts/streaming.js +132 -0
  30. package/dist/artifacts/streaming.js.map +1 -0
  31. package/dist/artifacts/types.js +10 -2
  32. package/dist/artifacts/types.js.map +1 -1
  33. package/dist/core/Agent.js +176 -0
  34. package/dist/core/Agent.js.map +1 -1
  35. package/dist/core/agent/AgentBuilder.js +20 -0
  36. package/dist/core/agent/AgentBuilder.js.map +1 -1
  37. package/dist/core/agent/repeatedCall.js +190 -0
  38. package/dist/core/agent/repeatedCall.js.map +1 -0
  39. package/dist/core/agent/stages/toolCalls.js +50 -0
  40. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  41. package/dist/core/codeRunnerTool.js +149 -12
  42. package/dist/core/codeRunnerTool.js.map +1 -1
  43. package/dist/esm/adapters/code/local.d.ts +16 -0
  44. package/dist/esm/adapters/code/local.js +102 -2
  45. package/dist/esm/adapters/code/local.js.map +1 -1
  46. package/dist/esm/adapters/hosting/agentcore.js +11 -0
  47. package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
  48. package/dist/esm/adapters/identity/jwks.d.ts +124 -0
  49. package/dist/esm/adapters/identity/jwks.js +249 -0
  50. package/dist/esm/adapters/identity/jwks.js.map +1 -0
  51. package/dist/esm/adapters/types.d.ts +86 -0
  52. package/dist/esm/adapters/types.js +16 -0
  53. package/dist/esm/adapters/types.js.map +1 -1
  54. package/dist/esm/artifacts/fileArtifacts.d.ts +13 -1
  55. package/dist/esm/artifacts/fileArtifacts.js +145 -18
  56. package/dist/esm/artifacts/fileArtifacts.js.map +1 -1
  57. package/dist/esm/artifacts/gcsArtifacts.d.ts +142 -0
  58. package/dist/esm/artifacts/gcsArtifacts.js +394 -0
  59. package/dist/esm/artifacts/gcsArtifacts.js.map +1 -0
  60. package/dist/esm/artifacts/index.d.ts +5 -1
  61. package/dist/esm/artifacts/index.js +4 -0
  62. package/dist/esm/artifacts/index.js.map +1 -1
  63. package/dist/esm/artifacts/objectStore.d.ts +166 -0
  64. package/dist/esm/artifacts/objectStore.js +252 -0
  65. package/dist/esm/artifacts/objectStore.js.map +1 -0
  66. package/dist/esm/artifacts/payload.d.ts +36 -4
  67. package/dist/esm/artifacts/payload.js +38 -1
  68. package/dist/esm/artifacts/payload.js.map +1 -1
  69. package/dist/esm/artifacts/recordingArtifact.d.ts +76 -0
  70. package/dist/esm/artifacts/recordingArtifact.js +83 -0
  71. package/dist/esm/artifacts/recordingArtifact.js.map +1 -0
  72. package/dist/esm/artifacts/s3Artifacts.d.ts +149 -0
  73. package/dist/esm/artifacts/s3Artifacts.js +538 -0
  74. package/dist/esm/artifacts/s3Artifacts.js.map +1 -0
  75. package/dist/esm/artifacts/scopePath.d.ts +50 -0
  76. package/dist/esm/artifacts/scopePath.js +80 -0
  77. package/dist/esm/artifacts/scopePath.js.map +1 -0
  78. package/dist/esm/artifacts/streaming.d.ts +82 -0
  79. package/dist/esm/artifacts/streaming.js +123 -0
  80. package/dist/esm/artifacts/streaming.js.map +1 -0
  81. package/dist/esm/artifacts/types.d.ts +71 -5
  82. package/dist/esm/artifacts/types.js +10 -2
  83. package/dist/esm/artifacts/types.js.map +1 -1
  84. package/dist/esm/core/Agent.d.ts +66 -2
  85. package/dist/esm/core/Agent.js +176 -0
  86. package/dist/esm/core/Agent.js.map +1 -1
  87. package/dist/esm/core/agent/AgentBuilder.js +20 -0
  88. package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
  89. package/dist/esm/core/agent/repeatedCall.d.ts +150 -0
  90. package/dist/esm/core/agent/repeatedCall.js +184 -0
  91. package/dist/esm/core/agent/repeatedCall.js.map +1 -0
  92. package/dist/esm/core/agent/stages/toolCalls.d.ts +12 -0
  93. package/dist/esm/core/agent/stages/toolCalls.js +50 -0
  94. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  95. package/dist/esm/core/agent/types.d.ts +82 -0
  96. package/dist/esm/core/codeRunnerTool.d.ts +31 -0
  97. package/dist/esm/core/codeRunnerTool.js +149 -12
  98. package/dist/esm/core/codeRunnerTool.js.map +1 -1
  99. package/dist/esm/events/payloads.d.ts +22 -0
  100. package/dist/esm/events/registry.d.ts +3 -1
  101. package/dist/esm/events/registry.js +2 -0
  102. package/dist/esm/events/registry.js.map +1 -1
  103. package/dist/esm/hosting/admission.d.ts +180 -0
  104. package/dist/esm/hosting/admission.js +188 -0
  105. package/dist/esm/hosting/admission.js.map +1 -0
  106. package/dist/esm/hosting/artifactWire.d.ts +8 -5
  107. package/dist/esm/hosting/artifactWire.js +14 -9
  108. package/dist/esm/hosting/artifactWire.js.map +1 -1
  109. package/dist/esm/hosting/envelope.d.ts +34 -0
  110. package/dist/esm/hosting/envelope.js +81 -0
  111. package/dist/esm/hosting/envelope.js.map +1 -1
  112. package/dist/esm/hosting/errors.d.ts +131 -0
  113. package/dist/esm/hosting/errors.js +195 -0
  114. package/dist/esm/hosting/errors.js.map +1 -1
  115. package/dist/esm/hosting/httpHost.d.ts +21 -0
  116. package/dist/esm/hosting/httpHost.js +44 -2
  117. package/dist/esm/hosting/httpHost.js.map +1 -1
  118. package/dist/esm/hosting/identityVerification.d.ts +154 -0
  119. package/dist/esm/hosting/identityVerification.js +135 -0
  120. package/dist/esm/hosting/identityVerification.js.map +1 -0
  121. package/dist/esm/hosting/index.d.ts +12 -3
  122. package/dist/esm/hosting/index.js +16 -2
  123. package/dist/esm/hosting/index.js.map +1 -1
  124. package/dist/esm/hosting/memorySessions.d.ts +9 -0
  125. package/dist/esm/hosting/memorySessions.js +86 -0
  126. package/dist/esm/hosting/memorySessions.js.map +1 -1
  127. package/dist/esm/hosting/nodeHost.js +8 -0
  128. package/dist/esm/hosting/nodeHost.js.map +1 -1
  129. package/dist/esm/hosting/sessionWire.d.ts +126 -0
  130. package/dist/esm/hosting/sessionWire.js +95 -0
  131. package/dist/esm/hosting/sessionWire.js.map +1 -0
  132. package/dist/esm/hosting/sqliteSessions.js +122 -5
  133. package/dist/esm/hosting/sqliteSessions.js.map +1 -1
  134. package/dist/esm/hosting/standingAgent.js +299 -8
  135. package/dist/esm/hosting/standingAgent.js.map +1 -1
  136. package/dist/esm/hosting/types.d.ts +166 -6
  137. package/dist/esm/hosting/types.js.map +1 -1
  138. package/dist/esm/hosting/wireOps.d.ts +52 -0
  139. package/dist/esm/hosting/wireOps.js +60 -0
  140. package/dist/esm/hosting/wireOps.js.map +1 -0
  141. package/dist/esm/identity.d.ts +1 -0
  142. package/dist/esm/identity.js +6 -0
  143. package/dist/esm/identity.js.map +1 -1
  144. package/dist/esm/index.d.ts +3 -2
  145. package/dist/esm/index.js +10 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/lib/injection-engine/factories/defineSkill.d.ts +27 -0
  148. package/dist/esm/lib/injection-engine/factories/defineSkill.js +13 -0
  149. package/dist/esm/lib/injection-engine/factories/defineSkill.js.map +1 -1
  150. package/dist/esm/lib/injection-engine/index.d.ts +1 -0
  151. package/dist/esm/lib/injection-engine/index.js +7 -0
  152. package/dist/esm/lib/injection-engine/index.js.map +1 -1
  153. package/dist/esm/lib/injection-engine/skillGraph.js +9 -1
  154. package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
  155. package/dist/esm/lib/injection-engine/skillGraphCheckup.d.ts +1 -1
  156. package/dist/esm/lib/injection-engine/skillGraphCheckup.js.map +1 -1
  157. package/dist/esm/lib/injection-engine/skillSteps.d.ts +16 -0
  158. package/dist/esm/lib/injection-engine/skillSteps.js +5 -0
  159. package/dist/esm/lib/injection-engine/skillSteps.js.map +1 -1
  160. package/dist/esm/lib/injection-engine/skillVocabulary.d.ts +83 -0
  161. package/dist/esm/lib/injection-engine/skillVocabulary.js +218 -0
  162. package/dist/esm/lib/injection-engine/skillVocabulary.js.map +1 -0
  163. package/dist/events/registry.js +2 -0
  164. package/dist/events/registry.js.map +1 -1
  165. package/dist/hosting/admission.js +194 -0
  166. package/dist/hosting/admission.js.map +1 -0
  167. package/dist/hosting/artifactWire.js +14 -9
  168. package/dist/hosting/artifactWire.js.map +1 -1
  169. package/dist/hosting/envelope.js +84 -1
  170. package/dist/hosting/envelope.js.map +1 -1
  171. package/dist/hosting/errors.js +203 -1
  172. package/dist/hosting/errors.js.map +1 -1
  173. package/dist/hosting/httpHost.js +43 -1
  174. package/dist/hosting/httpHost.js.map +1 -1
  175. package/dist/hosting/identityVerification.js +140 -0
  176. package/dist/hosting/identityVerification.js.map +1 -0
  177. package/dist/hosting/index.js +38 -1
  178. package/dist/hosting/index.js.map +1 -1
  179. package/dist/hosting/memorySessions.js +86 -0
  180. package/dist/hosting/memorySessions.js.map +1 -1
  181. package/dist/hosting/nodeHost.js +8 -0
  182. package/dist/hosting/nodeHost.js.map +1 -1
  183. package/dist/hosting/sessionWire.js +100 -0
  184. package/dist/hosting/sessionWire.js.map +1 -0
  185. package/dist/hosting/sqliteSessions.js +121 -4
  186. package/dist/hosting/sqliteSessions.js.map +1 -1
  187. package/dist/hosting/standingAgent.js +297 -6
  188. package/dist/hosting/standingAgent.js.map +1 -1
  189. package/dist/hosting/types.js.map +1 -1
  190. package/dist/hosting/wireOps.js +65 -0
  191. package/dist/hosting/wireOps.js.map +1 -0
  192. package/dist/identity.js +9 -1
  193. package/dist/identity.js.map +1 -1
  194. package/dist/index.js +30 -13
  195. package/dist/index.js.map +1 -1
  196. package/dist/lib/injection-engine/factories/defineSkill.js +13 -0
  197. package/dist/lib/injection-engine/factories/defineSkill.js.map +1 -1
  198. package/dist/lib/injection-engine/index.js +10 -1
  199. package/dist/lib/injection-engine/index.js.map +1 -1
  200. package/dist/lib/injection-engine/skillGraph.js +9 -1
  201. package/dist/lib/injection-engine/skillGraph.js.map +1 -1
  202. package/dist/lib/injection-engine/skillGraphCheckup.js.map +1 -1
  203. package/dist/lib/injection-engine/skillSteps.js +5 -0
  204. package/dist/lib/injection-engine/skillSteps.js.map +1 -1
  205. package/dist/lib/injection-engine/skillVocabulary.js +224 -0
  206. package/dist/lib/injection-engine/skillVocabulary.js.map +1 -0
  207. package/dist/types/adapters/code/local.d.ts +16 -0
  208. package/dist/types/adapters/code/local.d.ts.map +1 -1
  209. package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
  210. package/dist/types/adapters/identity/jwks.d.ts +125 -0
  211. package/dist/types/adapters/identity/jwks.d.ts.map +1 -0
  212. package/dist/types/adapters/types.d.ts +86 -0
  213. package/dist/types/adapters/types.d.ts.map +1 -1
  214. package/dist/types/artifacts/fileArtifacts.d.ts +13 -1
  215. package/dist/types/artifacts/fileArtifacts.d.ts.map +1 -1
  216. package/dist/types/artifacts/gcsArtifacts.d.ts +143 -0
  217. package/dist/types/artifacts/gcsArtifacts.d.ts.map +1 -0
  218. package/dist/types/artifacts/index.d.ts +5 -1
  219. package/dist/types/artifacts/index.d.ts.map +1 -1
  220. package/dist/types/artifacts/objectStore.d.ts +167 -0
  221. package/dist/types/artifacts/objectStore.d.ts.map +1 -0
  222. package/dist/types/artifacts/payload.d.ts +36 -4
  223. package/dist/types/artifacts/payload.d.ts.map +1 -1
  224. package/dist/types/artifacts/recordingArtifact.d.ts +77 -0
  225. package/dist/types/artifacts/recordingArtifact.d.ts.map +1 -0
  226. package/dist/types/artifacts/s3Artifacts.d.ts +150 -0
  227. package/dist/types/artifacts/s3Artifacts.d.ts.map +1 -0
  228. package/dist/types/artifacts/scopePath.d.ts +51 -0
  229. package/dist/types/artifacts/scopePath.d.ts.map +1 -0
  230. package/dist/types/artifacts/streaming.d.ts +83 -0
  231. package/dist/types/artifacts/streaming.d.ts.map +1 -0
  232. package/dist/types/artifacts/types.d.ts +71 -5
  233. package/dist/types/artifacts/types.d.ts.map +1 -1
  234. package/dist/types/core/Agent.d.ts +66 -2
  235. package/dist/types/core/Agent.d.ts.map +1 -1
  236. package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
  237. package/dist/types/core/agent/repeatedCall.d.ts +151 -0
  238. package/dist/types/core/agent/repeatedCall.d.ts.map +1 -0
  239. package/dist/types/core/agent/stages/toolCalls.d.ts +12 -0
  240. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  241. package/dist/types/core/agent/types.d.ts +82 -0
  242. package/dist/types/core/agent/types.d.ts.map +1 -1
  243. package/dist/types/core/codeRunnerTool.d.ts +31 -0
  244. package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
  245. package/dist/types/events/payloads.d.ts +22 -0
  246. package/dist/types/events/payloads.d.ts.map +1 -1
  247. package/dist/types/events/registry.d.ts +3 -1
  248. package/dist/types/events/registry.d.ts.map +1 -1
  249. package/dist/types/hosting/admission.d.ts +181 -0
  250. package/dist/types/hosting/admission.d.ts.map +1 -0
  251. package/dist/types/hosting/artifactWire.d.ts +8 -5
  252. package/dist/types/hosting/artifactWire.d.ts.map +1 -1
  253. package/dist/types/hosting/envelope.d.ts +34 -0
  254. package/dist/types/hosting/envelope.d.ts.map +1 -1
  255. package/dist/types/hosting/errors.d.ts +131 -0
  256. package/dist/types/hosting/errors.d.ts.map +1 -1
  257. package/dist/types/hosting/httpHost.d.ts +21 -0
  258. package/dist/types/hosting/httpHost.d.ts.map +1 -1
  259. package/dist/types/hosting/identityVerification.d.ts +155 -0
  260. package/dist/types/hosting/identityVerification.d.ts.map +1 -0
  261. package/dist/types/hosting/index.d.ts +12 -3
  262. package/dist/types/hosting/index.d.ts.map +1 -1
  263. package/dist/types/hosting/memorySessions.d.ts +9 -0
  264. package/dist/types/hosting/memorySessions.d.ts.map +1 -1
  265. package/dist/types/hosting/nodeHost.d.ts.map +1 -1
  266. package/dist/types/hosting/sessionWire.d.ts +127 -0
  267. package/dist/types/hosting/sessionWire.d.ts.map +1 -0
  268. package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
  269. package/dist/types/hosting/standingAgent.d.ts.map +1 -1
  270. package/dist/types/hosting/types.d.ts +166 -6
  271. package/dist/types/hosting/types.d.ts.map +1 -1
  272. package/dist/types/hosting/wireOps.d.ts +53 -0
  273. package/dist/types/hosting/wireOps.d.ts.map +1 -0
  274. package/dist/types/identity.d.ts +1 -0
  275. package/dist/types/identity.d.ts.map +1 -1
  276. package/dist/types/index.d.ts +3 -2
  277. package/dist/types/index.d.ts.map +1 -1
  278. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts +27 -0
  279. package/dist/types/lib/injection-engine/factories/defineSkill.d.ts.map +1 -1
  280. package/dist/types/lib/injection-engine/index.d.ts +1 -0
  281. package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
  282. package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
  283. package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts +1 -1
  284. package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts.map +1 -1
  285. package/dist/types/lib/injection-engine/skillSteps.d.ts +16 -0
  286. package/dist/types/lib/injection-engine/skillSteps.d.ts.map +1 -1
  287. package/dist/types/lib/injection-engine/skillVocabulary.d.ts +84 -0
  288. package/dist/types/lib/injection-engine/skillVocabulary.d.ts.map +1 -0
  289. package/package.json +15 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hosting/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;;;AAEH,6CAAyF;AAAhF,uGAAA,QAAQ,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,qHAAA,sBAAsB,OAAA;AAEjE,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,oCAAoC;AAEpC,6CAAsD;AAA7C,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAW9B,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,yDAI6B;AAH3B,mHAAA,cAAc,OAAA;AACd,2HAAA,sBAAsB,OAAA;AACtB,+HAAA,0BAA0B,OAAA;AAM5B,6CAMuB;AALrB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AAEf,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,uCAAyD;AAAhD,uHAAA,2BAA2B,OAAA;AAEpC,yCAeqB;AAdnB,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AACjB,oHAAA,uBAAuB,OAAA;AACvB,oHAAA,uBAAuB,OAAA;AACvB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,yHAAA,4BAA4B,OAAA;AAC5B,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,oHAAA,uBAAuB,OAAA;AAGzB,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,2BAA2B;AAC3B,qDAK2B;AAJzB,qHAAA,kBAAkB,OAAA;AAClB,mHAAA,gBAAgB,OAAA;AAChB,mHAAA,gBAAgB,OAAA;AAChB,kHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hosting/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;;;;AAEH,6CAAyF;AAAhF,uGAAA,QAAQ,OAAA;AAAE,uGAAA,QAAQ,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,qHAAA,sBAAsB,OAAA;AAEjE,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,oCAAoC;AAEpC,6CAAsD;AAA7C,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAW9B,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AACvB,yDAI6B;AAH3B,mHAAA,cAAc,OAAA;AACd,2HAAA,sBAAsB,OAAA;AACtB,+HAAA,0BAA0B,OAAA;AAM5B,6CAQuB;AAPrB,yGAAA,UAAU,OAAA;AACV,4GAAA,aAAa,OAAA;AACb,iHAAA,kBAAkB,OAAA;AAClB,+GAAA,gBAAgB,OAAA;AAChB,2GAAA,YAAY,OAAA;AACZ,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AAEf,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,uCAAyD;AAAhD,uHAAA,2BAA2B,OAAA;AAEpC,yCAsBqB;AArBnB,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AACjB,oHAAA,uBAAuB,OAAA;AACvB,oHAAA,uBAAuB,OAAA;AACvB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,yHAAA,4BAA4B,OAAA;AAC5B,iHAAA,oBAAoB,OAAA;AACpB,kHAAA,qBAAqB,OAAA;AACrB,oHAAA,uBAAuB,OAAA;AACvB,qHAAA,wBAAwB,OAAA;AACxB,qHAAA,wBAAwB,OAAA;AACxB,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,yHAAA,4BAA4B,OAAA;AAC5B,iHAAA,oBAAoB,OAAA;AACpB,oHAAA,uBAAuB,OAAA;AAIzB,2EAA2E;AAC3E,iEAAiE;AACjE,8EAA8E;AAC9E,yDAAyD;AACzD,qEAA+E;AAAtE,sHAAA,WAAW,OAAA;AAAE,gIAAA,qBAAqB,OAAA;AAO3C,+EAA+E;AAC/E,uEAAuE;AACvE,2DAA2D;AAC3D,+CAAwE;AAA/D,2GAAA,WAAW,OAAA;AAAE,2GAAA,WAAW,OAAA;AAAE,4GAAA,YAAY,OAAA;AAW/C,+EAA+E;AAC/E,yEAAyE;AACzE,qBAAqB;AACrB,mDAK0B;AAJxB,mHAAA,iBAAiB,OAAA;AACjB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,uHAAA,qBAAqB,OAAA;AAQvB,2CAAqF;AAA5E,0GAAA,YAAY,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAG9D,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,2BAA2B;AAC3B,qDAK2B;AAJzB,qHAAA,kBAAkB,OAAA;AAClB,mHAAA,gBAAgB,OAAA;AAChB,mHAAA,gBAAgB,OAAA;AAChB,kHAAA,eAAe,OAAA"}
@@ -14,9 +14,21 @@
14
14
  *
15
15
  * The next step up ships beside this one: `sqliteSessions({ file })` is the same
16
16
  * port in a file, with nothing to install.
17
+ *
18
+ * ── The owner index (9.26.0) ────────────────────────────────────────────────
19
+ * It also implements the two OPTIONAL members `listByUser` / `ownerOf`, which
20
+ * is what lets a host answer `{ op: 'session-list' }` for a verified caller.
21
+ * The owner is DERIVED at persist time from the stored conversation's own
22
+ * `identity.principal` (`envelopeOwner`) — never declared by a caller, because
23
+ * a store that let you state an owner is a store where owning somebody's
24
+ * session is a matter of asking. A conversation that ran anonymously has no
25
+ * owner and appears in nobody's list.
17
26
  */
18
27
  Object.defineProperty(exports, "__esModule", { value: true });
19
28
  exports.memorySessions = void 0;
29
+ const envelope_js_1 = require("./envelope.js");
30
+ /** How many rows one `listByUser` page carries when the caller names no limit. */
31
+ const DEFAULT_PAGE = 50;
20
32
  /**
21
33
  * An in-process session store.
22
34
  *
@@ -26,12 +38,86 @@ exports.memorySessions = void 0;
26
38
  */
27
39
  function memorySessions() {
28
40
  const stored = new Map();
41
+ /** session id → derived owner. Kept beside the envelopes rather than
42
+ * recomputed per listing: a listing walks every session this process holds,
43
+ * and re-deriving on each one would make a sidebar O(all conversations)
44
+ * worth of JSON reads. */
45
+ const owners = new Map();
46
+ /** How many messages a transcript of this envelope would carry — the count a
47
+ * listing row states. Derived from the same stored shape the transcript
48
+ * reads, so the number and the page can never disagree. */
49
+ const countOf = (envelope) => {
50
+ const data = envelope.data;
51
+ const history = envelope.format === 'flowchart-v1' ? data.conversation?.history : data.history;
52
+ if (!Array.isArray(history))
53
+ return 0;
54
+ let count = 0;
55
+ for (const message of history) {
56
+ const role = message.role;
57
+ const content = message.content;
58
+ if ((role === 'user' || role === 'assistant') && typeof content === 'string' && content) {
59
+ count += 1;
60
+ }
61
+ }
62
+ return count;
63
+ };
29
64
  return {
30
65
  hydrate: (sessionId) => Promise.resolve(stored.get(sessionId)),
31
66
  persist: (sessionId, envelope) => {
32
67
  stored.set(sessionId, envelope);
68
+ const owner = (0, envelope_js_1.envelopeOwner)(envelope);
69
+ // WRITE ONCE. An owner is a fact about the conversation, established by
70
+ // the first turn that signed for it, and no later write moves it:
71
+ //
72
+ // - a turn that names no owner does not ERASE one, or a single leaner
73
+ // identity would silently drop the session out of its owner's list;
74
+ // - a turn that names a DIFFERENT one does not TAKE it, or ownership
75
+ // transfers by writing — which is the whole point of an index nobody
76
+ // can declare into. A store that let the last writer win would undo
77
+ // every ownership check made against it, one turn later.
78
+ //
79
+ // The composer refuses a foreign turn long before this line is reached;
80
+ // this is the store keeping its own promise, for every caller that holds
81
+ // it directly.
82
+ if (owner !== undefined && !owners.has(sessionId))
83
+ owners.set(sessionId, owner);
33
84
  return Promise.resolve();
34
85
  },
86
+ listByUser: (userId, options) => {
87
+ const rows = [];
88
+ for (const [sessionId, owner] of owners) {
89
+ if (owner !== userId)
90
+ continue;
91
+ const envelope = stored.get(sessionId);
92
+ if (envelope === undefined)
93
+ continue;
94
+ rows.push({
95
+ sessionId,
96
+ savedAt: envelope.savedAt,
97
+ format: envelope.format,
98
+ messageCount: countOf(envelope),
99
+ });
100
+ }
101
+ // Newest first — the order a sidebar draws in, and the one every listing
102
+ // in this package promises.
103
+ rows.sort((a, b) => b.savedAt - a.savedAt);
104
+ const limit = Math.max(1, Math.floor(options?.limit ?? DEFAULT_PAGE));
105
+ // The cursor is the OFFSET, as a string. Honest for a Map that is only
106
+ // ever read whole: there is nothing cheaper to seek by, and a cursor
107
+ // that pretended to be a key would skip rows when one is evicted.
108
+ const from = Number.parseInt(options?.cursor ?? '0', 10);
109
+ const start = Number.isFinite(from) && from > 0 ? from : 0;
110
+ const page = rows.slice(start, start + limit);
111
+ const next = start + page.length;
112
+ return Promise.resolve({
113
+ sessions: page,
114
+ ...(next < rows.length && { cursor: String(next) }),
115
+ });
116
+ },
117
+ ownerOf: (sessionId) =>
118
+ // `undefined` for "no such session" AND for "a session nobody signed
119
+ // for" — the deliberate ambiguity the composer's one not-found rests on.
120
+ Promise.resolve(stored.has(sessionId) ? owners.get(sessionId) : undefined),
35
121
  };
36
122
  }
37
123
  exports.memorySessions = memorySessions;
@@ -1 +1 @@
1
- {"version":3,"file":"memorySessions.js","sourceRoot":"","sources":["../../src/hosting/memorySessions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAIH;;;;;;GAMG;AACH,SAAgB,cAAc;IAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,OAAO;QACL,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AATD,wCASC"}
1
+ {"version":3,"file":"memorySessions.js","sourceRoot":"","sources":["../../src/hosting/memorySessions.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@
54
54
  Object.defineProperty(exports, "__esModule", { value: true });
55
55
  exports.nodeHost = exports.jsonWire = exports.jsonWireWith = exports.DEFAULT_SESSION_HEADER = void 0;
56
56
  const artifactWire_js_1 = require("./artifactWire.js");
57
+ const sessionWire_js_1 = require("./sessionWire.js");
57
58
  const httpHost_js_1 = require("./httpHost.js");
58
59
  const HOST_NAME = 'nodeHost';
59
60
  /** The header this dialect reads a session id from when nobody says otherwise. */
@@ -98,11 +99,17 @@ function jsonWireWith(options = {}) {
98
99
  // above, exactly as every other request's does — the resolution is
99
100
  // governed by that same session identity.
100
101
  const artifact = (0, artifactWire_js_1.readArtifactWireOp)(facts.body);
102
+ // The session-history operations (9.26.0), read by their own grammar
103
+ // owner. Same law as the artifact ops beside them: a body naming `op`
104
+ // never quietly becomes a conversation turn, and neither reader claims
105
+ // the other's names.
106
+ const session = (0, sessionWire_js_1.readSessionWireOp)(facts.body);
101
107
  return {
102
108
  input,
103
109
  ...(sessionId !== undefined && { sessionId }),
104
110
  ...(decision !== undefined && { decision }),
105
111
  ...(artifact !== undefined && { artifact }),
112
+ ...(session !== undefined && { session }),
106
113
  ...(minted !== undefined &&
107
114
  sessionCookie !== undefined && {
108
115
  responseHeaders: { 'set-cookie': sessionCookieHeader(sessionCookie, minted) },
@@ -115,6 +122,7 @@ function jsonWireWith(options = {}) {
115
122
  chunk: (text) => ({ text }),
116
123
  awaiting: (pending) => ({ awaiting: pending }),
117
124
  artifact: (result) => (0, artifactWire_js_1.artifactWireBody)(result),
125
+ sessions: (result) => (0, sessionWire_js_1.sessionWireBody)(result),
118
126
  readConversation(facts) {
119
127
  // A handshake has no body, so this dialect names the three places a
120
128
  // session id can be: the header a server-side caller sets, the cookie the
@@ -1 +1 @@
1
- {"version":3,"file":"nodeHost.js","sourceRoot":"","sources":["../../src/hosting/nodeHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodeHost.js","sourceRoot":"","sources":["../../src/hosting/nodeHost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * hosting/sessionWire — the wire grammar for "show me my own conversations",
4
+ * owned once.
5
+ *
6
+ * A hosted agent stores conversations so a person can come back to one. Until
7
+ * now the only way back was to already know the session id: the host could
8
+ * hydrate what you named and nothing else. That is fine for a client that
9
+ * remembers, and useless for the screen everyone actually builds — a sidebar of
10
+ * your past chats.
11
+ *
12
+ * Two operations answer it, and the shape of the pair is the security design:
13
+ *
14
+ * `{ op: 'session-list' }` → the VERIFIED caller's own
15
+ * sessions, newest first
16
+ * `{ op: 'session-transcript', sessionId }` → that session's messages,
17
+ * IF the verified caller
18
+ * owns it
19
+ *
20
+ * ── Why both REQUIRE verified identity ───────────────────────────────────────
21
+ * `HostRequest.userId` is caller data — a string anybody can send, as the port
22
+ * has said since 9.12. Listing "your" sessions from an unverified header is
23
+ * enumeration with a friendly interface: guess an id, read a stranger's
24
+ * conversations. So these ops are refused outright at a door that does not
25
+ * verify ({@link SessionOpNeedsIdentityError}) rather than served under a name
26
+ * nobody proved. This is the one place in the hosting layer where a feature is
27
+ * gated on a SECURITY control being present, and it is gated because the
28
+ * feature without the control is a vulnerability rather than a smaller feature.
29
+ *
30
+ * ── Why a foreign transcript is a 404 and not a 403 ──────────────────────────
31
+ * "That session exists but is not yours" tells an attacker which ids are real.
32
+ * A session that does not exist, one that exists and belongs to somebody else,
33
+ * and one whose store lost it are ONE answer here, byte-identical but for the
34
+ * id the caller already knew. The same law the artifact wire's not-found
35
+ * follows, for the same reason.
36
+ *
37
+ * ── What a transcript actually contains ──────────────────────────────────────
38
+ * The stored envelope's own messages, read through the envelope readers — the
39
+ * `LLMMessage[]` an agent conversation IS. Roles and text, projected: no tool
40
+ * arguments, no tool results, no system prompt. That projection is stated on
41
+ * {@link TranscriptMessage} rather than implied, because a transcript that
42
+ * looked complete while silently dropping the tool leg would be a transcript
43
+ * somebody reconstructs a decision from and gets wrong.
44
+ */
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.sessionWireBody = exports.readSessionWireOp = exports.SESSION_TRANSCRIPT_OP = exports.SESSION_LIST_OP = void 0;
47
+ const errors_js_1 = require("./errors.js");
48
+ const wireOps_js_1 = require("./wireOps.js");
49
+ /** The wire spelling of "my sessions". */
50
+ exports.SESSION_LIST_OP = wireOps_js_1.WIRE_OPS.sessionList;
51
+ /** The wire spelling of "one owned session's messages". */
52
+ exports.SESSION_TRANSCRIPT_OP = wireOps_js_1.WIRE_OPS.sessionTranscript;
53
+ /**
54
+ * Read a session-history operation out of a request body, if the body names
55
+ * one.
56
+ *
57
+ * Returns `undefined` for a body with no `op`, and for an op that belongs to
58
+ * another domain's reader (the artifact ops) — declining is not refusing. An
59
+ * op nobody speaks raises the ONE shared refusal, so the answer is the same
60
+ * whichever reader a dialect happens to call first.
61
+ *
62
+ * Exported for custom {@link import('./httpHost.js').HttpWire} dialects.
63
+ */
64
+ function readSessionWireOp(body) {
65
+ const op = body.op;
66
+ if (op === undefined)
67
+ return undefined;
68
+ if (op !== exports.SESSION_LIST_OP && op !== exports.SESSION_TRANSCRIPT_OP) {
69
+ if ((0, wireOps_js_1.isWireOp)(op))
70
+ return undefined;
71
+ (0, wireOps_js_1.refuseUnknownWireOp)(op);
72
+ }
73
+ if (op === exports.SESSION_LIST_OP)
74
+ return { op: 'list' };
75
+ const sessionId = body.sessionId;
76
+ if (typeof sessionId !== 'string' || sessionId.trim().length === 0) {
77
+ throw new errors_js_1.InvalidWireOpError(`'${exports.SESSION_TRANSCRIPT_OP}' needs 'sessionId' — which conversation to read. The ids a ` +
78
+ `caller may read are exactly the ones '${exports.SESSION_LIST_OP}' hands back; a session id ` +
79
+ `from anywhere else answers the same not-found as one that never existed.`);
80
+ }
81
+ return { op: 'transcript', sessionId };
82
+ }
83
+ exports.readSessionWireOp = readSessionWireOp;
84
+ /**
85
+ * The standard reply body for a resolved session operation:
86
+ * `{ sessions: [...] }` for a list, `{ transcript: { sessionId, messages } }`
87
+ * for a transcript.
88
+ *
89
+ * Authored once so every dialect answers byte-compatibly; a dialect that must
90
+ * add its own envelope fields spreads this and adds them beside (the managed
91
+ * runtime adds its own `status`) — the `artifactWireBody` precedent, verb for
92
+ * verb.
93
+ */
94
+ function sessionWireBody(result) {
95
+ if (result.op === 'list')
96
+ return { sessions: result.sessions };
97
+ return { transcript: { sessionId: result.sessionId, messages: result.messages } };
98
+ }
99
+ exports.sessionWireBody = sessionWireBody;
100
+ //# sourceMappingURL=sessionWire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionWire.js","sourceRoot":"","sources":["../../src/hosting/sessionWire.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;;;AAEH,2CAAiD;AACjD,6CAAuE;AAEvE,0CAA0C;AAC7B,QAAA,eAAe,GAAG,qBAAQ,CAAC,WAAW,CAAC;AACpD,2DAA2D;AAC9C,QAAA,qBAAqB,GAAG,qBAAQ,CAAC,iBAAiB,CAAC;AA0DhE;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,IAAuC;IAEvC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACnB,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,EAAE,KAAK,uBAAe,IAAI,EAAE,KAAK,6BAAqB,EAAE,CAAC;QAC3D,IAAI,IAAA,qBAAQ,EAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QACnC,IAAA,gCAAmB,EAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,EAAE,KAAK,uBAAe;QAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,8BAAkB,CAC1B,IAAI,6BAAqB,8DAA8D;YACrF,yCAAyC,uBAAe,6BAA6B;YACrF,0EAA0E,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAnBD,8CAmBC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAC,MAAyB;IACvD,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/D,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpF,CAAC;AAHD,0CAGC"}
@@ -134,6 +134,28 @@ const META_TABLE = 'agent_store_meta';
134
134
  * guessing.
135
135
  */
136
136
  const SESSIONS_COLUMNS = ['session_id', 'format', 'saved_at', 'envelope'];
137
+ /**
138
+ * The owner index (9.26.0) — two columns ADDED to the same table, and the
139
+ * schema version deliberately NOT bumped.
140
+ *
141
+ * Bumping is for "an older reader could not survive this", and an older reader
142
+ * survives these perfectly: it names its four columns explicitly in both its
143
+ * `INSERT` and its `SELECT`, so two extra nullable columns are invisible to it.
144
+ * Refusing a 9.25 file for missing them would be the opposite mistake — the
145
+ * identity check above stays the ORIGINAL four, and a file that predates this
146
+ * release is opened, migrated with one `ALTER TABLE` per column, and used.
147
+ *
148
+ * What such a file does NOT have is owners for its EXISTING rows: nothing was
149
+ * recorded when they were written, and deriving them would mean parsing every
150
+ * stored envelope on open. Those sessions appear in nobody's list until their
151
+ * next turn re-persists them. Stated rather than papered over, because a
152
+ * sidebar that silently omits last week's conversations is a bug report and a
153
+ * documented migration boundary is not.
154
+ */
155
+ const OWNER_COLUMNS = [
156
+ { name: 'owner', ddl: 'owner TEXT' },
157
+ { name: 'message_count', ddl: 'message_count INTEGER' },
158
+ ];
137
159
  // ─── The store ───────────────────────────────────────────────────────
138
160
  /**
139
161
  * A session store in one SQLite file — the battery-included place to keep a
@@ -195,11 +217,28 @@ function sqliteSessions(options) {
195
217
  throw err;
196
218
  throw new UnreadableSessionFileError(file, 'cannot-open', `${describe(err)}.`);
197
219
  }
198
- const insert = db.prepare(`INSERT INTO ${SESSIONS_TABLE} (session_id, format, saved_at, envelope) VALUES (?, ?, ?, ?) ` +
220
+ const insert = db.prepare(`INSERT INTO ${SESSIONS_TABLE} (session_id, format, saved_at, envelope, owner, message_count) ` +
221
+ `VALUES (?, ?, ?, ?, ?, ?) ` +
199
222
  `ON CONFLICT(session_id) DO UPDATE SET format = excluded.format, ` +
200
- `saved_at = excluded.saved_at, envelope = excluded.envelope`);
223
+ `saved_at = excluded.saved_at, envelope = excluded.envelope, ` +
224
+ // WRITE ONCE — the existing owner wins, and a NULL one is filled in.
225
+ // An owner is a fact about the CONVERSATION, established by the first
226
+ // turn that signed for it: a later turn carrying a leaner identity must
227
+ // not erase it (the session would drop out of its owner's list), and a
228
+ // later turn carrying a DIFFERENT one must not take it (ownership would
229
+ // transfer by writing, which undoes every check made against this index).
230
+ // The argument order is the whole rule; reversing it is the bug.
231
+ `owner = COALESCE(${SESSIONS_TABLE}.owner, excluded.owner), ` +
232
+ `message_count = excluded.message_count`);
201
233
  const select = db.prepare(`SELECT envelope FROM ${SESSIONS_TABLE} WHERE session_id = ?`);
202
234
  const remove = db.prepare(`DELETE FROM ${SESSIONS_TABLE} WHERE session_id = ?`);
235
+ const selectOwner = db.prepare(`SELECT owner FROM ${SESSIONS_TABLE} WHERE session_id = ?`);
236
+ // Keyset pagination, not OFFSET: a cursor that counted rows would skip a
237
+ // conversation whenever an older one is written to between two pages, and a
238
+ // sidebar that quietly loses a row is worse than one that pages slowly.
239
+ const listOwned = db.prepare(`SELECT session_id, format, saved_at, message_count FROM ${SESSIONS_TABLE} ` +
240
+ `WHERE owner = ? AND (saved_at < ? OR (saved_at = ? AND session_id > ?)) ` +
241
+ `ORDER BY saved_at DESC, session_id ASC LIMIT ?`);
203
242
  let closed = false;
204
243
  const open = (verb) => {
205
244
  if (closed) {
@@ -246,7 +285,46 @@ function sqliteSessions(options) {
246
285
  // Checked on the way IN as well as out: a row this store could not read
247
286
  // back is a row it has no business writing.
248
287
  const checked = (0, envelope_js_1.checkEnvelope)(envelope, sessionId);
249
- insert.run(sessionId, checked.format, checked.savedAt, JSON.stringify(checked));
288
+ // The owner index (9.26.0): DERIVED from the conversation's own identity,
289
+ // never supplied by the caller — the port takes no owner argument and
290
+ // gains none, because a store where owning a session is a matter of
291
+ // asking is not an index, it is a formality.
292
+ const owner = (0, envelope_js_1.envelopeOwner)(checked);
293
+ insert.run(sessionId, checked.format, checked.savedAt, JSON.stringify(checked), owner ?? null, (0, envelope_js_1.envelopeTranscript)(checked).length);
294
+ },
295
+ // eslint-disable-next-line @typescript-eslint/require-await
296
+ async listByUser(userId, options) {
297
+ open('list a user’s sessions');
298
+ const limit = Math.max(1, Math.floor(options?.limit ?? DEFAULT_PAGE));
299
+ const after = parseCursor(options?.cursor);
300
+ const rows = listOwned.all(userId, after.savedAt, after.savedAt, after.sessionId,
301
+ // One extra row, so "is there another page?" is a fact rather than a
302
+ // guess from a full page.
303
+ limit + 1);
304
+ const page = rows.slice(0, limit).map((row) => ({
305
+ sessionId: String(row.session_id),
306
+ savedAt: Number(row.saved_at),
307
+ format: String(row.format),
308
+ // A row written before this release has no count. `0` is the honest
309
+ // answer for "this store does not know" here only because the
310
+ // transcript op reads the envelope itself and will say the truth —
311
+ // the count is a listing hint, never the authority.
312
+ messageCount: typeof row.message_count === 'number' ? row.message_count : 0,
313
+ }));
314
+ const last = page[page.length - 1];
315
+ return {
316
+ sessions: page,
317
+ ...(rows.length > limit &&
318
+ last !== undefined && { cursor: `${last.savedAt}:${last.sessionId}` }),
319
+ };
320
+ },
321
+ // eslint-disable-next-line @typescript-eslint/require-await
322
+ async ownerOf(sessionId) {
323
+ open('read a session’s owner');
324
+ const row = selectOwner.get(sessionId);
325
+ // `undefined` for "no such session" AND for "a session nobody signed
326
+ // for" — the deliberate ambiguity the composer's one not-found rests on.
327
+ return typeof row?.owner === 'string' && row.owner.length > 0 ? row.owner : undefined;
250
328
  },
251
329
  // eslint-disable-next-line @typescript-eslint/require-await
252
330
  async forget(sessionId) {
@@ -328,7 +406,8 @@ function applyPragmas(db, busyTimeoutMs) {
328
406
  function ensureSchema(db, file) {
329
407
  db.exec(`CREATE TABLE IF NOT EXISTS ${SESSIONS_TABLE} (` +
330
408
  `session_id TEXT PRIMARY KEY, format TEXT NOT NULL, ` +
331
- `saved_at INTEGER NOT NULL, envelope TEXT NOT NULL) STRICT`);
409
+ `saved_at INTEGER NOT NULL, envelope TEXT NOT NULL, ` +
410
+ `owner TEXT, message_count INTEGER) STRICT`);
332
411
  db.exec(`CREATE TABLE IF NOT EXISTS ${META_TABLE} (key TEXT PRIMARY KEY, value TEXT NOT NULL) STRICT`);
333
412
  // `CREATE TABLE IF NOT EXISTS` succeeds against somebody else's table of the
334
413
  // same name, and the failure would otherwise arrive as a confusing constraint
@@ -339,6 +418,20 @@ function ensureSchema(db, file) {
339
418
  throw new UnreadableSessionFileError(file, 'not-our-schema', `it has a '${SESSIONS_TABLE}' table that is not this store's ` +
340
419
  `(missing ${missing.join(', ')}; found ${columns.join(', ') || 'nothing'}).`);
341
420
  }
421
+ // The additive migration — see OWNER_COLUMNS for why this is not a version
422
+ // bump. Idempotent by construction (each column is added only when absent),
423
+ // so opening the same file twice is one migration, and opening a file this
424
+ // release already created does nothing at all.
425
+ for (const column of OWNER_COLUMNS) {
426
+ if (columns.includes(column.name))
427
+ continue;
428
+ db.exec(`ALTER TABLE ${SESSIONS_TABLE} ADD COLUMN ${column.ddl}`);
429
+ }
430
+ // Owner-scoped listings read `WHERE owner = ? ORDER BY saved_at DESC`; the
431
+ // index is what keeps a person's sidebar from scanning every conversation
432
+ // the process ever stored.
433
+ db.exec(`CREATE INDEX IF NOT EXISTS ${SESSIONS_TABLE}_owner ` +
434
+ `ON ${SESSIONS_TABLE} (owner, saved_at DESC)`);
342
435
  const stored = db
343
436
  .prepare(`SELECT value FROM ${META_TABLE} WHERE key = 'schema_version'`)
344
437
  .get();
@@ -356,4 +449,28 @@ function ensureSchema(db, file) {
356
449
  function describe(err) {
357
450
  return err instanceof Error ? err.message : String(err);
358
451
  }
452
+ /** How many rows one `listByUser` page carries when the caller names no limit. */
453
+ const DEFAULT_PAGE = 50;
454
+ /**
455
+ * Read a listing cursor — `<savedAt>:<sessionId>`, the last row of the previous
456
+ * page.
457
+ *
458
+ * A cursor this store did not mint (a truncation, a hand-edit, a client that
459
+ * kept one across a schema change) restarts at the top rather than throwing:
460
+ * the worst case is a caller seeing page one twice, and refusing a listing
461
+ * because a pagination token went stale would break a sidebar over something
462
+ * that costs nothing to recover from.
463
+ */
464
+ function parseCursor(cursor) {
465
+ const TOP = { savedAt: Number.MAX_SAFE_INTEGER, sessionId: '' };
466
+ if (cursor === undefined)
467
+ return TOP;
468
+ const at = cursor.indexOf(':');
469
+ if (at <= 0)
470
+ return TOP;
471
+ const savedAt = Number.parseInt(cursor.slice(0, at), 10);
472
+ if (!Number.isFinite(savedAt))
473
+ return TOP;
474
+ return { savedAt, sessionId: cursor.slice(at + 1) };
475
+ }
359
476
  //# sourceMappingURL=sqliteSessions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqliteSessions.js","sourceRoot":"","sources":["../../src/hosting/sqliteSessions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;;;AAEH,+CAA8C;AAC9C,2CAAsD;AACtD,0DAAoD;AACpD,sEAAqE;AA2FrE,wEAAwE;AAExE;;;;;;;;;GASG;AACH,oEAAqE;AAA5D,8HAAA,sBAAsB,OAAA;AAE/B;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,GAAG,6BAAsC,CAAC;IACvD,iCAAiC;IACxB,IAAI,CAAS;IACtB,wCAAwC;IAC/B,OAAO,CAAoD;IAEpE,YAAY,IAAY,EAAE,OAA8C,EAAE,MAAc;QACtF,KAAK,CACH,mCAAmC,IAAI,qBAAqB,MAAM,GAAG;YACnE,iFAAiF;YACjF,6EAA6E;YAC7E,2EAA2E;YAC3E,CAAC,OAAO,KAAK,cAAc;gBACzB,CAAC,CAAC,4EAA4E;oBAC5E,0DAA0D;gBAC5D,CAAC,CAAC,OAAO,KAAK,gBAAgB;oBAC9B,CAAC,CAAC,0EAA0E;wBAC1E,gBAAgB;oBAClB,CAAC,CAAC,wEAAwE,GAAG,UAAU,CAAC,CAC7F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAzBD,gEAyBC;AAED,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AAEnF,wEAAwE;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/C,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CACjB,qCAAqC,IAAI,+BAA+B;YACtE,gFAAgF;YAChF,+EAA+E;YAC/E,iFAAiF,CACpF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;IACrD,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,EAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC9C,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,0BAA0B;YAAE,MAAM,GAAG,CAAC;QACzD,MAAM,IAAI,0BAA0B,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,eAAe,cAAc,gEAAgE;QAC3F,kEAAkE;QAClE,4DAA4D,CAC/D,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,cAAc,uBAAuB,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,cAAc,uBAAuB,CAAC,CAAC;IAEhF,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,0CAA0C,IAAI,6BAA6B,IAAI,IAAI;gBACjF,0EAA0E;gBAC1E,8EAA8E;gBAC9E,yBAAyB,CAC5B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,wEAAwE;IACxE,OAAO;QACL,WAAW;QAEX,4DAA4D;QAC5D,KAAK,CAAC,OAAO,CAAC,SAAiB;YAC7B,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAuC,CAAC;YACxE,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAExC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,uEAAuE;gBACvE,oCAAoC;gBACpC,MAAM,IAAI,mCAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;gBACtE,sEAAsE;gBACtE,MAAM,IAAI,mCAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,CAAC;YACD,yEAAyE;YACzE,uEAAuE;YACvE,OAAO,IAAA,2BAAa,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAED,4DAA4D;QAC5D,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,QAA4B;YAC3D,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC1B,wEAAwE;YACxE,4CAA4C;YAC5C,MAAM,OAAO,GAAG,IAAA,2BAAa,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,4DAA4D;QAC5D,KAAK,CAAC,MAAM,CAAC,SAAiB;YAC5B,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAED,KAAK;YACH,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAzGD,wCAyGC;AAED,wEAAwE;AAExE;;;;;;GAMG;AACH,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,4BAAW,EAAqC,aAAa,CAAC,CAAC;QAC3E,IAAI,OAAO,GAAG,EAAE,YAAY,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC,YAAY,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,6CAAsB,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,SAAS,WAAW;IAClB,OAAO,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAC1E,CAAC,CAAC,OAAO,CAAC,OAAO;QACjB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAW,EAA2B,SAAS,CAAC,CAAC;QACvE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,4BAAW,EAA6B,WAAW,CAAC,CAAC;QACzE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,EAAsB,EAAE,aAAqB;IACjE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,GAAG,EAE1C,CAAC;IACd,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,EAAE,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,oCAAoC;IACpC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,OAAO,OAAO,GAAG,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,qFAAqF;AACrF,SAAS,YAAY,CAAC,EAAsB,EAAE,IAAY;IACxD,EAAE,CAAC,IAAI,CACL,8BAA8B,cAAc,IAAI;QAC9C,qDAAqD;QACrD,2DAA2D,CAC9D,CAAC;IACF,EAAE,CAAC,IAAI,CACL,8BAA8B,UAAU,qDAAqD,CAC9F,CAAC;IAEF,6EAA6E;IAC7E,8EAA8E;IAC9E,4BAA4B;IAC5B,MAAM,OAAO,GACX,EAAE,CAAC,OAAO,CAAC,sBAAsB,cAAc,IAAI,CAAC,CAAC,GAAG,EAGzD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,0BAA0B,CAClC,IAAI,EACJ,gBAAgB,EAChB,aAAa,cAAc,mCAAmC;YAC5D,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,IAAI,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,EAAE;SACd,OAAO,CAAC,qBAAqB,UAAU,+BAA+B,CAAC;SACvE,GAAG,EAAqC,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,EAAE,CAAC,OAAO,CAAC,eAAe,UAAU,4CAA4C,CAAC,CAAC,GAAG,CACnF,MAAM,CAAC,cAAc,CAAC,CACvB,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;QACtD,MAAM,IAAI,0BAA0B,CAClC,IAAI,EACJ,cAAc,EACd,sCAAsC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB;YAC5E,iBAAiB,cAAc,GAAG,CACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"sqliteSessions.js","sourceRoot":"","sources":["../../src/hosting/sqliteSessions.ts"],"names":[],"mappings":"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"}