@productbrain/cli 0.1.0-beta.14 → 0.1.0-beta.14010

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 (1428) hide show
  1. package/README.md +85 -113
  2. package/dist/__tests__/adminConfig.test.d.ts +18 -0
  3. package/dist/__tests__/adminConfig.test.d.ts.map +1 -0
  4. package/dist/__tests__/adminConfig.test.js +221 -0
  5. package/dist/__tests__/adminConfig.test.js.map +1 -0
  6. package/dist/__tests__/canonicalRefs.vocab.test.d.ts +2 -0
  7. package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
  8. package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
  9. package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
  10. package/dist/__tests__/capture-receipt-coaching.test.d.ts +2 -0
  11. package/dist/__tests__/capture-receipt-coaching.test.d.ts.map +1 -0
  12. package/dist/__tests__/capture-receipt-coaching.test.js +119 -0
  13. package/dist/__tests__/capture-receipt-coaching.test.js.map +1 -0
  14. package/dist/__tests__/capture-receipt-role-hint.test.d.ts +2 -0
  15. package/dist/__tests__/capture-receipt-role-hint.test.d.ts.map +1 -0
  16. package/dist/__tests__/capture-receipt-role-hint.test.js +64 -0
  17. package/dist/__tests__/capture-receipt-role-hint.test.js.map +1 -0
  18. package/dist/__tests__/capture-receipt-spine-floor.test.d.ts +2 -0
  19. package/dist/__tests__/capture-receipt-spine-floor.test.d.ts.map +1 -0
  20. package/dist/__tests__/capture-receipt-spine-floor.test.js +95 -0
  21. package/dist/__tests__/capture-receipt-spine-floor.test.js.map +1 -0
  22. package/dist/__tests__/capture.test.js +610 -31
  23. package/dist/__tests__/capture.test.js.map +1 -1
  24. package/dist/__tests__/cli-error-once.test.d.ts +2 -0
  25. package/dist/__tests__/cli-error-once.test.d.ts.map +1 -0
  26. package/dist/__tests__/cli-error-once.test.js +51 -0
  27. package/dist/__tests__/cli-error-once.test.js.map +1 -0
  28. package/dist/__tests__/client-binding-guard.test.d.ts +2 -0
  29. package/dist/__tests__/client-binding-guard.test.d.ts.map +1 -0
  30. package/dist/__tests__/client-binding-guard.test.js +84 -0
  31. package/dist/__tests__/client-binding-guard.test.js.map +1 -0
  32. package/dist/__tests__/coaching-mirror-drift.test.d.ts +2 -0
  33. package/dist/__tests__/coaching-mirror-drift.test.d.ts.map +1 -0
  34. package/dist/__tests__/coaching-mirror-drift.test.js +49 -0
  35. package/dist/__tests__/coaching-mirror-drift.test.js.map +1 -0
  36. package/dist/__tests__/codex-prep-parity.test.d.ts +2 -0
  37. package/dist/__tests__/codex-prep-parity.test.d.ts.map +1 -0
  38. package/dist/__tests__/codex-prep-parity.test.js +82 -0
  39. package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
  40. package/dist/__tests__/config-conversation-profile.test.d.ts +2 -0
  41. package/dist/__tests__/config-conversation-profile.test.d.ts.map +1 -0
  42. package/dist/__tests__/config-conversation-profile.test.js +91 -0
  43. package/dist/__tests__/config-conversation-profile.test.js.map +1 -0
  44. package/dist/__tests__/config-prod-fallthrough.test.d.ts +2 -0
  45. package/dist/__tests__/config-prod-fallthrough.test.d.ts.map +1 -0
  46. package/dist/__tests__/config-prod-fallthrough.test.js +93 -0
  47. package/dist/__tests__/config-prod-fallthrough.test.js.map +1 -0
  48. package/dist/__tests__/config.test.d.ts +8 -0
  49. package/dist/__tests__/config.test.d.ts.map +1 -0
  50. package/dist/__tests__/config.test.js +1109 -0
  51. package/dist/__tests__/config.test.js.map +1 -0
  52. package/dist/__tests__/constants.test.d.ts +2 -0
  53. package/dist/__tests__/constants.test.d.ts.map +1 -0
  54. package/dist/__tests__/constants.test.js +155 -0
  55. package/dist/__tests__/constants.test.js.map +1 -0
  56. package/dist/__tests__/constellation.test.js +56 -36
  57. package/dist/__tests__/constellation.test.js.map +1 -1
  58. package/dist/__tests__/context-strategy.test.js +8 -8
  59. package/dist/__tests__/context-strategy.test.js.map +1 -1
  60. package/dist/__tests__/conversation.test.d.ts +2 -0
  61. package/dist/__tests__/conversation.test.d.ts.map +1 -0
  62. package/dist/__tests__/conversation.test.js +113 -0
  63. package/dist/__tests__/conversation.test.js.map +1 -0
  64. package/dist/__tests__/entry-formatter.test.d.ts +2 -0
  65. package/dist/__tests__/entry-formatter.test.d.ts.map +1 -0
  66. package/dist/__tests__/entry-formatter.test.js +272 -0
  67. package/dist/__tests__/entry-formatter.test.js.map +1 -0
  68. package/dist/__tests__/entry-preflight.test.d.ts +2 -0
  69. package/dist/__tests__/entry-preflight.test.d.ts.map +1 -0
  70. package/dist/__tests__/entry-preflight.test.js +58 -0
  71. package/dist/__tests__/entry-preflight.test.js.map +1 -0
  72. package/dist/__tests__/entryAccept-batch.test.d.ts +2 -0
  73. package/dist/__tests__/entryAccept-batch.test.d.ts.map +1 -0
  74. package/dist/__tests__/entryAccept-batch.test.js +275 -0
  75. package/dist/__tests__/entryAccept-batch.test.js.map +1 -0
  76. package/dist/__tests__/entryAccept.test.d.ts +2 -0
  77. package/dist/__tests__/entryAccept.test.d.ts.map +1 -0
  78. package/dist/__tests__/entryAccept.test.js +573 -0
  79. package/dist/__tests__/entryAccept.test.js.map +1 -0
  80. package/dist/__tests__/entryDiscardResolve.test.d.ts +2 -0
  81. package/dist/__tests__/entryDiscardResolve.test.d.ts.map +1 -0
  82. package/dist/__tests__/entryDiscardResolve.test.js +36 -0
  83. package/dist/__tests__/entryDiscardResolve.test.js.map +1 -0
  84. package/dist/__tests__/entryOwn.test.d.ts +2 -0
  85. package/dist/__tests__/entryOwn.test.d.ts.map +1 -0
  86. package/dist/__tests__/entryOwn.test.js +95 -0
  87. package/dist/__tests__/entryOwn.test.js.map +1 -0
  88. package/dist/__tests__/entryReplace.test.d.ts +2 -0
  89. package/dist/__tests__/entryReplace.test.d.ts.map +1 -0
  90. package/dist/__tests__/entryReplace.test.js +60 -0
  91. package/dist/__tests__/entryReplace.test.js.map +1 -0
  92. package/dist/__tests__/entryTick.test.d.ts +2 -0
  93. package/dist/__tests__/entryTick.test.d.ts.map +1 -0
  94. package/dist/__tests__/entryTick.test.js +40 -0
  95. package/dist/__tests__/entryTick.test.js.map +1 -0
  96. package/dist/__tests__/envelope-contract.test.d.ts +15 -0
  97. package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
  98. package/dist/__tests__/envelope-contract.test.js +154 -0
  99. package/dist/__tests__/envelope-contract.test.js.map +1 -0
  100. package/dist/__tests__/errors.test.d.ts +2 -0
  101. package/dist/__tests__/errors.test.d.ts.map +1 -0
  102. package/dist/__tests__/errors.test.js +188 -0
  103. package/dist/__tests__/errors.test.js.map +1 -0
  104. package/dist/__tests__/fields.test.js +50 -39
  105. package/dist/__tests__/fields.test.js.map +1 -1
  106. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts +2 -0
  107. package/dist/__tests__/gateway-dry-run-timeout.test.d.ts.map +1 -0
  108. package/dist/__tests__/gateway-dry-run-timeout.test.js +70 -0
  109. package/dist/__tests__/gateway-dry-run-timeout.test.js.map +1 -0
  110. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts +2 -0
  111. package/dist/__tests__/gateway-timeout-body-phase.test.d.ts.map +1 -0
  112. package/dist/__tests__/gateway-timeout-body-phase.test.js +116 -0
  113. package/dist/__tests__/gateway-timeout-body-phase.test.js.map +1 -0
  114. package/dist/__tests__/glossary.test.d.ts +2 -0
  115. package/dist/__tests__/glossary.test.d.ts.map +1 -0
  116. package/dist/__tests__/glossary.test.js +15 -0
  117. package/dist/__tests__/glossary.test.js.map +1 -0
  118. package/dist/__tests__/health-gap-kinds-drift.test.d.ts +2 -0
  119. package/dist/__tests__/health-gap-kinds-drift.test.d.ts.map +1 -0
  120. package/dist/__tests__/health-gap-kinds-drift.test.js +43 -0
  121. package/dist/__tests__/health-gap-kinds-drift.test.js.map +1 -0
  122. package/dist/__tests__/help-no-ids.test.d.ts +2 -0
  123. package/dist/__tests__/help-no-ids.test.d.ts.map +1 -0
  124. package/dist/__tests__/help-no-ids.test.js +81 -0
  125. package/dist/__tests__/help-no-ids.test.js.map +1 -0
  126. package/dist/__tests__/init.test.d.ts +8 -0
  127. package/dist/__tests__/init.test.d.ts.map +1 -0
  128. package/dist/__tests__/init.test.js +406 -0
  129. package/dist/__tests__/init.test.js.map +1 -0
  130. package/dist/__tests__/kernel-value-sets-drift.test.d.ts +2 -0
  131. package/dist/__tests__/kernel-value-sets-drift.test.d.ts.map +1 -0
  132. package/dist/__tests__/kernel-value-sets-drift.test.js +46 -0
  133. package/dist/__tests__/kernel-value-sets-drift.test.js.map +1 -0
  134. package/dist/__tests__/kernel-value-sets-generator.test.d.ts +2 -0
  135. package/dist/__tests__/kernel-value-sets-generator.test.d.ts.map +1 -0
  136. package/dist/__tests__/kernel-value-sets-generator.test.js +108 -0
  137. package/dist/__tests__/kernel-value-sets-generator.test.js.map +1 -0
  138. package/dist/__tests__/login.test.d.ts +2 -0
  139. package/dist/__tests__/login.test.d.ts.map +1 -0
  140. package/dist/__tests__/login.test.js +198 -0
  141. package/dist/__tests__/login.test.js.map +1 -0
  142. package/dist/__tests__/missingPin.test.d.ts +11 -0
  143. package/dist/__tests__/missingPin.test.d.ts.map +1 -0
  144. package/dist/__tests__/missingPin.test.js +232 -0
  145. package/dist/__tests__/missingPin.test.js.map +1 -0
  146. package/dist/__tests__/no-session-one-place.test.d.ts +2 -0
  147. package/dist/__tests__/no-session-one-place.test.d.ts.map +1 -0
  148. package/dist/__tests__/no-session-one-place.test.js +33 -0
  149. package/dist/__tests__/no-session-one-place.test.js.map +1 -0
  150. package/dist/__tests__/notice-marker.test.d.ts +2 -0
  151. package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
  152. package/dist/__tests__/notice-marker.test.js +176 -0
  153. package/dist/__tests__/notice-marker.test.js.map +1 -0
  154. package/dist/__tests__/orient.test.d.ts +2 -0
  155. package/dist/__tests__/orient.test.d.ts.map +1 -0
  156. package/dist/__tests__/orient.test.js +711 -0
  157. package/dist/__tests__/orient.test.js.map +1 -0
  158. package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
  159. package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
  160. package/dist/__tests__/preview-key-refresh.test.js +186 -0
  161. package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
  162. package/dist/__tests__/profile-create-key.test.d.ts +2 -0
  163. package/dist/__tests__/profile-create-key.test.d.ts.map +1 -0
  164. package/dist/__tests__/profile-create-key.test.js +57 -0
  165. package/dist/__tests__/profile-create-key.test.js.map +1 -0
  166. package/dist/__tests__/profiles.test.d.ts +2 -0
  167. package/dist/__tests__/profiles.test.d.ts.map +1 -0
  168. package/dist/__tests__/profiles.test.js +834 -0
  169. package/dist/__tests__/profiles.test.js.map +1 -0
  170. package/dist/__tests__/prompts.test.d.ts +6 -0
  171. package/dist/__tests__/prompts.test.d.ts.map +1 -0
  172. package/dist/__tests__/prompts.test.js +163 -0
  173. package/dist/__tests__/prompts.test.js.map +1 -0
  174. package/dist/__tests__/proof-run.test.d.ts +2 -0
  175. package/dist/__tests__/proof-run.test.d.ts.map +1 -0
  176. package/dist/__tests__/proof-run.test.js +255 -0
  177. package/dist/__tests__/proof-run.test.js.map +1 -0
  178. package/dist/__tests__/rate-limit-resilience.test.d.ts +8 -0
  179. package/dist/__tests__/rate-limit-resilience.test.d.ts.map +1 -0
  180. package/dist/__tests__/rate-limit-resilience.test.js +191 -0
  181. package/dist/__tests__/rate-limit-resilience.test.js.map +1 -0
  182. package/dist/__tests__/read-target-notice.test.d.ts +2 -0
  183. package/dist/__tests__/read-target-notice.test.d.ts.map +1 -0
  184. package/dist/__tests__/read-target-notice.test.js +125 -0
  185. package/dist/__tests__/read-target-notice.test.js.map +1 -0
  186. package/dist/__tests__/relate.test.js +292 -39
  187. package/dist/__tests__/relate.test.js.map +1 -1
  188. package/dist/__tests__/removed-commands.test.d.ts +2 -0
  189. package/dist/__tests__/removed-commands.test.d.ts.map +1 -0
  190. package/dist/__tests__/removed-commands.test.js +99 -0
  191. package/dist/__tests__/removed-commands.test.js.map +1 -0
  192. package/dist/__tests__/reply-commands-registered.test.d.ts +2 -0
  193. package/dist/__tests__/reply-commands-registered.test.d.ts.map +1 -0
  194. package/dist/__tests__/reply-commands-registered.test.js +83 -0
  195. package/dist/__tests__/reply-commands-registered.test.js.map +1 -0
  196. package/dist/__tests__/reportedProfile.test.d.ts +2 -0
  197. package/dist/__tests__/reportedProfile.test.d.ts.map +1 -0
  198. package/dist/__tests__/reportedProfile.test.js +328 -0
  199. package/dist/__tests__/reportedProfile.test.js.map +1 -0
  200. package/dist/__tests__/restore.test.d.ts +2 -0
  201. package/dist/__tests__/restore.test.d.ts.map +1 -0
  202. package/dist/__tests__/restore.test.js +91 -0
  203. package/dist/__tests__/restore.test.js.map +1 -0
  204. package/dist/__tests__/route-latency-budget.test.d.ts +2 -0
  205. package/dist/__tests__/route-latency-budget.test.d.ts.map +1 -0
  206. package/dist/__tests__/route-latency-budget.test.js +111 -0
  207. package/dist/__tests__/route-latency-budget.test.js.map +1 -0
  208. package/dist/__tests__/runner.test.js +75 -56
  209. package/dist/__tests__/runner.test.js.map +1 -1
  210. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts +2 -0
  211. package/dist/__tests__/session-binding-refusal-tenant.test.d.ts.map +1 -0
  212. package/dist/__tests__/session-binding-refusal-tenant.test.js +112 -0
  213. package/dist/__tests__/session-binding-refusal-tenant.test.js.map +1 -0
  214. package/dist/__tests__/session-close-conversation.test.d.ts +2 -0
  215. package/dist/__tests__/session-close-conversation.test.d.ts.map +1 -0
  216. package/dist/__tests__/session-close-conversation.test.js +75 -0
  217. package/dist/__tests__/session-close-conversation.test.js.map +1 -0
  218. package/dist/__tests__/session-close-loop.test.d.ts +2 -0
  219. package/dist/__tests__/session-close-loop.test.d.ts.map +1 -0
  220. package/dist/__tests__/session-close-loop.test.js +349 -0
  221. package/dist/__tests__/session-close-loop.test.js.map +1 -0
  222. package/dist/__tests__/session-ended-refusal.test.d.ts +2 -0
  223. package/dist/__tests__/session-ended-refusal.test.d.ts.map +1 -0
  224. package/dist/__tests__/session-ended-refusal.test.js +76 -0
  225. package/dist/__tests__/session-ended-refusal.test.js.map +1 -0
  226. package/dist/__tests__/session-hook-conversation.test.d.ts +2 -0
  227. package/dist/__tests__/session-hook-conversation.test.d.ts.map +1 -0
  228. package/dist/__tests__/session-hook-conversation.test.js +87 -0
  229. package/dist/__tests__/session-hook-conversation.test.js.map +1 -0
  230. package/dist/__tests__/session-label.test.d.ts +2 -0
  231. package/dist/__tests__/session-label.test.d.ts.map +1 -0
  232. package/dist/__tests__/session-label.test.js +46 -0
  233. package/dist/__tests__/session-label.test.js.map +1 -0
  234. package/dist/__tests__/session-list-show.test.d.ts +2 -0
  235. package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
  236. package/dist/__tests__/session-list-show.test.js +171 -0
  237. package/dist/__tests__/session-list-show.test.js.map +1 -0
  238. package/dist/__tests__/session-pinned-role.test.d.ts +2 -0
  239. package/dist/__tests__/session-pinned-role.test.d.ts.map +1 -0
  240. package/dist/__tests__/session-pinned-role.test.js +333 -0
  241. package/dist/__tests__/session-pinned-role.test.js.map +1 -0
  242. package/dist/__tests__/session-reset.test.d.ts +2 -0
  243. package/dist/__tests__/session-reset.test.d.ts.map +1 -0
  244. package/dist/__tests__/session-reset.test.js +137 -0
  245. package/dist/__tests__/session-reset.test.js.map +1 -0
  246. package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
  247. package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
  248. package/dist/__tests__/session-resume-backstop.test.js +137 -0
  249. package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
  250. package/dist/__tests__/session-role-name-sanitize.test.d.ts +2 -0
  251. package/dist/__tests__/session-role-name-sanitize.test.d.ts.map +1 -0
  252. package/dist/__tests__/session-role-name-sanitize.test.js +119 -0
  253. package/dist/__tests__/session-role-name-sanitize.test.js.map +1 -0
  254. package/dist/__tests__/session-seat-split.test.d.ts +2 -0
  255. package/dist/__tests__/session-seat-split.test.d.ts.map +1 -0
  256. package/dist/__tests__/session-seat-split.test.js +142 -0
  257. package/dist/__tests__/session-seat-split.test.js.map +1 -0
  258. package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
  259. package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
  260. package/dist/__tests__/session-start-key-refresh.test.js +213 -0
  261. package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
  262. package/dist/__tests__/session-state-machine.test.d.ts +2 -0
  263. package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
  264. package/dist/__tests__/session-state-machine.test.js +364 -0
  265. package/dist/__tests__/session-state-machine.test.js.map +1 -0
  266. package/dist/__tests__/session-switch.test.d.ts +2 -0
  267. package/dist/__tests__/session-switch.test.d.ts.map +1 -0
  268. package/dist/__tests__/session-switch.test.js +341 -0
  269. package/dist/__tests__/session-switch.test.js.map +1 -0
  270. package/dist/__tests__/session-touch.test.js +87 -108
  271. package/dist/__tests__/session-touch.test.js.map +1 -1
  272. package/dist/__tests__/session.test.js +4 -13
  273. package/dist/__tests__/session.test.js.map +1 -1
  274. package/dist/__tests__/sessionBinding.test.d.ts +2 -0
  275. package/dist/__tests__/sessionBinding.test.d.ts.map +1 -0
  276. package/dist/__tests__/sessionBinding.test.js +131 -0
  277. package/dist/__tests__/sessionBinding.test.js.map +1 -0
  278. package/dist/__tests__/sessionByIdLookup.test.d.ts +2 -0
  279. package/dist/__tests__/sessionByIdLookup.test.d.ts.map +1 -0
  280. package/dist/__tests__/sessionByIdLookup.test.js +63 -0
  281. package/dist/__tests__/sessionByIdLookup.test.js.map +1 -0
  282. package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
  283. package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
  284. package/dist/__tests__/skill-vocabulary.test.js +192 -0
  285. package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
  286. package/dist/__tests__/spinner-labels.test.d.ts +2 -0
  287. package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
  288. package/dist/__tests__/spinner-labels.test.js +23 -0
  289. package/dist/__tests__/spinner-labels.test.js.map +1 -0
  290. package/dist/__tests__/state.test.d.ts +6 -0
  291. package/dist/__tests__/state.test.d.ts.map +1 -0
  292. package/dist/__tests__/state.test.js +117 -0
  293. package/dist/__tests__/state.test.js.map +1 -0
  294. package/dist/__tests__/stillTrue.test.d.ts +2 -0
  295. package/dist/__tests__/stillTrue.test.d.ts.map +1 -0
  296. package/dist/__tests__/stillTrue.test.js +53 -0
  297. package/dist/__tests__/stillTrue.test.js.map +1 -0
  298. package/dist/__tests__/strip.test.js +57 -3
  299. package/dist/__tests__/strip.test.js.map +1 -1
  300. package/dist/__tests__/tenant-notice-write-path.test.d.ts +2 -0
  301. package/dist/__tests__/tenant-notice-write-path.test.d.ts.map +1 -0
  302. package/dist/__tests__/tenant-notice-write-path.test.js +183 -0
  303. package/dist/__tests__/tenant-notice-write-path.test.js.map +1 -0
  304. package/dist/__tests__/update-check.test.d.ts +2 -0
  305. package/dist/__tests__/update-check.test.d.ts.map +1 -0
  306. package/dist/__tests__/update-check.test.js +235 -0
  307. package/dist/__tests__/update-check.test.js.map +1 -0
  308. package/dist/__tests__/update.test.js +596 -78
  309. package/dist/__tests__/update.test.js.map +1 -1
  310. package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
  311. package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
  312. package/dist/__tests__/upgrade-runner.test.js +77 -0
  313. package/dist/__tests__/upgrade-runner.test.js.map +1 -0
  314. package/dist/__tests__/upgrade.test.d.ts +2 -0
  315. package/dist/__tests__/upgrade.test.d.ts.map +1 -0
  316. package/dist/__tests__/upgrade.test.js +56 -0
  317. package/dist/__tests__/upgrade.test.js.map +1 -0
  318. package/dist/__tests__/verify-formatter.test.d.ts +2 -0
  319. package/dist/__tests__/verify-formatter.test.d.ts.map +1 -0
  320. package/dist/__tests__/verify-formatter.test.js +85 -0
  321. package/dist/__tests__/verify-formatter.test.js.map +1 -0
  322. package/dist/__tests__/vocabulary-leak.test.d.ts +33 -0
  323. package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
  324. package/dist/__tests__/vocabulary-leak.test.js +425 -0
  325. package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
  326. package/dist/__tests__/workspace.test.d.ts +2 -0
  327. package/dist/__tests__/workspace.test.d.ts.map +1 -0
  328. package/dist/__tests__/workspace.test.js +267 -0
  329. package/dist/__tests__/workspace.test.js.map +1 -0
  330. package/dist/__tests__/workspaceNotice.test.d.ts +2 -0
  331. package/dist/__tests__/workspaceNotice.test.d.ts.map +1 -0
  332. package/dist/__tests__/workspaceNotice.test.js +551 -0
  333. package/dist/__tests__/workspaceNotice.test.js.map +1 -0
  334. package/dist/commands/__tests__/quality.test.d.ts +2 -0
  335. package/dist/commands/__tests__/quality.test.d.ts.map +1 -0
  336. package/dist/commands/__tests__/quality.test.js +315 -0
  337. package/dist/commands/__tests__/quality.test.js.map +1 -0
  338. package/dist/commands/__tests__/rework.test.d.ts +2 -0
  339. package/dist/commands/__tests__/rework.test.d.ts.map +1 -0
  340. package/dist/commands/__tests__/rework.test.js +151 -0
  341. package/dist/commands/__tests__/rework.test.js.map +1 -0
  342. package/dist/commands/__tests__/tasksList.test.d.ts +2 -0
  343. package/dist/commands/__tests__/tasksList.test.d.ts.map +1 -0
  344. package/dist/commands/__tests__/tasksList.test.js +66 -0
  345. package/dist/commands/__tests__/tasksList.test.js.map +1 -0
  346. package/dist/commands/__tests__/tensionsList.test.d.ts +2 -0
  347. package/dist/commands/__tests__/tensionsList.test.d.ts.map +1 -0
  348. package/dist/commands/__tests__/tensionsList.test.js +63 -0
  349. package/dist/commands/__tests__/tensionsList.test.js.map +1 -0
  350. package/dist/commands/accept-policy.d.ts +10 -0
  351. package/dist/commands/accept-policy.d.ts.map +1 -0
  352. package/dist/commands/accept-policy.js +101 -0
  353. package/dist/commands/accept-policy.js.map +1 -0
  354. package/dist/commands/admin/cockpit.d.ts +79 -0
  355. package/dist/commands/admin/cockpit.d.ts.map +1 -0
  356. package/dist/commands/admin/cockpit.js +553 -0
  357. package/dist/commands/admin/cockpit.js.map +1 -0
  358. package/dist/commands/admin/cockpit.test.d.ts +2 -0
  359. package/dist/commands/admin/cockpit.test.d.ts.map +1 -0
  360. package/dist/commands/admin/cockpit.test.js +104 -0
  361. package/dist/commands/admin/cockpit.test.js.map +1 -0
  362. package/dist/commands/admin/index.d.ts +70 -0
  363. package/dist/commands/admin/index.d.ts.map +1 -0
  364. package/dist/commands/admin/index.js +375 -0
  365. package/dist/commands/admin/index.js.map +1 -0
  366. package/dist/commands/admin/index.test.d.ts +2 -0
  367. package/dist/commands/admin/index.test.d.ts.map +1 -0
  368. package/dist/commands/admin/index.test.js +94 -0
  369. package/dist/commands/admin/index.test.js.map +1 -0
  370. package/dist/commands/admin/inspect.d.ts +30 -0
  371. package/dist/commands/admin/inspect.d.ts.map +1 -0
  372. package/dist/commands/admin/inspect.js +550 -0
  373. package/dist/commands/admin/inspect.js.map +1 -0
  374. package/dist/commands/admin/inspect.test.d.ts +7 -0
  375. package/dist/commands/admin/inspect.test.d.ts.map +1 -0
  376. package/dist/commands/admin/inspect.test.js +90 -0
  377. package/dist/commands/admin/inspect.test.js.map +1 -0
  378. package/dist/commands/admin/manage.d.ts +8 -0
  379. package/dist/commands/admin/manage.d.ts.map +1 -0
  380. package/dist/commands/admin/manage.js +53 -0
  381. package/dist/commands/admin/manage.js.map +1 -0
  382. package/dist/commands/admin/manage.test.d.ts +2 -0
  383. package/dist/commands/admin/manage.test.d.ts.map +1 -0
  384. package/dist/commands/admin/manage.test.js +103 -0
  385. package/dist/commands/admin/manage.test.js.map +1 -0
  386. package/dist/commands/admin/probe.d.ts +75 -0
  387. package/dist/commands/admin/probe.d.ts.map +1 -0
  388. package/dist/commands/admin/probe.js +224 -0
  389. package/dist/commands/admin/probe.js.map +1 -0
  390. package/dist/commands/admin/probe.test.d.ts +2 -0
  391. package/dist/commands/admin/probe.test.d.ts.map +1 -0
  392. package/dist/commands/admin/probe.test.js +193 -0
  393. package/dist/commands/admin/probe.test.js.map +1 -0
  394. package/dist/commands/admin/run.d.ts +43 -0
  395. package/dist/commands/admin/run.d.ts.map +1 -0
  396. package/dist/commands/admin/run.js +78 -0
  397. package/dist/commands/admin/run.js.map +1 -0
  398. package/dist/commands/admin/run.test.d.ts +18 -0
  399. package/dist/commands/admin/run.test.d.ts.map +1 -0
  400. package/dist/commands/admin/run.test.js +168 -0
  401. package/dist/commands/admin/run.test.js.map +1 -0
  402. package/dist/commands/admin/seed.d.ts +54 -0
  403. package/dist/commands/admin/seed.d.ts.map +1 -0
  404. package/dist/commands/admin/seed.js +642 -0
  405. package/dist/commands/admin/seed.js.map +1 -0
  406. package/dist/commands/admin/seed.test.d.ts +10 -0
  407. package/dist/commands/admin/seed.test.d.ts.map +1 -0
  408. package/dist/commands/admin/seed.test.js +90 -0
  409. package/dist/commands/admin/seed.test.js.map +1 -0
  410. package/dist/commands/admin/seedRegistryEntries.generated.d.ts +16 -0
  411. package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
  412. package/dist/commands/admin/seedRegistryEntries.generated.js +63 -0
  413. package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
  414. package/dist/commands/admin/seedRegistryEntries.test.d.ts +13 -0
  415. package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
  416. package/dist/commands/admin/seedRegistryEntries.test.js +109 -0
  417. package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
  418. package/dist/commands/admin/seedRowType.d.ts +22 -0
  419. package/dist/commands/admin/seedRowType.d.ts.map +1 -0
  420. package/dist/commands/admin/seedRowType.js +2 -0
  421. package/dist/commands/admin/seedRowType.js.map +1 -0
  422. package/dist/commands/admin/seedStatusColor.d.ts +9 -0
  423. package/dist/commands/admin/seedStatusColor.d.ts.map +1 -0
  424. package/dist/commands/admin/seedStatusColor.js +19 -0
  425. package/dist/commands/admin/seedStatusColor.js.map +1 -0
  426. package/dist/commands/admin/seedStatusColor.test.d.ts +2 -0
  427. package/dist/commands/admin/seedStatusColor.test.d.ts.map +1 -0
  428. package/dist/commands/admin/seedStatusColor.test.js +31 -0
  429. package/dist/commands/admin/seedStatusColor.test.js.map +1 -0
  430. package/dist/commands/brief.d.ts.map +1 -1
  431. package/dist/commands/brief.js +36 -14
  432. package/dist/commands/brief.js.map +1 -1
  433. package/dist/commands/capture.d.ts +20 -8
  434. package/dist/commands/capture.d.ts.map +1 -1
  435. package/dist/commands/capture.js +133 -69
  436. package/dist/commands/capture.js.map +1 -1
  437. package/dist/commands/chain-walk.d.ts.map +1 -1
  438. package/dist/commands/chain-walk.js +9 -6
  439. package/dist/commands/chain-walk.js.map +1 -1
  440. package/dist/commands/changes.d.ts.map +1 -1
  441. package/dist/commands/changes.js +9 -6
  442. package/dist/commands/changes.js.map +1 -1
  443. package/dist/commands/codex-prep.d.ts +23 -0
  444. package/dist/commands/codex-prep.d.ts.map +1 -0
  445. package/dist/commands/codex-prep.js +54 -0
  446. package/dist/commands/codex-prep.js.map +1 -0
  447. package/dist/commands/collections.d.ts +22 -0
  448. package/dist/commands/collections.d.ts.map +1 -0
  449. package/dist/commands/collections.js +69 -0
  450. package/dist/commands/collections.js.map +1 -0
  451. package/dist/commands/conflicts.d.ts +40 -0
  452. package/dist/commands/conflicts.d.ts.map +1 -0
  453. package/dist/commands/conflicts.js +213 -0
  454. package/dist/commands/conflicts.js.map +1 -0
  455. package/dist/commands/conflicts.test.d.ts +2 -0
  456. package/dist/commands/conflicts.test.d.ts.map +1 -0
  457. package/dist/commands/conflicts.test.js +202 -0
  458. package/dist/commands/conflicts.test.js.map +1 -0
  459. package/dist/commands/connect-config.test.d.ts +2 -0
  460. package/dist/commands/connect-config.test.d.ts.map +1 -0
  461. package/dist/commands/connect-config.test.js +47 -0
  462. package/dist/commands/connect-config.test.js.map +1 -0
  463. package/dist/commands/connect-decline.test.d.ts +2 -0
  464. package/dist/commands/connect-decline.test.d.ts.map +1 -0
  465. package/dist/commands/connect-decline.test.js +70 -0
  466. package/dist/commands/connect-decline.test.js.map +1 -0
  467. package/dist/commands/connect-integration.test.d.ts +7 -0
  468. package/dist/commands/connect-integration.test.d.ts.map +1 -0
  469. package/dist/commands/connect-integration.test.js +232 -0
  470. package/dist/commands/connect-integration.test.js.map +1 -0
  471. package/dist/commands/connect-legacy-migration.test.d.ts +2 -0
  472. package/dist/commands/connect-legacy-migration.test.d.ts.map +1 -0
  473. package/dist/commands/connect-legacy-migration.test.js +108 -0
  474. package/dist/commands/connect-legacy-migration.test.js.map +1 -0
  475. package/dist/commands/connect-redeem-failure.test.d.ts +2 -0
  476. package/dist/commands/connect-redeem-failure.test.d.ts.map +1 -0
  477. package/dist/commands/connect-redeem-failure.test.js +133 -0
  478. package/dist/commands/connect-redeem-failure.test.js.map +1 -0
  479. package/dist/commands/connect-screens.d.ts +17 -0
  480. package/dist/commands/connect-screens.d.ts.map +1 -0
  481. package/dist/commands/connect-screens.js +28 -0
  482. package/dist/commands/connect-screens.js.map +1 -0
  483. package/dist/commands/connect-screens.test.d.ts +2 -0
  484. package/dist/commands/connect-screens.test.d.ts.map +1 -0
  485. package/dist/commands/connect-screens.test.js +19 -0
  486. package/dist/commands/connect-screens.test.js.map +1 -0
  487. package/dist/commands/connect-seal.test.d.ts +2 -0
  488. package/dist/commands/connect-seal.test.d.ts.map +1 -0
  489. package/dist/commands/connect-seal.test.js +54 -0
  490. package/dist/commands/connect-seal.test.js.map +1 -0
  491. package/dist/commands/connect.d.ts +38 -0
  492. package/dist/commands/connect.d.ts.map +1 -0
  493. package/dist/commands/connect.js +424 -0
  494. package/dist/commands/connect.js.map +1 -0
  495. package/dist/commands/connect.test.d.ts +6 -0
  496. package/dist/commands/connect.test.d.ts.map +1 -0
  497. package/dist/commands/connect.test.js +521 -0
  498. package/dist/commands/connect.test.js.map +1 -0
  499. package/dist/commands/constellation.d.ts.map +1 -1
  500. package/dist/commands/constellation.js +9 -6
  501. package/dist/commands/constellation.js.map +1 -1
  502. package/dist/commands/context.d.ts.map +1 -1
  503. package/dist/commands/context.js +9 -6
  504. package/dist/commands/context.js.map +1 -1
  505. package/dist/commands/cross-cut.d.ts.map +1 -1
  506. package/dist/commands/cross-cut.js +3 -5
  507. package/dist/commands/cross-cut.js.map +1 -1
  508. package/dist/commands/direction.d.ts +10 -0
  509. package/dist/commands/direction.d.ts.map +1 -0
  510. package/dist/commands/direction.js +75 -0
  511. package/dist/commands/direction.js.map +1 -0
  512. package/dist/commands/doctor.d.ts +18 -0
  513. package/dist/commands/doctor.d.ts.map +1 -0
  514. package/dist/commands/doctor.js +364 -0
  515. package/dist/commands/doctor.js.map +1 -0
  516. package/dist/commands/doctor.test.d.ts +8 -0
  517. package/dist/commands/doctor.test.d.ts.map +1 -0
  518. package/dist/commands/doctor.test.js +652 -0
  519. package/dist/commands/doctor.test.js.map +1 -0
  520. package/dist/commands/entryAccept.d.ts +59 -0
  521. package/dist/commands/entryAccept.d.ts.map +1 -0
  522. package/dist/commands/entryAccept.js +288 -0
  523. package/dist/commands/entryAccept.js.map +1 -0
  524. package/dist/commands/entryDiscardResolve.d.ts +9 -0
  525. package/dist/commands/entryDiscardResolve.d.ts.map +1 -0
  526. package/dist/commands/entryDiscardResolve.js +27 -0
  527. package/dist/commands/entryDiscardResolve.js.map +1 -0
  528. package/dist/commands/entryOwn.d.ts +10 -0
  529. package/dist/commands/entryOwn.d.ts.map +1 -0
  530. package/dist/commands/entryOwn.js +40 -0
  531. package/dist/commands/entryOwn.js.map +1 -0
  532. package/dist/commands/entryPreflight.d.ts +8 -0
  533. package/dist/commands/entryPreflight.d.ts.map +1 -0
  534. package/dist/commands/entryPreflight.js +44 -0
  535. package/dist/commands/entryPreflight.js.map +1 -0
  536. package/dist/commands/entryReplace.d.ts +7 -0
  537. package/dist/commands/entryReplace.d.ts.map +1 -0
  538. package/dist/commands/entryReplace.js +34 -0
  539. package/dist/commands/entryReplace.js.map +1 -0
  540. package/dist/commands/entryTick.d.ts +8 -0
  541. package/dist/commands/entryTick.d.ts.map +1 -0
  542. package/dist/commands/entryTick.js +42 -0
  543. package/dist/commands/entryTick.js.map +1 -0
  544. package/dist/commands/feedback.d.ts +39 -0
  545. package/dist/commands/feedback.d.ts.map +1 -0
  546. package/dist/commands/feedback.js +165 -0
  547. package/dist/commands/feedback.js.map +1 -0
  548. package/dist/commands/feedback.test.d.ts +2 -0
  549. package/dist/commands/feedback.test.d.ts.map +1 -0
  550. package/dist/commands/feedback.test.js +109 -0
  551. package/dist/commands/feedback.test.js.map +1 -0
  552. package/dist/commands/fields.d.ts.map +1 -1
  553. package/dist/commands/fields.js +9 -7
  554. package/dist/commands/fields.js.map +1 -1
  555. package/dist/commands/files.d.ts +26 -0
  556. package/dist/commands/files.d.ts.map +1 -0
  557. package/dist/commands/files.js +160 -0
  558. package/dist/commands/files.js.map +1 -0
  559. package/dist/commands/files.test.d.ts +2 -0
  560. package/dist/commands/files.test.d.ts.map +1 -0
  561. package/dist/commands/files.test.js +278 -0
  562. package/dist/commands/files.test.js.map +1 -0
  563. package/dist/commands/get.d.ts.map +1 -1
  564. package/dist/commands/get.js +16 -12
  565. package/dist/commands/get.js.map +1 -1
  566. package/dist/commands/history.d.ts +32 -0
  567. package/dist/commands/history.d.ts.map +1 -0
  568. package/dist/commands/history.js +53 -0
  569. package/dist/commands/history.js.map +1 -0
  570. package/dist/commands/history.test.d.ts +2 -0
  571. package/dist/commands/history.test.d.ts.map +1 -0
  572. package/dist/commands/history.test.js +121 -0
  573. package/dist/commands/history.test.js.map +1 -0
  574. package/dist/commands/init.d.ts +41 -0
  575. package/dist/commands/init.d.ts.map +1 -0
  576. package/dist/commands/init.js +266 -0
  577. package/dist/commands/init.js.map +1 -0
  578. package/dist/commands/login.d.ts +4 -0
  579. package/dist/commands/login.d.ts.map +1 -1
  580. package/dist/commands/login.js +107 -39
  581. package/dist/commands/login.js.map +1 -1
  582. package/dist/commands/method.d.ts +7 -0
  583. package/dist/commands/method.d.ts.map +1 -0
  584. package/dist/commands/method.js +67 -0
  585. package/dist/commands/method.js.map +1 -0
  586. package/dist/commands/organisation.d.ts +12 -0
  587. package/dist/commands/organisation.d.ts.map +1 -0
  588. package/dist/commands/organisation.js +143 -0
  589. package/dist/commands/organisation.js.map +1 -0
  590. package/dist/commands/organisation.test.d.ts +2 -0
  591. package/dist/commands/organisation.test.d.ts.map +1 -0
  592. package/dist/commands/organisation.test.js +116 -0
  593. package/dist/commands/organisation.test.js.map +1 -0
  594. package/dist/commands/organisationHierarchy.d.ts +15 -0
  595. package/dist/commands/organisationHierarchy.d.ts.map +1 -0
  596. package/dist/commands/organisationHierarchy.js +102 -0
  597. package/dist/commands/organisationHierarchy.js.map +1 -0
  598. package/dist/commands/organisationHierarchy.test.d.ts +2 -0
  599. package/dist/commands/organisationHierarchy.test.d.ts.map +1 -0
  600. package/dist/commands/organisationHierarchy.test.js +144 -0
  601. package/dist/commands/organisationHierarchy.test.js.map +1 -0
  602. package/dist/commands/organisationWrite.d.ts +20 -0
  603. package/dist/commands/organisationWrite.d.ts.map +1 -0
  604. package/dist/commands/organisationWrite.js +44 -0
  605. package/dist/commands/organisationWrite.js.map +1 -0
  606. package/dist/commands/orient.d.ts +143 -36
  607. package/dist/commands/orient.d.ts.map +1 -1
  608. package/dist/commands/orient.js +240 -18
  609. package/dist/commands/orient.js.map +1 -1
  610. package/dist/commands/outcome.d.ts +96 -0
  611. package/dist/commands/outcome.d.ts.map +1 -0
  612. package/dist/commands/outcome.js +194 -0
  613. package/dist/commands/outcome.js.map +1 -0
  614. package/dist/commands/outcome.test.d.ts +2 -0
  615. package/dist/commands/outcome.test.d.ts.map +1 -0
  616. package/dist/commands/outcome.test.js +326 -0
  617. package/dist/commands/outcome.test.js.map +1 -0
  618. package/dist/commands/people.d.ts +6 -0
  619. package/dist/commands/people.d.ts.map +1 -0
  620. package/dist/commands/people.js +21 -0
  621. package/dist/commands/people.js.map +1 -0
  622. package/dist/commands/people.test.d.ts +2 -0
  623. package/dist/commands/people.test.d.ts.map +1 -0
  624. package/dist/commands/people.test.js +61 -0
  625. package/dist/commands/people.test.js.map +1 -0
  626. package/dist/commands/profile.d.ts +72 -0
  627. package/dist/commands/profile.d.ts.map +1 -0
  628. package/dist/commands/profile.js +351 -0
  629. package/dist/commands/profile.js.map +1 -0
  630. package/dist/commands/proof-run.d.ts +51 -0
  631. package/dist/commands/proof-run.d.ts.map +1 -0
  632. package/dist/commands/proof-run.js +209 -0
  633. package/dist/commands/proof-run.js.map +1 -0
  634. package/dist/commands/quality.d.ts +38 -0
  635. package/dist/commands/quality.d.ts.map +1 -0
  636. package/dist/commands/quality.js +99 -0
  637. package/dist/commands/quality.js.map +1 -0
  638. package/dist/commands/questions.d.ts +27 -0
  639. package/dist/commands/questions.d.ts.map +1 -0
  640. package/dist/commands/questions.js +261 -0
  641. package/dist/commands/questions.js.map +1 -0
  642. package/dist/commands/questions.test.d.ts +2 -0
  643. package/dist/commands/questions.test.d.ts.map +1 -0
  644. package/dist/commands/questions.test.js +238 -0
  645. package/dist/commands/questions.test.js.map +1 -0
  646. package/dist/commands/relate.d.ts +10 -0
  647. package/dist/commands/relate.d.ts.map +1 -1
  648. package/dist/commands/relate.js +149 -23
  649. package/dist/commands/relate.js.map +1 -1
  650. package/dist/commands/restore.d.ts +2 -0
  651. package/dist/commands/restore.d.ts.map +1 -0
  652. package/dist/commands/restore.js +88 -0
  653. package/dist/commands/restore.js.map +1 -0
  654. package/dist/commands/rework.d.ts +24 -0
  655. package/dist/commands/rework.d.ts.map +1 -0
  656. package/dist/commands/rework.js +96 -0
  657. package/dist/commands/rework.js.map +1 -0
  658. package/dist/commands/role.d.ts +90 -0
  659. package/dist/commands/role.d.ts.map +1 -0
  660. package/dist/commands/role.js +172 -0
  661. package/dist/commands/role.js.map +1 -0
  662. package/dist/commands/role.test.d.ts +2 -0
  663. package/dist/commands/role.test.d.ts.map +1 -0
  664. package/dist/commands/role.test.js +345 -0
  665. package/dist/commands/role.test.js.map +1 -0
  666. package/dist/commands/scoreboard.d.ts +23 -0
  667. package/dist/commands/scoreboard.d.ts.map +1 -0
  668. package/dist/commands/scoreboard.js +33 -0
  669. package/dist/commands/scoreboard.js.map +1 -0
  670. package/dist/commands/scoreboard.test.d.ts +2 -0
  671. package/dist/commands/scoreboard.test.d.ts.map +1 -0
  672. package/dist/commands/scoreboard.test.js +51 -0
  673. package/dist/commands/scoreboard.test.js.map +1 -0
  674. package/dist/commands/search.d.ts +2 -1
  675. package/dist/commands/search.d.ts.map +1 -1
  676. package/dist/commands/search.js +7 -8
  677. package/dist/commands/search.js.map +1 -1
  678. package/dist/commands/session-hook.d.ts +38 -0
  679. package/dist/commands/session-hook.d.ts.map +1 -0
  680. package/dist/commands/session-hook.js +97 -0
  681. package/dist/commands/session-hook.js.map +1 -0
  682. package/dist/commands/session-hook.test.d.ts +2 -0
  683. package/dist/commands/session-hook.test.d.ts.map +1 -0
  684. package/dist/commands/session-hook.test.js +89 -0
  685. package/dist/commands/session-hook.test.js.map +1 -0
  686. package/dist/commands/session.d.ts +64 -7
  687. package/dist/commands/session.d.ts.map +1 -1
  688. package/dist/commands/session.js +470 -78
  689. package/dist/commands/session.js.map +1 -1
  690. package/dist/commands/status.d.ts +7 -0
  691. package/dist/commands/status.d.ts.map +1 -0
  692. package/dist/commands/status.js +101 -0
  693. package/dist/commands/status.js.map +1 -0
  694. package/dist/commands/status.test.d.ts +2 -0
  695. package/dist/commands/status.test.d.ts.map +1 -0
  696. package/dist/commands/status.test.js +75 -0
  697. package/dist/commands/status.test.js.map +1 -0
  698. package/dist/commands/stillTrue.d.ts +14 -0
  699. package/dist/commands/stillTrue.d.ts.map +1 -0
  700. package/dist/commands/stillTrue.js +47 -0
  701. package/dist/commands/stillTrue.js.map +1 -0
  702. package/dist/commands/tasksList.d.ts +12 -0
  703. package/dist/commands/tasksList.d.ts.map +1 -0
  704. package/dist/commands/tasksList.js +45 -0
  705. package/dist/commands/tasksList.js.map +1 -0
  706. package/dist/commands/tensionsList.d.ts +5 -0
  707. package/dist/commands/tensionsList.d.ts.map +1 -0
  708. package/dist/commands/tensionsList.js +25 -0
  709. package/dist/commands/tensionsList.js.map +1 -0
  710. package/dist/commands/update.d.ts +24 -0
  711. package/dist/commands/update.d.ts.map +1 -1
  712. package/dist/commands/update.js +241 -51
  713. package/dist/commands/update.js.map +1 -1
  714. package/dist/commands/upgrade.d.ts +5 -0
  715. package/dist/commands/upgrade.d.ts.map +1 -0
  716. package/dist/commands/upgrade.js +110 -0
  717. package/dist/commands/upgrade.js.map +1 -0
  718. package/dist/commands/usage.d.ts +40 -0
  719. package/dist/commands/usage.d.ts.map +1 -0
  720. package/dist/commands/usage.js +214 -0
  721. package/dist/commands/usage.js.map +1 -0
  722. package/dist/commands/verify.d.ts.map +1 -1
  723. package/dist/commands/verify.js +20 -10
  724. package/dist/commands/verify.js.map +1 -1
  725. package/dist/commands/welcome.d.ts +21 -0
  726. package/dist/commands/welcome.d.ts.map +1 -0
  727. package/dist/commands/welcome.js +54 -0
  728. package/dist/commands/welcome.js.map +1 -0
  729. package/dist/commands/whoami.d.ts +23 -0
  730. package/dist/commands/whoami.d.ts.map +1 -0
  731. package/dist/commands/whoami.js +132 -0
  732. package/dist/commands/whoami.js.map +1 -0
  733. package/dist/commands/whoami.test.d.ts +2 -0
  734. package/dist/commands/whoami.test.d.ts.map +1 -0
  735. package/dist/commands/whoami.test.js +145 -0
  736. package/dist/commands/whoami.test.js.map +1 -0
  737. package/dist/commands/workspace.d.ts +46 -0
  738. package/dist/commands/workspace.d.ts.map +1 -0
  739. package/dist/commands/workspace.js +198 -0
  740. package/dist/commands/workspace.js.map +1 -0
  741. package/dist/formatters/__tests__/orient-openTasks.test.d.ts +2 -0
  742. package/dist/formatters/__tests__/orient-openTasks.test.d.ts.map +1 -0
  743. package/dist/formatters/__tests__/orient-openTasks.test.js +77 -0
  744. package/dist/formatters/__tests__/orient-openTasks.test.js.map +1 -0
  745. package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts +2 -0
  746. package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts.map +1 -0
  747. package/dist/formatters/__tests__/orient-plannedWorkCut.test.js +38 -0
  748. package/dist/formatters/__tests__/orient-plannedWorkCut.test.js.map +1 -0
  749. package/dist/formatters/__tests__/orient-provenance.test.d.ts +6 -0
  750. package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
  751. package/dist/formatters/__tests__/orient-provenance.test.js +312 -0
  752. package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
  753. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts +2 -0
  754. package/dist/formatters/__tests__/orient-ruleLists.test.d.ts.map +1 -0
  755. package/dist/formatters/__tests__/orient-ruleLists.test.js +93 -0
  756. package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -0
  757. package/dist/formatters/__tests__/orient-workPackageList.test.d.ts +2 -0
  758. package/dist/formatters/__tests__/orient-workPackageList.test.d.ts.map +1 -0
  759. package/dist/formatters/__tests__/orient-workPackageList.test.js +69 -0
  760. package/dist/formatters/__tests__/orient-workPackageList.test.js.map +1 -0
  761. package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
  762. package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
  763. package/dist/formatters/__tests__/session-list-show.test.js +195 -0
  764. package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
  765. package/dist/formatters/__tests__/session.test.d.ts +2 -0
  766. package/dist/formatters/__tests__/session.test.d.ts.map +1 -0
  767. package/dist/formatters/__tests__/session.test.js +273 -0
  768. package/dist/formatters/__tests__/session.test.js.map +1 -0
  769. package/dist/formatters/__tests__/tensionsList.test.d.ts +2 -0
  770. package/dist/formatters/__tests__/tensionsList.test.d.ts.map +1 -0
  771. package/dist/formatters/__tests__/tensionsList.test.js +30 -0
  772. package/dist/formatters/__tests__/tensionsList.test.js.map +1 -0
  773. package/dist/formatters/brief.d.ts +7 -15
  774. package/dist/formatters/brief.d.ts.map +1 -1
  775. package/dist/formatters/brief.js +18 -15
  776. package/dist/formatters/brief.js.map +1 -1
  777. package/dist/formatters/brief.test.d.ts +2 -0
  778. package/dist/formatters/brief.test.d.ts.map +1 -0
  779. package/dist/formatters/brief.test.js +33 -0
  780. package/dist/formatters/brief.test.js.map +1 -0
  781. package/dist/formatters/capture.d.ts +38 -6
  782. package/dist/formatters/capture.d.ts.map +1 -1
  783. package/dist/formatters/capture.js +58 -9
  784. package/dist/formatters/capture.js.map +1 -1
  785. package/dist/formatters/coaching.d.ts +59 -0
  786. package/dist/formatters/coaching.d.ts.map +1 -0
  787. package/dist/formatters/coaching.js +51 -0
  788. package/dist/formatters/coaching.js.map +1 -0
  789. package/dist/formatters/collections.d.ts +39 -0
  790. package/dist/formatters/collections.d.ts.map +1 -0
  791. package/dist/formatters/collections.js +102 -0
  792. package/dist/formatters/collections.js.map +1 -0
  793. package/dist/formatters/conflicts.d.ts +81 -0
  794. package/dist/formatters/conflicts.d.ts.map +1 -0
  795. package/dist/formatters/conflicts.js +102 -0
  796. package/dist/formatters/conflicts.js.map +1 -0
  797. package/dist/formatters/conflicts.test.d.ts +2 -0
  798. package/dist/formatters/conflicts.test.d.ts.map +1 -0
  799. package/dist/formatters/conflicts.test.js +179 -0
  800. package/dist/formatters/conflicts.test.js.map +1 -0
  801. package/dist/formatters/constellation.d.ts +2 -0
  802. package/dist/formatters/constellation.d.ts.map +1 -1
  803. package/dist/formatters/constellation.js +2 -0
  804. package/dist/formatters/constellation.js.map +1 -1
  805. package/dist/formatters/context.d.ts +1 -1
  806. package/dist/formatters/context.d.ts.map +1 -1
  807. package/dist/formatters/context.js.map +1 -1
  808. package/dist/formatters/direction.d.ts +48 -0
  809. package/dist/formatters/direction.d.ts.map +1 -0
  810. package/dist/formatters/direction.js +75 -0
  811. package/dist/formatters/direction.js.map +1 -0
  812. package/dist/formatters/direction.test.d.ts +2 -0
  813. package/dist/formatters/direction.test.d.ts.map +1 -0
  814. package/dist/formatters/direction.test.js +70 -0
  815. package/dist/formatters/direction.test.js.map +1 -0
  816. package/dist/formatters/entry.d.ts +102 -5
  817. package/dist/formatters/entry.d.ts.map +1 -1
  818. package/dist/formatters/entry.js +139 -15
  819. package/dist/formatters/entry.js.map +1 -1
  820. package/dist/formatters/entryAccept.d.ts +86 -0
  821. package/dist/formatters/entryAccept.d.ts.map +1 -0
  822. package/dist/formatters/entryAccept.js +78 -0
  823. package/dist/formatters/entryAccept.js.map +1 -0
  824. package/dist/formatters/feedback.d.ts +61 -0
  825. package/dist/formatters/feedback.d.ts.map +1 -0
  826. package/dist/formatters/feedback.js +95 -0
  827. package/dist/formatters/feedback.js.map +1 -0
  828. package/dist/formatters/feedback.test.d.ts +2 -0
  829. package/dist/formatters/feedback.test.d.ts.map +1 -0
  830. package/dist/formatters/feedback.test.js +142 -0
  831. package/dist/formatters/feedback.test.js.map +1 -0
  832. package/dist/formatters/fields.d.ts +7 -1
  833. package/dist/formatters/fields.d.ts.map +1 -1
  834. package/dist/formatters/fields.js +9 -3
  835. package/dist/formatters/fields.js.map +1 -1
  836. package/dist/formatters/fields.test.d.ts +2 -0
  837. package/dist/formatters/fields.test.d.ts.map +1 -0
  838. package/dist/formatters/fields.test.js +42 -0
  839. package/dist/formatters/fields.test.js.map +1 -0
  840. package/dist/formatters/orient.coherencyCheckTag.test.d.ts +2 -0
  841. package/dist/formatters/orient.coherencyCheckTag.test.d.ts.map +1 -0
  842. package/dist/formatters/orient.coherencyCheckTag.test.js +22 -0
  843. package/dist/formatters/orient.coherencyCheckTag.test.js.map +1 -0
  844. package/dist/formatters/orient.d.ts +190 -42
  845. package/dist/formatters/orient.d.ts.map +1 -1
  846. package/dist/formatters/orient.js +294 -102
  847. package/dist/formatters/orient.js.map +1 -1
  848. package/dist/formatters/orient.rcrtMiss.test.d.ts +2 -0
  849. package/dist/formatters/orient.rcrtMiss.test.d.ts.map +1 -0
  850. package/dist/formatters/orient.rcrtMiss.test.js +75 -0
  851. package/dist/formatters/orient.rcrtMiss.test.js.map +1 -0
  852. package/dist/formatters/orient.rituals.test.d.ts +2 -0
  853. package/dist/formatters/orient.rituals.test.d.ts.map +1 -0
  854. package/dist/formatters/orient.rituals.test.js +70 -0
  855. package/dist/formatters/orient.rituals.test.js.map +1 -0
  856. package/dist/formatters/orient.taskAlignment.test.d.ts +2 -0
  857. package/dist/formatters/orient.taskAlignment.test.d.ts.map +1 -0
  858. package/dist/formatters/orient.taskAlignment.test.js +52 -0
  859. package/dist/formatters/orient.taskAlignment.test.js.map +1 -0
  860. package/dist/formatters/orientDegradation.d.ts +35 -0
  861. package/dist/formatters/orientDegradation.d.ts.map +1 -0
  862. package/dist/formatters/orientDegradation.js +47 -0
  863. package/dist/formatters/orientDegradation.js.map +1 -0
  864. package/dist/formatters/orientDegradation.test.d.ts +2 -0
  865. package/dist/formatters/orientDegradation.test.d.ts.map +1 -0
  866. package/dist/formatters/orientDegradation.test.js +26 -0
  867. package/dist/formatters/orientDegradation.test.js.map +1 -0
  868. package/dist/formatters/orientDirection.d.ts +25 -0
  869. package/dist/formatters/orientDirection.d.ts.map +1 -0
  870. package/dist/formatters/orientDirection.js +7 -0
  871. package/dist/formatters/orientDirection.js.map +1 -0
  872. package/dist/formatters/orientDirection.test.d.ts +2 -0
  873. package/dist/formatters/orientDirection.test.d.ts.map +1 -0
  874. package/dist/formatters/orientDirection.test.js +66 -0
  875. package/dist/formatters/orientDirection.test.js.map +1 -0
  876. package/dist/formatters/orientRetrievalMiss.d.ts +22 -0
  877. package/dist/formatters/orientRetrievalMiss.d.ts.map +1 -0
  878. package/dist/formatters/orientRetrievalMiss.js +17 -0
  879. package/dist/formatters/orientRetrievalMiss.js.map +1 -0
  880. package/dist/formatters/plannedWorkCounts.d.ts +16 -0
  881. package/dist/formatters/plannedWorkCounts.d.ts.map +1 -0
  882. package/dist/formatters/plannedWorkCounts.js +15 -0
  883. package/dist/formatters/plannedWorkCounts.js.map +1 -0
  884. package/dist/formatters/qualityChecks.d.ts +21 -0
  885. package/dist/formatters/qualityChecks.d.ts.map +1 -0
  886. package/dist/formatters/qualityChecks.js +132 -0
  887. package/dist/formatters/qualityChecks.js.map +1 -0
  888. package/dist/formatters/questions.d.ts +90 -0
  889. package/dist/formatters/questions.d.ts.map +1 -0
  890. package/dist/formatters/questions.js +126 -0
  891. package/dist/formatters/questions.js.map +1 -0
  892. package/dist/formatters/questions.test.d.ts +2 -0
  893. package/dist/formatters/questions.test.d.ts.map +1 -0
  894. package/dist/formatters/questions.test.js +176 -0
  895. package/dist/formatters/questions.test.js.map +1 -0
  896. package/dist/formatters/relate.d.ts +13 -0
  897. package/dist/formatters/relate.d.ts.map +1 -1
  898. package/dist/formatters/relate.js +15 -2
  899. package/dist/formatters/relate.js.map +1 -1
  900. package/dist/formatters/relate.test.d.ts +2 -0
  901. package/dist/formatters/relate.test.d.ts.map +1 -0
  902. package/dist/formatters/relate.test.js +91 -0
  903. package/dist/formatters/relate.test.js.map +1 -0
  904. package/dist/formatters/scoreboard.d.ts +11 -0
  905. package/dist/formatters/scoreboard.d.ts.map +1 -0
  906. package/dist/formatters/scoreboard.js +143 -0
  907. package/dist/formatters/scoreboard.js.map +1 -0
  908. package/dist/formatters/scoreboard.test.d.ts +2 -0
  909. package/dist/formatters/scoreboard.test.d.ts.map +1 -0
  910. package/dist/formatters/scoreboard.test.js +262 -0
  911. package/dist/formatters/scoreboard.test.js.map +1 -0
  912. package/dist/formatters/search.d.ts +24 -4
  913. package/dist/formatters/search.d.ts.map +1 -1
  914. package/dist/formatters/search.js +28 -10
  915. package/dist/formatters/search.js.map +1 -1
  916. package/dist/formatters/search.test.d.ts +2 -0
  917. package/dist/formatters/search.test.d.ts.map +1 -0
  918. package/dist/formatters/search.test.js +86 -0
  919. package/dist/formatters/search.test.js.map +1 -0
  920. package/dist/formatters/session-feedback.test.d.ts +2 -0
  921. package/dist/formatters/session-feedback.test.d.ts.map +1 -0
  922. package/dist/formatters/session-feedback.test.js +274 -0
  923. package/dist/formatters/session-feedback.test.js.map +1 -0
  924. package/dist/formatters/session.d.ts +135 -5
  925. package/dist/formatters/session.d.ts.map +1 -1
  926. package/dist/formatters/session.js +345 -21
  927. package/dist/formatters/session.js.map +1 -1
  928. package/dist/formatters/spineCheck.d.ts +14 -0
  929. package/dist/formatters/spineCheck.d.ts.map +1 -0
  930. package/dist/formatters/spineCheck.js +128 -0
  931. package/dist/formatters/spineCheck.js.map +1 -0
  932. package/dist/formatters/spineCheck.test.d.ts +2 -0
  933. package/dist/formatters/spineCheck.test.d.ts.map +1 -0
  934. package/dist/formatters/spineCheck.test.js +85 -0
  935. package/dist/formatters/spineCheck.test.js.map +1 -0
  936. package/dist/formatters/tensionsList.d.ts +17 -0
  937. package/dist/formatters/tensionsList.d.ts.map +1 -0
  938. package/dist/formatters/tensionsList.js +33 -0
  939. package/dist/formatters/tensionsList.js.map +1 -0
  940. package/dist/formatters/update.d.ts +26 -0
  941. package/dist/formatters/update.d.ts.map +1 -1
  942. package/dist/formatters/update.js +40 -6
  943. package/dist/formatters/update.js.map +1 -1
  944. package/dist/formatters/update.test.d.ts +2 -0
  945. package/dist/formatters/update.test.d.ts.map +1 -0
  946. package/dist/formatters/update.test.js +71 -0
  947. package/dist/formatters/update.test.js.map +1 -0
  948. package/dist/formatters/verify.d.ts +12 -4
  949. package/dist/formatters/verify.d.ts.map +1 -1
  950. package/dist/formatters/verify.js +20 -2
  951. package/dist/formatters/verify.js.map +1 -1
  952. package/dist/generated/healthGapKinds.generated.d.ts +12 -0
  953. package/dist/generated/healthGapKinds.generated.d.ts.map +1 -0
  954. package/dist/generated/healthGapKinds.generated.js +16 -0
  955. package/dist/generated/healthGapKinds.generated.js.map +1 -0
  956. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts +12 -0
  957. package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts.map +1 -0
  958. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js +11 -0
  959. package/dist/generated/organisationalAuthorityRefusalCodes.generated.js.map +1 -0
  960. package/dist/generated/routeLatencyBudget.generated.d.ts +54 -0
  961. package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -0
  962. package/dist/generated/routeLatencyBudget.generated.js +255 -0
  963. package/dist/generated/routeLatencyBudget.generated.js.map +1 -0
  964. package/dist/handleCliError.d.ts +30 -0
  965. package/dist/handleCliError.d.ts.map +1 -0
  966. package/dist/handleCliError.js +91 -0
  967. package/dist/handleCliError.js.map +1 -0
  968. package/dist/index.d.ts +0 -5
  969. package/dist/index.d.ts.map +1 -1
  970. package/dist/index.js +404 -355
  971. package/dist/index.js.map +1 -1
  972. package/dist/lib/__tests__/parseFields.test.d.ts +2 -0
  973. package/dist/lib/__tests__/parseFields.test.d.ts.map +1 -0
  974. package/dist/lib/__tests__/parseFields.test.js +40 -0
  975. package/dist/lib/__tests__/parseFields.test.js.map +1 -0
  976. package/dist/lib/adminConfig.d.ts +48 -0
  977. package/dist/lib/adminConfig.d.ts.map +1 -0
  978. package/dist/lib/adminConfig.js +126 -0
  979. package/dist/lib/adminConfig.js.map +1 -0
  980. package/dist/lib/canonicalRefs.d.ts +155 -0
  981. package/dist/lib/canonicalRefs.d.ts.map +1 -0
  982. package/dist/lib/canonicalRefs.js +131 -0
  983. package/dist/lib/canonicalRefs.js.map +1 -0
  984. package/dist/lib/captureLink.d.ts +7 -0
  985. package/dist/lib/captureLink.d.ts.map +1 -0
  986. package/dist/lib/captureLink.js +29 -0
  987. package/dist/lib/captureLink.js.map +1 -0
  988. package/dist/lib/checklist.d.ts +151 -0
  989. package/dist/lib/checklist.d.ts.map +1 -0
  990. package/dist/lib/checklist.js +235 -0
  991. package/dist/lib/checklist.js.map +1 -0
  992. package/dist/lib/cliFirstRun.d.ts +36 -0
  993. package/dist/lib/cliFirstRun.d.ts.map +1 -0
  994. package/dist/lib/cliFirstRun.js +36 -0
  995. package/dist/lib/cliFirstRun.js.map +1 -0
  996. package/dist/lib/client.d.ts +58 -28
  997. package/dist/lib/client.d.ts.map +1 -1
  998. package/dist/lib/client.js +361 -62
  999. package/dist/lib/client.js.map +1 -1
  1000. package/dist/lib/compose-wrapup-view.d.ts +66 -0
  1001. package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
  1002. package/dist/lib/compose-wrapup-view.js +39 -0
  1003. package/dist/lib/compose-wrapup-view.js.map +1 -0
  1004. package/dist/lib/config.d.ts +147 -6
  1005. package/dist/lib/config.d.ts.map +1 -1
  1006. package/dist/lib/config.js +377 -73
  1007. package/dist/lib/config.js.map +1 -1
  1008. package/dist/lib/configResult.d.ts +110 -0
  1009. package/dist/lib/configResult.d.ts.map +1 -0
  1010. package/dist/lib/configResult.js +189 -0
  1011. package/dist/lib/configResult.js.map +1 -0
  1012. package/dist/lib/conflictResolution.d.ts +37 -0
  1013. package/dist/lib/conflictResolution.d.ts.map +1 -0
  1014. package/dist/lib/conflictResolution.js +29 -0
  1015. package/dist/lib/conflictResolution.js.map +1 -0
  1016. package/dist/lib/connectKeyLabel.d.ts +9 -0
  1017. package/dist/lib/connectKeyLabel.d.ts.map +1 -0
  1018. package/dist/lib/connectKeyLabel.js +12 -0
  1019. package/dist/lib/connectKeyLabel.js.map +1 -0
  1020. package/dist/lib/connectProfileName.d.ts +36 -0
  1021. package/dist/lib/connectProfileName.d.ts.map +1 -0
  1022. package/dist/lib/connectProfileName.js +72 -0
  1023. package/dist/lib/connectProfileName.js.map +1 -0
  1024. package/dist/lib/connectProfileName.test.d.ts +2 -0
  1025. package/dist/lib/connectProfileName.test.d.ts.map +1 -0
  1026. package/dist/lib/connectProfileName.test.js +100 -0
  1027. package/dist/lib/connectProfileName.test.js.map +1 -0
  1028. package/dist/lib/constants.d.ts +51 -0
  1029. package/dist/lib/constants.d.ts.map +1 -0
  1030. package/dist/lib/constants.js +90 -0
  1031. package/dist/lib/constants.js.map +1 -0
  1032. package/dist/lib/conversation.d.ts +48 -0
  1033. package/dist/lib/conversation.d.ts.map +1 -0
  1034. package/dist/lib/conversation.js +136 -0
  1035. package/dist/lib/conversation.js.map +1 -0
  1036. package/dist/lib/createEntryResult.d.ts +34 -0
  1037. package/dist/lib/createEntryResult.d.ts.map +1 -0
  1038. package/dist/lib/createEntryResult.js +12 -0
  1039. package/dist/lib/createEntryResult.js.map +1 -0
  1040. package/dist/lib/deployment.d.ts +23 -0
  1041. package/dist/lib/deployment.d.ts.map +1 -0
  1042. package/dist/lib/deployment.js +78 -0
  1043. package/dist/lib/deployment.js.map +1 -0
  1044. package/dist/lib/deployment.test.d.ts +5 -0
  1045. package/dist/lib/deployment.test.d.ts.map +1 -0
  1046. package/dist/lib/deployment.test.js +73 -0
  1047. package/dist/lib/deployment.test.js.map +1 -0
  1048. package/dist/lib/envKeySnapshot.d.ts +10 -0
  1049. package/dist/lib/envKeySnapshot.d.ts.map +1 -0
  1050. package/dist/lib/envKeySnapshot.js +30 -0
  1051. package/dist/lib/envKeySnapshot.js.map +1 -0
  1052. package/dist/lib/errors.d.ts +153 -0
  1053. package/dist/lib/errors.d.ts.map +1 -0
  1054. package/dist/lib/errors.js +158 -0
  1055. package/dist/lib/errors.js.map +1 -0
  1056. package/dist/lib/format.d.ts +10 -0
  1057. package/dist/lib/format.d.ts.map +1 -0
  1058. package/dist/lib/format.js +27 -0
  1059. package/dist/lib/format.js.map +1 -0
  1060. package/dist/lib/gatewayTimeout.d.ts +88 -0
  1061. package/dist/lib/gatewayTimeout.d.ts.map +1 -0
  1062. package/dist/lib/gatewayTimeout.js +124 -0
  1063. package/dist/lib/gatewayTimeout.js.map +1 -0
  1064. package/dist/lib/gitEnvLeakKeysParity.test.d.ts +2 -0
  1065. package/dist/lib/gitEnvLeakKeysParity.test.d.ts.map +1 -0
  1066. package/dist/lib/gitEnvLeakKeysParity.test.js +73 -0
  1067. package/dist/lib/gitEnvLeakKeysParity.test.js.map +1 -0
  1068. package/dist/lib/glossary.d.ts +7 -0
  1069. package/dist/lib/glossary.d.ts.map +1 -0
  1070. package/dist/lib/glossary.js +12 -0
  1071. package/dist/lib/glossary.js.map +1 -0
  1072. package/dist/lib/judgeWait.d.ts +50 -0
  1073. package/dist/lib/judgeWait.d.ts.map +1 -0
  1074. package/dist/lib/judgeWait.js +64 -0
  1075. package/dist/lib/judgeWait.js.map +1 -0
  1076. package/dist/lib/kernelEnvelope.d.ts +61 -0
  1077. package/dist/lib/kernelEnvelope.d.ts.map +1 -0
  1078. package/dist/lib/kernelEnvelope.js +98 -0
  1079. package/dist/lib/kernelEnvelope.js.map +1 -0
  1080. package/dist/lib/keyResultLines.d.ts +27 -0
  1081. package/dist/lib/keyResultLines.d.ts.map +1 -0
  1082. package/dist/lib/keyResultLines.js +32 -0
  1083. package/dist/lib/keyResultLines.js.map +1 -0
  1084. package/dist/lib/limits.d.ts +88 -0
  1085. package/dist/lib/limits.d.ts.map +1 -0
  1086. package/dist/lib/limits.js +141 -0
  1087. package/dist/lib/limits.js.map +1 -0
  1088. package/dist/lib/localBinding.d.ts +86 -0
  1089. package/dist/lib/localBinding.d.ts.map +1 -0
  1090. package/dist/lib/localBinding.js +173 -0
  1091. package/dist/lib/localBinding.js.map +1 -0
  1092. package/dist/lib/nameFromText.d.ts +15 -0
  1093. package/dist/lib/nameFromText.d.ts.map +1 -0
  1094. package/dist/lib/nameFromText.js +36 -0
  1095. package/dist/lib/nameFromText.js.map +1 -0
  1096. package/dist/lib/notice-marker.d.ts +3 -0
  1097. package/dist/lib/notice-marker.d.ts.map +1 -0
  1098. package/dist/lib/notice-marker.js +223 -0
  1099. package/dist/lib/notice-marker.js.map +1 -0
  1100. package/dist/lib/outcomeObjectiveLines.d.ts +34 -0
  1101. package/dist/lib/outcomeObjectiveLines.d.ts.map +1 -0
  1102. package/dist/lib/outcomeObjectiveLines.js +30 -0
  1103. package/dist/lib/outcomeObjectiveLines.js.map +1 -0
  1104. package/dist/lib/ownerLine.d.ts +90 -0
  1105. package/dist/lib/ownerLine.d.ts.map +1 -0
  1106. package/dist/lib/ownerLine.js +77 -0
  1107. package/dist/lib/ownerLine.js.map +1 -0
  1108. package/dist/lib/parseFields.d.ts +19 -0
  1109. package/dist/lib/parseFields.d.ts.map +1 -0
  1110. package/dist/lib/parseFields.js +49 -0
  1111. package/dist/lib/parseFields.js.map +1 -0
  1112. package/dist/lib/pinnedRole.d.ts +29 -0
  1113. package/dist/lib/pinnedRole.d.ts.map +1 -0
  1114. package/dist/lib/pinnedRole.js +115 -0
  1115. package/dist/lib/pinnedRole.js.map +1 -0
  1116. package/dist/lib/platformGlossary.d.ts +22 -0
  1117. package/dist/lib/platformGlossary.d.ts.map +1 -0
  1118. package/dist/lib/platformGlossary.js +26 -0
  1119. package/dist/lib/platformGlossary.js.map +1 -0
  1120. package/dist/lib/previewBanner.d.ts +9 -0
  1121. package/dist/lib/previewBanner.d.ts.map +1 -0
  1122. package/dist/lib/previewBanner.js +36 -0
  1123. package/dist/lib/previewBanner.js.map +1 -0
  1124. package/dist/lib/priority.d.ts +64 -0
  1125. package/dist/lib/priority.d.ts.map +1 -0
  1126. package/dist/lib/priority.js +31 -0
  1127. package/dist/lib/priority.js.map +1 -0
  1128. package/dist/lib/privateFile.d.ts +13 -0
  1129. package/dist/lib/privateFile.d.ts.map +1 -0
  1130. package/dist/lib/privateFile.js +65 -0
  1131. package/dist/lib/privateFile.js.map +1 -0
  1132. package/dist/lib/privateFile.test.d.ts +2 -0
  1133. package/dist/lib/privateFile.test.d.ts.map +1 -0
  1134. package/dist/lib/privateFile.test.js +76 -0
  1135. package/dist/lib/privateFile.test.js.map +1 -0
  1136. package/dist/lib/productbrain-files.d.ts +108 -0
  1137. package/dist/lib/productbrain-files.d.ts.map +1 -0
  1138. package/dist/lib/productbrain-files.js +240 -0
  1139. package/dist/lib/productbrain-files.js.map +1 -0
  1140. package/dist/lib/productbrain-files.test.d.ts +2 -0
  1141. package/dist/lib/productbrain-files.test.d.ts.map +1 -0
  1142. package/dist/lib/productbrain-files.test.js +518 -0
  1143. package/dist/lib/productbrain-files.test.js.map +1 -0
  1144. package/dist/lib/profiles.d.ts +89 -0
  1145. package/dist/lib/profiles.d.ts.map +1 -0
  1146. package/dist/lib/profiles.js +240 -0
  1147. package/dist/lib/profiles.js.map +1 -0
  1148. package/dist/lib/projectConfig.d.ts +130 -0
  1149. package/dist/lib/projectConfig.d.ts.map +1 -0
  1150. package/dist/lib/projectConfig.js +252 -0
  1151. package/dist/lib/projectConfig.js.map +1 -0
  1152. package/dist/lib/prompts.d.ts +67 -0
  1153. package/dist/lib/prompts.d.ts.map +1 -0
  1154. package/dist/lib/prompts.js +134 -0
  1155. package/dist/lib/prompts.js.map +1 -0
  1156. package/dist/lib/proseBody.d.ts +14 -0
  1157. package/dist/lib/proseBody.d.ts.map +1 -0
  1158. package/dist/lib/proseBody.js +25 -0
  1159. package/dist/lib/proseBody.js.map +1 -0
  1160. package/dist/lib/rate-limit.d.ts +40 -0
  1161. package/dist/lib/rate-limit.d.ts.map +1 -0
  1162. package/dist/lib/rate-limit.js +89 -0
  1163. package/dist/lib/rate-limit.js.map +1 -0
  1164. package/dist/lib/readinessNotices.d.ts +2 -0
  1165. package/dist/lib/readinessNotices.d.ts.map +1 -0
  1166. package/dist/lib/readinessNotices.js +12 -0
  1167. package/dist/lib/readinessNotices.js.map +1 -0
  1168. package/dist/lib/reportedProfile.d.ts +18 -0
  1169. package/dist/lib/reportedProfile.d.ts.map +1 -0
  1170. package/dist/lib/reportedProfile.js +148 -0
  1171. package/dist/lib/reportedProfile.js.map +1 -0
  1172. package/dist/lib/restsOn.d.ts +33 -0
  1173. package/dist/lib/restsOn.d.ts.map +1 -0
  1174. package/dist/lib/restsOn.js +34 -0
  1175. package/dist/lib/restsOn.js.map +1 -0
  1176. package/dist/lib/routeCommandWords.d.ts +13 -0
  1177. package/dist/lib/routeCommandWords.d.ts.map +1 -0
  1178. package/dist/lib/routeCommandWords.js +27 -0
  1179. package/dist/lib/routeCommandWords.js.map +1 -0
  1180. package/dist/lib/ruleListRender.d.ts +315 -0
  1181. package/dist/lib/ruleListRender.d.ts.map +1 -0
  1182. package/dist/lib/ruleListRender.js +386 -0
  1183. package/dist/lib/ruleListRender.js.map +1 -0
  1184. package/dist/lib/runner.d.ts +11 -1
  1185. package/dist/lib/runner.d.ts.map +1 -1
  1186. package/dist/lib/runner.js +51 -11
  1187. package/dist/lib/runner.js.map +1 -1
  1188. package/dist/lib/seatRoster.d.ts +65 -0
  1189. package/dist/lib/seatRoster.d.ts.map +1 -0
  1190. package/dist/lib/seatRoster.js +41 -0
  1191. package/dist/lib/seatRoster.js.map +1 -0
  1192. package/dist/lib/seatSentence.d.ts +196 -0
  1193. package/dist/lib/seatSentence.d.ts.map +1 -0
  1194. package/dist/lib/seatSentence.js +214 -0
  1195. package/dist/lib/seatSentence.js.map +1 -0
  1196. package/dist/lib/session.d.ts +111 -4
  1197. package/dist/lib/session.d.ts.map +1 -1
  1198. package/dist/lib/session.js +318 -13
  1199. package/dist/lib/session.js.map +1 -1
  1200. package/dist/lib/sessionBinding.d.ts +62 -0
  1201. package/dist/lib/sessionBinding.d.ts.map +1 -0
  1202. package/dist/lib/sessionBinding.js +126 -0
  1203. package/dist/lib/sessionBinding.js.map +1 -0
  1204. package/dist/lib/sessionNotices.d.ts +52 -0
  1205. package/dist/lib/sessionNotices.d.ts.map +1 -0
  1206. package/dist/lib/sessionNotices.js +124 -0
  1207. package/dist/lib/sessionNotices.js.map +1 -0
  1208. package/dist/lib/sessionNotices.test.d.ts +2 -0
  1209. package/dist/lib/sessionNotices.test.d.ts.map +1 -0
  1210. package/dist/lib/sessionNotices.test.js +53 -0
  1211. package/dist/lib/sessionNotices.test.js.map +1 -0
  1212. package/dist/lib/sessionOpen.d.ts +26 -0
  1213. package/dist/lib/sessionOpen.d.ts.map +1 -0
  1214. package/dist/lib/sessionOpen.js +56 -0
  1215. package/dist/lib/sessionOpen.js.map +1 -0
  1216. package/dist/lib/sessionStartCommands.d.ts +5 -0
  1217. package/dist/lib/sessionStartCommands.d.ts.map +1 -0
  1218. package/dist/lib/sessionStartCommands.js +12 -0
  1219. package/dist/lib/sessionStartCommands.js.map +1 -0
  1220. package/dist/lib/sessionStartWords.d.ts +18 -0
  1221. package/dist/lib/sessionStartWords.d.ts.map +1 -0
  1222. package/dist/lib/sessionStartWords.js +34 -0
  1223. package/dist/lib/sessionStartWords.js.map +1 -0
  1224. package/dist/lib/spineRungs.d.ts +44 -0
  1225. package/dist/lib/spineRungs.d.ts.map +1 -0
  1226. package/dist/lib/spineRungs.js +19 -0
  1227. package/dist/lib/spineRungs.js.map +1 -0
  1228. package/dist/lib/spineVerdictRead.d.ts +76 -0
  1229. package/dist/lib/spineVerdictRead.d.ts.map +1 -0
  1230. package/dist/lib/spineVerdictRead.js +76 -0
  1231. package/dist/lib/spineVerdictRead.js.map +1 -0
  1232. package/dist/lib/spinner.d.ts +27 -0
  1233. package/dist/lib/spinner.d.ts.map +1 -0
  1234. package/dist/lib/spinner.js +76 -0
  1235. package/dist/lib/spinner.js.map +1 -0
  1236. package/dist/lib/spinner.test.d.ts +2 -0
  1237. package/dist/lib/spinner.test.d.ts.map +1 -0
  1238. package/dist/lib/spinner.test.js +39 -0
  1239. package/dist/lib/spinner.test.js.map +1 -0
  1240. package/dist/lib/startup-signals.d.ts +12 -0
  1241. package/dist/lib/startup-signals.d.ts.map +1 -0
  1242. package/dist/lib/startup-signals.js +173 -0
  1243. package/dist/lib/startup-signals.js.map +1 -0
  1244. package/dist/lib/startup-signals.test.d.ts +2 -0
  1245. package/dist/lib/startup-signals.test.d.ts.map +1 -0
  1246. package/dist/lib/startup-signals.test.js +165 -0
  1247. package/dist/lib/startup-signals.test.js.map +1 -0
  1248. package/dist/lib/state.d.ts +60 -0
  1249. package/dist/lib/state.d.ts.map +1 -0
  1250. package/dist/lib/state.js +97 -0
  1251. package/dist/lib/state.js.map +1 -0
  1252. package/dist/lib/statusCategories.d.ts +168 -0
  1253. package/dist/lib/statusCategories.d.ts.map +1 -0
  1254. package/dist/lib/statusCategories.js +299 -0
  1255. package/dist/lib/statusCategories.js.map +1 -0
  1256. package/dist/lib/strip.d.ts +18 -0
  1257. package/dist/lib/strip.d.ts.map +1 -1
  1258. package/dist/lib/strip.js +62 -0
  1259. package/dist/lib/strip.js.map +1 -1
  1260. package/dist/lib/style.d.ts +109 -0
  1261. package/dist/lib/style.d.ts.map +1 -0
  1262. package/dist/lib/style.js +183 -0
  1263. package/dist/lib/style.js.map +1 -0
  1264. package/dist/lib/style.test.d.ts +7 -0
  1265. package/dist/lib/style.test.d.ts.map +1 -0
  1266. package/dist/lib/style.test.js +262 -0
  1267. package/dist/lib/style.test.js.map +1 -0
  1268. package/dist/lib/tokenConstants.d.ts +31 -0
  1269. package/dist/lib/tokenConstants.d.ts.map +1 -0
  1270. package/dist/lib/tokenConstants.js +34 -0
  1271. package/dist/lib/tokenConstants.js.map +1 -0
  1272. package/dist/lib/update-check.d.ts +51 -0
  1273. package/dist/lib/update-check.d.ts.map +1 -0
  1274. package/dist/lib/update-check.js +261 -0
  1275. package/dist/lib/update-check.js.map +1 -0
  1276. package/dist/lib/upgrade-runner.d.ts +38 -0
  1277. package/dist/lib/upgrade-runner.d.ts.map +1 -0
  1278. package/dist/lib/upgrade-runner.js +140 -0
  1279. package/dist/lib/upgrade-runner.js.map +1 -0
  1280. package/dist/lib/workPackageList.d.ts +138 -0
  1281. package/dist/lib/workPackageList.d.ts.map +1 -0
  1282. package/dist/lib/workPackageList.js +139 -0
  1283. package/dist/lib/workPackageList.js.map +1 -0
  1284. package/dist/lib/workspace-probe.d.ts +28 -0
  1285. package/dist/lib/workspace-probe.d.ts.map +1 -0
  1286. package/dist/lib/workspace-probe.js +20 -0
  1287. package/dist/lib/workspace-probe.js.map +1 -0
  1288. package/dist/lib/workspaceNotice.d.ts +201 -0
  1289. package/dist/lib/workspaceNotice.d.ts.map +1 -0
  1290. package/dist/lib/workspaceNotice.js +346 -0
  1291. package/dist/lib/workspaceNotice.js.map +1 -0
  1292. package/dist/lib/workspaceVocabCache.d.ts +54 -0
  1293. package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
  1294. package/dist/lib/workspaceVocabCache.js +92 -0
  1295. package/dist/lib/workspaceVocabCache.js.map +1 -0
  1296. package/dist/registerEntryCommands.d.ts +18 -0
  1297. package/dist/registerEntryCommands.d.ts.map +1 -0
  1298. package/dist/registerEntryCommands.js +146 -0
  1299. package/dist/registerEntryCommands.js.map +1 -0
  1300. package/dist/registerHistoryCommand.d.ts +8 -0
  1301. package/dist/registerHistoryCommand.d.ts.map +1 -0
  1302. package/dist/registerHistoryCommand.js +14 -0
  1303. package/dist/registerHistoryCommand.js.map +1 -0
  1304. package/dist/registerOutcomeCommands.d.ts +27 -0
  1305. package/dist/registerOutcomeCommands.d.ts.map +1 -0
  1306. package/dist/registerOutcomeCommands.js +27 -0
  1307. package/dist/registerOutcomeCommands.js.map +1 -0
  1308. package/dist/registerRoleCommands.d.ts +11 -0
  1309. package/dist/registerRoleCommands.d.ts.map +1 -0
  1310. package/dist/registerRoleCommands.js +43 -0
  1311. package/dist/registerRoleCommands.js.map +1 -0
  1312. package/dist/registerTensionsCommands.d.ts +11 -0
  1313. package/dist/registerTensionsCommands.d.ts.map +1 -0
  1314. package/dist/registerTensionsCommands.js +28 -0
  1315. package/dist/registerTensionsCommands.js.map +1 -0
  1316. package/dist/scoreboard/diagnose.d.ts +133 -0
  1317. package/dist/scoreboard/diagnose.d.ts.map +1 -0
  1318. package/dist/scoreboard/diagnose.js +150 -0
  1319. package/dist/scoreboard/diagnose.js.map +1 -0
  1320. package/dist/scoreboard/diagnose.test.d.ts +15 -0
  1321. package/dist/scoreboard/diagnose.test.d.ts.map +1 -0
  1322. package/dist/scoreboard/diagnose.test.js +189 -0
  1323. package/dist/scoreboard/diagnose.test.js.map +1 -0
  1324. package/dist/scoreboard/floors.d.ts +34 -0
  1325. package/dist/scoreboard/floors.d.ts.map +1 -0
  1326. package/dist/scoreboard/floors.js +11 -0
  1327. package/dist/scoreboard/floors.js.map +1 -0
  1328. package/dist/served-doors.test.d.ts +2 -0
  1329. package/dist/served-doors.test.d.ts.map +1 -0
  1330. package/dist/served-doors.test.js +169 -0
  1331. package/dist/served-doors.test.js.map +1 -0
  1332. package/package.json +16 -8
  1333. package/dist/__tests__/audit.test.d.ts +0 -2
  1334. package/dist/__tests__/audit.test.d.ts.map +0 -1
  1335. package/dist/__tests__/audit.test.js +0 -394
  1336. package/dist/__tests__/audit.test.js.map +0 -1
  1337. package/dist/__tests__/handshake.test.d.ts +0 -2
  1338. package/dist/__tests__/handshake.test.d.ts.map +0 -1
  1339. package/dist/__tests__/handshake.test.js +0 -187
  1340. package/dist/__tests__/handshake.test.js.map +0 -1
  1341. package/dist/__tests__/ingest.test.d.ts +0 -2
  1342. package/dist/__tests__/ingest.test.d.ts.map +0 -1
  1343. package/dist/__tests__/ingest.test.js +0 -185
  1344. package/dist/__tests__/ingest.test.js.map +0 -1
  1345. package/dist/__tests__/promote.test.d.ts +0 -2
  1346. package/dist/__tests__/promote.test.d.ts.map +0 -1
  1347. package/dist/__tests__/promote.test.js +0 -139
  1348. package/dist/__tests__/promote.test.js.map +0 -1
  1349. package/dist/__tests__/proposals.test.d.ts +0 -2
  1350. package/dist/__tests__/proposals.test.d.ts.map +0 -1
  1351. package/dist/__tests__/proposals.test.js +0 -190
  1352. package/dist/__tests__/proposals.test.js.map +0 -1
  1353. package/dist/__tests__/repo-detect.test.d.ts +0 -2
  1354. package/dist/__tests__/repo-detect.test.d.ts.map +0 -1
  1355. package/dist/__tests__/repo-detect.test.js +0 -119
  1356. package/dist/__tests__/repo-detect.test.js.map +0 -1
  1357. package/dist/commands/accept.d.ts +0 -18
  1358. package/dist/commands/accept.d.ts.map +0 -1
  1359. package/dist/commands/accept.js +0 -72
  1360. package/dist/commands/accept.js.map +0 -1
  1361. package/dist/commands/audit.d.ts +0 -25
  1362. package/dist/commands/audit.d.ts.map +0 -1
  1363. package/dist/commands/audit.js +0 -188
  1364. package/dist/commands/audit.js.map +0 -1
  1365. package/dist/commands/brand-pack.d.ts +0 -2
  1366. package/dist/commands/brand-pack.d.ts.map +0 -1
  1367. package/dist/commands/brand-pack.js +0 -25
  1368. package/dist/commands/brand-pack.js.map +0 -1
  1369. package/dist/commands/handshake.d.ts +0 -18
  1370. package/dist/commands/handshake.d.ts.map +0 -1
  1371. package/dist/commands/handshake.js +0 -378
  1372. package/dist/commands/handshake.js.map +0 -1
  1373. package/dist/commands/ingest.d.ts +0 -14
  1374. package/dist/commands/ingest.d.ts.map +0 -1
  1375. package/dist/commands/ingest.js +0 -181
  1376. package/dist/commands/ingest.js.map +0 -1
  1377. package/dist/commands/promote.d.ts +0 -12
  1378. package/dist/commands/promote.d.ts.map +0 -1
  1379. package/dist/commands/promote.js +0 -48
  1380. package/dist/commands/promote.js.map +0 -1
  1381. package/dist/commands/proposals.d.ts +0 -9
  1382. package/dist/commands/proposals.d.ts.map +0 -1
  1383. package/dist/commands/proposals.js +0 -24
  1384. package/dist/commands/proposals.js.map +0 -1
  1385. package/dist/commands/reject.d.ts +0 -14
  1386. package/dist/commands/reject.d.ts.map +0 -1
  1387. package/dist/commands/reject.js +0 -37
  1388. package/dist/commands/reject.js.map +0 -1
  1389. package/dist/formatters/audit.d.ts +0 -46
  1390. package/dist/formatters/audit.d.ts.map +0 -1
  1391. package/dist/formatters/audit.js +0 -81
  1392. package/dist/formatters/audit.js.map +0 -1
  1393. package/dist/formatters/handshake.d.ts +0 -17
  1394. package/dist/formatters/handshake.d.ts.map +0 -1
  1395. package/dist/formatters/handshake.js +0 -51
  1396. package/dist/formatters/handshake.js.map +0 -1
  1397. package/dist/formatters/promote.d.ts +0 -29
  1398. package/dist/formatters/promote.d.ts.map +0 -1
  1399. package/dist/formatters/promote.js +0 -38
  1400. package/dist/formatters/promote.js.map +0 -1
  1401. package/dist/formatters/proposals.d.ts +0 -45
  1402. package/dist/formatters/proposals.d.ts.map +0 -1
  1403. package/dist/formatters/proposals.js +0 -62
  1404. package/dist/formatters/proposals.js.map +0 -1
  1405. package/dist/generators/adapters.d.ts +0 -10
  1406. package/dist/generators/adapters.d.ts.map +0 -1
  1407. package/dist/generators/adapters.js +0 -102
  1408. package/dist/generators/adapters.js.map +0 -1
  1409. package/dist/generators/briefing-md.d.ts +0 -8
  1410. package/dist/generators/briefing-md.d.ts.map +0 -1
  1411. package/dist/generators/briefing-md.js +0 -51
  1412. package/dist/generators/briefing-md.js.map +0 -1
  1413. package/dist/generators/context-md.d.ts +0 -8
  1414. package/dist/generators/context-md.d.ts.map +0 -1
  1415. package/dist/generators/context-md.js +0 -123
  1416. package/dist/generators/context-md.js.map +0 -1
  1417. package/dist/generators/portable-knowledge.d.ts +0 -72
  1418. package/dist/generators/portable-knowledge.d.ts.map +0 -1
  1419. package/dist/generators/portable-knowledge.js +0 -246
  1420. package/dist/generators/portable-knowledge.js.map +0 -1
  1421. package/dist/generators/portable-knowledge.test.d.ts +0 -2
  1422. package/dist/generators/portable-knowledge.test.d.ts.map +0 -1
  1423. package/dist/generators/portable-knowledge.test.js +0 -399
  1424. package/dist/generators/portable-knowledge.test.js.map +0 -1
  1425. package/dist/lib/repo-detect.d.ts +0 -14
  1426. package/dist/lib/repo-detect.d.ts.map +0 -1
  1427. package/dist/lib/repo-detect.js +0 -58
  1428. package/dist/lib/repo-detect.js.map +0 -1
@@ -1,14 +1,17 @@
1
1
  /**
2
- * pb update — verify mcpCallWithSession sequence and args.
2
+ * pb update — verify kernelCallWithSession sequence and args.
3
3
  * TEN-341 test contract: happy path, no session, empty entryId.
4
4
  */
5
5
  import { beforeEach, describe, expect, it, vi } from 'vitest';
6
6
  import { runUpdate } from '../commands/update.js';
7
- const mcpCallWithSessionMock = vi.fn();
8
- const mcpCallMock = vi.fn();
7
+ import { CLIError, ErrorCode } from '../lib/errors.js';
8
+ import { isJsonMode } from '../lib/runner.js';
9
+ const mockIsJsonMode = vi.mocked(isJsonMode);
10
+ const kernelCallWithSessionMock = vi.fn();
11
+ const kernelCallMock = vi.fn();
9
12
  vi.mock('../lib/client.js', () => ({
10
- mcpCallWithSession: (...args) => mcpCallWithSessionMock(...args),
11
- mcpCall: (...args) => mcpCallMock(...args),
13
+ kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
14
+ kernelCall: (...args) => kernelCallMock(...args),
12
15
  // McpError exported so update.ts can import the type (not used at runtime in tests).
13
16
  McpError: class McpError extends Error {
14
17
  details;
@@ -35,9 +38,10 @@ function makeMcpError(message, code, details) {
35
38
  vi.mock('../lib/config.js', () => ({
36
39
  getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
37
40
  }));
38
- // Force pretty mode for all tests so formatUpdateReceipt output is tested (not JSON)
41
+ // Defaults to pretty mode so formatUpdateReceipt output is tested (not JSON); individual
42
+ // tests override with mockIsJsonMode.mockReturnValue(true) to exercise the JSON branch.
39
43
  vi.mock('../lib/runner.js', () => ({
40
- isJsonMode: () => false,
44
+ isJsonMode: vi.fn(() => false),
41
45
  }));
42
46
  // Session mock — controlled per test
43
47
  let mockSession = { sessionId: 'sess-test' };
@@ -49,7 +53,7 @@ describe('runUpdate', () => {
49
53
  vi.clearAllMocks();
50
54
  mockSession = { sessionId: 'sess-test' };
51
55
  // BET-192: updateEntry returns warnings + normalization breakdown (symmetric with createEntry)
52
- mcpCallWithSessionMock.mockResolvedValue({
56
+ kernelCallWithSessionMock.mockResolvedValue({
53
57
  id: 'j571abc123def456',
54
58
  warnings: [],
55
59
  normalization: { remapped: {}, rejected: [], accepted: [] },
@@ -57,7 +61,7 @@ describe('runUpdate', () => {
57
61
  validationWarnings: [],
58
62
  });
59
63
  // Post-update refresh: default to returning a minimal entry.
60
- mcpCallMock.mockResolvedValue({
64
+ kernelCallMock.mockResolvedValue({
61
65
  entryId: 'BET-151',
62
66
  name: 'Test Entry',
63
67
  status: 'active',
@@ -71,8 +75,9 @@ describe('runUpdate', () => {
71
75
  note: 'Updated description',
72
76
  });
73
77
  writeSpy.mockRestore();
74
- expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
78
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
75
79
  entryId: 'BET-151',
80
+ changedBy: 'agent:sess-test',
76
81
  data: { description: 'new description' },
77
82
  changeNote: 'Updated description',
78
83
  });
@@ -82,17 +87,64 @@ describe('runUpdate', () => {
82
87
  await runUpdate({
83
88
  entryId: 'TEN-703',
84
89
  name: 'New name',
85
- status: 'active',
90
+ status: 'archived',
86
91
  note: 'Resolved',
87
92
  });
88
93
  writeSpy.mockRestore();
89
- expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
94
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
90
95
  entryId: 'TEN-703',
96
+ changedBy: 'agent:sess-test',
91
97
  name: 'New name',
92
- status: 'active',
98
+ status: 'archived',
93
99
  changeNote: 'Resolved',
94
100
  });
95
101
  });
102
+ // T8 (TASK-393, WP-779): --status is validated client-side against the generated write
103
+ // vocabulary (kernel/entries/statusCategories.ts) before the round trip.
104
+ it('refuses a legacy status word via --status', async () => {
105
+ const err = await runUpdate({ entryId: 'TEN-703', status: 'active' }).catch((e) => e);
106
+ expect(err).toBeInstanceOf(CLIError);
107
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
108
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
109
+ });
110
+ it('refuses an unknown status word via --status', async () => {
111
+ const err = await runUpdate({ entryId: 'TEN-703', status: 'not-a-real-status' }).catch((e) => e);
112
+ expect(err).toBeInstanceOf(CLIError);
113
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
114
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
115
+ });
116
+ // Round-1 review (Codex P2, PRRT_kwDORS4ils6mPBU8): `--status ""` is PROVIDED but blank, not
117
+ // ABSENT — a truthiness check let it skip the vocabulary check entirely and silently drop the
118
+ // status while other fields still applied (same class of bug PR #622 already fixed for --type).
119
+ it('refuses a blank --status "" instead of silently dropping it', async () => {
120
+ const err = await runUpdate({ entryId: 'TEN-703', status: '', name: 'New name' }).catch((e) => e);
121
+ expect(err).toBeInstanceOf(CLIError);
122
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
123
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
124
+ });
125
+ it('passes workflowStatus as root-level arg when provided', async () => {
126
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
127
+ await runUpdate({
128
+ entryId: 'BET-271',
129
+ workflowStatus: 'shipped',
130
+ });
131
+ writeSpy.mockRestore();
132
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
133
+ entryId: 'BET-271',
134
+ changedBy: 'agent:sess-test',
135
+ workflowStatus: 'shipped',
136
+ });
137
+ });
138
+ // SHOULD-FIX 4 (fix round): `--workflow-status` alone applied nothing the OLD receipt's field
139
+ // set could name (it only ever checked name/status) — pre-fix this printed "Updated BET-271: "
140
+ // with an empty list for a write that genuinely succeeded.
141
+ it('workflowStatus alone produces a non-empty receipt naming it (SHOULD-FIX 4)', async () => {
142
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
143
+ await runUpdate({ entryId: 'BET-271', workflowStatus: 'shipped' });
144
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
145
+ writeSpy.mockRestore();
146
+ expect(output).toContain('Updated BET-271: workflowStatus → shipped');
147
+ });
96
148
  it('handles --field values containing = signs', async () => {
97
149
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
98
150
  await runUpdate({
@@ -100,48 +152,42 @@ describe('runUpdate', () => {
100
152
  field: ['rationale=a=b=c'],
101
153
  });
102
154
  writeSpy.mockRestore();
103
- expect(mcpCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
155
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
104
156
  entryId: 'DEC-264',
157
+ changedBy: 'agent:sess-test',
105
158
  data: { rationale: 'a=b=c' },
106
159
  });
107
160
  });
108
- it('exits 1 with no active session', async () => {
161
+ it('prints the kernel lines for a draft that still lacks a required field, as sent', async () => {
162
+ kernelCallWithSessionMock.mockResolvedValue({
163
+ id: 'j571abc123def456', warnings: [], normalization: { remapped: {}, rejected: [], accepted: ['body'] }, normalizationWarnings: [], validationWarnings: [],
164
+ missingFieldLines: ['Add a Done When item before accepting.', 'pb update TASK-9 -f doneWhen="<item>"'],
165
+ });
166
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
167
+ await runUpdate({ entryId: 'TASK-9', field: ['body=new text'] });
168
+ const out = writeSpy.mock.calls.map(([chunk]) => String(chunk)).join('');
169
+ writeSpy.mockRestore();
170
+ expect(out).toContain('Add a Done When item before accepting.\npb update TASK-9 -f doneWhen="<item>"\n');
171
+ });
172
+ it('throws CLIError with no active session', async () => {
109
173
  mockSession = null;
110
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
111
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
112
- await expect(runUpdate({ entryId: 'BET-151', field: ['x=1'] })).rejects.toThrow('exit');
113
- expect(exitSpy).toHaveBeenCalledWith(1);
114
- const stderrOutput = stderrSpy.mock.calls.map(c => String(c[0])).join('');
115
- expect(stderrOutput).toContain('No active session');
116
- expect(mcpCallWithSessionMock).not.toHaveBeenCalled();
117
- exitSpy.mockRestore();
118
- stderrSpy.mockRestore();
119
- });
120
- it('exits 1 with empty entryId', async () => {
121
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
122
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
123
- await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow('exit');
124
- expect(exitSpy).toHaveBeenCalledWith(1);
125
- expect(mcpCallWithSessionMock).not.toHaveBeenCalled();
126
- exitSpy.mockRestore();
127
- stderrSpy.mockRestore();
128
- });
129
- it('exits 1 when nothing to update', async () => {
130
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
131
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
132
- await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow('exit');
133
- expect(exitSpy).toHaveBeenCalledWith(1);
134
- const stderrOutput = stderrSpy.mock.calls.map(c => String(c[0])).join('');
135
- expect(stderrOutput).toContain('Nothing to update');
136
- expect(mcpCallWithSessionMock).not.toHaveBeenCalled();
137
- exitSpy.mockRestore();
138
- stderrSpy.mockRestore();
174
+ await expect(runUpdate({ entryId: 'BET-151', field: ['x=1'] })).rejects.toThrow(CLIError);
175
+ await expect(runUpdate({ entryId: 'BET-151', field: ['x=1'] })).rejects.toThrow('No active session');
176
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
177
+ });
178
+ it('throws CLIError with empty entryId', async () => {
179
+ await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow(CLIError);
180
+ await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow('Entry ID is required');
181
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
182
+ });
183
+ it('throws CLIError when nothing to update', async () => {
184
+ await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow(CLIError);
185
+ await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow('Nothing to update');
186
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
139
187
  });
140
188
  // ── Structured validation error tests ────────────────────────────────────
141
- it('displays structured select field error with valid options', async () => {
142
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
143
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
144
- mcpCallWithSessionMock.mockRejectedValue(makeMcpError("Entry data validation failed: Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'. Fix the values and try again.", 'VALIDATION_FAILED', [{
189
+ it('throws CLIError with structured select field error message', async () => {
190
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError("Entry data validation failed: Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'. Fix the values and try again.", 'VALIDATION_FAILED', [{
145
191
  fieldKey: 'appetite',
146
192
  fieldLabel: 'appetite',
147
193
  invalidValue: 'Small Batch',
@@ -149,45 +195,144 @@ describe('runUpdate', () => {
149
195
  errorType: 'invalid_option',
150
196
  message: "Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'",
151
197
  }]));
152
- await expect(runUpdate({ entryId: 'BET-151', field: ['appetite=Small Batch'] })).rejects.toThrow('exit');
153
- expect(exitSpy).toHaveBeenCalledWith(1);
154
- const stderrOutput = stderrSpy.mock.calls.map(c => String(c[0])).join('');
155
- expect(stderrOutput).toContain("Field 'appetite' must be one of: small, medium, large");
156
- expect(stderrOutput).toContain("Got: 'Small Batch'");
157
- exitSpy.mockRestore();
158
- stderrSpy.mockRestore();
159
- });
160
- it('falls back to plain error message when no structured details', async () => {
161
- const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
162
- const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
163
- mcpCallWithSessionMock.mockRejectedValue(makeMcpError('Entry not found.', 'NOT_FOUND'));
164
- await expect(runUpdate({ entryId: 'BET-999', field: ['x=1'] })).rejects.toThrow('exit');
165
- expect(exitSpy).toHaveBeenCalledWith(1);
166
- const stderrOutput = stderrSpy.mock.calls.map(c => String(c[0])).join('');
167
- expect(stderrOutput).toContain('Entry not found.');
168
- // Verify the error code is NOT_FOUND — regression guard against silent error code changes
169
- expect(stderrOutput).toContain('Error:');
170
- exitSpy.mockRestore();
171
- stderrSpy.mockRestore();
198
+ const err = await runUpdate({ entryId: 'BET-151', field: ['appetite=Small Batch'] }).catch((e) => e);
199
+ expect(err).toBeInstanceOf(CLIError);
200
+ expect(err.message).toContain("Field 'appetite' must be one of: small, medium, large");
201
+ expect(err.message).toContain("Got: 'Small Batch'");
202
+ });
203
+ it('keeps a session refusal as the session refusal it is, never a validation failure', async () => {
204
+ const refusal = Object.assign(makeMcpError('Session [sess-test] stopped and is closed. Start a new session.', 'SESSION_ORPHANED'), {
205
+ category: 'session', guidance: 'Run `pb session start` first.',
206
+ });
207
+ kernelCallWithSessionMock.mockRejectedValue(refusal);
208
+ const err = await runUpdate({ entryId: 'BET-151', field: ['appetite=small'] }).catch((e) => e);
209
+ expect(err).toBe(refusal);
210
+ });
211
+ // TASK-1247, TASK-1250 (DEC-2275): the why judge's refusal of an edited decision why names its own fix, so it prints as the kernel wrote it, with no Next.
212
+ it('prints the why judge refusal of an edited why unchanged', async () => {
213
+ const sentence = 'Not saved: the why does not say why. Name the reason this is the choice, not what it is.';
214
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError(sentence, 'VALIDATION_FAILED'));
215
+ const err = await runUpdate({ entryId: 'DEC-1', field: ['why=Because it is better.'] }).catch((e) => e);
216
+ expect(err).toBeInstanceOf(CLIError);
217
+ expect(err.message).toBe(sentence);
218
+ expect(err.guidance).toBeUndefined();
219
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', expect.objectContaining({ entryId: 'DEC-1', data: { why: 'Because it is better.' } }));
220
+ });
221
+ it('throws CLIError with plain error message when no structured details', async () => {
222
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Entry not found.', 'NOT_FOUND'));
223
+ const err = await runUpdate({ entryId: 'BET-999', field: ['x=1'] }).catch((e) => e);
224
+ expect(err).toBeInstanceOf(CLIError);
225
+ expect(err.message).toContain('Entry not found.');
226
+ });
227
+ it('a refused role retire prints the kernel sentence and the CLI next steps from its ids', async () => {
228
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Builder is still held by Preview Real Dev and Ann. Unseat each holder first.', 'VALIDATION_FAILED', [{ roleRetire: { roleId: 'ROL-7', holderPersonIds: ['PER-1', 'PER-2'] } }]));
229
+ const held = await runUpdate({ entryId: 'ROL-7', status: 'archived', archiveIntent: 'resolve', note: 'merged' }).catch((e) => e);
230
+ expect(held.message).toBe('Builder is still held by Preview Real Dev and Ann. Unseat each holder first.');
231
+ expect(held.guidance).toBe('Next: pb role unseat ROL-7 --person PER-1\nNext: pb role unseat ROL-7 --person PER-2');
232
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Builder still owns at least 1,019 open items. Move its open work to another role first.', 'VALIDATION_FAILED', [{ roleRetire: { roleId: 'ROL-7', openItems: 1019 } }]));
233
+ const open = await runUpdate({ entryId: 'ROL-7', status: 'archived', archiveIntent: 'resolve', note: 'merged' }).catch((e) => e);
234
+ expect(open.guidance).toBe('Next: pb entry own --from-role ROL-7 --to-role <role>');
235
+ });
236
+ // TASK-1163 (DEC-2293): a key result with live work packages; pb entry resolve and discard relay through runUpdate.
237
+ it('a refused close of a spine parent prints the kernel sentence and both Next lines: the replace and the re-home', async () => {
238
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError('2 live work packages still hang on this key result. Replace it to move them, or re-home each one first.', 'VALIDATION_FAILED', [
239
+ { spineNext: { action: 'accept', entryId: '<NEW-KEY-RESULT-ID>', replaces: 'KR-1' } }, { spineNext: { action: 'relate', from: 'WP-1', type: 'validates', toKind: 'key_result' } }
240
+ ]));
241
+ for (const args of [{ workflowStatus: 'cancelled' }, { status: 'archived', archiveIntent: 'resolve' }, { status: 'archived', archiveIntent: 'discard' }]) {
242
+ const err = await runUpdate({ entryId: 'KR-1', ...args }).catch((e) => e);
243
+ expect(err.message).toBe('2 live work packages still hang on this key result. Replace it to move them, or re-home each one first.');
244
+ expect(err.guidance).toBe('Next: pb entry accept <NEW-KEY-RESULT-ID> --replaces KR-1 --reason "<why>"\nNext: pb relate WP-1 validates <KEY-RESULT-ID>');
245
+ }
246
+ });
247
+ it('preserves a server authority refusal as machine-readable AUTH_DENIED', async () => {
248
+ kernelCallWithSessionMock.mockRejectedValue(makeMcpError('This record belongs to another team.', 'AUTHZ_PERMISSION_DENIED'));
249
+ const err = await runUpdate({ entryId: 'WP-OTHER-TEAM', field: ['description=no'] }).catch((e) => e);
250
+ expect(err).toBeInstanceOf(CLIError);
251
+ expect(err.code).toBe(ErrorCode.AUTH_DENIED);
252
+ expect(err.category).toBe('auth');
253
+ });
254
+ it('preserves a returned organisational refusal and its truthful next action', async () => {
255
+ kernelCallWithSessionMock.mockResolvedValue({
256
+ outcome: 'refused',
257
+ refusal: {
258
+ category: 'auth',
259
+ code: 'role_not_owner',
260
+ reason: 'This person does not hold this record’s exact owning role in its owning team.',
261
+ requiredAction: 'Route this change to a holder of the record’s exact owning role, or ask the relevant Team Lead to change its ownership.',
262
+ },
263
+ });
264
+ const err = await runUpdate({ entryId: 'WP-OTHER-TEAM', field: ['description=no'] }).catch((e) => e);
265
+ expect(err).toBeInstanceOf(CLIError);
266
+ expect(err.code).toBe(ErrorCode.AUTH_DENIED);
267
+ expect(err.category).toBe('auth');
268
+ expect(err.guidance).toBe('Route this change to a holder of the record’s exact owning role, or ask the relevant Team Lead to change its ownership.');
269
+ });
270
+ it('a returned refusal naming the deciding role ends with the line that asks that role', async () => {
271
+ kernelCallWithSessionMock.mockResolvedValue({
272
+ outcome: 'refused',
273
+ refusal: {
274
+ category: 'auth', code: 'role_not_owner', reason: 'This record is decided by Team Lead.', requiredAction: 'This record is decided by Team Lead; ask Ann.',
275
+ routeTarget: { teamEntryId: 'team1', roleEntryId: 'role1', personIds: ['p1'] }, decidingRoleRef: 'ROL-1',
276
+ },
277
+ });
278
+ const err = await runUpdate({ entryId: 'VIS-1', field: ['body=no'] }).catch((e) => e);
279
+ expect(err.guidance).toBe('This record is decided by Team Lead; ask Ann.\nNext: pb question create "<your ask>" --to-role ROL-1');
280
+ });
281
+ it('keeps a returned coherency refusal classified as validation', async () => {
282
+ kernelCallWithSessionMock.mockResolvedValue({
283
+ outcome: 'refused',
284
+ refusal: { code: 'COHERENCY_REFUSED', reason: 'This entry links to nothing it serves. Link it to what it serves, or answer why it stands alone.', fix: 'link', routes: { link: {}, acknowledge: {}, override: {} } },
285
+ });
286
+ const err = await runUpdate({ entryId: 'WP-UNLINKED', field: ['description=no'] }).catch((e) => e);
287
+ expect(err).toBeInstanceOf(CLIError);
288
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
289
+ expect(err.category).toBe('validation');
290
+ // TASK-1038: pb's commands for the fix the kernel named, one per route the refusal offers.
291
+ expect(err.guidance).toBe([
292
+ 'Next: pb relate WP-UNLINKED informs <what it serves>, then the same pb update.',
293
+ 'Or answer: the same pb update with --acknowledge diverged --ack-reason "<why>".',
294
+ 'Or keep it as it is: the same pb update with --override-reason "<why>".',
295
+ ].join('\n'));
172
296
  });
173
297
  // ── Slice 3: post-update refresh ─────────────────────────────────────────
174
298
  it('calls chain.getEntry after successful update and includes entry in output', async () => {
175
- mcpCallMock.mockResolvedValue({
299
+ kernelCallMock.mockResolvedValue({
176
300
  entryId: 'BET-151',
177
301
  name: 'My Bet',
178
302
  status: 'active',
179
303
  });
304
+ // PR B: the receipt now reflects the SERVER's applied set, not the raw --field list — the
305
+ // default beforeEach mock's empty `accepted` (a realistic "nothing accepted" shape) would no
306
+ // longer produce a receipt here at all, so this happy-path fixture must say the server
307
+ // actually kept `description`, matching what the test claims to simulate.
308
+ kernelCallWithSessionMock.mockResolvedValue({
309
+ id: 'j571abc123def456',
310
+ warnings: [],
311
+ normalization: { remapped: {}, rejected: [], accepted: ['description'] },
312
+ normalizationWarnings: [],
313
+ validationWarnings: [],
314
+ });
180
315
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
181
316
  await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
182
317
  const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
183
318
  writeSpy.mockRestore();
184
- expect(mcpCallMock).toHaveBeenCalledWith('chain.getEntry', { entryId: 'BET-151' });
319
+ expect(kernelCallMock).toHaveBeenCalledWith('chain.getEntry', { entryId: 'BET-151' });
185
320
  // Pretty output: receipt then entry block
186
321
  expect(output).toContain('Updated BET-151');
322
+ expect(output).toContain('description');
187
323
  expect(output).toContain('My Bet');
188
324
  });
189
325
  it('still shows update receipt when post-update getEntry fails (graceful degradation)', async () => {
190
- mcpCallMock.mockRejectedValue(new Error('network error'));
326
+ kernelCallMock.mockRejectedValue(new Error('network error'));
327
+ // PR B: same fixture correction as above — the receipt is built from the server's applied
328
+ // set, so this "successful update, degraded refresh" scenario needs a realistic accepted list.
329
+ kernelCallWithSessionMock.mockResolvedValue({
330
+ id: 'j571abc123def456',
331
+ warnings: [],
332
+ normalization: { remapped: {}, rejected: [], accepted: ['description'] },
333
+ normalizationWarnings: [],
334
+ validationWarnings: [],
335
+ });
191
336
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
192
337
  await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
193
338
  const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
@@ -197,26 +342,150 @@ describe('runUpdate', () => {
197
342
  // No crash — process still completes without error
198
343
  });
199
344
  // ── BET-192 / FEAT-575: Normalization warning tests ──────────────────────
200
- it('displays normalization warnings when fields are rejected (BET-192)', async () => {
201
- mcpCallWithSessionMock.mockResolvedValue({
345
+ // PR B (WP-757): every field this call named was rejected — normalization.accepted is
346
+ // correctly EMPTY here (the caller only ever asked for `foo`, and the server dropped it;
347
+ // `description` was never part of this call's own request, so a realistic server response
348
+ // never lists it as accepted). The receipt must print NOTHING — no false "Updated" line —
349
+ // only the rejection error.
350
+ it('every named field rejected: no "Updated" receipt at all, error only (BET-192, BET-271)', async () => {
351
+ kernelCallWithSessionMock.mockResolvedValue({
202
352
  id: 'j571abc123def456',
203
353
  warnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
204
- normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
354
+ normalization: { remapped: {}, rejected: ['foo'], accepted: [] },
205
355
  normalizationWarnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
206
356
  validationWarnings: [],
207
357
  });
358
+ kernelCallMock.mockResolvedValue({ entryId: 'BET-192', name: 'Bet', status: 'active', collectionSlug: 'bets' });
208
359
  const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
209
- await runUpdate({
360
+ const err = await runUpdate({
210
361
  entryId: 'BET-192',
211
362
  field: ['foo=bar'],
363
+ }).catch((e) => e);
364
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
365
+ writeSpy.mockRestore();
366
+ // BET-271 S1: throws CLIError when fields rejected, with `pb fields` suggestion
367
+ expect(err).toBeInstanceOf(CLIError);
368
+ expect(err.message).toContain('Fields rejected');
369
+ expect(err.message).toContain('foo');
370
+ // TEN-4332: the hint names the entry's collection, so the command it gives works.
371
+ expect(err.guidance).toBe('Run `pb fields bets` to see valid fields.');
372
+ // PR B: the receipt line never printed — nothing was actually applied.
373
+ expect(output).not.toContain('Updated BET-192');
374
+ expect(output).not.toContain('View: pb get');
375
+ });
376
+ // TASK-603 (WP-802, TEN-4332): a partial strip — one field kept, one dropped. The write landed, so the
377
+ // command exits 0: the receipt names ONLY the applied field and carries the kernel's
378
+ // "Unknown fields dropped" warning with a `pb fields <collection>` hint. Before this it threw
379
+ // "Fields rejected" after the write, and agents retried an update that had already landed.
380
+ it('partial strip: a landed update exits 0, names only the applied field and the dropped one in a warning', async () => {
381
+ kernelCallWithSessionMock.mockResolvedValue({
382
+ id: 'j571abc123def456',
383
+ warnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
384
+ normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
385
+ normalizationWarnings: ['Unknown fields dropped: foo. Expected: description (string), doneWhen (string).'],
386
+ validationWarnings: [],
387
+ });
388
+ kernelCallMock.mockResolvedValue({ entryId: 'BET-192', name: 'Bet', status: 'active', collectionSlug: 'bets' });
389
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
390
+ const err = await runUpdate({
391
+ entryId: 'BET-192',
392
+ field: ['description=new value', 'foo=bar'],
393
+ }).catch((e) => e);
394
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
395
+ writeSpy.mockRestore();
396
+ expect(err).toBeUndefined();
397
+ expect(output).not.toContain('Fields rejected');
398
+ expect(output).toContain('Unknown fields dropped: foo.');
399
+ expect(output).toContain('Run `pb fields bets` to see valid fields.');
400
+ // The receipt WAS printed (something applied) and names the applied field.
401
+ expect(output).toContain('Updated BET-192');
402
+ expect(output).toContain('description');
403
+ // The dropped field never appears in the "Updated: ..." summary line — only in the warning.
404
+ const summaryLine = output.split('\n').find((line) => line.startsWith('Updated BET-192'));
405
+ expect(summaryLine).toBeDefined();
406
+ expect(summaryLine).not.toContain('foo');
407
+ });
408
+ it('partial strip in JSON mode: exits 0 with droppedFields naming only the dropped field (TEN-4332)', async () => {
409
+ mockIsJsonMode.mockReturnValue(true);
410
+ kernelCallWithSessionMock.mockResolvedValue({
411
+ id: 'j571abc123def456',
412
+ warnings: [],
413
+ normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
414
+ normalizationWarnings: ['Unknown fields dropped: foo. Expected: description (string).'],
415
+ validationWarnings: [],
416
+ });
417
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
418
+ const err = await runUpdate({ entryId: 'BET-192', field: ['description=new', 'foo=bar'] }).catch((e) => e);
419
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
420
+ writeSpy.mockRestore();
421
+ mockIsJsonMode.mockReturnValue(false);
422
+ expect(err).toBeUndefined();
423
+ const parsed = JSON.parse(output.trim().split('\n').pop());
424
+ expect(parsed.droppedFields).toEqual(['foo']);
425
+ expect(parsed.fieldsRejected).toBe(true);
426
+ });
427
+ // PR B fix round (BLOCKING 1): a caller-supplied allowed system key (e.g. `source`) is a
428
+ // real applied change — it lands in kernel/entries/normalize.ts's `accepted`, not just
429
+ // `systemKeys`. Pre-fix, `pb update X --field source=manual` wrote the field but printed
430
+ // no receipt and exited 0 (silently), since accepted was empty for a call that only ever
431
+ // touched a system key.
432
+ it('a caller-supplied system key (source) is reported as applied, not silently dropped from the receipt', async () => {
433
+ kernelCallWithSessionMock.mockResolvedValue({
434
+ id: 'j571abc123def456',
435
+ warnings: [],
436
+ normalization: { remapped: {}, rejected: [], accepted: ['source'] },
437
+ normalizationWarnings: [],
438
+ validationWarnings: [],
212
439
  });
440
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
441
+ await runUpdate({ entryId: 'BET-193', field: ['source=manual'] });
213
442
  const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
214
443
  writeSpy.mockRestore();
215
- expect(output).toContain('Normalization warnings');
216
- expect(output).toContain('foo');
444
+ expect(output).toContain('Updated BET-193');
445
+ expect(output).toContain('source');
446
+ });
447
+ // ── WP-475 E1 (FEAT-1346): coaching verdict in the update receipt ─────────
448
+ it('renders the coaching section when the write response carries a verdict (WP-475 E1)', async () => {
449
+ kernelCallWithSessionMock.mockResolvedValue({
450
+ id: 'j571abc123def456',
451
+ warnings: [],
452
+ normalization: { remapped: {}, rejected: [], accepted: ['description'] },
453
+ normalizationWarnings: [],
454
+ validationWarnings: [],
455
+ coaching: {
456
+ source: 'heuristic',
457
+ verdict: {
458
+ entryId: 'DEC-77',
459
+ canonicalKey: 'decision',
460
+ tier: 'assertive',
461
+ context: 'capture',
462
+ passed: false,
463
+ criteria: [
464
+ { id: 'has_rationale', passed: true, weight: 3, hint: 'State why.', questionTemplate: 'Why this?' },
465
+ { id: 'specificity', passed: false, weight: 2, hint: 'Be specific.', questionTemplate: 'What exactly?' },
466
+ ],
467
+ weakest: { criterion: 'specificity', hint: 'Be specific.', questionTemplate: 'What exactly?' },
468
+ },
469
+ },
470
+ });
471
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
472
+ await runUpdate({ entryId: 'DEC-77', field: ['rationale=better reason'] });
473
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
474
+ writeSpy.mockRestore();
475
+ expect(output).toContain('Semantic quality: 1/2 criteria pass for decision (assertive tier)');
476
+ expect(output).toContain('[ ] specificity — Be specific.');
477
+ expect(output).toContain('Coaching hint: Be specific.');
478
+ expect(output).toContain('Consider: What exactly?');
479
+ });
480
+ it('renders no coaching section when the write response has none (backward compat)', async () => {
481
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
482
+ await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
483
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
484
+ writeSpy.mockRestore();
485
+ expect(output).not.toContain('Semantic quality');
217
486
  });
218
487
  it('displays no warnings when all fields are valid (BET-192)', async () => {
219
- mcpCallWithSessionMock.mockResolvedValue({
488
+ kernelCallWithSessionMock.mockResolvedValue({
220
489
  id: 'j571abc123def456',
221
490
  warnings: [],
222
491
  normalization: { remapped: {}, rejected: [], accepted: ['description'] },
@@ -233,5 +502,254 @@ describe('runUpdate', () => {
233
502
  expect(output).not.toContain('Normalization warnings');
234
503
  expect(output).not.toContain('Validation warnings');
235
504
  });
505
+ // #1026 round 3 (Codex, 2 P3 findings): the SHOULD-FIX 3 dedup filter this test used to pin
506
+ // drew a THIRD round of findings (comma-splitting the rewritten regex, and stale filter
507
+ // ordering) and is deleted outright, not patched again. Server normalizationWarnings now
508
+ // render verbatim and are not parsed (TEN-4332: a landed update exits 0, so the kernel's
509
+ // warning is the one statement of what was dropped).
510
+ it('renders every normalization warning verbatim, including one that repeats the rejected field', async () => {
511
+ kernelCallWithSessionMock.mockResolvedValue({
512
+ id: 'j571abc123def456',
513
+ warnings: [],
514
+ normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
515
+ normalizationWarnings: [
516
+ 'Unknown fields dropped: foo. Expected: description (string), doneWhen (string).',
517
+ 'Remapped "desc" to "description".',
518
+ ],
519
+ validationWarnings: [],
520
+ });
521
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
522
+ const err = await runUpdate({
523
+ entryId: 'BET-194',
524
+ field: ['description=new value', 'foo=bar'],
525
+ }).catch((e) => e);
526
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
527
+ writeSpy.mockRestore();
528
+ // TEN-4332: something applied, so the landed write exits 0.
529
+ expect(err).toBeUndefined();
530
+ expect(output).toContain('Unknown fields dropped: foo. Expected: description (string), doneWhen (string).');
531
+ expect(output).toContain('Remapped "desc" to "description"');
532
+ });
533
+ // #1026 round 3 (Codex P2): a platform-owned data key (e.g. `seederId` on a schemaless
534
+ // collection) is accepted by normalization, then reverted by preservePlatformOwnedDataKeys —
535
+ // the CLI must not print "Updated ... seederId" when nothing was actually written, and must
536
+ // name the revert instead (mirrors the MCP surface's own consumption of the server field).
537
+ it('excludes a server-reverted data key from the printed receipt and renders it under Fields reverted', async () => {
538
+ kernelCallWithSessionMock.mockResolvedValue({
539
+ id: 'j571abc123def456',
540
+ warnings: [],
541
+ normalization: { remapped: {}, rejected: [], accepted: ['seederId', 'description'] },
542
+ normalizationWarnings: [],
543
+ validationWarnings: [],
544
+ revertedFields: ['seederId'],
545
+ });
546
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
547
+ await runUpdate({
548
+ entryId: 'BET-194',
549
+ field: ['description=new value', 'seederId=forged'],
550
+ });
551
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
552
+ writeSpy.mockRestore();
553
+ const summaryLine = output.split('\n').find((line) => line.startsWith('Updated'));
554
+ expect(summaryLine).not.toContain('seederId');
555
+ expect(summaryLine).toContain('description');
556
+ expect(output).toContain('⚠ Fields reverted (platform-owned or write-once): seederId');
557
+ });
558
+ // #1026 round 4 (Codex): a call whose ONLY named field was accepted then reverted, with no
559
+ // other arg applied, used to print nothing and exit 0 — a fully-failed write read as success.
560
+ it('all fields reverted, nothing else applied: fails with a "Fields reverted" line, not silent success', async () => {
561
+ kernelCallWithSessionMock.mockResolvedValue({
562
+ id: 'j571abc123def456',
563
+ warnings: [],
564
+ normalization: { remapped: {}, rejected: [], accepted: ['seederId'] },
565
+ normalizationWarnings: [],
566
+ validationWarnings: [],
567
+ revertedFields: ['seederId'],
568
+ });
569
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
570
+ const err = await runUpdate({
571
+ entryId: 'BET-195',
572
+ field: ['seederId=forged'],
573
+ }).catch((e) => e);
574
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
575
+ writeSpy.mockRestore();
576
+ expect(err).toBeInstanceOf(CLIError);
577
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
578
+ expect(err.message).toContain('Fields reverted');
579
+ expect(err.message).toContain('seederId');
580
+ expect(err.guidance).toBeTruthy();
581
+ // No false "Updated" line — nothing was actually written.
582
+ expect(output).not.toContain('Updated BET-195');
583
+ });
584
+ // #1026 round 4 (Codex): same all-reverted case in JSON mode — the receipt must carry
585
+ // ok:false rather than reading as a plain successful update.
586
+ it('all fields reverted in JSON mode: receipt carries ok:false and the call still fails', async () => {
587
+ mockIsJsonMode.mockReturnValueOnce(true);
588
+ kernelCallWithSessionMock.mockResolvedValue({
589
+ id: 'j571abc123def456',
590
+ warnings: [],
591
+ normalization: { remapped: {}, rejected: [], accepted: ['seederId'] },
592
+ normalizationWarnings: [],
593
+ validationWarnings: [],
594
+ revertedFields: ['seederId'],
595
+ });
596
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
597
+ const err = await runUpdate({
598
+ entryId: 'BET-196',
599
+ field: ['seederId=forged'],
600
+ }).catch((e) => e);
601
+ const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
602
+ writeSpy.mockRestore();
603
+ expect(err).toBeInstanceOf(CLIError);
604
+ expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
605
+ const parsed = JSON.parse(output.trim());
606
+ expect(parsed.ok).toBe(false);
607
+ expect(parsed.revertedFields).toEqual(['seederId']);
608
+ });
609
+ it('prints the kernel receipt first when a draft team is discarded with the drafts inside it (TASK-773)', async () => {
610
+ const receipt = 'Discarded Growth and the 4 drafts inside it (1 made by others).';
611
+ kernelCallWithSessionMock.mockResolvedValueOnce({
612
+ id: 'j571abc123def456', warnings: [], normalization: { remapped: {}, rejected: [], accepted: [] },
613
+ normalizationWarnings: [], validationWarnings: [], receipt,
614
+ });
615
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
616
+ await runUpdate({ entryId: 'TEAM-9', status: 'archived', archiveIntent: 'discard' });
617
+ const output = writeSpy.mock.calls.map((call) => String(call[0])).join('');
618
+ writeSpy.mockRestore();
619
+ expect(output).toContain(`\n${receipt}\n`);
620
+ expect(output.indexOf(receipt)).toBeLessThan(output.indexOf('TEAM-9', output.indexOf(receipt)));
621
+ });
622
+ });
623
+ /**
624
+ * S5 of WP-634 (TASK-45) — `pb update --type <key>` threads a canonicalKey reclassification
625
+ * through the EXISTING `chain.updateEntry` door (convex/agentKnowledge/entries.ts:1462, arg
626
+ * `canonicalKey` at :1471). No new server validation: the typeMap check, BR-55, the cardinality
627
+ * guards and the post-commit immutability guard (convex/lib/guards.ts:190-200) all already run
628
+ * there, and their refusal text must reach the operator verbatim rather than being reworded or
629
+ * pre-empted by a client-side copy of the rule.
630
+ */
631
+ describe('runUpdate --type (S5 of WP-634, TASK-45)', () => {
632
+ // Its OWN seeding, mirroring the `runUpdate` suite above (PR #622 review). This block is a
633
+ // SIBLING of that suite, so its beforeEach never ran here: the tests passed only in a
634
+ // whole-file run, riding whatever mock state the previous suite's last test left behind, and
635
+ // failed in isolation with "Cannot read properties of undefined (reading 'outcome')" — a test
636
+ // that depends on execution order is not a test.
637
+ beforeEach(() => {
638
+ vi.clearAllMocks();
639
+ mockSession = { sessionId: 'sess-test' };
640
+ kernelCallWithSessionMock.mockResolvedValue({
641
+ id: 'j571abc123def456',
642
+ warnings: [],
643
+ normalization: { remapped: {}, rejected: [], accepted: [] },
644
+ normalizationWarnings: [],
645
+ validationWarnings: [],
646
+ });
647
+ kernelCallMock.mockResolvedValue({
648
+ entryId: 'INS-900',
649
+ name: 'Test Entry',
650
+ status: 'draft',
651
+ });
652
+ });
653
+ it('relays --type as the canonicalKey arg on chain.updateEntry', async () => {
654
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
655
+ await runUpdate({ entryId: 'INS-900', type: 'decision' });
656
+ writeSpy.mockRestore();
657
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
658
+ entryId: 'INS-900',
659
+ changedBy: 'agent:sess-test',
660
+ canonicalKey: 'decision',
661
+ });
662
+ });
663
+ it('counts as something to update on its own — --type alone is a valid write', async () => {
664
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
665
+ await expect(runUpdate({ entryId: 'INS-900', type: 'decision' })).resolves.toBeUndefined();
666
+ writeSpy.mockRestore();
667
+ // The point is that --type alone clears the "Nothing to update" arity check and actually
668
+ // reaches the write door — not a total call count, which includes other session traffic.
669
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', expect.objectContaining({
670
+ canonicalKey: 'decision',
671
+ }));
672
+ });
673
+ it('combines with other updates in one call', async () => {
674
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
675
+ await runUpdate({ entryId: 'INS-900', type: 'decision', name: 'Renamed', note: 'Reclassified' });
676
+ writeSpy.mockRestore();
677
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
678
+ entryId: 'INS-900',
679
+ changedBy: 'agent:sess-test',
680
+ name: 'Renamed',
681
+ canonicalKey: 'decision',
682
+ changeNote: 'Reclassified',
683
+ });
684
+ });
685
+ it('trims the value — a padded --type must not reach the server as an unmatched key', async () => {
686
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
687
+ await runUpdate({ entryId: 'INS-900', type: ' decision ' });
688
+ writeSpy.mockRestore();
689
+ expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
690
+ entryId: 'INS-900',
691
+ changedBy: 'agent:sess-test',
692
+ canonicalKey: 'decision',
693
+ });
694
+ });
695
+ /**
696
+ * PROVIDED-but-blank must fail loudly, never be treated as ABSENT (PR #622 review). The
697
+ * whitespace case is the dangerous one: paired with another flag it used to report a
698
+ * successful rename while silently discarding the reclassification.
699
+ */
700
+ it('refuses a whitespace-only --type instead of silently dropping it alongside another update', async () => {
701
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
702
+ await expect(runUpdate({ entryId: 'INS-900', name: 'Renamed', type: ' ' }))
703
+ .rejects.toThrow('--type was provided but empty.');
704
+ writeSpy.mockRestore();
705
+ expect(kernelCallWithSessionMock).not.toHaveBeenCalled(); // refused BEFORE any relay
706
+ });
707
+ it('refuses a whitespace-only --type on its own rather than reporting "Nothing to update"', async () => {
708
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
709
+ await expect(runUpdate({ entryId: 'INS-900', type: ' ' }))
710
+ .rejects.toThrow('--type was provided but empty.');
711
+ writeSpy.mockRestore();
712
+ });
713
+ it('refuses an empty-string --type', async () => {
714
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
715
+ await expect(runUpdate({ entryId: 'INS-900', type: '' }))
716
+ .rejects.toThrow('--type was provided but empty.');
717
+ writeSpy.mockRestore();
718
+ });
719
+ it('omits canonicalKey entirely when --type is not passed', async () => {
720
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
721
+ await runUpdate({ entryId: 'INS-900', name: 'Just a rename' });
722
+ writeSpy.mockRestore();
723
+ const args = kernelCallWithSessionMock.mock.calls[0][1];
724
+ expect(args).not.toHaveProperty('canonicalKey');
725
+ });
726
+ /**
727
+ * The two guard texts are the deliverable, so they must arrive UNREWORDED. The CLI must not
728
+ * carry its own copy of "committed entries cannot be retyped" or of BR-55 — a client-side
729
+ * pre-check would drift from the server rule and is exactly what "no new server-side
730
+ * validation, existing guard text verbatim" rules out.
731
+ */
732
+ it('surfaces the post-commit immutability guard text verbatim', async () => {
733
+ const guardText = 'canonicalKey cannot be changed after an entry has been accepted. '
734
+ + 'To reclassify, create a new entry and supersede this one.';
735
+ kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(guardText, 'VALIDATION_FAILED'));
736
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
737
+ await expect(runUpdate({ entryId: 'DEC-1', type: 'insight' })).rejects.toThrow(guardText);
738
+ writeSpy.mockRestore();
739
+ });
740
+ it('surfaces the BR-55 out-of-collection refusal verbatim', async () => {
741
+ const br55 = 'Vision and purpose entries must be in the strategy collection. This entry is in "insights".';
742
+ kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(br55, 'VALIDATION_FAILED'));
743
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
744
+ await expect(runUpdate({ entryId: 'INS-900', type: 'vision' })).rejects.toThrow(br55);
745
+ writeSpy.mockRestore();
746
+ });
747
+ it('surfaces the invalid-type refusal verbatim', async () => {
748
+ const invalid = 'Invalid canonical key "nonsense". Must be one of the 42 canonical types or null/undefined.';
749
+ kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(invalid, 'VALIDATION_FAILED'));
750
+ const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
751
+ await expect(runUpdate({ entryId: 'INS-900', type: 'nonsense' })).rejects.toThrow(invalid);
752
+ writeSpy.mockRestore();
753
+ });
236
754
  });
237
755
  //# sourceMappingURL=update.test.js.map