@productbrain/cli 0.1.0-beta.5 → 0.1.0-beta.50

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 (592) 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 +156 -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/index.d.ts +17 -0
  141. package/dist/commands/admin/index.d.ts.map +1 -0
  142. package/dist/commands/admin/index.js +95 -0
  143. package/dist/commands/admin/index.js.map +1 -0
  144. package/dist/commands/admin/inspect.d.ts +12 -0
  145. package/dist/commands/admin/inspect.d.ts.map +1 -0
  146. package/dist/commands/admin/inspect.js +506 -0
  147. package/dist/commands/admin/inspect.js.map +1 -0
  148. package/dist/commands/admin/inspect.test.d.ts +5 -0
  149. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  150. package/dist/commands/admin/inspect.test.js +40 -0
  151. package/dist/commands/admin/inspect.test.js.map +1 -0
  152. package/dist/commands/admin/seed.d.ts +32 -0
  153. package/dist/commands/admin/seed.d.ts.map +1 -0
  154. package/dist/commands/admin/seed.js +527 -0
  155. package/dist/commands/admin/seed.js.map +1 -0
  156. package/dist/commands/admin/seed.test.d.ts +6 -0
  157. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  158. package/dist/commands/admin/seed.test.js +65 -0
  159. package/dist/commands/admin/seed.test.js.map +1 -0
  160. package/dist/commands/audit.d.ts +25 -0
  161. package/dist/commands/audit.d.ts.map +1 -0
  162. package/dist/commands/audit.js +188 -0
  163. package/dist/commands/audit.js.map +1 -0
  164. package/dist/commands/brand-pack.d.ts +2 -0
  165. package/dist/commands/brand-pack.d.ts.map +1 -0
  166. package/dist/commands/brand-pack.js +25 -0
  167. package/dist/commands/brand-pack.js.map +1 -0
  168. package/dist/commands/brief.d.ts +28 -0
  169. package/dist/commands/brief.d.ts.map +1 -0
  170. package/dist/commands/brief.js +75 -0
  171. package/dist/commands/brief.js.map +1 -0
  172. package/dist/commands/capture.d.ts +25 -0
  173. package/dist/commands/capture.d.ts.map +1 -0
  174. package/dist/commands/capture.js +232 -0
  175. package/dist/commands/capture.js.map +1 -0
  176. package/dist/commands/chain-walk.d.ts +14 -0
  177. package/dist/commands/chain-walk.d.ts.map +1 -0
  178. package/dist/commands/chain-walk.js +38 -0
  179. package/dist/commands/chain-walk.js.map +1 -0
  180. package/dist/commands/changes.d.ts +11 -0
  181. package/dist/commands/changes.d.ts.map +1 -0
  182. package/dist/commands/changes.js +46 -0
  183. package/dist/commands/changes.js.map +1 -0
  184. package/dist/commands/codex-prep.d.ts +12 -0
  185. package/dist/commands/codex-prep.d.ts.map +1 -0
  186. package/dist/commands/codex-prep.js +122 -0
  187. package/dist/commands/codex-prep.js.map +1 -0
  188. package/dist/commands/collections.d.ts +22 -0
  189. package/dist/commands/collections.d.ts.map +1 -0
  190. package/dist/commands/collections.js +77 -0
  191. package/dist/commands/collections.js.map +1 -0
  192. package/dist/commands/connect-integration.test.d.ts +7 -0
  193. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  194. package/dist/commands/connect-integration.test.js +200 -0
  195. package/dist/commands/connect-integration.test.js.map +1 -0
  196. package/dist/commands/connect.d.ts +21 -0
  197. package/dist/commands/connect.d.ts.map +1 -0
  198. package/dist/commands/connect.js +279 -0
  199. package/dist/commands/connect.js.map +1 -0
  200. package/dist/commands/connect.test.d.ts +6 -0
  201. package/dist/commands/connect.test.d.ts.map +1 -0
  202. package/dist/commands/connect.test.js +230 -0
  203. package/dist/commands/connect.test.js.map +1 -0
  204. package/dist/commands/constellation.d.ts +11 -0
  205. package/dist/commands/constellation.d.ts.map +1 -0
  206. package/dist/commands/constellation.js +33 -0
  207. package/dist/commands/constellation.js.map +1 -0
  208. package/dist/commands/context.d.ts +2 -1
  209. package/dist/commands/context.d.ts.map +1 -1
  210. package/dist/commands/context.js +20 -9
  211. package/dist/commands/context.js.map +1 -1
  212. package/dist/commands/cross-cut.d.ts +11 -0
  213. package/dist/commands/cross-cut.d.ts.map +1 -0
  214. package/dist/commands/cross-cut.js +23 -0
  215. package/dist/commands/cross-cut.js.map +1 -0
  216. package/dist/commands/doctor.d.ts +18 -0
  217. package/dist/commands/doctor.d.ts.map +1 -0
  218. package/dist/commands/doctor.js +231 -0
  219. package/dist/commands/doctor.js.map +1 -0
  220. package/dist/commands/doctor.test.d.ts +8 -0
  221. package/dist/commands/doctor.test.d.ts.map +1 -0
  222. package/dist/commands/doctor.test.js +311 -0
  223. package/dist/commands/doctor.test.js.map +1 -0
  224. package/dist/commands/fields.d.ts +9 -0
  225. package/dist/commands/fields.d.ts.map +1 -0
  226. package/dist/commands/fields.js +30 -0
  227. package/dist/commands/fields.js.map +1 -0
  228. package/dist/commands/get.d.ts +8 -1
  229. package/dist/commands/get.d.ts.map +1 -1
  230. package/dist/commands/get.js +60 -7
  231. package/dist/commands/get.js.map +1 -1
  232. package/dist/commands/handshake.d.ts +28 -0
  233. package/dist/commands/handshake.d.ts.map +1 -0
  234. package/dist/commands/handshake.js +617 -0
  235. package/dist/commands/handshake.js.map +1 -0
  236. package/dist/commands/ingest.d.ts +8 -2
  237. package/dist/commands/ingest.d.ts.map +1 -1
  238. package/dist/commands/ingest.js +148 -25
  239. package/dist/commands/ingest.js.map +1 -1
  240. package/dist/commands/init.d.ts +14 -0
  241. package/dist/commands/init.d.ts.map +1 -0
  242. package/dist/commands/init.js +117 -0
  243. package/dist/commands/init.js.map +1 -0
  244. package/dist/commands/login.d.ts +4 -0
  245. package/dist/commands/login.d.ts.map +1 -1
  246. package/dist/commands/login.js +99 -37
  247. package/dist/commands/login.js.map +1 -1
  248. package/dist/commands/orient.d.ts +103 -1
  249. package/dist/commands/orient.d.ts.map +1 -1
  250. package/dist/commands/orient.js +24 -8
  251. package/dist/commands/orient.js.map +1 -1
  252. package/dist/commands/profile.d.ts +24 -0
  253. package/dist/commands/profile.d.ts.map +1 -0
  254. package/dist/commands/profile.js +82 -0
  255. package/dist/commands/profile.js.map +1 -0
  256. package/dist/commands/promote.d.ts +12 -0
  257. package/dist/commands/promote.d.ts.map +1 -0
  258. package/dist/commands/promote.js +90 -0
  259. package/dist/commands/promote.js.map +1 -0
  260. package/dist/commands/proposals.d.ts +9 -0
  261. package/dist/commands/proposals.d.ts.map +1 -0
  262. package/dist/commands/proposals.js +24 -0
  263. package/dist/commands/proposals.js.map +1 -0
  264. package/dist/commands/reject.d.ts +14 -0
  265. package/dist/commands/reject.d.ts.map +1 -0
  266. package/dist/commands/reject.js +43 -0
  267. package/dist/commands/reject.js.map +1 -0
  268. package/dist/commands/relate.d.ts +16 -0
  269. package/dist/commands/relate.d.ts.map +1 -0
  270. package/dist/commands/relate.js +98 -0
  271. package/dist/commands/relate.js.map +1 -0
  272. package/dist/commands/search.d.ts +1 -0
  273. package/dist/commands/search.d.ts.map +1 -1
  274. package/dist/commands/search.js +5 -3
  275. package/dist/commands/search.js.map +1 -1
  276. package/dist/commands/session.d.ts +20 -0
  277. package/dist/commands/session.d.ts.map +1 -0
  278. package/dist/commands/session.js +144 -0
  279. package/dist/commands/session.js.map +1 -0
  280. package/dist/commands/setup.d.ts +15 -0
  281. package/dist/commands/setup.d.ts.map +1 -0
  282. package/dist/commands/setup.js +168 -0
  283. package/dist/commands/setup.js.map +1 -0
  284. package/dist/commands/update.d.ts +17 -0
  285. package/dist/commands/update.d.ts.map +1 -0
  286. package/dist/commands/update.js +178 -0
  287. package/dist/commands/update.js.map +1 -0
  288. package/dist/commands/verify.d.ts +13 -0
  289. package/dist/commands/verify.d.ts.map +1 -0
  290. package/dist/commands/verify.js +49 -0
  291. package/dist/commands/verify.js.map +1 -0
  292. package/dist/commands/workspace.d.ts +41 -0
  293. package/dist/commands/workspace.d.ts.map +1 -0
  294. package/dist/commands/workspace.js +239 -0
  295. package/dist/commands/workspace.js.map +1 -0
  296. package/dist/formatters/audit.d.ts +46 -0
  297. package/dist/formatters/audit.d.ts.map +1 -0
  298. package/dist/formatters/audit.js +81 -0
  299. package/dist/formatters/audit.js.map +1 -0
  300. package/dist/formatters/brief.d.ts +112 -0
  301. package/dist/formatters/brief.d.ts.map +1 -0
  302. package/dist/formatters/brief.js +179 -0
  303. package/dist/formatters/brief.js.map +1 -0
  304. package/dist/formatters/capture.d.ts +48 -0
  305. package/dist/formatters/capture.d.ts.map +1 -0
  306. package/dist/formatters/capture.js +77 -0
  307. package/dist/formatters/capture.js.map +1 -0
  308. package/dist/formatters/chain-walk.d.ts +33 -0
  309. package/dist/formatters/chain-walk.d.ts.map +1 -0
  310. package/dist/formatters/chain-walk.js +54 -0
  311. package/dist/formatters/chain-walk.js.map +1 -0
  312. package/dist/formatters/changes.d.ts +25 -0
  313. package/dist/formatters/changes.d.ts.map +1 -0
  314. package/dist/formatters/changes.js +60 -0
  315. package/dist/formatters/changes.js.map +1 -0
  316. package/dist/formatters/collections.d.ts +40 -0
  317. package/dist/formatters/collections.d.ts.map +1 -0
  318. package/dist/formatters/collections.js +93 -0
  319. package/dist/formatters/collections.js.map +1 -0
  320. package/dist/formatters/constellation.d.ts +34 -0
  321. package/dist/formatters/constellation.d.ts.map +1 -0
  322. package/dist/formatters/constellation.js +38 -0
  323. package/dist/formatters/constellation.js.map +1 -0
  324. package/dist/formatters/cross-cut.d.ts +21 -0
  325. package/dist/formatters/cross-cut.d.ts.map +1 -0
  326. package/dist/formatters/cross-cut.js +32 -0
  327. package/dist/formatters/cross-cut.js.map +1 -0
  328. package/dist/formatters/entry.d.ts +11 -4
  329. package/dist/formatters/entry.d.ts.map +1 -1
  330. package/dist/formatters/entry.js +24 -8
  331. package/dist/formatters/entry.js.map +1 -1
  332. package/dist/formatters/fields.d.ts +32 -0
  333. package/dist/formatters/fields.d.ts.map +1 -0
  334. package/dist/formatters/fields.js +49 -0
  335. package/dist/formatters/fields.js.map +1 -0
  336. package/dist/formatters/handshake.d.ts +24 -0
  337. package/dist/formatters/handshake.d.ts.map +1 -0
  338. package/dist/formatters/handshake.js +69 -0
  339. package/dist/formatters/handshake.js.map +1 -0
  340. package/dist/formatters/orient.d.ts +100 -1
  341. package/dist/formatters/orient.d.ts.map +1 -1
  342. package/dist/formatters/orient.js +123 -17
  343. package/dist/formatters/orient.js.map +1 -1
  344. package/dist/formatters/promote.d.ts +30 -0
  345. package/dist/formatters/promote.d.ts.map +1 -0
  346. package/dist/formatters/promote.js +39 -0
  347. package/dist/formatters/promote.js.map +1 -0
  348. package/dist/formatters/proposals.d.ts +45 -0
  349. package/dist/formatters/proposals.d.ts.map +1 -0
  350. package/dist/formatters/proposals.js +62 -0
  351. package/dist/formatters/proposals.js.map +1 -0
  352. package/dist/formatters/relate.d.ts +14 -0
  353. package/dist/formatters/relate.d.ts.map +1 -0
  354. package/dist/formatters/relate.js +16 -0
  355. package/dist/formatters/relate.js.map +1 -0
  356. package/dist/formatters/search.d.ts +0 -4
  357. package/dist/formatters/search.d.ts.map +1 -1
  358. package/dist/formatters/search.js +4 -1
  359. package/dist/formatters/search.js.map +1 -1
  360. package/dist/formatters/session.d.ts +11 -0
  361. package/dist/formatters/session.d.ts.map +1 -0
  362. package/dist/formatters/session.js +51 -0
  363. package/dist/formatters/session.js.map +1 -0
  364. package/dist/formatters/update.d.ts +17 -0
  365. package/dist/formatters/update.d.ts.map +1 -0
  366. package/dist/formatters/update.js +45 -0
  367. package/dist/formatters/update.js.map +1 -0
  368. package/dist/formatters/verify.d.ts +11 -0
  369. package/dist/formatters/verify.d.ts.map +1 -0
  370. package/dist/formatters/verify.js +11 -0
  371. package/dist/formatters/verify.js.map +1 -0
  372. package/dist/generators/__tests__/surface-profiles.test.d.ts +2 -0
  373. package/dist/generators/__tests__/surface-profiles.test.d.ts.map +1 -0
  374. package/dist/generators/__tests__/surface-profiles.test.js +89 -0
  375. package/dist/generators/__tests__/surface-profiles.test.js.map +1 -0
  376. package/dist/generators/adapters.d.ts +44 -0
  377. package/dist/generators/adapters.d.ts.map +1 -0
  378. package/dist/generators/adapters.js +290 -0
  379. package/dist/generators/adapters.js.map +1 -0
  380. package/dist/generators/adapters.test.d.ts +2 -0
  381. package/dist/generators/adapters.test.d.ts.map +1 -0
  382. package/dist/generators/adapters.test.js +27 -0
  383. package/dist/generators/adapters.test.js.map +1 -0
  384. package/dist/generators/archetypes.d.ts +52 -0
  385. package/dist/generators/archetypes.d.ts.map +1 -0
  386. package/dist/generators/archetypes.js +153 -0
  387. package/dist/generators/archetypes.js.map +1 -0
  388. package/dist/generators/archetypes.test.d.ts +2 -0
  389. package/dist/generators/archetypes.test.d.ts.map +1 -0
  390. package/dist/generators/archetypes.test.js +237 -0
  391. package/dist/generators/archetypes.test.js.map +1 -0
  392. package/dist/generators/briefing-md.d.ts +8 -0
  393. package/dist/generators/briefing-md.d.ts.map +1 -0
  394. package/dist/generators/briefing-md.js +51 -0
  395. package/dist/generators/briefing-md.js.map +1 -0
  396. package/dist/generators/chain-classifier.d.ts +49 -0
  397. package/dist/generators/chain-classifier.d.ts.map +1 -0
  398. package/dist/generators/chain-classifier.js +180 -0
  399. package/dist/generators/chain-classifier.js.map +1 -0
  400. package/dist/generators/chain-classifier.test.d.ts +2 -0
  401. package/dist/generators/chain-classifier.test.d.ts.map +1 -0
  402. package/dist/generators/chain-classifier.test.js +257 -0
  403. package/dist/generators/chain-classifier.test.js.map +1 -0
  404. package/dist/generators/chain-rules.d.ts +42 -0
  405. package/dist/generators/chain-rules.d.ts.map +1 -0
  406. package/dist/generators/chain-rules.js +144 -0
  407. package/dist/generators/chain-rules.js.map +1 -0
  408. package/dist/generators/chain-rules.test.d.ts +2 -0
  409. package/dist/generators/chain-rules.test.d.ts.map +1 -0
  410. package/dist/generators/chain-rules.test.js +179 -0
  411. package/dist/generators/chain-rules.test.js.map +1 -0
  412. package/dist/generators/context-md.d.ts +8 -0
  413. package/dist/generators/context-md.d.ts.map +1 -0
  414. package/dist/generators/context-md.js +134 -0
  415. package/dist/generators/context-md.js.map +1 -0
  416. package/dist/generators/handshake-diff.d.ts +67 -0
  417. package/dist/generators/handshake-diff.d.ts.map +1 -0
  418. package/dist/generators/handshake-diff.js +183 -0
  419. package/dist/generators/handshake-diff.js.map +1 -0
  420. package/dist/generators/handshake-diff.test.d.ts +2 -0
  421. package/dist/generators/handshake-diff.test.d.ts.map +1 -0
  422. package/dist/generators/handshake-diff.test.js +264 -0
  423. package/dist/generators/handshake-diff.test.js.map +1 -0
  424. package/dist/generators/portable-knowledge.d.ts +143 -0
  425. package/dist/generators/portable-knowledge.d.ts.map +1 -0
  426. package/dist/generators/portable-knowledge.js +504 -0
  427. package/dist/generators/portable-knowledge.js.map +1 -0
  428. package/dist/generators/portable-knowledge.test.d.ts +2 -0
  429. package/dist/generators/portable-knowledge.test.d.ts.map +1 -0
  430. package/dist/generators/portable-knowledge.test.js +927 -0
  431. package/dist/generators/portable-knowledge.test.js.map +1 -0
  432. package/dist/generators/surface-profiles.d.ts +49 -0
  433. package/dist/generators/surface-profiles.d.ts.map +1 -0
  434. package/dist/generators/surface-profiles.js +98 -0
  435. package/dist/generators/surface-profiles.js.map +1 -0
  436. package/dist/index.d.ts +3 -2
  437. package/dist/index.d.ts.map +1 -1
  438. package/dist/index.js +637 -37
  439. package/dist/index.js.map +1 -1
  440. package/dist/lib/activation.d.ts +28 -0
  441. package/dist/lib/activation.d.ts.map +1 -0
  442. package/dist/lib/activation.js +57 -0
  443. package/dist/lib/activation.js.map +1 -0
  444. package/dist/lib/activation.test.d.ts +6 -0
  445. package/dist/lib/activation.test.d.ts.map +1 -0
  446. package/dist/lib/activation.test.js +121 -0
  447. package/dist/lib/activation.test.js.map +1 -0
  448. package/dist/lib/client.d.ts +61 -0
  449. package/dist/lib/client.d.ts.map +1 -1
  450. package/dist/lib/client.js +262 -12
  451. package/dist/lib/client.js.map +1 -1
  452. package/dist/lib/config.d.ts +84 -4
  453. package/dist/lib/config.d.ts.map +1 -1
  454. package/dist/lib/config.js +318 -39
  455. package/dist/lib/config.js.map +1 -1
  456. package/dist/lib/constants.d.ts +42 -0
  457. package/dist/lib/constants.d.ts.map +1 -0
  458. package/dist/lib/constants.js +76 -0
  459. package/dist/lib/constants.js.map +1 -0
  460. package/dist/lib/conversation-engine.d.ts +45 -0
  461. package/dist/lib/conversation-engine.d.ts.map +1 -0
  462. package/dist/lib/conversation-engine.js +112 -0
  463. package/dist/lib/conversation-engine.js.map +1 -0
  464. package/dist/lib/conversation-phases.d.ts +59 -0
  465. package/dist/lib/conversation-phases.d.ts.map +1 -0
  466. package/dist/lib/conversation-phases.js +11 -0
  467. package/dist/lib/conversation-phases.js.map +1 -0
  468. package/dist/lib/conversation-signals.d.ts +30 -0
  469. package/dist/lib/conversation-signals.d.ts.map +1 -0
  470. package/dist/lib/conversation-signals.js +64 -0
  471. package/dist/lib/conversation-signals.js.map +1 -0
  472. package/dist/lib/deployment.d.ts +23 -0
  473. package/dist/lib/deployment.d.ts.map +1 -0
  474. package/dist/lib/deployment.js +78 -0
  475. package/dist/lib/deployment.js.map +1 -0
  476. package/dist/lib/deployment.test.d.ts +5 -0
  477. package/dist/lib/deployment.test.d.ts.map +1 -0
  478. package/dist/lib/deployment.test.js +54 -0
  479. package/dist/lib/deployment.test.js.map +1 -0
  480. package/dist/lib/errors.d.ts +58 -0
  481. package/dist/lib/errors.d.ts.map +1 -0
  482. package/dist/lib/errors.js +67 -0
  483. package/dist/lib/errors.js.map +1 -0
  484. package/dist/lib/experiment.d.ts +18 -0
  485. package/dist/lib/experiment.d.ts.map +1 -0
  486. package/dist/lib/experiment.js +28 -0
  487. package/dist/lib/experiment.js.map +1 -0
  488. package/dist/lib/format.d.ts +10 -0
  489. package/dist/lib/format.d.ts.map +1 -0
  490. package/dist/lib/format.js +27 -0
  491. package/dist/lib/format.js.map +1 -0
  492. package/dist/lib/glossary.d.ts +19 -0
  493. package/dist/lib/glossary.d.ts.map +1 -0
  494. package/dist/lib/glossary.js +53 -0
  495. package/dist/lib/glossary.js.map +1 -0
  496. package/dist/lib/onboarding-path-b.d.ts +10 -0
  497. package/dist/lib/onboarding-path-b.d.ts.map +1 -0
  498. package/dist/lib/onboarding-path-b.js +214 -0
  499. package/dist/lib/onboarding-path-b.js.map +1 -0
  500. package/dist/lib/onboarding-phases.d.ts +9 -0
  501. package/dist/lib/onboarding-phases.d.ts.map +1 -0
  502. package/dist/lib/onboarding-phases.js +120 -0
  503. package/dist/lib/onboarding-phases.js.map +1 -0
  504. package/dist/lib/onboarding-shared.d.ts +81 -0
  505. package/dist/lib/onboarding-shared.d.ts.map +1 -0
  506. package/dist/lib/onboarding-shared.js +190 -0
  507. package/dist/lib/onboarding-shared.js.map +1 -0
  508. package/dist/lib/onboarding-topics.d.ts +27 -0
  509. package/dist/lib/onboarding-topics.d.ts.map +1 -0
  510. package/dist/lib/onboarding-topics.js +57 -0
  511. package/dist/lib/onboarding-topics.js.map +1 -0
  512. package/dist/lib/onboarding.d.ts +17 -0
  513. package/dist/lib/onboarding.d.ts.map +1 -0
  514. package/dist/lib/onboarding.js +350 -0
  515. package/dist/lib/onboarding.js.map +1 -0
  516. package/dist/lib/profiles.d.ts +39 -0
  517. package/dist/lib/profiles.d.ts.map +1 -0
  518. package/dist/lib/profiles.js +180 -0
  519. package/dist/lib/profiles.js.map +1 -0
  520. package/dist/lib/prompts.d.ts +65 -0
  521. package/dist/lib/prompts.d.ts.map +1 -0
  522. package/dist/lib/prompts.js +132 -0
  523. package/dist/lib/prompts.js.map +1 -0
  524. package/dist/lib/repo-detect.d.ts +33 -0
  525. package/dist/lib/repo-detect.d.ts.map +1 -0
  526. package/dist/lib/repo-detect.js +83 -0
  527. package/dist/lib/repo-detect.js.map +1 -0
  528. package/dist/lib/runner.d.ts +33 -0
  529. package/dist/lib/runner.d.ts.map +1 -0
  530. package/dist/lib/runner.js +79 -0
  531. package/dist/lib/runner.js.map +1 -0
  532. package/dist/lib/session.d.ts +17 -0
  533. package/dist/lib/session.d.ts.map +1 -0
  534. package/dist/lib/session.js +43 -0
  535. package/dist/lib/session.js.map +1 -0
  536. package/dist/lib/spinner.d.ts +27 -0
  537. package/dist/lib/spinner.d.ts.map +1 -0
  538. package/dist/lib/spinner.js +76 -0
  539. package/dist/lib/spinner.js.map +1 -0
  540. package/dist/lib/spinner.test.d.ts +2 -0
  541. package/dist/lib/spinner.test.d.ts.map +1 -0
  542. package/dist/lib/spinner.test.js +39 -0
  543. package/dist/lib/spinner.test.js.map +1 -0
  544. package/dist/lib/strip.d.ts +12 -0
  545. package/dist/lib/strip.d.ts.map +1 -0
  546. package/dist/lib/strip.js +41 -0
  547. package/dist/lib/strip.js.map +1 -0
  548. package/dist/lib/style.d.ts +94 -0
  549. package/dist/lib/style.d.ts.map +1 -0
  550. package/dist/lib/style.js +167 -0
  551. package/dist/lib/style.js.map +1 -0
  552. package/dist/lib/style.test.d.ts +7 -0
  553. package/dist/lib/style.test.d.ts.map +1 -0
  554. package/dist/lib/style.test.js +263 -0
  555. package/dist/lib/style.test.js.map +1 -0
  556. package/dist/lib/telemetry.d.ts +15 -0
  557. package/dist/lib/telemetry.d.ts.map +1 -0
  558. package/dist/lib/telemetry.js +47 -0
  559. package/dist/lib/telemetry.js.map +1 -0
  560. package/dist/lib/wizard-surfaces.d.ts +47 -0
  561. package/dist/lib/wizard-surfaces.d.ts.map +1 -0
  562. package/dist/lib/wizard-surfaces.js +176 -0
  563. package/dist/lib/wizard-surfaces.js.map +1 -0
  564. package/dist/lib/wizard-surfaces.test.d.ts +2 -0
  565. package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
  566. package/dist/lib/wizard-surfaces.test.js +127 -0
  567. package/dist/lib/wizard-surfaces.test.js.map +1 -0
  568. package/dist/lib/wizard-trust.d.ts +31 -0
  569. package/dist/lib/wizard-trust.d.ts.map +1 -0
  570. package/dist/lib/wizard-trust.js +66 -0
  571. package/dist/lib/wizard-trust.js.map +1 -0
  572. package/dist/lib/wizard-trust.test.d.ts +2 -0
  573. package/dist/lib/wizard-trust.test.d.ts.map +1 -0
  574. package/dist/lib/wizard-trust.test.js +32 -0
  575. package/dist/lib/wizard-trust.test.js.map +1 -0
  576. package/dist/lib/workspace-probe.d.ts +16 -0
  577. package/dist/lib/workspace-probe.d.ts.map +1 -0
  578. package/dist/lib/workspace-probe.js +33 -0
  579. package/dist/lib/workspace-probe.js.map +1 -0
  580. package/package.json +9 -4
  581. package/templates/archetypes/boundary.md +23 -0
  582. package/templates/archetypes/constraint.md +23 -0
  583. package/templates/archetypes/convention.md +23 -0
  584. package/templates/archetypes/policy.md +23 -0
  585. package/templates/archetypes/quality-gate.md +23 -0
  586. package/templates/archetypes/workflow.md +23 -0
  587. package/templates/general/code-integrity.md +11 -0
  588. package/templates/general/getting-started.md +12 -0
  589. package/templates/node-ts/code-integrity.md +13 -0
  590. package/templates/node-ts/testing.md +12 -0
  591. package/templates/python/code-integrity.md +13 -0
  592. package/templates/python/testing.md +12 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ * pb audit <BET-ID> [BET-ID...] — automated STD-113 hygiene checker.
3
+ * BET-182 Slice 2: CLI command + auto-fix.
4
+ *
5
+ * Calls chain.auditBet via MCP, formats result for TTY or JSON,
6
+ * and exits with code based on verdict:
7
+ * 0 = pass, 1 = fail, 2 = warn, 3 = error
8
+ *
9
+ * Flags:
10
+ * --phase shaping|handoff — override phase detection
11
+ * --gate gate-name — run only specified gate(s), repeatable
12
+ * --fix — auto-execute "exact" fixType fixes via pb update
13
+ * --verbose — show all gates including PASS detail
14
+ *
15
+ * Chain: BET-182, STD-113, STD-65 (structured output), STD-101
16
+ */
17
+ export interface AuditOptions {
18
+ entryIds: string[];
19
+ phase?: 'shaping' | 'handoff';
20
+ gate?: string[];
21
+ fix?: boolean;
22
+ verbose?: boolean;
23
+ }
24
+ export declare function runAudit(options: AuditOptions): Promise<void>;
25
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsJD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CnE"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * pb audit <BET-ID> [BET-ID...] — automated STD-113 hygiene checker.
3
+ * BET-182 Slice 2: CLI command + auto-fix.
4
+ *
5
+ * Calls chain.auditBet via MCP, formats result for TTY or JSON,
6
+ * and exits with code based on verdict:
7
+ * 0 = pass, 1 = fail, 2 = warn, 3 = error
8
+ *
9
+ * Flags:
10
+ * --phase shaping|handoff — override phase detection
11
+ * --gate gate-name — run only specified gate(s), repeatable
12
+ * --fix — auto-execute "exact" fixType fixes via pb update
13
+ * --verbose — show all gates including PASS detail
14
+ *
15
+ * Chain: BET-182, STD-113, STD-65 (structured output), STD-101
16
+ */
17
+ import { getConfigOrGuide } from '../lib/config.js';
18
+ import { mcpCall, mcpCallWithSession } from '../lib/client.js';
19
+ import { isJsonMode } from '../lib/runner.js';
20
+ import { readSession } from '../lib/session.js';
21
+ import { stripConvexInternals } from '../lib/strip.js';
22
+ import { formatAudit, formatBatchSummary } from '../formatters/audit.js';
23
+ // Exit codes
24
+ const EXIT_PASS = 0;
25
+ const EXIT_FAIL = 1;
26
+ const EXIT_WARN = 2;
27
+ const EXIT_ERROR = 3;
28
+ function parseExactFixes(entryId, gates) {
29
+ const actions = [];
30
+ for (const gate of gates) {
31
+ if (gate.status !== 'fail' && gate.status !== 'warn')
32
+ continue;
33
+ if (gate.fixType !== 'exact' || !gate.fix)
34
+ continue;
35
+ // Parse "Set field '<key>' to '<value>'" pattern
36
+ const fieldMatch = gate.fix.match(/^Set field '([^']+)' to '([^']+)'$/);
37
+ if (fieldMatch) {
38
+ actions.push({
39
+ type: 'field',
40
+ entryId,
41
+ fieldKey: fieldMatch[1],
42
+ fieldValue: fieldMatch[2],
43
+ });
44
+ }
45
+ }
46
+ return actions;
47
+ }
48
+ async function executeFixActions(actions, json) {
49
+ let applied = 0;
50
+ for (const action of actions) {
51
+ if (action.type === 'field') {
52
+ try {
53
+ await mcpCallWithSession('chain.updateEntry', {
54
+ entryId: action.entryId,
55
+ data: { [action.fieldKey]: action.fieldValue },
56
+ changeNote: `Auto-fix via pb audit: set ${action.fieldKey}`,
57
+ });
58
+ applied++;
59
+ if (!json) {
60
+ process.stderr.write(` Fixed: ${action.fieldKey} = ${action.fieldValue}\n`);
61
+ }
62
+ }
63
+ catch (err) {
64
+ const msg = err instanceof Error ? err.message : String(err);
65
+ if (!json) {
66
+ process.stderr.write(` Fix failed (${action.fieldKey}): ${msg}\n`);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return applied;
72
+ }
73
+ // ─── Single audit ───────────────────────────────────────────────────────────
74
+ async function auditOne(entryId, options) {
75
+ const { phase, gate: gateFilter, fix, verbose } = options;
76
+ const json = isJsonMode();
77
+ // Build MCP args
78
+ const args = { entryId };
79
+ if (phase)
80
+ args.phase = phase;
81
+ let result;
82
+ try {
83
+ result = await mcpCall('chain.auditBet', args);
84
+ }
85
+ catch (err) {
86
+ const msg = err instanceof Error ? err.message : String(err);
87
+ if (json) {
88
+ process.stderr.write(JSON.stringify({ error: msg, entryId }) + '\n');
89
+ }
90
+ else {
91
+ process.stderr.write(`Error auditing ${entryId}: ${msg}\n`);
92
+ }
93
+ return { result: null, exitCode: EXIT_ERROR };
94
+ }
95
+ // --fix: auto-execute exact fixes, then rerun once
96
+ if (fix) {
97
+ const session = readSession();
98
+ if (!session) {
99
+ if (!json) {
100
+ process.stderr.write('--fix requires an active session. Run `pb session start` first.\n');
101
+ }
102
+ // Still show the result, just skip fixing
103
+ }
104
+ else {
105
+ const exactFixes = parseExactFixes(entryId, result.gates);
106
+ if (exactFixes.length > 0) {
107
+ if (!json)
108
+ process.stderr.write(`\nAuto-fixing ${exactFixes.length} issue(s) on ${entryId}...\n`);
109
+ const applied = await executeFixActions(exactFixes, json);
110
+ if (applied > 0) {
111
+ // Rerun audit once after fixes
112
+ if (!json)
113
+ process.stderr.write(`\nRe-auditing ${entryId} after ${applied} fix(es)...\n`);
114
+ try {
115
+ result = await mcpCall('chain.auditBet', args);
116
+ }
117
+ catch (err) {
118
+ const msg = err instanceof Error ? err.message : String(err);
119
+ if (!json)
120
+ process.stderr.write(`Re-audit failed: ${msg}\n`);
121
+ // Use original result
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+ // Output
128
+ if (json) {
129
+ // Apply gate filter for JSON output too
130
+ const output = { ...stripConvexInternals(result) };
131
+ if (gateFilter && gateFilter.length > 0) {
132
+ output.gates = result.gates.filter((g) => gateFilter.includes(g.gate));
133
+ }
134
+ process.stdout.write(JSON.stringify(output) + '\n');
135
+ }
136
+ else {
137
+ process.stdout.write(formatAudit(result, { verbose, gateFilter }) + '\n');
138
+ }
139
+ // Map verdict to exit code
140
+ const exitCode = result.verdict === 'pass' ? EXIT_PASS
141
+ : result.verdict === 'fail' ? EXIT_FAIL
142
+ : EXIT_WARN;
143
+ return { result, exitCode };
144
+ }
145
+ // ─── Entry point ────────────────────────────────────────────────────────────
146
+ export async function runAudit(options) {
147
+ const config = await getConfigOrGuide(() => runAudit(options));
148
+ if (!config)
149
+ return;
150
+ const { entryIds, ...rest } = options;
151
+ if (entryIds.length === 1) {
152
+ // Single audit
153
+ const { exitCode } = await auditOne(entryIds[0], rest);
154
+ process.exit(exitCode);
155
+ }
156
+ // Batch mode: audit multiple bets sequentially
157
+ const json = isJsonMode();
158
+ const results = [];
159
+ let worstExit = EXIT_PASS;
160
+ for (const entryId of entryIds) {
161
+ const { result, exitCode } = await auditOne(entryId, rest);
162
+ if (result)
163
+ results.push(result);
164
+ if (exitCode > worstExit)
165
+ worstExit = exitCode;
166
+ // Separator between entries in TTY mode
167
+ if (!json && entryIds.indexOf(entryId) < entryIds.length - 1) {
168
+ process.stdout.write('\n---\n\n');
169
+ }
170
+ }
171
+ // Batch summary
172
+ if (results.length > 1) {
173
+ if (json) {
174
+ process.stdout.write(JSON.stringify({
175
+ batch: true,
176
+ count: results.length,
177
+ passed: results.filter((r) => r.verdict === 'pass').length,
178
+ failed: results.filter((r) => r.verdict === 'fail').length,
179
+ warned: results.filter((r) => r.verdict === 'warn').length,
180
+ }) + '\n');
181
+ }
182
+ else {
183
+ process.stdout.write(formatBatchSummary(results) + '\n');
184
+ }
185
+ }
186
+ process.exit(worstExit);
187
+ }
188
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runBrandPack(processArgv: string[]): void;
2
+ //# sourceMappingURL=brand-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-pack.d.ts","sourceRoot":"","sources":["../../src/commands/brand-pack.ts"],"names":[],"mappings":"AAeA,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAaxD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Thin wrapper: forwards argv to repo scripts/brand-pack.mjs (internal marketing, OpenRouter).
3
+ * Not a Chain feature — no session required.
4
+ */
5
+ import { spawnSync } from 'node:child_process';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { dirname, resolve } from 'node:path';
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ /** dist/commands -> dist -> packages/cli -> packages -> repo root */
10
+ function repoRootFromCliCommands() {
11
+ return resolve(__dirname, '../../../..');
12
+ }
13
+ export function runBrandPack(processArgv) {
14
+ const idx = processArgv.findIndex((a) => a === 'brand-pack');
15
+ const forwarded = idx >= 0 ? processArgv.slice(idx + 1) : [];
16
+ const root = repoRootFromCliCommands();
17
+ const script = resolve(root, 'scripts/brand-pack.mjs');
18
+ const result = spawnSync(process.execPath, [script, ...forwarded], {
19
+ cwd: root,
20
+ stdio: 'inherit',
21
+ env: process.env,
22
+ });
23
+ process.exit(result.status === null ? 1 : result.status);
24
+ }
25
+ //# sourceMappingURL=brand-pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-pack.js","sourceRoot":"","sources":["../../src/commands/brand-pack.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,qEAAqE;AACrE,SAAS,uBAAuB;IAC/B,OAAO,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,WAAqB;IACjD,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE;QAClE,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;KAChB,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * pb brief — incremental brief delta or compound intelligence query.
3
+ * BET-239 Slice 4 (incremental) + Slice 5 (compound queries).
4
+ *
5
+ * Usage:
6
+ * pb brief --skill <name> --since-last — incremental delta for a skill (E4)
7
+ * pb brief steering — compound steering brief (E6)
8
+ * pb brief confidence — compound confidence pass (E6)
9
+ * pb brief delta [--since <ISO>] — compound delta sync (E6)
10
+ *
11
+ * Chain: DEC-299 (agent-native, JSON-default), STD-65 (structured, parseable, minimal)
12
+ */
13
+ declare const COMPOUND_TYPES: readonly ["steering", "confidence", "delta"];
14
+ type CompoundType = (typeof COMPOUND_TYPES)[number];
15
+ declare function isCompoundType(value: string): value is CompoundType;
16
+ /** Run incremental brief for a skill (existing E4 behavior). */
17
+ export declare function runBrief(options: {
18
+ skill: string;
19
+ sinceLast?: boolean;
20
+ }): Promise<void>;
21
+ /** Run compound brief query (E6 — steering, confidence, delta). */
22
+ export declare function runCompoundBrief(options: {
23
+ type: CompoundType;
24
+ since?: string;
25
+ }): Promise<void>;
26
+ export { isCompoundType, COMPOUND_TYPES };
27
+ export type { CompoundType };
28
+ //# sourceMappingURL=brief.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,QAAA,MAAM,cAAc,8CAA+C,CAAC;AACpE,KAAK,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAE5D;AAED,gEAAgE;AAChE,wBAAsB,QAAQ,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB7F;AAED,mEAAmE;AACnE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * pb brief — incremental brief delta or compound intelligence query.
3
+ * BET-239 Slice 4 (incremental) + Slice 5 (compound queries).
4
+ *
5
+ * Usage:
6
+ * pb brief --skill <name> --since-last — incremental delta for a skill (E4)
7
+ * pb brief steering — compound steering brief (E6)
8
+ * pb brief confidence — compound confidence pass (E6)
9
+ * pb brief delta [--since <ISO>] — compound delta sync (E6)
10
+ *
11
+ * Chain: DEC-299 (agent-native, JSON-default), STD-65 (structured, parseable, minimal)
12
+ */
13
+ import { getConfigOrGuide } from '../lib/config.js';
14
+ import { mcpCall } from '../lib/client.js';
15
+ import { runCliCommand } from '../lib/runner.js';
16
+ import { formatBrief, formatCompoundBrief, } from '../formatters/brief.js';
17
+ import { CLIError, ErrorCode } from '../lib/errors.js';
18
+ const COMPOUND_TYPES = ['steering', 'confidence', 'delta'];
19
+ function isCompoundType(value) {
20
+ return COMPOUND_TYPES.includes(value);
21
+ }
22
+ /** Run incremental brief for a skill (existing E4 behavior). */
23
+ export async function runBrief(options) {
24
+ const config = await getConfigOrGuide(() => runBrief(options));
25
+ if (!config)
26
+ return;
27
+ await runCliCommand({
28
+ fn: async () => {
29
+ const result = await mcpCall('chain.incrementalChanges', {
30
+ skill: options.skill,
31
+ });
32
+ // Record the brief run so the next call sees an updated "since last brief" timestamp.
33
+ // Fire-and-forget: recording failure should not block the CLI output.
34
+ const surfacedIds = result.newEntries
35
+ .map((e) => e.entryId)
36
+ .filter((id) => id !== null);
37
+ mcpCall('chain.recordBriefRun', {
38
+ skill: options.skill,
39
+ entriesSurfaced: surfacedIds,
40
+ timestamp: Date.now(),
41
+ }).catch(() => { });
42
+ return result;
43
+ },
44
+ formatPretty: (result) => formatBrief(result, options.skill),
45
+ });
46
+ }
47
+ /** Run compound brief query (E6 — steering, confidence, delta). */
48
+ export async function runCompoundBrief(options) {
49
+ const config = await getConfigOrGuide(() => runCompoundBrief(options));
50
+ if (!config)
51
+ return;
52
+ await runCliCommand({
53
+ fn: async () => {
54
+ const args = {
55
+ type: options.type,
56
+ };
57
+ // For delta type, parse the --since option
58
+ if (options.type === 'delta' && options.since) {
59
+ const sinceMs = Date.parse(options.since);
60
+ if (isNaN(sinceMs)) {
61
+ throw new CLIError(`Invalid --since timestamp: '${options.since}'.`, {
62
+ code: ErrorCode.VALIDATION_FAILED,
63
+ category: 'validation',
64
+ guidance: `Use ISO 8601 format (e.g. '2026-03-24T00:00:00Z').`,
65
+ });
66
+ }
67
+ args.since = sinceMs;
68
+ }
69
+ return await mcpCall('chain.compoundQuery', args);
70
+ },
71
+ formatPretty: (result) => formatCompoundBrief(result),
72
+ });
73
+ }
74
+ export { isCompoundType, COMPOUND_TYPES };
75
+ //# sourceMappingURL=brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/commands/brief.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * pb capture — write knowledge to the Chain during a CLI session.
3
+ * Calls resolveCollection (classification) → createEntry (draft).
4
+ * Shows rich receipt per FEAT-126 (capture receipts with correction affordance).
5
+ * Requires active session (DEC-9, BR-8).
6
+ * BET-181 Slice 0: uses isJsonMode() for output branching. Existing --json flag
7
+ * is preserved for backward compatibility (it sets output mode via the runner).
8
+ */
9
+ interface CaptureOptions {
10
+ text: string;
11
+ name?: string;
12
+ description?: string;
13
+ collection?: string;
14
+ link?: string;
15
+ type?: string;
16
+ /** BET-240 E2: Source reference URI (e.g. "meeting-2026-03-28.md"). */
17
+ sourceRef?: string;
18
+ /** BET-240 E2: Verbatim excerpt from the source. */
19
+ sourceExcerpt?: string;
20
+ /** @deprecated Use global --json flag instead. Preserved for backward compatibility. */
21
+ json?: boolean;
22
+ }
23
+ export declare function runCapture(options: CaptureOptions): Promise<void>;
24
+ export {};
25
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmDH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA4ED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyJvE"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * pb capture — write knowledge to the Chain during a CLI session.
3
+ * Calls resolveCollection (classification) → createEntry (draft).
4
+ * Shows rich receipt per FEAT-126 (capture receipts with correction affordance).
5
+ * Requires active session (DEC-9, BR-8).
6
+ * BET-181 Slice 0: uses isJsonMode() for output branching. Existing --json flag
7
+ * is preserved for backward compatibility (it sets output mode via the runner).
8
+ */
9
+ import { getConfigOrGuide } from '../lib/config.js';
10
+ import { mcpCallWithSession } from '../lib/client.js';
11
+ import { readSession, addCapturedEntry } from '../lib/session.js';
12
+ import { isJsonMode } from '../lib/runner.js';
13
+ import { formatCaptureReceipt } from '../formatters/capture.js';
14
+ import { checkActivation } from '../lib/activation.js';
15
+ import { progress } from '../lib/style.js';
16
+ import { CLIError, ErrorCode } from '../lib/errors.js';
17
+ /**
18
+ * Infer an ISO date (YYYY-MM-DD) from free-text values.
19
+ *
20
+ * NOTE: This function is duplicated in packages/mcp-server/src/tools/smart-capture.ts.
21
+ * The two packages build in isolation (TEN-174, BR-25) so they cannot share source.
22
+ * If you change the logic here, update the MCP server copy too.
23
+ */
24
+ function inferSourceDate(...values) {
25
+ const combined = values
26
+ .filter((value) => typeof value === 'string' && value.trim().length > 0)
27
+ .join('\n');
28
+ if (!combined)
29
+ return undefined;
30
+ const isoMatch = combined.match(/\b(20\d{2}-\d{2}-\d{2})\b/);
31
+ if (isoMatch)
32
+ return isoMatch[1];
33
+ const monthMatch = combined.match(/\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+(\d{1,2})(?:st|nd|rd|th)?(?:,?\s+(20\d{2}))?\b/i);
34
+ if (!monthMatch)
35
+ return undefined;
36
+ const monthIndex = [
37
+ 'january',
38
+ 'february',
39
+ 'march',
40
+ 'april',
41
+ 'may',
42
+ 'june',
43
+ 'july',
44
+ 'august',
45
+ 'september',
46
+ 'october',
47
+ 'november',
48
+ 'december',
49
+ ].indexOf(monthMatch[1].toLowerCase());
50
+ if (monthIndex < 0)
51
+ return undefined;
52
+ const inferredYear = monthMatch[3] ?? combined.match(/\b(20\d{2})\b/)?.[1] ?? String(new Date().getUTCFullYear());
53
+ return `${inferredYear}-${String(monthIndex + 1).padStart(2, '0')}-${monthMatch[2].padStart(2, '0')}`;
54
+ }
55
+ /**
56
+ * Known entry ID prefix → collection slug mapping.
57
+ * Mirrors idPrefix values from SEED_CLASSIFICATION_REGISTRY (convex/lib/seedClassificationRegistry.ts).
58
+ * CLI can't import from Convex (separate build, BR-25), so this is a local copy.
59
+ * If a new collection is added, update both places.
60
+ */
61
+ const PREFIX_TO_COLLECTION = {
62
+ PRI: 'principles', STD: 'standards', BR: 'business-rules', POL: 'policies',
63
+ PAT: 'patterns', GLO: 'glossary', FEAT: 'features', ARCH: 'architecture',
64
+ DEC: 'decisions', STR: 'strategy', ST: 'semantic-types', MAP: 'maps',
65
+ TEN: 'tensions', TEAM: 'teams', ROL: 'roles', ASM: 'assumptions',
66
+ LAND: 'landscape', INS: 'insights', TASK: 'tasks', MIL: 'milestones',
67
+ WS: 'workstreams', INI: 'initiatives', WP: 'work-packages', BET: 'work-packages',
68
+ AUD: 'audiences', KEY: 'key-results', QUE: 'questions', PROD: 'products',
69
+ OPP: 'opportunities', EXP: 'experiments', FLO: 'flows',
70
+ };
71
+ /**
72
+ * Extract a known ID prefix hint from capture text.
73
+ * Pattern: "FLO: description" or "TEN: something broken" — prefix must be uppercase,
74
+ * followed by colon and optional whitespace, then the actual text.
75
+ * Returns the resolved collection slug and the cleaned text (prefix stripped).
76
+ */
77
+ function extractPrefixHint(text) {
78
+ const match = text.match(/^([A-Z]{2,4}):\s*(.+)$/s);
79
+ if (!match)
80
+ return { resolvedCollection: null, cleanText: text };
81
+ const [, prefix, rest] = match;
82
+ const slug = PREFIX_TO_COLLECTION[prefix];
83
+ if (!slug)
84
+ return { resolvedCollection: null, cleanText: text };
85
+ return { resolvedCollection: slug, cleanText: rest.trim() };
86
+ }
87
+ export async function runCapture(options) {
88
+ const config = await getConfigOrGuide(() => runCapture(options));
89
+ if (!config)
90
+ return;
91
+ // Support both legacy --json flag and global output mode (DEC-299, backward compat)
92
+ const json = isJsonMode() || options.json === true;
93
+ // Require active session (DEC-9, BR-8)
94
+ const session = readSession();
95
+ if (!session) {
96
+ throw new CLIError('No active session.', {
97
+ code: ErrorCode.SESSION_REQUIRED,
98
+ category: 'session',
99
+ guidance: 'Run `pb session start` first. Write access requires a tracked session (DEC-9).',
100
+ });
101
+ }
102
+ // BET-277 fix: Extract known ID prefix hints (e.g. "FLO: description" → collection=flows).
103
+ // When the user explicitly prefixes with a known entry ID prefix, treat it as a collection
104
+ // override — strip the prefix from the name and route directly. No classification needed.
105
+ const { resolvedCollection: prefixCollection, cleanText } = extractPrefixHint(options.text);
106
+ const entryName = options.name ?? cleanText;
107
+ const entryDescription = options.description ?? cleanText;
108
+ // Phase 1: Resolve collection (classification)
109
+ let collectionSlug;
110
+ let classification = null;
111
+ if (options.collection) {
112
+ // Explicit collection — skip classification
113
+ collectionSlug = options.collection;
114
+ }
115
+ else if (prefixCollection) {
116
+ // Prefix hint detected (e.g. "FLO:" → flows) — treat as explicit collection
117
+ collectionSlug = prefixCollection;
118
+ }
119
+ else {
120
+ if (!json)
121
+ progress('Classifying...');
122
+ classification = await mcpCallWithSession('chain.resolveCollection', {
123
+ entryName,
124
+ entryDescription,
125
+ });
126
+ if (!classification) {
127
+ throw new CLIError('Classification needs review before capture can continue.', {
128
+ code: ErrorCode.VALIDATION_FAILED,
129
+ category: 'validation',
130
+ guidance: 'Re-run with `--collection <slug>` to specify the collection explicitly.',
131
+ });
132
+ }
133
+ collectionSlug = classification.collection;
134
+ }
135
+ // Phase 2: Create entry as draft
136
+ if (!json)
137
+ progress(`Capturing to ${collectionSlug}...`);
138
+ const data = { description: entryDescription };
139
+ // Only set date when we can infer a source date from the capture itself.
140
+ const datedCollections = ['tensions', 'decisions', 'insights', 'standards', 'business-rules'];
141
+ const inferredSourceDate = inferSourceDate(entryName, entryDescription, options.sourceRef, options.sourceExcerpt);
142
+ if (datedCollections.includes(collectionSlug) && inferredSourceDate) {
143
+ data.date = inferredSourceDate;
144
+ }
145
+ const result = await mcpCallWithSession('chain.createEntry', {
146
+ collectionSlug,
147
+ name: entryName,
148
+ status: 'draft',
149
+ data,
150
+ sessionId: session.sessionId,
151
+ createdBy: `agent:${session.sessionId}`,
152
+ // BET-240 E2: source provenance — pass through when provided
153
+ ...(options.sourceRef ? { sourceRef: options.sourceRef } : {}),
154
+ ...(options.sourceExcerpt ? { sourceExcerpt: options.sourceExcerpt } : {}),
155
+ });
156
+ // Track in session state
157
+ addCapturedEntry(result.entryId);
158
+ // WP-301 S4: Activation ceremony — show contextual retrieval after first capture
159
+ if (!json) {
160
+ try {
161
+ const activation = await checkActivation(result.entryId);
162
+ if (activation?.isFirst && activation.relatedEntries.length > 0) {
163
+ process.stdout.write('\n Your first capture is on the Chain. Here\'s how it connects:\n');
164
+ for (const rel of activation.relatedEntries.slice(0, 3)) {
165
+ process.stdout.write(` \u2192 ${rel.entryId}: ${rel.name} (${rel.relation})\n`);
166
+ }
167
+ process.stdout.write('\n');
168
+ }
169
+ else if (activation?.isFirst) {
170
+ process.stdout.write('\n Your first capture is on the Chain! Run `pb orient -b` to see your workspace.\n\n');
171
+ }
172
+ }
173
+ catch {
174
+ // Activation is additive — never blocks capture
175
+ }
176
+ }
177
+ // BET-272 S3: Advisory quality hints — from createEntryWithClassification result (BR-144)
178
+ const qualityHints = result.qualityHints ?? [];
179
+ // Phase 3: Link to existing entry if --link provided (TEN-705)
180
+ if (options.link) {
181
+ const linkTarget = options.link.trim();
182
+ const relationType = options.type ?? 'surfaces_tension_in';
183
+ if (linkTarget) {
184
+ await mcpCallWithSession('chain.createEntryRelation', {
185
+ fromEntryId: result.entryId,
186
+ toEntryId: linkTarget,
187
+ type: relationType,
188
+ });
189
+ }
190
+ }
191
+ // BET-271 S1: Determine if any fields were rejected by normalization.
192
+ const rejectedFields = result.normalization?.rejected ?? [];
193
+ const hasRejected = rejectedFields.length > 0;
194
+ // Output
195
+ if (json) {
196
+ // Machine-readable output (TEN-709, DEC-299)
197
+ const output = {
198
+ id: result.entryId,
199
+ collection: collectionSlug,
200
+ confidence: classification?.tier ?? 'explicit',
201
+ };
202
+ if (hasRejected) {
203
+ output.fieldsRejected = true;
204
+ }
205
+ process.stdout.write(JSON.stringify(output) + '\n');
206
+ }
207
+ else {
208
+ process.stdout.write('\n');
209
+ process.stdout.write(formatCaptureReceipt({
210
+ entryId: result.entryId,
211
+ name: entryName,
212
+ collection: collectionSlug,
213
+ status: 'draft',
214
+ classification,
215
+ warnings: result.warnings,
216
+ normalization: result.normalization,
217
+ linkedTo: options.link,
218
+ relationType: options.link ? (options.type ?? 'surfaces_tension_in') : undefined,
219
+ qualityHints,
220
+ relationSuggestions: result.relationSuggestions,
221
+ }) + '\n');
222
+ }
223
+ // BET-271 S1: Throw when fields were rejected — signals "not everything you asked for happened."
224
+ if (hasRejected) {
225
+ throw new CLIError(`Fields rejected: ${rejectedFields.join(', ')}.`, {
226
+ code: ErrorCode.VALIDATION_FAILED,
227
+ category: 'validation',
228
+ guidance: `Run \`pb fields ${collectionSlug}\` to see valid fields.`,
229
+ });
230
+ }
231
+ }
232
+ //# sourceMappingURL=capture.js.map