narai-primitives 2.0.0-rc.1

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 (440) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -0
  3. package/dist/config/bootstrap.d.ts +28 -0
  4. package/dist/config/bootstrap.d.ts.map +1 -0
  5. package/dist/config/bootstrap.js +80 -0
  6. package/dist/config/bootstrap.js.map +1 -0
  7. package/dist/config/index.d.ts +13 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +12 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/load.d.ts +37 -0
  12. package/dist/config/load.d.ts.map +1 -0
  13. package/dist/config/load.js +99 -0
  14. package/dist/config/load.js.map +1 -0
  15. package/dist/config/resolve.d.ts +23 -0
  16. package/dist/config/resolve.d.ts.map +1 -0
  17. package/dist/config/resolve.js +198 -0
  18. package/dist/config/resolve.js.map +1 -0
  19. package/dist/config/secrets.d.ts +20 -0
  20. package/dist/config/secrets.d.ts.map +1 -0
  21. package/dist/config/secrets.js +43 -0
  22. package/dist/config/secrets.js.map +1 -0
  23. package/dist/config/types.d.ts +104 -0
  24. package/dist/config/types.d.ts.map +1 -0
  25. package/dist/config/types.js +11 -0
  26. package/dist/config/types.js.map +1 -0
  27. package/dist/connectors/aws/cli.d.ts +3 -0
  28. package/dist/connectors/aws/cli.d.ts.map +1 -0
  29. package/dist/connectors/aws/cli.js +27 -0
  30. package/dist/connectors/aws/cli.js.map +1 -0
  31. package/dist/connectors/aws/index.d.ts +27 -0
  32. package/dist/connectors/aws/index.d.ts.map +1 -0
  33. package/dist/connectors/aws/index.js +281 -0
  34. package/dist/connectors/aws/index.js.map +1 -0
  35. package/dist/connectors/aws/lib/aws_client.d.ts +140 -0
  36. package/dist/connectors/aws/lib/aws_client.d.ts.map +1 -0
  37. package/dist/connectors/aws/lib/aws_client.js +196 -0
  38. package/dist/connectors/aws/lib/aws_client.js.map +1 -0
  39. package/dist/connectors/aws/lib/aws_error.d.ts +10 -0
  40. package/dist/connectors/aws/lib/aws_error.d.ts.map +1 -0
  41. package/dist/connectors/aws/lib/aws_error.js +15 -0
  42. package/dist/connectors/aws/lib/aws_error.js.map +1 -0
  43. package/dist/connectors/confluence/cli.d.ts +3 -0
  44. package/dist/connectors/confluence/cli.d.ts.map +1 -0
  45. package/dist/connectors/confluence/cli.js +24 -0
  46. package/dist/connectors/confluence/cli.js.map +1 -0
  47. package/dist/connectors/confluence/index.d.ts +15 -0
  48. package/dist/connectors/confluence/index.d.ts.map +1 -0
  49. package/dist/connectors/confluence/index.js +295 -0
  50. package/dist/connectors/confluence/index.js.map +1 -0
  51. package/dist/connectors/confluence/lib/confluence_client.d.ts +135 -0
  52. package/dist/connectors/confluence/lib/confluence_client.d.ts.map +1 -0
  53. package/dist/connectors/confluence/lib/confluence_client.js +329 -0
  54. package/dist/connectors/confluence/lib/confluence_client.js.map +1 -0
  55. package/dist/connectors/confluence/lib/confluence_error.d.ts +13 -0
  56. package/dist/connectors/confluence/lib/confluence_error.d.ts.map +1 -0
  57. package/dist/connectors/confluence/lib/confluence_error.js +19 -0
  58. package/dist/connectors/confluence/lib/confluence_error.js.map +1 -0
  59. package/dist/connectors/db/cli.d.ts +5 -0
  60. package/dist/connectors/db/cli.d.ts.map +1 -0
  61. package/dist/connectors/db/cli.js +34 -0
  62. package/dist/connectors/db/cli.js.map +1 -0
  63. package/dist/connectors/db/config.d.ts +18 -0
  64. package/dist/connectors/db/config.d.ts.map +1 -0
  65. package/dist/connectors/db/config.js +142 -0
  66. package/dist/connectors/db/config.js.map +1 -0
  67. package/dist/connectors/db/connector.d.ts +31 -0
  68. package/dist/connectors/db/connector.d.ts.map +1 -0
  69. package/dist/connectors/db/connector.js +175 -0
  70. package/dist/connectors/db/connector.js.map +1 -0
  71. package/dist/connectors/db/dispatcher.d.ts +36 -0
  72. package/dist/connectors/db/dispatcher.d.ts.map +1 -0
  73. package/dist/connectors/db/dispatcher.js +597 -0
  74. package/dist/connectors/db/dispatcher.js.map +1 -0
  75. package/dist/connectors/db/index.d.ts +22 -0
  76. package/dist/connectors/db/index.d.ts.map +1 -0
  77. package/dist/connectors/db/index.js +26 -0
  78. package/dist/connectors/db/index.js.map +1 -0
  79. package/dist/connectors/db/lib/audit.d.ts +32 -0
  80. package/dist/connectors/db/lib/audit.d.ts.map +1 -0
  81. package/dist/connectors/db/lib/audit.js +130 -0
  82. package/dist/connectors/db/lib/audit.js.map +1 -0
  83. package/dist/connectors/db/lib/connection.d.ts +61 -0
  84. package/dist/connectors/db/lib/connection.d.ts.map +1 -0
  85. package/dist/connectors/db/lib/connection.js +326 -0
  86. package/dist/connectors/db/lib/connection.js.map +1 -0
  87. package/dist/connectors/db/lib/credentials.d.ts +60 -0
  88. package/dist/connectors/db/lib/credentials.d.ts.map +1 -0
  89. package/dist/connectors/db/lib/credentials.js +117 -0
  90. package/dist/connectors/db/lib/credentials.js.map +1 -0
  91. package/dist/connectors/db/lib/drivers/base.d.ts +83 -0
  92. package/dist/connectors/db/lib/drivers/base.d.ts.map +1 -0
  93. package/dist/connectors/db/lib/drivers/base.js +46 -0
  94. package/dist/connectors/db/lib/drivers/base.js.map +1 -0
  95. package/dist/connectors/db/lib/drivers/dynamodb.d.ts +108 -0
  96. package/dist/connectors/db/lib/drivers/dynamodb.d.ts.map +1 -0
  97. package/dist/connectors/db/lib/drivers/dynamodb.js +468 -0
  98. package/dist/connectors/db/lib/drivers/dynamodb.js.map +1 -0
  99. package/dist/connectors/db/lib/drivers/mongodb.d.ts +60 -0
  100. package/dist/connectors/db/lib/drivers/mongodb.d.ts.map +1 -0
  101. package/dist/connectors/db/lib/drivers/mongodb.js +371 -0
  102. package/dist/connectors/db/lib/drivers/mongodb.js.map +1 -0
  103. package/dist/connectors/db/lib/drivers/mysql.d.ts +45 -0
  104. package/dist/connectors/db/lib/drivers/mysql.d.ts.map +1 -0
  105. package/dist/connectors/db/lib/drivers/mysql.js +265 -0
  106. package/dist/connectors/db/lib/drivers/mysql.js.map +1 -0
  107. package/dist/connectors/db/lib/drivers/oracle.d.ts +53 -0
  108. package/dist/connectors/db/lib/drivers/oracle.d.ts.map +1 -0
  109. package/dist/connectors/db/lib/drivers/oracle.js +350 -0
  110. package/dist/connectors/db/lib/drivers/oracle.js.map +1 -0
  111. package/dist/connectors/db/lib/drivers/postgresql.d.ts +65 -0
  112. package/dist/connectors/db/lib/drivers/postgresql.d.ts.map +1 -0
  113. package/dist/connectors/db/lib/drivers/postgresql.js +294 -0
  114. package/dist/connectors/db/lib/drivers/postgresql.js.map +1 -0
  115. package/dist/connectors/db/lib/drivers/register.d.ts +16 -0
  116. package/dist/connectors/db/lib/drivers/register.d.ts.map +1 -0
  117. package/dist/connectors/db/lib/drivers/register.js +111 -0
  118. package/dist/connectors/db/lib/drivers/register.js.map +1 -0
  119. package/dist/connectors/db/lib/drivers/sqlite.d.ts +11 -0
  120. package/dist/connectors/db/lib/drivers/sqlite.d.ts.map +1 -0
  121. package/dist/connectors/db/lib/drivers/sqlite.js +147 -0
  122. package/dist/connectors/db/lib/drivers/sqlite.js.map +1 -0
  123. package/dist/connectors/db/lib/drivers/sqlserver.d.ts +58 -0
  124. package/dist/connectors/db/lib/drivers/sqlserver.d.ts.map +1 -0
  125. package/dist/connectors/db/lib/drivers/sqlserver.js +274 -0
  126. package/dist/connectors/db/lib/drivers/sqlserver.js.map +1 -0
  127. package/dist/connectors/db/lib/environments.d.ts +68 -0
  128. package/dist/connectors/db/lib/environments.d.ts.map +1 -0
  129. package/dist/connectors/db/lib/environments.js +53 -0
  130. package/dist/connectors/db/lib/environments.js.map +1 -0
  131. package/dist/connectors/db/lib/index.d.ts +28 -0
  132. package/dist/connectors/db/lib/index.d.ts.map +1 -0
  133. package/dist/connectors/db/lib/index.js +30 -0
  134. package/dist/connectors/db/lib/index.js.map +1 -0
  135. package/dist/connectors/db/lib/plugin_config.d.ts +64 -0
  136. package/dist/connectors/db/lib/plugin_config.d.ts.map +1 -0
  137. package/dist/connectors/db/lib/plugin_config.js +287 -0
  138. package/dist/connectors/db/lib/plugin_config.js.map +1 -0
  139. package/dist/connectors/db/lib/policy.d.ts +162 -0
  140. package/dist/connectors/db/lib/policy.d.ts.map +1 -0
  141. package/dist/connectors/db/lib/policy.js +581 -0
  142. package/dist/connectors/db/lib/policy.js.map +1 -0
  143. package/dist/connectors/db/lib/query.d.ts +22 -0
  144. package/dist/connectors/db/lib/query.d.ts.map +1 -0
  145. package/dist/connectors/db/lib/query.js +93 -0
  146. package/dist/connectors/db/lib/query.js.map +1 -0
  147. package/dist/connectors/db/lib/schema.d.ts +13 -0
  148. package/dist/connectors/db/lib/schema.d.ts.map +1 -0
  149. package/dist/connectors/db/lib/schema.js +80 -0
  150. package/dist/connectors/db/lib/schema.js.map +1 -0
  151. package/dist/connectors/gcp/cli.d.ts +3 -0
  152. package/dist/connectors/gcp/cli.d.ts.map +1 -0
  153. package/dist/connectors/gcp/cli.js +24 -0
  154. package/dist/connectors/gcp/cli.js.map +1 -0
  155. package/dist/connectors/gcp/index.d.ts +24 -0
  156. package/dist/connectors/gcp/index.d.ts.map +1 -0
  157. package/dist/connectors/gcp/index.js +205 -0
  158. package/dist/connectors/gcp/index.js.map +1 -0
  159. package/dist/connectors/gcp/lib/gcp_client.d.ts +88 -0
  160. package/dist/connectors/gcp/lib/gcp_client.d.ts.map +1 -0
  161. package/dist/connectors/gcp/lib/gcp_client.js +434 -0
  162. package/dist/connectors/gcp/lib/gcp_client.js.map +1 -0
  163. package/dist/connectors/gcp/lib/gcp_error.d.ts +10 -0
  164. package/dist/connectors/gcp/lib/gcp_error.d.ts.map +1 -0
  165. package/dist/connectors/gcp/lib/gcp_error.js +15 -0
  166. package/dist/connectors/gcp/lib/gcp_error.js.map +1 -0
  167. package/dist/connectors/github/cli.d.ts +3 -0
  168. package/dist/connectors/github/cli.d.ts.map +1 -0
  169. package/dist/connectors/github/cli.js +23 -0
  170. package/dist/connectors/github/cli.js.map +1 -0
  171. package/dist/connectors/github/index.d.ts +23 -0
  172. package/dist/connectors/github/index.d.ts.map +1 -0
  173. package/dist/connectors/github/index.js +462 -0
  174. package/dist/connectors/github/index.js.map +1 -0
  175. package/dist/connectors/github/lib/github_client.d.ts +181 -0
  176. package/dist/connectors/github/lib/github_client.d.ts.map +1 -0
  177. package/dist/connectors/github/lib/github_client.js +383 -0
  178. package/dist/connectors/github/lib/github_client.js.map +1 -0
  179. package/dist/connectors/github/lib/github_error.d.ts +11 -0
  180. package/dist/connectors/github/lib/github_error.d.ts.map +1 -0
  181. package/dist/connectors/github/lib/github_error.js +17 -0
  182. package/dist/connectors/github/lib/github_error.js.map +1 -0
  183. package/dist/connectors/jira/cli.d.ts +3 -0
  184. package/dist/connectors/jira/cli.d.ts.map +1 -0
  185. package/dist/connectors/jira/cli.js +24 -0
  186. package/dist/connectors/jira/cli.js.map +1 -0
  187. package/dist/connectors/jira/index.d.ts +13 -0
  188. package/dist/connectors/jira/index.d.ts.map +1 -0
  189. package/dist/connectors/jira/index.js +287 -0
  190. package/dist/connectors/jira/index.js.map +1 -0
  191. package/dist/connectors/jira/lib/adf.d.ts +25 -0
  192. package/dist/connectors/jira/lib/adf.d.ts.map +1 -0
  193. package/dist/connectors/jira/lib/adf.js +105 -0
  194. package/dist/connectors/jira/lib/adf.js.map +1 -0
  195. package/dist/connectors/jira/lib/jira_client.d.ts +143 -0
  196. package/dist/connectors/jira/lib/jira_client.d.ts.map +1 -0
  197. package/dist/connectors/jira/lib/jira_client.js +355 -0
  198. package/dist/connectors/jira/lib/jira_client.js.map +1 -0
  199. package/dist/connectors/jira/lib/jira_error.d.ts +11 -0
  200. package/dist/connectors/jira/lib/jira_error.d.ts.map +1 -0
  201. package/dist/connectors/jira/lib/jira_error.js +17 -0
  202. package/dist/connectors/jira/lib/jira_error.js.map +1 -0
  203. package/dist/connectors/notion/cli.d.ts +3 -0
  204. package/dist/connectors/notion/cli.d.ts.map +1 -0
  205. package/dist/connectors/notion/cli.js +22 -0
  206. package/dist/connectors/notion/cli.js.map +1 -0
  207. package/dist/connectors/notion/index.d.ts +20 -0
  208. package/dist/connectors/notion/index.d.ts.map +1 -0
  209. package/dist/connectors/notion/index.js +317 -0
  210. package/dist/connectors/notion/index.js.map +1 -0
  211. package/dist/connectors/notion/lib/notion_client.d.ts +117 -0
  212. package/dist/connectors/notion/lib/notion_client.d.ts.map +1 -0
  213. package/dist/connectors/notion/lib/notion_client.js +377 -0
  214. package/dist/connectors/notion/lib/notion_client.js.map +1 -0
  215. package/dist/connectors/notion/lib/notion_error.d.ts +12 -0
  216. package/dist/connectors/notion/lib/notion_error.d.ts.map +1 -0
  217. package/dist/connectors/notion/lib/notion_error.js +18 -0
  218. package/dist/connectors/notion/lib/notion_error.js.map +1 -0
  219. package/dist/hub/cli.d.ts +4 -0
  220. package/dist/hub/cli.d.ts.map +1 -0
  221. package/dist/hub/cli.js +93 -0
  222. package/dist/hub/cli.js.map +1 -0
  223. package/dist/hub/dispatch.d.ts +33 -0
  224. package/dist/hub/dispatch.d.ts.map +1 -0
  225. package/dist/hub/dispatch.js +297 -0
  226. package/dist/hub/dispatch.js.map +1 -0
  227. package/dist/hub/index.d.ts +9 -0
  228. package/dist/hub/index.d.ts.map +1 -0
  229. package/dist/hub/index.js +215 -0
  230. package/dist/hub/index.js.map +1 -0
  231. package/dist/hub/plan.d.ts +24 -0
  232. package/dist/hub/plan.d.ts.map +1 -0
  233. package/dist/hub/plan.js +103 -0
  234. package/dist/hub/plan.js.map +1 -0
  235. package/dist/hub/types.d.ts +65 -0
  236. package/dist/hub/types.d.ts.map +1 -0
  237. package/dist/hub/types.js +3 -0
  238. package/dist/hub/types.js.map +1 -0
  239. package/dist/toolkit/_optional.d.ts +14 -0
  240. package/dist/toolkit/_optional.d.ts.map +1 -0
  241. package/dist/toolkit/_optional.js +96 -0
  242. package/dist/toolkit/_optional.js.map +1 -0
  243. package/dist/toolkit/agent_cli.d.ts +33 -0
  244. package/dist/toolkit/agent_cli.d.ts.map +1 -0
  245. package/dist/toolkit/agent_cli.js +62 -0
  246. package/dist/toolkit/agent_cli.js.map +1 -0
  247. package/dist/toolkit/agent_resolver.d.ts +46 -0
  248. package/dist/toolkit/agent_resolver.d.ts.map +1 -0
  249. package/dist/toolkit/agent_resolver.js +78 -0
  250. package/dist/toolkit/agent_resolver.js.map +1 -0
  251. package/dist/toolkit/audit/events.d.ts +45 -0
  252. package/dist/toolkit/audit/events.d.ts.map +1 -0
  253. package/dist/toolkit/audit/events.js +8 -0
  254. package/dist/toolkit/audit/events.js.map +1 -0
  255. package/dist/toolkit/audit/writer.d.ts +16 -0
  256. package/dist/toolkit/audit/writer.d.ts.map +1 -0
  257. package/dist/toolkit/audit/writer.js +73 -0
  258. package/dist/toolkit/audit/writer.js.map +1 -0
  259. package/dist/toolkit/cli/usage-report.d.ts +3 -0
  260. package/dist/toolkit/cli/usage-report.d.ts.map +1 -0
  261. package/dist/toolkit/cli/usage-report.js +76 -0
  262. package/dist/toolkit/cli/usage-report.js.map +1 -0
  263. package/dist/toolkit/connector.d.ts +142 -0
  264. package/dist/toolkit/connector.d.ts.map +1 -0
  265. package/dist/toolkit/connector.js +593 -0
  266. package/dist/toolkit/connector.js.map +1 -0
  267. package/dist/toolkit/extract_binary.d.ts +45 -0
  268. package/dist/toolkit/extract_binary.d.ts.map +1 -0
  269. package/dist/toolkit/extract_binary.js +342 -0
  270. package/dist/toolkit/extract_binary.js.map +1 -0
  271. package/dist/toolkit/extract_multimodal.d.ts +22 -0
  272. package/dist/toolkit/extract_multimodal.d.ts.map +1 -0
  273. package/dist/toolkit/extract_multimodal.js +209 -0
  274. package/dist/toolkit/extract_multimodal.js.map +1 -0
  275. package/dist/toolkit/fetch_attachment.d.ts +21 -0
  276. package/dist/toolkit/fetch_attachment.d.ts.map +1 -0
  277. package/dist/toolkit/fetch_attachment.js +169 -0
  278. package/dist/toolkit/fetch_attachment.js.map +1 -0
  279. package/dist/toolkit/fetch_helper.d.ts +47 -0
  280. package/dist/toolkit/fetch_helper.d.ts.map +1 -0
  281. package/dist/toolkit/fetch_helper.js +124 -0
  282. package/dist/toolkit/fetch_helper.js.map +1 -0
  283. package/dist/toolkit/guardrail.d.ts +63 -0
  284. package/dist/toolkit/guardrail.d.ts.map +1 -0
  285. package/dist/toolkit/guardrail.js +166 -0
  286. package/dist/toolkit/guardrail.js.map +1 -0
  287. package/dist/toolkit/hardship/curate.d.ts +47 -0
  288. package/dist/toolkit/hardship/curate.d.ts.map +1 -0
  289. package/dist/toolkit/hardship/curate.js +113 -0
  290. package/dist/toolkit/hardship/curate.js.map +1 -0
  291. package/dist/toolkit/hardship/patterns.d.ts +32 -0
  292. package/dist/toolkit/hardship/patterns.d.ts.map +1 -0
  293. package/dist/toolkit/hardship/patterns.js +98 -0
  294. package/dist/toolkit/hardship/patterns.js.map +1 -0
  295. package/dist/toolkit/hardship/preamble.d.ts +13 -0
  296. package/dist/toolkit/hardship/preamble.d.ts.map +1 -0
  297. package/dist/toolkit/hardship/preamble.js +47 -0
  298. package/dist/toolkit/hardship/preamble.js.map +1 -0
  299. package/dist/toolkit/hardship/read.d.ts +34 -0
  300. package/dist/toolkit/hardship/read.d.ts.map +1 -0
  301. package/dist/toolkit/hardship/read.js +116 -0
  302. package/dist/toolkit/hardship/read.js.map +1 -0
  303. package/dist/toolkit/hardship/record.d.ts +43 -0
  304. package/dist/toolkit/hardship/record.d.ts.map +1 -0
  305. package/dist/toolkit/hardship/record.js +74 -0
  306. package/dist/toolkit/hardship/record.js.map +1 -0
  307. package/dist/toolkit/hardship/scope.d.ts +20 -0
  308. package/dist/toolkit/hardship/scope.d.ts.map +1 -0
  309. package/dist/toolkit/hardship/scope.js +56 -0
  310. package/dist/toolkit/hardship/scope.js.map +1 -0
  311. package/dist/toolkit/index.d.ts +42 -0
  312. package/dist/toolkit/index.d.ts.map +1 -0
  313. package/dist/toolkit/index.js +51 -0
  314. package/dist/toolkit/index.js.map +1 -0
  315. package/dist/toolkit/plugin/curate-cmd.d.ts +22 -0
  316. package/dist/toolkit/plugin/curate-cmd.d.ts.map +1 -0
  317. package/dist/toolkit/plugin/curate-cmd.js +72 -0
  318. package/dist/toolkit/plugin/curate-cmd.js.map +1 -0
  319. package/dist/toolkit/plugin/prefs.d.ts +15 -0
  320. package/dist/toolkit/plugin/prefs.d.ts.map +1 -0
  321. package/dist/toolkit/plugin/prefs.js +78 -0
  322. package/dist/toolkit/plugin/prefs.js.map +1 -0
  323. package/dist/toolkit/plugin/reminder.d.ts +28 -0
  324. package/dist/toolkit/plugin/reminder.d.ts.map +1 -0
  325. package/dist/toolkit/plugin/reminder.js +103 -0
  326. package/dist/toolkit/plugin/reminder.js.map +1 -0
  327. package/dist/toolkit/policy/approval.d.ts +24 -0
  328. package/dist/toolkit/policy/approval.d.ts.map +1 -0
  329. package/dist/toolkit/policy/approval.js +56 -0
  330. package/dist/toolkit/policy/approval.js.map +1 -0
  331. package/dist/toolkit/policy/config.d.ts +38 -0
  332. package/dist/toolkit/policy/config.d.ts.map +1 -0
  333. package/dist/toolkit/policy/config.js +172 -0
  334. package/dist/toolkit/policy/config.js.map +1 -0
  335. package/dist/toolkit/policy/gate.d.ts +28 -0
  336. package/dist/toolkit/policy/gate.d.ts.map +1 -0
  337. package/dist/toolkit/policy/gate.js +126 -0
  338. package/dist/toolkit/policy/gate.js.map +1 -0
  339. package/dist/toolkit/policy/types.d.ts +106 -0
  340. package/dist/toolkit/policy/types.d.ts.map +1 -0
  341. package/dist/toolkit/policy/types.js +22 -0
  342. package/dist/toolkit/policy/types.js.map +1 -0
  343. package/dist/toolkit/security_check.d.ts +15 -0
  344. package/dist/toolkit/security_check.d.ts.map +1 -0
  345. package/dist/toolkit/security_check.js +109 -0
  346. package/dist/toolkit/security_check.js.map +1 -0
  347. package/dist/toolkit/usage/aggregate-cross-session.d.ts +36 -0
  348. package/dist/toolkit/usage/aggregate-cross-session.d.ts.map +1 -0
  349. package/dist/toolkit/usage/aggregate-cross-session.js +142 -0
  350. package/dist/toolkit/usage/aggregate-cross-session.js.map +1 -0
  351. package/dist/toolkit/usage/aggregate.d.ts +4 -0
  352. package/dist/toolkit/usage/aggregate.d.ts.map +1 -0
  353. package/dist/toolkit/usage/aggregate.js +105 -0
  354. package/dist/toolkit/usage/aggregate.js.map +1 -0
  355. package/dist/toolkit/usage/index.d.ts +11 -0
  356. package/dist/toolkit/usage/index.d.ts.map +1 -0
  357. package/dist/toolkit/usage/index.js +7 -0
  358. package/dist/toolkit/usage/index.js.map +1 -0
  359. package/dist/toolkit/usage/parse.d.ts +5 -0
  360. package/dist/toolkit/usage/parse.d.ts.map +1 -0
  361. package/dist/toolkit/usage/parse.js +19 -0
  362. package/dist/toolkit/usage/parse.js.map +1 -0
  363. package/dist/toolkit/usage/record.d.ts +8 -0
  364. package/dist/toolkit/usage/record.d.ts.map +1 -0
  365. package/dist/toolkit/usage/record.js +18 -0
  366. package/dist/toolkit/usage/record.js.map +1 -0
  367. package/dist/toolkit/usage/retention.d.ts +6 -0
  368. package/dist/toolkit/usage/retention.d.ts.map +1 -0
  369. package/dist/toolkit/usage/retention.js +71 -0
  370. package/dist/toolkit/usage/retention.js.map +1 -0
  371. package/dist/toolkit/usage/tokenize.d.ts +11 -0
  372. package/dist/toolkit/usage/tokenize.d.ts.map +1 -0
  373. package/dist/toolkit/usage/tokenize.js +24 -0
  374. package/dist/toolkit/usage/tokenize.js.map +1 -0
  375. package/dist/toolkit/usage/types.d.ts +34 -0
  376. package/dist/toolkit/usage/types.d.ts.map +1 -0
  377. package/dist/toolkit/usage/types.js +2 -0
  378. package/dist/toolkit/usage/types.js.map +1 -0
  379. package/package.json +124 -0
  380. package/plugin-hooks/session-summary.mjs +138 -0
  381. package/plugin-hooks/stale-summarize.mjs +70 -0
  382. package/plugin-hooks/usage-record.mjs +112 -0
  383. package/plugins/aws-agent/.claude-plugin/plugin.json +6 -0
  384. package/plugins/aws-agent/README.md +46 -0
  385. package/plugins/aws-agent/bin/aws-agent +22 -0
  386. package/plugins/aws-agent/commands/aws-agent.md +6 -0
  387. package/plugins/aws-agent/hooks/hooks.json +49 -0
  388. package/plugins/aws-agent/hooks/reminder.mjs +16 -0
  389. package/plugins/aws-agent/package.json +9 -0
  390. package/plugins/aws-agent/skills/aws-agent/SKILL.md +70 -0
  391. package/plugins/confluence-agent/.claude-plugin/plugin.json +6 -0
  392. package/plugins/confluence-agent/README.md +15 -0
  393. package/plugins/confluence-agent/bin/confluence-agent +17 -0
  394. package/plugins/confluence-agent/commands/confluence-agent.md +6 -0
  395. package/plugins/confluence-agent/hooks/hooks.json +49 -0
  396. package/plugins/confluence-agent/hooks/reminder.mjs +25 -0
  397. package/plugins/confluence-agent/package.json +8 -0
  398. package/plugins/confluence-agent/skills/confluence-agent/SKILL.md +40 -0
  399. package/plugins/db-agent/.claude-plugin/plugin.json +20 -0
  400. package/plugins/db-agent/README.md +13 -0
  401. package/plugins/db-agent/bin/db-agent +17 -0
  402. package/plugins/db-agent/commands/db-agent.md +6 -0
  403. package/plugins/db-agent/hooks/db-guard.mjs +110 -0
  404. package/plugins/db-agent/hooks/guardrails.json +26 -0
  405. package/plugins/db-agent/hooks/hooks.json +61 -0
  406. package/plugins/db-agent/hooks/reminder.mjs +16 -0
  407. package/plugins/db-agent/package.json +8 -0
  408. package/plugins/db-agent/skills/db-agent/SKILL.md +50 -0
  409. package/plugins/gcp-agent/.claude-plugin/plugin.json +6 -0
  410. package/plugins/gcp-agent/README.md +31 -0
  411. package/plugins/gcp-agent/bin/gcp-agent +18 -0
  412. package/plugins/gcp-agent/commands/gcp-agent.md +6 -0
  413. package/plugins/gcp-agent/hooks/hooks.json +49 -0
  414. package/plugins/gcp-agent/hooks/reminder.mjs +16 -0
  415. package/plugins/gcp-agent/package.json +9 -0
  416. package/plugins/gcp-agent/skills/gcp-agent/SKILL.md +54 -0
  417. package/plugins/github-agent/.claude-plugin/plugin.json +6 -0
  418. package/plugins/github-agent/README.md +13 -0
  419. package/plugins/github-agent/bin/github-agent +17 -0
  420. package/plugins/github-agent/commands/github-agent.md +6 -0
  421. package/plugins/github-agent/hooks/hooks.json +49 -0
  422. package/plugins/github-agent/hooks/reminder.mjs +16 -0
  423. package/plugins/github-agent/package.json +8 -0
  424. package/plugins/github-agent/skills/github-agent/SKILL.md +41 -0
  425. package/plugins/jira-agent/.claude-plugin/plugin.json +6 -0
  426. package/plugins/jira-agent/README.md +15 -0
  427. package/plugins/jira-agent/bin/jira-agent +17 -0
  428. package/plugins/jira-agent/commands/jira-agent.md +6 -0
  429. package/plugins/jira-agent/hooks/hooks.json +49 -0
  430. package/plugins/jira-agent/hooks/reminder.mjs +16 -0
  431. package/plugins/jira-agent/package.json +8 -0
  432. package/plugins/jira-agent/skills/jira-agent/SKILL.md +37 -0
  433. package/plugins/notion-agent/.claude-plugin/plugin.json +6 -0
  434. package/plugins/notion-agent/README.md +23 -0
  435. package/plugins/notion-agent/bin/notion-agent +17 -0
  436. package/plugins/notion-agent/commands/notion-agent.md +6 -0
  437. package/plugins/notion-agent/hooks/hooks.json +49 -0
  438. package/plugins/notion-agent/hooks/reminder.mjs +17 -0
  439. package/plugins/notion-agent/package.json +8 -0
  440. package/plugins/notion-agent/skills/notion-agent/SKILL.md +48 -0
@@ -0,0 +1,103 @@
1
+ /** Planner-prompt builder, response JSON extraction, plan validation, and the
2
+ * default Agent SDK planner. */
3
+ /** Build the system prompt by concatenating each connector's SKILL.md verbatim. */
4
+ export function buildSystemPrompt(connectors) {
5
+ const sorted = [...connectors].sort((a, b) => a.name.localeCompare(b.name));
6
+ const intro = "You are a planner for a set of read-only data connectors. Below is the documentation for each connector you may call, copied verbatim from its plugin skill.";
7
+ const sections = sorted.map((c) => `## Connector: \`${c.name}\`\n\n${c.skillContent.trim()}\n`);
8
+ const tail = 'Given the user\'s prompt, return JSON: an array of objects with shape `{"connector": "<name>", "action": "<action>", "params": { ... }}`. Do not include any call whose required params you cannot fill from the prompt. Return `[]` if no connector is relevant. Return JSON only, no prose.';
9
+ return [intro, ...sections, tail].join("\n\n");
10
+ }
11
+ /** Build the user-facing prompt portion. */
12
+ export function buildUserPrompt(prompt, extraContext) {
13
+ if (extraContext === undefined || extraContext.trim() === "")
14
+ return prompt;
15
+ return `${prompt}\n\n--- extra context ---\n${extraContext}`;
16
+ }
17
+ /** Extract a JSON array from a possibly-prose-wrapped LLM response.
18
+ * Returns the parsed value (typed `unknown`), or throws on failure. */
19
+ export function extractJsonArray(raw) {
20
+ // First try a clean parse — best case, the model returned only JSON.
21
+ const trimmed = raw.trim();
22
+ try {
23
+ return JSON.parse(trimmed);
24
+ }
25
+ catch {
26
+ // fall through
27
+ }
28
+ // Greedy match the first `[ ... ]` block. Defensive but acceptable for V1.
29
+ const match = trimmed.match(/\[[\s\S]*\]/);
30
+ if (match === null) {
31
+ throw new Error("no JSON array found in planner response");
32
+ }
33
+ return JSON.parse(match[0]);
34
+ }
35
+ /** Validate raw plan entries; drop malformed ones with a recorded reason. */
36
+ export function validatePlan(raw, enabledConnectors) {
37
+ if (!Array.isArray(raw)) {
38
+ return { valid: [], invalid: [{ entry: raw, reason: "plan is not an array" }] };
39
+ }
40
+ const valid = [];
41
+ const invalid = [];
42
+ for (const entry of raw) {
43
+ if (!isPlainObject(entry)) {
44
+ invalid.push({ entry, reason: "entry is not a plain object" });
45
+ continue;
46
+ }
47
+ const { connector, action, params } = entry;
48
+ if (typeof connector !== "string" || !enabledConnectors.has(connector)) {
49
+ invalid.push({ entry, reason: `unknown connector '${String(connector)}'` });
50
+ continue;
51
+ }
52
+ if (typeof action !== "string" || action === "") {
53
+ invalid.push({ entry, reason: "missing or empty action" });
54
+ continue;
55
+ }
56
+ if (!isPlainObject(params)) {
57
+ invalid.push({ entry, reason: "params must be a plain object" });
58
+ continue;
59
+ }
60
+ valid.push({ connector, action, params });
61
+ }
62
+ return { valid, invalid };
63
+ }
64
+ function isPlainObject(v) {
65
+ return v !== null && typeof v === "object" && !Array.isArray(v);
66
+ }
67
+ /** Default planner: invokes `@anthropic-ai/claude-agent-sdk` `query()`. */
68
+ export class AgentSdkPlanner {
69
+ async plan(systemPrompt, userPrompt) {
70
+ let query;
71
+ try {
72
+ ({ query } = await import("@anthropic-ai/claude-agent-sdk"));
73
+ }
74
+ catch (err) {
75
+ throw new Error(`failed to load @anthropic-ai/claude-agent-sdk: ${err.message}`);
76
+ }
77
+ const iter = query({
78
+ prompt: userPrompt,
79
+ options: {
80
+ systemPrompt,
81
+ maxTurns: 1,
82
+ // The planner does not need any tools; it returns JSON via assistant text.
83
+ tools: [],
84
+ },
85
+ });
86
+ let final = "";
87
+ for await (const msg of iter) {
88
+ if (msg.type === "result") {
89
+ if (msg.subtype === "success") {
90
+ final = msg.result;
91
+ }
92
+ else {
93
+ throw new Error(`planner failed: ${msg.subtype}`);
94
+ }
95
+ }
96
+ }
97
+ if (final === "") {
98
+ throw new Error("planner returned no result");
99
+ }
100
+ return final;
101
+ }
102
+ }
103
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/hub/plan.ts"],"names":[],"mappings":"AAAA;iCACiC;AAIjC,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,UAAwC;IACxE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GACT,8JAA8J,CAAC;IACjK,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CACnE,CAAC;IACF,MAAM,IAAI,GACR,+RAA+R,CAAC;IAClS,OAAO,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,YAAqB;IACnE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IAC5E,OAAO,GAAG,MAAM,8BAA8B,YAAY,EAAE,CAAC;AAC/D,CAAC;AAED;wEACwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,qEAAqE;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,2EAA2E;IAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAOD,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAC1B,GAAY,EACZ,iBAAsC;IAEtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,2EAA2E;AAC3E,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,UAAkB;QACjD,IAAI,KAA4D,CAAC;QACjE,IAAI,CAAC;YACH,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,kDAAmD,GAAa,CAAC,OAAO,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC;YACjB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE;gBACP,YAAY;gBACZ,QAAQ,EAAE,CAAC;gBACX,2EAA2E;gBAC3E,KAAK,EAAE,EAAE;aACV;SACF,CAAC,CAAC;QACH,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC9B,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,65 @@
1
+ /** Public types for `@narai/connector-hub`. */
2
+ import type { ResolvedConnector, LoadOptions, ResolvedConfig } from "narai-primitives/config";
3
+ import type { ResolvedAgentCli } from "narai-primitives/toolkit";
4
+ export interface GatherInput {
5
+ prompt: string;
6
+ consumer?: string;
7
+ environment?: string;
8
+ extraContext?: string;
9
+ }
10
+ export interface PlanStep {
11
+ connector: string;
12
+ action: string;
13
+ params: Record<string, unknown>;
14
+ }
15
+ export interface DispatchError {
16
+ code: string;
17
+ message: string;
18
+ }
19
+ export interface DispatchResult {
20
+ step: number;
21
+ connector: string;
22
+ action: string;
23
+ params: Record<string, unknown>;
24
+ envelope?: unknown;
25
+ error?: DispatchError;
26
+ }
27
+ export interface GatherOutput {
28
+ plan: PlanStep[];
29
+ results: DispatchResult[];
30
+ }
31
+ /** Pluggable planner — an implementation that returns a raw LLM response string. */
32
+ export interface Planner {
33
+ plan(systemPrompt: string, userPrompt: string): Promise<string>;
34
+ }
35
+ /** A resolved connector + the bin needed to invoke it + its SKILL.md content. */
36
+ export interface PreparedConnector {
37
+ name: string;
38
+ binCommand: string;
39
+ binArgs: string[];
40
+ skillContent: string;
41
+ slice: ResolvedConnector;
42
+ }
43
+ /** Options for `child_process.spawn`-style injection. */
44
+ export interface SpawnOpts {
45
+ env?: NodeJS.ProcessEnv;
46
+ }
47
+ /** Minimal handle returned by an injected spawn fn. */
48
+ export interface SpawnedHandle {
49
+ stdout: NodeJS.ReadableStream;
50
+ stderr: NodeJS.ReadableStream;
51
+ on(event: "exit", listener: (code: number | null) => void): void;
52
+ on(event: "error", listener: (err: Error) => void): void;
53
+ }
54
+ export type SpawnFn = (cmd: string, args: string[], opts: SpawnOpts) => SpawnedHandle;
55
+ export type ConfigLoader = (opts: LoadOptions) => Promise<ResolvedConfig>;
56
+ /** Resolves a connector's CLI bin from its short name. Defaults to `resolveAgentCli`. */
57
+ export type CliResolver = (name: string) => ResolvedAgentCli | null;
58
+ export interface GatherDeps {
59
+ planner?: Planner;
60
+ spawnProcess?: SpawnFn;
61
+ configLoader?: ConfigLoader;
62
+ /** Override the default `resolveAgentCli` (used by tests). */
63
+ cliResolver?: CliResolver;
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hub/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;CAC1D;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,SAAS,KACZ,aAAa,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE1E,yFAAyF;AACzF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B"}
@@ -0,0 +1,3 @@
1
+ /** Public types for `@narai/connector-hub`. */
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hub/types.ts"],"names":[],"mappings":"AAAA,+CAA+C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Wrap a dynamic `import(modName)` so that `ERR_MODULE_NOT_FOUND` (and the
3
+ * older CommonJS `MODULE_NOT_FOUND`) becomes a friendly error matching the
4
+ * Python `ImportError` style: the user sees the package name and the exact
5
+ * `npm install` command needed.
6
+ *
7
+ * Anything other than a not-found error is rethrown unchanged — we don't
8
+ * want to swallow real import failures (syntax errors, etc.).
9
+ */
10
+ export declare function importOptional<T>(modName: string, installName?: string): Promise<T>;
11
+ export declare function isBinaryOnPath(binaryName: string): boolean;
12
+ /** Test helper — wipe the PATH probe cache between tests. */
13
+ export declare function _resetBinaryProbeCache(): void;
14
+ //# sourceMappingURL=_optional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_optional.d.ts","sourceRoot":"","sources":["../../src/toolkit/_optional.ts"],"names":[],"mappings":"AAqBA;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAsBD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAiB1D;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * _optional.ts — shared helpers for graceful degradation when an optional
3
+ * dependency is missing.
4
+ *
5
+ * Two primitives:
6
+ * - `importOptional(modName, installName?)`: wrap a dynamic `import(x)` so
7
+ * an unresolvable module raises a user-friendly `Error` naming the
8
+ * npm package and the exact install command, matching the Python
9
+ * reference's `ImportError` style. Promoted from `extract_binary.ts`
10
+ * so `extract_multimodal.ts` can reuse it.
11
+ * - `isBinaryOnPath(binaryName)`: probe `PATH` for an external CLI tool
12
+ * (e.g. `faster-whisper`, `yt-dlp`) by running `<bin> --version` via
13
+ * `spawnSync` and returning whether the exit code was 0. Suppresses
14
+ * stdio, safe to call in hot paths. Backbone of the multimodal
15
+ * feature flag (`multimodal.enabled: optional`) — callers surface a
16
+ * warning when this returns false instead of erroring out.
17
+ */
18
+ import { spawnSync } from "node:child_process";
19
+ // ── Optional-dep loader ────────────────────────────────────────────
20
+ /**
21
+ * Wrap a dynamic `import(modName)` so that `ERR_MODULE_NOT_FOUND` (and the
22
+ * older CommonJS `MODULE_NOT_FOUND`) becomes a friendly error matching the
23
+ * Python `ImportError` style: the user sees the package name and the exact
24
+ * `npm install` command needed.
25
+ *
26
+ * Anything other than a not-found error is rethrown unchanged — we don't
27
+ * want to swallow real import failures (syntax errors, etc.).
28
+ */
29
+ export async function importOptional(modName, installName) {
30
+ try {
31
+ return (await import(modName));
32
+ }
33
+ catch (e) {
34
+ const err = e;
35
+ const msg = typeof err.message === "string" ? err.message : "";
36
+ // Match both Node's native loader (`ERR_MODULE_NOT_FOUND`) and
37
+ // Vitest/Vite's loader (message-shaped errors). Real syntax errors
38
+ // from inside a resolved module produce `SyntaxError` (name), which
39
+ // we intentionally do NOT rewrite — rewriting would hide user bugs.
40
+ const notFound = err.code === "ERR_MODULE_NOT_FOUND" ||
41
+ err.code === "MODULE_NOT_FOUND" ||
42
+ (err.name !== "SyntaxError" &&
43
+ (msg.includes("Failed to load url") ||
44
+ msg.includes("Cannot find module") ||
45
+ msg.includes("Cannot find package") ||
46
+ msg.includes("does not provide an export")));
47
+ if (notFound) {
48
+ const pkgName = installName ??
49
+ (modName.startsWith("@")
50
+ ? modName.split("/").slice(0, 2).join("/")
51
+ : (modName.split("/")[0] ?? modName));
52
+ throw new Error(`Missing optional dependency '${pkgName}'. Install with: npm install ${pkgName}`);
53
+ }
54
+ throw e;
55
+ }
56
+ }
57
+ // ── PATH probing ────────────────────────────────────────────────────
58
+ /**
59
+ * Return true when `binaryName` is resolvable on `PATH` (i.e. the user's
60
+ * shell could run it). Implementation: invoke `<binaryName> --version`
61
+ * via `spawnSync` with stdio suppressed.
62
+ *
63
+ * `spawnSync` returns an object with:
64
+ * - `error` populated when the binary isn't found (ENOENT).
65
+ * - `status` set when the binary ran (even if `--version` isn't a real
66
+ * flag — we only care that the process launched, not its exit code).
67
+ *
68
+ * So presence = no error AND status is a number. Non-zero statuses still
69
+ * count as "present" because some legacy tools use `--version` for help.
70
+ *
71
+ * Never throws. Caches the result per binary name for the lifetime of
72
+ * the Node process (PATH doesn't change mid-run).
73
+ */
74
+ const _probeCache = new Map();
75
+ export function isBinaryOnPath(binaryName) {
76
+ const cached = _probeCache.get(binaryName);
77
+ if (cached !== undefined)
78
+ return cached;
79
+ const result = spawnSync(binaryName, ["--version"], {
80
+ stdio: "ignore",
81
+ // Guard against a binary that hangs on --version: cap at 5s.
82
+ timeout: 5_000,
83
+ });
84
+ // spawnSync returns `error` set when the binary isn't found (ENOENT),
85
+ // or a non-null `status` / `signal` when it ran.
86
+ const present = result.error === undefined || result.error === null
87
+ ? result.status !== null || result.signal !== null
88
+ : false;
89
+ _probeCache.set(binaryName, present);
90
+ return present;
91
+ }
92
+ /** Test helper — wipe the PATH probe cache between tests. */
93
+ export function _resetBinaryProbeCache() {
94
+ _probeCache.clear();
95
+ }
96
+ //# sourceMappingURL=_optional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_optional.js","sourceRoot":"","sources":["../../src/toolkit/_optional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,sEAAsE;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,WAAoB;IAEpB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAM,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAA0B,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,+DAA+D;QAC/D,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;QACpE,MAAM,QAAQ,GACZ,GAAG,CAAC,IAAI,KAAK,sBAAsB;YACnC,GAAG,CAAC,IAAI,KAAK,kBAAkB;YAC/B,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa;gBACzB,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBACjC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBAClC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACnC,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GACX,WAAW;gBACX,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;oBACtB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,gCAAgC,OAAO,EAAE,CACjF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE/C,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,EAAE;QAClD,KAAK,EAAE,QAAQ;QACf,6DAA6D;QAC7D,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,OAAO,GACX,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;QACjD,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;QAClD,CAAC,CAAC,KAAK,CAAC;IACZ,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,sBAAsB;IACpC,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * agent_cli — shared CLI argument parser for connector packages.
3
+ *
4
+ * Connectors all accept the same `--action <name> --params <json>` shape.
5
+ * This helper centralises the parser, keyed by an explicit set of valid
6
+ * flag names so unknown flags still throw. Each caller keeps its own
7
+ * help text and post-parse validation (e.g. JSON-shaped `--params`).
8
+ */
9
+ /** Parsed result. Keys match the lowercase flag names. */
10
+ export interface ParsedAgentArgs {
11
+ /** The `<name>` portion of `--action <name>` or `--action=<name>`. */
12
+ action?: string;
13
+ /** The `<json>` portion of `--params <json>` or `--params=<json>`. */
14
+ params?: string;
15
+ /** `true` when `-h` / `--help` was passed. */
16
+ help?: boolean;
17
+ }
18
+ /** Closed set of valid flag names (without the leading `--`). */
19
+ export interface FlagSpec {
20
+ readonly flags: readonly string[];
21
+ }
22
+ /**
23
+ * Parse `argv` against a closed set of valid flag names.
24
+ *
25
+ * Accepted shapes:
26
+ * --flag value
27
+ * --flag=value
28
+ * -h / --help
29
+ *
30
+ * Throws on any positional, bare `-x`, or unrecognised `--name`.
31
+ */
32
+ export declare function parseAgentArgs(argv: readonly string[], spec: FlagSpec): ParsedAgentArgs;
33
+ //# sourceMappingURL=agent_cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_cli.d.ts","sourceRoot":"","sources":["../../src/toolkit/agent_cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iEAAiE;AACjE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,QAAQ,GACb,eAAe,CAwCjB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * agent_cli — shared CLI argument parser for connector packages.
3
+ *
4
+ * Connectors all accept the same `--action <name> --params <json>` shape.
5
+ * This helper centralises the parser, keyed by an explicit set of valid
6
+ * flag names so unknown flags still throw. Each caller keeps its own
7
+ * help text and post-parse validation (e.g. JSON-shaped `--params`).
8
+ */
9
+ /**
10
+ * Parse `argv` against a closed set of valid flag names.
11
+ *
12
+ * Accepted shapes:
13
+ * --flag value
14
+ * --flag=value
15
+ * -h / --help
16
+ *
17
+ * Throws on any positional, bare `-x`, or unrecognised `--name`.
18
+ */
19
+ export function parseAgentArgs(argv, spec) {
20
+ const valid = new Set(spec.flags);
21
+ const out = {};
22
+ let i = 0;
23
+ while (i < argv.length) {
24
+ const a = argv[i];
25
+ if (a === undefined) {
26
+ i++;
27
+ continue;
28
+ }
29
+ if (a === "-h" || a === "--help") {
30
+ out.help = true;
31
+ i++;
32
+ continue;
33
+ }
34
+ if (!a.startsWith("--")) {
35
+ throw new Error(`unrecognized argument: ${a}`);
36
+ }
37
+ let name;
38
+ let value;
39
+ const eq = a.indexOf("=");
40
+ if (eq >= 0) {
41
+ name = a.slice(2, eq);
42
+ value = a.slice(eq + 1);
43
+ i++;
44
+ }
45
+ else {
46
+ name = a.slice(2);
47
+ value = argv[i + 1];
48
+ i += 2;
49
+ }
50
+ if (!valid.has(name)) {
51
+ throw new Error(`unrecognized argument: --${name}`);
52
+ }
53
+ if (name === "action") {
54
+ out.action = value ?? "";
55
+ }
56
+ else if (name === "params") {
57
+ out.params = value ?? "";
58
+ }
59
+ }
60
+ return out;
61
+ }
62
+ //# sourceMappingURL=agent_cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_cli.js","sourceRoot":"","sources":["../../src/toolkit/agent_cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAuB,EACvB,IAAc;IAEd,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAY,CAAC;QACjB,IAAI,KAAyB,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * agent_resolver — locate a connector's CLI on disk via the canonical
3
+ * 4-step fallback every consumer (the hub, doc-wiki's wrappers, etc.) needs:
4
+ *
5
+ * 1. `<NAME>_AGENT_CLI` env var (operator escape hatch).
6
+ * 2. `~/.claude/plugins/cache/<name>-agent-plugin*` — populated by Claude
7
+ * Code's plugin manager.
8
+ * 3. `${CLAUDE_PLUGIN_DATA}/node_modules/<package>/<cliRelativePath>` —
9
+ * where the connector's `SessionStart` hook installs it.
10
+ * 4. `~/src/connectors/<name>-agent-connector/<cliRelativePath>` — the
11
+ * developer-machine fallback.
12
+ *
13
+ * Returns null if no candidate exists, so callers can fail with a clear
14
+ * message instead of crashing on `spawn`.
15
+ */
16
+ export interface ResolveAgentCliOptions {
17
+ /** Connector short name (e.g. `"confluence"`, `"db"`, `"aws"`). */
18
+ name: string;
19
+ /** Override env-var name. Default: `<NAME>_AGENT_CLI` (uppercased + underscores for hyphens). */
20
+ envVar?: string;
21
+ /** Substring matched against entries in `~/.claude/plugins/cache/`. Default: `<name>-agent-plugin`. */
22
+ pluginNameContains?: string;
23
+ /** npm package the connector is published as. Default: `@narai/<name>-agent-connector`. */
24
+ packageName?: string;
25
+ /** CLI path within the package. Default: `dist/cli.js`. */
26
+ cliRelativePath?: string;
27
+ /** Dev-fallback root. Default: `~/src/connectors/`. */
28
+ devRoot?: string;
29
+ /** Override for `process.env`. Used by tests; production callers leave it alone. */
30
+ envOverride?: NodeJS.ProcessEnv;
31
+ /** Override for `os.homedir()`. Used by tests. */
32
+ homeOverride?: string;
33
+ }
34
+ export type ResolutionSource = "env" | "plugin-cache" | "claude-plugin-data" | "dev-fallback";
35
+ export interface ResolvedAgentCli {
36
+ /** Always `"node"` — connector CLIs are always invoked through node. */
37
+ command: string;
38
+ /** `[absoluteCliPath]`; pass to `child_process.spawn(command, [...args, ...callerArgs])`. */
39
+ args: string[];
40
+ /** Which fallback path produced the resolution. Useful for diagnostics. */
41
+ source: ResolutionSource;
42
+ /** Absolute path that was found on disk. */
43
+ resolvedPath: string;
44
+ }
45
+ export declare function resolveAgentCli(opts: ResolveAgentCliOptions): ResolvedAgentCli | null;
46
+ //# sourceMappingURL=agent_resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_resolver.d.ts","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,cAAc,GACd,oBAAoB,GACpB,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,MAAM,EAAE,gBAAgB,CAAC;IACzB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;CACtB;AAkBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,IAAI,CAiDrF"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * agent_resolver — locate a connector's CLI on disk via the canonical
3
+ * 4-step fallback every consumer (the hub, doc-wiki's wrappers, etc.) needs:
4
+ *
5
+ * 1. `<NAME>_AGENT_CLI` env var (operator escape hatch).
6
+ * 2. `~/.claude/plugins/cache/<name>-agent-plugin*` — populated by Claude
7
+ * Code's plugin manager.
8
+ * 3. `${CLAUDE_PLUGIN_DATA}/node_modules/<package>/<cliRelativePath>` —
9
+ * where the connector's `SessionStart` hook installs it.
10
+ * 4. `~/src/connectors/<name>-agent-connector/<cliRelativePath>` — the
11
+ * developer-machine fallback.
12
+ *
13
+ * Returns null if no candidate exists, so callers can fail with a clear
14
+ * message instead of crashing on `spawn`.
15
+ */
16
+ import * as fs from "node:fs";
17
+ import * as os from "node:os";
18
+ import * as path from "node:path";
19
+ function defaultEnvVar(name) {
20
+ return `${name.toUpperCase().replace(/-/g, "_")}_AGENT_CLI`;
21
+ }
22
+ function defaultPluginNameContains(name) {
23
+ return `${name}-agent-plugin`;
24
+ }
25
+ function defaultPackageName(name) {
26
+ return `@narai/${name}-agent-connector`;
27
+ }
28
+ function defaultDevRoot(home) {
29
+ return path.join(home, "src", "connectors");
30
+ }
31
+ export function resolveAgentCli(opts) {
32
+ const env = opts.envOverride ?? process.env;
33
+ const home = opts.homeOverride ?? os.homedir();
34
+ const envVar = opts.envVar ?? defaultEnvVar(opts.name);
35
+ const pluginContains = opts.pluginNameContains ?? defaultPluginNameContains(opts.name);
36
+ const packageName = opts.packageName ?? defaultPackageName(opts.name);
37
+ const cliRelative = opts.cliRelativePath ?? "dist/cli.js";
38
+ const devRoot = opts.devRoot ?? defaultDevRoot(home);
39
+ // 1. Explicit env-var override.
40
+ const envPath = env[envVar];
41
+ if (typeof envPath === "string" && envPath !== "" && fs.existsSync(envPath)) {
42
+ return { command: "node", args: [envPath], source: "env", resolvedPath: envPath };
43
+ }
44
+ // 2. Plugin cache lookup.
45
+ const pluginCache = path.join(home, ".claude", "plugins", "cache");
46
+ if (fs.existsSync(pluginCache)) {
47
+ let entries;
48
+ try {
49
+ entries = fs.readdirSync(pluginCache);
50
+ }
51
+ catch {
52
+ entries = [];
53
+ }
54
+ for (const entry of entries) {
55
+ if (!entry.includes(pluginContains))
56
+ continue;
57
+ const candidate = path.join(pluginCache, entry, "node_modules", packageName, cliRelative);
58
+ if (fs.existsSync(candidate)) {
59
+ return { command: "node", args: [candidate], source: "plugin-cache", resolvedPath: candidate };
60
+ }
61
+ }
62
+ }
63
+ // 3. CLAUDE_PLUGIN_DATA install location.
64
+ const pluginData = env["CLAUDE_PLUGIN_DATA"];
65
+ if (typeof pluginData === "string" && pluginData !== "") {
66
+ const candidate = path.join(pluginData, "node_modules", packageName, cliRelative);
67
+ if (fs.existsSync(candidate)) {
68
+ return { command: "node", args: [candidate], source: "claude-plugin-data", resolvedPath: candidate };
69
+ }
70
+ }
71
+ // 4. Dev fallback.
72
+ const devCandidate = path.join(devRoot, `${opts.name}-agent-connector`, cliRelative);
73
+ if (fs.existsSync(devCandidate)) {
74
+ return { command: "node", args: [devCandidate], source: "dev-fallback", resolvedPath: devCandidate };
75
+ }
76
+ return null;
77
+ }
78
+ //# sourceMappingURL=agent_resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent_resolver.js","sourceRoot":"","sources":["../../src/toolkit/agent_resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAsClC,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC;AAC9D,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,GAAG,IAAI,eAAe,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,UAAU,IAAI,kBAAkB,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA4B;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAErD,gCAAgC;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACpF,CAAC;IAED,0BAA0B;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,SAAS;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC1F,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACvG,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACrF,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IACvG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Audit event shapes. Every event becomes one line in a JSONL file.
3
+ *
4
+ * `event_type` is the discriminant; the union is open (extensible) because
5
+ * connectors may emit their own event types via `AuditWriter.logEvent`.
6
+ */
7
+ export interface BaseEvent {
8
+ event_type: string;
9
+ timestamp: string;
10
+ session_id: string;
11
+ details?: Record<string, unknown>;
12
+ }
13
+ /** Emitted on every action invocation (after policy gate). */
14
+ export interface ActionEvent extends BaseEvent {
15
+ event_type: "action";
16
+ connector: string;
17
+ action: string;
18
+ status: string;
19
+ execution_time_ms: number;
20
+ }
21
+ /** Policy-gate decision events. */
22
+ export interface PolicyEvent extends BaseEvent {
23
+ event_type: "policy_success" | "policy_denied" | "policy_escalate";
24
+ connector: string;
25
+ action: string;
26
+ reason: string;
27
+ kind: string;
28
+ aspects?: readonly string[];
29
+ }
30
+ /** Grant lifecycle. */
31
+ export interface GrantEvent extends BaseEvent {
32
+ event_type: "grant_added" | "grant_expired" | "grant_revoked";
33
+ grant_type: string;
34
+ ttl_seconds?: number;
35
+ }
36
+ /** Hardship — also written to JSONL via the hardship module, but audited too. */
37
+ export interface HardshipEvent extends BaseEvent {
38
+ event_type: "hardship_recorded";
39
+ connector: string;
40
+ action: string;
41
+ kind: string;
42
+ context: string;
43
+ }
44
+ export type AuditEvent = BaseEvent | ActionEvent | PolicyEvent | GrantEvent | HardshipEvent;
45
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/toolkit/audit/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,UAAU,EAAE,QAAQ,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,UAAU,EACN,gBAAgB,GAChB,eAAe,GACf,iBAAiB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,uBAAuB;AACvB,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,UAAU,EAAE,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,iFAAiF;AACjF,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Audit event shapes. Every event becomes one line in a JSONL file.
3
+ *
4
+ * `event_type` is the discriminant; the union is open (extensible) because
5
+ * connectors may emit their own event types via `AuditWriter.logEvent`.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/toolkit/audit/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,16 @@
1
+ import type { AuditEvent } from "./events.js";
2
+ export interface AuditWriterOptions {
3
+ enabled: boolean;
4
+ /** Absolute path to the JSONL file. Required when `enabled` is true. */
5
+ path?: string;
6
+ /** Fixed session id (tests). If omitted, a random 12-char hex is generated. */
7
+ sessionId?: string;
8
+ }
9
+ export declare function scrubSecrets(text: string): string;
10
+ export interface AuditWriter {
11
+ readonly enabled: boolean;
12
+ readonly sessionId: string;
13
+ logEvent(event: Omit<AuditEvent, "timestamp" | "session_id"> & Record<string, unknown>): void;
14
+ }
15
+ export declare function createAuditWriter(opts: AuditWriterOptions): AuditWriter;
16
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/toolkit/audit/writer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD;AAOD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CACN,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5E,IAAI,CAAC;CACT;AA+CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAQvE"}