cue-ai 0.9.1 → 0.9.3

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 (284) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +148 -132
  3. package/bin/cue-learnings +30 -4
  4. package/bin/cue-review-progress +107 -0
  5. package/bin/cue-review-watch +98 -0
  6. package/dist/cue.js +4328 -3108
  7. package/package.json +2 -1
  8. package/plugins/cue/commands/cue-switch.md +1 -1
  9. package/plugins/cue/commands/cue.md +1 -1
  10. package/profiles/backend/profile.yaml +4 -0
  11. package/profiles/browser/profile.yaml +4 -0
  12. package/profiles/commerce/profile.yaml +0 -2
  13. package/profiles/coolify/profile.yaml +0 -1
  14. package/profiles/core/profile.yaml +78 -3
  15. package/profiles/dash-merge-test/profile.yaml +6 -1
  16. package/profiles/designer/profile.yaml +9 -1
  17. package/profiles/dropshipping/profile.yaml +69 -0
  18. package/profiles/frontend/profile.yaml +4 -0
  19. package/profiles/google-ads/profile.yaml +34 -0
  20. package/profiles/google-analytics/profile.yaml +34 -0
  21. package/profiles/google-drive/profile.yaml +34 -0
  22. package/profiles/gstack/profile.yaml +117 -27
  23. package/profiles/marketing/profile.yaml +0 -1
  24. package/profiles/media/README.md +70 -0
  25. package/profiles/media/profile.yaml +104 -0
  26. package/profiles/nano-banana/profile.yaml +52 -0
  27. package/profiles/ops/profile.yaml +1 -2
  28. package/profiles/secops/profile.yaml +3 -0
  29. package/profiles/skill-writer/profile.yaml +19 -0
  30. package/profiles/video/profile.yaml +3 -0
  31. package/profiles/web-frontend-base/profile.yaml +6 -0
  32. package/profiles/webshop/profile.yaml +0 -1
  33. package/profiles/webshop-google/profile.yaml +1 -0
  34. package/resources/mcps/configs/claude.sanitized.json +91 -6
  35. package/resources/mcps/configs/claude_runtime.sanitized.json +40 -1
  36. package/resources/mcps/configs/codex.sanitized.json +29 -0
  37. package/resources/skills/skills/career/job-hunter/LICENSE +21 -0
  38. package/resources/skills/skills/career/job-hunter/README.md +323 -0
  39. package/resources/skills/skills/career/job-hunter/SKILL.md +91 -0
  40. package/resources/skills/skills/career/job-hunter/agents/README.md +96 -0
  41. package/resources/skills/skills/career/job-hunter/agents/apply-assessment-prep.md +195 -0
  42. package/resources/skills/skills/career/job-hunter/agents/apply-ats-scan.md +155 -0
  43. package/resources/skills/skills/career/job-hunter/agents/apply-bias-audit.md +224 -0
  44. package/resources/skills/skills/career/job-hunter/agents/apply-cover-letter.md +69 -0
  45. package/resources/skills/skills/career/job-hunter/agents/apply-decode-jd.md +117 -0
  46. package/resources/skills/skills/career/job-hunter/agents/apply-fit-score.md +183 -0
  47. package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-audit.md +74 -0
  48. package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-scrape.md +255 -0
  49. package/resources/skills/skills/career/job-hunter/agents/apply-portfolio-brief.md +123 -0
  50. package/resources/skills/skills/career/job-hunter/agents/apply-reality-check.md +164 -0
  51. package/resources/skills/skills/career/job-hunter/agents/apply-reference-prep.md +150 -0
  52. package/resources/skills/skills/career/job-hunter/agents/apply-rejection-analysis.md +172 -0
  53. package/resources/skills/skills/career/job-hunter/agents/apply-resume.md +70 -0
  54. package/resources/skills/skills/career/job-hunter/agents/apply-skills-gap-filler.md +109 -0
  55. package/resources/skills/skills/career/job-hunter/agents/career-internal.md +94 -0
  56. package/resources/skills/skills/career/job-hunter/agents/career-linkedin-content.md +173 -0
  57. package/resources/skills/skills/career/job-hunter/agents/career-linkedin-scanner.md +262 -0
  58. package/resources/skills/skills/career/job-hunter/agents/career-network-message.md +108 -0
  59. package/resources/skills/skills/career/job-hunter/agents/career-promote.md +102 -0
  60. package/resources/skills/skills/career/job-hunter/agents/career-review.md +71 -0
  61. package/resources/skills/skills/career/job-hunter/agents/interview-debrief.md +117 -0
  62. package/resources/skills/skills/career/job-hunter/agents/interview-mock.md +171 -0
  63. package/resources/skills/skills/career/job-hunter/agents/interview-panel-decoder.md +152 -0
  64. package/resources/skills/skills/career/job-hunter/agents/interview-prep.md +184 -0
  65. package/resources/skills/skills/career/job-hunter/agents/interview-question-bank.md +133 -0
  66. package/resources/skills/skills/career/job-hunter/agents/interview-research.md +148 -0
  67. package/resources/skills/skills/career/job-hunter/agents/offer-compare.md +117 -0
  68. package/resources/skills/skills/career/job-hunter/agents/offer-counteroffer.md +144 -0
  69. package/resources/skills/skills/career/job-hunter/agents/offer-deadline-manager.md +148 -0
  70. package/resources/skills/skills/career/job-hunter/agents/offer-negotiate.md +126 -0
  71. package/resources/skills/skills/career/job-hunter/agents/offer-schedule.md +99 -0
  72. package/resources/skills/skills/career/job-hunter/agents/offer-thankyou.md +80 -0
  73. package/resources/skills/skills/career/job-hunter/agents/search-company-research.md +146 -0
  74. package/resources/skills/skills/career/job-hunter/agents/search-follow-up.md +129 -0
  75. package/resources/skills/skills/career/job-hunter/agents/search-ghost-job-detector.md +152 -0
  76. package/resources/skills/skills/career/job-hunter/agents/search-inbox-scan.md +193 -0
  77. package/resources/skills/skills/career/job-hunter/agents/search-interview-scorecard.md +164 -0
  78. package/resources/skills/skills/career/job-hunter/agents/search-jobs.md +149 -0
  79. package/resources/skills/skills/career/job-hunter/agents/search-momentum-check.md +194 -0
  80. package/resources/skills/skills/career/job-hunter/agents/search-outreach.md +85 -0
  81. package/resources/skills/skills/career/job-hunter/agents/search-referral-finder.md +124 -0
  82. package/resources/skills/skills/career/job-hunter/agents/search-salary.md +96 -0
  83. package/resources/skills/skills/career/job-hunter/agents/search-send-email.md +109 -0
  84. package/resources/skills/skills/career/job-hunter/agents/search-tracker-update.md +127 -0
  85. package/resources/skills/skills/career/job-hunter/inputs/README.md +26 -0
  86. package/resources/skills/skills/career/job-hunter/inputs/apply-linkedin-url.txt +8 -0
  87. package/resources/skills/skills/career/job-hunter/inputs/interview-context.md +24 -0
  88. package/resources/skills/skills/career/job-hunter/inputs/job-description.md +20 -0
  89. package/resources/skills/skills/career/job-hunter/inputs/job-search-criteria.md +36 -0
  90. package/resources/skills/skills/career/job-hunter/inputs/my-linkedin.md +24 -0
  91. package/resources/skills/skills/career/job-hunter/inputs/my-resume.md +28 -0
  92. package/resources/skills/skills/career/job-hunter/inputs/search-outreach-target.md +24 -0
  93. package/resources/skills/skills/career/job-hunter/rules/README.md +37 -0
  94. package/resources/skills/skills/career/job-hunter/rules/writing-rules.md +81 -0
  95. package/resources/skills/skills/career/resume-version-manager/SKILL.md +351 -0
  96. package/resources/skills/skills/career/salary-negotiation-prep/SKILL.md +378 -0
  97. package/resources/skills/skills/design/banana/SKILL.md +375 -0
  98. package/resources/skills/skills/design/banana/references/cost-tracking.md +47 -0
  99. package/resources/skills/skills/design/banana/references/gemini-models.md +236 -0
  100. package/resources/skills/skills/design/banana/references/mcp-tools.md +145 -0
  101. package/resources/skills/skills/design/banana/references/post-processing.md +192 -0
  102. package/resources/skills/skills/design/banana/references/presets.md +69 -0
  103. package/resources/skills/skills/design/banana/references/prompt-engineering.md +481 -0
  104. package/resources/skills/skills/design/banana/scripts/batch.py +97 -0
  105. package/resources/skills/skills/design/banana/scripts/cost_tracker.py +191 -0
  106. package/resources/skills/skills/design/banana/scripts/edit.py +159 -0
  107. package/resources/skills/skills/design/banana/scripts/generate.py +168 -0
  108. package/resources/skills/skills/design/banana/scripts/presets.py +154 -0
  109. package/resources/skills/skills/design/banana/scripts/setup_mcp.py +151 -0
  110. package/resources/skills/skills/design/banana/scripts/validate_setup.py +133 -0
  111. package/resources/skills/skills/eu-funding/grant-outreach/SKILL.md +70 -0
  112. package/resources/skills/skills/eu-funding/hu-grant-finder/SKILL.md +114 -0
  113. package/resources/skills/skills/eu-funding/hu-grant-finder/evals.md +26 -0
  114. package/resources/skills/skills/eu-funding/ted-tender-search/SKILL.md +80 -0
  115. package/resources/skills/skills/eu-funding/ted-tender-search/evals.md +26 -0
  116. package/resources/skills/skills/eu-funding/ted-tender-search/scripts/ted-search.sh +46 -0
  117. package/resources/skills/skills/github/gx-agents/SKILL.md +96 -0
  118. package/resources/skills/skills/gstack/ship/SKILL.md +13 -0
  119. package/resources/skills/skills/media/3d-logo-animation/SKILL.md +59 -0
  120. package/resources/skills/skills/media/action-figure-generator/SKILL.md +48 -0
  121. package/resources/skills/skills/media/ad-creative/SKILL.md +79 -0
  122. package/resources/skills/skills/media/ai-clipping/SKILL.md +194 -0
  123. package/resources/skills/skills/media/ai-clipping/scripts/run-ai-clipping.sh +200 -0
  124. package/resources/skills/skills/media/ai-fight-scene/SKILL.md +132 -0
  125. package/resources/skills/skills/media/amazon-product-listing/SKILL.md +68 -0
  126. package/resources/skills/skills/media/animal-video-generator/SKILL.md +59 -0
  127. package/resources/skills/skills/media/award-ceremony-video/SKILL.md +87 -0
  128. package/resources/skills/skills/media/blog-header/SKILL.md +61 -0
  129. package/resources/skills/skills/media/brand-kit/SKILL.md +72 -0
  130. package/resources/skills/skills/media/brochures/SKILL.md +65 -0
  131. package/resources/skills/skills/media/cartoon-dance-animation/SKILL.md +62 -0
  132. package/resources/skills/skills/media/character-story-video/SKILL.md +84 -0
  133. package/resources/skills/skills/media/chibi-collage-effect/SKILL.md +63 -0
  134. package/resources/skills/skills/media/cinema-director/SKILL.md +93 -0
  135. package/resources/skills/skills/media/cinema-director/scripts/generate-film.sh +78 -0
  136. package/resources/skills/skills/media/color-analysis-board/SKILL.md +71 -0
  137. package/resources/skills/skills/media/core-edit/SKILL.md +48 -0
  138. package/resources/skills/skills/media/core-edit/edit-image.sh +54 -0
  139. package/resources/skills/skills/media/core-edit/enhance-image.sh +191 -0
  140. package/resources/skills/skills/media/core-edit/lipsync.sh +144 -0
  141. package/resources/skills/skills/media/core-edit/video-effects.sh +193 -0
  142. package/resources/skills/skills/media/core-media/SKILL.md +49 -0
  143. package/resources/skills/skills/media/core-media/create-music.sh +169 -0
  144. package/resources/skills/skills/media/core-media/generate-image.sh +161 -0
  145. package/resources/skills/skills/media/core-media/generate-video.sh +137 -0
  146. package/resources/skills/skills/media/core-media/image-to-video.sh +228 -0
  147. package/resources/skills/skills/media/core-media/schema_data.json +18708 -0
  148. package/resources/skills/skills/media/core-media/upload.sh +41 -0
  149. package/resources/skills/skills/media/core-platform/SKILL.md +41 -0
  150. package/resources/skills/skills/media/core-platform/check-result.sh +37 -0
  151. package/resources/skills/skills/media/core-platform/setup.sh +31 -0
  152. package/resources/skills/skills/media/couple-grid-creator/SKILL.md +47 -0
  153. package/resources/skills/skills/media/design-guide/SKILL.md +73 -0
  154. package/resources/skills/skills/media/drone-style-video/SKILL.md +61 -0
  155. package/resources/skills/skills/media/fashion-try-on/SKILL.md +61 -0
  156. package/resources/skills/skills/media/floor-plan-rendering/SKILL.md +56 -0
  157. package/resources/skills/skills/media/freeze-effect-video/SKILL.md +100 -0
  158. package/resources/skills/skills/media/giant-product-showcase/SKILL.md +61 -0
  159. package/resources/skills/skills/media/instagram-post/SKILL.md +58 -0
  160. package/resources/skills/skills/media/interior-design/SKILL.md +61 -0
  161. package/resources/skills/skills/media/interior-design-visualizer/SKILL.md +57 -0
  162. package/resources/skills/skills/media/jewelry-product-video/SKILL.md +61 -0
  163. package/resources/skills/skills/media/kdenlive/SKILL.md +106 -0
  164. package/resources/skills/skills/media/kdenlive/scripts/assemble.sh +57 -0
  165. package/resources/skills/skills/media/kdenlive/scripts/common.sh +30 -0
  166. package/resources/skills/skills/media/kdenlive/scripts/inspect.sh +19 -0
  167. package/resources/skills/skills/media/kdenlive/scripts/reframe.sh +22 -0
  168. package/resources/skills/skills/media/kdenlive/scripts/render.sh +16 -0
  169. package/resources/skills/skills/media/kdenlive/scripts/title-card.sh +25 -0
  170. package/resources/skills/skills/media/keyboard-art-maker/SKILL.md +44 -0
  171. package/resources/skills/skills/media/logo-branding/SKILL.md +70 -0
  172. package/resources/skills/skills/media/logo-creator/SKILL.md +80 -0
  173. package/resources/skills/skills/media/logo-creator/scripts/create-logo.sh +38 -0
  174. package/resources/skills/skills/media/logo-generator/SKILL.md +56 -0
  175. package/resources/skills/skills/media/multi-angle-reshoot/SKILL.md +70 -0
  176. package/resources/skills/skills/media/multi-angle-shots/SKILL.md +73 -0
  177. package/resources/skills/skills/media/music-video/SKILL.md +61 -0
  178. package/resources/skills/skills/media/nano-banana/SKILL.md +80 -0
  179. package/resources/skills/skills/media/nano-banana/scripts/generate-nano-art.sh +54 -0
  180. package/resources/skills/skills/media/one-shot-video/SKILL.md +56 -0
  181. package/resources/skills/skills/media/photo-pack-generator/SKILL.md +205 -0
  182. package/resources/skills/skills/media/photo-pack-generator/scripts/generate-pack.sh +241 -0
  183. package/resources/skills/skills/media/product-ad-cinematic/SKILL.md +78 -0
  184. package/resources/skills/skills/media/product-campaign/SKILL.md +76 -0
  185. package/resources/skills/skills/media/product-showcase-video/SKILL.md +60 -0
  186. package/resources/skills/skills/media/product-video-ad-maker/SKILL.md +59 -0
  187. package/resources/skills/skills/media/rednote-cover/SKILL.md +57 -0
  188. package/resources/skills/skills/media/seedance-2/SKILL.md +632 -0
  189. package/resources/skills/skills/media/seedance-2/scripts/generate-seedance.sh +701 -0
  190. package/resources/skills/skills/media/selfie-with-celebrities/SKILL.md +64 -0
  191. package/resources/skills/skills/media/social-media-video/SKILL.md +277 -0
  192. package/resources/skills/skills/media/social-media-video/scripts/run-social-video.sh +316 -0
  193. package/resources/skills/skills/media/social-pack/SKILL.md +58 -0
  194. package/resources/skills/skills/media/storyboard/SKILL.md +57 -0
  195. package/resources/skills/skills/media/storyboard-to-cooking-video/SKILL.md +143 -0
  196. package/resources/skills/skills/media/talking-baby-video/SKILL.md +57 -0
  197. package/resources/skills/skills/media/ugc-ads-workflow/SKILL.md +70 -0
  198. package/resources/skills/skills/media/ugc-lifestyle-try-on/SKILL.md +65 -0
  199. package/resources/skills/skills/media/ugc-video-factory/SKILL.md +134 -0
  200. package/resources/skills/skills/media/ui-design/SKILL.md +81 -0
  201. package/resources/skills/skills/media/ui-design/scripts/generate-mockup.sh +49 -0
  202. package/resources/skills/skills/media/url-to-design/SKILL.md +61 -0
  203. package/resources/skills/skills/media/workflow/SKILL.md +197 -0
  204. package/resources/skills/skills/media/workflow/scripts/discover-workflow.sh +18 -0
  205. package/resources/skills/skills/media/workflow/scripts/generate-workflow.sh +33 -0
  206. package/resources/skills/skills/media/workflow/scripts/interactive-run.sh +16 -0
  207. package/resources/skills/skills/media/workflow/scripts/list-workflows.sh +20 -0
  208. package/resources/skills/skills/media/workflow/scripts/run-workflow.sh +34 -0
  209. package/resources/skills/skills/media/youtube-shorts/SKILL.md +173 -0
  210. package/resources/skills/skills/media/youtube-shorts/scripts/run-youtube-shorts.sh +141 -0
  211. package/resources/skills/skills/media/youtube-thumbnail/SKILL.md +66 -0
  212. package/resources/skills/skills/meta/cue-developer/references/architecture.md +2 -2
  213. package/resources/skills/skills/meta/cue-usage/SKILL.md +1 -1
  214. package/resources/skills/skills/meta/focus/SKILL.md +62 -0
  215. package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +2 -2
  216. package/resources/skills/skills/meta/profile-optimizer/SKILL.md +1 -1
  217. package/resources/skills/skills/meta/profile-suggest/SKILL.md +7 -7
  218. package/resources/skills/skills/meta/profile-summon/SKILL.md +159 -0
  219. package/resources/skills/skills/meta/profile-summon/evals/evals.json +53 -0
  220. package/resources/skills/skills/meta/save-profile/SKILL.md +1 -1
  221. package/resources/skills/skills/meta/skill-reviewer/SKILL.md +3 -0
  222. package/resources/skills/skills/meta/skill-reviewer/references/tdd-for-skills.md +55 -0
  223. package/resources/skills/skills/research/find-skills/SKILL.md +1 -1
  224. package/resources/skills/skills/review/code-review-deep/SKILL.md +20 -0
  225. package/resources/skills/skills/security/trivy-scan/SKILL.md +139 -0
  226. package/resources/skills/skills/security/trivy-scan/scripts/ensure-trivy.sh +21 -0
  227. package/resources/skills/skills/tools/ccusage/SKILL.md +142 -0
  228. package/resources/skills/skills/tools/portless/SKILL.md +186 -0
  229. package/src/commands/_index.ts +8 -0
  230. package/src/commands/ai.ts +2 -2
  231. package/src/commands/auto-detect.test.ts +74 -0
  232. package/src/commands/auto-detect.ts +9 -7
  233. package/src/commands/cli.test.ts +20 -4
  234. package/src/commands/cli.ts +36 -20
  235. package/src/commands/create-profile.ts +2 -2
  236. package/src/commands/debug.ts +2 -2
  237. package/src/commands/discover.ts +14 -4
  238. package/src/commands/export-docker.ts +1 -1
  239. package/src/commands/features-batch1.test.ts +1 -1
  240. package/src/commands/gates.ts +1 -1
  241. package/src/commands/import-profile.ts +1 -1
  242. package/src/commands/init.ts +15 -11
  243. package/src/commands/install.test.ts +192 -0
  244. package/src/commands/install.ts +610 -0
  245. package/src/commands/launch-handoff.e2e.test.ts +33 -1
  246. package/src/commands/launch.e2e.test.ts +15 -10
  247. package/src/commands/launch.ts +73 -116
  248. package/src/commands/materialize.ts +2 -2
  249. package/src/commands/prune.ts +1 -1
  250. package/src/commands/security-audit.ts +1 -1
  251. package/src/commands/shell.ts +7 -7
  252. package/src/commands/skill-report.ts +1 -1
  253. package/src/commands/skills.ts +3 -3
  254. package/src/commands/snapshot.ts +2 -2
  255. package/src/commands/summon.test.ts +116 -0
  256. package/src/commands/summon.ts +338 -0
  257. package/src/commands/trigger-gaps.ts +1 -1
  258. package/src/commands/use.ts +47 -3
  259. package/src/commands/watch-live.ts +5 -5
  260. package/src/commands/watch.ts +8 -8
  261. package/src/index.ts +2 -0
  262. package/src/lib/active-sessions.test.ts +3 -3
  263. package/src/lib/active-sessions.ts +4 -4
  264. package/src/lib/analytics.ts +13 -1
  265. package/src/lib/auto-detect.test.ts +172 -8
  266. package/src/lib/auto-detect.ts +191 -136
  267. package/src/lib/codex-persona-parity.test.ts +58 -0
  268. package/src/lib/companion-detect.test.ts +43 -1
  269. package/src/lib/companion-detect.ts +35 -0
  270. package/src/lib/credentials-sync.test.ts +121 -1
  271. package/src/lib/credentials-sync.ts +95 -1
  272. package/src/lib/cwd-resolver.test.ts +8 -8
  273. package/src/lib/cwd-resolver.ts +2 -2
  274. package/src/lib/dashboard-merge.test.ts +9 -4
  275. package/src/lib/dashboard-server.ts +1 -1
  276. package/src/lib/picker.test.ts +1 -1
  277. package/src/lib/picker.ts +5 -5
  278. package/src/lib/profile-merge.test.ts +8 -0
  279. package/src/lib/profile-names.test.ts +3 -3
  280. package/src/lib/runtime-install.ts +166 -0
  281. package/src/lib/runtime-materializer.test.ts +137 -0
  282. package/src/lib/runtime-materializer.ts +105 -2
  283. package/src/lib/skill-router.test.ts +38 -0
  284. package/src/lib/skill-router.ts +65 -4
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env bash
2
+ # cue-review-watch — live view of a code review in progress. Run it in a second
3
+ # pane and watch the reviewer move file-by-file, dimension-by-dimension, with
4
+ # findings as they land — instead of an opaque "Precipitating…" spinner.
5
+ #
6
+ # Reads the JSONL written by cue-review-progress (and the auto-review Stop hook).
7
+ #
8
+ # Usage:
9
+ # cue-review-watch # follow the latest review, live
10
+ # cue-review-watch --id <id> # follow a specific review
11
+ # cue-review-watch --once # print what's there so far and exit (no follow)
12
+ set -euo pipefail
13
+
14
+ DIR="${XDG_CONFIG_HOME:-$HOME/.config}/cue/review-progress"
15
+ ID="" ONCE=0
16
+ while [[ $# -gt 0 ]]; do
17
+ case "$1" in
18
+ --id) ID="$2"; shift 2 ;;
19
+ --once) ONCE=1; shift ;;
20
+ -h|--help) grep '^#' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
21
+ *) echo "cue-review-watch: unknown flag $1" >&2; exit 1 ;;
22
+ esac
23
+ done
24
+
25
+ # Colors only on a tty.
26
+ if [[ -t 1 ]]; then
27
+ B=$'\033[1m'; D=$'\033[2m'; R=$'\033[31m'; Y=$'\033[33m'; G=$'\033[32m'; C=$'\033[36m'; M=$'\033[35m'; Z=$'\033[0m'
28
+ else
29
+ B="" D="" R="" Y="" G="" C="" M="" Z=""
30
+ fi
31
+
32
+ have_jq=0; command -v jq >/dev/null 2>&1 && have_jq=1
33
+
34
+ get() { # $1=field (reads $line); jq if present, grep fallback
35
+ if [[ $have_jq -eq 1 ]]; then
36
+ printf '%s' "$line" | jq -r --arg f "$1" '.[$f] // ""' 2>/dev/null
37
+ else
38
+ printf '%s' "$line" | grep -oE "\"$1\"[[:space:]]*:[[:space:]]*\"[^\"]*\"" | head -1 \
39
+ | sed -E "s/.*\"$1\"[[:space:]]*:[[:space:]]*\"([^\"]*)\".*/\1/"
40
+ fi
41
+ }
42
+
43
+ hhmmss() { printf '%s' "${1:-}" | sed -E 's/.*T([0-9:]{8}).*/\1/'; }
44
+
45
+ render() { # reads $line
46
+ local kind ts t file dim sev title detail
47
+ kind="$(get kind)"; [[ -z "$kind" ]] && return 0
48
+ ts="$(get ts)"; t="$(hhmmss "$ts")"
49
+ file="$(get file)"; dim="$(get dim)"; sev="$(get severity)"; title="$(get title)"; detail="$(get detail)"
50
+ case "$kind" in
51
+ start) printf '%s%s▶ review started%s %s%s%s\n' "$D$t $Z" "$B$C" "$Z" "$D" "${detail:+($detail files) }${title}" "$Z" ;;
52
+ file) printf '%s%s📄 %s%s\n' "$D$t $Z" "$B" "$file" "$Z" ;;
53
+ dim) printf '%s %s→ %s%s\n' "$D$t $Z" "$C" "$dim" "$Z" ;;
54
+ finding)
55
+ local col gl
56
+ case "$sev" in
57
+ CRITICAL) col="$R$B"; gl="🔴" ;;
58
+ HIGH) col="$R"; gl="🟠" ;;
59
+ MEDIUM) col="$Y"; gl="🟡" ;;
60
+ *) col="$D"; gl="⚪" ;;
61
+ esac
62
+ printf '%s %s%s %s%s %s%s\n' "$D$t $Z" "$col" "$gl" "${sev:-NOTE}" "$Z" "${file:+$file${dim:+ · $dim} }" "$title"
63
+ [[ -n "$detail" ]] && printf ' %s%s%s\n' "$D" "$detail" "$Z"
64
+ ;;
65
+ note) printf '%s %s· %s%s\n' "$D$t $Z" "$D" "${title}${detail:+: $detail}" "$Z" ;;
66
+ end) printf '%s%s✅ review complete%s %s%s%s\n' "$D$t $Z" "$B$G" "$Z" "$D" "$title" "$Z" ;;
67
+ esac
68
+ }
69
+
70
+ # Resolve the review id / file.
71
+ [[ -z "$ID" && -r "$DIR/latest" ]] && ID="$(head -1 "$DIR/latest")"
72
+ if [[ -z "$ID" ]]; then
73
+ echo "${D}cue-review-watch: no review yet. Start one, or a reviewer will.${Z}" >&2
74
+ fi
75
+
76
+ # Wait for the file to appear (a reviewer may not have started yet).
77
+ file_path="$DIR/${ID:-__none__}.jsonl"
78
+ if [[ ! -e "$file_path" ]]; then
79
+ printf '%swaiting for a review to start (%s)…%s\n' "$D" "$DIR" "$Z"
80
+ while [[ ! -e "$file_path" ]]; do
81
+ # latest may update to a new id while we wait
82
+ [[ -r "$DIR/latest" ]] && ID="$(head -1 "$DIR/latest")" && file_path="$DIR/$ID.jsonl"
83
+ sleep 1
84
+ done
85
+ fi
86
+
87
+ printf '%swatching %s%s\n\n' "$D" "$file_path" "$Z"
88
+
89
+ if [[ $ONCE -eq 1 ]]; then
90
+ while IFS= read -r line; do render; done < "$file_path"
91
+ exit 0
92
+ fi
93
+
94
+ # Follow live. -F keeps following across truncation/rotation.
95
+ tail -n +1 -F "$file_path" 2>/dev/null | while IFS= read -r line; do
96
+ render
97
+ printf '%s' "$(get kind)" | grep -q '^end$' && break || true
98
+ done