@productbrain/cli 0.1.0-beta.7 → 0.1.0-beta.70

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 (600) hide show
  1. package/README.md +98 -30
  2. package/dist/__tests__/adapters.test.d.ts +2 -0
  3. package/dist/__tests__/adapters.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapters.test.js +417 -0
  5. package/dist/__tests__/adapters.test.js.map +1 -0
  6. package/dist/__tests__/audit.test.d.ts +2 -0
  7. package/dist/__tests__/audit.test.d.ts.map +1 -0
  8. package/dist/__tests__/audit.test.js +394 -0
  9. package/dist/__tests__/audit.test.js.map +1 -0
  10. package/dist/__tests__/batch-transformations.test.d.ts +2 -0
  11. package/dist/__tests__/batch-transformations.test.d.ts.map +1 -0
  12. package/dist/__tests__/batch-transformations.test.js +263 -0
  13. package/dist/__tests__/batch-transformations.test.js.map +1 -0
  14. package/dist/__tests__/capture.test.d.ts +2 -0
  15. package/dist/__tests__/capture.test.d.ts.map +1 -0
  16. package/dist/__tests__/capture.test.js +377 -0
  17. package/dist/__tests__/capture.test.js.map +1 -0
  18. package/dist/__tests__/config.test.d.ts +8 -0
  19. package/dist/__tests__/config.test.d.ts.map +1 -0
  20. package/dist/__tests__/config.test.js +166 -0
  21. package/dist/__tests__/config.test.js.map +1 -0
  22. package/dist/__tests__/constants.test.d.ts +2 -0
  23. package/dist/__tests__/constants.test.d.ts.map +1 -0
  24. package/dist/__tests__/constants.test.js +141 -0
  25. package/dist/__tests__/constants.test.js.map +1 -0
  26. package/dist/__tests__/constellation.test.d.ts +2 -0
  27. package/dist/__tests__/constellation.test.d.ts.map +1 -0
  28. package/dist/__tests__/constellation.test.js +254 -0
  29. package/dist/__tests__/constellation.test.js.map +1 -0
  30. package/dist/__tests__/context-strategy.test.d.ts +2 -0
  31. package/dist/__tests__/context-strategy.test.d.ts.map +1 -0
  32. package/dist/__tests__/context-strategy.test.js +79 -0
  33. package/dist/__tests__/context-strategy.test.js.map +1 -0
  34. package/dist/__tests__/errors.test.d.ts +2 -0
  35. package/dist/__tests__/errors.test.d.ts.map +1 -0
  36. package/dist/__tests__/errors.test.js +117 -0
  37. package/dist/__tests__/errors.test.js.map +1 -0
  38. package/dist/__tests__/experiment.test.d.ts +6 -0
  39. package/dist/__tests__/experiment.test.d.ts.map +1 -0
  40. package/dist/__tests__/experiment.test.js +69 -0
  41. package/dist/__tests__/experiment.test.js.map +1 -0
  42. package/dist/__tests__/fields.test.d.ts +2 -0
  43. package/dist/__tests__/fields.test.d.ts.map +1 -0
  44. package/dist/__tests__/fields.test.js +238 -0
  45. package/dist/__tests__/fields.test.js.map +1 -0
  46. package/dist/__tests__/glossary.test.d.ts +2 -0
  47. package/dist/__tests__/glossary.test.d.ts.map +1 -0
  48. package/dist/__tests__/glossary.test.js +32 -0
  49. package/dist/__tests__/glossary.test.js.map +1 -0
  50. package/dist/__tests__/handshake.test.d.ts +2 -0
  51. package/dist/__tests__/handshake.test.d.ts.map +1 -0
  52. package/dist/__tests__/handshake.test.js +196 -0
  53. package/dist/__tests__/handshake.test.js.map +1 -0
  54. package/dist/__tests__/ingest.test.js +98 -0
  55. package/dist/__tests__/ingest.test.js.map +1 -1
  56. package/dist/__tests__/init.test.d.ts +7 -0
  57. package/dist/__tests__/init.test.d.ts.map +1 -0
  58. package/dist/__tests__/init.test.js +146 -0
  59. package/dist/__tests__/init.test.js.map +1 -0
  60. package/dist/__tests__/login.test.d.ts +2 -0
  61. package/dist/__tests__/login.test.d.ts.map +1 -0
  62. package/dist/__tests__/login.test.js +167 -0
  63. package/dist/__tests__/login.test.js.map +1 -0
  64. package/dist/__tests__/onboarding-path-b.test.d.ts +2 -0
  65. package/dist/__tests__/onboarding-path-b.test.d.ts.map +1 -0
  66. package/dist/__tests__/onboarding-path-b.test.js +46 -0
  67. package/dist/__tests__/onboarding-path-b.test.js.map +1 -0
  68. package/dist/__tests__/onboarding.test.d.ts +6 -0
  69. package/dist/__tests__/onboarding.test.d.ts.map +1 -0
  70. package/dist/__tests__/onboarding.test.js +347 -0
  71. package/dist/__tests__/onboarding.test.js.map +1 -0
  72. package/dist/__tests__/orient.test.d.ts +2 -0
  73. package/dist/__tests__/orient.test.d.ts.map +1 -0
  74. package/dist/__tests__/orient.test.js +143 -0
  75. package/dist/__tests__/orient.test.js.map +1 -0
  76. package/dist/__tests__/profiles.test.d.ts +2 -0
  77. package/dist/__tests__/profiles.test.d.ts.map +1 -0
  78. package/dist/__tests__/profiles.test.js +168 -0
  79. package/dist/__tests__/profiles.test.js.map +1 -0
  80. package/dist/__tests__/promote.test.d.ts +2 -0
  81. package/dist/__tests__/promote.test.d.ts.map +1 -0
  82. package/dist/__tests__/promote.test.js +161 -0
  83. package/dist/__tests__/promote.test.js.map +1 -0
  84. package/dist/__tests__/prompts.test.d.ts +6 -0
  85. package/dist/__tests__/prompts.test.d.ts.map +1 -0
  86. package/dist/__tests__/prompts.test.js +146 -0
  87. package/dist/__tests__/prompts.test.js.map +1 -0
  88. package/dist/__tests__/proposals.test.d.ts +2 -0
  89. package/dist/__tests__/proposals.test.d.ts.map +1 -0
  90. package/dist/__tests__/proposals.test.js +167 -0
  91. package/dist/__tests__/proposals.test.js.map +1 -0
  92. package/dist/__tests__/relate.test.d.ts +2 -0
  93. package/dist/__tests__/relate.test.d.ts.map +1 -0
  94. package/dist/__tests__/relate.test.js +103 -0
  95. package/dist/__tests__/relate.test.js.map +1 -0
  96. package/dist/__tests__/repo-detect.test.d.ts +2 -0
  97. package/dist/__tests__/repo-detect.test.d.ts.map +1 -0
  98. package/dist/__tests__/repo-detect.test.js +215 -0
  99. package/dist/__tests__/repo-detect.test.js.map +1 -0
  100. package/dist/__tests__/runner.test.d.ts +2 -0
  101. package/dist/__tests__/runner.test.d.ts.map +1 -0
  102. package/dist/__tests__/runner.test.js +219 -0
  103. package/dist/__tests__/runner.test.js.map +1 -0
  104. package/dist/__tests__/session-touch.test.d.ts +2 -0
  105. package/dist/__tests__/session-touch.test.d.ts.map +1 -0
  106. package/dist/__tests__/session-touch.test.js +134 -0
  107. package/dist/__tests__/session-touch.test.js.map +1 -0
  108. package/dist/__tests__/session.test.d.ts +2 -0
  109. package/dist/__tests__/session.test.d.ts.map +1 -0
  110. package/dist/__tests__/session.test.js +46 -0
  111. package/dist/__tests__/session.test.js.map +1 -0
  112. package/dist/__tests__/setup.test.d.ts +2 -0
  113. package/dist/__tests__/setup.test.d.ts.map +1 -0
  114. package/dist/__tests__/setup.test.js +141 -0
  115. package/dist/__tests__/setup.test.js.map +1 -0
  116. package/dist/__tests__/spinner-labels.test.d.ts +2 -0
  117. package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
  118. package/dist/__tests__/spinner-labels.test.js +23 -0
  119. package/dist/__tests__/spinner-labels.test.js.map +1 -0
  120. package/dist/__tests__/strip.test.d.ts +2 -0
  121. package/dist/__tests__/strip.test.d.ts.map +1 -0
  122. package/dist/__tests__/strip.test.js +136 -0
  123. package/dist/__tests__/strip.test.js.map +1 -0
  124. package/dist/__tests__/surface-profiles.test.d.ts +2 -0
  125. package/dist/__tests__/surface-profiles.test.d.ts.map +1 -0
  126. package/dist/__tests__/surface-profiles.test.js +233 -0
  127. package/dist/__tests__/surface-profiles.test.js.map +1 -0
  128. package/dist/__tests__/update.test.d.ts +2 -0
  129. package/dist/__tests__/update.test.d.ts.map +1 -0
  130. package/dist/__tests__/update.test.js +228 -0
  131. package/dist/__tests__/update.test.js.map +1 -0
  132. package/dist/__tests__/workspace.test.d.ts +2 -0
  133. package/dist/__tests__/workspace.test.d.ts.map +1 -0
  134. package/dist/__tests__/workspace.test.js +308 -0
  135. package/dist/__tests__/workspace.test.js.map +1 -0
  136. package/dist/commands/accept.d.ts +18 -0
  137. package/dist/commands/accept.d.ts.map +1 -0
  138. package/dist/commands/accept.js +76 -0
  139. package/dist/commands/accept.js.map +1 -0
  140. package/dist/commands/admin/cockpit.d.ts +88 -0
  141. package/dist/commands/admin/cockpit.d.ts.map +1 -0
  142. package/dist/commands/admin/cockpit.js +409 -0
  143. package/dist/commands/admin/cockpit.js.map +1 -0
  144. package/dist/commands/admin/index.d.ts +21 -0
  145. package/dist/commands/admin/index.d.ts.map +1 -0
  146. package/dist/commands/admin/index.js +254 -0
  147. package/dist/commands/admin/index.js.map +1 -0
  148. package/dist/commands/admin/inspect.d.ts +21 -0
  149. package/dist/commands/admin/inspect.d.ts.map +1 -0
  150. package/dist/commands/admin/inspect.js +536 -0
  151. package/dist/commands/admin/inspect.js.map +1 -0
  152. package/dist/commands/admin/inspect.test.d.ts +7 -0
  153. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  154. package/dist/commands/admin/inspect.test.js +71 -0
  155. package/dist/commands/admin/inspect.test.js.map +1 -0
  156. package/dist/commands/admin/seed.d.ts +32 -0
  157. package/dist/commands/admin/seed.d.ts.map +1 -0
  158. package/dist/commands/admin/seed.js +527 -0
  159. package/dist/commands/admin/seed.js.map +1 -0
  160. package/dist/commands/admin/seed.test.d.ts +6 -0
  161. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  162. package/dist/commands/admin/seed.test.js +65 -0
  163. package/dist/commands/admin/seed.test.js.map +1 -0
  164. package/dist/commands/audit.d.ts +25 -0
  165. package/dist/commands/audit.d.ts.map +1 -0
  166. package/dist/commands/audit.js +188 -0
  167. package/dist/commands/audit.js.map +1 -0
  168. package/dist/commands/brand-pack.d.ts +2 -0
  169. package/dist/commands/brand-pack.d.ts.map +1 -0
  170. package/dist/commands/brand-pack.js +25 -0
  171. package/dist/commands/brand-pack.js.map +1 -0
  172. package/dist/commands/brief.d.ts +28 -0
  173. package/dist/commands/brief.d.ts.map +1 -0
  174. package/dist/commands/brief.js +75 -0
  175. package/dist/commands/brief.js.map +1 -0
  176. package/dist/commands/capture.d.ts +30 -0
  177. package/dist/commands/capture.d.ts.map +1 -0
  178. package/dist/commands/capture.js +385 -0
  179. package/dist/commands/capture.js.map +1 -0
  180. package/dist/commands/chain-walk.d.ts +14 -0
  181. package/dist/commands/chain-walk.d.ts.map +1 -0
  182. package/dist/commands/chain-walk.js +38 -0
  183. package/dist/commands/chain-walk.js.map +1 -0
  184. package/dist/commands/changes.d.ts +11 -0
  185. package/dist/commands/changes.d.ts.map +1 -0
  186. package/dist/commands/changes.js +46 -0
  187. package/dist/commands/changes.js.map +1 -0
  188. package/dist/commands/codex-prep.d.ts +12 -0
  189. package/dist/commands/codex-prep.d.ts.map +1 -0
  190. package/dist/commands/codex-prep.js +122 -0
  191. package/dist/commands/codex-prep.js.map +1 -0
  192. package/dist/commands/collections.d.ts +22 -0
  193. package/dist/commands/collections.d.ts.map +1 -0
  194. package/dist/commands/collections.js +77 -0
  195. package/dist/commands/collections.js.map +1 -0
  196. package/dist/commands/connect-integration.test.d.ts +7 -0
  197. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  198. package/dist/commands/connect-integration.test.js +200 -0
  199. package/dist/commands/connect-integration.test.js.map +1 -0
  200. package/dist/commands/connect.d.ts +21 -0
  201. package/dist/commands/connect.d.ts.map +1 -0
  202. package/dist/commands/connect.js +279 -0
  203. package/dist/commands/connect.js.map +1 -0
  204. package/dist/commands/connect.test.d.ts +6 -0
  205. package/dist/commands/connect.test.d.ts.map +1 -0
  206. package/dist/commands/connect.test.js +230 -0
  207. package/dist/commands/connect.test.js.map +1 -0
  208. package/dist/commands/constellation.d.ts +11 -0
  209. package/dist/commands/constellation.d.ts.map +1 -0
  210. package/dist/commands/constellation.js +33 -0
  211. package/dist/commands/constellation.js.map +1 -0
  212. package/dist/commands/context.d.ts +2 -1
  213. package/dist/commands/context.d.ts.map +1 -1
  214. package/dist/commands/context.js +20 -9
  215. package/dist/commands/context.js.map +1 -1
  216. package/dist/commands/cross-cut.d.ts +11 -0
  217. package/dist/commands/cross-cut.d.ts.map +1 -0
  218. package/dist/commands/cross-cut.js +23 -0
  219. package/dist/commands/cross-cut.js.map +1 -0
  220. package/dist/commands/doctor.d.ts +18 -0
  221. package/dist/commands/doctor.d.ts.map +1 -0
  222. package/dist/commands/doctor.js +232 -0
  223. package/dist/commands/doctor.js.map +1 -0
  224. package/dist/commands/doctor.test.d.ts +8 -0
  225. package/dist/commands/doctor.test.d.ts.map +1 -0
  226. package/dist/commands/doctor.test.js +311 -0
  227. package/dist/commands/doctor.test.js.map +1 -0
  228. package/dist/commands/fields.d.ts +9 -0
  229. package/dist/commands/fields.d.ts.map +1 -0
  230. package/dist/commands/fields.js +30 -0
  231. package/dist/commands/fields.js.map +1 -0
  232. package/dist/commands/get.d.ts +8 -1
  233. package/dist/commands/get.d.ts.map +1 -1
  234. package/dist/commands/get.js +60 -7
  235. package/dist/commands/get.js.map +1 -1
  236. package/dist/commands/handshake.d.ts +28 -0
  237. package/dist/commands/handshake.d.ts.map +1 -0
  238. package/dist/commands/handshake.js +617 -0
  239. package/dist/commands/handshake.js.map +1 -0
  240. package/dist/commands/ingest.d.ts +8 -2
  241. package/dist/commands/ingest.d.ts.map +1 -1
  242. package/dist/commands/ingest.js +148 -25
  243. package/dist/commands/ingest.js.map +1 -1
  244. package/dist/commands/init.d.ts +14 -0
  245. package/dist/commands/init.d.ts.map +1 -0
  246. package/dist/commands/init.js +117 -0
  247. package/dist/commands/init.js.map +1 -0
  248. package/dist/commands/login.d.ts +4 -0
  249. package/dist/commands/login.d.ts.map +1 -1
  250. package/dist/commands/login.js +101 -38
  251. package/dist/commands/login.js.map +1 -1
  252. package/dist/commands/orient.d.ts +107 -1
  253. package/dist/commands/orient.d.ts.map +1 -1
  254. package/dist/commands/orient.js +24 -8
  255. package/dist/commands/orient.js.map +1 -1
  256. package/dist/commands/profile.d.ts +24 -0
  257. package/dist/commands/profile.d.ts.map +1 -0
  258. package/dist/commands/profile.js +82 -0
  259. package/dist/commands/profile.js.map +1 -0
  260. package/dist/commands/promote.d.ts +12 -0
  261. package/dist/commands/promote.d.ts.map +1 -0
  262. package/dist/commands/promote.js +90 -0
  263. package/dist/commands/promote.js.map +1 -0
  264. package/dist/commands/proposals.d.ts +9 -0
  265. package/dist/commands/proposals.d.ts.map +1 -0
  266. package/dist/commands/proposals.js +24 -0
  267. package/dist/commands/proposals.js.map +1 -0
  268. package/dist/commands/reject.d.ts +14 -0
  269. package/dist/commands/reject.d.ts.map +1 -0
  270. package/dist/commands/reject.js +43 -0
  271. package/dist/commands/reject.js.map +1 -0
  272. package/dist/commands/relate.d.ts +16 -0
  273. package/dist/commands/relate.d.ts.map +1 -0
  274. package/dist/commands/relate.js +98 -0
  275. package/dist/commands/relate.js.map +1 -0
  276. package/dist/commands/search.d.ts +1 -0
  277. package/dist/commands/search.d.ts.map +1 -1
  278. package/dist/commands/search.js +5 -3
  279. package/dist/commands/search.js.map +1 -1
  280. package/dist/commands/session.d.ts +20 -0
  281. package/dist/commands/session.d.ts.map +1 -0
  282. package/dist/commands/session.js +148 -0
  283. package/dist/commands/session.js.map +1 -0
  284. package/dist/commands/setup.d.ts +15 -0
  285. package/dist/commands/setup.d.ts.map +1 -0
  286. package/dist/commands/setup.js +168 -0
  287. package/dist/commands/setup.js.map +1 -0
  288. package/dist/commands/update.d.ts +17 -0
  289. package/dist/commands/update.d.ts.map +1 -0
  290. package/dist/commands/update.js +178 -0
  291. package/dist/commands/update.js.map +1 -0
  292. package/dist/commands/verify.d.ts +13 -0
  293. package/dist/commands/verify.d.ts.map +1 -0
  294. package/dist/commands/verify.js +49 -0
  295. package/dist/commands/verify.js.map +1 -0
  296. package/dist/commands/workspace.d.ts +41 -0
  297. package/dist/commands/workspace.d.ts.map +1 -0
  298. package/dist/commands/workspace.js +239 -0
  299. package/dist/commands/workspace.js.map +1 -0
  300. package/dist/formatters/audit.d.ts +46 -0
  301. package/dist/formatters/audit.d.ts.map +1 -0
  302. package/dist/formatters/audit.js +81 -0
  303. package/dist/formatters/audit.js.map +1 -0
  304. package/dist/formatters/brief.d.ts +112 -0
  305. package/dist/formatters/brief.d.ts.map +1 -0
  306. package/dist/formatters/brief.js +179 -0
  307. package/dist/formatters/brief.js.map +1 -0
  308. package/dist/formatters/capture.d.ts +48 -0
  309. package/dist/formatters/capture.d.ts.map +1 -0
  310. package/dist/formatters/capture.js +77 -0
  311. package/dist/formatters/capture.js.map +1 -0
  312. package/dist/formatters/chain-walk.d.ts +33 -0
  313. package/dist/formatters/chain-walk.d.ts.map +1 -0
  314. package/dist/formatters/chain-walk.js +54 -0
  315. package/dist/formatters/chain-walk.js.map +1 -0
  316. package/dist/formatters/changes.d.ts +25 -0
  317. package/dist/formatters/changes.d.ts.map +1 -0
  318. package/dist/formatters/changes.js +60 -0
  319. package/dist/formatters/changes.js.map +1 -0
  320. package/dist/formatters/collections.d.ts +40 -0
  321. package/dist/formatters/collections.d.ts.map +1 -0
  322. package/dist/formatters/collections.js +93 -0
  323. package/dist/formatters/collections.js.map +1 -0
  324. package/dist/formatters/constellation.d.ts +34 -0
  325. package/dist/formatters/constellation.d.ts.map +1 -0
  326. package/dist/formatters/constellation.js +38 -0
  327. package/dist/formatters/constellation.js.map +1 -0
  328. package/dist/formatters/cross-cut.d.ts +21 -0
  329. package/dist/formatters/cross-cut.d.ts.map +1 -0
  330. package/dist/formatters/cross-cut.js +32 -0
  331. package/dist/formatters/cross-cut.js.map +1 -0
  332. package/dist/formatters/entry.d.ts +11 -4
  333. package/dist/formatters/entry.d.ts.map +1 -1
  334. package/dist/formatters/entry.js +24 -8
  335. package/dist/formatters/entry.js.map +1 -1
  336. package/dist/formatters/fields.d.ts +32 -0
  337. package/dist/formatters/fields.d.ts.map +1 -0
  338. package/dist/formatters/fields.js +49 -0
  339. package/dist/formatters/fields.js.map +1 -0
  340. package/dist/formatters/handshake.d.ts +24 -0
  341. package/dist/formatters/handshake.d.ts.map +1 -0
  342. package/dist/formatters/handshake.js +69 -0
  343. package/dist/formatters/handshake.js.map +1 -0
  344. package/dist/formatters/orient.d.ts +104 -1
  345. package/dist/formatters/orient.d.ts.map +1 -1
  346. package/dist/formatters/orient.js +140 -17
  347. package/dist/formatters/orient.js.map +1 -1
  348. package/dist/formatters/promote.d.ts +30 -0
  349. package/dist/formatters/promote.d.ts.map +1 -0
  350. package/dist/formatters/promote.js +39 -0
  351. package/dist/formatters/promote.js.map +1 -0
  352. package/dist/formatters/proposals.d.ts +45 -0
  353. package/dist/formatters/proposals.d.ts.map +1 -0
  354. package/dist/formatters/proposals.js +62 -0
  355. package/dist/formatters/proposals.js.map +1 -0
  356. package/dist/formatters/relate.d.ts +14 -0
  357. package/dist/formatters/relate.d.ts.map +1 -0
  358. package/dist/formatters/relate.js +16 -0
  359. package/dist/formatters/relate.js.map +1 -0
  360. package/dist/formatters/search.d.ts +0 -4
  361. package/dist/formatters/search.d.ts.map +1 -1
  362. package/dist/formatters/search.js +4 -1
  363. package/dist/formatters/search.js.map +1 -1
  364. package/dist/formatters/session.d.ts +11 -0
  365. package/dist/formatters/session.d.ts.map +1 -0
  366. package/dist/formatters/session.js +53 -0
  367. package/dist/formatters/session.js.map +1 -0
  368. package/dist/formatters/update.d.ts +17 -0
  369. package/dist/formatters/update.d.ts.map +1 -0
  370. package/dist/formatters/update.js +45 -0
  371. package/dist/formatters/update.js.map +1 -0
  372. package/dist/formatters/verify.d.ts +11 -0
  373. package/dist/formatters/verify.d.ts.map +1 -0
  374. package/dist/formatters/verify.js +11 -0
  375. package/dist/formatters/verify.js.map +1 -0
  376. package/dist/generators/__tests__/surface-profiles.test.d.ts +2 -0
  377. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +1 -0
  378. package/dist/generators/__tests__/surface-profiles.test.js +89 -0
  379. package/dist/generators/__tests__/surface-profiles.test.js.map +1 -0
  380. package/dist/generators/adapters.d.ts +44 -0
  381. package/dist/generators/adapters.d.ts.map +1 -0
  382. package/dist/generators/adapters.js +290 -0
  383. package/dist/generators/adapters.js.map +1 -0
  384. package/dist/generators/adapters.test.d.ts +2 -0
  385. package/dist/generators/adapters.test.d.ts.map +1 -0
  386. package/dist/generators/adapters.test.js +27 -0
  387. package/dist/generators/adapters.test.js.map +1 -0
  388. package/dist/generators/archetypes.d.ts +52 -0
  389. package/dist/generators/archetypes.d.ts.map +1 -0
  390. package/dist/generators/archetypes.js +153 -0
  391. package/dist/generators/archetypes.js.map +1 -0
  392. package/dist/generators/archetypes.test.d.ts +2 -0
  393. package/dist/generators/archetypes.test.d.ts.map +1 -0
  394. package/dist/generators/archetypes.test.js +237 -0
  395. package/dist/generators/archetypes.test.js.map +1 -0
  396. package/dist/generators/briefing-md.d.ts +8 -0
  397. package/dist/generators/briefing-md.d.ts.map +1 -0
  398. package/dist/generators/briefing-md.js +51 -0
  399. package/dist/generators/briefing-md.js.map +1 -0
  400. package/dist/generators/chain-classifier.d.ts +49 -0
  401. package/dist/generators/chain-classifier.d.ts.map +1 -0
  402. package/dist/generators/chain-classifier.js +180 -0
  403. package/dist/generators/chain-classifier.js.map +1 -0
  404. package/dist/generators/chain-classifier.test.d.ts +2 -0
  405. package/dist/generators/chain-classifier.test.d.ts.map +1 -0
  406. package/dist/generators/chain-classifier.test.js +257 -0
  407. package/dist/generators/chain-classifier.test.js.map +1 -0
  408. package/dist/generators/chain-rules.d.ts +42 -0
  409. package/dist/generators/chain-rules.d.ts.map +1 -0
  410. package/dist/generators/chain-rules.js +144 -0
  411. package/dist/generators/chain-rules.js.map +1 -0
  412. package/dist/generators/chain-rules.test.d.ts +2 -0
  413. package/dist/generators/chain-rules.test.d.ts.map +1 -0
  414. package/dist/generators/chain-rules.test.js +179 -0
  415. package/dist/generators/chain-rules.test.js.map +1 -0
  416. package/dist/generators/context-md.d.ts +8 -0
  417. package/dist/generators/context-md.d.ts.map +1 -0
  418. package/dist/generators/context-md.js +134 -0
  419. package/dist/generators/context-md.js.map +1 -0
  420. package/dist/generators/handshake-diff.d.ts +67 -0
  421. package/dist/generators/handshake-diff.d.ts.map +1 -0
  422. package/dist/generators/handshake-diff.js +183 -0
  423. package/dist/generators/handshake-diff.js.map +1 -0
  424. package/dist/generators/handshake-diff.test.d.ts +2 -0
  425. package/dist/generators/handshake-diff.test.d.ts.map +1 -0
  426. package/dist/generators/handshake-diff.test.js +264 -0
  427. package/dist/generators/handshake-diff.test.js.map +1 -0
  428. package/dist/generators/portable-knowledge.d.ts +143 -0
  429. package/dist/generators/portable-knowledge.d.ts.map +1 -0
  430. package/dist/generators/portable-knowledge.js +504 -0
  431. package/dist/generators/portable-knowledge.js.map +1 -0
  432. package/dist/generators/portable-knowledge.test.d.ts +2 -0
  433. package/dist/generators/portable-knowledge.test.d.ts.map +1 -0
  434. package/dist/generators/portable-knowledge.test.js +927 -0
  435. package/dist/generators/portable-knowledge.test.js.map +1 -0
  436. package/dist/generators/surface-profiles.d.ts +49 -0
  437. package/dist/generators/surface-profiles.d.ts.map +1 -0
  438. package/dist/generators/surface-profiles.js +98 -0
  439. package/dist/generators/surface-profiles.js.map +1 -0
  440. package/dist/index.d.ts +3 -2
  441. package/dist/index.d.ts.map +1 -1
  442. package/dist/index.js +642 -37
  443. package/dist/index.js.map +1 -1
  444. package/dist/lib/activation.d.ts +28 -0
  445. package/dist/lib/activation.d.ts.map +1 -0
  446. package/dist/lib/activation.js +57 -0
  447. package/dist/lib/activation.js.map +1 -0
  448. package/dist/lib/activation.test.d.ts +6 -0
  449. package/dist/lib/activation.test.d.ts.map +1 -0
  450. package/dist/lib/activation.test.js +121 -0
  451. package/dist/lib/activation.test.js.map +1 -0
  452. package/dist/lib/client.d.ts +61 -0
  453. package/dist/lib/client.d.ts.map +1 -1
  454. package/dist/lib/client.js +258 -12
  455. package/dist/lib/client.js.map +1 -1
  456. package/dist/lib/config.d.ts +84 -4
  457. package/dist/lib/config.d.ts.map +1 -1
  458. package/dist/lib/config.js +322 -42
  459. package/dist/lib/config.js.map +1 -1
  460. package/dist/lib/constants.d.ts +42 -0
  461. package/dist/lib/constants.d.ts.map +1 -0
  462. package/dist/lib/constants.js +76 -0
  463. package/dist/lib/constants.js.map +1 -0
  464. package/dist/lib/conversation-engine.d.ts +45 -0
  465. package/dist/lib/conversation-engine.d.ts.map +1 -0
  466. package/dist/lib/conversation-engine.js +112 -0
  467. package/dist/lib/conversation-engine.js.map +1 -0
  468. package/dist/lib/conversation-phases.d.ts +59 -0
  469. package/dist/lib/conversation-phases.d.ts.map +1 -0
  470. package/dist/lib/conversation-phases.js +11 -0
  471. package/dist/lib/conversation-phases.js.map +1 -0
  472. package/dist/lib/conversation-signals.d.ts +30 -0
  473. package/dist/lib/conversation-signals.d.ts.map +1 -0
  474. package/dist/lib/conversation-signals.js +64 -0
  475. package/dist/lib/conversation-signals.js.map +1 -0
  476. package/dist/lib/deployment.d.ts +23 -0
  477. package/dist/lib/deployment.d.ts.map +1 -0
  478. package/dist/lib/deployment.js +78 -0
  479. package/dist/lib/deployment.js.map +1 -0
  480. package/dist/lib/deployment.test.d.ts +5 -0
  481. package/dist/lib/deployment.test.d.ts.map +1 -0
  482. package/dist/lib/deployment.test.js +54 -0
  483. package/dist/lib/deployment.test.js.map +1 -0
  484. package/dist/lib/errors.d.ts +58 -0
  485. package/dist/lib/errors.d.ts.map +1 -0
  486. package/dist/lib/errors.js +67 -0
  487. package/dist/lib/errors.js.map +1 -0
  488. package/dist/lib/experiment.d.ts +18 -0
  489. package/dist/lib/experiment.d.ts.map +1 -0
  490. package/dist/lib/experiment.js +28 -0
  491. package/dist/lib/experiment.js.map +1 -0
  492. package/dist/lib/format.d.ts +10 -0
  493. package/dist/lib/format.d.ts.map +1 -0
  494. package/dist/lib/format.js +27 -0
  495. package/dist/lib/format.js.map +1 -0
  496. package/dist/lib/glossary.d.ts +19 -0
  497. package/dist/lib/glossary.d.ts.map +1 -0
  498. package/dist/lib/glossary.js +53 -0
  499. package/dist/lib/glossary.js.map +1 -0
  500. package/dist/lib/onboarding-path-b.d.ts +10 -0
  501. package/dist/lib/onboarding-path-b.d.ts.map +1 -0
  502. package/dist/lib/onboarding-path-b.js +214 -0
  503. package/dist/lib/onboarding-path-b.js.map +1 -0
  504. package/dist/lib/onboarding-phases.d.ts +9 -0
  505. package/dist/lib/onboarding-phases.d.ts.map +1 -0
  506. package/dist/lib/onboarding-phases.js +120 -0
  507. package/dist/lib/onboarding-phases.js.map +1 -0
  508. package/dist/lib/onboarding-shared.d.ts +81 -0
  509. package/dist/lib/onboarding-shared.d.ts.map +1 -0
  510. package/dist/lib/onboarding-shared.js +190 -0
  511. package/dist/lib/onboarding-shared.js.map +1 -0
  512. package/dist/lib/onboarding-topics.d.ts +27 -0
  513. package/dist/lib/onboarding-topics.d.ts.map +1 -0
  514. package/dist/lib/onboarding-topics.js +57 -0
  515. package/dist/lib/onboarding-topics.js.map +1 -0
  516. package/dist/lib/onboarding.d.ts +17 -0
  517. package/dist/lib/onboarding.d.ts.map +1 -0
  518. package/dist/lib/onboarding.js +350 -0
  519. package/dist/lib/onboarding.js.map +1 -0
  520. package/dist/lib/profiles.d.ts +39 -0
  521. package/dist/lib/profiles.d.ts.map +1 -0
  522. package/dist/lib/profiles.js +185 -0
  523. package/dist/lib/profiles.js.map +1 -0
  524. package/dist/lib/prompts.d.ts +65 -0
  525. package/dist/lib/prompts.d.ts.map +1 -0
  526. package/dist/lib/prompts.js +132 -0
  527. package/dist/lib/prompts.js.map +1 -0
  528. package/dist/lib/repo-detect.d.ts +33 -0
  529. package/dist/lib/repo-detect.d.ts.map +1 -0
  530. package/dist/lib/repo-detect.js +83 -0
  531. package/dist/lib/repo-detect.js.map +1 -0
  532. package/dist/lib/runner.d.ts +33 -0
  533. package/dist/lib/runner.d.ts.map +1 -0
  534. package/dist/lib/runner.js +79 -0
  535. package/dist/lib/runner.js.map +1 -0
  536. package/dist/lib/session.d.ts +17 -0
  537. package/dist/lib/session.d.ts.map +1 -0
  538. package/dist/lib/session.js +43 -0
  539. package/dist/lib/session.js.map +1 -0
  540. package/dist/lib/spinner.d.ts +27 -0
  541. package/dist/lib/spinner.d.ts.map +1 -0
  542. package/dist/lib/spinner.js +76 -0
  543. package/dist/lib/spinner.js.map +1 -0
  544. package/dist/lib/spinner.test.d.ts +2 -0
  545. package/dist/lib/spinner.test.d.ts.map +1 -0
  546. package/dist/lib/spinner.test.js +39 -0
  547. package/dist/lib/spinner.test.js.map +1 -0
  548. package/dist/lib/strip.d.ts +12 -0
  549. package/dist/lib/strip.d.ts.map +1 -0
  550. package/dist/lib/strip.js +41 -0
  551. package/dist/lib/strip.js.map +1 -0
  552. package/dist/lib/style.d.ts +94 -0
  553. package/dist/lib/style.d.ts.map +1 -0
  554. package/dist/lib/style.js +167 -0
  555. package/dist/lib/style.js.map +1 -0
  556. package/dist/lib/style.test.d.ts +7 -0
  557. package/dist/lib/style.test.d.ts.map +1 -0
  558. package/dist/lib/style.test.js +263 -0
  559. package/dist/lib/style.test.js.map +1 -0
  560. package/dist/lib/telemetry.d.ts +15 -0
  561. package/dist/lib/telemetry.d.ts.map +1 -0
  562. package/dist/lib/telemetry.js +47 -0
  563. package/dist/lib/telemetry.js.map +1 -0
  564. package/dist/lib/tokenConstants.d.ts +17 -0
  565. package/dist/lib/tokenConstants.d.ts.map +1 -0
  566. package/dist/lib/tokenConstants.js +17 -0
  567. package/dist/lib/tokenConstants.js.map +1 -0
  568. package/dist/lib/wizard-surfaces.d.ts +47 -0
  569. package/dist/lib/wizard-surfaces.d.ts.map +1 -0
  570. package/dist/lib/wizard-surfaces.js +176 -0
  571. package/dist/lib/wizard-surfaces.js.map +1 -0
  572. package/dist/lib/wizard-surfaces.test.d.ts +2 -0
  573. package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
  574. package/dist/lib/wizard-surfaces.test.js +127 -0
  575. package/dist/lib/wizard-surfaces.test.js.map +1 -0
  576. package/dist/lib/wizard-trust.d.ts +31 -0
  577. package/dist/lib/wizard-trust.d.ts.map +1 -0
  578. package/dist/lib/wizard-trust.js +66 -0
  579. package/dist/lib/wizard-trust.js.map +1 -0
  580. package/dist/lib/wizard-trust.test.d.ts +2 -0
  581. package/dist/lib/wizard-trust.test.d.ts.map +1 -0
  582. package/dist/lib/wizard-trust.test.js +32 -0
  583. package/dist/lib/wizard-trust.test.js.map +1 -0
  584. package/dist/lib/workspace-probe.d.ts +16 -0
  585. package/dist/lib/workspace-probe.d.ts.map +1 -0
  586. package/dist/lib/workspace-probe.js +33 -0
  587. package/dist/lib/workspace-probe.js.map +1 -0
  588. package/package.json +13 -4
  589. package/templates/archetypes/boundary.md +23 -0
  590. package/templates/archetypes/constraint.md +23 -0
  591. package/templates/archetypes/convention.md +23 -0
  592. package/templates/archetypes/policy.md +23 -0
  593. package/templates/archetypes/quality-gate.md +23 -0
  594. package/templates/archetypes/workflow.md +23 -0
  595. package/templates/general/code-integrity.md +11 -0
  596. package/templates/general/getting-started.md +12 -0
  597. package/templates/node-ts/code-integrity.md +13 -0
  598. package/templates/node-ts/testing.md +12 -0
  599. package/templates/python/code-integrity.md +13 -0
  600. package/templates/python/testing.md +12 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Onboarding conversation phases — the 5-phase arc for first-time setup.
3
+ * WP-304: Each phase has a directive (what the LLM should do) and exit criteria (what the CLI checks).
4
+ */
5
+ export const ONBOARDING_PHASES = [
6
+ {
7
+ id: 'greet',
8
+ directive: `Your job: Say hello and ask what they're building. One sentence. No fluff.
9
+ Example: "Hey! What are you building?"
10
+ Do NOT ask multiple questions. Do NOT explain Product Brain yet.`,
11
+ exitCriteria: [
12
+ {
13
+ name: 'greeting_sent',
14
+ check: (s) => s.phaseExchanges['greet'] !== undefined && (s.phaseExchanges['greet'] ?? 0) >= 0,
15
+ required: true,
16
+ },
17
+ ],
18
+ maxExchanges: 1,
19
+ },
20
+ {
21
+ id: 'explore',
22
+ directive: `Your job: Learn what they're building. Get specific.
23
+ If they gave a vague answer ("something big", "a tool", "an app"), pick one concrete detail and dig in.
24
+ Ask who uses it, what it actually does, or how it works today.
25
+ Good questions: "Who's using it?" / "What does it replace?" / "How does that work today?"
26
+ Bad questions: "What domain are you operating in?" / "Can you elaborate on that?"
27
+ Do NOT ask why they're trying Product Brain yet.
28
+ One question only.`,
29
+ exitCriteria: [
30
+ {
31
+ name: 'user_mentioned_product',
32
+ check: (s) => s.signals.mentionedProduct,
33
+ required: true,
34
+ },
35
+ {
36
+ name: 'has_substantive_answer',
37
+ check: (s) => s.signals.hasSubstantiveAnswer,
38
+ required: true,
39
+ },
40
+ ],
41
+ maxExchanges: 3,
42
+ },
43
+ {
44
+ id: 'deepen',
45
+ directive: `Your job: Understand what's hard about what they're building.
46
+ Pick ONE specific thing they mentioned and ask what breaks or why it's hard. Be direct and short.
47
+ Good: "What breaks when the agent doesn't have that context?" / "Where does the rework hit hardest?"
48
+ Bad: "What makes it hard to ensure X?" / "Can you tell me more about the challenges?"
49
+ Do NOT ask why they're trying Product Brain yet.
50
+ One question only.`,
51
+ exitCriteria: [
52
+ {
53
+ name: 'user_mentioned_challenge',
54
+ check: (s) => s.signals.mentionedChallenge,
55
+ required: false,
56
+ },
57
+ {
58
+ name: 'min_2_substantive_messages',
59
+ check: (s) => s.signals.substantiveMessageCount >= 2,
60
+ required: true,
61
+ },
62
+ ],
63
+ maxExchanges: 2,
64
+ },
65
+ {
66
+ id: 'why_pb',
67
+ directive: `Your job: Ask what made them try Product Brain. Be direct.
68
+ Examples: "What made you try Product Brain?" or "What problem are you hoping Product Brain solves?"
69
+ Do NOT summarize or synthesize yet.
70
+ One question only.`,
71
+ exitCriteria: [
72
+ {
73
+ name: 'user_answered_why_pb',
74
+ check: (s) => s.signals.mentionedWhyPB,
75
+ required: false,
76
+ },
77
+ {
78
+ name: 'min_total_words_25',
79
+ check: (s) => s.totalUserWords >= 25,
80
+ required: true,
81
+ },
82
+ {
83
+ name: 'min_3_substantive_messages',
84
+ check: (s) => s.signals.substantiveMessageCount >= 3,
85
+ required: true,
86
+ },
87
+ ],
88
+ maxExchanges: 2,
89
+ },
90
+ {
91
+ id: 'bridge',
92
+ directive: `Your job: Bridge the conversation to Product Brain's value. Speak as Product Brain (first person "I").
93
+ Keep it SHORT — 2-3 sentences max. Do NOT list bullet items. The CLI will handle showing examples.
94
+
95
+ Structure:
96
+ 1. One sentence connecting their problem to what you (PB) do. Use first person.
97
+ 2. One sentence showing you understood something specific they said.
98
+
99
+ Good example: "I can remember all of that across your AI sessions — so next time you open your AI tools, they already know about the decision rot problem and your cashflow automation. No more re-explaining."
100
+ Bad example: "Product Brain can help — it remembers context. Here's what I'd save: * item 1 * item 2 * item 3"
101
+
102
+ Do NOT list items. Do NOT use bullet points or asterisks. The CLI shows examples separately.
103
+ This is a STATEMENT. Do NOT ask a question. Do NOT end with a question mark.`,
104
+ exitCriteria: [
105
+ {
106
+ name: 'bridge_delivered',
107
+ check: (s) => (s.phaseExchanges['bridge'] ?? 0) >= 1,
108
+ required: true,
109
+ },
110
+ ],
111
+ maxExchanges: 1,
112
+ },
113
+ ];
114
+ /** User wants to skip — detected by regex on user input. */
115
+ const SKIP_PATTERNS = [/\b(?:skip|done|that'?s it|wrap up|let'?s go|finish|end)\b/i];
116
+ /** Check if user wants to skip the conversation. */
117
+ export function userWantsToSkip(text) {
118
+ return SKIP_PATTERNS.some((p) => p.test(text));
119
+ }
120
+ //# sourceMappingURL=onboarding-phases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-phases.js","sourceRoot":"","sources":["../../src/lib/onboarding-phases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IACpD;QACE,EAAE,EAAE,OAAO;QACX,SAAS,EAAE;;iEAEkD;QAC7D,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAC9F,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,SAAS;QACb,SAAS,EAAE;;;;;;mBAMI;QACf,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBACxC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB;gBAC5C,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE;;;;;mBAKI;QACf,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB;gBAC1C,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,IAAI,CAAC;gBACpD,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE;;;mBAGI;QACf,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc;gBACtC,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE;gBACpC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,IAAI,EAAE,4BAA4B;gBAClC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,IAAI,CAAC;gBACpD,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE,CAAC;KAChB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE;;;;;;;;;;;6EAW8D;QACzE,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBACpD,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE,CAAC;KAChB;CACF,CAAC;AAEF,4DAA4D;AAC5D,MAAM,aAAa,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAErF,oDAAoD;AACpD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Shared onboarding utilities — types, extraction mapping, batch capture, retrieval proof.
3
+ * WP-304: Extracted from onboarding.ts to support both Path A and future Path B.
4
+ *
5
+ * DIVERGED from packages/mcp-server/src/tools/start-interview.ts:extractionToBatchEntries per DEC-522.
6
+ * Copy-and-own: CLI uses 120-char truncate limits (vs MCP's 80). Shared package deferred.
7
+ * Duplicated due to monorepo import boundary (BR-108).
8
+ */
9
+ /** @deprecated Use CaptureEntry[] directly — LLM now outputs entry-shaped data. */
10
+ export interface OnboardingExtraction {
11
+ vision: string;
12
+ audience?: string | null;
13
+ techStack?: string[] | null;
14
+ keyTerms?: string[] | null;
15
+ keyDecisions?: string[] | null;
16
+ tensions?: string[] | null;
17
+ }
18
+ /** Result from chain.createEntry. */
19
+ export interface CreateEntryResult {
20
+ entryId: string;
21
+ collection: string;
22
+ name: string;
23
+ status: string;
24
+ }
25
+ /** A single entry to capture. */
26
+ export interface CaptureEntry {
27
+ collection: string;
28
+ name: string;
29
+ description: string;
30
+ typeLabel: string;
31
+ }
32
+ /** Result from the onboarding.chat action — chat mode. */
33
+ export interface OnboardingChatResult {
34
+ content: string;
35
+ /** Coach pattern (Path A): whether the LLM judged the current topic's criteria as met. */
36
+ topicComplete?: boolean;
37
+ /** @deprecated Path B facilitator only. */
38
+ phase?: string;
39
+ signals?: {
40
+ describedProduct?: boolean;
41
+ describedProblem?: boolean;
42
+ answeredWhyPB?: boolean;
43
+ quotableFragments?: string[];
44
+ } | null;
45
+ }
46
+ /** Result from the onboarding.chat action — extract mode. */
47
+ export interface OnboardingExtractResult {
48
+ entries: CaptureEntry[];
49
+ /** @deprecated Backward-compat for Path B. Remove when Path B migrates to entries[]. */
50
+ extraction?: OnboardingExtraction;
51
+ }
52
+ export declare function truncate(str: string, maxLen: number): string;
53
+ export declare function firstNWords(str: string, n: number): string;
54
+ export declare function countWords(text: string): number;
55
+ /**
56
+ * Validate and clean LLM-extracted entries. The LLM outputs entry-shaped data directly;
57
+ * this function validates shape, deduplicates, and caps the result.
58
+ */
59
+ export declare function validateExtractedEntries(entries: unknown[]): CaptureEntry[];
60
+ /** @deprecated Use validateExtractedEntries instead — kept for backward compat during migration. */
61
+ export declare function extractionToEntries(extracted: OnboardingExtraction): CaptureEntry[];
62
+ /**
63
+ * Display one entry example with schema structure.
64
+ * Shows typeLabel (from LLM), name, and description in a clean format.
65
+ */
66
+ export declare function displayEntryExample(entry: CaptureEntry): void;
67
+ /**
68
+ * Batch-capture entries via MCP chain.createEntry.
69
+ * Returns count of captured entries and any error messages.
70
+ */
71
+ export declare function batchCaptureEntries(entries: CaptureEntry[]): Promise<{
72
+ capturedCount: number;
73
+ errors: string[];
74
+ }>;
75
+ /**
76
+ * Show deterministic proof of what was captured — displays the entries that were just saved.
77
+ * Guaranteed to show content (no network call that can fail or return empty).
78
+ * Satisfies BR-141: "First-session flow MUST end with retrieval demonstration."
79
+ */
80
+ export declare function showCapturedSummary(entries: CaptureEntry[], capturedCount: number): void;
81
+ //# sourceMappingURL=onboarding-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-shared.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5B;AAED,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,GAAG,IAAI,CAAC;CACV;AAED,6DAA6D;AAC7D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,wFAAwF;IACxF,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAmC3E;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,GAAG,YAAY,EAAE,CA6EnF;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAO7D;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAoBtD;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAWxF"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Shared onboarding utilities — types, extraction mapping, batch capture, retrieval proof.
3
+ * WP-304: Extracted from onboarding.ts to support both Path A and future Path B.
4
+ *
5
+ * DIVERGED from packages/mcp-server/src/tools/start-interview.ts:extractionToBatchEntries per DEC-522.
6
+ * Copy-and-own: CLI uses 120-char truncate limits (vs MCP's 80). Shared package deferred.
7
+ * Duplicated due to monorepo import boundary (BR-108).
8
+ */
9
+ import { mcpCallWithSession } from './client.js';
10
+ import { bold, cyan, dim, icons } from './style.js';
11
+ // ── String helpers ─────────────────────────────────────────────────────────
12
+ export function truncate(str, maxLen) {
13
+ if (str.length <= maxLen)
14
+ return str;
15
+ const truncated = str.slice(0, maxLen);
16
+ const lastSpace = truncated.lastIndexOf(' ');
17
+ return lastSpace > maxLen * 0.6 ? truncated.slice(0, lastSpace) : truncated;
18
+ }
19
+ export function firstNWords(str, n) {
20
+ return str.split(/\s+/).slice(0, n).join(' ');
21
+ }
22
+ export function countWords(text) {
23
+ return text.trim().split(/\s+/).filter(Boolean).length;
24
+ }
25
+ // ── Extraction → Entries Validation ──────────────────────────────────────
26
+ const VALID_COLLECTIONS = new Set(['strategy', 'audiences', 'architecture', 'glossary', 'decisions', 'tensions']);
27
+ /**
28
+ * Validate and clean LLM-extracted entries. The LLM outputs entry-shaped data directly;
29
+ * this function validates shape, deduplicates, and caps the result.
30
+ */
31
+ export function validateExtractedEntries(entries) {
32
+ if (!Array.isArray(entries))
33
+ return [];
34
+ const seen = new Set();
35
+ const validated = [];
36
+ for (const entry of entries) {
37
+ if (!entry || typeof entry !== 'object')
38
+ continue;
39
+ const e = entry;
40
+ const collection = typeof e.collection === 'string' ? e.collection : '';
41
+ const name = typeof e.name === 'string' ? e.name.trim() : '';
42
+ const description = typeof e.description === 'string' ? e.description.trim() : '';
43
+ const typeLabel = typeof e.typeLabel === 'string' ? e.typeLabel.trim() : '';
44
+ // Validate required fields
45
+ if (!name || !description || !VALID_COLLECTIONS.has(collection))
46
+ continue;
47
+ // Skip single-word names (except glossary)
48
+ if (name.split(/\s+/).length < 2 && collection !== 'glossary')
49
+ continue;
50
+ // Dedup by name (case-insensitive)
51
+ const key = name.toLowerCase();
52
+ if (seen.has(key))
53
+ continue;
54
+ seen.add(key);
55
+ validated.push({
56
+ collection,
57
+ name: truncate(name, 120),
58
+ description,
59
+ typeLabel: typeLabel || collection, // fallback to collection if LLM omits
60
+ });
61
+ }
62
+ return validated.slice(0, 7);
63
+ }
64
+ /** @deprecated Use validateExtractedEntries instead — kept for backward compat during migration. */
65
+ export function extractionToEntries(extracted) {
66
+ const entries = [];
67
+ if (extracted.vision?.trim()) {
68
+ entries.push({
69
+ collection: 'strategy',
70
+ name: 'Product Vision',
71
+ description: extracted.vision,
72
+ typeLabel: "What you're building",
73
+ });
74
+ }
75
+ if (extracted.audience) {
76
+ entries.push({
77
+ collection: 'audiences',
78
+ name: firstNWords(extracted.audience, 6),
79
+ description: extracted.audience,
80
+ typeLabel: "Who it's for",
81
+ });
82
+ }
83
+ if (extracted.techStack?.length) {
84
+ entries.push({
85
+ collection: 'architecture',
86
+ name: 'Tech Stack',
87
+ description: `Technology choices: ${extracted.techStack.join(', ')}`,
88
+ typeLabel: 'A technology choice',
89
+ });
90
+ for (const tech of extracted.techStack.slice(0, 3)) {
91
+ entries.push({
92
+ collection: 'glossary',
93
+ name: tech,
94
+ description: `${tech} — part of the tech stack`,
95
+ typeLabel: 'A term worth remembering',
96
+ });
97
+ }
98
+ }
99
+ if (extracted.keyTerms?.length) {
100
+ for (const term of extracted.keyTerms) {
101
+ const alreadyAdded = entries.some((e) => e.collection === 'glossary' && e.name.toLowerCase() === term.toLowerCase());
102
+ if (!alreadyAdded) {
103
+ entries.push({
104
+ collection: 'glossary',
105
+ name: term,
106
+ description: `Core domain term: ${term}`,
107
+ typeLabel: 'A term worth remembering',
108
+ });
109
+ }
110
+ }
111
+ }
112
+ if (extracted.keyDecisions?.length) {
113
+ for (const decision of extracted.keyDecisions) {
114
+ entries.push({
115
+ collection: 'decisions',
116
+ name: truncate(decision, 120),
117
+ description: decision,
118
+ typeLabel: 'A decision you\'ve made',
119
+ });
120
+ }
121
+ }
122
+ if (extracted.tensions?.length) {
123
+ for (const tension of extracted.tensions) {
124
+ entries.push({
125
+ collection: 'tensions',
126
+ name: truncate(tension, 120),
127
+ description: tension,
128
+ typeLabel: 'A challenge you\'re facing',
129
+ });
130
+ }
131
+ }
132
+ return entries;
133
+ }
134
+ // ── Display helpers ───────────────────────────────────────────────────────
135
+ /**
136
+ * Display one entry example with schema structure.
137
+ * Shows typeLabel (from LLM), name, and description in a clean format.
138
+ */
139
+ export function displayEntryExample(entry) {
140
+ process.stdout.write(` ${cyan(entry.typeLabel)}\n`);
141
+ process.stdout.write(` ${bold(entry.name)}\n`);
142
+ if (entry.description !== entry.name) {
143
+ process.stdout.write(` ${dim(entry.description)}\n`);
144
+ }
145
+ process.stdout.write('\n');
146
+ }
147
+ // ── Batch capture ─────────────────────────────────────────────────────────
148
+ /**
149
+ * Batch-capture entries via MCP chain.createEntry.
150
+ * Returns count of captured entries and any error messages.
151
+ */
152
+ export async function batchCaptureEntries(entries) {
153
+ let capturedCount = 0;
154
+ const errors = [];
155
+ for (const entry of entries) {
156
+ try {
157
+ await mcpCallWithSession('chain.createEntry', {
158
+ collectionSlug: entry.collection,
159
+ name: entry.name,
160
+ status: 'active',
161
+ data: { description: entry.description },
162
+ });
163
+ capturedCount++;
164
+ }
165
+ catch (err) {
166
+ const msg = err instanceof Error ? err.message : String(err);
167
+ errors.push(`${entry.name}: ${msg}`);
168
+ }
169
+ }
170
+ return { capturedCount, errors };
171
+ }
172
+ // ── Captured proof ────────────────────────────────────────────────────────
173
+ /**
174
+ * Show deterministic proof of what was captured — displays the entries that were just saved.
175
+ * Guaranteed to show content (no network call that can fail or return empty).
176
+ * Satisfies BR-141: "First-session flow MUST end with retrieval demonstration."
177
+ */
178
+ export function showCapturedSummary(entries, capturedCount) {
179
+ if (capturedCount === 0 || entries.length === 0)
180
+ return;
181
+ process.stdout.write(`\n ${bold('Your AI tools will now remember:')}\n\n`);
182
+ for (const entry of entries.slice(0, 5)) {
183
+ process.stdout.write(` ${dim(icons.dot)} ${entry.name}\n`);
184
+ }
185
+ if (entries.length > 5) {
186
+ process.stdout.write(` ${dim(`...and ${entries.length - 5} more`)}\n`);
187
+ }
188
+ process.stdout.write('\n');
189
+ }
190
+ //# sourceMappingURL=onboarding-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-shared.js","sourceRoot":"","sources":["../../src/lib/onboarding-shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAS,KAAK,EAAE,MAAM,YAAY,CAAC;AAoD3D,8EAA8E;AAE9E,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,MAAc;IAClD,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,CAAS;IAChD,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,4EAA4E;AAE5E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAElH;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAkB;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,2BAA2B;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QAE1E,2CAA2C;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,UAAU;YAAE,SAAS;QAExE,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,SAAS,CAAC,IAAI,CAAC;YACb,UAAU;YACV,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;YACzB,WAAW;YACX,SAAS,EAAE,SAAS,IAAI,UAAU,EAAE,sCAAsC;SAC3E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,SAA+B;IACjE,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,UAAU;YACtB,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,WAAW,EAAE,SAAS,CAAC,QAAQ;YAC/B,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,cAAc;YAC1B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,uBAAuB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpE,SAAS,EAAE,qBAAqB;SACjC,CAAC,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,GAAG,IAAI,2BAA2B;gBAC/C,SAAS,EAAE,0BAA0B;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAClF,CAAC;YACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,UAAU;oBACtB,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,qBAAqB,IAAI,EAAE;oBACxC,SAAS,EAAE,0BAA0B;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;gBAC7B,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,yBAAyB;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;gBAC5B,WAAW,EAAE,OAAO;gBACpB,SAAS,EAAE,4BAA4B;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAE7E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,6EAA6E;AAE7E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAuB;IAEvB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAoB,mBAAmB,EAAE;gBAC/D,cAAc,EAAE,KAAK,CAAC,UAAU;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;aACzC,CAAC,CAAC;YACH,aAAa,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,6EAA6E;AAE7E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAuB,EAAE,aAAqB;IAChF,IAAI,aAAa,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;IAC5E,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Onboarding conversation topics — coach pattern for first-time setup.
3
+ * WP-304: Each topic has goal/behaviour/criteria. LLM judges completion,
4
+ * heuristic signals are backup. Topics auto-skip when content is already covered.
5
+ */
6
+ import type { ConversationSignals } from './conversation-phases.js';
7
+ /** A conversation topic with coaching directives and completion criteria. */
8
+ export interface OnboardingTopic {
9
+ /** Unique topic identifier. */
10
+ id: string;
11
+ /** What we're trying to learn from this topic. */
12
+ goal: string;
13
+ /** How the LLM should behave during this topic. */
14
+ behaviour: string;
15
+ /** When this topic is complete — the LLM judges this. */
16
+ criteria: string;
17
+ /** Max exchanges before forced advancement. Safety valve. */
18
+ maxExchanges: number;
19
+ /** If this signal is already true, skip this topic entirely. Null = always run. */
20
+ skipIfSignal: keyof ConversationSignals | null;
21
+ /** Heuristic backup: if this signal is true, topic is complete even if LLM disagrees. */
22
+ heuristicSignal: keyof ConversationSignals | null;
23
+ }
24
+ export declare const ONBOARDING_TOPICS: OnboardingTopic[];
25
+ /** Check if user wants to skip the conversation. */
26
+ export declare function userWantsToSkip(text: string): boolean;
27
+ //# sourceMappingURL=onboarding-topics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-topics.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IAEb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IAEjB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAErB,mFAAmF;IACnF,YAAY,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;IAE/C,yFAAyF;IACzF,eAAe,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;CACnD;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EA4C9C,CAAC;AAKF,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Onboarding conversation topics — coach pattern for first-time setup.
3
+ * WP-304: Each topic has goal/behaviour/criteria. LLM judges completion,
4
+ * heuristic signals are backup. Topics auto-skip when content is already covered.
5
+ */
6
+ export const ONBOARDING_TOPICS = [
7
+ {
8
+ id: 'why_here',
9
+ goal: 'Understand what brought this person to Product Brain. Follow wherever they go — product, problem, context, or all three.',
10
+ behaviour: `Open with: "Hey, what brings you to Product Brain?"
11
+ Then follow what's interesting. If they describe a product, get curious about it.
12
+ If they describe a problem, lean in. If they're vague, ask the one thing you'd most want to know.
13
+ Never ask more than one question. Never explain what Product Brain does — they know enough to be here.`,
14
+ criteria: `The user has said something genuine — anything beyond "I don't know" or "just checking it out."
15
+ A complete sentence about their work, their problem, or their situation meets criteria.
16
+ Criteria is NOT met if the user gave only a non-answer (one word, "not sure", "just exploring").`,
17
+ maxExchanges: 3,
18
+ skipIfSignal: null,
19
+ heuristicSignal: 'hasSubstantiveAnswer',
20
+ },
21
+ {
22
+ id: 'what_they_build',
23
+ goal: 'Understand concretely what this person is building — specific enough to explain to someone else in one sentence.',
24
+ behaviour: `Pick one concrete noun or verb from their last answer and go one level deeper.
25
+ Ask about who uses it, what it replaces, or how it works today — whichever fits what they said.
26
+ Never name the category back at them ("so an AI tool?").
27
+ Never ask them to "elaborate" or "tell me more."
28
+ One direct question only.`,
29
+ criteria: `The user has described what they're building with enough specificity that you could explain it in one sentence to someone who wasn't in this conversation.
30
+ Vague answers ("a tool", "an app", "something with AI") do NOT meet criteria.
31
+ A described function, a named user group, or a concrete workflow DOES.`,
32
+ maxExchanges: 2,
33
+ skipIfSignal: 'mentionedProduct',
34
+ heuristicSignal: 'mentionedProduct',
35
+ },
36
+ {
37
+ id: 'what_is_hard',
38
+ goal: "Understand what's actually hard or broken right now — the friction that brought them here.",
39
+ behaviour: `Pick one specific thing they mentioned building and ask what breaks, what slows them down, or what they're not happy with.
40
+ Be concrete and direct: "What breaks when X?" or "Where does the rework happen?"
41
+ Not: "What challenges do you face?" or "What's the hardest part?" (too generic).
42
+ One question only.`,
43
+ criteria: `The user has described a specific friction, pain, or failure mode in their own words.
44
+ "It's hard" or "there are problems" does NOT meet criteria.
45
+ A named workflow that breaks, a named cost, or a described workaround DOES.`,
46
+ maxExchanges: 2,
47
+ skipIfSignal: 'mentionedChallenge',
48
+ heuristicSignal: 'mentionedChallenge',
49
+ },
50
+ ];
51
+ /** User wants to skip — detected by regex on user input. */
52
+ const SKIP_PATTERNS = [/\b(?:skip|done|that'?s it|wrap up|let'?s go|finish|end)\b/i];
53
+ /** Check if user wants to skip the conversation. */
54
+ export function userWantsToSkip(text) {
55
+ return SKIP_PATTERNS.some((p) => p.test(text));
56
+ }
57
+ //# sourceMappingURL=onboarding-topics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-topics.js","sourceRoot":"","sources":["../../src/lib/onboarding-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,0HAA0H;QAChI,SAAS,EAAE;;;uGAGwF;QACnG,QAAQ,EAAE;;iGAEmF;QAC7F,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,sBAAsB;KACxC;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,kHAAkH;QACxH,SAAS,EAAE;;;;0BAIW;QACtB,QAAQ,EAAE;;uEAEyD;QACnE,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,kBAAkB;QAChC,eAAe,EAAE,kBAAkB;KACpC;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,4FAA4F;QAClG,SAAS,EAAE;;;mBAGI;QACf,QAAQ,EAAE;;4EAE8D;QACxE,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,oBAAoB;QAClC,eAAe,EAAE,oBAAoB;KACtC;CACF,CAAC;AAEF,4DAA4D;AAC5D,MAAM,aAAa,GAAG,CAAC,4DAA4D,CAAC,CAAC;AAErF,oDAAoD;AACpD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Onboarding conversation — coach-pattern LLM conversation for new workspaces.
3
+ * WP-304: Topics with goal/behaviour/criteria. LLM judges completion, heuristic backup.
4
+ *
5
+ * Uses @clack/prompts (WP-303 S1) and the MCP gateway to call the
6
+ * Convex onboardingChat action for conversation and extraction,
7
+ * then chain.createEntry for batch-capture.
8
+ */
9
+ /**
10
+ * Run the onboarding conversation: topic-by-topic coach pattern, extraction, and auto-capture.
11
+ */
12
+ export declare function runOnboardingConversation(workspaceName: string): Promise<void>;
13
+ /**
14
+ * Deterministic fallback when LLM is unavailable.
15
+ */
16
+ export declare function runFallbackOnboarding(workspaceName: string): Promise<void>;
17
+ //# sourceMappingURL=onboarding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsTpF;AAUD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEhF"}