@neuralis/brain-core 0.3.1 → 0.4.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 (371) hide show
  1. package/README.md +88 -1417
  2. package/app/README.md +4 -4
  3. package/app/cards/FilesystemCardShell.tsx +42 -4
  4. package/app/cards/FilesystemChangeCard.tsx +34 -11
  5. package/app/cards/README.md +6 -5
  6. package/app/cards/diffUtils.ts +99 -1
  7. package/app/filesystem/FilesystemHost.tsx +24 -2
  8. package/app/filesystem/README.md +1 -1
  9. package/app/filesystem/api/README.md +3 -3
  10. package/app/filesystem/api/index.ts +38 -14
  11. package/app/filesystem/api/projectPackages.ts +13 -102
  12. package/app/filesystem/domain/types.ts +30 -10
  13. package/app/filesystem/hooks/README.md +4 -4
  14. package/app/filesystem/hooks/useDiscoverableSources.ts +19 -30
  15. package/app/filesystem/hooks/useFilesystemSSE.ts +42 -2
  16. package/app/filesystem/host/README.md +6 -4
  17. package/app/filesystem/host/buildFilesystemHostValue.ts +28 -2
  18. package/app/filesystem/host/installFilesystemHostComponents.tsx +1 -1
  19. package/app/filesystem/lib/sourceKindForm.ts +210 -27
  20. package/app/filesystem/lib/treeVisualState.tsx +98 -4
  21. package/app/filesystem/store/README.md +1 -0
  22. package/app/filesystem/store/filesystemStore.ts +99 -8
  23. package/app/filesystem/store/gitSlice.ts +5 -0
  24. package/app/filesystem/store/helpers.ts +17 -0
  25. package/app/filesystem/store/listSlice.ts +8 -0
  26. package/app/filesystem/ui/CodeEditor.tsx +18 -3
  27. package/app/filesystem/ui/DiscoverDock.tsx +5 -1
  28. package/app/filesystem/ui/FileEditor.tsx +15 -10
  29. package/app/filesystem/ui/FileTree.tsx +75 -24
  30. package/app/filesystem/ui/FilesystemWidget.tsx +10 -2
  31. package/app/filesystem/ui/FolderPicker.tsx +251 -0
  32. package/app/filesystem/ui/GitControlPanel.tsx +7 -2
  33. package/app/filesystem/ui/PackagesPanel.tsx +52 -374
  34. package/app/filesystem/ui/PendingChangesPanel.tsx +1 -1
  35. package/app/filesystem/ui/PolicyEditor.tsx +109 -24
  36. package/app/filesystem/ui/README.md +30 -23
  37. package/app/filesystem/ui/RawMediaPreview.tsx +58 -0
  38. package/app/filesystem/ui/SourceBranchHeader.tsx +4 -4
  39. package/app/filesystem/ui/SourcesPanel.tsx +502 -342
  40. package/app/filesystem/ui/Toolbar.tsx +1 -2
  41. package/app/filesystem/ui/VectorHealthPanel.tsx +2 -2
  42. package/app/shared/filesystem.png +0 -0
  43. package/dist/app/host.js +58 -46
  44. package/dist/scripts/sourceRootPairV1.d.ts +47 -0
  45. package/dist/scripts/sourceRootPairV1.d.ts.map +1 -0
  46. package/dist/scripts/sourceRootPairV1.js +147 -0
  47. package/dist/scripts/sourceRootPairV1.js.map +1 -0
  48. package/dist/scripts/sourceToFolderV1.d.ts +56 -0
  49. package/dist/scripts/sourceToFolderV1.d.ts.map +1 -0
  50. package/dist/scripts/sourceToFolderV1.js +152 -0
  51. package/dist/scripts/sourceToFolderV1.js.map +1 -0
  52. package/dist/scripts/sourceToHostV1.d.ts +56 -0
  53. package/dist/scripts/sourceToHostV1.d.ts.map +1 -0
  54. package/dist/scripts/sourceToHostV1.js +132 -0
  55. package/dist/scripts/sourceToHostV1.js.map +1 -0
  56. package/dist/src/channels/filesystem.d.ts +1 -1
  57. package/dist/src/channels/filesystem.js +1 -1
  58. package/dist/src/connectors/AppSourceConfigStore.d.ts +17 -3
  59. package/dist/src/connectors/AppSourceConfigStore.d.ts.map +1 -1
  60. package/dist/src/connectors/AppSourceConfigStore.js +46 -6
  61. package/dist/src/connectors/AppSourceConfigStore.js.map +1 -1
  62. package/dist/src/connectors/HostConnector.d.ts +201 -0
  63. package/dist/src/connectors/HostConnector.d.ts.map +1 -0
  64. package/dist/src/connectors/HostConnector.js +903 -0
  65. package/dist/src/connectors/HostConnector.js.map +1 -0
  66. package/dist/src/connectors/inProcessTransport.d.ts +131 -0
  67. package/dist/src/connectors/inProcessTransport.d.ts.map +1 -0
  68. package/dist/src/connectors/inProcessTransport.js +447 -0
  69. package/dist/src/connectors/inProcessTransport.js.map +1 -0
  70. package/dist/src/domain/access/callerPermissions.d.ts +29 -0
  71. package/dist/src/domain/access/callerPermissions.d.ts.map +1 -1
  72. package/dist/src/domain/access/callerPermissions.js +85 -5
  73. package/dist/src/domain/access/callerPermissions.js.map +1 -1
  74. package/dist/src/domain/access/nativeLocalFence.d.ts +65 -0
  75. package/dist/src/domain/access/nativeLocalFence.d.ts.map +1 -0
  76. package/dist/src/domain/access/nativeLocalFence.js +171 -0
  77. package/dist/src/domain/access/nativeLocalFence.js.map +1 -0
  78. package/dist/src/domain/access/uriPermission.js +3 -3
  79. package/dist/src/domain/access/uriPermission.js.map +1 -1
  80. package/dist/src/domain/byteRange.d.ts +15 -0
  81. package/dist/src/domain/byteRange.d.ts.map +1 -0
  82. package/dist/src/domain/byteRange.js +30 -0
  83. package/dist/src/domain/byteRange.js.map +1 -0
  84. package/dist/src/domain/defaultPermissions.d.ts.map +1 -1
  85. package/dist/src/domain/defaultPermissions.js +29 -0
  86. package/dist/src/domain/defaultPermissions.js.map +1 -1
  87. package/dist/src/domain/mime.d.ts +11 -19
  88. package/dist/src/domain/mime.d.ts.map +1 -1
  89. package/dist/src/domain/mime.js +13 -102
  90. package/dist/src/domain/mime.js.map +1 -1
  91. package/dist/src/domain/paths.d.ts.map +1 -1
  92. package/dist/src/domain/paths.js +5 -3
  93. package/dist/src/domain/paths.js.map +1 -1
  94. package/dist/src/domain/scopeAccessCtx.d.ts +2 -2
  95. package/dist/src/domain/scopeAccessCtx.js +2 -2
  96. package/dist/src/domain/sourceConfig.d.ts +52 -19
  97. package/dist/src/domain/sourceConfig.d.ts.map +1 -1
  98. package/dist/src/domain/sourceConfig.js +103 -19
  99. package/dist/src/domain/sourceConfig.js.map +1 -1
  100. package/dist/src/domain/sourcePackages.d.ts +8 -8
  101. package/dist/src/domain/sourcePackages.d.ts.map +1 -1
  102. package/dist/src/domain/sourceRootPair.d.ts +88 -0
  103. package/dist/src/domain/sourceRootPair.d.ts.map +1 -0
  104. package/dist/src/domain/sourceRootPair.js +108 -0
  105. package/dist/src/domain/sourceRootPair.js.map +1 -0
  106. package/dist/src/domain/syncTypes.d.ts +8 -1
  107. package/dist/src/domain/syncTypes.d.ts.map +1 -1
  108. package/dist/src/domain/syncTypes.js +1 -0
  109. package/dist/src/domain/syncTypes.js.map +1 -1
  110. package/dist/src/domain/types.d.ts +32 -2
  111. package/dist/src/domain/types.d.ts.map +1 -1
  112. package/dist/src/domain/uri.d.ts.map +1 -1
  113. package/dist/src/domain/uri.js +3 -2
  114. package/dist/src/domain/uri.js.map +1 -1
  115. package/dist/src/embeddings/clients/GeminiEmbedder.d.ts.map +1 -1
  116. package/dist/src/embeddings/clients/GeminiEmbedder.js +2 -5
  117. package/dist/src/embeddings/clients/GeminiEmbedder.js.map +1 -1
  118. package/dist/src/embeddings/clients/OpenAIEmbedder.d.ts.map +1 -1
  119. package/dist/src/embeddings/clients/OpenAIEmbedder.js +2 -3
  120. package/dist/src/embeddings/clients/OpenAIEmbedder.js.map +1 -1
  121. package/dist/src/embeddings/clients/QwenEmbedder.d.ts +2 -0
  122. package/dist/src/embeddings/clients/QwenEmbedder.d.ts.map +1 -1
  123. package/dist/src/embeddings/clients/QwenEmbedder.js +10 -2
  124. package/dist/src/embeddings/clients/QwenEmbedder.js.map +1 -1
  125. package/dist/src/embeddings/clients/VoyageEmbedder.d.ts +2 -0
  126. package/dist/src/embeddings/clients/VoyageEmbedder.d.ts.map +1 -1
  127. package/dist/src/embeddings/clients/VoyageEmbedder.js +8 -1
  128. package/dist/src/embeddings/clients/VoyageEmbedder.js.map +1 -1
  129. package/dist/src/embeddings/factory.d.ts +5 -3
  130. package/dist/src/embeddings/factory.d.ts.map +1 -1
  131. package/dist/src/embeddings/factory.js +7 -3
  132. package/dist/src/embeddings/factory.js.map +1 -1
  133. package/dist/src/embeddings/models.d.ts +1 -1
  134. package/dist/src/embeddings/models.d.ts.map +1 -1
  135. package/dist/src/embeddings/retry.js +1 -1
  136. package/dist/src/embeddings/retry.js.map +1 -1
  137. package/dist/src/embeddings/types.d.ts +6 -0
  138. package/dist/src/embeddings/types.d.ts.map +1 -1
  139. package/dist/src/embeddings/types.js +11 -0
  140. package/dist/src/embeddings/types.js.map +1 -1
  141. package/dist/src/events/pending.d.ts +1 -1
  142. package/dist/src/events/pending.js +1 -1
  143. package/dist/src/git/GitRunner.d.ts +110 -30
  144. package/dist/src/git/GitRunner.d.ts.map +1 -1
  145. package/dist/src/git/GitRunner.js +511 -199
  146. package/dist/src/git/GitRunner.js.map +1 -1
  147. package/dist/src/git/GitWatchRegistry.d.ts +41 -35
  148. package/dist/src/git/GitWatchRegistry.d.ts.map +1 -1
  149. package/dist/src/git/GitWatchRegistry.js +61 -79
  150. package/dist/src/git/GitWatchRegistry.js.map +1 -1
  151. package/dist/src/git/gitPlace.d.ts +61 -0
  152. package/dist/src/git/gitPlace.d.ts.map +1 -0
  153. package/dist/src/git/gitPlace.js +74 -0
  154. package/dist/src/git/gitPlace.js.map +1 -0
  155. package/dist/src/git/sourceGitControl.d.ts +33 -21
  156. package/dist/src/git/sourceGitControl.d.ts.map +1 -1
  157. package/dist/src/git/sourceGitControl.js +211 -95
  158. package/dist/src/git/sourceGitControl.js.map +1 -1
  159. package/dist/src/git/sourceGitStatus.js +1 -1
  160. package/dist/src/git/sourceGitStatus.js.map +1 -1
  161. package/dist/src/git/untrackedStats.js +1 -1
  162. package/dist/src/git/untrackedStats.js.map +1 -1
  163. package/dist/src/index.d.ts +2 -1
  164. package/dist/src/index.d.ts.map +1 -1
  165. package/dist/src/index.js +2 -1
  166. package/dist/src/index.js.map +1 -1
  167. package/dist/src/lifecycle.d.ts +9 -12
  168. package/dist/src/lifecycle.d.ts.map +1 -1
  169. package/dist/src/lifecycle.js +2 -1
  170. package/dist/src/lifecycle.js.map +1 -1
  171. package/dist/src/routes/approve.d.ts +1 -1
  172. package/dist/src/routes/approve.js +1 -1
  173. package/dist/src/routes/events.d.ts +1 -1
  174. package/dist/src/routes/events.js +1 -1
  175. package/dist/src/routes/git.d.ts +7 -7
  176. package/dist/src/routes/git.d.ts.map +1 -1
  177. package/dist/src/routes/git.js +201 -72
  178. package/dist/src/routes/git.js.map +1 -1
  179. package/dist/src/routes/health.d.ts +6 -6
  180. package/dist/src/routes/health.js +12 -12
  181. package/dist/src/routes/helpers/sourceNotConfigured.d.ts +1 -1
  182. package/dist/src/routes/helpers/sourceNotConfigured.js +1 -1
  183. package/dist/src/routes/helpers/uriGuard.d.ts +1 -1
  184. package/dist/src/routes/helpers/uriGuard.d.ts.map +1 -1
  185. package/dist/src/routes/helpers/uriGuard.js +3 -2
  186. package/dist/src/routes/helpers/uriGuard.js.map +1 -1
  187. package/dist/src/routes/helpers.d.ts +11 -4
  188. package/dist/src/routes/helpers.d.ts.map +1 -1
  189. package/dist/src/routes/helpers.js +13 -6
  190. package/dist/src/routes/helpers.js.map +1 -1
  191. package/dist/src/routes/list.d.ts +1 -1
  192. package/dist/src/routes/list.d.ts.map +1 -1
  193. package/dist/src/routes/list.js +3 -4
  194. package/dist/src/routes/list.js.map +1 -1
  195. package/dist/src/routes/pending.d.ts +4 -4
  196. package/dist/src/routes/pending.js +9 -9
  197. package/dist/src/routes/policies.d.ts +10 -8
  198. package/dist/src/routes/policies.d.ts.map +1 -1
  199. package/dist/src/routes/policies.js +31 -25
  200. package/dist/src/routes/policies.js.map +1 -1
  201. package/dist/src/routes/raw.d.ts +1 -1
  202. package/dist/src/routes/raw.d.ts.map +1 -1
  203. package/dist/src/routes/raw.js +66 -12
  204. package/dist/src/routes/raw.js.map +1 -1
  205. package/dist/src/routes/read.d.ts +1 -1
  206. package/dist/src/routes/read.js +1 -1
  207. package/dist/src/routes/search.d.ts +1 -1
  208. package/dist/src/routes/search.js +1 -1
  209. package/dist/src/routes/sources.d.ts +63 -6
  210. package/dist/src/routes/sources.d.ts.map +1 -1
  211. package/dist/src/routes/sources.js +494 -382
  212. package/dist/src/routes/sources.js.map +1 -1
  213. package/dist/src/routes/upload.d.ts +1 -1
  214. package/dist/src/routes/upload.js +1 -1
  215. package/dist/src/routes/write.d.ts +2 -2
  216. package/dist/src/routes/write.js +2 -2
  217. package/dist/src/services/BridgeService.d.ts +21 -35
  218. package/dist/src/services/BridgeService.d.ts.map +1 -1
  219. package/dist/src/services/BridgeService.js +42 -88
  220. package/dist/src/services/BridgeService.js.map +1 -1
  221. package/dist/src/services/FilesystemService.d.ts +4 -3
  222. package/dist/src/services/FilesystemService.d.ts.map +1 -1
  223. package/dist/src/services/FilesystemService.js +112 -34
  224. package/dist/src/services/FilesystemService.js.map +1 -1
  225. package/dist/src/services/FilesystemUiService.d.ts +4 -1
  226. package/dist/src/services/FilesystemUiService.d.ts.map +1 -1
  227. package/dist/src/services/FilesystemUiService.js +66 -25
  228. package/dist/src/services/FilesystemUiService.js.map +1 -1
  229. package/dist/src/services/SyncScheduler.d.ts +12 -4
  230. package/dist/src/services/SyncScheduler.d.ts.map +1 -1
  231. package/dist/src/services/SyncScheduler.js +37 -8
  232. package/dist/src/services/SyncScheduler.js.map +1 -1
  233. package/dist/src/services/baselineRepair.d.ts +13 -3
  234. package/dist/src/services/baselineRepair.d.ts.map +1 -1
  235. package/dist/src/services/baselineRepair.js +13 -3
  236. package/dist/src/services/baselineRepair.js.map +1 -1
  237. package/dist/src/services/declaredSources.d.ts +132 -43
  238. package/dist/src/services/declaredSources.d.ts.map +1 -1
  239. package/dist/src/services/declaredSources.js +118 -45
  240. package/dist/src/services/declaredSources.js.map +1 -1
  241. package/dist/src/store/dataFormats.d.ts +17 -2
  242. package/dist/src/store/dataFormats.d.ts.map +1 -1
  243. package/dist/src/store/dataFormats.js +18 -3
  244. package/dist/src/store/dataFormats.js.map +1 -1
  245. package/dist/src/sync/DeltaSyncRunner.d.ts.map +1 -1
  246. package/dist/src/sync/DeltaSyncRunner.js +144 -4
  247. package/dist/src/sync/DeltaSyncRunner.js.map +1 -1
  248. package/dist/src/sync/SyncJobQueue.d.ts +7 -2
  249. package/dist/src/sync/SyncJobQueue.d.ts.map +1 -1
  250. package/dist/src/sync/SyncJobQueue.js +16 -10
  251. package/dist/src/sync/SyncJobQueue.js.map +1 -1
  252. package/dist/src/sync/SyncWatchService.d.ts +21 -4
  253. package/dist/src/sync/SyncWatchService.d.ts.map +1 -1
  254. package/dist/src/sync/SyncWatchService.js +115 -10
  255. package/dist/src/sync/SyncWatchService.js.map +1 -1
  256. package/dist/src/sync/categoryInference.d.ts +1 -1
  257. package/dist/src/sync/categoryInference.js +1 -1
  258. package/dist/src/tools/execCtx.d.ts +2 -2
  259. package/dist/src/tools/execCtx.js +2 -2
  260. package/dist/src/tools/fs_read.d.ts.map +1 -1
  261. package/dist/src/tools/fs_read.js +5 -0
  262. package/dist/src/tools/fs_read.js.map +1 -1
  263. package/dist/src/usecases/admitSourceRoot.d.ts +65 -0
  264. package/dist/src/usecases/admitSourceRoot.d.ts.map +1 -0
  265. package/dist/src/usecases/admitSourceRoot.js +85 -0
  266. package/dist/src/usecases/admitSourceRoot.js.map +1 -0
  267. package/dist/src/usecases/browseSourceFolders.d.ts +85 -0
  268. package/dist/src/usecases/browseSourceFolders.d.ts.map +1 -0
  269. package/dist/src/usecases/browseSourceFolders.js +210 -0
  270. package/dist/src/usecases/browseSourceFolders.js.map +1 -0
  271. package/dist/src/usecases/createDeclaredSources.d.ts +13 -2
  272. package/dist/src/usecases/createDeclaredSources.d.ts.map +1 -1
  273. package/dist/src/usecases/createDeclaredSources.js +39 -0
  274. package/dist/src/usecases/createDeclaredSources.js.map +1 -1
  275. package/dist/src/usecases/embeddingBacklog.js +1 -1
  276. package/dist/src/usecases/embeddingBacklog.js.map +1 -1
  277. package/dist/src/usecases/list.d.ts.map +1 -1
  278. package/dist/src/usecases/list.js +83 -26
  279. package/dist/src/usecases/list.js.map +1 -1
  280. package/dist/src/usecases/listAttachableDevices.d.ts +13 -0
  281. package/dist/src/usecases/listAttachableDevices.d.ts.map +1 -0
  282. package/dist/src/usecases/listAttachableDevices.js +10 -0
  283. package/dist/src/usecases/listAttachableDevices.js.map +1 -0
  284. package/dist/src/usecases/listSourcePackages.d.ts.map +1 -1
  285. package/dist/src/usecases/listSourcePackages.js +2 -5
  286. package/dist/src/usecases/listSourcePackages.js.map +1 -1
  287. package/dist/src/usecases/purgeExcludedPoints.d.ts.map +1 -1
  288. package/dist/src/usecases/purgeExcludedPoints.js +3 -2
  289. package/dist/src/usecases/purgeExcludedPoints.js.map +1 -1
  290. package/dist/src/usecases/readFiles.d.ts.map +1 -1
  291. package/dist/src/usecases/readFiles.js +99 -1
  292. package/dist/src/usecases/readFiles.js.map +1 -1
  293. package/dist/src/usecases/reconcileSourcePackageRoots.d.ts +1 -1
  294. package/dist/src/usecases/reconcileSourcePackageRoots.d.ts.map +1 -1
  295. package/dist/src/usecases/reconcileSourcePackageRoots.js +2 -1
  296. package/dist/src/usecases/reconcileSourcePackageRoots.js.map +1 -1
  297. package/dist/src/usecases/revokePrincipal.d.ts +7 -5
  298. package/dist/src/usecases/revokePrincipal.d.ts.map +1 -1
  299. package/dist/src/usecases/revokePrincipal.js +29 -7
  300. package/dist/src/usecases/revokePrincipal.js.map +1 -1
  301. package/dist/src/usecases/scheduleSourceSync.d.ts +7 -0
  302. package/dist/src/usecases/scheduleSourceSync.d.ts.map +1 -1
  303. package/dist/src/usecases/scheduleSourceSync.js +6 -5
  304. package/dist/src/usecases/scheduleSourceSync.js.map +1 -1
  305. package/dist/src/usecases/syncPointWrites.d.ts +2 -0
  306. package/dist/src/usecases/syncPointWrites.d.ts.map +1 -1
  307. package/dist/src/usecases/syncPointWrites.js +5 -1
  308. package/dist/src/usecases/syncPointWrites.js.map +1 -1
  309. package/dist/src/usecases/triggerSourceSync.d.ts +46 -0
  310. package/dist/src/usecases/triggerSourceSync.d.ts.map +1 -0
  311. package/dist/src/usecases/triggerSourceSync.js +75 -0
  312. package/dist/src/usecases/triggerSourceSync.js.map +1 -0
  313. package/dist/src/usecases/uploadBinary.d.ts +2 -1
  314. package/dist/src/usecases/uploadBinary.d.ts.map +1 -1
  315. package/dist/src/usecases/uploadBinary.js +2 -2
  316. package/dist/src/usecases/uploadBinary.js.map +1 -1
  317. package/dist/src/usecases/vector/endpointGuard.d.ts +1 -1
  318. package/dist/src/usecases/vector/endpointGuard.js +1 -1
  319. package/dist/src/usecases/vectorMaintenance.js +1 -1
  320. package/dist/src/usecases/vectorMaintenance.js.map +1 -1
  321. package/dist/src/usecases/write/content.js +1 -1
  322. package/dist/src/vector/qdrantClient.d.ts +1 -1
  323. package/dist/src/vector/qdrantClient.js +1 -1
  324. package/dist/src/wiring.d.ts +3 -0
  325. package/dist/src/wiring.d.ts.map +1 -1
  326. package/dist/src/wiring.js +72 -6
  327. package/dist/src/wiring.js.map +1 -1
  328. package/dist/tools/fs_list.json +1 -1
  329. package/dist/tools/fs_read.json +1 -1
  330. package/dist/tools/fs_search.json +1 -1
  331. package/dist/tools/fs_write.json +1 -1
  332. package/instructions/brain-model.md +1 -1
  333. package/package.json +212 -114
  334. package/rules/brain-rules.md +2 -2
  335. package/skills/brain-start/SKILL.md +1 -1
  336. package/skills/connect-business-data/SKILL.md +3 -3
  337. package/skills/create-package/SKILL.md +26 -26
  338. package/skills/create-package/references/config-and-credentials.md +16 -13
  339. package/skills/create-package/references/connectors-and-uri-policies.md +39 -25
  340. package/skills/create-package/references/manifest-and-discovery.md +12 -12
  341. package/skills/create-package/references/runtime-and-build.md +19 -19
  342. package/skills/create-package/references/skills-and-context.md +36 -20
  343. package/skills/create-package/references/surfaces-and-design.md +16 -16
  344. package/skills/create-package/references/team-and-workflows.md +2 -2
  345. package/skills/create-package/references/test-and-ship.md +21 -21
  346. package/skills/create-package/references/tools-and-schemas.md +5 -5
  347. package/skills/create-package/scripts/{check-package.sh → check-package.mjs} +79 -65
  348. package/skills/create-package/scripts/{verify-loaded.sh → verify-loaded.mjs} +156 -162
  349. package/skills/git/SKILL.md +53 -51
  350. package/skills/manage-files/SKILL.md +22 -25
  351. package/skills/manage-sources/SKILL.md +128 -87
  352. package/skills/manage-uri-policy/SKILL.md +18 -15
  353. package/skills/organize/SKILL.md +1 -1
  354. package/skills/sync/SKILL.md +3 -3
  355. package/tools/fs_list.json +1 -1
  356. package/tools/fs_read.json +1 -1
  357. package/tools/fs_search.json +1 -1
  358. package/tools/fs_write.json +1 -1
  359. package/workflows/sources-digest.json +1 -1
  360. package/dist/src/connectors/LocalDiskConnector.d.ts +0 -171
  361. package/dist/src/connectors/LocalDiskConnector.d.ts.map +0 -1
  362. package/dist/src/connectors/LocalDiskConnector.js +0 -1233
  363. package/dist/src/connectors/LocalDiskConnector.js.map +0 -1
  364. package/docs/drive-overview.md +0 -59
  365. package/skills/manage-files/scripts/copy.sh +0 -7
  366. package/skills/manage-files/scripts/create.sh +0 -7
  367. package/skills/manage-files/scripts/mkdir.sh +0 -7
  368. package/skills/manage-files/scripts/modify.sh +0 -7
  369. package/skills/manage-files/scripts/upload.sh +0 -16
  370. package/skills/manage-files/scripts/write.sh +0 -29
  371. package/skills/manage-sources/scripts/reembed.sh +0 -23
package/package.json CHANGED
@@ -1,8 +1,23 @@
1
1
  {
2
2
  "name": "@neuralis/brain-core",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "license": "FSL-1.1-ALv2",
5
5
  "homepage": "https://docs.neuralisapp.com/brain-core",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/neuralisapp/neuralis.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/neuralisapp/neuralis/issues"
12
+ },
13
+ "keywords": [
14
+ "neuralis",
15
+ "neuralis-package",
16
+ "vector-search",
17
+ "rag",
18
+ "virtual-filesystem",
19
+ "ai-agents"
20
+ ],
6
21
  "type": "module",
7
22
  "publishConfig": {
8
23
  "access": "public"
@@ -33,6 +48,18 @@
33
48
  "./upgrade/vector-proof": {
34
49
  "types": "./dist/scripts/vectorProofV1.d.ts",
35
50
  "default": "./dist/scripts/vectorProofV1.js"
51
+ },
52
+ "./upgrade/source-root-pair": {
53
+ "types": "./dist/scripts/sourceRootPairV1.d.ts",
54
+ "default": "./dist/scripts/sourceRootPairV1.js"
55
+ },
56
+ "./upgrade/source-to-folder": {
57
+ "types": "./dist/scripts/sourceToFolderV1.d.ts",
58
+ "default": "./dist/scripts/sourceToFolderV1.js"
59
+ },
60
+ "./upgrade/source-to-host": {
61
+ "types": "./dist/scripts/sourceToHostV1.d.ts",
62
+ "default": "./dist/scripts/sourceToHostV1.js"
36
63
  }
37
64
  },
38
65
  "typesVersions": {
@@ -52,31 +79,29 @@
52
79
  "skills",
53
80
  "rules",
54
81
  "instructions",
55
- "docs",
56
82
  "team",
57
83
  "app"
58
84
  ],
59
85
  "dependencies": {
60
86
  "@codemirror/commands": "^6.11.1",
61
- "@codemirror/language": "^6.12.4",
62
- "@codemirror/merge": "^6.12.2",
87
+ "@codemirror/language": "^6.13.1",
88
+ "@codemirror/merge": "^6.12.3",
63
89
  "@codemirror/state": "^6.7.6",
64
- "@codemirror/view": "^6.43.13",
65
- "@iconify-json/vscode-icons": "^1.2.81",
66
- "@iconify/react": "^6.0.2",
67
- "@neuralis/package-system": "0.3.1",
68
- "@qdrant/js-client-rest": "1.19.0",
90
+ "@codemirror/view": "^6.43.15",
91
+ "@iconify-json/vscode-icons": "^1.2.94",
92
+ "@iconify/react": "^6.0.3",
93
+ "@neuralis/package-system": "0.4.0",
94
+ "@qdrant/js-client-rest": "1.20.0",
69
95
  "@shikijs/engine-javascript": "^4.4.3",
70
96
  "@shikijs/langs": "^4.4.3",
71
97
  "@shikijs/themes": "^4.4.3",
72
98
  "react-diff-view": "^3.3.3",
73
- "shiki": "^4.4.3",
74
- "simple-git": "^4.0.2"
99
+ "shiki": "^4.4.3"
75
100
  },
76
101
  "peerDependencies": {
77
102
  "@aws-sdk/client-s3": "^3.975.0",
78
103
  "@aws-sdk/s3-request-presigner": "^3.975.0",
79
- "@neuralis/agent-core": "0.3.1",
104
+ "@neuralis/agent-core": "0.4.0",
80
105
  "@tanstack/react-virtual": "^3.13.0",
81
106
  "lucide-react": "^1.47.0",
82
107
  "react": "^19.0.0",
@@ -113,7 +138,7 @@
113
138
  "@types/node": "^26.6.2",
114
139
  "@types/react": "^19.3.0",
115
140
  "@types/react-dom": "^19.3.0",
116
- "jsdom": "^30.1.1",
141
+ "jsdom": "^30.1.3",
117
142
  "typescript": "^7.0.2",
118
143
  "vitest": "^5.0.1"
119
144
  },
@@ -129,9 +154,6 @@
129
154
  "authors": [
130
155
  "Neuralis"
131
156
  ],
132
- "source": {
133
- "kind": "neuralis"
134
- },
135
157
  "runtime": {
136
158
  "binding": "embedded",
137
159
  "hosted": {
@@ -154,15 +176,15 @@
154
176
  ]
155
177
  },
156
178
  {
157
- "id": "local-disk",
158
- "kind": "local",
179
+ "id": "host",
180
+ "kind": "host",
159
181
  "type": "source",
160
182
  "transport": "in-process",
161
- "name": "Local Disk",
162
- "description": "A folder on this machine, mounted into the workspace by absolute path — read, write, search and index its files with the fs_* tools.",
183
+ "name": "Host folder",
184
+ "description": "A folder as a source — on this server, or on a paired device through its broker — read, write, search and index its files with the fs_* tools. A device folder is attached only by the device's owner (device.own), every path is clamped by that owner's ceiling, and an offline device serves its indexed text.",
163
185
  "icon": "HardDrive",
164
186
  "category": "disk",
165
- "urlScheme": "local",
187
+ "urlScheme": "host",
166
188
  "defaultScope": "project",
167
189
  "scopeSelectable": true,
168
190
  "allowedScopes": [
@@ -173,34 +195,73 @@
173
195
  "configSchema": {
174
196
  "type": "object",
175
197
  "additionalProperties": false,
198
+ "x-neuralis": {
199
+ "ui": {
200
+ "summary": "A folder on this server or one of your devices"
201
+ }
202
+ },
176
203
  "properties": {
177
204
  "root": {
178
205
  "type": "string",
179
206
  "minLength": 1,
180
- "description": "Absolute or project-relative path to the directory the agent should see.",
207
+ "description": "The folder: on this server an absolute or project-relative path; on a device an absolute path ON THAT DEVICE (`/…`, `C:\\…` on Windows; never a UNC share), inside its owner's ceiling.",
181
208
  "x-neuralis": {
182
209
  "ui": {
183
- "label": "Root path",
210
+ "label": "Folder",
184
211
  "control": "container-path",
185
- "placeholder": "/home/user/my-project"
212
+ "placeholder": "/home/user/my-project",
213
+ "deviceLabel": "Folder on the device",
214
+ "devicePlaceholder": "/home/you/projects",
215
+ "devicePlaceholders": {
216
+ "win32": "C:\\Users\\you\\projects",
217
+ "darwin": "/Users/you/projects",
218
+ "linux": "/home/you/projects"
219
+ },
220
+ "browse": true
186
221
  }
187
222
  }
188
223
  },
189
224
  "hostRoot": {
190
225
  "type": "string",
191
- "description": "Host-side mirror of the path when running inside a container. Used by `resolveOsUri` so ide_open-style tools surface a usable host path.",
226
+ "description": "Host-side mirror of the path when running inside a container. Used by `resolveOsUri` so ide_open-style tools surface a usable host path. Never beside `device`.",
192
227
  "x-neuralis": {
193
228
  "ui": {
194
229
  "label": "Host mirror path",
195
230
  "control": "host-path",
196
- "optional": true
231
+ "optional": true,
232
+ "advanced": true,
233
+ "placeholder": "auto",
234
+ "help": "Derived from the mount; set it only for a folder no mount names (sources.privileged)."
235
+ }
236
+ }
237
+ },
238
+ "device": {
239
+ "type": "string",
240
+ "minLength": 1,
241
+ "pattern": "^dev_[A-Za-z0-9]+$",
242
+ "description": "The paired device (`dev_…`, from `neuralis device status`) the folder lives on; absent = this server. Only that device's owner may attach a folder to it, and it never changes after the attach.",
243
+ "x-neuralis": {
244
+ "ui": {
245
+ "label": "Where",
246
+ "control": "select",
247
+ "optionsRoute": "sources/devices",
248
+ "optional": true,
249
+ "emptyLabel": "This server",
250
+ "help": "Your computer is not listed? Pair it first: \"Pair this computer…\" in the Neuralis app's tray, or run neuralis device pair on it.",
251
+ "transport": true
197
252
  }
198
253
  }
199
254
  }
200
255
  },
201
256
  "required": [
202
257
  "root"
203
- ]
258
+ ],
259
+ "not": {
260
+ "required": [
261
+ "device",
262
+ "hostRoot"
263
+ ]
264
+ }
204
265
  },
205
266
  "capabilities": [
206
267
  "list",
@@ -269,7 +330,7 @@
269
330
  "exec": false
270
331
  }
271
332
  },
272
- "connectorFactory": "./dist/src/connectors/LocalDiskConnector.js#createLocalDiskConnector"
333
+ "connectorFactory": "./dist/src/connectors/HostConnector.js#createHostConnector"
273
334
  },
274
335
  {
275
336
  "id": "brain-internal",
@@ -315,7 +376,7 @@
315
376
  "sources": [
316
377
  {
317
378
  "source": "data",
318
- "kind": "local",
379
+ "kind": "host",
319
380
  "root": "data",
320
381
  "scope": "project",
321
382
  "seed": "auto",
@@ -376,7 +437,7 @@
376
437
  },
377
438
  {
378
439
  "source": "packages",
379
- "kind": "local",
440
+ "kind": "host",
380
441
  "root": "_packages",
381
442
  "scope": "project",
382
443
  "seed": "auto",
@@ -445,32 +506,55 @@
445
506
  ],
446
507
  "requires": {
447
508
  "providesFeatures": [
448
- "drive.read",
449
- "drive.write",
450
- "drive.search",
451
- "drive.sync",
452
- "drive.mount",
453
- "filesystem.observeScoped",
454
- "filesystem.modifyScoped",
455
509
  {
456
- "id": "drive.mount.privileged",
457
- "title": "Attach privileged sources",
458
- "description": "Attach, see, and BROWSE high-blast-radius host zones as sources — the App Zone, the Neuralis source tree, and the whole host (`/`). It covers the discovery step too: enumerating a protected zone (or the filesystem root) through `sources/browse` needs it, because you may browse exactly what you would be allowed to attach. No grant below the admin tier (C8) — the seeded `admin` role holds it through its enumerated default grant, `owner` through the `'*'` wildcard; grantable to any custom role. Plain `drive.mount` still attaches ordinary sources."
510
+ "id": "files.read",
511
+ "title": "Read files",
512
+ "description": "Open the Files app and read what the URI policy lets you read: list, read and download files, follow live file events, see source details and the Vector Health counts. Every path is still checked against its source's URI policy."
513
+ },
514
+ {
515
+ "id": "files.write",
516
+ "title": "Write files",
517
+ "description": "Create, edit, move, copy, upload and delete files, make folders, and resolve Pending Changes (approve, revert, dismiss), plus the Vector Health clean-up sweep. Every write is still checked against the source's URI policy, and an agent's write can wait for approval."
518
+ },
519
+ {
520
+ "id": "files.search",
521
+ "title": "Search files",
522
+ "description": "Search the indexed files (by meaning, keyword or metadata) and grep a folder live. Results stay limited to the paths the URI policy lets you read."
523
+ },
524
+ {
525
+ "id": "sources.sync",
526
+ "title": "Sync sources",
527
+ "description": "Start, cancel and inspect a source's sync, and reset or re-index it."
528
+ },
529
+ {
530
+ "id": "sources.mount",
531
+ "title": "Manage sources",
532
+ "description": "Add, edit, enable, disable and remove ordinary sources, and browse the folders you could attach. A protected zone (the App Zone, the Neuralis tree, the whole host) also needs sources.privileged; a source on a paired device is attached only by that device's owner, with device.own."
459
533
  },
460
534
  {
461
- "id": "drive.mount.host",
462
- "title": "Attach host-plane sources",
463
- "description": "Attach or edit a source that resolves OUTSIDE the container, through the operator-provisioned host broker (`host-*://`). Every host-plane root is privileged by construction, so this is required TOGETHER with drive.mount.privileged — a sub-directory is gated exactly like `/`. No grant below the admin tier — the seeded `admin` role holds it through its enumerated default grant, `owner` through the `'*'` wildcard; grantable to any custom role. The operator-owned broker ceiling still clamps what a granted caller can actually reach."
535
+ "id": "files.readOthers",
536
+ "title": "Read others' files",
537
+ "description": "Read another member's or agent's user- or agent-scoped sources in this project, and restart or purge a shared project machine that another user last held. No grant below the admin tier — the seeded `admin` role holds it through its enumerated default grant, `owner` through the `'*'` wildcard; grantable to any custom role."
464
538
  },
465
539
  {
466
- "id": "drive.policy",
540
+ "id": "files.writeOthers",
541
+ "title": "Write others' files",
542
+ "description": "Write to another member's or agent's user- or agent-scoped sources in this project. No grant below the admin tier — the seeded `admin` role holds it through its enumerated default grant, `owner` through the `'*'` wildcard; grantable to any custom role."
543
+ },
544
+ {
545
+ "id": "sources.privileged",
546
+ "title": "Attach privileged sources",
547
+ "description": "Attach, see, and BROWSE high-blast-radius host zones as sources — the App Zone, the Neuralis source tree, and the whole host (`/`). It covers the discovery step too: enumerating a protected zone (or the filesystem root) through `sources/browse` needs it, because you may browse exactly what you would be allowed to attach. No grant below the admin tier (C8) — the seeded `admin` role holds it through its enumerated default grant, `owner` through the `'*'` wildcard; grantable to any custom role. Plain `sources.mount` still attaches ordinary sources."
548
+ },
549
+ {
550
+ "id": "sources.policy",
467
551
  "title": "Edit URI policies",
468
552
  "description": "Edit per-source URI path-access policies (POST /policies/uri). Owner/admin by default; grantable to a custom role."
469
553
  },
470
554
  {
471
555
  "id": "packages.author",
472
556
  "title": "Author packages",
473
- "description": "Reach the package-authoring affordances (the Packages panel scaffold launcher and the install/build actions). The authoring skill itself is open to every caller; this feature gates the surfaces that act. Distinct from drive.write."
557
+ "description": "Reach the package-authoring affordances (the Packages panel scaffold launcher and the install/build actions). The authoring skill itself is open to every caller; this feature gates the surfaces that act. Distinct from files.write."
474
558
  },
475
559
  {
476
560
  "id": "packages.registry",
@@ -485,38 +569,37 @@
485
569
  ],
486
570
  "defaultRoleGrants": {
487
571
  "admin": [
488
- "drive.read",
489
- "drive.write",
490
- "drive.search",
491
- "drive.sync",
492
- "drive.mount",
493
- "drive.mount.privileged",
494
- "drive.mount.host",
495
- "drive.policy",
496
- "filesystem.observeScoped",
497
- "filesystem.modifyScoped",
572
+ "files.read",
573
+ "files.write",
574
+ "files.search",
575
+ "sources.sync",
576
+ "sources.mount",
577
+ "sources.privileged",
578
+ "sources.policy",
579
+ "files.readOthers",
580
+ "files.writeOthers",
498
581
  "packages.author",
499
582
  "packages.registry"
500
583
  ],
501
584
  "manager": [
502
- "drive.read",
503
- "drive.write",
504
- "drive.search",
505
- "drive.sync",
506
- "drive.mount",
585
+ "files.read",
586
+ "files.write",
587
+ "files.search",
588
+ "sources.sync",
589
+ "sources.mount",
507
590
  "packages.author",
508
591
  "packages.registry"
509
592
  ],
510
593
  "member": [
511
- "drive.read",
512
- "drive.search",
594
+ "files.read",
595
+ "files.search",
513
596
  "packages.registry"
514
597
  ],
515
598
  "viewer": [
516
- "drive.read"
599
+ "files.read"
517
600
  ],
518
601
  "newRole": [
519
- "drive.read"
602
+ "files.read"
520
603
  ]
521
604
  }
522
605
  },
@@ -583,7 +666,6 @@
583
666
  "description": "Parallel file processing during sync",
584
667
  "type": "number",
585
668
  "default": 3,
586
- "envFallback": "BRAIN_SYNC_CONCURRENCY",
587
669
  "category": "brain"
588
670
  },
589
671
  {
@@ -619,7 +701,7 @@
619
701
  "label": "Embedding Request Timeout (ms)",
620
702
  "description": "Maximum time for an embedding response including its body. Raise this for slower local servers or large batches; timeout preserves payload indexing.",
621
703
  "type": "number",
622
- "default": 30000,
704
+ "default": 120000,
623
705
  "category": "brain",
624
706
  "min": 1000,
625
707
  "max": 600000
@@ -696,7 +778,6 @@
696
778
  "description": "Queue-level cap on concurrently RUNNING sync jobs (distinct from Sync Concurrency, the per-file fan-out inside one job). Applies live to the next queue pump.",
697
779
  "type": "number",
698
780
  "default": 2,
699
- "envFallback": "BRAIN_SYNC_MAX_CONCURRENT",
700
781
  "category": "brain",
701
782
  "min": 1,
702
783
  "max": 8
@@ -739,6 +820,34 @@
739
820
  "min": 30000,
740
821
  "max": 604800000
741
822
  },
823
+ {
824
+ "key": "brainSyncPollIntervalMs",
825
+ "label": "Sync Scheduler Interval (ms)",
826
+ "description": "How often the sync scheduler checks which sources are due (first sync, filter change, reconcile cadence, a device back online). Applies on restart.",
827
+ "type": "number",
828
+ "default": 60000,
829
+ "category": "brain",
830
+ "min": 5000,
831
+ "max": 3600000
832
+ },
833
+ {
834
+ "key": "brainSyncBootReconcile",
835
+ "label": "Sync After Start",
836
+ "description": "One delta sync of every auto-trigger source shortly after the app starts, so files changed while it was stopped (or left by an interrupted sync) are indexed now instead of at the next reconcile cadence. Runs through the sync queue under Sync Queue Max Jobs. Applies on restart.",
837
+ "type": "boolean",
838
+ "default": true,
839
+ "category": "brain"
840
+ },
841
+ {
842
+ "key": "brainSyncBootReconcileDelayMs",
843
+ "label": "Sync After Start Delay (ms)",
844
+ "description": "How long after start the one after-start sync runs, so it does not compete with the first page load. Applies on restart.",
845
+ "type": "number",
846
+ "default": 30000,
847
+ "category": "brain",
848
+ "min": 0,
849
+ "max": 600000
850
+ },
742
851
  {
743
852
  "key": "vectorChunkTargetChars",
744
853
  "label": "Chunk Target Size (chars)",
@@ -819,6 +928,16 @@
819
928
  "min": 1000,
820
929
  "max": 300000
821
930
  },
931
+ {
932
+ "key": "brainWatchMaxFolders",
933
+ "label": "Watcher Folder Budget",
934
+ "description": "The most folders one source's live watch walks and watches on Linux, on this server and on a device; files cost nothing, and excluded trees such as node_modules and .git are never entered. The budget bounds this watcher's walk and its memory (about 2.5 KB per folder). The kernel's own watch memory is per distinct folder on the machine, shared by every source and host that watches it, and the machine limit (fs.inotify.max_user_watches) is the real floor: past it, or past the budget, the rest of the source is not watched, the Sources panel shows the live state as partial, and changes there arrive through the regular sync reconcile. macOS and Windows watch a whole source with one handle and ignore this value. A device clamps it to its own ceiling (200 000). Applies at the next watcher acquisition.",
935
+ "type": "number",
936
+ "default": 200000,
937
+ "category": "brain",
938
+ "min": 100,
939
+ "max": 1000000
940
+ },
822
941
  {
823
942
  "key": "brainSyncMaxIndexTextChars",
824
943
  "label": "Sync Max Index Text (chars)",
@@ -832,7 +951,7 @@
832
951
  {
833
952
  "key": "brainGrepContextConcurrency",
834
953
  "label": "Grep Context Read Concurrency",
835
- "description": "How many context reads a grep search may have in flight at once. Raise it on a fast local disk, lower it when a slow connector (a webtop or host plane) is the bottleneck.",
954
+ "description": "How many context reads a grep search may have in flight at once. Raise it on a fast local disk, lower it when a slow connector (a webtop or device plane) is the bottleneck.",
836
955
  "type": "number",
837
956
  "default": 8,
838
957
  "category": "brain",
@@ -1000,12 +1119,12 @@
1000
1119
  {
1001
1120
  "key": "brainMaxReadFileMb",
1002
1121
  "label": "Max Read File Size (MB)",
1003
- "description": "Hard cap on connector file reads — larger files fail with 'File too large' for fs_read and every read-path consumer.",
1122
+ "description": "The one ceiling of a whole-file read, the same for a folder on this server and on a paired device — larger files fail with 'File too large' for fs_read, the Files preview and every read-path consumer. A preview's ranged request (video seeking) moves at most 8 MB per answer whatever this says. Each whole read holds the file in memory once.",
1004
1123
  "type": "number",
1005
- "default": 20,
1124
+ "default": 100,
1006
1125
  "category": "brain",
1007
1126
  "min": 1,
1008
- "max": 200
1127
+ "max": 1024
1009
1128
  },
1010
1129
  {
1011
1130
  "key": "inlineImageMaxMb",
@@ -1052,7 +1171,7 @@
1052
1171
  "label": "Content Scan Timeout (ms)",
1053
1172
  "description": "Kill timeout for the grep/rg/git-grep child process behind fs_search grep mode; on timeout the search fails soft with 'Search timed out'.",
1054
1173
  "type": "number",
1055
- "default": 30000,
1174
+ "default": 120000,
1056
1175
  "category": "brain",
1057
1176
  "min": 1000,
1058
1177
  "max": 300000
@@ -1060,7 +1179,7 @@
1060
1179
  {
1061
1180
  "key": "brainCountCacheTtlMs",
1062
1181
  "label": "File Count Cache TTL (ms)",
1063
- "description": "Cache TTL for connector file-count walks shown in the sources UI — a fresh walk at most once per TTL per root.",
1182
+ "description": "Cache TTL for connector file-count walks shown in the sources UI — a fresh walk at most once per TTL per root; an older count is shown at once while one walk refreshes it.",
1064
1183
  "type": "number",
1065
1184
  "default": 60000,
1066
1185
  "category": "brain",
@@ -1120,7 +1239,7 @@
1120
1239
  {
1121
1240
  "key": "brainListConnectorConcurrency",
1122
1241
  "label": "List Connector Concurrency",
1123
- "description": "How many source connectors a single listing walks at once. Higher finishes a multi-source listing sooner; lower is gentler on slow mounts and remote APIs.",
1242
+ "description": "How many source connectors a single listing walks (or counts) at once. Higher finishes a multi-source listing sooner; lower is gentler on slow mounts and remote APIs.",
1124
1243
  "type": "number",
1125
1244
  "default": 4,
1126
1245
  "category": "brain",
@@ -1330,7 +1449,7 @@
1330
1449
  "label": "Git Panel Timeout (ms)",
1331
1450
  "description": "Inactivity cap for the on-demand whole-repo status and branch list behind the git panel. Fails soft to an empty panel.",
1332
1451
  "type": "number",
1333
- "default": 5000,
1452
+ "default": 15000,
1334
1453
  "category": "brain",
1335
1454
  "min": 1000,
1336
1455
  "max": 60000
@@ -1340,7 +1459,7 @@
1340
1459
  "label": "Git Heavy Timeout (ms)",
1341
1460
  "description": "Inactivity cap for heavy on-demand git readers: per-file diff, commit DAG, blob show. Caps silence, not wall-clock — streaming output resets it.",
1342
1461
  "type": "number",
1343
- "default": 15000,
1462
+ "default": 60000,
1344
1463
  "category": "brain",
1345
1464
  "min": 2000,
1346
1465
  "max": 120000
@@ -1404,10 +1523,7 @@
1404
1523
  "permissions": {
1405
1524
  "read": true
1406
1525
  },
1407
- "roles": [
1408
- "owner",
1409
- "admin"
1410
- ],
1526
+ "priority": 2,
1411
1527
  "override": true
1412
1528
  },
1413
1529
  {
@@ -1415,10 +1531,7 @@
1415
1531
  "permissions": {
1416
1532
  "read": true
1417
1533
  },
1418
- "roles": [
1419
- "owner",
1420
- "admin"
1421
- ],
1534
+ "priority": 2,
1422
1535
  "override": true
1423
1536
  },
1424
1537
  {
@@ -1435,10 +1548,7 @@
1435
1548
  "read": true,
1436
1549
  "write": true
1437
1550
  },
1438
- "roles": [
1439
- "owner",
1440
- "admin"
1441
- ],
1551
+ "priority": 2,
1442
1552
  "override": true
1443
1553
  }
1444
1554
  ]
@@ -1585,7 +1695,7 @@
1585
1695
  },
1586
1696
  "requires": {
1587
1697
  "features": [
1588
- "drive.read"
1698
+ "files.read"
1589
1699
  ]
1590
1700
  },
1591
1701
  "notify": {
@@ -1659,7 +1769,7 @@
1659
1769
  },
1660
1770
  "requires": {
1661
1771
  "features": [
1662
- "drive.read"
1772
+ "files.read"
1663
1773
  ]
1664
1774
  },
1665
1775
  "notify": {
@@ -1736,7 +1846,7 @@
1736
1846
  },
1737
1847
  "requires": {
1738
1848
  "features": [
1739
- "drive.read"
1849
+ "files.read"
1740
1850
  ]
1741
1851
  },
1742
1852
  "notify": {
@@ -1810,7 +1920,7 @@
1810
1920
  },
1811
1921
  "requires": {
1812
1922
  "features": [
1813
- "drive.read"
1923
+ "files.read"
1814
1924
  ]
1815
1925
  },
1816
1926
  "notify": {
@@ -1884,7 +1994,7 @@
1884
1994
  },
1885
1995
  "requires": {
1886
1996
  "features": [
1887
- "drive.read"
1997
+ "files.read"
1888
1998
  ]
1889
1999
  },
1890
2000
  "notify": {
@@ -1949,7 +2059,7 @@
1949
2059
  },
1950
2060
  "requires": {
1951
2061
  "features": [
1952
- "drive.read"
2062
+ "files.read"
1953
2063
  ]
1954
2064
  },
1955
2065
  "notify": {
@@ -2014,7 +2124,7 @@
2014
2124
  },
2015
2125
  "requires": {
2016
2126
  "features": [
2017
- "drive.read"
2127
+ "files.read"
2018
2128
  ]
2019
2129
  },
2020
2130
  "notify": {
@@ -2053,7 +2163,7 @@
2053
2163
  },
2054
2164
  "requires": {
2055
2165
  "features": [
2056
- "drive.read"
2166
+ "files.read"
2057
2167
  ]
2058
2168
  },
2059
2169
  "notify": {
@@ -2115,7 +2225,7 @@
2115
2225
  },
2116
2226
  "requires": {
2117
2227
  "features": [
2118
- "drive.read"
2228
+ "files.read"
2119
2229
  ]
2120
2230
  },
2121
2231
  "notify": {
@@ -2168,7 +2278,7 @@
2168
2278
  },
2169
2279
  "requires": {
2170
2280
  "features": [
2171
- "drive.read"
2281
+ "files.read"
2172
2282
  ]
2173
2283
  },
2174
2284
  "notify": {
@@ -2473,7 +2583,7 @@
2473
2583
  }
2474
2584
  ],
2475
2585
  "access": {
2476
- "trust": "first-party"
2586
+ "trust": "native"
2477
2587
  },
2478
2588
  "app": {
2479
2589
  "module": {
@@ -2501,7 +2611,7 @@
2501
2611
  "filesystem"
2502
2612
  ],
2503
2613
  "features": [
2504
- "drive.read"
2614
+ "files.read"
2505
2615
  ]
2506
2616
  },
2507
2617
  "layout": {
@@ -2520,6 +2630,7 @@
2520
2630
  {
2521
2631
  "kind": "dock",
2522
2632
  "id": "brain-core.filesystem",
2633
+ "image": "app/shared/filesystem.png",
2523
2634
  "label": "Filesystem",
2524
2635
  "icon": "Folder",
2525
2636
  "color": "#60a5fa",
@@ -2552,20 +2663,6 @@
2552
2663
  }
2553
2664
  ]
2554
2665
  },
2555
- "resources": [
2556
- {
2557
- "uri": "neuralis://brain/welcome",
2558
- "name": "Brain — Overview & onboarding",
2559
- "description": "What Brain is, what it can do, tool reference, revert workflow, search modes, and the recommended workflow.",
2560
- "mimeType": "text/markdown"
2561
- },
2562
- {
2563
- "uri": "neuralis://brain/agent",
2564
- "name": "Brain Agent — Filesystem & tools for your role",
2565
- "description": "Role-focused guidance for using the filesystem tools, search modes, modify actions, and revert workflow.",
2566
- "mimeType": "text/markdown"
2567
- }
2568
- ],
2569
2666
  "meta": {
2570
2667
  "hosts": [
2571
2668
  "v1-server",
@@ -2586,6 +2683,7 @@
2586
2683
  "postbuild": "node scripts/copyContracts.mjs",
2587
2684
  "build:ui": "neuralis-build ui",
2588
2685
  "typecheck:app": "tsc -p app/tsconfig.json",
2686
+ "typecheck:test": "tsc -p test/tsconfig.json",
2589
2687
  "test": "vitest run"
2590
2688
  }
2591
2689
  }