@theihtisham/agent-shadow-brain 7.2.0 → 7.22.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 (447) hide show
  1. package/CHANGELOG.md +482 -427
  2. package/README.md +202 -68
  3. package/dist/activity-cli.d.ts +3 -0
  4. package/dist/activity-cli.d.ts.map +1 -0
  5. package/dist/activity-cli.js +78 -0
  6. package/dist/activity-cli.js.map +1 -0
  7. package/dist/adapters/index.d.ts +2 -1
  8. package/dist/adapters/index.d.ts.map +1 -1
  9. package/dist/adapters/index.js +3 -2
  10. package/dist/adapters/index.js.map +1 -1
  11. package/dist/brain/activity-journal.d.ts +82 -0
  12. package/dist/brain/activity-journal.d.ts.map +1 -0
  13. package/dist/brain/activity-journal.js +315 -0
  14. package/dist/brain/activity-journal.js.map +1 -0
  15. package/dist/brain/activity-reporting.d.ts +14 -0
  16. package/dist/brain/activity-reporting.d.ts.map +1 -0
  17. package/dist/brain/activity-reporting.js +17 -0
  18. package/dist/brain/activity-reporting.js.map +1 -0
  19. package/dist/brain/auto-update.js +1 -1
  20. package/dist/brain/auto-update.js.map +1 -1
  21. package/dist/brain/brain-portability.js +1 -1
  22. package/dist/brain/brain-portability.js.map +1 -1
  23. package/dist/brain/client-config.d.ts +19 -0
  24. package/dist/brain/client-config.d.ts.map +1 -0
  25. package/dist/brain/client-config.js +40 -0
  26. package/dist/brain/client-config.js.map +1 -0
  27. package/dist/brain/client-integrations.d.ts +63 -0
  28. package/dist/brain/client-integrations.d.ts.map +1 -0
  29. package/dist/brain/client-integrations.js +79 -0
  30. package/dist/brain/client-integrations.js.map +1 -0
  31. package/dist/brain/context-assembly.d.ts +41 -5
  32. package/dist/brain/context-assembly.d.ts.map +1 -1
  33. package/dist/brain/context-assembly.js +366 -35
  34. package/dist/brain/context-assembly.js.map +1 -1
  35. package/dist/brain/context-efficiency.d.ts +48 -0
  36. package/dist/brain/context-efficiency.d.ts.map +1 -0
  37. package/dist/brain/context-efficiency.js +34 -0
  38. package/dist/brain/context-efficiency.js.map +1 -0
  39. package/dist/brain/context-request.d.ts +4 -0
  40. package/dist/brain/context-request.d.ts.map +1 -0
  41. package/dist/brain/context-request.js +24 -0
  42. package/dist/brain/context-request.js.map +1 -0
  43. package/dist/brain/context-retrieval.d.ts +88 -0
  44. package/dist/brain/context-retrieval.d.ts.map +1 -0
  45. package/dist/brain/context-retrieval.js +301 -0
  46. package/dist/brain/context-retrieval.js.map +1 -0
  47. package/dist/brain/feature-settings.d.ts +10 -0
  48. package/dist/brain/feature-settings.d.ts.map +1 -1
  49. package/dist/brain/feature-settings.js +18 -2
  50. package/dist/brain/feature-settings.js.map +1 -1
  51. package/dist/brain/file-identity.d.ts +4 -0
  52. package/dist/brain/file-identity.d.ts.map +1 -0
  53. package/dist/brain/file-identity.js +27 -0
  54. package/dist/brain/file-identity.js.map +1 -0
  55. package/dist/brain/global-brain.d.ts +18 -2
  56. package/dist/brain/global-brain.d.ts.map +1 -1
  57. package/dist/brain/global-brain.js +75 -7
  58. package/dist/brain/global-brain.js.map +1 -1
  59. package/dist/brain/managed-project-skills.d.ts +48 -0
  60. package/dist/brain/managed-project-skills.d.ts.map +1 -0
  61. package/dist/brain/managed-project-skills.js +230 -0
  62. package/dist/brain/managed-project-skills.js.map +1 -0
  63. package/dist/brain/mcp-presence.d.ts +50 -0
  64. package/dist/brain/mcp-presence.d.ts.map +1 -0
  65. package/dist/brain/mcp-presence.js +214 -0
  66. package/dist/brain/mcp-presence.js.map +1 -0
  67. package/dist/brain/mcp-server.d.ts +40 -1
  68. package/dist/brain/mcp-server.d.ts.map +1 -1
  69. package/dist/brain/mcp-server.js +506 -52
  70. package/dist/brain/mcp-server.js.map +1 -1
  71. package/dist/brain/mcp-stdio.d.ts +12 -0
  72. package/dist/brain/mcp-stdio.d.ts.map +1 -0
  73. package/dist/brain/mcp-stdio.js +158 -0
  74. package/dist/brain/mcp-stdio.js.map +1 -0
  75. package/dist/brain/memory-annotations.d.ts +99 -0
  76. package/dist/brain/memory-annotations.d.ts.map +1 -0
  77. package/dist/brain/memory-annotations.js +402 -0
  78. package/dist/brain/memory-annotations.js.map +1 -0
  79. package/dist/brain/memory-graph.d.ts.map +1 -1
  80. package/dist/brain/memory-graph.js +12 -23
  81. package/dist/brain/memory-graph.js.map +1 -1
  82. package/dist/brain/memory-inspection.d.ts +73 -0
  83. package/dist/brain/memory-inspection.d.ts.map +1 -0
  84. package/dist/brain/memory-inspection.js +131 -0
  85. package/dist/brain/memory-inspection.js.map +1 -0
  86. package/dist/brain/memory-mcp-content.d.ts +46 -0
  87. package/dist/brain/memory-mcp-content.d.ts.map +1 -0
  88. package/dist/brain/memory-mcp-content.js +95 -0
  89. package/dist/brain/memory-mcp-content.js.map +1 -0
  90. package/dist/brain/memory-sources.d.ts +8 -0
  91. package/dist/brain/memory-sources.d.ts.map +1 -0
  92. package/dist/brain/memory-sources.js +27 -0
  93. package/dist/brain/memory-sources.js.map +1 -0
  94. package/dist/brain/model-registry.d.ts +4 -5
  95. package/dist/brain/model-registry.d.ts.map +1 -1
  96. package/dist/brain/model-registry.js +22 -207
  97. package/dist/brain/model-registry.js.map +1 -1
  98. package/dist/brain/model-usage.d.ts +66 -0
  99. package/dist/brain/model-usage.d.ts.map +1 -0
  100. package/dist/brain/model-usage.js +246 -0
  101. package/dist/brain/model-usage.js.map +1 -0
  102. package/dist/brain/native-codex.d.ts +105 -0
  103. package/dist/brain/native-codex.d.ts.map +1 -0
  104. package/dist/brain/native-codex.js +292 -0
  105. package/dist/brain/native-codex.js.map +1 -0
  106. package/dist/brain/native-session-import.d.ts +56 -0
  107. package/dist/brain/native-session-import.d.ts.map +1 -0
  108. package/dist/brain/native-session-import.js +307 -0
  109. package/dist/brain/native-session-import.js.map +1 -0
  110. package/dist/brain/orchestrator.js +1 -1
  111. package/dist/brain/orchestrator.js.map +1 -1
  112. package/dist/brain/project-feedback.d.ts +63 -0
  113. package/dist/brain/project-feedback.d.ts.map +1 -0
  114. package/dist/brain/project-feedback.js +300 -0
  115. package/dist/brain/project-feedback.js.map +1 -0
  116. package/dist/brain/project-hub-contract.d.ts +332 -0
  117. package/dist/brain/project-hub-contract.d.ts.map +1 -0
  118. package/dist/brain/project-hub-contract.js +57 -0
  119. package/dist/brain/project-hub-contract.js.map +1 -0
  120. package/dist/brain/project-hub-mcp.d.ts +182 -0
  121. package/dist/brain/project-hub-mcp.d.ts.map +1 -0
  122. package/dist/brain/project-hub-mcp.js +46 -0
  123. package/dist/brain/project-hub-mcp.js.map +1 -0
  124. package/dist/brain/project-hub-pdf-worker.d.ts +13 -0
  125. package/dist/brain/project-hub-pdf-worker.d.ts.map +1 -0
  126. package/dist/brain/project-hub-pdf-worker.js +84 -0
  127. package/dist/brain/project-hub-pdf-worker.js.map +1 -0
  128. package/dist/brain/project-hub-store.d.ts +50 -0
  129. package/dist/brain/project-hub-store.d.ts.map +1 -0
  130. package/dist/brain/project-hub-store.js +257 -0
  131. package/dist/brain/project-hub-store.js.map +1 -0
  132. package/dist/brain/project-hub.d.ts +132 -0
  133. package/dist/brain/project-hub.d.ts.map +1 -0
  134. package/dist/brain/project-hub.js +403 -0
  135. package/dist/brain/project-hub.js.map +1 -0
  136. package/dist/brain/project-kit-inspection.d.ts +28 -0
  137. package/dist/brain/project-kit-inspection.d.ts.map +1 -0
  138. package/dist/brain/project-kit-inspection.js +200 -0
  139. package/dist/brain/project-kit-inspection.js.map +1 -0
  140. package/dist/brain/project-kit-paths.d.ts +13 -0
  141. package/dist/brain/project-kit-paths.d.ts.map +1 -0
  142. package/dist/brain/project-kit-paths.js +141 -0
  143. package/dist/brain/project-kit-paths.js.map +1 -0
  144. package/dist/brain/project-kit.d.ts +51 -0
  145. package/dist/brain/project-kit.d.ts.map +1 -0
  146. package/dist/brain/project-kit.js +319 -0
  147. package/dist/brain/project-kit.js.map +1 -0
  148. package/dist/brain/project-memory.d.ts +38 -0
  149. package/dist/brain/project-memory.d.ts.map +1 -0
  150. package/dist/brain/project-memory.js +76 -0
  151. package/dist/brain/project-memory.js.map +1 -0
  152. package/dist/brain/project-policy-delivery.d.ts +8 -0
  153. package/dist/brain/project-policy-delivery.d.ts.map +1 -0
  154. package/dist/brain/project-policy-delivery.js +38 -0
  155. package/dist/brain/project-policy-delivery.js.map +1 -0
  156. package/dist/brain/project-policy.d.ts +88 -0
  157. package/dist/brain/project-policy.d.ts.map +1 -0
  158. package/dist/brain/project-policy.js +267 -0
  159. package/dist/brain/project-policy.js.map +1 -0
  160. package/dist/brain/project-session-contract.d.ts +180 -0
  161. package/dist/brain/project-session-contract.d.ts.map +1 -0
  162. package/dist/brain/project-session-contract.js +50 -0
  163. package/dist/brain/project-session-contract.js.map +1 -0
  164. package/dist/brain/project-session-mcp.d.ts +145 -0
  165. package/dist/brain/project-session-mcp.d.ts.map +1 -0
  166. package/dist/brain/project-session-mcp.js +58 -0
  167. package/dist/brain/project-session-mcp.js.map +1 -0
  168. package/dist/brain/project-sessions.d.ts +97 -0
  169. package/dist/brain/project-sessions.d.ts.map +1 -0
  170. package/dist/brain/project-sessions.js +223 -0
  171. package/dist/brain/project-sessions.js.map +1 -0
  172. package/dist/brain/project-source-contract.d.ts +109 -0
  173. package/dist/brain/project-source-contract.d.ts.map +1 -0
  174. package/dist/brain/project-source-contract.js +2 -0
  175. package/dist/brain/project-source-contract.js.map +1 -0
  176. package/dist/brain/project-source-intake.d.ts +26 -0
  177. package/dist/brain/project-source-intake.d.ts.map +1 -0
  178. package/dist/brain/project-source-intake.js +457 -0
  179. package/dist/brain/project-source-intake.js.map +1 -0
  180. package/dist/brain/subconscious.d.ts +3 -1
  181. package/dist/brain/subconscious.d.ts.map +1 -1
  182. package/dist/brain/subconscious.js +8 -3
  183. package/dist/brain/subconscious.js.map +1 -1
  184. package/dist/brain/workflow-skills.d.ts +5 -5
  185. package/dist/brain/workflow-skills.d.ts.map +1 -1
  186. package/dist/brain/workflow-skills.js +3 -2
  187. package/dist/brain/workflow-skills.js.map +1 -1
  188. package/dist/cli.js +37 -3
  189. package/dist/cli.js.map +1 -1
  190. package/dist/context-cli.d.ts.map +1 -1
  191. package/dist/context-cli.js +49 -7
  192. package/dist/context-cli.js.map +1 -1
  193. package/dist/curation-cli.d.ts +4 -0
  194. package/dist/curation-cli.d.ts.map +1 -0
  195. package/dist/curation-cli.js +118 -0
  196. package/dist/curation-cli.js.map +1 -0
  197. package/dist/dashboard/brain-hub-actions.d.ts +2 -0
  198. package/dist/dashboard/brain-hub-actions.d.ts.map +1 -0
  199. package/dist/dashboard/brain-hub-actions.js +234 -0
  200. package/dist/dashboard/brain-hub-actions.js.map +1 -0
  201. package/dist/dashboard/brain-hub-agent-dock.d.ts +2 -0
  202. package/dist/dashboard/brain-hub-agent-dock.d.ts.map +1 -0
  203. package/dist/dashboard/brain-hub-agent-dock.js +255 -0
  204. package/dist/dashboard/brain-hub-agent-dock.js.map +1 -0
  205. package/dist/dashboard/brain-hub-brand-icons.d.ts +2 -0
  206. package/dist/dashboard/brain-hub-brand-icons.d.ts.map +1 -0
  207. package/dist/dashboard/brain-hub-brand-icons.js +9 -0
  208. package/dist/dashboard/brain-hub-brand-icons.js.map +1 -0
  209. package/dist/dashboard/brain-hub-client.d.ts +2 -0
  210. package/dist/dashboard/brain-hub-client.d.ts.map +1 -0
  211. package/dist/dashboard/brain-hub-client.js +435 -0
  212. package/dist/dashboard/brain-hub-client.js.map +1 -0
  213. package/dist/dashboard/brain-hub-context.d.ts +2 -0
  214. package/dist/dashboard/brain-hub-context.d.ts.map +1 -0
  215. package/dist/dashboard/brain-hub-context.js +37 -0
  216. package/dist/dashboard/brain-hub-context.js.map +1 -0
  217. package/dist/dashboard/brain-hub-controls.d.ts +2 -0
  218. package/dist/dashboard/brain-hub-controls.d.ts.map +1 -0
  219. package/dist/dashboard/brain-hub-controls.js +63 -0
  220. package/dist/dashboard/brain-hub-controls.js.map +1 -0
  221. package/dist/dashboard/brain-hub-exchanges.d.ts +2 -0
  222. package/dist/dashboard/brain-hub-exchanges.d.ts.map +1 -0
  223. package/dist/dashboard/brain-hub-exchanges.js +82 -0
  224. package/dist/dashboard/brain-hub-exchanges.js.map +1 -0
  225. package/dist/dashboard/brain-hub-graph.d.ts +2 -0
  226. package/dist/dashboard/brain-hub-graph.d.ts.map +1 -0
  227. package/dist/dashboard/brain-hub-graph.js +338 -0
  228. package/dist/dashboard/brain-hub-graph.js.map +1 -0
  229. package/dist/dashboard/brain-hub-html.d.ts +2 -0
  230. package/dist/dashboard/brain-hub-html.d.ts.map +1 -0
  231. package/dist/dashboard/brain-hub-html.js +85 -0
  232. package/dist/dashboard/brain-hub-html.js.map +1 -0
  233. package/dist/dashboard/brain-hub-knowledge.d.ts +2 -0
  234. package/dist/dashboard/brain-hub-knowledge.d.ts.map +1 -0
  235. package/dist/dashboard/brain-hub-knowledge.js +33 -0
  236. package/dist/dashboard/brain-hub-knowledge.js.map +1 -0
  237. package/dist/dashboard/brain-hub-live.d.ts +2 -0
  238. package/dist/dashboard/brain-hub-live.d.ts.map +1 -0
  239. package/dist/dashboard/brain-hub-live.js +151 -0
  240. package/dist/dashboard/brain-hub-live.js.map +1 -0
  241. package/dist/dashboard/brain-hub-managed-skills.d.ts +2 -0
  242. package/dist/dashboard/brain-hub-managed-skills.d.ts.map +1 -0
  243. package/dist/dashboard/brain-hub-managed-skills.js +20 -0
  244. package/dist/dashboard/brain-hub-managed-skills.js.map +1 -0
  245. package/dist/dashboard/brain-hub-native.d.ts +2 -0
  246. package/dist/dashboard/brain-hub-native.d.ts.map +1 -0
  247. package/dist/dashboard/brain-hub-native.js +44 -0
  248. package/dist/dashboard/brain-hub-native.js.map +1 -0
  249. package/dist/dashboard/brain-hub-project-views.d.ts +2 -0
  250. package/dist/dashboard/brain-hub-project-views.d.ts.map +1 -0
  251. package/dist/dashboard/brain-hub-project-views.js +80 -0
  252. package/dist/dashboard/brain-hub-project-views.js.map +1 -0
  253. package/dist/dashboard/brain-hub-sessions.d.ts +2 -0
  254. package/dist/dashboard/brain-hub-sessions.d.ts.map +1 -0
  255. package/dist/dashboard/brain-hub-sessions.js +40 -0
  256. package/dist/dashboard/brain-hub-sessions.js.map +1 -0
  257. package/dist/dashboard/brain-hub-usage.d.ts +2 -0
  258. package/dist/dashboard/brain-hub-usage.d.ts.map +1 -0
  259. package/dist/dashboard/brain-hub-usage.js +28 -0
  260. package/dist/dashboard/brain-hub-usage.js.map +1 -0
  261. package/dist/dashboard/brain-hub-views.d.ts +2 -0
  262. package/dist/dashboard/brain-hub-views.d.ts.map +1 -0
  263. package/dist/dashboard/brain-hub-views.js +155 -0
  264. package/dist/dashboard/brain-hub-views.js.map +1 -0
  265. package/dist/dashboard/demo-workspace.d.ts +11 -0
  266. package/dist/dashboard/demo-workspace.d.ts.map +1 -0
  267. package/dist/dashboard/demo-workspace.js +178 -0
  268. package/dist/dashboard/demo-workspace.js.map +1 -0
  269. package/dist/dashboard/live-workspace-html.d.ts +2 -0
  270. package/dist/dashboard/live-workspace-html.d.ts.map +1 -0
  271. package/dist/dashboard/live-workspace-html.js +1042 -0
  272. package/dist/dashboard/live-workspace-html.js.map +1 -0
  273. package/dist/dashboard/managed-project-skills-api.d.ts +29 -0
  274. package/dist/dashboard/managed-project-skills-api.d.ts.map +1 -0
  275. package/dist/dashboard/managed-project-skills-api.js +28 -0
  276. package/dist/dashboard/managed-project-skills-api.js.map +1 -0
  277. package/dist/dashboard/native-codex-api.d.ts +83 -0
  278. package/dist/dashboard/native-codex-api.d.ts.map +1 -0
  279. package/dist/dashboard/native-codex-api.js +91 -0
  280. package/dist/dashboard/native-codex-api.js.map +1 -0
  281. package/dist/dashboard/project-feedback-html.d.ts +5 -0
  282. package/dist/dashboard/project-feedback-html.d.ts.map +1 -0
  283. package/dist/dashboard/project-feedback-html.js +216 -0
  284. package/dist/dashboard/project-feedback-html.js.map +1 -0
  285. package/dist/dashboard/project-file-watch.d.ts +46 -0
  286. package/dist/dashboard/project-file-watch.d.ts.map +1 -0
  287. package/dist/dashboard/project-file-watch.js +221 -0
  288. package/dist/dashboard/project-file-watch.js.map +1 -0
  289. package/dist/dashboard/project-hub-api.d.ts +5 -0
  290. package/dist/dashboard/project-hub-api.d.ts.map +1 -0
  291. package/dist/dashboard/project-hub-api.js +121 -0
  292. package/dist/dashboard/project-hub-api.js.map +1 -0
  293. package/dist/dashboard/project-kit-html.d.ts +4 -0
  294. package/dist/dashboard/project-kit-html.d.ts.map +1 -0
  295. package/dist/dashboard/project-kit-html.js +359 -0
  296. package/dist/dashboard/project-kit-html.js.map +1 -0
  297. package/dist/dashboard/project-live-stream.d.ts +33 -0
  298. package/dist/dashboard/project-live-stream.d.ts.map +1 -0
  299. package/dist/dashboard/project-live-stream.js +233 -0
  300. package/dist/dashboard/project-live-stream.js.map +1 -0
  301. package/dist/dashboard/project-policy-api.d.ts +37 -0
  302. package/dist/dashboard/project-policy-api.d.ts.map +1 -0
  303. package/dist/dashboard/project-policy-api.js +31 -0
  304. package/dist/dashboard/project-policy-api.js.map +1 -0
  305. package/dist/dashboard/project-session-api.d.ts +28 -0
  306. package/dist/dashboard/project-session-api.d.ts.map +1 -0
  307. package/dist/dashboard/project-session-api.js +84 -0
  308. package/dist/dashboard/project-session-api.js.map +1 -0
  309. package/dist/dashboard/project-source-api.d.ts +11 -0
  310. package/dist/dashboard/project-source-api.d.ts.map +1 -0
  311. package/dist/dashboard/project-source-api.js +67 -0
  312. package/dist/dashboard/project-source-api.js.map +1 -0
  313. package/dist/dashboard/project-workspace.d.ts +16 -0
  314. package/dist/dashboard/project-workspace.d.ts.map +1 -0
  315. package/dist/dashboard/project-workspace.js +124 -0
  316. package/dist/dashboard/project-workspace.js.map +1 -0
  317. package/dist/dashboard/server.d.ts +1 -0
  318. package/dist/dashboard/server.d.ts.map +1 -1
  319. package/dist/dashboard/server.js +99 -42
  320. package/dist/dashboard/server.js.map +1 -1
  321. package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
  322. package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
  323. package/dist/dashboard/v6-dashboard-html.js +39 -87
  324. package/dist/dashboard/v6-dashboard-html.js.map +1 -1
  325. package/dist/dashboard/workspace-api.d.ts +12 -0
  326. package/dist/dashboard/workspace-api.d.ts.map +1 -1
  327. package/dist/dashboard/workspace-api.js +359 -41
  328. package/dist/dashboard/workspace-api.js.map +1 -1
  329. package/dist/dashboard/workspace-html.d.ts.map +1 -1
  330. package/dist/dashboard/workspace-html.js +2535 -1552
  331. package/dist/dashboard/workspace-html.js.map +1 -1
  332. package/dist/dashboard/workspace-status.d.ts +53 -0
  333. package/dist/dashboard/workspace-status.d.ts.map +1 -0
  334. package/dist/dashboard/workspace-status.js +23 -0
  335. package/dist/dashboard/workspace-status.js.map +1 -0
  336. package/dist/index.d.ts +16 -0
  337. package/dist/index.d.ts.map +1 -1
  338. package/dist/index.js +13 -0
  339. package/dist/index.js.map +1 -1
  340. package/dist/integration-cli.d.ts +3 -0
  341. package/dist/integration-cli.d.ts.map +1 -0
  342. package/dist/integration-cli.js +16 -0
  343. package/dist/integration-cli.js.map +1 -0
  344. package/dist/project-cli.d.ts +3 -0
  345. package/dist/project-cli.d.ts.map +1 -0
  346. package/dist/project-cli.js +100 -0
  347. package/dist/project-cli.js.map +1 -0
  348. package/dist/types.d.ts +8 -1
  349. package/dist/types.d.ts.map +1 -1
  350. package/docs/BRAND_ASSETS.md +36 -0
  351. package/docs/COMPARISON.md +22 -0
  352. package/docs/COMPONENTS.md +66 -0
  353. package/docs/CONTEXT_LAB.md +79 -0
  354. package/docs/FEATURES_AND_LIMITS.md +29 -0
  355. package/docs/INTEGRATIONS.md +70 -0
  356. package/docs/LEARNING.md +46 -0
  357. package/docs/PROJECT_KIT.md +98 -0
  358. package/docs/QUICKSTART.md +62 -0
  359. package/docs/README.md +36 -0
  360. package/docs/ROADMAP-v7.md +147 -0
  361. package/docs/SESSIONS.md +77 -0
  362. package/docs/SHARING.md +13 -0
  363. package/docs/SHOWCASE.md +87 -0
  364. package/docs/SOURCE_INTAKE.md +33 -0
  365. package/docs/STATS.md +21 -0
  366. package/docs/TROUBLESHOOTING.md +42 -0
  367. package/docs/UPGRADE_PLAN_v7.0.0.md +203 -0
  368. package/docs/VIRAL-PLAYBOOK.md +259 -0
  369. package/docs/VISUAL_GUIDE_v7.1.4.md +70 -0
  370. package/docs/VISUAL_GUIDE_v7.22.0.md +73 -0
  371. package/docs/WORKFLOW_INTEGRATION.md +125 -105
  372. package/docs/WORKSPACE.md +63 -70
  373. package/docs/assets/7.1.4-collaboration-design-preview.png +0 -0
  374. package/docs/assets/7.1.4-comparison.png +0 -0
  375. package/docs/assets/7.1.4-context-lab.png +0 -0
  376. package/docs/assets/7.1.4-control-room-dense-preview.png +0 -0
  377. package/docs/assets/7.1.4-control-room-focus-preview.png +0 -0
  378. package/docs/assets/7.1.4-features.png +0 -0
  379. package/docs/assets/7.1.4-graph.png +0 -0
  380. package/docs/assets/7.1.4-hub-control-room.png +0 -0
  381. package/docs/assets/7.1.4-hub-empty.png +0 -0
  382. package/docs/assets/7.1.4-hub-knowledge.png +0 -0
  383. package/docs/assets/7.1.4-hub-learning.png +0 -0
  384. package/docs/assets/7.1.4-hub-mobile.png +0 -0
  385. package/docs/assets/7.1.4-hub-public-docs-source.png +0 -0
  386. package/docs/assets/7.1.4-hub-public-docs.gif +0 -0
  387. package/docs/assets/7.1.4-hub-public-docs.png +0 -0
  388. package/docs/assets/7.1.4-hub-setup.png +0 -0
  389. package/docs/assets/7.1.4-hub-walkthrough.gif +0 -0
  390. package/docs/assets/7.1.4-integrations.png +0 -0
  391. package/docs/assets/7.1.4-knowledge-design-preview.png +0 -0
  392. package/docs/assets/7.1.4-learning-design-preview.png +0 -0
  393. package/docs/assets/7.1.4-learning.png +0 -0
  394. package/docs/assets/7.1.4-live.png +0 -0
  395. package/docs/assets/7.1.4-memory-review.png +0 -0
  396. package/docs/assets/7.1.4-mobile.png +0 -0
  397. package/docs/assets/7.1.4-models-design-preview.png +0 -0
  398. package/docs/assets/7.1.4-outcome-ranking.png +0 -0
  399. package/docs/assets/7.1.4-overview.png +0 -0
  400. package/docs/assets/7.1.4-project-kit.png +0 -0
  401. package/docs/assets/7.1.4-project-skill-preview.png +0 -0
  402. package/docs/assets/7.1.4-replay.png +0 -0
  403. package/docs/assets/7.1.4-setup-design-preview.png +0 -0
  404. package/docs/assets/7.1.4-usage-design-preview.png +0 -0
  405. package/docs/assets/7.22.0-agent-dock-mobile.png +0 -0
  406. package/docs/assets/7.22.0-agent-dock.gif +0 -0
  407. package/docs/assets/7.22.0-agent-dock.png +0 -0
  408. package/docs/assets/7.22.0-hub-exchange.png +0 -0
  409. package/docs/assets/7.22.0-hub-exchanges.gif +0 -0
  410. package/docs/assets/7.22.0-hub-graph.png +0 -0
  411. package/docs/assets/7.22.0-hub-mobile-empty.png +0 -0
  412. package/docs/assets/7.22.0-managed-skills.png +0 -0
  413. package/docs/assets/7.22.0-plain-evidence.png +0 -0
  414. package/docs/assets/7.22.0-project-controls.png +0 -0
  415. package/docs/assets/7.22.0-sessions.png +0 -0
  416. package/docs/assets/7.22.0-teach-brain.png +0 -0
  417. package/docs/assets/context-v7.1.3.png +0 -0
  418. package/docs/assets/features-v7.1.3.png +0 -0
  419. package/docs/assets/graph-v7.1.3.png +0 -0
  420. package/docs/assets/integrations-v7.1.3.png +0 -0
  421. package/docs/assets/live-v7.1.3.png +0 -0
  422. package/docs/assets/live-v7.1.4.gif +0 -0
  423. package/docs/assets/memory-detail-v7.1.3.png +0 -0
  424. package/docs/assets/overview-v7.1.3.png +0 -0
  425. package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.json +1818 -0
  426. package/docs/evaluation/CONTEXT_EVALUATION_v7.1.4.md +36 -0
  427. package/docs/launch/COMPONENT_MAP_v7.1.4.md +307 -0
  428. package/docs/launch/PROJECT_KIT_PLAN_v7.1.4.md +110 -0
  429. package/docs/launch/PROJECT_LEARNING_PLAN_v7.1.4.md +63 -0
  430. package/docs/launch/RELEASE_ACCEPTANCE_v7.22.0.md +48 -0
  431. package/docs/launch/RELEASE_CHECKLIST_v7.0.0.md +24 -24
  432. package/docs/launch/RELEASE_NOTES_v7.0.0.md +44 -44
  433. package/docs/launch/RELEASE_NOTES_v7.1.0.md +32 -32
  434. package/docs/launch/RELEASE_NOTES_v7.1.3.md +40 -0
  435. package/docs/launch/RELEASE_NOTES_v7.1.4.md +30 -0
  436. package/docs/launch/RELEASE_NOTES_v7.2.0.md +24 -24
  437. package/docs/launch/RELEASE_NOTES_v7.22.0.md +53 -0
  438. package/docs/launch/RELEASE_NOTES_v7.22.1.md +11 -0
  439. package/docs/launch/RESEARCH_AND_PLAN_v7.1.4.md +255 -0
  440. package/docs/launch/RESEARCH_AND_PLAN_v7.22.0.md +672 -0
  441. package/package.json +139 -111
  442. package/skills/shadow-debug/SKILL.md +16 -16
  443. package/skills/shadow-implement/SKILL.md +16 -16
  444. package/skills/shadow-release/SKILL.md +16 -16
  445. package/skills/shadow-research/SKILL.md +14 -12
  446. package/skills/shadow-review/SKILL.md +14 -14
  447. package/skills/shadow-workflow/SKILL.md +39 -31
@@ -1 +1 @@
1
- {"version":3,"file":"context-cli.d.ts","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwC9D"}
1
+ {"version":3,"file":"context-cli.d.ts","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwE9D"}
@@ -3,6 +3,13 @@ import * as path from 'node:path';
3
3
  import { getGlobalBrain, GlobalBrain } from './brain/global-brain.js';
4
4
  import { assembleContext } from './brain/context-assembly.js';
5
5
  import { FeatureSettingsStore, FEATURE_DEFINITIONS } from './brain/feature-settings.js';
6
+ import { memoryAnnotationsFor } from './brain/memory-annotations.js';
7
+ import { parseContextRequest } from './brain/context-request.js';
8
+ import { inspectMemoryHealth } from './brain/memory-inspection.js';
9
+ import { ProjectFeedbackStore } from './brain/project-feedback.js';
10
+ import { resolveProjectStore } from './brain/project-memory.js';
11
+ import { ProjectPolicyStore } from './brain/project-policy.js';
12
+ import { enforceProjectContext } from './brain/project-policy-delivery.js';
6
13
  export function registerContextCommands(program) {
7
14
  program.command('context-pack').description('Build a bounded, explained project context pack without model calls')
8
15
  .argument('[query]', 'Current task or search terms', '')
@@ -11,22 +18,36 @@ export function registerContextCommands(program) {
11
18
  .option('--db <path>', 'Explicit memory-store path')
12
19
  .option('--settings <path>', 'Explicit feature-settings file')
13
20
  .option('--token-budget <number>', 'Approximate token budget, including the rendered context', '2000')
21
+ .option('--max-entries <number>', 'Maximum selected memories, 1 to 30')
14
22
  .option('--cross-project', 'Request broader context when the feature is enabled')
23
+ .option('--profile <name>', 'Retrieval profile: legacy or adaptive', 'legacy')
24
+ .option('--no-related', 'Disable recorded one-hop expansion in adaptive retrieval')
15
25
  .option('--json', 'Print entries, exclusions, reasons, and budget as JSON')
16
26
  .action(async (query, opts) => {
17
27
  const tokenBudget = Number(opts.tokenBudget);
18
28
  if (!Number.isSafeInteger(tokenBudget) || tokenBudget < 0 || tokenBudget > 12000)
19
29
  throw new TypeError('Token budget must be an integer from 0 to 12000.');
20
- const settings = new FeatureSettingsStore({ filePath: opts.settings ?? (opts.db ? path.join(path.dirname(path.resolve(opts.db)), 'feature-settings.json') : undefined) });
30
+ const local = resolveProjectStore(opts.project, opts.db);
31
+ const request = parseContextRequest({ projectId: opts.projectId ?? local?.projectId ?? GlobalBrain.projectIdFor(path.resolve(opts.project)),
32
+ query, tokenBudget, maxEntries: opts.maxEntries === undefined ? undefined : Number(opts.maxEntries),
33
+ includeCrossProject: !!opts.crossProject, profile: opts.profile, expandRelated: opts.related });
34
+ if (local && (request.projectId !== local.projectId || request.includeCrossProject)) {
35
+ throw new TypeError('This memory store is pinned to its local project.');
36
+ }
37
+ const dbPath = local?.storagePath ?? (opts.db ? path.resolve(opts.db) : undefined);
38
+ const brain = getGlobalBrain(dbPath ? { dbPath } : undefined);
39
+ const settings = new FeatureSettingsStore({ filePath: opts.settings ?? local?.settingsPath ?? (dbPath ? path.join(path.dirname(dbPath), 'feature-settings.json') : undefined) });
21
40
  const features = settings.get().features;
22
- const brain = getGlobalBrain(opts.db ? { dbPath: path.resolve(opts.db) } : undefined);
23
41
  try {
24
42
  if (features.contextAssembly)
25
- await brain.init();
26
- const pack = assembleContext(brain, {
27
- projectId: opts.projectId ?? GlobalBrain.projectIdFor(path.resolve(opts.project)),
28
- query, tokenBudget, includeCrossProject: !!opts.crossProject, features,
29
- });
43
+ brain.refresh();
44
+ const options = {
45
+ ...request, features,
46
+ feedback: features.contextAssembly && local && request.profile === 'adaptive' ? new ProjectFeedbackStore(local.root, brain).get() : undefined,
47
+ annotations: features.contextAssembly ? memoryAnnotationsFor(brain).get() : undefined,
48
+ };
49
+ const pack = assembleContext(brain, local
50
+ ? enforceProjectContext(local.root, brain, new ProjectPolicyStore(local.root, local.projectId).get(), options) : options);
30
51
  if (opts.json)
31
52
  console.log(JSON.stringify(pack, null, 2));
32
53
  else {
@@ -39,6 +60,27 @@ export function registerContextCommands(program) {
39
60
  await brain.shutdown();
40
61
  }
41
62
  });
63
+ program.command('memory-health').description('Inspect scoped source, review, duplication, age, and relationship attention hints without model calls')
64
+ .option('--project <directory>', 'Project directory', process.cwd())
65
+ .option('--project-id <id>', 'Use an existing memory project ID directly')
66
+ .option('--db <path>', 'Explicit memory-store path')
67
+ .option('--limit <number>', 'Maximum attention items, 1 to 100', '30')
68
+ .action(async (opts) => {
69
+ const local = resolveProjectStore(opts.project, opts.db);
70
+ if (local && opts.projectId && opts.projectId !== local.projectId)
71
+ throw new TypeError('This memory store is pinned to its local project.');
72
+ const dbPath = local?.storagePath ?? (opts.db ? path.resolve(opts.db) : undefined);
73
+ const brain = getGlobalBrain(dbPath ? { dbPath } : undefined);
74
+ try {
75
+ brain.refresh();
76
+ console.log(JSON.stringify(inspectMemoryHealth(brain, memoryAnnotationsFor(brain).get(), {
77
+ projectId: opts.projectId ?? local?.projectId ?? GlobalBrain.projectIdFor(path.resolve(opts.project)), limit: Number(opts.limit),
78
+ }), null, 2));
79
+ }
80
+ finally {
81
+ await brain.shutdown();
82
+ }
83
+ });
42
84
  const features = new Command('features').description('Inspect or change the dedicated runtime feature controls');
43
85
  features.command('list').option('--settings <path>', 'Explicit feature-settings file').action((opts) => {
44
86
  console.log(JSON.stringify({ ...new FeatureSettingsStore({ filePath: opts.settings }).get(), definitions: FEATURE_DEFINITIONS }, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"context-cli.js","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAExF,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,qEAAqE,CAAC;SAC/G,QAAQ,CAAC,SAAS,EAAE,8BAA8B,EAAE,EAAE,CAAC;SACvD,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACnE,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,CAAC;SACzE,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,MAAM,CAAC,yBAAyB,EAAE,0DAA0D,EAAE,MAAM,CAAC;SACrG,MAAM,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;SAChF,MAAM,CAAC,QAAQ,EAAE,wDAAwD,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC1J,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1K,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;QACzC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtF,IAAI,CAAC;YACH,IAAI,QAAQ,CAAC,eAAe;gBAAE,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE;gBAClC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjF,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ;aACvE,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;iBACrD,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC;gBACvJ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;gBAAS,CAAC;YAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,0DAA0D,CAAC,CAAC;IACjH,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACrG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7I,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;SACzG,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,IAAI,EAAE,EAAE;QAChH,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,oBAAoB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvI,CAAC,CAAC,CAAC;IACL,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"context-cli.js","sourceRoot":"","sources":["../src/context-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ /** Register project-scoped curation commands without initializing local services. */
3
+ export declare function registerCurationCommands(program: Command): void;
4
+ //# sourceMappingURL=curation-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curation-cli.d.ts","sourceRoot":"","sources":["../src/curation-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE/D"}
@@ -0,0 +1,118 @@
1
+ import * as path from 'node:path';
2
+ import { Command } from 'commander';
3
+ import { getGlobalBrain } from './brain/global-brain.js';
4
+ import { MemoryAnnotationsError, MemoryAnnotationsStore, memoryAnnotationsFor, memoryState, } from './brain/memory-annotations.js';
5
+ import { normalizeMemorySources } from './brain/memory-sources.js';
6
+ function scoped(command) {
7
+ return command
8
+ .requiredOption('--project-id <id>', 'Existing memory project ID')
9
+ .option('--db <path>', 'Explicit memory-store path')
10
+ .option('--annotations <path>', 'Explicit annotation-store path');
11
+ }
12
+ function change(command) {
13
+ return scoped(command).option('--revision <number>', 'Require this annotation revision before writing');
14
+ }
15
+ function expectedRevision(value) {
16
+ if (value === undefined)
17
+ return undefined;
18
+ if (!/^\d+$/.test(value) || !Number.isSafeInteger(Number(value))) {
19
+ throw new TypeError('Annotation revision must be a nonnegative integer.');
20
+ }
21
+ return Number(value);
22
+ }
23
+ function requireScope(projectId) {
24
+ if (!projectId.trim() || projectId !== projectId.trim())
25
+ throw new TypeError('Provide a nonempty project ID.');
26
+ }
27
+ async function runCuration(opts, perform) {
28
+ requireScope(opts.projectId);
29
+ const brain = getGlobalBrain(opts.db ? { dbPath: path.resolve(opts.db) } : undefined);
30
+ try {
31
+ await brain.init();
32
+ const store = opts.annotations
33
+ ? new MemoryAnnotationsStore({ filePath: opts.annotations, resolveMemory: id => brain.getEntry(id) })
34
+ : memoryAnnotationsFor(brain);
35
+ console.log(JSON.stringify(await perform(brain, store), null, 2));
36
+ }
37
+ finally {
38
+ await brain.shutdown();
39
+ }
40
+ }
41
+ function isMemoryEvent(event, projectId, memoryId) {
42
+ if (event.projectId !== projectId)
43
+ return false;
44
+ return event.command.kind === 'review'
45
+ ? event.command.memoryId === memoryId
46
+ : event.relation?.fromId === memoryId || event.relation?.toId === memoryId;
47
+ }
48
+ /** Register project-scoped curation commands without initializing local services. */
49
+ export function registerCurationCommands(program) {
50
+ const curate = new Command('curate').description('Review stored memories and record explicit project relations');
51
+ scoped(curate.command('show').description('Inspect one memory, its sources, and its review history'))
52
+ .argument('<memory-id>')
53
+ .action((id, opts) => runCuration(opts, (brain, store) => {
54
+ const memory = brain.getEntry(id);
55
+ if (!memory || memory.projectId !== opts.projectId) {
56
+ throw new MemoryAnnotationsError('ANNOTATIONS_NOT_FOUND', 'Memory was not found in the selected project.');
57
+ }
58
+ const { projectId, projectName, agentTool, category, content, createdAt, metadata } = memory;
59
+ const snapshot = store.get();
60
+ const review = snapshot.reviews[id];
61
+ const links = snapshot.links.filter(link => link.projectId === projectId && (link.fromId === id || link.toId === id))
62
+ .map(link => {
63
+ const otherId = link.fromId === id ? link.toId : link.fromId;
64
+ return { ...link, otherId, otherAvailable: brain.getEntry(otherId)?.projectId === projectId };
65
+ });
66
+ return {
67
+ id, projectId, projectName, agentTool, category, content, createdAt,
68
+ sources: normalizeMemorySources(metadata),
69
+ state: memoryState(snapshot, projectId, id),
70
+ review: review?.projectId === projectId ? review : null,
71
+ links,
72
+ history: snapshot.history.filter(event => isMemoryEvent(event, projectId, id)),
73
+ revision: snapshot.revision,
74
+ };
75
+ }));
76
+ change(curate.command('review').description('Set a manual review state for a memory'))
77
+ .argument('<memory-id>')
78
+ .argument('<state>', 'active, archived, or contested')
79
+ .option('--note <text>', 'Optional review note')
80
+ .action((memoryId, state, opts) => {
81
+ const revision = expectedRevision(opts.revision);
82
+ return runCuration(opts, async (_brain, store) => {
83
+ const snapshot = await store.update({ kind: 'review', projectId: opts.projectId, memoryId, state, note: opts.note }, revision);
84
+ return {
85
+ memoryId, projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt,
86
+ state: memoryState(snapshot, opts.projectId, memoryId), review: snapshot.reviews[memoryId],
87
+ };
88
+ });
89
+ });
90
+ change(curate.command('link').description('Record a relation between memories in one project'))
91
+ .argument('<from-id>')
92
+ .argument('<to-id>')
93
+ .argument('<type>', 'related, supports, contradicts, or supersedes')
94
+ .option('--note <text>', 'Optional relation note')
95
+ .action((fromId, toId, type, opts) => {
96
+ const revision = expectedRevision(opts.revision);
97
+ return runCuration(opts, async (_brain, store) => {
98
+ const snapshot = await store.update({ kind: 'link', projectId: opts.projectId, fromId, toId, type, note: opts.note }, revision);
99
+ return { projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt,
100
+ link: snapshot.history[snapshot.history.length - 1].relation };
101
+ });
102
+ });
103
+ change(curate.command('unlink').description('Remove an explicit relation and retain its audit event'))
104
+ .argument('<link-id>')
105
+ .action((linkId, opts) => {
106
+ const revision = expectedRevision(opts.revision);
107
+ return runCuration(opts, async (_brain, store) => {
108
+ const before = store.get();
109
+ const link = before.links.find(item => item.id === linkId && item.projectId === opts.projectId);
110
+ if (!link)
111
+ throw new MemoryAnnotationsError('ANNOTATIONS_NOT_FOUND', 'Memory relation was not found in the selected project.');
112
+ const snapshot = await store.update({ kind: 'unlink', linkId }, revision ?? before.revision);
113
+ return { projectId: opts.projectId, revision: snapshot.revision, updatedAt: snapshot.updatedAt, linkId };
114
+ });
115
+ });
116
+ program.addCommand(curate);
117
+ }
118
+ //# sourceMappingURL=curation-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curation-cli.js","sourceRoot":"","sources":["../src/curation-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const BRAIN_HUB_ACTIONS: string;
2
+ //# sourceMappingURL=brain-hub-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-hub-actions.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-actions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,QAwO7B,CAAC"}
@@ -0,0 +1,234 @@
1
+ export const BRAIN_HUB_ACTIONS = String.raw `
2
+ async function roomWrite(input){
3
+ if(!state.room)throw new Error('Select a room first.');
4
+ state.room=await hubWrite('hub/rooms/'+encodeURIComponent(state.room.room.id)+'/actions',input);
5
+ }
6
+ async function lessonWrite(id,input){
7
+ const {lesson}=await hubWrite('hub/lessons/'+encodeURIComponent(id)+'/actions',input);
8
+ if(lesson)state.hub={...state.hub,lessons:arr(state.hub?.lessons).map(item=>item.id===id?lesson:item)};
9
+ return afterSave(refreshHub,...(input.kind!=='evaluate'?[refreshGraph]:[]));
10
+ }
11
+ async function inspectApprovedMemory(id){
12
+ state.graph=await api('graph'+projectQuery({limit:graphMemoryLimit,memory:id}));
13
+ openView('overview');
14
+ await chooseMemory('memory:'+id);
15
+ }
16
+ function handleClick(event){
17
+ const button=event.target.closest('button');
18
+ if(!button||button.disabled)return;
19
+ const data=button.dataset;
20
+ if(handleAgentDock(button))return;
21
+ if(data.policyTool){void mutation(()=>saveProjectPolicy({kind:'set-tool-participation',tool:data.policyTool,enabled:data.enabled==='true'}),button,'Tool participation saved.');return;}
22
+ if(data.policyChat){void mutation(()=>saveProjectPolicy({kind:'set-chat-sharing',sessionId:data.policyChat,shareContext:data.enabled==='true'}),button,'Conversation sharing saved.');return;}
23
+ if(data.view){openView(data.view);return;}
24
+ if(data.project){
25
+ if(!state.pending&&data.project!==state.project){state.project=data.project;resetScope();render();void refresh(true);}
26
+ return;
27
+ }
28
+ if(data.node){void chooseMemory(data.node);return;}
29
+ if(data.graphMemory){void focusGraphMemory(data.graphMemory,data.graphProject);return;}
30
+ if(data.graphFilter){filterGraph(data.graphFilter);return;}
31
+ if(data.inspect){state.inspector=data.inspect;renderInspector();$('inspector').querySelector('[data-inspect="'+data.inspect+'"]')?.focus({preventScroll:true});return;}
32
+ if(data.event){
33
+ setReplay(state.events.findIndex(item=>item.id===data.event));
34
+ const replacement=[...(button.closest('#graph-exchanges')?$('graph-exchanges'):button.closest('#timeline')?$('timeline'):button.closest('#trace-list')?$('trace-list'):$('inspector'))?.querySelectorAll('[data-event]')??[]]
35
+ .find(item=>item.dataset.event===data.event);
36
+ (replacement??$('inspector')?.querySelector('[data-inspect=event]'))?.focus({preventScroll:true});
37
+ return;
38
+ }
39
+ if(data.nativeThread){void mutation(async()=>{invalidateNativeRequest();state.nativeThreadCursor=null;state.nativeThread=await api('sessions/codex/threads/'+encodeURIComponent(data.nativeThread),{timeoutMs:15000});nativeTimer=setTimeout(()=>void refreshNativeChats(),10000);},button,'Original history page opened.');return;}
40
+ if(data.session){void mutation(async()=>{state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await api('sessions/'+data.session);},button,'Conversation opened.');return;}
41
+ if(data.source){void mutation(async()=>{state.source=(await api('sources/'+encodeURIComponent(data.source))).source;},button,'Source opened.');return;}
42
+ if(data.document){void mutation(()=>loadDocuments(data.document),button,'Document opened.');return;}
43
+ if(data.page){state.docPage=Number(data.page);render();return;}
44
+ if(data.room){void mutation(()=>loadRoom(data.room),button,'Room opened.');return;}
45
+ if(data.feature){
46
+ if(!state.features||featureLimit(data.feature))return;
47
+ const feature=data.feature;
48
+ void mutation(async()=>{
49
+ state.features=await api('features',json({patch:{[feature]:!state.features.features[feature]},expectedRevision:state.features.revision}));
50
+ if(feature==='liveActivity'||feature==='activityRecording'){
51
+ if(!state.features.features.liveActivity){state.live=false;state.events=[];state.replayId=null;state.replayExpired=false;state.cursor=undefined;state.journalId=undefined;}
52
+ else state.live=true;
53
+ void refresh();
54
+ }
55
+ },button,'Feature setting saved.');return;
56
+ }
57
+ if(data.roomAction){
58
+ const kind=data.roomAction;
59
+ const payload=kind==='ack-message'||kind==='ack-artifact'?{kind:'ack',targetType:kind.slice(4),targetId:data.id,...(data.sha256?{sha256:data.sha256}:{})}:
60
+ kind==='accept'?{kind,artifactId:data.id}:{kind,taskId:data.id,revision:Number(data.revision)};
61
+ void mutation(()=>roomWrite(payload),button);return;
62
+ }
63
+ if(data.lessonAction){void mutation(()=>lessonWrite(data.id,{kind:data.lessonAction}),button);return;}
64
+ if(data.lessonFrom){state.lessonFrom=data.lessonFrom;openView('learning');return;}
65
+ if(!data.action)return;
66
+ if(data.action.startsWith('copy-')){
67
+ if(data.action==='copy-pack'&&local){
68
+ const pack=state.context;
69
+ if(!pack?.markdown)return;
70
+ void api('project-policy').then(result=>{
71
+ installPolicy(result);
72
+ if(state.context!==pack){render(true);status('Project controls changed. Build a fresh context pack.',true);return;}
73
+ return clipboard(pack.markdown);
74
+ }).catch(failure=>status(failure.message,true));
75
+ return;
76
+ }
77
+ const host=arr(state.integrations?.agents).find(item=>item.id===data.host);
78
+ const current=displayEvent();
79
+ const checkpoint=arr(state.session?.checkpoints).find(item=>item.id===data.checkpoint);
80
+ const copies={
81
+ 'copy-resume':checkpoint?JSON.stringify({tool:'session_resume',arguments:{sessionId:state.session.session.id,checkpointId:checkpoint.id,sha256:checkpoint.sha256,key:crypto.randomUUID()}},null,2):null,
82
+ 'copy-host':host?.config?.content,'copy-command':host?.command,'copy-diagnostics':state.integrations?.diagnostics,
83
+ 'copy-project-command':'shadow-brain project workspace .','copy-pack':state.context?.markdown,
84
+ 'copy-memory':state.memory?.memory?.content??arr(state.graph?.nodes).find(node=>node.id===state.picked)?.snippet,
85
+ 'copy-event':current?JSON.stringify(current,null,2):null,
86
+ };
87
+ void clipboard(copies[data.action]).catch(failure=>status(failure.message,true));return;
88
+ }
89
+ switch(data.action){
90
+ case 'managed-skill-preview':void mutation(async()=>{state.managedSkillPlan=await api('managed-skills/preview',json({id:data.id,action:data.kind}));},button,'Review the exact skill paths before applying.');break;
91
+ case 'managed-skill-cancel':state.managedSkillPlan=null;render(true);break;
92
+ case 'managed-skill-apply':void mutation(async()=>{const plan=state.managedSkillPlan;if(!plan||arr(plan.conflicts).length)return;
93
+ const result=await api('managed-skills/apply',json({id:plan.skill.id,action:plan.action,planHash:plan.planHash}));
94
+ state.managedSkillPlan=null;state.managedSkills=await api('managed-skills');delete state.errors.managedSkills;
95
+ return 'Managed skill '+result.finalState+'. '+result.hostRefreshNote;},button);break;
96
+ case 'download-example':{
97
+ const examples={
98
+ knowledge:{schemaVersion:1,kind:'knowledge',title:'Project notes',records:[{title:'Build command',content:'Run the build before release.',source:'README.md'}]},
99
+ transcript:{schemaVersion:1,kind:'transcript',title:'Review discussion',messages:[{role:'user',content:'Preserve Unicode.'},{role:'assistant',content:'The proposed constraint is to preserve Unicode.'}]},
100
+ simple:{messages:[{role:'user',content:'Preserve Unicode.'}]}
101
+ };
102
+ if(!Object.hasOwn(examples,data.example))break;
103
+ const url=URL.createObjectURL(new Blob([JSON.stringify(examples[data.example],null,2)+'\n'],{type:'application/json'}));
104
+ const link=document.createElement('a');link.href=url;link.download='shadow-brain-'+data.example+'-example.json';link.click();setTimeout(()=>URL.revokeObjectURL(url),1000);break;
105
+ }
106
+ case 'native-connect':void mutation(async()=>{invalidateNativeRequest();state.nativeConnection=await api('sessions/codex/connect',{...json({}),timeoutMs:30000});await refreshNativeChats(true);},button,'Read-only native connection opened.');break;
107
+ case 'native-disconnect':void mutation(async()=>{invalidateNativeRequest();nativeReload=false;state.nativeConnection=await api('sessions/codex/disconnect',json({}));state.nativeThreads=null;state.nativeThread=null;state.nativeListCursor=null;state.nativeThreadCursor=null;},button,'Native connection closed.');break;
108
+ case 'native-refresh':void refreshNativeChats(true);break;
109
+ case 'native-archive':invalidateNativeRequest();state.nativeArchived=!state.nativeArchived;state.nativeListCursor=null;state.nativeThreads=null;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
110
+ case 'native-next':invalidateNativeRequest();state.nativeListCursor=data.cursor;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
111
+ case 'native-first':invalidateNativeRequest();state.nativeListCursor=null;state.nativeThread=null;state.nativeThreadCursor=null;void refreshNativeChats(true);break;
112
+ case 'native-earlier':void mutation(async()=>{invalidateNativeRequest();state.nativeThreadCursor=data.cursor;state.nativeThread=await api('sessions/codex/threads/'+encodeURIComponent(state.nativeThread.thread.id)+'?cursor='+encodeURIComponent(data.cursor),{timeoutMs:15000});nativeTimer=setTimeout(()=>void refreshNativeChats(),10000);},button,'Earlier original history opened.');break;
113
+ case 'native-import':void mutation(async()=>{const result=await hubWrite('sessions/codex/threads/'+encodeURIComponent(state.nativeThread.thread.id)+'/import',{sha256:state.nativeThread.sha256,...(state.nativeThreadCursor?{cursor:state.nativeThreadCursor}:{})});state.session=result;state.sessionBefore=null;state.sessionCheckpoint=null;await refreshSessions();},button,'Original history page saved as a project snapshot.');break;
114
+ case 'session-checkpoint-open':void mutation(async()=>{state.sessionCheckpoint=(await api('sessions/'+state.session.session.id+'/checkpoints/'+data.checkpoint)).checkpoint;},button,'Checkpoint opened.');break;
115
+ case 'session-policy':state.policySelection=data.sessionPolicy;openView('setup');break;
116
+ case 'session-older':void mutation(async()=>{state.sessionBefore=data.before;await refreshSessions();},button,'Earlier messages loaded.');break;
117
+ case 'session-latest':void mutation(async()=>{state.sessionBefore=null;await refreshSessions();},button,'Latest messages loaded.');break;
118
+ case 'session-status':void mutation(async()=>{state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',{kind:'status',status:data.status,expectedRevision:state.session.session.revision});await refreshSessions();},button,'Reported status saved.');break;
119
+ case 'session-resume':void mutation(async()=>{const cp=arr(state.session.checkpoints).find(item=>item.id===data.checkpoint);if(!cp)throw new Error('Choose a saved checkpoint.');state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await hubWrite('sessions/'+state.session.session.id+'/resume',{checkpointId:cp.id,sha256:cp.sha256});await refreshSessions();},button,'New portal session created from this checkpoint.');break;
120
+ case 'import-session':void mutation(async()=>{if(!state.source)throw new Error('Choose a reviewed transcript.');state.session=await hubWrite('sessions/import',{sourceId:state.source.id});openView('sessions');await refreshSessions();},button,'Reviewed conversation snapshot opened.');break;
121
+ case 'source-evidence':void mutation(async()=>{state.evidence=await api('memory-evidence?'+new URLSearchParams({memoryId:data.memory}));if(state.view!=='knowledge')openView('knowledge');},button,'Source checked.');break;
122
+ case 'close-evidence':state.evidence=null;render(true);break;
123
+ case 'toggle-feedback':void mutation(async()=>{state.feedback=await api('project-feedback',json({kind:'toggle',enabled:!state.feedback.enabled,expectedRevision:state.feedback.revision}));},button,'Learning preference saved.');break;
124
+ case 'remove-feedback':void mutation(async()=>{state.feedback=await api('project-feedback',json({kind:'remove',id:data.feedback,expectedRevision:state.feedback.revision}));},button,'Feedback removed.');break;
125
+ case 'refresh':void refresh(true);break;
126
+ case 'refresh-room':void mutation(async()=>{await refreshHub();if(state.room)await loadRoom(state.room.room.id);},button,'Room refreshed.');break;
127
+ case 'graph':case 'trace':
128
+ state.graphMode=data.action;state.listing=false;state.pulseIds=[];render();$('main').querySelector('[data-action="'+data.action+'"]')?.focus();break;
129
+ case 'node-list':{
130
+ state.listing=!state.listing;button.setAttribute('aria-expanded',String(state.listing));
131
+ const target=$('node-list');target.hidden=!state.listing;syncGraphControls();drawGraph();if(state.listing)$('graph-search')?.focus();break;
132
+ }
133
+ case 'clear-graph-search':void findGraphMemories('');$('graph-search')?.focus();break;
134
+ case 'graph-zoom-in':if(button.getAttribute('aria-disabled')!=='true')zoomGraph(1);break;
135
+ case 'graph-zoom-out':if(button.getAttribute('aria-disabled')!=='true')zoomGraph(-1);break;
136
+ case 'graph-fit':zoomGraph('fit');break;
137
+ case 'clear-focus':state.focus=false;renderInspector();drawGraph();$('main').querySelector('[data-action=graph]')?.focus({preventScroll:true});break;
138
+ case 'pause':state.motionPaused=!state.motionPaused;state.pulseIds=[];updateOverviewLive();break;
139
+ case 'inspect-latest':state.inspector='event';renderInspector();break;
140
+ case 'live':state.replayId=null;state.replayExpired=false;renderChrome();updateOverviewLive();$('replay')?.focus({preventScroll:true});break;
141
+ case 'open-memory':void inspectApprovedMemory(data.memory).catch(failure=>status(failure.message,true));break;
142
+ case 'apply-skill':void mutation(async()=>{
143
+ if(!state.skill?.planHash||!state.skillInput)throw new Error('Preview a project skill before applying it.');
144
+ state.skill={...await api('project-skill-apply',json({...state.skillInput,expectedPlanHash:state.skill.planHash})),applied:true};
145
+ },button,'Reviewed project skill applied.');break;
146
+ case 'review-page':void mutation(async()=>{
147
+ const id=state.documents?.document?.id;
148
+ if(!id)throw new Error('Choose a document page first.');
149
+ state.documents=await hubWrite('hub/documents/'+encodeURIComponent(id)+'/review',{page:state.docPage,decision:data.decision});
150
+ return afterSave(refreshHub,refreshGraph);
151
+ },button,data.decision==='approve'?'Page approved and added to project memory.':'Page rejected.');break;
152
+ }
153
+ }
154
+ function handleSubmit(event){
155
+ const target=event.target;
156
+ if(target.id==='graph-find-form'){
157
+ event.preventDefault();
158
+ void findGraphMemories(field(new FormData(target),'query'));return;
159
+ }
160
+ const kind=target.dataset.form;
161
+ if(!kind)return;
162
+ event.preventDefault();
163
+ const form=new FormData(target,event.submitter),button=event.submitter;
164
+ const tasks={
165
+ 'policy-context':()=>saveProjectPolicy({kind:'set-context-limits',context:{maxTokens:Number(form.get('maxTokens')),maxEntries:Number(form.get('maxEntries'))}}),
166
+ 'policy-role':()=>saveProjectPolicy({kind:'set-session-role',sessionId:target.dataset.id,role:field(form,'role')||null}),
167
+ 'native-export':async()=>{const file=form.get('export');if(!(file instanceof File)||!file.size)throw new Error('Choose a native export.');if(file.size>2*1024*1024)throw new Error('Choose an export smaller than 2 MiB.');const query=new URLSearchParams({tool:field(form,'tool'),name:file.name,key:crypto.randomUUID()});state.session=await api('sessions/native?'+query,{method:'POST',body:file,headers:{'Content-Type':file.name.endsWith('.zip')?'application/zip':'application/octet-stream'},timeoutMs:15000});state.sessionBefore=null;state.sessionCheckpoint=null;await refreshSessions();},
168
+ 'session-open':async()=>{state.sessionBefore=null;state.sessionCheckpoint=null;state.session=await hubWrite('sessions',{title:field(form,'title'),goal:field(form,'goal')});await refreshSessions();},
169
+ 'session-note':async()=>{state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',{kind:'message',role:'note',text:field(form,'text'),expectedRevision:state.session.session.revision});await refreshSessions();},
170
+ 'session-checkpoint':async()=>{const input={kind:'checkpoint',summary:field(form,'summary'),expectedRevision:state.session.session.revision};for(const name of ['decisions','completed','nextSteps','evidence'])input[name]=field(form,name).split(/\r?\n/).map(item=>item.trim()).filter(Boolean);state.session=await hubWrite('sessions/'+state.session.session.id+'/actions',input);await refreshSessions();},
171
+ teach:async()=>{
172
+ state.teachDraft=field(form,'text');
173
+ const save=form.get('mode')==='save';
174
+ state.source=(await api(save?'sources/remember':'sources?name=My-notes.txt',{method:'POST',body:state.teachDraft,headers:{'Content-Type':'text/plain'},timeoutMs:30000})).source;
175
+ await afterSave(async()=>{state.sources=await api('sources');},...(save?[refreshGraph]:[]));
176
+ },
177
+ 'source-upload':async()=>{
178
+ const file=form.get('source');if(!(file instanceof File)||!file.size)throw new Error('Choose a text, Markdown or JSON file.');
179
+ if(file.size>1024*1024)throw new Error('Choose a file smaller than 1 MiB.');
180
+ state.source=(await api('sources?'+new URLSearchParams({name:file.name}),{method:'POST',body:file,headers:{'Content-Type':file.name.toLowerCase().endsWith('.json')?'application/json':'text/plain'}})).source;
181
+ state.sources=await api('sources');
182
+ },
183
+ 'source-review':async()=>{
184
+ if(!state.source)throw new Error('Choose a source first.');
185
+ const decision=field(form,'decision');
186
+ const input={itemId:target.dataset.item,decision,...(decision==='approve'?{title:field(form,'title'),text:field(form,'text'),category:field(form,'category')}: {})};
187
+ state.source=(await hubWrite('sources/'+state.source.id+'/review',input)).source;
188
+ return afterSave(async()=>{state.sources=await api('sources');},refreshGraph);
189
+ },
190
+ feedback:async()=>{
191
+ state.feedback=await api('project-feedback',json({kind:'upsert',memoryId:field(form,'memoryId'),task:field(form,'task'),rating:field(form,'rating'),reason:field(form,'reason'),expectedRevision:state.feedback.revision}));
192
+ },
193
+ context:async()=>{
194
+ const input={projectId:state.project,query:field(form,'query'),tokenBudget:Number(form.get('tokenBudget')),profile:field(form,'profile'),expandRelated:form.has('expandRelated')};
195
+ state.contextInput=input;
196
+ if(form.get('compare')==='yes'){state.comparison=await api('context-compare',json(input));state.context=state.comparison[input.profile];}
197
+ else {state.context=await api('context',json(input));state.comparison=null;}
198
+ },
199
+ upload:async()=>{
200
+ const pdf=form.get('pdf');
201
+ if(!(pdf instanceof File)||!pdf.size)throw new Error('Choose a PDF to upload.');
202
+ if(state.hub?.limits?.pdfBytes&&pdf.size>state.hub.limits.pdfBytes)throw new Error('The PDF exceeds this workspace’s upload limit.');
203
+ state.documents=await api('hub/documents?'+new URLSearchParams({name:pdf.name}),{method:'POST',body:pdf,headers:{'Content-Type':'application/pdf'},timeoutMs:30000});
204
+ state.docPage=arr(state.documents.pages)[0]?.page??1;
205
+ return afterSave(refreshHub);
206
+ },
207
+ knowledge:async()=>{
208
+ const input={title:field(form,'title'),content:field(form,'content')};
209
+ const source=field(form,'source');if(source)input.source=source;
210
+ await api('project-knowledge',json(input));return afterSave(refreshGraph);
211
+ },
212
+ skill:async()=>{
213
+ const input={requirement:field(form,'requirement'),target:field(form,'target')};
214
+ const name=field(form,'name'),knowledge=field(form,'knowledge');
215
+ if(name)input.name=name;if(knowledge)input.knowledge=knowledge;
216
+ state.skill=await api('project-skill-preview',json(input));state.skillInput=input;
217
+ },
218
+ room:async()=>{state.room=await hubWrite('hub/rooms',{goal:field(form,'goal')});return afterSave(refreshHub);},
219
+ message:async()=>{const replyTo=field(form,'replyTo');await roomWrite({kind:'message',type:field(form,'type'),text:field(form,'text'),...(replyTo?{replyTo}:{})});},
220
+ task:()=>roomWrite({kind:'task',title:field(form,'title')}),
221
+ artifact:async()=>{
222
+ const taskId=field(form,'taskId'),task=arr(state.room?.tasks).find(item=>item.id===taskId);
223
+ if(!task)throw new Error('Choose a claimed task.');
224
+ await roomWrite({kind:'artifact',taskId,revision:task.revision,path:field(form,'path')});
225
+ },
226
+ outcome:()=>{const artifactId=field(form,'artifactId');return roomWrite({kind:'outcome',taskId:field(form,'taskId'),result:field(form,'result'),check:field(form,'check'),evidence:field(form,'evidence'),...(artifactId?{artifactId}:{})});},
227
+ lesson:async()=>{const {lesson}=await hubWrite('hub/lessons',{outcomeId:field(form,'outcomeId'),title:field(form,'title'),text:field(form,'text')});if(lesson)state.hub={...state.hub,lessons:[...arr(state.hub?.lessons),lesson]};state.lessonFrom=null;return afterSave(refreshHub);},
228
+ evaluate:()=>lessonWrite(target.dataset.id,{kind:'evaluate',baseline:form.has('baseline'),candidate:form.has('candidate'),control:form.has('control'),evidence:field(form,'evidence')}),
229
+ };
230
+ const operation=tasks[kind];
231
+ if(operation)void mutation(operation,button,kind==='teach'?(form.get('mode')==='save'?'Added to project memory. Try a related question in Context.':'Notes organized. Review each part before saving.'):kind==='source-upload'?'Source ready for review.':kind==='source-review'?'Review saved.':kind==='upload'?'PDF intake recorded.':kind==='context'?'Context pack assembled.':'Saved.');
232
+ }
233
+ `;
234
+ //# sourceMappingURL=brain-hub-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-hub-actions.js","sourceRoot":"","sources":["../../src/dashboard/brain-hub-actions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwO1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const BRAIN_HUB_AGENT_DOCK: string;
2
+ //# sourceMappingURL=brain-hub-agent-dock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-hub-agent-dock.d.ts","sourceRoot":"","sources":["../../src/dashboard/brain-hub-agent-dock.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,QA4PhC,CAAC"}