@anchrd/intel 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/README.md +496 -0
  2. package/bin/intel.mjs +134 -0
  3. package/dist/adapters/cloudflare/cloudflare-flow-workflow.d.ts +42 -0
  4. package/dist/adapters/cloudflare/cloudflare-flow-workflow.js +89 -0
  5. package/dist/adapters/cloudflare/cloudflare.d.ts +29 -0
  6. package/dist/adapters/cloudflare/cloudflare.js +416 -0
  7. package/dist/adapters/cloudflare/cloudflare.types.d.ts +31 -0
  8. package/dist/adapters/cloudflare/cloudflare.types.js +1 -0
  9. package/dist/adapters/content/content.d.ts +3 -0
  10. package/dist/adapters/content/content.js +128 -0
  11. package/dist/adapters/content/content.types.d.ts +38 -0
  12. package/dist/adapters/content/content.types.js +1 -0
  13. package/dist/adapters/db/db-audit.d.ts +62 -0
  14. package/dist/adapters/db/db-audit.js +150 -0
  15. package/dist/adapters/db/db-boards.d.ts +6 -0
  16. package/dist/adapters/db/db-boards.js +324 -0
  17. package/dist/adapters/db/db-feed.d.ts +30 -0
  18. package/dist/adapters/db/db-feed.js +276 -0
  19. package/dist/adapters/db/db-flows.d.ts +42 -0
  20. package/dist/adapters/db/db-flows.js +1311 -0
  21. package/dist/adapters/db/db-grants.d.ts +133 -0
  22. package/dist/adapters/db/db-grants.js +269 -0
  23. package/dist/adapters/db/db-indexing.d.ts +3 -0
  24. package/dist/adapters/db/db-indexing.js +200 -0
  25. package/dist/adapters/db/db-oauth.d.ts +3 -0
  26. package/dist/adapters/db/db-oauth.js +26 -0
  27. package/dist/adapters/db/db-prompts.d.ts +46 -0
  28. package/dist/adapters/db/db-prompts.js +144 -0
  29. package/dist/adapters/db/db.d.ts +6 -0
  30. package/dist/adapters/db/db.js +1687 -0
  31. package/dist/adapters/db/db.types.d.ts +16 -0
  32. package/dist/adapters/db/db.types.js +1 -0
  33. package/dist/adapters/document-converter/document-converter.d.ts +2 -0
  34. package/dist/adapters/document-converter/document-converter.js +26 -0
  35. package/dist/adapters/document-converter/document-converter.types.d.ts +17 -0
  36. package/dist/adapters/document-converter/document-converter.types.js +1 -0
  37. package/dist/adapters/flow-runtime/flow-runtime.d.ts +3 -0
  38. package/dist/adapters/flow-runtime/flow-runtime.js +22 -0
  39. package/dist/adapters/flow-runtime/flow-runtime.types.d.ts +19 -0
  40. package/dist/adapters/flow-runtime/flow-runtime.types.js +1 -0
  41. package/dist/adapters/index-queue/index-queue.d.ts +10 -0
  42. package/dist/adapters/index-queue/index-queue.js +12 -0
  43. package/dist/adapters/index-queue/index-queue.types.d.ts +11 -0
  44. package/dist/adapters/index-queue/index-queue.types.js +1 -0
  45. package/dist/adapters/json-schema/json-schema.d.ts +2 -0
  46. package/dist/adapters/json-schema/json-schema.js +77 -0
  47. package/dist/adapters/openid/openid.d.ts +5 -0
  48. package/dist/adapters/openid/openid.js +301 -0
  49. package/dist/adapters/portal-tokens/portal-tokens.d.ts +8 -0
  50. package/dist/adapters/portal-tokens/portal-tokens.js +79 -0
  51. package/dist/adapters/remote-tools/remote-tools.d.ts +5 -0
  52. package/dist/adapters/remote-tools/remote-tools.js +129 -0
  53. package/dist/adapters/semantic-index/semantic-index.d.ts +2 -0
  54. package/dist/adapters/semantic-index/semantic-index.js +139 -0
  55. package/dist/adapters/semantic-index/semantic-index.types.d.ts +56 -0
  56. package/dist/adapters/semantic-index/semantic-index.types.js +1 -0
  57. package/dist/adapters/session-cookie/session-cookie.d.ts +5 -0
  58. package/dist/adapters/session-cookie/session-cookie.js +87 -0
  59. package/dist/adapters/tool-source-policy/tool-source-policy.d.ts +1 -0
  60. package/dist/adapters/tool-source-policy/tool-source-policy.js +22 -0
  61. package/dist/audit/audit.d.ts +2 -0
  62. package/dist/audit/audit.js +87 -0
  63. package/dist/audit/audit.types.d.ts +23 -0
  64. package/dist/audit/audit.types.js +1 -0
  65. package/dist/auth/auth.d.ts +2 -0
  66. package/dist/auth/auth.js +284 -0
  67. package/dist/auth/auth.types.d.ts +108 -0
  68. package/dist/auth/auth.types.js +1 -0
  69. package/dist/boards/boards.d.ts +44 -0
  70. package/dist/boards/boards.js +447 -0
  71. package/dist/boards/boards.types.d.ts +117 -0
  72. package/dist/boards/boards.types.js +1 -0
  73. package/dist/build/build.d.ts +2 -0
  74. package/dist/build/build.js +192 -0
  75. package/dist/build/build.types.d.ts +17 -0
  76. package/dist/build/build.types.js +1 -0
  77. package/dist/bundle/bundle.d.ts +4 -0
  78. package/dist/bundle/bundle.js +1194 -0
  79. package/dist/bundle/bundle.types.d.ts +33 -0
  80. package/dist/bundle/bundle.types.js +1 -0
  81. package/dist/cli/cli.d.ts +4 -0
  82. package/dist/cli/cli.js +262 -0
  83. package/dist/cli/cli.types.d.ts +14 -0
  84. package/dist/cli/cli.types.js +1 -0
  85. package/dist/contract/audit.d.ts +50 -0
  86. package/dist/contract/audit.js +72 -0
  87. package/dist/contract/board.d.ts +150 -0
  88. package/dist/contract/board.js +262 -0
  89. package/dist/contract/bundle.d.ts +147 -0
  90. package/dist/contract/bundle.js +139 -0
  91. package/dist/contract/contract.d.ts +112 -0
  92. package/dist/contract/contract.js +143 -0
  93. package/dist/contract/feed.d.ts +126 -0
  94. package/dist/contract/feed.js +149 -0
  95. package/dist/contract/flow-run.d.ts +346 -0
  96. package/dist/contract/flow-run.js +194 -0
  97. package/dist/contract/flow.d.ts +1057 -0
  98. package/dist/contract/flow.js +552 -0
  99. package/dist/contract/node.d.ts +551 -0
  100. package/dist/contract/node.js +456 -0
  101. package/dist/contract/share.d.ts +216 -0
  102. package/dist/contract/share.js +134 -0
  103. package/dist/contract/table.d.ts +171 -0
  104. package/dist/contract/table.js +117 -0
  105. package/dist/contract/tool.d.ts +122 -0
  106. package/dist/contract/tool.js +172 -0
  107. package/dist/feed/feed.d.ts +2 -0
  108. package/dist/feed/feed.js +77 -0
  109. package/dist/feed/feed.types.d.ts +23 -0
  110. package/dist/feed/feed.types.js +1 -0
  111. package/dist/flows/flows.d.ts +41 -0
  112. package/dist/flows/flows.js +2216 -0
  113. package/dist/flows/flows.types.d.ts +339 -0
  114. package/dist/flows/flows.types.js +1 -0
  115. package/dist/http/http.d.ts +9 -0
  116. package/dist/http/http.js +874 -0
  117. package/dist/http/http.types.d.ts +22 -0
  118. package/dist/http/http.types.js +1 -0
  119. package/dist/indexing/indexing.d.ts +6 -0
  120. package/dist/indexing/indexing.js +239 -0
  121. package/dist/indexing/indexing.types.d.ts +11 -0
  122. package/dist/indexing/indexing.types.js +1 -0
  123. package/dist/intel/intel.d.ts +3 -0
  124. package/dist/intel/intel.js +194 -0
  125. package/dist/intel/intel.types.d.ts +24 -0
  126. package/dist/intel/intel.types.js +1 -0
  127. package/dist/mcp/mcp.d.ts +2 -0
  128. package/dist/mcp/mcp.js +1292 -0
  129. package/dist/mcp/mcp.types.d.ts +25 -0
  130. package/dist/mcp/mcp.types.js +1 -0
  131. package/dist/nodes/document-links/document-links.d.ts +20 -0
  132. package/dist/nodes/document-links/document-links.js +57 -0
  133. package/dist/nodes/nodes.d.ts +2 -0
  134. package/dist/nodes/nodes.js +1667 -0
  135. package/dist/nodes/nodes.types.d.ts +511 -0
  136. package/dist/nodes/nodes.types.js +1 -0
  137. package/dist/prepare/prepare.d.ts +4 -0
  138. package/dist/prepare/prepare.js +16 -0
  139. package/dist/prepare/prepare.types.d.ts +9 -0
  140. package/dist/prepare/prepare.types.js +1 -0
  141. package/dist/prompts/prompts.d.ts +2 -0
  142. package/dist/prompts/prompts.js +65 -0
  143. package/dist/prompts/prompts.types.d.ts +71 -0
  144. package/dist/prompts/prompts.types.js +1 -0
  145. package/dist/shared/callers/callers.d.ts +28 -0
  146. package/dist/shared/callers/callers.js +30 -0
  147. package/dist/shared/csv/csv.d.ts +13 -0
  148. package/dist/shared/csv/csv.js +85 -0
  149. package/dist/shared/document-text/document-text.d.ts +21 -0
  150. package/dist/shared/document-text/document-text.js +31 -0
  151. package/dist/shared/gate-authorization/gate-authorization.d.ts +5 -0
  152. package/dist/shared/gate-authorization/gate-authorization.js +26 -0
  153. package/dist/shared/grant-expiry/grant-expiry.d.ts +19 -0
  154. package/dist/shared/grant-expiry/grant-expiry.js +26 -0
  155. package/dist/shared/intel-error/intel-error.d.ts +22 -0
  156. package/dist/shared/intel-error/intel-error.js +27 -0
  157. package/dist/shared/plain-title/plain-title.d.ts +16 -0
  158. package/dist/shared/plain-title/plain-title.js +45 -0
  159. package/dist/shared/problem-details/problem-details.d.ts +30 -0
  160. package/dist/shared/problem-details/problem-details.js +18 -0
  161. package/dist/shared/report-unexpected-error/report-unexpected-error.d.ts +1 -0
  162. package/dist/shared/report-unexpected-error/report-unexpected-error.js +37 -0
  163. package/dist/shared/safe-return-path/safe-return-path.d.ts +2 -0
  164. package/dist/shared/safe-return-path/safe-return-path.js +11 -0
  165. package/dist/shared/sha256/sha256.d.ts +2 -0
  166. package/dist/shared/sha256/sha256.js +14 -0
  167. package/dist/tools/tool-servers/tool-servers.d.ts +46 -0
  168. package/dist/tools/tool-servers/tool-servers.js +177 -0
  169. package/dist/tools/tools.d.ts +2 -0
  170. package/dist/tools/tools.js +207 -0
  171. package/dist/tools/tools.types.d.ts +56 -0
  172. package/dist/tools/tools.types.js +1 -0
  173. package/examples/branding/favicon.svg +5 -0
  174. package/examples/branding/logo.svg +5 -0
  175. package/examples/branding/theme.css +16 -0
  176. package/examples/dev.vars.example +7 -0
  177. package/examples/intel.json +9 -0
  178. package/migrations/0000_intel_foundation.sql +203 -0
  179. package/migrations/0001_portal_native_tools.sql +21 -0
  180. package/migrations/0002_flows_in_the_knowledge_tree.sql +34 -0
  181. package/migrations/0003_folder_permissions.sql +211 -0
  182. package/migrations/0004_subflow_runs.sql +14 -0
  183. package/migrations/0005_flow_node_cleanup.sql +28 -0
  184. package/migrations/0005_tables_in_the_knowledge_tree.sql +68 -0
  185. package/migrations/0006_links_are_written_in_the_text.sql +20 -0
  186. package/migrations/0007_no_node_waits.sql +69 -0
  187. package/migrations/0008_three_layers.sql +130 -0
  188. package/migrations/0009_no_context_policy.sql +48 -0
  189. package/migrations/0010_no_run_waits_a_year.sql +27 -0
  190. package/migrations/0011_one_name_for_the_tree.sql +53 -0
  191. package/migrations/0012_table_snapshots.sql +29 -0
  192. package/migrations/0017_a_vector_per_card.sql +38 -0
  193. package/migrations/0018_no_context_policy_at_last.sql +97 -0
  194. package/migrations/0019_one_name_for_the_grants.sql +52 -0
  195. package/migrations/0020_cascade_purge_replay.sql +11 -0
  196. package/migrations/0021_a_flow_carries_its_own_grant.sql +44 -0
  197. package/migrations/0022_a_cursor_over_the_journal.sql +14 -0
  198. package/migrations/0023_a_board_and_its_tasks.sql +116 -0
  199. package/migrations/0024_the_archive_is_a_column.sql +33 -0
  200. package/migrations/0025_archiving_takes_the_subtree.sql +29 -0
  201. package/migrations/0026_one_feed_over_two_kinds.sql +23 -0
  202. package/migrations/0027_the_runs_of_every_flow.sql +27 -0
  203. package/migrations/0028_a_prompt_name_over_two_kinds.sql +70 -0
  204. package/package.json +118 -0
  205. package/src/contract/CLAUDE.md +152 -0
  206. package/src/contract/README.md +102 -0
  207. package/src/contract/audit.ts +85 -0
  208. package/src/contract/board.ts +306 -0
  209. package/src/contract/bundle.ts +157 -0
  210. package/src/contract/contract.ts +161 -0
  211. package/src/contract/feed.ts +165 -0
  212. package/src/contract/flow-run.ts +241 -0
  213. package/src/contract/flow.ts +675 -0
  214. package/src/contract/node.ts +583 -0
  215. package/src/contract/share.ts +196 -0
  216. package/src/contract/table.ts +178 -0
  217. package/src/contract/tool.ts +202 -0
  218. package/ui/README.md +110 -0
  219. package/ui/components.json +21 -0
  220. package/ui/index.html +13 -0
  221. package/ui/package.json +11 -0
  222. package/ui/scripts/lint-tokens.mjs +187 -0
  223. package/ui/src/access-summary/access-summary.tsx +385 -0
  224. package/ui/src/app/action-slot/action-slot.tsx +27 -0
  225. package/ui/src/app/app-sidebar/app-sidebar.tsx +71 -0
  226. package/ui/src/app/app-tree/app-tree.tsx +1175 -0
  227. package/ui/src/app/app.tsx +87 -0
  228. package/ui/src/app/header-search/header-search.tsx +294 -0
  229. package/ui/src/app/reindex-dialog/reindex-dialog.tsx +79 -0
  230. package/ui/src/app/settings-dialog/settings-dialog.tsx +135 -0
  231. package/ui/src/app/sidebar-preferences/sidebar-preferences.ts +68 -0
  232. package/ui/src/app/sidebar-preferences/sidebar-preferences.types.ts +15 -0
  233. package/ui/src/app/sidebar-resize-handle/sidebar-resize-handle.tsx +86 -0
  234. package/ui/src/app/tree-expansion/tree-expansion.ts +107 -0
  235. package/ui/src/app/tree-expansion/tree-expansion.types.ts +31 -0
  236. package/ui/src/app/tree-move/tree-move.tsx +427 -0
  237. package/ui/src/app/tree-reveal/tree-reveal.ts +64 -0
  238. package/ui/src/app/tree-reveal/tree-reveal.types.ts +16 -0
  239. package/ui/src/app/user-footer/user-footer.tsx +188 -0
  240. package/ui/src/app/view-menu/view-menu.tsx +115 -0
  241. package/ui/src/app-root/app-root.tsx +109 -0
  242. package/ui/src/app-root/app-root.types.ts +27 -0
  243. package/ui/src/archive/archive.tsx +417 -0
  244. package/ui/src/attachment-detail/attachment-detail.ts +52 -0
  245. package/ui/src/attachment-viewer/attachment-viewer.tsx +166 -0
  246. package/ui/src/blocknote-view/blocknote-view.tsx +30 -0
  247. package/ui/src/board/board-assignee/board-assignee-picker.tsx +132 -0
  248. package/ui/src/board/board-assignee/board-assignee.ts +48 -0
  249. package/ui/src/board/board-assignee/board-assignee.tsx +75 -0
  250. package/ui/src/board/board-chip/board-chip.tsx +46 -0
  251. package/ui/src/board/board-crumbs/board-crumbs.ts +56 -0
  252. package/ui/src/board/board-crumbs/board-crumbs.tsx +111 -0
  253. package/ui/src/board/board-data/board-data.ts +195 -0
  254. package/ui/src/board/board-data/board-data.types.ts +38 -0
  255. package/ui/src/board/board-dates/board-dates.ts +40 -0
  256. package/ui/src/board/board-dates/board-dates.tsx +105 -0
  257. package/ui/src/board/board-kanban/board-kanban.ts +162 -0
  258. package/ui/src/board/board-kanban/board-kanban.tsx +680 -0
  259. package/ui/src/board/board-open-task/board-open-task.ts +32 -0
  260. package/ui/src/board/board-panel/board-panel.tsx +259 -0
  261. package/ui/src/board/board-settings/board-settings.tsx +226 -0
  262. package/ui/src/board/board-status/board-status.tsx +60 -0
  263. package/ui/src/board/board-stripes/board-stripes.ts +128 -0
  264. package/ui/src/board/board-table/board-table.ts +53 -0
  265. package/ui/src/board/board-table/board-table.tsx +610 -0
  266. package/ui/src/board/board-task/board-task.ts +108 -0
  267. package/ui/src/board/board-task/board-task.tsx +335 -0
  268. package/ui/src/board/board-title-row/board-title-row.tsx +66 -0
  269. package/ui/src/branding/branding.tsx +17 -0
  270. package/ui/src/branding/custom-logo.ts +1 -0
  271. package/ui/src/branding/favicon.default.svg +5 -0
  272. package/ui/src/branding/favicon.svg +5 -0
  273. package/ui/src/components/ui/avatar.tsx +39 -0
  274. package/ui/src/components/ui/button.tsx +64 -0
  275. package/ui/src/components/ui/collapsible.tsx +20 -0
  276. package/ui/src/components/ui/command.tsx +160 -0
  277. package/ui/src/components/ui/dialog.tsx +143 -0
  278. package/ui/src/components/ui/dropdown-menu.tsx +187 -0
  279. package/ui/src/components/ui/input.tsx +21 -0
  280. package/ui/src/components/ui/popover.tsx +41 -0
  281. package/ui/src/components/ui/select.tsx +163 -0
  282. package/ui/src/components/ui/separator.tsx +26 -0
  283. package/ui/src/components/ui/sheet.tsx +136 -0
  284. package/ui/src/components/ui/sidebar.tsx +693 -0
  285. package/ui/src/components/ui/skeleton.tsx +13 -0
  286. package/ui/src/components/ui/switch.tsx +25 -0
  287. package/ui/src/components/ui/table.tsx +82 -0
  288. package/ui/src/components/ui/tabs.tsx +52 -0
  289. package/ui/src/components/ui/tooltip.tsx +51 -0
  290. package/ui/src/data/intel-data-provider/intel-data-provider.ts +685 -0
  291. package/ui/src/data/intel-data-provider/intel-data-provider.types.ts +266 -0
  292. package/ui/src/data/query-client.ts +18 -0
  293. package/ui/src/data/request-refusal/refusal-notice.tsx +36 -0
  294. package/ui/src/data/request-refusal/request-refusal.ts +51 -0
  295. package/ui/src/data/sign-in/sign-in.ts +97 -0
  296. package/ui/src/data/sign-in/sign-in.types.ts +15 -0
  297. package/ui/src/document-link/document-link.tsx +114 -0
  298. package/ui/src/document-markdown/document-markdown.ts +195 -0
  299. package/ui/src/editor-schema/editor-schema.ts +23 -0
  300. package/ui/src/entry-picker/entry-picker.tsx +238 -0
  301. package/ui/src/feed/feed.tsx +344 -0
  302. package/ui/src/file-preview/file-preview-view.tsx +496 -0
  303. package/ui/src/file-preview/file-preview.tsx +28 -0
  304. package/ui/src/file-preview/pdf-file-preview.tsx +5 -0
  305. package/ui/src/file-preview/presentation-file-preview.tsx +21 -0
  306. package/ui/src/file-preview/spreadsheet-file-preview.tsx +5 -0
  307. package/ui/src/file-preview/word-file-preview.tsx +5 -0
  308. package/ui/src/flow-runs/flow-runs.tsx +238 -0
  309. package/ui/src/flows/flows.tsx +1646 -0
  310. package/ui/src/flows/node-icon/node-icon.ts +34 -0
  311. package/ui/src/flows/node-palette/node-palette.tsx +214 -0
  312. package/ui/src/flows/node-palette/node-palette.types.ts +15 -0
  313. package/ui/src/folder-contents/folder-contents.tsx +321 -0
  314. package/ui/src/folder-index/folder-index.ts +55 -0
  315. package/ui/src/frontmatter/frontmatter.tsx +193 -0
  316. package/ui/src/graph-pane/graph-pane.tsx +53 -0
  317. package/ui/src/hooks/use-mobile.ts +19 -0
  318. package/ui/src/i18n/custom.json +4 -0
  319. package/ui/src/i18n/de.json +609 -0
  320. package/ui/src/i18n/en.json +609 -0
  321. package/ui/src/i18n/es.json +609 -0
  322. package/ui/src/i18n/i18n-context.tsx +65 -0
  323. package/ui/src/i18n/i18n-languages/i18n-languages.ts +83 -0
  324. package/ui/src/i18n/i18n.ts +32 -0
  325. package/ui/src/i18n/i18n.types.ts +49 -0
  326. package/ui/src/kind-icon.ts +97 -0
  327. package/ui/src/lib/utils.ts +6 -0
  328. package/ui/src/main.tsx +68 -0
  329. package/ui/src/modal/modal.tsx +53 -0
  330. package/ui/src/node-details/node-details.tsx +545 -0
  331. package/ui/src/node-editor/node-editor.tsx +304 -0
  332. package/ui/src/node-graph/graph-notice.tsx +21 -0
  333. package/ui/src/node-graph/node-graph.ts +214 -0
  334. package/ui/src/node-graph/node-graph.tsx +295 -0
  335. package/ui/src/node-import/node-import.tsx +418 -0
  336. package/ui/src/node-save-error.ts +46 -0
  337. package/ui/src/node-source/node-source.tsx +128 -0
  338. package/ui/src/node-table/node-table.tsx +107 -0
  339. package/ui/src/nodes/nodes.tsx +240 -0
  340. package/ui/src/rename-resource/rename-resource.ts +80 -0
  341. package/ui/src/resolved-names/resolved-names.tsx +67 -0
  342. package/ui/src/resource-error.ts +33 -0
  343. package/ui/src/resource-menu/resource-menu.tsx +1156 -0
  344. package/ui/src/router/router-context.ts +6 -0
  345. package/ui/src/router/router.tsx +67 -0
  346. package/ui/src/router/router.types.ts +8 -0
  347. package/ui/src/router/selection-search.ts +88 -0
  348. package/ui/src/save-button/save-button.tsx +94 -0
  349. package/ui/src/section-hint/section-hint.tsx +40 -0
  350. package/ui/src/sign-in-refused/sign-in-refused.tsx +35 -0
  351. package/ui/src/styles.css +189 -0
  352. package/ui/src/table-columns/table-columns.tsx +379 -0
  353. package/ui/src/theme/custom.css +1 -0
  354. package/ui/src/theme/theme-context.tsx +89 -0
  355. package/ui/src/theme/theme.ts +70 -0
  356. package/ui/src/time/relative-time.tsx +41 -0
  357. package/ui/src/time/time-context.tsx +78 -0
  358. package/ui/src/time/time.ts +165 -0
  359. package/ui/src/title-row/title-row.tsx +185 -0
  360. package/ui/src/tools/tools.tsx +546 -0
  361. package/ui/src/user-name/user-name.ts +61 -0
  362. package/ui/src/verbatim/verbatim.tsx +68 -0
  363. package/ui/tsconfig.json +17 -0
  364. package/ui/vite.config.ts +129 -0
@@ -0,0 +1,339 @@
1
+ import type { ArchiveFlowInput, CreateFlowInput, Flow, FlowDocument, FlowGraph, FlowPublishPreview, FlowRequirements, FlowValidation, FlowVersion, FlowVersionList, FlowVersionSummary, GetFlowVersionInput, ListFlowsInput, PreviewFlowPublishInput, PublishFlowInput, RelationGraph, RelationGraphInput, SaveFlowVersionInput, UnpublishFlowInput, UpdateFlowInput } from "../contract/flow.js";
2
+ import type { CancelFlowRunInput, CompleteFlowRunStepInput, FlowRun, FlowRunHistory, FlowRunList, FlowRunStep, ListFlowRunsInput, StartFlowRunInput } from "../contract/flow-run.js";
3
+ import type { Node } from "../contract/node.js";
4
+ import type { ResourceAccessList, ResourceGrant, ResourceGrantList, ResourceVerb, RevokeFlowGrantInput, RevokeGrantResult, ShareFlowInput, ShareResult } from "../contract/share.js";
5
+ import type { PromptNameHolder } from "../prompts/prompts.types.js";
6
+ export type FlowPrincipal = Pick<FlowActor, "id" | "email" | "isAdmin">;
7
+ export type FlowCallReach = "subtree" | "library" | "out-of-reach";
8
+ export interface FlowRunChainEntry {
9
+ runId: string;
10
+ flowId: string;
11
+ flowTitle: string;
12
+ versionId: string;
13
+ parentRunId: string | null;
14
+ currentNodeId: string | null;
15
+ }
16
+ export interface ListRunsQuery {
17
+ flowId: string | null;
18
+ failedOnly: boolean;
19
+ limit: number;
20
+ cursor: {
21
+ createdAt: string;
22
+ id: string;
23
+ } | null;
24
+ }
25
+ export interface FlowCallSite {
26
+ runId: string;
27
+ nodeId: string;
28
+ }
29
+ export interface FlowVisibleCall extends FlowCallSite {
30
+ calledRunId: string;
31
+ }
32
+ export interface FlowRunStepRow {
33
+ runId: string;
34
+ nodeId: string;
35
+ outcome: "completed" | "failed";
36
+ branch: string | null;
37
+ error: string | null;
38
+ completedAt: string;
39
+ }
40
+ export interface FlowActor {
41
+ id: string;
42
+ email: string;
43
+ canRun: boolean;
44
+ isAdmin?: boolean;
45
+ }
46
+ export type FlowVerb = ResourceVerb;
47
+ export type FlowOperation = "flows.create" | "flows.update" | "flows.archive" | "flows.save" | "flows.publish" | "flows.run" | "flows.complete" | "flows.cancel" | "flows.unpublish" | "flows.share" | "flows.revoke";
48
+ export interface BoundedLevel<T> {
49
+ items: T[];
50
+ total: number;
51
+ }
52
+ export interface FlowRepository {
53
+ listVisible(actor: FlowActor, input?: ListFlowsInput): Promise<Flow[]>;
54
+ listVisibleBounded(actor: FlowActor, folderId: string | null, limit: number): Promise<BoundedLevel<Flow>>;
55
+ getVisible(actor: FlowActor, flowId: string): Promise<Flow | null>;
56
+ can(actor: FlowActor, flowId: string, verb: FlowVerb): Promise<boolean>;
57
+ listFlowGrants(flowId: string): Promise<ResourceGrant[]>;
58
+ listEffectiveFlowAccess(flowId: string): Promise<{
59
+ ownerIds: string[];
60
+ items: ResourceGrant[];
61
+ }>;
62
+ setFlowGrant(input: {
63
+ grant: ResourceGrant;
64
+ flowId: string;
65
+ actorId: string;
66
+ idempotencyKey: string;
67
+ auditId: string;
68
+ }): Promise<ResourceGrant>;
69
+ revokeFlowGrant(input: {
70
+ flowId: string;
71
+ grantId: string;
72
+ actorId: string;
73
+ idempotencyKey: string;
74
+ auditId: string;
75
+ occurredAt: string;
76
+ }): Promise<boolean>;
77
+ findIdempotentFlowRevocation(actorId: string, idempotencyKey: string): Promise<boolean | null>;
78
+ getCallable(actor: FlowActor, flowId: string): Promise<Flow | null>;
79
+ listCallable(actor: FlowActor, flowIds: string[]): Promise<Flow[]>;
80
+ callReach(callerFolderId: string | null, calleeFolderId: string | null): Promise<FlowCallReach>;
81
+ externalCallers(actor: FlowPrincipal, folderId: string): Promise<{
82
+ visible: string[];
83
+ hidden: number;
84
+ }>;
85
+ nodeReferences(actor: FlowPrincipal, folderId: string): Promise<string[]>;
86
+ /**
87
+ * Which of these ids still have a row in the tree at all — archived or not, for anybody (#509).
88
+ *
89
+ * ⚠️ It takes NO actor, and that is the honest shape rather than an oversight: the answer does
90
+ * not depend on who is asking, so an `actor` parameter would suggest a narrowing that is not
91
+ * there. Its one caller has already asked `visibleNodes` and only reaches this for the ids that
92
+ * came back empty, so what it adds is a single bit about ids the caller sent us out of a graph
93
+ * they may already read.
94
+ *
95
+ * ⚠️ An ARCHIVED node counts as existing. Archiving is reversible — the row is still there and a
96
+ * restore brings the reference back — so calling it invalid would tell an author to replace a
97
+ * step that is about to work again. Only a purge takes the row (`DELETE FROM nodes`, #457), and
98
+ * only that is what "there is nothing here any more" means.
99
+ */
100
+ existingNodes(nodeIds: string[]): Promise<string[]>;
101
+ publishedCallees(flowId: string): Promise<{
102
+ title: string;
103
+ calleeIds: string[];
104
+ } | null>;
105
+ findIdempotent(actorId: string, operation: FlowOperation, key: string): Promise<string | null>;
106
+ insertFlow(input: {
107
+ flow: Flow;
108
+ actorId: string;
109
+ idempotencyKey: string;
110
+ auditId: string;
111
+ }): Promise<Flow>;
112
+ updateFlow(input: {
113
+ flow: Flow;
114
+ baseUpdatedAt: string;
115
+ actorId: string;
116
+ idempotencyKey: string;
117
+ auditId: string;
118
+ }): Promise<"conflict" | Flow>;
119
+ archiveFlow(input: {
120
+ flowId: string;
121
+ baseUpdatedAt: string;
122
+ archivedAt: string | null;
123
+ updatedAt: string;
124
+ actorId: string;
125
+ idempotencyKey: string;
126
+ auditId: string;
127
+ }): Promise<"conflict" | Flow>;
128
+ flowsUsingNode(actor: FlowActor, nodeId: string): Promise<{
129
+ visible: string[];
130
+ hidden: number;
131
+ }>;
132
+ flowCallers(actor: FlowActor, flowId: string): Promise<{
133
+ visible: string[];
134
+ hidden: number;
135
+ }>;
136
+ hasEntangledRuns(flowId: string): Promise<boolean>;
137
+ hasUnfinishedRuns(flowId: string): Promise<boolean>;
138
+ purgeFlow(input: {
139
+ flowId: string;
140
+ actorId: string;
141
+ auditId: string;
142
+ occurredAt: string;
143
+ }): Promise<"missing" | {
144
+ purged: true;
145
+ }>;
146
+ getVersion(versionId: string): Promise<FlowVersion | null>;
147
+ listVersions(flowId: string): Promise<Omit<FlowVersionSummary, "published">[]>;
148
+ getVersions(versionIds: string[]): Promise<FlowVersion[]>;
149
+ insertVersion(input: {
150
+ version: FlowVersion;
151
+ baseVersionId: string | null;
152
+ actorId: string;
153
+ idempotencyKey: string;
154
+ auditId: string;
155
+ }): Promise<"saved" | "conflict">;
156
+ publish(input: {
157
+ flowId: string;
158
+ versionId: string;
159
+ actorId: string;
160
+ idempotencyKey: string;
161
+ auditId: string;
162
+ occurredAt: string;
163
+ /**
164
+ * The slash command this flow is offered under (#775). ⚠️ Three states, and `undefined` is the
165
+ * one that does nothing: publishing a second version of an already-offered flow must not
166
+ * withdraw its command, so a caller who says nothing about prompts changes nothing about them.
167
+ * `null` gives the name up, a string takes one.
168
+ */
169
+ promptName?: string | null;
170
+ }): Promise<boolean | "prompt_name_taken">;
171
+ /**
172
+ * Who holds a slash command name, for the sentence a refused publish gets. `title` is `null` when
173
+ * the holder exists but this actor may not see it — the same one implementation the node
174
+ * repository answers with (`db-prompts.ts`).
175
+ */
176
+ promptNameHolder(actor: FlowActor, name: string): Promise<PromptNameHolder | null>;
177
+ unpublish(input: {
178
+ flowId: string;
179
+ versionId: string;
180
+ actorId: string;
181
+ idempotencyKey: string;
182
+ auditId: string;
183
+ occurredAt: string;
184
+ }): Promise<boolean>;
185
+ insertRun(input: {
186
+ run: FlowRun;
187
+ actorId: string;
188
+ idempotencyKey: string;
189
+ auditId: string;
190
+ }): Promise<FlowRun>;
191
+ getRunVisible(actor: FlowActor, runId: string): Promise<FlowRun | null>;
192
+ listRunsVisible(actor: FlowActor, input: ListRunsQuery): Promise<FlowRun[]>;
193
+ failedSteps(runIds: string[]): Promise<FlowRunStepRow[]>;
194
+ runSteps(runId: string): Promise<FlowRunStepRow[]>;
195
+ visibleCallRuns(actor: FlowActor, sites: FlowCallSite[]): Promise<FlowVisibleCall[]>;
196
+ findChildRun(parentRunId: string, parentNodeId: string): Promise<FlowRun | null>;
197
+ runChain(runId: string): Promise<FlowRunChainEntry[]>;
198
+ /**
199
+ * End a run and every non-terminal run below it in one write (#145). The recursion follows
200
+ * `parent_run_id`, so cancelling a caller cannot leave a called run working for a result nobody
201
+ * will ever read. No step row is written for any of them: cancelling is not a step outcome, and
202
+ * inventing a failed step is exactly what this operation exists to replace.
203
+ *
204
+ * `"conflict"` means the run was already terminal when the write arrived — the caller's status
205
+ * check raced another writer — and nothing was changed. `cancelled` names every run this write
206
+ * ended, so the service can wake each of their durable waits.
207
+ */
208
+ cancelRun(input: {
209
+ runId: string;
210
+ flowId: string;
211
+ actorId: string;
212
+ occurredAt: string;
213
+ idempotencyKey: string;
214
+ auditId: string;
215
+ }): Promise<"conflict" | {
216
+ cancelled: string[];
217
+ }>;
218
+ advanceRun(input: {
219
+ run: FlowRun;
220
+ expectedNodeId: string;
221
+ actorId: string;
222
+ stepId: string;
223
+ outcome: "completed" | "failed";
224
+ branch: string | null;
225
+ output: unknown;
226
+ error: string | null;
227
+ idempotencyKey: string;
228
+ auditId: string;
229
+ }): Promise<"advanced" | "conflict">;
230
+ }
231
+ export interface FlowRuntime {
232
+ start(runId: string): Promise<void>;
233
+ signal(runId: string): Promise<void>;
234
+ }
235
+ export interface FlowDeps {
236
+ repository: FlowRepository;
237
+ runtime: FlowRuntime;
238
+ id(): string;
239
+ now(): Date;
240
+ folderAccess(actor: FlowActor, folderId: string): Promise<FolderAccess>;
241
+ parentArchivedAt(folderId: string): Promise<{
242
+ archivedAt: string | null;
243
+ kind: string;
244
+ } | null>;
245
+ /**
246
+ * The children of one folder of the shared tree as this actor may see them, without their bodies.
247
+ * `null` is the root. The node service answers, for the same reason `folderAccess` does.
248
+ *
249
+ * ⚠️ `limit` bounds the read, not its result: its one caller draws a bounded picture, and a folder
250
+ * of a thousand documents must not be loaded whole for it (#30). What the bound left behind comes
251
+ * back as `total`, counted among the nodes this actor may see and no others — a number that
252
+ * included the rest would say that the rest is there.
253
+ */
254
+ nodeChildren(actor: FlowActor, folderId: string | null, limit: number): Promise<BoundedLevel<Node>>;
255
+ /**
256
+ * One node as this actor may see it. `null` means "this actor cannot reach it", never "it is
257
+ * gone" — the relation graph must then leave it out altogether rather than draw a placeholder,
258
+ * because the edge alone would already give away that it exists (#19).
259
+ *
260
+ * ⚠️ Three jobs, one door, on purpose. The relation graph draws what comes back here; the
261
+ * requirements list names it; and every tree link of every run is authorized by it, nested
262
+ * calls included (ADR-0004 §4). A second lookup beside it is how a drawing or a message ends up
263
+ * kinder than the door it describes — which is what #17 and #19 were sent back for.
264
+ *
265
+ * ⚠️ `existingNodes` on the repository is the ONE thing asked beside it, and it is the exception
266
+ * that shows the rule rather than a hole in it: it runs only on ids this door already refused, it
267
+ * takes no actor, and it can only ever make the answer HARSHER — "this names nothing" instead of
268
+ * "you cannot see it". Nothing about a node it does hold reaches the caller, so no drawing and no
269
+ * message becomes kinder. Adding a third would need the same three properties (#492, #509).
270
+ */
271
+ visibleNodes(actor: FlowActor, nodeId: string): Promise<Node | null>;
272
+ /**
273
+ * Whether this actor may manage sharing of a NODE (#825) — straight to the same predicate
274
+ * `node_effective_access_list` refuses without (`nodes.ts:1537`). The relation graph asks it once
275
+ * per node already known to be visible, before drawing a single access edge off it.
276
+ *
277
+ * ⚠️ Optional on purpose. It bridges to the node service exactly like `visibleNodes` above, but
278
+ * adding a required field here would touch every one of the several dozen fixtures across this
279
+ * package that construct a `FlowDeps` for a test that never exercises the relation graph's outer
280
+ * ring. The real composition always provides it; where a test omits it, the graph simply carries
281
+ * no users and no access edges — the same "cannot draw it" shape `omitted` already uses.
282
+ */
283
+ nodeShareable?(actor: FlowActor, nodeId: string): Promise<boolean>;
284
+ nodeEffectiveAccess?(nodeId: string): Promise<{
285
+ ownerIds: string[];
286
+ items: ResourceGrant[];
287
+ }>;
288
+ toolSurfaceFingerprint(actor: FlowActor, server: string, allow: string[] | null): Promise<string | null>;
289
+ unavailableServers(actor: FlowActor, servers: string[]): Promise<string[]>;
290
+ }
291
+ export type FolderAccess = "ok" | "missing" | "not-a-folder" | "forbidden";
292
+ export interface FlowService {
293
+ list(actor: FlowActor, input?: ListFlowsInput): Promise<{
294
+ items: Flow[];
295
+ withCalls: string[];
296
+ }>;
297
+ get(actor: FlowActor, flowId: string): Promise<FlowDocument>;
298
+ listVersions(actor: FlowActor, flowId: string): Promise<FlowVersionList>;
299
+ getVersion(actor: FlowActor, input: GetFlowVersionInput): Promise<FlowVersion>;
300
+ listCalls(actor: FlowActor, flowId: string): Promise<{
301
+ items: Flow[];
302
+ withCalls: string[];
303
+ }>;
304
+ validate(actor: FlowActor, flowId: string): Promise<FlowValidation>;
305
+ relationGraph(actor: FlowActor, input: RelationGraphInput): Promise<RelationGraph>;
306
+ listRequirements(actor: FlowActor, flowId: string): Promise<FlowRequirements>;
307
+ listGrants(actor: FlowActor, flowId: string): Promise<ResourceGrantList>;
308
+ listEffectiveAccess(actor: FlowActor, flowId: string): Promise<ResourceAccessList>;
309
+ share(actor: FlowActor, input: ShareFlowInput): Promise<ShareResult>;
310
+ revokeGrant(actor: FlowActor, input: RevokeFlowGrantInput): Promise<RevokeGrantResult>;
311
+ create(actor: FlowActor, input: CreateFlowInput): Promise<Flow>;
312
+ update(actor: FlowActor, input: UpdateFlowInput): Promise<Flow>;
313
+ archive(actor: FlowActor, input: ArchiveFlowInput): Promise<Flow>;
314
+ purge(actor: FlowActor, input: {
315
+ flowId: string;
316
+ }): Promise<{
317
+ purged: true;
318
+ title: string;
319
+ }>;
320
+ save(actor: FlowActor, input: SaveFlowVersionInput): Promise<FlowDocument>;
321
+ previewPublish(actor: FlowActor, input: PreviewFlowPublishInput): Promise<FlowPublishPreview>;
322
+ publish(actor: FlowActor, input: PublishFlowInput): Promise<Flow>;
323
+ unpublish(actor: FlowActor, input: UnpublishFlowInput): Promise<Flow>;
324
+ start(actor: FlowActor, input: StartFlowRunInput): Promise<FlowRunStep>;
325
+ getRun(actor: FlowActor, runId: string): Promise<FlowRunStep>;
326
+ listRuns(actor: FlowActor, input: ListFlowRunsInput): Promise<FlowRunList>;
327
+ listRunSteps(actor: FlowActor, runId: string): Promise<FlowRunHistory>;
328
+ completeStep(actor: FlowActor, input: CompleteFlowRunStepInput): Promise<FlowRunStep>;
329
+ cancelRun(actor: FlowActor, input: CancelFlowRunInput): Promise<FlowRunStep>;
330
+ }
331
+ export interface CompiledFlow {
332
+ graph: FlowGraph;
333
+ triggerId: string;
334
+ }
335
+ export interface RunProblem {
336
+ status: number;
337
+ code: string;
338
+ detail: string;
339
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { Authorized } from "@anchrd/gate-sdk";
2
+ import { Hono } from "hono";
3
+ import type { HttpDeps } from "./http.types.js";
4
+ export declare function createHttp(deps: HttpDeps): Hono<{
5
+ Variables: {
6
+ authorization: Authorized;
7
+ token: string;
8
+ };
9
+ }, import("hono/types").BlankSchema, "/">;