iranti 0.3.32 → 0.3.33

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 (332) hide show
  1. package/README.md +3 -1
  2. package/dist/scripts/api-key-create.js +7 -0
  3. package/dist/scripts/api-key-list.js +6 -0
  4. package/dist/scripts/api-key-revoke.js +6 -0
  5. package/dist/scripts/claude-code-memory-hook.js +10 -0
  6. package/dist/scripts/codex-setup.js +7 -0
  7. package/dist/scripts/iranti-cli.js +20 -0
  8. package/dist/scripts/iranti-mcp.js +11 -1
  9. package/dist/scripts/seed-codebase.js +6 -0
  10. package/dist/scripts/seed.js +7 -0
  11. package/dist/scripts/setup.js +8 -0
  12. package/dist/src/api/archivistScheduler.d.ts +18 -0
  13. package/dist/src/api/archivistScheduler.d.ts.map +1 -1
  14. package/dist/src/api/archivistScheduler.js +18 -0
  15. package/dist/src/api/archivistScheduler.js.map +1 -1
  16. package/dist/src/api/diag.d.ts +11 -0
  17. package/dist/src/api/diag.d.ts.map +1 -1
  18. package/dist/src/api/diag.js +14 -2
  19. package/dist/src/api/diag.js.map +1 -1
  20. package/dist/src/api/healthChecks.d.ts +19 -0
  21. package/dist/src/api/healthChecks.d.ts.map +1 -1
  22. package/dist/src/api/healthChecks.js +19 -0
  23. package/dist/src/api/healthChecks.js.map +1 -1
  24. package/dist/src/api/middleware/auth.d.ts +15 -0
  25. package/dist/src/api/middleware/auth.d.ts.map +1 -1
  26. package/dist/src/api/middleware/auth.js +15 -0
  27. package/dist/src/api/middleware/auth.js.map +1 -1
  28. package/dist/src/api/middleware/authorization.d.ts +18 -0
  29. package/dist/src/api/middleware/authorization.d.ts.map +1 -1
  30. package/dist/src/api/middleware/authorization.js +18 -0
  31. package/dist/src/api/middleware/authorization.js.map +1 -1
  32. package/dist/src/api/middleware/validation.d.ts +25 -339
  33. package/dist/src/api/middleware/validation.d.ts.map +1 -1
  34. package/dist/src/api/middleware/validation.js +19 -8
  35. package/dist/src/api/middleware/validation.js.map +1 -1
  36. package/dist/src/api/repro.d.ts +7 -0
  37. package/dist/src/api/repro.d.ts.map +1 -1
  38. package/dist/src/api/repro.js +8 -1
  39. package/dist/src/api/repro.js.map +1 -1
  40. package/dist/src/api/routes/agents.d.ts +11 -0
  41. package/dist/src/api/routes/agents.d.ts.map +1 -1
  42. package/dist/src/api/routes/agents.js +11 -0
  43. package/dist/src/api/routes/agents.js.map +1 -1
  44. package/dist/src/api/routes/batch.d.ts +12 -0
  45. package/dist/src/api/routes/batch.d.ts.map +1 -1
  46. package/dist/src/api/routes/batch.js +13 -1
  47. package/dist/src/api/routes/batch.js.map +1 -1
  48. package/dist/src/api/routes/dev.d.ts +10 -0
  49. package/dist/src/api/routes/dev.d.ts.map +1 -1
  50. package/dist/src/api/routes/dev.js +11 -1
  51. package/dist/src/api/routes/dev.js.map +1 -1
  52. package/dist/src/api/routes/knowledge.d.ts +26 -0
  53. package/dist/src/api/routes/knowledge.d.ts.map +1 -1
  54. package/dist/src/api/routes/knowledge.js +26 -0
  55. package/dist/src/api/routes/knowledge.js.map +1 -1
  56. package/dist/src/api/routes/memory.d.ts +13 -0
  57. package/dist/src/api/routes/memory.d.ts.map +1 -1
  58. package/dist/src/api/routes/memory.js +13 -0
  59. package/dist/src/api/routes/memory.js.map +1 -1
  60. package/dist/src/api/server.d.ts +20 -0
  61. package/dist/src/api/server.d.ts.map +1 -1
  62. package/dist/src/api/server.js +21 -1
  63. package/dist/src/api/server.js.map +1 -1
  64. package/dist/src/archivist/index.d.ts +21 -0
  65. package/dist/src/archivist/index.d.ts.map +1 -1
  66. package/dist/src/archivist/index.js +24 -2
  67. package/dist/src/archivist/index.js.map +1 -1
  68. package/dist/src/attendant/AttendantInstance.d.ts +42 -0
  69. package/dist/src/attendant/AttendantInstance.d.ts.map +1 -1
  70. package/dist/src/attendant/AttendantInstance.js +71 -6
  71. package/dist/src/attendant/AttendantInstance.js.map +1 -1
  72. package/dist/src/attendant/index.d.ts +19 -0
  73. package/dist/src/attendant/index.d.ts.map +1 -1
  74. package/dist/src/attendant/index.js +19 -0
  75. package/dist/src/attendant/index.js.map +1 -1
  76. package/dist/src/attendant/registry.d.ts +15 -0
  77. package/dist/src/attendant/registry.d.ts.map +1 -1
  78. package/dist/src/attendant/registry.js +15 -0
  79. package/dist/src/attendant/registry.js.map +1 -1
  80. package/dist/src/lib/assistantCheckpoint.d.ts +16 -0
  81. package/dist/src/lib/assistantCheckpoint.d.ts.map +1 -1
  82. package/dist/src/lib/assistantCheckpoint.js +16 -0
  83. package/dist/src/lib/assistantCheckpoint.js.map +1 -1
  84. package/dist/src/lib/autoRemember.d.ts +26 -0
  85. package/dist/src/lib/autoRemember.d.ts.map +1 -1
  86. package/dist/src/lib/autoRemember.js +26 -0
  87. package/dist/src/lib/autoRemember.js.map +1 -1
  88. package/dist/src/lib/check-bootstrap-state.d.ts +9 -0
  89. package/dist/src/lib/check-bootstrap-state.d.ts.map +1 -1
  90. package/dist/src/lib/check-bootstrap-state.js +9 -0
  91. package/dist/src/lib/check-bootstrap-state.js.map +1 -1
  92. package/dist/src/lib/cliHelpCatalog.d.ts +16 -0
  93. package/dist/src/lib/cliHelpCatalog.d.ts.map +1 -1
  94. package/dist/src/lib/cliHelpCatalog.js +16 -0
  95. package/dist/src/lib/cliHelpCatalog.js.map +1 -1
  96. package/dist/src/lib/cliHelpRenderer.d.ts +20 -0
  97. package/dist/src/lib/cliHelpRenderer.d.ts.map +1 -1
  98. package/dist/src/lib/cliHelpRenderer.js +20 -0
  99. package/dist/src/lib/cliHelpRenderer.js.map +1 -1
  100. package/dist/src/lib/commandErrors.d.ts +16 -0
  101. package/dist/src/lib/commandErrors.d.ts.map +1 -1
  102. package/dist/src/lib/commandErrors.js +16 -0
  103. package/dist/src/lib/commandErrors.js.map +1 -1
  104. package/dist/src/lib/commandInvocation.d.ts +18 -0
  105. package/dist/src/lib/commandInvocation.d.ts.map +1 -1
  106. package/dist/src/lib/commandInvocation.js +18 -0
  107. package/dist/src/lib/commandInvocation.js.map +1 -1
  108. package/dist/src/lib/createFirstPartyIranti.d.ts +11 -0
  109. package/dist/src/lib/createFirstPartyIranti.d.ts.map +1 -1
  110. package/dist/src/lib/createFirstPartyIranti.js +11 -0
  111. package/dist/src/lib/createFirstPartyIranti.js.map +1 -1
  112. package/dist/src/lib/dbStaffEventEmitter.d.ts +15 -0
  113. package/dist/src/lib/dbStaffEventEmitter.d.ts.map +1 -1
  114. package/dist/src/lib/dbStaffEventEmitter.js +15 -0
  115. package/dist/src/lib/dbStaffEventEmitter.js.map +1 -1
  116. package/dist/src/lib/decay.d.ts +14 -0
  117. package/dist/src/lib/decay.d.ts.map +1 -1
  118. package/dist/src/lib/decay.js +19 -1
  119. package/dist/src/lib/decay.js.map +1 -1
  120. package/dist/src/lib/dockerCliParsing.d.ts +11 -0
  121. package/dist/src/lib/dockerCliParsing.d.ts.map +1 -1
  122. package/dist/src/lib/dockerCliParsing.js +11 -0
  123. package/dist/src/lib/dockerCliParsing.js.map +1 -1
  124. package/dist/src/lib/escalationPaths.d.ts +15 -0
  125. package/dist/src/lib/escalationPaths.d.ts.map +1 -1
  126. package/dist/src/lib/escalationPaths.js +15 -0
  127. package/dist/src/lib/escalationPaths.js.map +1 -1
  128. package/dist/src/lib/fileMutation.d.ts +18 -0
  129. package/dist/src/lib/fileMutation.d.ts.map +1 -1
  130. package/dist/src/lib/fileMutation.js +18 -0
  131. package/dist/src/lib/fileMutation.js.map +1 -1
  132. package/dist/src/lib/hostMemoryFormatting.d.ts +18 -0
  133. package/dist/src/lib/hostMemoryFormatting.d.ts.map +1 -1
  134. package/dist/src/lib/hostMemoryFormatting.js +18 -0
  135. package/dist/src/lib/hostMemoryFormatting.js.map +1 -1
  136. package/dist/src/lib/issueFacts.d.ts +17 -0
  137. package/dist/src/lib/issueFacts.d.ts.map +1 -1
  138. package/dist/src/lib/issueFacts.js +17 -0
  139. package/dist/src/lib/issueFacts.js.map +1 -1
  140. package/dist/src/lib/llm.d.ts +26 -0
  141. package/dist/src/lib/llm.d.ts.map +1 -1
  142. package/dist/src/lib/llm.js +37 -16
  143. package/dist/src/lib/llm.js.map +1 -1
  144. package/dist/src/lib/metrics.d.ts +16 -0
  145. package/dist/src/lib/metrics.d.ts.map +1 -1
  146. package/dist/src/lib/metrics.js +16 -0
  147. package/dist/src/lib/metrics.js.map +1 -1
  148. package/dist/src/lib/packageRoot.d.ts +10 -0
  149. package/dist/src/lib/packageRoot.d.ts.map +1 -1
  150. package/dist/src/lib/packageRoot.js +10 -0
  151. package/dist/src/lib/packageRoot.js.map +1 -1
  152. package/dist/src/lib/projectLearning.d.ts +22 -0
  153. package/dist/src/lib/projectLearning.d.ts.map +1 -1
  154. package/dist/src/lib/projectLearning.js +22 -0
  155. package/dist/src/lib/projectLearning.js.map +1 -1
  156. package/dist/src/lib/protocolEnforcement.d.ts +21 -0
  157. package/dist/src/lib/protocolEnforcement.d.ts.map +1 -1
  158. package/dist/src/lib/protocolEnforcement.js +21 -0
  159. package/dist/src/lib/protocolEnforcement.js.map +1 -1
  160. package/dist/src/lib/providers/claude.d.ts +12 -0
  161. package/dist/src/lib/providers/claude.d.ts.map +1 -1
  162. package/dist/src/lib/providers/claude.js +12 -0
  163. package/dist/src/lib/providers/claude.js.map +1 -1
  164. package/dist/src/lib/providers/gemini.d.ts +11 -0
  165. package/dist/src/lib/providers/gemini.d.ts.map +1 -1
  166. package/dist/src/lib/providers/gemini.js +11 -0
  167. package/dist/src/lib/providers/gemini.js.map +1 -1
  168. package/dist/src/lib/providers/groq.d.ts +11 -0
  169. package/dist/src/lib/providers/groq.d.ts.map +1 -1
  170. package/dist/src/lib/providers/groq.js +11 -0
  171. package/dist/src/lib/providers/groq.js.map +1 -1
  172. package/dist/src/lib/providers/mistral.d.ts +11 -0
  173. package/dist/src/lib/providers/mistral.d.ts.map +1 -1
  174. package/dist/src/lib/providers/mistral.js +11 -0
  175. package/dist/src/lib/providers/mistral.js.map +1 -1
  176. package/dist/src/lib/providers/mock.d.ts +25 -0
  177. package/dist/src/lib/providers/mock.d.ts.map +1 -1
  178. package/dist/src/lib/providers/mock.js +25 -0
  179. package/dist/src/lib/providers/mock.js.map +1 -1
  180. package/dist/src/lib/providers/ollama.d.ts +11 -0
  181. package/dist/src/lib/providers/ollama.d.ts.map +1 -1
  182. package/dist/src/lib/providers/ollama.js +11 -0
  183. package/dist/src/lib/providers/ollama.js.map +1 -1
  184. package/dist/src/lib/providers/openai.d.ts +12 -0
  185. package/dist/src/lib/providers/openai.d.ts.map +1 -1
  186. package/dist/src/lib/providers/openai.js +21 -6
  187. package/dist/src/lib/providers/openai.js.map +1 -1
  188. package/dist/src/lib/requestContext.d.ts +12 -0
  189. package/dist/src/lib/requestContext.d.ts.map +1 -1
  190. package/dist/src/lib/requestContext.js +12 -0
  191. package/dist/src/lib/requestContext.js.map +1 -1
  192. package/dist/src/lib/router.d.ts +19 -0
  193. package/dist/src/lib/router.d.ts.map +1 -1
  194. package/dist/src/lib/router.js +19 -0
  195. package/dist/src/lib/router.js.map +1 -1
  196. package/dist/src/lib/runtimeDependencies.d.ts +17 -0
  197. package/dist/src/lib/runtimeDependencies.d.ts.map +1 -1
  198. package/dist/src/lib/runtimeDependencies.js +17 -0
  199. package/dist/src/lib/runtimeDependencies.js.map +1 -1
  200. package/dist/src/lib/runtimeEnv.d.ts +17 -0
  201. package/dist/src/lib/runtimeEnv.d.ts.map +1 -1
  202. package/dist/src/lib/runtimeEnv.js +17 -0
  203. package/dist/src/lib/runtimeEnv.js.map +1 -1
  204. package/dist/src/lib/runtimeLifecycle.d.ts +27 -0
  205. package/dist/src/lib/runtimeLifecycle.d.ts.map +1 -1
  206. package/dist/src/lib/runtimeLifecycle.js +27 -0
  207. package/dist/src/lib/runtimeLifecycle.js.map +1 -1
  208. package/dist/src/lib/scaffoldCloseout.d.ts +12 -0
  209. package/dist/src/lib/scaffoldCloseout.d.ts.map +1 -1
  210. package/dist/src/lib/scaffoldCloseout.js +19 -24
  211. package/dist/src/lib/scaffoldCloseout.js.map +1 -1
  212. package/dist/src/lib/semanticFactTags.d.ts +13 -0
  213. package/dist/src/lib/semanticFactTags.d.ts.map +1 -1
  214. package/dist/src/lib/semanticFactTags.js +46 -135
  215. package/dist/src/lib/semanticFactTags.js.map +1 -1
  216. package/dist/src/lib/sessionLedger.d.ts +19 -0
  217. package/dist/src/lib/sessionLedger.d.ts.map +1 -1
  218. package/dist/src/lib/sessionLedger.js +19 -0
  219. package/dist/src/lib/sessionLedger.js.map +1 -1
  220. package/dist/src/lib/sharedStateInvalidation.d.ts +22 -0
  221. package/dist/src/lib/sharedStateInvalidation.d.ts.map +1 -1
  222. package/dist/src/lib/sharedStateInvalidation.js +22 -0
  223. package/dist/src/lib/sharedStateInvalidation.js.map +1 -1
  224. package/dist/src/lib/staffEventEmitter.d.ts +20 -0
  225. package/dist/src/lib/staffEventEmitter.d.ts.map +1 -1
  226. package/dist/src/lib/staffEventEmitter.js +20 -2
  227. package/dist/src/lib/staffEventEmitter.js.map +1 -1
  228. package/dist/src/lib/staffEventRegistry.d.ts +14 -0
  229. package/dist/src/lib/staffEventRegistry.d.ts.map +1 -1
  230. package/dist/src/lib/staffEventRegistry.js +14 -3
  231. package/dist/src/lib/staffEventRegistry.js.map +1 -1
  232. package/dist/src/lib/staffEventsTable.d.ts +13 -0
  233. package/dist/src/lib/staffEventsTable.d.ts.map +1 -1
  234. package/dist/src/lib/staffEventsTable.js +13 -0
  235. package/dist/src/lib/staffEventsTable.js.map +1 -1
  236. package/dist/src/librarian/chunker.d.ts +19 -0
  237. package/dist/src/librarian/chunker.d.ts.map +1 -1
  238. package/dist/src/librarian/chunker.js +19 -0
  239. package/dist/src/librarian/chunker.js.map +1 -1
  240. package/dist/src/librarian/contextual-conflicts.d.ts +25 -2
  241. package/dist/src/librarian/contextual-conflicts.d.ts.map +1 -1
  242. package/dist/src/librarian/contextual-conflicts.js +22 -0
  243. package/dist/src/librarian/contextual-conflicts.js.map +1 -1
  244. package/dist/src/librarian/getPolicy.d.ts +16 -1
  245. package/dist/src/librarian/getPolicy.d.ts.map +1 -1
  246. package/dist/src/librarian/getPolicy.js +14 -0
  247. package/dist/src/librarian/getPolicy.js.map +1 -1
  248. package/dist/src/librarian/guards.d.ts +21 -0
  249. package/dist/src/librarian/guards.d.ts.map +1 -1
  250. package/dist/src/librarian/guards.js +21 -0
  251. package/dist/src/librarian/guards.js.map +1 -1
  252. package/dist/src/librarian/index.d.ts +32 -0
  253. package/dist/src/librarian/index.d.ts.map +1 -1
  254. package/dist/src/librarian/index.js +32 -0
  255. package/dist/src/librarian/index.js.map +1 -1
  256. package/dist/src/librarian/policy.d.ts +19 -0
  257. package/dist/src/librarian/policy.d.ts.map +1 -1
  258. package/dist/src/librarian/policy.js +19 -0
  259. package/dist/src/librarian/policy.js.map +1 -1
  260. package/dist/src/librarian/scoring.d.ts +10 -0
  261. package/dist/src/librarian/scoring.d.ts.map +1 -1
  262. package/dist/src/librarian/scoring.js +10 -0
  263. package/dist/src/librarian/scoring.js.map +1 -1
  264. package/dist/src/librarian/source-reliability.d.ts +15 -0
  265. package/dist/src/librarian/source-reliability.d.ts.map +1 -1
  266. package/dist/src/librarian/source-reliability.js +15 -0
  267. package/dist/src/librarian/source-reliability.js.map +1 -1
  268. package/dist/src/library/agent-registry.d.ts +17 -0
  269. package/dist/src/library/agent-registry.d.ts.map +1 -1
  270. package/dist/src/library/agent-registry.js +17 -0
  271. package/dist/src/library/agent-registry.js.map +1 -1
  272. package/dist/src/library/backends/chromaBackend.d.ts +17 -0
  273. package/dist/src/library/backends/chromaBackend.d.ts.map +1 -1
  274. package/dist/src/library/backends/chromaBackend.js +17 -0
  275. package/dist/src/library/backends/chromaBackend.js.map +1 -1
  276. package/dist/src/library/backends/index.d.ts +14 -0
  277. package/dist/src/library/backends/index.d.ts.map +1 -1
  278. package/dist/src/library/backends/index.js +14 -0
  279. package/dist/src/library/backends/index.js.map +1 -1
  280. package/dist/src/library/backends/pgvectorBackend.d.ts +16 -0
  281. package/dist/src/library/backends/pgvectorBackend.d.ts.map +1 -1
  282. package/dist/src/library/backends/pgvectorBackend.js +16 -0
  283. package/dist/src/library/backends/pgvectorBackend.js.map +1 -1
  284. package/dist/src/library/backends/qdrantBackend.d.ts +16 -0
  285. package/dist/src/library/backends/qdrantBackend.d.ts.map +1 -1
  286. package/dist/src/library/backends/qdrantBackend.js +24 -10
  287. package/dist/src/library/backends/qdrantBackend.js.map +1 -1
  288. package/dist/src/library/client.d.ts +22 -0
  289. package/dist/src/library/client.d.ts.map +1 -1
  290. package/dist/src/library/client.js +22 -0
  291. package/dist/src/library/client.js.map +1 -1
  292. package/dist/src/library/embeddings.d.ts +26 -0
  293. package/dist/src/library/embeddings.d.ts.map +1 -1
  294. package/dist/src/library/embeddings.js +26 -0
  295. package/dist/src/library/embeddings.js.map +1 -1
  296. package/dist/src/library/entity-resolution.d.ts +29 -0
  297. package/dist/src/library/entity-resolution.d.ts.map +1 -1
  298. package/dist/src/library/entity-resolution.js +29 -0
  299. package/dist/src/library/entity-resolution.js.map +1 -1
  300. package/dist/src/library/locks.d.ts +20 -0
  301. package/dist/src/library/locks.d.ts.map +1 -1
  302. package/dist/src/library/locks.js +20 -0
  303. package/dist/src/library/locks.js.map +1 -1
  304. package/dist/src/library/queries.d.ts +26 -1
  305. package/dist/src/library/queries.d.ts.map +1 -1
  306. package/dist/src/library/queries.js +25 -0
  307. package/dist/src/library/queries.js.map +1 -1
  308. package/dist/src/library/relationships.d.ts +17 -0
  309. package/dist/src/library/relationships.d.ts.map +1 -1
  310. package/dist/src/library/relationships.js +17 -0
  311. package/dist/src/library/relationships.js.map +1 -1
  312. package/dist/src/library/vectorBackend.d.ts +18 -0
  313. package/dist/src/library/vectorBackend.d.ts.map +1 -1
  314. package/dist/src/library/vectorBackend.js +18 -0
  315. package/dist/src/library/vectorBackend.js.map +1 -1
  316. package/dist/src/staff/archivistReasoning.d.ts +17 -0
  317. package/dist/src/staff/archivistReasoning.d.ts.map +1 -1
  318. package/dist/src/staff/archivistReasoning.js +17 -17
  319. package/dist/src/staff/archivistReasoning.js.map +1 -1
  320. package/dist/src/staff/council.d.ts +13 -0
  321. package/dist/src/staff/council.d.ts.map +1 -1
  322. package/dist/src/staff/council.js +13 -13
  323. package/dist/src/staff/council.js.map +1 -1
  324. package/dist/src/staff/subTurnLoop.d.ts +25 -0
  325. package/dist/src/staff/subTurnLoop.d.ts.map +1 -1
  326. package/dist/src/staff/subTurnLoop.js +25 -25
  327. package/dist/src/staff/subTurnLoop.js.map +1 -1
  328. package/dist/src/types.d.ts +8 -0
  329. package/dist/src/types.d.ts.map +1 -1
  330. package/dist/src/types.js +8 -1
  331. package/dist/src/types.js.map +1 -1
  332. package/package.json +1 -1
package/README.md CHANGED
@@ -87,15 +87,17 @@ Iranti is built around four internal Staff components that run alongside the hos
87
87
  The Attendant runs in three phases — `pre-response`, `mid-turn`, and `post-response` — and returns a structured result each time. Beyond raw fact injection, every `attend` response carries:
88
88
 
89
89
  - **`toolCallGuidance`** — when the host passes a pending tool call (`Read`, `Grep`, `Glob`, `Bash`, `WebSearch`, `WebFetch`), the Attendant derives entity hints from the tool args and emits a `shouldSkip` verdict when stored facts already cover the target. Hosts can gate tool execution on the verdict instead of string-matching notes.
90
- - **`drift`** — detects when the latest message has diverged from the declared task topic. Emits the driving tokens so the host can surface a confirmation prompt.
90
+ - **`drift`** — detects when the latest message has diverged from the declared task topic. Emits the driving tokens so the host can surface a confirmation prompt. Suppressed when `checkpoint.currentStep` starts with `COMPLETE` — so a finished task does not produce spurious drift alarms as the conversation winds down.
91
91
  - **`sessionObjective`** — derived from the task description or checkpoint continuation, threaded through every attend call as a stable anchor.
92
92
  - **`autoCheckpointSignal`** — fires when pressure has built up (drift, turns-without-write, tool-cost threshold) so the host can checkpoint before the next risky step.
93
93
  - **`refinementPass`** — when the first retrieval pass comes back empty, the Attendant runs a bounded widened-hint retry (max 1 extra observe call) and reports the outcome.
94
94
  - **`subTurnLoopPlan`** — on `mid-turn` attends, when the host passes a `partialResponse` of the Attendant's own in-progress assistant output, the Attendant re-scores the partial against memory, harvests novel tokens and entity hints from the text, and fires one bounded extra observe call with the widened hints unioned onto the original ones. Net-new facts are deduped against the pre-retry baseline so repeat hits are dropped. Gated by phase, partial length, a once-per-turn budget, and a novelty check on the tokens. This is `refinementPass` re-applied on response progress rather than empty initial retrieval — the "most agentic" sub-turn loop from the M-series memo.
95
95
  - **`attendantToolPlan`** — up to three planned follow-up tool calls (search_related, observe_entity, query) derived from brief entities, drift tokens, or the session objective. Deterministic and surfaced, never executed.
96
96
  - **`councilConsultationPlan`** — proposes which peer Staff members the Attendant would consult for this turn (e.g. Librarian for source-reliability on a clear topic, Archivist when the injection surface has multiple low-confidence facts). Proposal only.
97
+ - **`usageGuidance`** — carries the MANDATORY protocol reminder block. Gated on compliance health: when all counters (`turnsWithoutWrite`, `consecutiveUnusedMemoryInjections`, etc.) are zero the reminder is suppressed so well-behaved agents do not pay the injection cost every turn.
97
98
  - **`writeNudge`** — reminds the host to write a fact after substantial activity without a durable write.
98
99
  - **`toolResultExtraction`** — on mid-turn/post-response, the Attendant extracts candidate facts from the tool result so the host can autowrite them.
100
+ - **`responseFileCapture`** — on `post-response`, the Attendant scans the assistant's reply for file paths, infers the action (`edited`/`created`/`read`) from the ±150-character context window around each match, and auto-writes `project/{id}/file/{basename}` facts so file-scoped memory is populated without host involvement. Result carries `autowriteBatchId`, `filesDetected`, `factsWritten`, `entities`, `skipped`, and `durationMs`. Only present on post-response attend calls.
99
101
 
100
102
  ### Archivist reasoning budget
101
103
 
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * CLI utility to create or rotate an iranti API key.
5
+ *
6
+ * Args: --key-id <id>, --owner <owner>, --scopes <csv>, --description <text>.
7
+ * Run: `npm run api-key:create -- --key-id <id> --owner <owner>`.
8
+ * Requires DATABASE_URL.
9
+ */
3
10
  require("dotenv/config");
4
11
  const client_1 = require("../src/library/client");
5
12
  const apiKeys_1 = require("../src/security/apiKeys");
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * CLI utility to list all registered iranti API keys.
5
+ *
6
+ * Prints keyId, owner, active status, scopes, and createdAt for each key.
7
+ * Run: `npm run api-key:list`. Requires DATABASE_URL.
8
+ */
3
9
  require("dotenv/config");
4
10
  const client_1 = require("../src/library/client");
5
11
  const apiKeys_1 = require("../src/security/apiKeys");
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * CLI utility to revoke an iranti API key by keyId.
5
+ *
6
+ * Args: --key-id <id> (alias: -k). Exits non-zero if the key is not found.
7
+ * Run: `npm run api-key:revoke -- --key-id <id>`. Requires DATABASE_URL.
8
+ */
3
9
  require("dotenv/config");
4
10
  const client_1 = require("../src/library/client");
5
11
  const apiKeys_1 = require("../src/security/apiKeys");
@@ -4,6 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.buildHookAdditionalContext = buildHookAdditionalContext;
7
+ /**
8
+ * Claude Code session lifecycle hook for iranti auto-memory.
9
+ *
10
+ * Called by the Claude Code harness on SessionStart, UserPromptSubmit,
11
+ * Stop, and PreCompact events via settings.json hooks configuration.
12
+ * Reads the event JSON from stdin, injects memory into context, and
13
+ * persists durable facts extracted from assistant responses.
14
+ *
15
+ * Requires DATABASE_URL or IRANTI_PROJECT_ENV / IRANTI_INSTANCE_ENV binding.
16
+ */
7
17
  require("dotenv/config");
8
18
  const path_1 = __importDefault(require("path"));
9
19
  const createFirstPartyIranti_1 = require("../src/lib/createFirstPartyIranti");
@@ -3,6 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Configures a project directory for Codex (OpenAI agent) integration with iranti.
8
+ *
9
+ * Writes AGENTS.md, .vscode/mcp.json, and hooks configuration so the Codex CLI
10
+ * automatically connects to this project's iranti instance.
11
+ * Run: `iranti codex-setup [project-dir]`.
12
+ */
6
13
  const node_fs_1 = __importDefault(require("node:fs"));
7
14
  const node_path_1 = __importDefault(require("node:path"));
8
15
  const commandInvocation_1 = require("../src/lib/commandInvocation");
@@ -4,6 +4,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ /**
8
+ * Main CLI entry point for the iranti binary.
9
+ *
10
+ * Provides commands: install, setup, configure, auth, doctor, run, attend,
11
+ * handshake, resolve, integrate, project-init, instance, status, upgrade,
12
+ * uninstall, issues, list-rules, delete-rule, and more.
13
+ *
14
+ * Run via `npx iranti <command>` or `iranti <command>` after global install.
15
+ * Requires DATABASE_URL or a project/instance binding for most commands.
16
+ */
17
+ /**
18
+ * Main CLI entry point for the iranti binary.
19
+ *
20
+ * Provides commands: install, setup, configure, auth, doctor, run, attend,
21
+ * handshake, resolve, integrate, project-init, instance, status, upgrade,
22
+ * uninstall, issues, list-rules, delete-rule, and more.
23
+ *
24
+ * Run via `npx iranti <command>` or `iranti <command>` after global install.
25
+ * Requires DATABASE_URL or a project/instance binding for most commands.
26
+ */
7
27
  const fs_1 = __importDefault(require("fs"));
8
28
  const promises_1 = __importDefault(require("fs/promises"));
9
29
  const os_1 = __importDefault(require("os"));
@@ -36,6 +36,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ /**
40
+ * MCP (Model Context Protocol) server for iranti.
41
+ *
42
+ * Exposes iranti tools (iranti_handshake, iranti_attend, iranti_write, etc.)
43
+ * over stdio transport. Loaded by Claude Code, Codex, Copilot, and other
44
+ * MCP-aware agents via their MCP server configuration.
45
+ *
46
+ * Env: DATABASE_URL required. Optional: IRANTI_MCP_DEFAULT_AGENT,
47
+ * IRANTI_PROJECT_ENV, IRANTI_INSTANCE_ENV, IRANTI_MCP_AGENT_NAME.
48
+ */
39
49
  const node_fs_1 = __importDefault(require("node:fs"));
40
50
  const node_path_1 = __importDefault(require("node:path"));
41
51
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
@@ -450,7 +460,7 @@ async function main() {
450
460
  }
451
461
  const server = new mcp_js_1.McpServer({
452
462
  name: 'iranti-mcp',
453
- version: '0.3.22',
463
+ version: '0.3.33',
454
464
  });
455
465
  server.registerTool('iranti_handshake', {
456
466
  description: `Initialize or refresh an agent's working-memory brief for the current task.
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Seeds iranti with static codebase metadata facts (packages, database schema,
5
+ * architecture overview) to pre-populate a fresh instance with project context.
6
+ *
7
+ * Requires DATABASE_URL.
8
+ */
3
9
  require("dotenv/config");
4
10
  const sdk_1 = require("../src/sdk");
5
11
  async function seedCodebase() {
@@ -1,5 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Seeds initial operating rules for librarian, attendant, and archivist
5
+ * staff roles into the iranti knowledge base.
6
+ *
7
+ * Safe to re-run -- the Librarian pipeline deduplicates on (entityType, entityId, key).
8
+ * Must be run after setup.ts on a fresh database. Requires DATABASE_URL.
9
+ */
3
10
  require("dotenv/config");
4
11
  const client_1 = require("../src/library/client");
5
12
  const queries_1 = require("../src/library/queries");
@@ -3,6 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Database setup and migration runner for iranti.
8
+ *
9
+ * Creates the Prisma DB schema, runs pending migrations, seeds initial
10
+ * operating-rule data, and ensures escalation folders exist on disk.
11
+ *
12
+ * Run: `npm run setup` or `iranti setup`. Requires DATABASE_URL.
13
+ */
6
14
  require("dotenv/config");
7
15
  const child_process_1 = require("child_process");
8
16
  const fs_1 = __importDefault(require("fs"));
@@ -1,3 +1,21 @@
1
+ /**
2
+ * Archivist scheduler — drives periodic and file-watch-triggered maintenance.
3
+ *
4
+ * Wraps `iranti.runMaintenance()` in two trigger modes, both optional and
5
+ * independently enabled via env vars:
6
+ * - **Interval** (`IRANTI_ARCHIVIST_INTERVAL_MS`) — runs maintenance on a
7
+ * fixed timer. Set to 0 or omit to disable.
8
+ * - **Escalation watch** (`IRANTI_ARCHIVIST_WATCH`, default true) — uses
9
+ * `fs.watch` on the active escalation folder; fires a debounced maintenance
10
+ * run whenever a `.md` file changes (debounce: `IRANTI_ARCHIVIST_DEBOUNCE_MS`,
11
+ * default 60 s). Prevents redundant runs when multiple files are written rapidly.
12
+ *
13
+ * Maintenance runs are serialised — a `running` flag drops overlapping triggers
14
+ * into a single `pendingRun` that fires immediately after the current run ends.
15
+ *
16
+ * Returns a `SchedulerHandle` with `{ started, stop() }` so the server can
17
+ * cleanly shut down timers and the file watcher on exit.
18
+ */
1
19
  import { Iranti } from '../sdk';
2
20
  type SchedulerHandle = {
3
21
  stop: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"archivistScheduler.d.ts","sourceRoot":"","sources":["../../../src/api/archivistScheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAgBF,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4EtF"}
1
+ {"version":3,"file":"archivistScheduler.d.ts","sourceRoot":"","sources":["../../../src/api/archivistScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAgBF,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4EtF"}
@@ -1,4 +1,22 @@
1
1
  "use strict";
2
+ /**
3
+ * Archivist scheduler — drives periodic and file-watch-triggered maintenance.
4
+ *
5
+ * Wraps `iranti.runMaintenance()` in two trigger modes, both optional and
6
+ * independently enabled via env vars:
7
+ * - **Interval** (`IRANTI_ARCHIVIST_INTERVAL_MS`) — runs maintenance on a
8
+ * fixed timer. Set to 0 or omit to disable.
9
+ * - **Escalation watch** (`IRANTI_ARCHIVIST_WATCH`, default true) — uses
10
+ * `fs.watch` on the active escalation folder; fires a debounced maintenance
11
+ * run whenever a `.md` file changes (debounce: `IRANTI_ARCHIVIST_DEBOUNCE_MS`,
12
+ * default 60 s). Prevents redundant runs when multiple files are written rapidly.
13
+ *
14
+ * Maintenance runs are serialised — a `running` flag drops overlapping triggers
15
+ * into a single `pendingRun` that fires immediately after the current run ends.
16
+ *
17
+ * Returns a `SchedulerHandle` with `{ started, stop() }` so the server can
18
+ * cleanly shut down timers and the file watcher on exit.
19
+ */
2
20
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"archivistScheduler.js","sourceRoot":"","sources":["../../../src/api/archivistScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archivistScheduler.js","sourceRoot":"","sources":["../../../src/api/archivistScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,13 @@
1
+ /**
2
+ * Dev-only: active-handle / active-request diagnostics for the iranti Express server.
3
+ *
4
+ * Starts a minimal Express server and a raw http.createServer on ports 3001/3002,
5
+ * then calls the Node.js internal `_getActiveHandles` / `_getActiveRequests` APIs
6
+ * to inspect what is keeping the event loop alive at each lifecycle stage.
7
+ *
8
+ * NOT shipped — run directly with ts-node for debugging graceful-shutdown hang issues.
9
+ * The `(process as NodeProcessInternal)` casts are intentional: these are private
10
+ * Node.js inspection APIs with no public TypeScript declarations.
11
+ */
1
12
  export {};
2
13
  //# sourceMappingURL=diag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diag.d.ts","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"diag.d.ts","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ /**
3
+ * Dev-only: active-handle / active-request diagnostics for the iranti Express server.
4
+ *
5
+ * Starts a minimal Express server and a raw http.createServer on ports 3001/3002,
6
+ * then calls the Node.js internal `_getActiveHandles` / `_getActiveRequests` APIs
7
+ * to inspect what is keeping the event loop alive at each lifecycle stage.
8
+ *
9
+ * NOT shipped — run directly with ts-node for debugging graceful-shutdown hang issues.
10
+ * The `(process as NodeProcessInternal)` casts are intentional: these are private
11
+ * Node.js inspection APIs with no public TypeScript declarations.
12
+ */
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
@@ -23,8 +34,9 @@ async function testExpress() {
23
34
  console.log('Express listening on 3001');
24
35
  logHandles('After Express listen');
25
36
  // Check if server handle is ref'd
26
- if (server._handle && typeof server._handle.hasRef === 'function') {
27
- console.log(`Server handle hasRef: ${server._handle.hasRef()}`);
37
+ const serverWithHandle = server;
38
+ if (serverWithHandle._handle && typeof serverWithHandle._handle.hasRef === 'function') {
39
+ console.log(`Server handle hasRef: ${serverWithHandle._handle.hasRef()}`);
28
40
  }
29
41
  // Wait a bit and check again
30
42
  setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"diag.js","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":";;;;;AAAA,sDAA8B;AAC9B,gDAAwB;AAExB,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAI,OAAe,CAAC,iBAAiB,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAI,OAAe,CAAC,kBAAkB,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,WAAW;IACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAEnC,kCAAkC;QAClC,IAAK,MAAc,CAAC,OAAO,IAAI,OAAQ,MAAc,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,yBAA0B,MAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,6BAA6B;QAC7B,UAAU,CAAC,GAAG,EAAE;YACZ,UAAU,CAAC,oBAAoB,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,WAAW;IAChB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAEpC,UAAU,CAAC,GAAG,EAAE;YACZ,UAAU,CAAC,qBAAqB,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC;AAED,UAAU,CAAC,SAAS,CAAC,CAAC;AACtB,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"diag.js","sourceRoot":"","sources":["../../../src/api/diag.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAEH,sDAA8B;AAC9B,gDAAwB;AAaxB,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAI,OAA+B,CAAC,iBAAiB,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAI,OAA+B,CAAC,kBAAkB,EAAE,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,WAAW;IACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAEnC,kCAAkC;QAClC,MAAM,gBAAgB,GAAG,MAA0B,CAAC;QACpD,IAAI,gBAAgB,CAAC,OAAO,IAAI,OAAO,gBAAgB,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,yBAAyB,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,6BAA6B;QAC7B,UAAU,CAAC,GAAG,EAAE;YACZ,UAAU,CAAC,oBAAoB,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;QAClB,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,WAAW;IAChB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,cAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAEpC,UAAU,CAAC,GAAG,EAAE;YACZ,UAAU,CAAC,qBAAqB,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;AACP,CAAC;AAED,UAAU,CAAC,SAAS,CAAC,CAAC;AACtB,WAAW,EAAE,CAAC"}
@@ -1,3 +1,22 @@
1
+ /**
2
+ * Health check state and vector backend monitor for iranti's API server.
3
+ *
4
+ * Provides lightweight, side-effect-free helpers used by `server.ts` to
5
+ * build and maintain the `/health` response:
6
+ *
7
+ * - `createHealthCheckState(initial)` — factory for a mutable `HealthCheckState`
8
+ * object that `server.ts` updates as probes complete
9
+ * - `deriveOperatorStatus(context)` — computes `'ok' | 'degraded'` from the
10
+ * combination of runtime authority source, metadata health, and vector backend
11
+ * health; degraded when any critical check has failed
12
+ * - `createVectorBackendMonitor(options)` — starts an interval-based probe loop
13
+ * against the vector backend's `ping()`. Updates a shared `HealthCheckState`
14
+ * on each probe result and calls `logError` on failure. Returns `{ probe,
15
+ * start, stop }` so the server can control the monitor lifecycle.
16
+ *
17
+ * Designed for testability: `setIntervalImpl` / `clearIntervalImpl` overrides
18
+ * allow tests to inject fake timers without patching globals.
19
+ */
1
20
  export type HealthCheckState = {
2
21
  checked: boolean;
3
22
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"healthChecks.d.ts","sourceRoot":"","sources":["../../../src/api/healthChecks.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAChC,sBAAsB,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9E,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,mBAAmB,EAAE,gBAAgB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,KAAK,2BAA2B,GAAG;IAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,WAAW,CAAC;IACrC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;CAC5C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAElF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,CAKtF;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B;;qBAkB7C,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC;iBAgBxC,cAAc;gBASf,IAAI;EAYxB"}
1
+ {"version":3,"file":"healthChecks.d.ts","sourceRoot":"","sources":["../../../src/api/healthChecks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAChC,sBAAsB,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9E,qBAAqB,EAAE,gBAAgB,CAAC;IACxC,mBAAmB,EAAE,gBAAgB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,KAAK,2BAA2B,GAAG;IAC/B,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,WAAW,CAAC;IACrC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;CAC5C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAElF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,CAKtF;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B;;qBAkB7C,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC;iBAgBxC,cAAc;gBASf,IAAI;EAYxB"}
@@ -1,4 +1,23 @@
1
1
  "use strict";
2
+ /**
3
+ * Health check state and vector backend monitor for iranti's API server.
4
+ *
5
+ * Provides lightweight, side-effect-free helpers used by `server.ts` to
6
+ * build and maintain the `/health` response:
7
+ *
8
+ * - `createHealthCheckState(initial)` — factory for a mutable `HealthCheckState`
9
+ * object that `server.ts` updates as probes complete
10
+ * - `deriveOperatorStatus(context)` — computes `'ok' | 'degraded'` from the
11
+ * combination of runtime authority source, metadata health, and vector backend
12
+ * health; degraded when any critical check has failed
13
+ * - `createVectorBackendMonitor(options)` — starts an interval-based probe loop
14
+ * against the vector backend's `ping()`. Updates a shared `HealthCheckState`
15
+ * on each probe result and calls `logError` on failure. Returns `{ probe,
16
+ * start, stop }` so the server can control the monitor lifecycle.
17
+ *
18
+ * Designed for testability: `setIntervalImpl` / `clearIntervalImpl` overrides
19
+ * allow tests to inject fake timers without patching globals.
20
+ */
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.createHealthCheckState = createHealthCheckState;
4
23
  exports.deriveOperatorStatus = deriveOperatorStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"healthChecks.js","sourceRoot":"","sources":["../../../src/api/healthChecks.ts"],"names":[],"mappings":";;AAwBA,wDAEC;AAED,oDAKC;AAED,gEAuDC;AAlED,SAAgB,sBAAsB,CAAC,OAAyB;IAC5D,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAA8B;IAC/D,IAAI,OAAO,CAAC,sBAAsB,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IACpE,IAAI,OAAO,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IAClG,IAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IAC9F,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAAoC;IAC3E,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,wCAAwC;KACnD,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAM,CAAC;IAChD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,aAAa,CAAC;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,cAAc,GAA0B,IAAI,CAAC;IAEjD,SAAS,IAAI,CAAC,EAAW,EAAE,MAAc;QACrC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,OAAqB;QACtC,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,IAAI,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC;gBACtD,QAAQ,CAAC,YAAY,OAAO,yDAAyD,CAAC,CAAC;gBACvF,OAAO;YACX,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrB,QAAQ,CAAC,YAAY,OAAO,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED,SAAS,KAAK;QACV,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAC1C,cAAc,GAAG,eAAe,CAAC,GAAG,EAAE;YAClC,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,SAAS,IAAI;QACT,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;KACP,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"healthChecks.js","sourceRoot":"","sources":["../../../src/api/healthChecks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AA0BH,wDAEC;AAED,oDAKC;AAED,gEAuDC;AAlED,SAAgB,sBAAsB,CAAC,OAAyB;IAC5D,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAA8B;IAC/D,IAAI,OAAO,CAAC,sBAAsB,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IACpE,IAAI,OAAO,CAAC,qBAAqB,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IAClG,IAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IAC9F,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,0BAA0B,CAAC,OAAoC;IAC3E,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACjC,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,wCAAwC;KACnD,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAM,CAAC;IAChD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC;IAC/D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,aAAa,CAAC;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,cAAc,GAA0B,IAAI,CAAC;IAEjD,SAAS,IAAI,CAAC,EAAW,EAAE,MAAc;QACrC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,OAAqB;QACtC,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,IAAI,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC;gBACtD,QAAQ,CAAC,YAAY,OAAO,yDAAyD,CAAC,CAAC;gBACvF,OAAO;YACX,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACrB,QAAQ,CAAC,YAAY,OAAO,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACL,CAAC;IAED,SAAS,KAAK;QACV,IAAI,cAAc;YAAE,OAAO,cAAc,CAAC;QAC1C,cAAc,GAAG,eAAe,CAAC,GAAG,EAAE;YAClC,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC,EAAE,UAAU,CAAC,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,SAAS,IAAI;QACT,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,KAAK;QACL,KAAK;QACL,KAAK;QACL,IAAI;KACP,CAAC;AACN,CAAC"}
@@ -1,3 +1,18 @@
1
+ /**
2
+ * iranti API authentication middleware.
3
+ *
4
+ * Validates requests against iranti's own API key store (not Auth.js or any
5
+ * third-party auth system). Accepts the key via two header forms:
6
+ * - `X-Iranti-Key: <key>` — preferred
7
+ * - `Authorization: Bearer <key>` — compat with standard tooling
8
+ *
9
+ * On success, attaches `req.irantiAuth` (`IrantiAuthContext`) with the key's
10
+ * `keyId`, `owner`, `mode`, and `scopes` so downstream authorization middleware
11
+ * can gate specific operations without re-querying the key store.
12
+ *
13
+ * On failure (missing or invalid key), responds 401. Uses the `Express.Request`
14
+ * global augmentation so TypeScript sees `req.irantiAuth` without casts.
15
+ */
1
16
  import { Request, Response, NextFunction } from 'express';
2
17
  export interface IrantiAuthContext {
3
18
  mode: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,OAAO,CAAC;QACd,UAAU,OAAO;YACb,UAAU,CAAC,EAAE,iBAAiB,CAAC;SAClC;KACJ;CACJ;AAmBD,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjG"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,OAAO,CAAC;QACd,UAAU,OAAO;YACb,UAAU,CAAC,EAAE,iBAAiB,CAAC;SAClC;KACJ;CACJ;AAmBD,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjG"}
@@ -1,4 +1,19 @@
1
1
  "use strict";
2
+ /**
3
+ * iranti API authentication middleware.
4
+ *
5
+ * Validates requests against iranti's own API key store (not Auth.js or any
6
+ * third-party auth system). Accepts the key via two header forms:
7
+ * - `X-Iranti-Key: <key>` — preferred
8
+ * - `Authorization: Bearer <key>` — compat with standard tooling
9
+ *
10
+ * On success, attaches `req.irantiAuth` (`IrantiAuthContext`) with the key's
11
+ * `keyId`, `owner`, `mode`, and `scopes` so downstream authorization middleware
12
+ * can gate specific operations without re-querying the key store.
13
+ *
14
+ * On failure (missing or invalid key), responds 401. Uses the `Express.Request`
15
+ * global augmentation so TypeScript sees `req.irantiAuth` without casts.
16
+ */
2
17
  Object.defineProperty(exports, "__esModule", { value: true });
3
18
  exports.authenticate = authenticate;
4
19
  const apiKeys_1 = require("../../security/apiKeys");
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/api/middleware/auth.ts"],"names":[],"mappings":";;AAmCA,oCAiBC;AAnDD,oDAAwD;AAiBxD,SAAS,aAAa,CAAC,GAAY;IAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACzE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC9E,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAc,EAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,oDAAoD,EAAE,CAAC,CAAC;QACvH,OAAO;IACX,CAAC;IAED,GAAG,CAAC,UAAU,GAAG;QACb,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,UAAU;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC;KACjC,CAAC;IAEF,IAAI,EAAE,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/api/middleware/auth.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAqCH,oCAiBC;AAnDD,oDAAwD;AAiBxD,SAAS,aAAa,CAAC,GAAY;IAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACzE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC9E,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAc,EAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,oDAAoD,EAAE,CAAC,CAAC;QACvH,OAAO;IACX,CAAC;IAED,GAAG,CAAC,UAAU,GAAG;QACb,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,UAAU;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC;KACjC,CAAC;IAEF,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -1,3 +1,21 @@
1
+ /**
2
+ * iranti API authorization middleware — scope-based access control.
3
+ *
4
+ * Enforces which operations an API key is allowed to perform based on the
5
+ * `scopes` array populated by the auth middleware. Scope formats follow the
6
+ * `family:action` pattern (e.g. `knowledge:read`, `memory:write`).
7
+ *
8
+ * Exported middleware factories:
9
+ * - `requireAnyScope(scopes)` — passes if the key holds at least one of the
10
+ * listed scopes (global or family match)
11
+ * - `requireScopeByMethod(readScope, writeScope)` — infers required scope
12
+ * from HTTP method (GET/HEAD/OPTIONS → read, else → write)
13
+ * - `requireScopeFamilyByMethod(readFamily, writeFamily)` — same but family
14
+ * prefix matching (e.g. `knowledge` matches `knowledge:read`)
15
+ * - `requireEntityScopeByMethod(extractor, readScope, writeScope)` — combines
16
+ * method-based scope inference with entity-level access checks via
17
+ * `evaluateEntityScopeAccess` (supports entity-scoped API keys)
18
+ */
1
19
  import { NextFunction, Request, Response } from 'express';
2
20
  export interface EntityTarget {
3
21
  entityType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG1D,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,GAAG,YAAY,EAAE,CAAC;AA6BvE,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAG5C,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkBjE;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,IAGlD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkBjE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAC9D,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAIjE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IACpE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAIjE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,IACtG,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkCjE"}
1
+ {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../../src/api/middleware/authorization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG1D,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,YAAY,GAAG,YAAY,EAAE,CAAC;AA6BvE,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAG5C,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkBjE;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,IAGlD,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkBjE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAC9D,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAIjE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IACpE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAIjE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,IACtG,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAkCjE"}
@@ -1,4 +1,22 @@
1
1
  "use strict";
2
+ /**
3
+ * iranti API authorization middleware — scope-based access control.
4
+ *
5
+ * Enforces which operations an API key is allowed to perform based on the
6
+ * `scopes` array populated by the auth middleware. Scope formats follow the
7
+ * `family:action` pattern (e.g. `knowledge:read`, `memory:write`).
8
+ *
9
+ * Exported middleware factories:
10
+ * - `requireAnyScope(scopes)` — passes if the key holds at least one of the
11
+ * listed scopes (global or family match)
12
+ * - `requireScopeByMethod(readScope, writeScope)` — infers required scope
13
+ * from HTTP method (GET/HEAD/OPTIONS → read, else → write)
14
+ * - `requireScopeFamilyByMethod(readFamily, writeFamily)` — same but family
15
+ * prefix matching (e.g. `knowledge` matches `knowledge:read`)
16
+ * - `requireEntityScopeByMethod(extractor, readScope, writeScope)` — combines
17
+ * method-based scope inference with entity-level access checks via
18
+ * `evaluateEntityScopeAccess` (supports entity-scoped API keys)
19
+ */
2
20
  Object.defineProperty(exports, "__esModule", { value: true });
3
21
  exports.requireAnyScope = requireAnyScope;
4
22
  exports.requireAnyScopeFamily = requireAnyScopeFamily;
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../../src/api/middleware/authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../../src/api/middleware/authorization.ts"],"names":[],"mappings":"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"}