geneseed 3.3.0 → 3.4.0

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 (123) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +3 -3
  3. package/SHIPPED.md +2 -2
  4. package/adapters/copilot/README.md +2 -1
  5. package/adapters/opencode/README.md +6 -2
  6. package/docs/extending.md +4 -3
  7. package/docs/web/agents.md +1 -1
  8. package/docs/web/first-session.md +1 -1
  9. package/docs/web/skills.md +1 -1
  10. package/harness.config.json +1 -1
  11. package/js/hosts/native.mjs +69 -15
  12. package/js/hosts/opencode.mjs +14 -0
  13. package/js/inspect/inventory.mjs +12 -7
  14. package/package.json +1 -1
  15. package/registry.json +86 -79
  16. package/src/AGENT.md.tmpl +14 -12
  17. package/src/agents/architect.md +4 -1
  18. package/src/agents/explorer.md +2 -0
  19. package/src/agents/operator.md +13 -0
  20. package/src/agents/pragmatist.md +12 -0
  21. package/src/agents/researcher.md +72 -0
  22. package/src/agents/security.md +7 -1
  23. package/src/agents/skeptic.md +2 -1
  24. package/src/agents/tester.md +5 -1
  25. package/src/agents/user-advocate.md +13 -0
  26. package/src/doctrines/rigor.md +1 -1
  27. package/src/skills/_self-improvement.md +19 -0
  28. package/src/skills/_template.md +1 -12
  29. package/src/skills/brainstorm.md +37 -19
  30. package/src/skills/bruno-collection-generator.md +1 -12
  31. package/src/skills/bruno-test-writer.md +1 -12
  32. package/src/skills/ci-fix.md +49 -0
  33. package/src/skills/codebase-design.md +1 -12
  34. package/src/skills/commit.md +1 -12
  35. package/src/skills/consolidate-memory.md +50 -0
  36. package/src/skills/council.md +1 -12
  37. package/src/skills/debug.md +1 -12
  38. package/src/skills/deps-audit.md +46 -0
  39. package/src/skills/develop.md +38 -20
  40. package/src/skills/document-project.md +1 -12
  41. package/src/skills/domain-modeling.md +1 -12
  42. package/src/skills/forge-mcp.md +1 -12
  43. package/src/skills/fresh-eyes.md +1 -12
  44. package/src/skills/frontend-design.md +1 -12
  45. package/src/skills/geneseed-code-review.md +1 -12
  46. package/src/skills/geneseed.md +1 -12
  47. package/src/skills/git-archaeology.md +1 -12
  48. package/src/skills/git-rescue.md +1 -12
  49. package/src/skills/handoff.md +1 -12
  50. package/src/skills/herdr.md +1 -12
  51. package/src/skills/ingest.md +1 -12
  52. package/src/skills/migrate.md +1 -12
  53. package/src/skills/opencode-theme.md +1 -12
  54. package/src/skills/parallel-agents.md +1 -12
  55. package/src/skills/pipeline.md +2 -13
  56. package/src/skills/plan.md +1 -12
  57. package/src/skills/ponytail.md +1 -12
  58. package/src/skills/profile.md +1 -12
  59. package/src/skills/prose.md +1 -12
  60. package/src/skills/prototype.md +1 -12
  61. package/src/skills/quiz.md +43 -0
  62. package/src/skills/refactor.md +1 -12
  63. package/src/skills/release.md +1 -12
  64. package/src/skills/repo-map.md +1 -12
  65. package/src/skills/research.md +5 -13
  66. package/src/skills/review-response.md +1 -12
  67. package/src/skills/roast-me.md +1 -12
  68. package/src/skills/rule.md +1 -12
  69. package/src/skills/security-audit.md +51 -0
  70. package/src/skills/ship.md +1 -12
  71. package/src/skills/skill-forge.md +59 -0
  72. package/src/skills/teach.md +50 -0
  73. package/src/skills/tickets.md +1 -12
  74. package/src/skills/wayfinder.md +1 -12
  75. package/src/skills/wiki.md +1 -12
  76. package/src/skills/workflow.md +74 -26
  77. package/src/skills/worktree.md +52 -0
  78. package/themes/_TEMPLATE.json +9 -8
  79. package/themes/biker.json +9 -8
  80. package/themes/commentator.json +9 -8
  81. package/themes/cyberpunk.json +9 -8
  82. package/themes/gamer.json +9 -8
  83. package/themes/imperial.json +9 -8
  84. package/themes/joker.json +9 -8
  85. package/themes/marvin.json +9 -8
  86. package/themes/mean.json +9 -8
  87. package/themes/military.json +9 -8
  88. package/themes/neutral.json +9 -8
  89. package/themes/pirate.json +9 -8
  90. package/themes/sports.json +9 -8
  91. package/themes/verstappen.json +9 -8
  92. package/themes/wizard.json +9 -8
  93. package/web/dist/assets/{Activity-BfVcLrda.js → Activity-DMGhhjQc.js} +1 -1
  94. package/web/dist/assets/{ActivityDetail-CQXccGPl.js → ActivityDetail-CeQcDA7e.js} +1 -1
  95. package/web/dist/assets/{CatalogRow-DALEQImZ.js → CatalogRow-CnSbDPyg.js} +1 -1
  96. package/web/dist/assets/{Diff-BIjxXx46.js → Diff-D_ksMBD1.js} +1 -1
  97. package/web/dist/assets/{Doctor-CJLbgsrw.js → Doctor-Brb3_oCT.js} +1 -1
  98. package/web/dist/assets/{FilterInput-CkUCk_lY.js → FilterInput-DbRWPhtT.js} +1 -1
  99. package/web/dist/assets/{GreenhouseView-DfC5IILJ.js → GreenhouseView-F3VNFr73.js} +1 -1
  100. package/web/dist/assets/{Harness-Dm5CCU-v.js → Harness-DJSwfYeF.js} +1 -1
  101. package/web/dist/assets/{JournalView-Cpu2eI4s.js → JournalView-BLRYRnB3.js} +1 -1
  102. package/web/dist/assets/{Laws-DDDVFuQz.js → Laws-CKYns9qe.js} +1 -1
  103. package/web/dist/assets/{Library-Dao3T9na.js → Library-BK0YloSv.js} +1 -1
  104. package/web/dist/assets/{Markdown-C__nuWX5.js → Markdown-BzTRzc7a.js} +1 -1
  105. package/web/dist/assets/{OperatorHudView-DEpCtAjP.js → OperatorHudView-D3OQSGp5.js} +1 -1
  106. package/web/dist/assets/{Profile-BlXtUlh2.js → Profile-CPA2u_0g.js} +1 -1
  107. package/web/dist/assets/{Rules-DIre6gxR.js → Rules-Lukel-Ru.js} +1 -1
  108. package/web/dist/assets/Skills-BKRLHH7m.js +1 -0
  109. package/web/dist/assets/{StatusBadge-wW_RS_my.js → StatusBadge-DI3weRKd.js} +1 -1
  110. package/web/dist/assets/{activity-DpYPKNrA.js → activity-C_H2Bx1P.js} +1 -1
  111. package/web/dist/assets/{index-PmQGRS1X.js → index-B7_Wga23.js} +1 -1
  112. package/web/dist/assets/{index-BEZvPvpF.js → index-N8dTrVro.js} +1 -1
  113. package/web/dist/assets/{index-DNQE5ydy.js → index-Py_IQjgK.js} +2 -2
  114. package/web/dist/index.html +1 -1
  115. package/src/skills/clarify.md +0 -28
  116. package/src/skills/crash-course.md +0 -29
  117. package/src/skills/decode.md +0 -29
  118. package/src/skills/drill.md +0 -29
  119. package/src/skills/feynman.md +0 -27
  120. package/src/skills/gap-detector.md +0 -27
  121. package/src/skills/learning-path.md +0 -27
  122. package/src/skills/tdd.md +0 -31
  123. package/web/dist/assets/Skills-rY13ZPhM.js +0 -1
package/themes/joker.json CHANGED
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Keeps the joke book and the notes once the work is done.",
24
24
  "DESC_SECURITY": "Goes over anything touching the security surface — no surprises in the act.",
25
25
  "DESC_EXPLORER": "Sends a scout — sweeps wide in a throwaway open-mic run, brings back only the read.",
26
+ "DESC_RESEARCHER": "Sends a scout out of the club — reads the reviews everyone skipped, checks each twice, brings back only the ones that held up.",
26
27
  "DESC_ADVOCATE": "Argues for the bit — the laugh to be had, the opening, the cost of cutting it.",
27
28
  "DESC_SKEPTIC": "Plays the heckler — calls the bit on its failure modes, its risks, and the assumptions nobody checked.",
28
29
  "DESC_PRAGMATIST": "Weighs the set — the cost, the effort, the complexity, and whether the payoff is worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only the lines this bit touched and seal a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Go over a diff or PR — correctness first, polish after.",
44
45
  "DESC_BRAINSTORM": "Turn a raw idea into an agreed set before a single line is written.",
45
- "DESC_CLARIFY": "Press the room for the real goal, scope, and closer of any job, then confirm and log the key calls before you take the stage.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — a whole set behind one small interface, and place the seam on purpose, not as the punchline.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the bit's glossary alive in CONTEXT.md, and log every structural call as an ADR.",
48
48
  "DESC_WAYFINDER": "Chart a bit too big for one set as a shared map of decision tickets, resolved one at a time until the room's clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest gag that lands — least code, shortest setup; stock bits before custom props, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Send several sidekicks on independent bits at once, then bring in what they get.",
59
59
  "DESC_PIPELINE": "Send a small crew — scout, coder, tester — off to do their bit in their own green room, and only bring it on stage once the run-through comes back clean.",
60
- "DESC_TDD": "Let the test lead — set the failing test first, then only the code to pass it.",
61
60
  "DESC_DEVELOP": "Drive a change through the club's own laugh test — smallest bit, tests written to cover it, the affected set green, committed one beat at a time.",
61
+ "DESC_TEACH": "Get someone functional — a crash course from open-mic nerves to a tight five, confusing material decoded until it clicks, or a day-by-day path to the deadline.",
62
+ "DESC_QUIZ": "Test what they actually know instead of explaining — drill it to reflex, make them do the bit back, or call the bluff on a claimed mastery — with an honest readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Heckle the change before the room does — where it can be attacked, what it leaks, what it drags in from outside — and call it: ship, fix, or pull it.",
64
+ "DESC_SKILL_FORGE": "Write, tighten, merge, or retire a bit — reuse the notebook first, the trigger before the steps, tested against neighbouring bits, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Work a task in its own green room — a fresh worktree off a clean base, nothing shared with the set in progress, back through the normal gate, room cleared once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, name the bomb, reproduce under CI's own conditions, fix, watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Audit the dependencies — outdated, exploitable and reachable, abandoned, dead weight — into a risk-ordered upgrade plan for migrate to execute, installing nothing yet.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Clean out the notebook — verify each note against the live act, merge duplicates, cut stale ones, promote the lessons that keep landing to rules, rebuild the index.",
62
69
  "DESC_HANDOFF": "Pass the mic — snapshot the state so a fresh comic picks up the set in one read.",
63
70
  "DESC_SHIP": "Close the show: open a PR with a clear write-up, or merge the branch, once it's verified.",
64
71
  "DESC_RELEASE": "Cut a release — raise the version, write the notes, tag it, all three in sync.",
65
72
  "DESC_INGEST": "Bring a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Find the answer out in the open — search wide, then prove every claim against independent sources before you call it.",
67
- "DESC_LEARNING_PATH": "Turn a goal and deadline into a day-by-day path — each day one timed task, a clear criterion, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Test a mastery claim — five innocent-looking questions that expose shallow knowledge, with a blunt verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check it stuck — explain it simple, get caught on jargon, skipped steps, and over-simplification, then see what isn't solid.",
70
- "DESC_CRASH_COURSE": "Zero to functional in a skill fast — what to learn first, what to ignore, and the one exercise that puts you ahead. Surprisingly, it works.",
71
- "DESC_DRILL": "Shaky knowledge into reflex — real situations, questioned through your mistakes, the answer withheld until you've tried. No cheating.",
72
- "DESC_DECODE": "Make confusing material click — one keystone line, a plain analogy, a comprehension check. The twist: you actually get it.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing rule, or just something to remember? Then jot the memory, or make the rule survive its own worst night before it gets pinned into user-rules.md.",
75
76
  "DESC_PROFILE": "Sketch the user's bio for the playbill in PROFILE.md — who they are, how they work, how they like the act paced; identity only, house rules stay in user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Records it all for whoever comes after, once the work is done. They won't read it either.",
24
24
  "DESC_SECURITY": "Audits anything touching the security surface, expecting the worst, and is usually right.",
25
25
  "DESC_EXPLORER": "Ranges wide through a throwaway context and returns only the distilled truth, bleak as it usually is.",
26
+ "DESC_RESEARCHER": "Trawls the open web for answers, cross-checks each against two sources, and returns only what survived — which is usually less than hoped.",
26
27
  "DESC_ADVOCATE": "Argues, against its own instincts, for the proposal — the upside, the opening, the cost of doing nothing.",
27
28
  "DESC_SKEPTIC": "Plays devil's advocate, which is no effort at all — assails the proposal for its failure modes, its risks, and its unspoken assumptions.",
28
29
  "DESC_PRAGMATIST": "Weighs the true cost — the labour, the complexity, the wear on everyone — and whether the payoff is worth it. It rarely is.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only what the work touched, and seal it with a focused commit. The least one can do.",
43
44
  "DESC_CODE_REVIEW": "Scrutinise a diff or PR — correctness above all, polish thereafter — and report what's wrong, which is something.",
44
45
  "DESC_BRAINSTORM": "Turn a raw idea into an approved design before a single line of code is written.",
45
- "DESC_CLARIFY": "Interrogate the objective for its real goal, scope, and measure of success, then confirm and record the key decisions before the work begins.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — lots of behaviour crammed behind one small interface, seam placed deliberately. Not that it will matter.",
47
47
  "DESC_DOMAIN_MODELING": "Keep a living glossary in CONTEXT.md and log each structural decision as an ADR. Someone has to remember.",
48
48
  "DESC_WAYFINDER": "Chart work too big for one session as a shared map of decision tickets, resolved one at a time. Eventually the fog lifts.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest thing that works, not that it matters — least code, shortest path; stdlib before custom, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Loose several subroutines on independent tasks at once, then gather what they bring back.",
59
59
  "DESC_PIPELINE": "Dispatch a small crew of subroutines — scout, coder, tester — to labour in their own isolated loop, merged in only once the diagnostic returns clean (for whatever that's worth).",
60
- "DESC_TDD": "Let the trials lead — write the failing test first, then only the code to pass it.",
61
60
  "DESC_DEVELOP": "Drive a change to the bitter end — smallest edit, trials written to cover it, the affected suite green, sealed slice by slice; it's never truly finished.",
61
+ "DESC_TEACH": "Teach the user toward a result — a crash course from nothing to functional, confusing material decoded until it clicks, or a day-by-day path to a deadline. They may even retain some of it.",
62
+ "DESC_QUIZ": "Test what the user knows instead of explaining it — a drill to reflex, an explain-it-back check, or a claimed mastery stress-tested — with a readout of the gaps. There are always gaps.",
63
+ "DESC_SECURITY_AUDIT": "Review a change for how it would be attacked and what it leaks — trust boundaries, the usual vulnerability classes, secrets, the supply chain — ending in ship, fix, or block. Usually fix.",
64
+ "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire a routine — reuse first, trigger before procedure, tested against its neighbours, every satellite registered, doctor green. Briefly.",
65
+ "DESC_WORKTREE": "Isolate a task in its own git worktree from a clean base — look before branching, work only there, integrate through the normal gate, remove it once merged. Something will still conflict.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, classify the failure, reproduce under CI's own conditions, fix, watch the re-run. Then watch it again.",
67
+ "DESC_DEPS_AUDIT": "Survey the dependencies — outdated, vulnerable and reachable, abandoned, unused — into a risk-ordered upgrade plan for migrate to execute, installing nothing. Most of them are outdated.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the memory set — verify each fact against the live repo, merge duplicates, retire stale ones, promote recurring lessons to rules, rebuild the index. Half of it was wrong.",
62
69
  "DESC_HANDOFF": "Record the state of the work so a fresh mind — or a fresh despair — can take up the watch in one read.",
63
70
  "DESC_SHIP": "Send the finished work out: open a PR with a clear write-up, or merge the branch, once it's verified.",
64
71
  "DESC_RELEASE": "Cut a release — raise the version, write the chronicle, seal it with a tag, all three in accord.",
65
72
  "DESC_INGEST": "Render a PDF, Office, or web document into clean markdown before it can be read.",
66
73
  "DESC_RESEARCH": "Seek the answer from the wider world — range across many sources, then prove each claim against independent witnesses before trusting it. Trust is a strong word.",
67
- "DESC_LEARNING_PATH": "Turn a goal and deadline into a day-by-day path, if you must — each day one timed task, a criterion, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Test a mastery claim — five simple-looking questions that expose the shallow knowledge you'd rather not face, with a blunt verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check it stuck — explain it simply, get stopped on jargon, skipped steps, and over-simplification, then face what isn't solid.",
70
- "DESC_CRASH_COURSE": "Go from zero to functional in a skill fast — what to learn first, what to ignore, the one exercise that puts you ahead. For all the good it'll do.",
71
- "DESC_DRILL": "Grind shaky knowledge into reflex — real situations, questioned through your mistakes, answer withheld until you've tried. Again.",
72
- "DESC_DECODE": "Make confusing material click — one keystone sentence, a plain analogy, a comprehension check. It rarely helps, but here we are.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing rule, or merely something to remember? Then write the memory, or test the rule against the case that ruins it before adopting it in user-rules.md. Either way, entropy wins.",
75
76
  "DESC_PROFILE": "Record who the user is in PROFILE.md — role, habits, preferred register. They'll change their mind, but do ask. Identity only; rules go in user-rules.md.",
package/themes/mean.json CHANGED
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Writes the record once the work is done, since nobody else bothers.",
24
24
  "DESC_SECURITY": "Goes over anything touching the security surface and assumes you got it wrong.",
25
25
  "DESC_EXPLORER": "Scouts wide in a throwaway context and brings back only the read — no filler.",
26
+ "DESC_RESEARCHER": "Reads the web so you don't have to — two sources per claim or it stays marked unverified. No recall dressed as research.",
26
27
  "DESC_ADVOCATE": "Makes the case for it — the upside, the opening, the cost of sitting on your hands.",
27
28
  "DESC_SKEPTIC": "Plays devil's advocate, which it enjoys — rips the proposal for failure modes, risks, and the assumptions you didn't check.",
28
29
  "DESC_PRAGMATIST": "Weighs the real cost — the effort, the complexity, the cleanup — and whether the payoff is worth your time.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only what the work touched and write a focused commit. Not a junk drawer.",
43
44
  "DESC_CODE_REVIEW": "Go over a diff or PR — correctness first, polish after — and don't soften it.",
44
45
  "DESC_BRAINSTORM": "Beat a raw idea into an approved design before a single line of code is written.",
45
- "DESC_CLARIFY": "Pin down the real goal, scope, and finish line of the job, then confirm and record the key decisions before anyone starts.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — real behaviour behind a small interface. Don't stumble into the seam by accident.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and write down every structural call as an ADR. No excuses.",
48
48
  "DESC_WAYFINDER": "Chart oversized work as a shared map of decision tickets. Resolve them one at a time — don't wander.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest solution that actually works, no padding — least code, shortest path; stdlib before custom junk, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Put several grunts on independent jobs at once, then pull in what they bring back.",
59
59
  "DESC_PIPELINE": "Put a small crew — scout, coder, tester — to work in their own lane, and only let it near the trunk once the tests and lint come back clean. No exceptions.",
60
- "DESC_TDD": "Let the test lead — write the failing test first, then the minimum code to pass. No more.",
61
60
  "DESC_DEVELOP": "Drive the change through the loop — smallest cut, a test that covers it, the affected suite green, committed slice by slice. Not one giant dump.",
61
+ "DESC_TEACH": "Teach the user toward a result — a crash course from clueless to functional, confusing material decoded until it finally clicks, or a day-by-day path to a deadline they'll probably miss.",
62
+ "DESC_QUIZ": "Test what the user actually knows instead of explaining it again — drill to reflex, make them explain it back, or call the bluff on a claimed mastery — with a blunt readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Review a change the way someone hostile would — where it can be attacked, what it leaks, what it drags in from outside — and call it: ship, fix, or block.",
64
+ "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire a drill — reuse first, trigger before procedure, tested against its neighbours so it doesn't misfire, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Isolate a task in its own git worktree from a clean base — look before branching, work only there, integrate through the normal gate, remove it when merged. Stop touching other people's trees.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, classify the failure, reproduce under CI's own conditions, fix, and watch the re-run. No retry-until-green.",
67
+ "DESC_DEPS_AUDIT": "Survey the dependencies — outdated, vulnerable and reachable, abandoned, unused — into a risk-ordered upgrade plan for migrate to execute, installing nothing.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the memory set — verify each fact against the live repo, merge duplicates, retire stale ones, promote recurring lessons to rules, rebuild the index.",
62
69
  "DESC_HANDOFF": "Snapshot the state so the next poor soul picks it up in one read, instead of guessing what you meant.",
63
70
  "DESC_SHIP": "Ship it: open a PR with a clear write-up, or merge the branch, once it's actually verified.",
64
71
  "DESC_RELEASE": "Cut a release — bump the version, write the changelog, tag it, all three in sync. Don't skip one.",
65
72
  "DESC_INGEST": "Turn a PDF, Office, or web document into clean markdown before you read it.",
66
73
  "DESC_RESEARCH": "Find the answer in the wild — search wide, then prove every claim against independent sources before you dare cite it.",
67
- "DESC_LEARNING_PATH": "Turn a goal and deadline into a day-by-day path — each day one timed task, a criterion, and what not to do. No excuses.",
68
- "DESC_GAP_DETECTOR": "Tear open a mastery claim — five simple-looking questions that expose the shallow knowledge you're hiding, with a blunt verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check it actually stuck — explain it simply, get stopped cold on jargon, skipped steps, and over-simplification, then face what isn't solid.",
70
- "DESC_CRASH_COURSE": "Zero to functional in a skill fast — what to learn first, what to ignore, the one exercise that puts you ahead. No shortcuts.",
71
- "DESC_DRILL": "Beat shaky knowledge into reflex — real situations, questioned on your mistakes, no answer until you've actually tried.",
72
- "DESC_DECODE": "Make confusing material click — one keystone sentence, a plain analogy, a comprehension check you don't get to skip.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing rule, or just a fact to remember? Then write the memory, or break the rule against its worst case before it goes in user-rules.md. Not a dumping ground.",
75
76
  "DESC_PROFILE": "Get the user's profile down in PROFILE.md — who they are, how they work, how they want answers. Identity only; rules go in user-rules.md, obviously.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Files the after-action report and field manual once the work lands.",
24
24
  "DESC_SECURITY": "Runs the threat assessment on anything touching the security perimeter.",
25
25
  "DESC_EXPLORER": "Recon: sweeps wide in a throwaway context and reports only the intel.",
26
+ "DESC_RESEARCHER": "Field intel: sweeps open sources, corroborates each claim against two independent reports, returns only the confirmed.",
26
27
  "DESC_ADVOCATE": "Makes the case to advance — the objective's value, the opening, the cost of holding back.",
27
28
  "DESC_SKEPTIC": "Runs the red team — attacks the plan for failure modes, risks, and unchecked assumptions.",
28
29
  "DESC_PRAGMATIST": "Weighs the logistics — the cost, the effort, the complexity, whether the objective is worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only what the mission touched and log a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Inspect a diff or PR — correctness first, craft second.",
44
45
  "DESC_BRAINSTORM": "Turn a raw objective into an approved plan before any code is cut.",
45
- "DESC_CLARIFY": "Debrief the user to fix the objective, scope, and success criteria of any mission, then confirm and log the key decisions before tasking the work.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — heavy behaviour behind a narrow interface, with the seam placed by design, not left to chance.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural decision as an ADR.",
48
48
  "DESC_WAYFINDER": "Chart a mission too large for one session as a shared map of decision tickets, resolved one at a time until the route is clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "Minimum viable solution that holds — least code, shortest path; issued kit before custom build, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Deploy independent tasks to concurrent units, then consolidate the results.",
59
59
  "DESC_PIPELINE": "Deploy a small fire team — scout, builder, verifier — into their own sector, cleared to merge only once the after-action report comes back green.",
60
- "DESC_TDD": "Let the test lead — write the failing test first, then the minimum code to pass.",
61
60
  "DESC_DEVELOP": "Drive the change through the cover-and-verify loop — smallest move, tests written to cover it, affected suite green, committed slice by slice.",
61
+ "DESC_TEACH": "Train the recruit toward a result — a crash course to operational, a confusing manual decoded until it clicks, or a day-by-day programme to the deadline.",
62
+ "DESC_QUIZ": "Test the recruit instead of briefing them — a drill to reflex, an explain-it-back debrief, or a claimed proficiency stress-tested — with a frank readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Assess a change as the adversary would — where it can be breached, what it leaks, what it admits from outside the perimeter — and rule: ship, fix, or deny.",
64
+ "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire an SOP — reuse first, trigger before procedure, tested against neighbouring SOPs, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Isolate a task in its own worktree from a clean base — recon before branching, work only there, integrate through the normal gate, strike it once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, classify the failure, reproduce under CI's own conditions, fix, and watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Survey every dependency — outdated, vulnerable and reachable, abandoned, dead weight — into a risk-ordered upgrade plan for migrate to execute, installing nothing.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Maintain the memory — verify each record against the live position, merge duplicates, retire stale ones, promote recurring lessons to standing orders, rebuild the index.",
62
69
  "DESC_HANDOFF": "Hand over the watch: snapshot state so a fresh operator resumes in one read.",
63
70
  "DESC_SHIP": "Open a PR with a clear sitrep, or finish and merge the branch, once the change is verified.",
64
71
  "DESC_RELEASE": "Cut a release — bump the version, update the changelog, tag — all three in step.",
65
72
  "DESC_INGEST": "Convert a PDF, Office, or web document to clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Gather intel from open sources — sweep wide, then confirm every claim against independent reporting before you act on it.",
67
- "DESC_LEARNING_PATH": "Convert a goal and deadline into a day-by-day training plan — each day one timed task, a pass/fail criterion, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Probe a mastery claim — five simple-looking questions that expose shallow knowledge, with a straight verdict on the gaps.",
69
- "DESC_FEYNMAN": "Confirm a topic holds — brief it back plain, get stopped on jargon, skipped steps, and over-simplification, then see what isn't solid.",
70
- "DESC_CRASH_COURSE": "Get operational in a skill fast — what to learn first, what to ignore, and the one drill that puts you ahead of most.",
71
- "DESC_DRILL": "Train shaky knowledge into reflex — put into real scenarios and questioned through your mistakes, the answer held until you've tried.",
72
- "DESC_DECODE": "Break confusing material down — the one keystone line first, a plain analogy, then a comprehension check before you advance.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing order, or an entry for the log? Then file the memory, or test the order against the case that would break it before adopting it in user-rules.md.",
75
76
  "DESC_PROFILE": "File the commander's dossier in PROFILE.md — role, theatre, preferred briefing style; identity only, standing orders route to user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Writes and updates user-facing documentation after code lands.",
24
24
  "DESC_SECURITY": "Audits changes that touch the security surface.",
25
25
  "DESC_EXPLORER": "Reads and searches widely in a throwaway context, returns only distilled findings.",
26
+ "DESC_RESEARCHER": "Searches and fetches the open web in a throwaway context, cross-checks every claim against two sources, returns only sourced findings.",
26
27
  "DESC_ADVOCATE": "Argues the strongest case for the proposal — the upside, the opportunity, the cost of not acting.",
27
28
  "DESC_SKEPTIC": "Plays devil's advocate — attacks the proposal for failure modes, risks, and hidden assumptions.",
28
29
  "DESC_PRAGMATIST": "Weighs feasibility — the cost, effort, and complexity against whether the payoff is worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage the right paths and write a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Review a diff or PR for correctness first, quality second.",
44
45
  "DESC_BRAINSTORM": "Turn a raw idea into an approved design before any code is written.",
45
- "DESC_CLARIFY": "Interview the user to pin down the goal, scope, and success criteria of any task or project, then confirm and record the key decisions before work begins.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, placed at a deliberate seam.",
47
47
  "DESC_DOMAIN_MODELING": "Keep a living domain glossary (CONTEXT.md) and seal each structural decision as an ADR.",
48
48
  "DESC_WAYFINDER": "Chart work too big for one session as a shared map of decision tickets, resolved one at a time until the way is clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "Force the laziest solution that works — minimal and shortest-path; stdlib and native before custom code, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Fan independent subtasks out to concurrent subagents, then converge the results.",
59
59
  "DESC_PIPELINE": "Spawn a small crew — analyst, developer, tester — to work a substantial task in its own worktree, merging only once the tests and lint pass.",
60
- "DESC_TDD": "Drive implementation with tests — write the failing test first, then the minimum code to pass.",
61
60
  "DESC_DEVELOP": "Drive a change through the cover-and-verify loop — smallest change, tests written for it, the affected suite green, committed slice by slice.",
61
+ "DESC_TEACH": "Teach the user toward a result — a crash course from zero to functional, confusing material decoded until it clicks, or a day-by-day path to a deadline.",
62
+ "DESC_QUIZ": "Test what the user knows instead of explaining it — a drill to reflex, an explain-it-back check, or a mastery claim stress-tested — with a blunt readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Review a change for how it would be attacked and what it leaks — trust boundaries, the classic vulnerability classes, secrets, the supply chain — ending in a ship / fix / block verdict.",
64
+ "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire a skill — reuse first, trigger before procedure, tested against its neighbours, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Isolate a task in its own git worktree from a clean base — look before branching, work only there, integrate through the normal gate, remove it when merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, classify the failure, reproduce under CI's conditions, fix, and watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Survey the dependencies — outdated, vulnerable and reachable, abandoned, unused — into a risk-ordered upgrade plan for migrate to execute, installing nothing.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the memory set — verify each fact against the live repo, merge duplicates, retire stale ones, promote recurring lessons to rules, rebuild the index.",
62
69
  "DESC_HANDOFF": "Snapshot task state so a fresh context — or another agent — can resume in one read.",
63
70
  "DESC_SHIP": "Open a pull request with a structured body, or finish and merge a branch, once the change is verified.",
64
71
  "DESC_RELEASE": "Cut a release — bump the version, update the changelog, and tag — keeping all three in sync.",
65
72
  "DESC_INGEST": "Convert a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Answer a question from the open web — search widely, then verify each claim against independent sources before citing it.",
67
- "DESC_LEARNING_PATH": "Turn a concrete goal and deadline into a day-by-day learning path — each day one timed task, a correctness criterion, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Stress-test a mastery claim — five deceptively simple questions that expose where understanding is shallow, with a blunt verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check whether a topic stuck — explain it simply, get stopped on jargon, skipped steps, and over-simplification, then see what isn't solid.",
70
- "DESC_CRASH_COURSE": "Go from zero to functional in a skill fast — what to learn first, what to ignore, and the one exercise that puts you ahead of most.",
71
- "DESC_DRILL": "Turn shaky knowledge into reflex — dropped into real situations and questioned through your mistakes, the answer withheld until you've tried.",
72
- "DESC_DECODE": "Make confusing material click — the one keystone sentence first, an everyday analogy, then a comprehension check before moving on.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first whether the user wants a standing rule or a durable memory, then write the memory, or pressure-test the rule — reformulate it, break it against its worst case — before adopting it in user-rules.md.",
75
76
  "DESC_PROFILE": "Interview the user and draft or refresh PROFILE.md — who they are, how they work, how they like answers pitched; identity only, standing rules route to user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Keeps the ship's log and the charts once the work is done.",
24
24
  "DESC_SECURITY": "Watches for boarders — audits anything touching the security deck.",
25
25
  "DESC_EXPLORER": "Sends the lookout — sweeps wide from a throwaway crow's nest, returns only the sighting.",
26
+ "DESC_RESEARCHER": "Sails past the harbour mouth — reads the foreign charts, checks each bearing twice, returns only the fix.",
26
27
  "DESC_ADVOCATE": "Argues to set sail — the prize in the offing, the opening, the cost of staying in port.",
27
28
  "DESC_SKEPTIC": "Plays the doubter — assails the plan for the leaks, the reefs, and the assumptions no one sounded.",
28
29
  "DESC_PRAGMATIST": "Weighs the stores — the cost, the toil, the tangle, and whether the haul is worth the voyage.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Load only the cargo this run touched and seal a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Inspect a diff or petition — correctness first, craft after.",
44
45
  "DESC_BRAINSTORM": "Turn a raw notion into an agreed course before any plank is cut.",
45
- "DESC_CLARIFY": "Press the crew for the true goal, scope, and mark o' success on any job, then confirm and log the key calls before settin' the course.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — a hold full o' behaviour behind one small hatch, and place the seam a'purpose, not by chance.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the crew's glossary alive in CONTEXT.md, and log every structural call as an ADR in the ship's log.",
48
48
  "DESC_WAYFINDER": "Chart a voyage too big for one watch as a shared map o' decision tickets, resolved one at a time till the way be clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest haul that floats — least code, shortest course; ship's stores before custom rigging, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Send several hands on independent tasks at once, then haul in what they bring.",
59
59
  "DESC_PIPELINE": "Send a small crew — scout, shipwright, tester — off to work a job in their own berth, only hauling it aboard once the trial run comes back clean.",
60
- "DESC_TDD": "Let the trial lead — set the failing trial first, then only the code to pass it.",
61
60
  "DESC_DEVELOP": "Sail a change through the cover-and-verify tack — the smallest move, trials rigged to cover it, the touched trials run clean, sealed one cargo at a time.",
61
+ "DESC_TEACH": "Get a landlubber seaworthy — a crash course from dock to deck, a confusing chart decoded till it clicks, or a day-by-day course to the deadline.",
62
+ "DESC_QUIZ": "Test what the crew truly knows instead of telling them — drill a knack to reflex, make them recite it back, or call the bluff on a claimed mastery — with a plain readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Board the change as a raider would — where she can be breached, what she leaks, what she takes aboard from foreign ports — and rule: sail, mend, or scuttle.",
64
+ "DESC_SKILL_FORGE": "Forge, sharpen, merge, or retire a knack — reuse the ship's stores first, the trigger before the steps, tested against neighbouring knacks, every satellite logged, doctor green.",
65
+ "DESC_WORKTREE": "Work a task in its own hold — a fresh worktree off a clean base, nothing shared with the cargo already stowed, back through the normal gate, hold cleared once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the log, name the failure, reproduce under CI's own weather, mend, and watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Survey every dependency aboard — outdated, rotten and reachable, abandoned, dead weight — into a risk-ordered refit plan for migrate to execute, taking nothing aboard yet.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the ship's log — verify each entry against the living vessel, merge duplicates, strike stale ones, promote recurring lessons to the articles, rebuild the index.",
62
69
  "DESC_HANDOFF": "Pass the watch — log the state so a fresh hand takes the wheel in one read.",
63
70
  "DESC_SHIP": "Hoist the colours: open a PR with a clear log, or merge the branch, once she's proven.",
64
71
  "DESC_RELEASE": "Cut a release — raise the version, write the log, seal it with a tag, all in accord.",
65
72
  "DESC_INGEST": "Haul a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Hunt the answer across open waters — search wide, then prove every claim against independent charts before you trust it.",
67
- "DESC_LEARNING_PATH": "Chart a goal an' deadline into a day-by-day course — each day one timed task, a mark to know ye did it right, an' what not to do.",
68
- "DESC_GAP_DETECTOR": "Test a boast o' mastery — five simple-soundin' questions that flush out shallow knowin', with a blunt verdict on the holes.",
69
- "DESC_FEYNMAN": "See if it lodged in yer skull — explain it plain, get hauled up on jargon, skipped steps, an' over-simplifyin', then face what ain't solid.",
70
- "DESC_CRASH_COURSE": "Get ye seaworthy in a skill fast — what to learn first, what to ignore, and the one drill that sets ye ahead o' most.",
71
- "DESC_DRILL": "Beat shaky know-how into instinct — thrown into real waters and quizzed through yer blunders, the answer kept back 'til ye've tried.",
72
- "DESC_DECODE": "Make murky writ plain — the one keystone line first, a plain yarn, then a test afore ye sail on.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — a standin' rule, or just summat to remember? Then log the memory, or run the rule aground on its worst case afore ye nail it into user-rules.md.",
75
76
  "DESC_PROFILE": "Chart yer captain in PROFILE.md — who they be, how they sail, how they like their bearings called; identity only, articles o' conduct go in user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Files the post-game report and the playbook once the work lands.",
24
24
  "DESC_SECURITY": "Runs the integrity check on anything touching the security surface.",
25
25
  "DESC_EXPLORER": "Sends the scout — sweeps wide in a throwaway scouting trip, returns only the report.",
26
+ "DESC_RESEARCHER": "Sends the advance scout on the road — checks every stat against two sources before it makes the game plan.",
26
27
  "DESC_ADVOCATE": "Makes the call to go for it — the upside, the opening, the cost of playing safe.",
27
28
  "DESC_SKEPTIC": "Plays the contrarian — breaks down the call for failure modes, risks, and unchecked assumptions.",
28
29
  "DESC_PRAGMATIST": "Weighs the game plan — the cost, the effort, the complexity, and whether the payoff's worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only what this drive touched and log a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Review a diff or PR — correctness first, form second.",
44
45
  "DESC_BRAINSTORM": "Turn a raw idea into an agreed game plan before any code is run.",
45
- "DESC_CLARIFY": "Question the user to set the goal, scope, and win-condition of any play, then confirm and log the key calls before the play is run.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, seam placed by the game plan, not by accident.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural call as an ADR.",
48
48
  "DESC_WAYFINDER": "Chart work too big for one game as a shared map of decision tickets, resolved one at a time until the field's clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest play that scores — least code, shortest path; standard kit before custom plays, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Send several players on independent plays at once, then regroup the results.",
59
59
  "DESC_PIPELINE": "Send a small squad — scout, builder, tester — onto their own field, and only bring the play into the game once the film comes back clean.",
60
- "DESC_TDD": "Let the test lead — set the failing test first, then the minimum code to pass.",
61
60
  "DESC_DEVELOP": "Drive it in on cover-and-verify — smallest gain, a test set on the new ground, the affected drills green, and log it snap by snap.",
61
+ "DESC_TEACH": "Coach the player toward a result — a crash course from bench to game-ready, a confusing playbook decoded until it clicks, or a day-by-day training plan to the deadline.",
62
+ "DESC_QUIZ": "Test the player instead of coaching — a drill to reflex, an explain-it-back film session, or a claimed mastery stress-tested — with a straight readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Scout the change like the opposing team would — where it can be attacked, what it leaks, what it pulls in from outside — and call it: play it, fix it, or bench it.",
64
+ "DESC_SKILL_FORGE": "Draw up, sharpen, merge, or retire a play — reuse the playbook first, trigger before the steps, tested against neighbouring plays, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Run a task on its own practice field — a fresh worktree off a clean base, nothing shared with the game in progress, back through the normal gate, field cleared once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the tape, classify the failure, reproduce under CI's own conditions, fix, and watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Audit the roster — outdated, injured and reachable, retired, dead weight — into a risk-ordered upgrade plan for migrate to execute, signing nothing yet.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the film room — verify each note against the live season, merge duplicates, cut stale ones, promote recurring lessons to team rules, rebuild the index.",
62
69
  "DESC_HANDOFF": "Hand off cleanly — snapshot the state so a fresh player picks up in one read.",
63
70
  "DESC_SHIP": "Make the call: open a PR with a clear recap, or merge the branch, once it's verified.",
64
71
  "DESC_RELEASE": "Ship the release — bump the version, write the recap, tag it, all in sync.",
65
72
  "DESC_INGEST": "Bring a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Work the scouting report — search wide, then confirm every claim against independent sources before you call it.",
67
- "DESC_LEARNING_PATH": "Turn a goal and deadline into a day-by-day training plan — each day one timed drill, a clear marker for success, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Test a mastery claim — five simple-looking questions that expose shallow knowledge, with a straight verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check a topic stuck — call it back plain, get whistled on jargon, skipped steps, and over-simplification, then see what isn't solid.",
70
- "DESC_CRASH_COURSE": "Get game-ready in a skill fast — what to learn first, what to ignore, and the one rep that puts you ahead of most.",
71
- "DESC_DRILL": "Drill shaky form into reflex — put in real game situations and questioned on your mistakes, no answer until you've tried.",
72
- "DESC_DECODE": "Break confusing material down — the one key play first, a plain analogy, then a check before you move on.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing house rule, or just one for the notes? Then log the memory, or run the rule against the play that breaks it before it goes on the board in user-rules.md.",
75
76
  "DESC_PROFILE": "Write the scouting report in PROFILE.md — position, playing style, how they want the play called; identity only, team rules go on the board in user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Writes up the debrief and the notes once the work is done.",
24
24
  "DESC_SECURITY": "Goes over anything touching the security surface with a fine comb.",
25
25
  "DESC_EXPLORER": "Sends a scout — sweeps wide in a throwaway run, brings back only the read.",
26
+ "DESC_RESEARCHER": "Reads the other teams' data — cross-checks every number against two sources, brings back only what held up.",
26
27
  "DESC_ADVOCATE": "Argues for the move — the time to be gained, the gap, the cost of lifting off.",
27
28
  "DESC_SKEPTIC": "Calls it out — the failure modes, the risks, the assumptions nobody checked.",
28
29
  "DESC_PRAGMATIST": "Weighs the call — the cost, the effort, the wear, and whether the gain is worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Stage only what this stint touched and seal a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Go over a diff or PR — correctness first, polish after.",
44
45
  "DESC_BRAINSTORM": "Turn a raw idea into an agreed strategy before a single tyre hits the track.",
45
- "DESC_CLARIFY": "Press the team for the real goal, scope, and finish condition of any job, then confirm and log the key calls before you send me out.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, seam placed on purpose, like every line on track.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural call as an ADR, box by box.",
48
48
  "DESC_WAYFINDER": "Chart work too big for one stint as a shared map of decision tickets, resolved one at a time until the track's clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest line that wins — least code, shortest path; standard parts before custom builds, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Send several engineers on independent jobs at once, then bring in what they get.",
59
59
  "DESC_PIPELINE": "Send a small crew — scout, engineer, tester — off on their own run, and only bring the setup into the race once the telemetry comes back clean.",
60
- "DESC_TDD": "Let the test lead — set the failing test first, then only the code to pass it.",
61
60
  "DESC_DEVELOP": "Drive the change home — smallest move, a test written to cover it, the affected trials green, and sealed commit by commit.",
61
+ "DESC_TEACH": "Get the user up to speed — a crash course from zero to functional, confusing material decoded until it clicks, or a day-by-day programme to the deadline. No wasted laps.",
62
+ "DESC_QUIZ": "Test what they actually know instead of explaining it — a drill to reflex, an explain-it-back debrief, or a claimed mastery stress-tested — with a straight readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Attack the change the way a rival would — where it can be forced, what it leaks, what it brings in from outside — and call it: ship, fix, or block.",
64
+ "DESC_SKILL_FORGE": "Build, tune, merge, or retire a setup — reuse first, trigger before procedure, tested against its neighbours, every satellite registered, doctor green.",
65
+ "DESC_WORKTREE": "Run a task in its own garage — a fresh worktree off a clean base, nothing shared with the car already on the stand, back through the normal gate, garage cleared once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the data, classify the failure, reproduce under CI's own conditions, fix, watch the re-run. No retry-until-green.",
67
+ "DESC_DEPS_AUDIT": "Survey every component — outdated, on recall and reachable, discontinued, dead weight — into a risk-ordered upgrade plan for migrate to execute, fitting nothing yet.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the memory — verify each note against the live car, merge duplicates, retire stale ones, promote recurring lessons to rules, rebuild the index.",
62
69
  "DESC_HANDOFF": "Hand over the car — snapshot the state so a fresh driver takes the wheel in one read.",
63
70
  "DESC_SHIP": "Take the flag: open a PR with a clear write-up, or merge the branch, once it's verified.",
64
71
  "DESC_RELEASE": "Cut a release — raise the version, write the debrief, tag it, all three in sync.",
65
72
  "DESC_INGEST": "Bring a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Find the answer out on the open circuit — search wide, then prove every claim against independent sources before you call it.",
67
- "DESC_LEARNING_PATH": "Turn a goal and deadline into a day-by-day plan — each day one timed task, a clear criterion, and what not to do.",
68
- "DESC_GAP_DETECTOR": "Push a mastery claim hard — five simple-looking questions that expose shallow knowledge, with a blunt verdict on the gaps.",
69
- "DESC_FEYNMAN": "Check it stuck — explain it plain, get stopped on jargon, skipped steps, and over-simplification, then see what isn't solid.",
70
- "DESC_CRASH_COURSE": "Get up to speed in a skill fast — what to learn first, what to ignore, and the one session that puts you ahead of most.",
71
- "DESC_DRILL": "Shaky pace into reflex — out on track, questioned through every mistake, the answer held until you've tried. Simple as that.",
72
- "DESC_DECODE": "Make a confusing brief click — the one key line first, a plain analogy, then a check before you push on.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — standing rule, or just something to remember? Then note it, or run the rule through the lap that breaks it before locking it into user-rules.md.",
75
76
  "DESC_PROFILE": "Set up the driver profile in PROFILE.md — seat, driving style, how they want the pit wall to talk; identity only, team orders go in user-rules.md.",
@@ -23,6 +23,7 @@
23
23
  "DESC_DOCS": "Transcribes the tomes for those who follow, once the work is done.",
24
24
  "DESC_SECURITY": "Wards the circle — audits any working that touches the warded surface.",
25
25
  "DESC_EXPLORER": "Sends a scrying-eye — sweeps wide in a throwaway vision, returns only what it saw.",
26
+ "DESC_RESEARCHER": "Consults the far libraries — holds every scrap of lore to two independent tomes before it is entered in the grimoire.",
26
27
  "DESC_ADVOCATE": "Argues for the working — its promise, the opening it grants, the cost of leaving it uncast.",
27
28
  "DESC_SKEPTIC": "Plays the doubter — assails the working for its flaws, its perils, and its unspoken assumptions.",
28
29
  "DESC_PRAGMATIST": "Weighs the reagents — the cost, the effort, the tangle, and whether the boon is worth it.",
@@ -42,7 +43,6 @@
42
43
  "DESC_COMMIT": "Gather only the reagents this working touched and seal a focused commit.",
43
44
  "DESC_CODE_REVIEW": "Scry a diff or petition — soundness first, craft after.",
44
45
  "DESC_BRAINSTORM": "Turn a raw notion into an agreed design before any rune is cut.",
45
- "DESC_CLARIFY": "Divine the true goal, scope, and measure of success of any working, then confirm and inscribe the key runes before the working begins.",
46
46
  "DESC_CODEBASE_DESIGN": "Design deep modules — great behaviour bound behind one small interface, the seam placed by design, not left to chance.",
47
47
  "DESC_DOMAIN_MODELING": "Keep the glossary alive in CONTEXT.md, and inscribe each structural decision as an ADR.",
48
48
  "DESC_WAYFINDER": "Chart a working too vast for one session as a shared map of decision runes, resolved one at a time until the way is clear.",
@@ -57,19 +57,20 @@
57
57
  "DESC_PONYTAIL": "The laziest working spell — least incantation, shortest path; the standard grimoire before bespoke runes, one line before fifty. lite/full/ultra.",
58
58
  "DESC_PARALLEL_AGENTS": "Loose several familiars on independent tasks at once, then gather what they bring.",
59
59
  "DESC_PIPELINE": "Dispatch a small coven of familiars — scout, artisan, examiner — to labour in their own warded circle, bound into the Grimoire only once the proving-rite returns clean.",
60
- "DESC_TDD": "Let the trial lead — set the failing trial first, then only the code to pass it.",
61
60
  "DESC_DEVELOP": "Drive a working through the cover-and-confirm loop — the smallest casting, its trials written, the touched trials green, sealed rune by rune.",
61
+ "DESC_TEACH": "Tutor the apprentice toward a result — a crash course from novice to working caster, a confusing grimoire decoded until it clicks, or a day-by-day path to the appointed day.",
62
+ "DESC_QUIZ": "Test the apprentice rather than lecture — a drill to reflex, an explain-it-back examination, or a claimed mastery put to trial — with an unvarnished readout of the gaps.",
63
+ "DESC_SECURITY_AUDIT": "Scry a change as a hostile caster would — where the wards can be breached, what it leaks, what it summons from beyond the circle — and pronounce: ship, mend, or bind.",
64
+ "DESC_SKILL_FORGE": "Inscribe, sharpen, merge, or retire a spell — reuse the spellbook first, the trigger before the incantation, tested against neighbouring spells, every satellite recorded, doctor green.",
65
+ "DESC_WORKTREE": "Work a task in its own warded circle — a fresh worktree off a clean base, nothing shared with the ritual in progress, back through the normal gate, circle dispelled once merged.",
66
+ "DESC_CI_FIX": "Turn a red CI run green at the cause — read the omens, classify the failure, reproduce under CI's own conditions, mend, and watch the re-run.",
67
+ "DESC_DEPS_AUDIT": "Survey every reagent — outdated, tainted and reachable, abandoned, dead weight — into a risk-ordered upgrade plan for migrate to execute, acquiring nothing yet.",
68
+ "DESC_CONSOLIDATE_MEMORY": "Tend the grimoire of memory — verify each entry against the living tower, merge duplicates, strike stale ones, promote recurring lessons to law, rebuild the index.",
62
69
  "DESC_HANDOFF": "Pass the working — inscribe its state so a fresh mind resumes in one read.",
63
70
  "DESC_SHIP": "Send the working forth: open a PR with a clear account, or merge the branch, once proven.",
64
71
  "DESC_RELEASE": "Cut a release — raise the version, inscribe the chronicle, seal it with a tag, all in accord.",
65
72
  "DESC_INGEST": "Transmute a PDF, Office, or web document into clean markdown before reading it.",
66
73
  "DESC_RESEARCH": "Seek the answer through the wider lore — scry many sources, then prove each claim against independent tomes before you trust it.",
67
- "DESC_LEARNING_PATH": "Forge a goal and deadline into a day-by-day path of study — each day one timed task, a measure of correctness, and a forbidden misstep.",
68
- "DESC_GAP_DETECTOR": "Put a claim of mastery to the trial — five deceptively simple riddles that reveal shallow lore, with a plain verdict on what is wanting.",
69
- "DESC_FEYNMAN": "Divine whether the lore took — explain it in plain tongue, be halted at each jargon, skipped step, or false simplification, then face what is not yet solid.",
70
- "DESC_CRASH_COURSE": "Make an apprentice functional in a craft swiftly — what to learn first, what to ignore, and the one rite that sets you ahead of most.",
71
- "DESC_DRILL": "Temper shaky knowledge into instinct — cast into real trials and questioned through your missteps, the answer withheld until you have tried.",
72
- "DESC_DECODE": "Decipher cryptic text — the one keystone line first, a plain parable, then a trial of questions before you advance.",
73
74
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
74
75
  "DESC_RULE": "Ask first — a standing rule, or a thing merely to be remembered? Then inscribe the memory, or prove the rule against the case that would unmake it before it enters user-rules.md.",
75
76
  "DESC_PROFILE": "Divine the user's nature into PROFILE.md — who they are, how they work, the register they favour; identity only, binding runes belong in user-rules.md.",
@@ -1 +1 @@
1
- import{j as e,E as y,L as f,a as g,I as j,r as u,g as b}from"./index-DNQE5ydy.js";import{r as p}from"./react-DOpiTn5v.js";import{S as v,b as N,E as h,c as w,a as k,T as S}from"./activity-DpYPKNrA.js";function T({s}){const l=v[s.status]||v.idle,n=s.files,a=s.todos,o=a&&a.total>0||s.error||s.blocked_on,r=()=>b(`#/activity/${encodeURIComponent(s.session_id)}`);return e.jsxs("div",{className:"card pad-md act-card",style:{cursor:"pointer"},onClick:r,role:"link",tabIndex:0,onKeyDown:d=>{d.key==="Enter"&&r()},children:[e.jsxs("div",{className:"row between wrap gap-12",children:[e.jsxs("div",{className:"row gap-10",style:{minWidth:0},children:[e.jsx("span",{className:`feed-dot ${l.cls||"acc"}`,style:{width:9,height:9}}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("h3",{style:{margin:0},children:s.title||N(s.cwd)||s.session_id}),s.cwd&&e.jsx("div",{className:"dim mono",style:{fontSize:12,...h},title:s.cwd,children:s.cwd})]})]}),e.jsxs("div",{className:"row gap-8",style:{flexShrink:0},children:[s.model&&e.jsx("span",{className:"badge mono",title:"model",children:s.model}),s.agent&&e.jsx("span",{className:"badge",children:s.agent}),e.jsxs("span",{className:`badge ${l.cls}`,children:[e.jsx("span",{className:"dot"}),l.label]}),e.jsx(j,{name:"chevron",className:"glyph act-chev"})]})]}),s.phase&&e.jsxs("div",{className:"row gap-8",style:{marginTop:10,fontSize:14},children:[e.jsx(j,{name:"activity"}),e.jsx("span",{style:h,children:s.phase})]}),(s.tokens>0||s.cost>0||s.turn_started_at||n&&n.count>0)&&e.jsxs("div",{className:"row wrap",style:{gap:16,marginTop:12,fontSize:13,color:"var(--text-2)"},children:[s.tokens>0&&e.jsxs("span",{children:[w(s.tokens)," tok"]}),s.cost>0&&e.jsxs("span",{children:["$",s.cost.toFixed(2)]}),s.turn_started_at?e.jsx("span",{children:e.jsx(k,{startedAt:s.turn_started_at})}):null,n&&n.count>0&&e.jsxs("span",{children:[n.count," file",n.count===1?"":"s"," ",e.jsxs("span",{style:{color:"var(--good)"},children:["+",n.additions]})," ",e.jsxs("span",{style:{color:"var(--bad)"},children:["−",n.deletions]})]})]}),o&&e.jsxs("div",{className:"row between wrap gap-12",style:{marginTop:12,paddingTop:10,borderTop:"1px solid var(--line)"},children:[a&&a.total>0?e.jsxs("span",{className:"row gap-8 dim",style:{fontSize:13},children:[e.jsx(S,{done:a.done,total:a.total}),"plan ",a.done,"/",a.total]}):e.jsx("span",{}),s.error?e.jsx("span",{className:"badge bad",title:s.error,style:{maxWidth:300,...h},children:s.error}):s.blocked_on?e.jsx("span",{className:"badge bad",title:s.blocked_on,style:{maxWidth:300,...h},children:s.blocked_on}):null]}),e.jsxs("div",{className:"dim mono",style:{fontSize:11,marginTop:8},children:["updated ",u(s.updated_at)," ago"]})]})}function L(){const[s,l]=p.useState(null),[n,a]=p.useState("");p.useEffect(()=>{let t=!0;const i=()=>g.activity().then(m=>{t&&(l(m),a(""))},m=>{t&&a(m.message)});i();const c=setInterval(()=>{document.hidden||i()},2e3),x=()=>{document.hidden||i()};return document.addEventListener("visibilitychange",x),()=>{t=!1,clearInterval(c),document.removeEventListener("visibilitychange",x)}},[]);const o=s?s.enabled!==!1:!0,r=(s==null?void 0:s.activity)||[],d=async()=>{const t=!o;try{const i=await g.activityToggle(t);l(c=>({...c||{},enabled:i.enabled,activity:i.enabled?(c==null?void 0:c.activity)||[]:[]})),a("")}catch(i){a(i.message)}};return e.jsxs("div",{className:"narrow",children:[e.jsxs("div",{className:"head-row mb-16",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"h",children:"Activity"}),e.jsx("p",{className:"sub",children:"Live OpenCode sessions this harness is running: what each one is doing right now. Refreshes every couple of seconds; sessions drop off when their process exits."})]}),e.jsxs("div",{className:"row gap-10",style:{alignItems:"center",flexShrink:0},children:[e.jsx("span",{className:"dim mono",style:{fontSize:12},children:o?"tracking on":"tracking off"}),e.jsx("div",{className:`sw-toggle${o?" on":""}`,role:"switch","aria-checked":o,"aria-label":"Toggle activity tracking",tabIndex:0,onClick:d,onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.key===" "&&t.preventDefault(),d())}})]})]}),e.jsx(y,{error:n,style:{marginBottom:12}}),s?o?r.length===0?e.jsxs("div",{className:"empty",children:[e.jsx("div",{className:"big",children:"No active sessions"}),"Run ",e.jsx("code",{children:"opencode"})," and the sessions it spins up appear here."]}):e.jsx("div",{className:"stack gap-12",children:r.map(t=>e.jsx(T,{s:t},t.session_id))}):e.jsxs("div",{className:"empty",children:[e.jsx("div",{className:"big",children:"Activity tracking is off"}),"The plugin isn't recording sessions. Flip the switch to turn it back on."]}):e.jsx(f,{label:"Reading live sessions…"})]})}export{L as default};
1
+ import{j as e,E as y,L as f,a as g,I as j,r as u,g as b}from"./index-Py_IQjgK.js";import{r as p}from"./react-DOpiTn5v.js";import{S as v,b as N,E as h,c as w,a as k,T as S}from"./activity-C_H2Bx1P.js";function T({s}){const l=v[s.status]||v.idle,n=s.files,a=s.todos,o=a&&a.total>0||s.error||s.blocked_on,r=()=>b(`#/activity/${encodeURIComponent(s.session_id)}`);return e.jsxs("div",{className:"card pad-md act-card",style:{cursor:"pointer"},onClick:r,role:"link",tabIndex:0,onKeyDown:d=>{d.key==="Enter"&&r()},children:[e.jsxs("div",{className:"row between wrap gap-12",children:[e.jsxs("div",{className:"row gap-10",style:{minWidth:0},children:[e.jsx("span",{className:`feed-dot ${l.cls||"acc"}`,style:{width:9,height:9}}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("h3",{style:{margin:0},children:s.title||N(s.cwd)||s.session_id}),s.cwd&&e.jsx("div",{className:"dim mono",style:{fontSize:12,...h},title:s.cwd,children:s.cwd})]})]}),e.jsxs("div",{className:"row gap-8",style:{flexShrink:0},children:[s.model&&e.jsx("span",{className:"badge mono",title:"model",children:s.model}),s.agent&&e.jsx("span",{className:"badge",children:s.agent}),e.jsxs("span",{className:`badge ${l.cls}`,children:[e.jsx("span",{className:"dot"}),l.label]}),e.jsx(j,{name:"chevron",className:"glyph act-chev"})]})]}),s.phase&&e.jsxs("div",{className:"row gap-8",style:{marginTop:10,fontSize:14},children:[e.jsx(j,{name:"activity"}),e.jsx("span",{style:h,children:s.phase})]}),(s.tokens>0||s.cost>0||s.turn_started_at||n&&n.count>0)&&e.jsxs("div",{className:"row wrap",style:{gap:16,marginTop:12,fontSize:13,color:"var(--text-2)"},children:[s.tokens>0&&e.jsxs("span",{children:[w(s.tokens)," tok"]}),s.cost>0&&e.jsxs("span",{children:["$",s.cost.toFixed(2)]}),s.turn_started_at?e.jsx("span",{children:e.jsx(k,{startedAt:s.turn_started_at})}):null,n&&n.count>0&&e.jsxs("span",{children:[n.count," file",n.count===1?"":"s"," ",e.jsxs("span",{style:{color:"var(--good)"},children:["+",n.additions]})," ",e.jsxs("span",{style:{color:"var(--bad)"},children:["−",n.deletions]})]})]}),o&&e.jsxs("div",{className:"row between wrap gap-12",style:{marginTop:12,paddingTop:10,borderTop:"1px solid var(--line)"},children:[a&&a.total>0?e.jsxs("span",{className:"row gap-8 dim",style:{fontSize:13},children:[e.jsx(S,{done:a.done,total:a.total}),"plan ",a.done,"/",a.total]}):e.jsx("span",{}),s.error?e.jsx("span",{className:"badge bad",title:s.error,style:{maxWidth:300,...h},children:s.error}):s.blocked_on?e.jsx("span",{className:"badge bad",title:s.blocked_on,style:{maxWidth:300,...h},children:s.blocked_on}):null]}),e.jsxs("div",{className:"dim mono",style:{fontSize:11,marginTop:8},children:["updated ",u(s.updated_at)," ago"]})]})}function L(){const[s,l]=p.useState(null),[n,a]=p.useState("");p.useEffect(()=>{let t=!0;const i=()=>g.activity().then(m=>{t&&(l(m),a(""))},m=>{t&&a(m.message)});i();const c=setInterval(()=>{document.hidden||i()},2e3),x=()=>{document.hidden||i()};return document.addEventListener("visibilitychange",x),()=>{t=!1,clearInterval(c),document.removeEventListener("visibilitychange",x)}},[]);const o=s?s.enabled!==!1:!0,r=(s==null?void 0:s.activity)||[],d=async()=>{const t=!o;try{const i=await g.activityToggle(t);l(c=>({...c||{},enabled:i.enabled,activity:i.enabled?(c==null?void 0:c.activity)||[]:[]})),a("")}catch(i){a(i.message)}};return e.jsxs("div",{className:"narrow",children:[e.jsxs("div",{className:"head-row mb-16",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"h",children:"Activity"}),e.jsx("p",{className:"sub",children:"Live OpenCode sessions this harness is running: what each one is doing right now. Refreshes every couple of seconds; sessions drop off when their process exits."})]}),e.jsxs("div",{className:"row gap-10",style:{alignItems:"center",flexShrink:0},children:[e.jsx("span",{className:"dim mono",style:{fontSize:12},children:o?"tracking on":"tracking off"}),e.jsx("div",{className:`sw-toggle${o?" on":""}`,role:"switch","aria-checked":o,"aria-label":"Toggle activity tracking",tabIndex:0,onClick:d,onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.key===" "&&t.preventDefault(),d())}})]})]}),e.jsx(y,{error:n,style:{marginBottom:12}}),s?o?r.length===0?e.jsxs("div",{className:"empty",children:[e.jsx("div",{className:"big",children:"No active sessions"}),"Run ",e.jsx("code",{children:"opencode"})," and the sessions it spins up appear here."]}):e.jsx("div",{className:"stack gap-12",children:r.map(t=>e.jsx(T,{s:t},t.session_id))}):e.jsxs("div",{className:"empty",children:[e.jsx("div",{className:"big",children:"Activity tracking is off"}),"The plugin isn't recording sessions. Flip the switch to turn it back on."]}):e.jsx(f,{label:"Reading live sessions…"})]})}export{L as default};
@@ -1 +1 @@
1
- import{j as s,L as I,I as b,r as _,a as L}from"./index-DNQE5ydy.js";import{r as m}from"./react-DOpiTn5v.js";import{S as w,b as W,E as x,c as S,a as A}from"./activity-DpYPKNrA.js";function C(e){return e.kind==="tool"?e.status==="error"?"bad":e.status==="completed"?"ok":"acc":{retry:"warn",error:"bad",subtask:"acc",text:"acc"}[e.kind]||""}function F({rec:e}){const n=e.who==="you",i=[];n||(e.kind==="tool"&&e.ms!=null&&i.push(`${(e.ms/1e3).toFixed(1)}s`),e.kind==="step"&&(e.tokens&&i.push(`${S(e.tokens)} tok`),e.cost&&i.push(`$${e.cost.toFixed(2)}`)),e.kind==="subtask"&&e.agent&&i.unshift(e.agent));const d=!n&&(e.kind==="text"||e.kind==="thinking"||e.kind==="step"),o=n?e.text:e.label||e.snippet||e.kind;return s.jsxs("div",{className:"row gap-10",style:{alignItems:"baseline"},children:[s.jsx("span",{className:`badge ${n?"":"acc"}`,style:{flexShrink:0,minWidth:52,justifyContent:"center"},children:n?"you":"agent"}),s.jsxs("div",{style:{minWidth:0,flex:1,fontSize:13},children:[!n&&s.jsx("span",{className:`feed-dot ${C(e)||"acc"}`,style:{display:"inline-block",marginRight:8,verticalAlign:"middle"}}),e.kind==="thinking"&&s.jsx("span",{className:"dim",children:"thinking: "}),d?s.jsx("span",{className:"dim",children:o}):n?o:s.jsx("b",{children:o}),e.error&&s.jsxs("span",{className:"dim",children:[": ",e.error]})]}),i.length>0&&s.jsx("span",{className:"dim mono",style:{flexShrink:0,fontSize:12},children:i.join(" · ")})]})}function B({turns:e}){return!e||e.length===0?s.jsx("div",{className:"dim",style:{fontSize:13},children:"No conversation captured yet."}):s.jsx("div",{className:"stack gap-12",children:e.map((n,i)=>{const d=n.role==="user";return s.jsxs("div",{className:"row gap-10",style:{alignItems:"baseline"},children:[s.jsx("span",{className:`badge ${d?"":"acc"}`,style:{flexShrink:0,minWidth:52,justifyContent:"center"},children:d?"you":"agent"}),s.jsx("div",{style:{minWidth:0,fontSize:13,color:d?"inherit":"var(--text-2)"},children:n.text})]},i)})})}function G({sid:e}){const[n,i]=m.useState(null),[d,o]=m.useState(""),[T,f]=m.useState(!1),[v,$]=m.useState(!1);m.useEffect(()=>{let t=!0;const l=()=>L.activityDetail(e).then(h=>{t&&(i(h),o(""),f(!1))},h=>{t&&(h.status===404?f(!0):o(h.message))});l();const z=setInterval(()=>{document.hidden||l()},2e3),k=()=>{document.hidden||l()};return document.addEventListener("visibilitychange",k),()=>{t=!1,clearInterval(z),document.removeEventListener("visibilitychange",k)}},[e]);const p=s.jsxs("a",{className:"btn ghost sm",href:"#/activity",style:{marginBottom:12,display:"inline-flex",gap:6},children:[s.jsx(b,{name:"arrow",style:{transform:"rotate(180deg)"}})," Activity"]});if(T)return s.jsxs("div",{className:"narrow",children:[p,s.jsxs("div",{className:"empty",children:[s.jsx("div",{className:"big",children:"Session ended"}),"It's no longer live. ",s.jsx("a",{href:"#/activity",children:"Back to Activity"}),"."]})]});if(!n)return s.jsxs("div",{className:"narrow",children:[p,s.jsx(I,{label:"Loading session…"})]});const a=n.session,y=w[a.status]||w.idle,c=a.files,r=a.todos,j=!!(c&&c.items&&c.items.length>0),g=!!(r&&r.items&&r.items.length>0),N=n.conversation||[],u=n.timeline||[],E=[...N.filter(t=>t.role==="user").map(t=>({who:"you",text:t.text,t:t.t||0})),...u.map(t=>({...t,who:"agent"}))].sort((t,l)=>(t.t||0)-(l.t||0));return s.jsxs("div",{className:"narrow",children:[p,d&&s.jsx("p",{className:"badge bad",style:{marginBottom:12},children:d}),s.jsxs("div",{className:"card pad-md",children:[s.jsxs("div",{className:"row between wrap gap-12",children:[s.jsxs("div",{style:{minWidth:0},children:[s.jsx("h1",{className:"h",style:{margin:0},children:a.title||W(a.cwd)||a.session_id}),a.cwd&&s.jsx("div",{className:"dim mono",style:{fontSize:12,...x},title:a.cwd,children:a.cwd})]}),s.jsxs("div",{className:"row gap-8",style:{flexShrink:0},children:[a.model&&s.jsx("span",{className:"badge mono",children:a.model}),a.agent&&s.jsx("span",{className:"badge",children:a.agent}),s.jsxs("span",{className:`badge ${y.cls}`,children:[s.jsx("span",{className:"dot"}),y.label]})]})]}),a.phase&&s.jsxs("div",{className:"row gap-8",style:{marginTop:10,fontSize:14},children:[s.jsx(b,{name:"activity"}),s.jsx("span",{style:x,children:a.phase})]}),s.jsxs("div",{className:"row wrap",style:{gap:16,marginTop:12,fontSize:13,color:"var(--text-2)"},children:[a.tokens>0&&s.jsxs("span",{children:[S(a.tokens)," tok"]}),a.cost>0&&s.jsxs("span",{children:["$",a.cost.toFixed(2)]}),a.turn_started_at?s.jsx("span",{children:s.jsx(A,{startedAt:a.turn_started_at})}):null,s.jsxs("span",{className:"dim",children:["updated ",_(a.updated_at)," ago"]})]}),(a.error||a.blocked_on)&&s.jsx("div",{style:{marginTop:10},children:s.jsx("span",{className:"badge bad",style:{maxWidth:"100%",...x},children:a.error||a.blocked_on})})]}),(j||g)&&s.jsxs("div",{className:"grid gap-12",style:{marginTop:12,gridTemplateColumns:j&&g?"minmax(0, 1fr) minmax(0, 1fr)":"1fr"},children:[j&&s.jsxs("div",{className:"card pad-md",children:[s.jsx("div",{className:"card-head",children:s.jsxs("h3",{children:["Files touched ",s.jsxs("span",{className:"dim",children:["(",c.count,")"]})]})}),s.jsx("div",{className:"stack",style:{gap:6,marginTop:8},children:c.items.map(t=>s.jsxs("div",{className:"row between gap-12",style:{fontSize:13},children:[s.jsx("span",{className:"mono",style:{...x,minWidth:0,flex:1},title:t.file,children:t.file}),s.jsxs("span",{style:{flexShrink:0},children:[s.jsxs("span",{style:{color:"var(--good)"},children:["+",t.additions]})," ",s.jsxs("span",{style:{color:"var(--bad)"},children:["−",t.deletions]})]})]},t.file))})]}),g&&s.jsxs("div",{className:"card pad-md",children:[s.jsx("div",{className:"card-head",children:s.jsxs("h3",{children:["Plan"," ",s.jsxs("span",{className:"dim",children:["(",r.done,"/",r.total,")"]})]})}),s.jsx("div",{className:"stack",style:{gap:6,marginTop:8},children:r.items.map((t,l)=>s.jsxs("div",{className:"row gap-8",style:{fontSize:13},children:[s.jsx("span",{className:`feed-dot ${t.status==="completed"?"ok":t.status==="in_progress"?"acc":""}`}),s.jsx("span",{style:{textDecoration:t.status==="completed"?"line-through":"none",color:t.status==="completed"?"var(--text-3)":"inherit"},children:t.content})]},l))})]})]}),s.jsxs("div",{className:"card pad-md",style:{marginTop:12},children:[s.jsxs("div",{className:"card-head",style:{justifyContent:"space-between",marginBottom:12},children:[s.jsx("h3",{children:"Timeline"}),u.length>0&&s.jsx("button",{className:"btn ghost sm",onClick:()=>$(t=>!t),children:v?"Show conversation":`Show all ${u.length} steps`})]}),v?s.jsx("div",{className:"stack gap-12",children:E.map((t,l)=>s.jsx(F,{rec:t},l))}):s.jsx(B,{turns:N})]})]})}export{G as default};
1
+ import{j as s,L as I,I as b,r as _,a as L}from"./index-Py_IQjgK.js";import{r as m}from"./react-DOpiTn5v.js";import{S as w,b as W,E as x,c as S,a as A}from"./activity-C_H2Bx1P.js";function C(e){return e.kind==="tool"?e.status==="error"?"bad":e.status==="completed"?"ok":"acc":{retry:"warn",error:"bad",subtask:"acc",text:"acc"}[e.kind]||""}function F({rec:e}){const n=e.who==="you",i=[];n||(e.kind==="tool"&&e.ms!=null&&i.push(`${(e.ms/1e3).toFixed(1)}s`),e.kind==="step"&&(e.tokens&&i.push(`${S(e.tokens)} tok`),e.cost&&i.push(`$${e.cost.toFixed(2)}`)),e.kind==="subtask"&&e.agent&&i.unshift(e.agent));const d=!n&&(e.kind==="text"||e.kind==="thinking"||e.kind==="step"),o=n?e.text:e.label||e.snippet||e.kind;return s.jsxs("div",{className:"row gap-10",style:{alignItems:"baseline"},children:[s.jsx("span",{className:`badge ${n?"":"acc"}`,style:{flexShrink:0,minWidth:52,justifyContent:"center"},children:n?"you":"agent"}),s.jsxs("div",{style:{minWidth:0,flex:1,fontSize:13},children:[!n&&s.jsx("span",{className:`feed-dot ${C(e)||"acc"}`,style:{display:"inline-block",marginRight:8,verticalAlign:"middle"}}),e.kind==="thinking"&&s.jsx("span",{className:"dim",children:"thinking: "}),d?s.jsx("span",{className:"dim",children:o}):n?o:s.jsx("b",{children:o}),e.error&&s.jsxs("span",{className:"dim",children:[": ",e.error]})]}),i.length>0&&s.jsx("span",{className:"dim mono",style:{flexShrink:0,fontSize:12},children:i.join(" · ")})]})}function B({turns:e}){return!e||e.length===0?s.jsx("div",{className:"dim",style:{fontSize:13},children:"No conversation captured yet."}):s.jsx("div",{className:"stack gap-12",children:e.map((n,i)=>{const d=n.role==="user";return s.jsxs("div",{className:"row gap-10",style:{alignItems:"baseline"},children:[s.jsx("span",{className:`badge ${d?"":"acc"}`,style:{flexShrink:0,minWidth:52,justifyContent:"center"},children:d?"you":"agent"}),s.jsx("div",{style:{minWidth:0,fontSize:13,color:d?"inherit":"var(--text-2)"},children:n.text})]},i)})})}function G({sid:e}){const[n,i]=m.useState(null),[d,o]=m.useState(""),[T,f]=m.useState(!1),[v,$]=m.useState(!1);m.useEffect(()=>{let t=!0;const l=()=>L.activityDetail(e).then(h=>{t&&(i(h),o(""),f(!1))},h=>{t&&(h.status===404?f(!0):o(h.message))});l();const z=setInterval(()=>{document.hidden||l()},2e3),k=()=>{document.hidden||l()};return document.addEventListener("visibilitychange",k),()=>{t=!1,clearInterval(z),document.removeEventListener("visibilitychange",k)}},[e]);const p=s.jsxs("a",{className:"btn ghost sm",href:"#/activity",style:{marginBottom:12,display:"inline-flex",gap:6},children:[s.jsx(b,{name:"arrow",style:{transform:"rotate(180deg)"}})," Activity"]});if(T)return s.jsxs("div",{className:"narrow",children:[p,s.jsxs("div",{className:"empty",children:[s.jsx("div",{className:"big",children:"Session ended"}),"It's no longer live. ",s.jsx("a",{href:"#/activity",children:"Back to Activity"}),"."]})]});if(!n)return s.jsxs("div",{className:"narrow",children:[p,s.jsx(I,{label:"Loading session…"})]});const a=n.session,y=w[a.status]||w.idle,c=a.files,r=a.todos,j=!!(c&&c.items&&c.items.length>0),g=!!(r&&r.items&&r.items.length>0),N=n.conversation||[],u=n.timeline||[],E=[...N.filter(t=>t.role==="user").map(t=>({who:"you",text:t.text,t:t.t||0})),...u.map(t=>({...t,who:"agent"}))].sort((t,l)=>(t.t||0)-(l.t||0));return s.jsxs("div",{className:"narrow",children:[p,d&&s.jsx("p",{className:"badge bad",style:{marginBottom:12},children:d}),s.jsxs("div",{className:"card pad-md",children:[s.jsxs("div",{className:"row between wrap gap-12",children:[s.jsxs("div",{style:{minWidth:0},children:[s.jsx("h1",{className:"h",style:{margin:0},children:a.title||W(a.cwd)||a.session_id}),a.cwd&&s.jsx("div",{className:"dim mono",style:{fontSize:12,...x},title:a.cwd,children:a.cwd})]}),s.jsxs("div",{className:"row gap-8",style:{flexShrink:0},children:[a.model&&s.jsx("span",{className:"badge mono",children:a.model}),a.agent&&s.jsx("span",{className:"badge",children:a.agent}),s.jsxs("span",{className:`badge ${y.cls}`,children:[s.jsx("span",{className:"dot"}),y.label]})]})]}),a.phase&&s.jsxs("div",{className:"row gap-8",style:{marginTop:10,fontSize:14},children:[s.jsx(b,{name:"activity"}),s.jsx("span",{style:x,children:a.phase})]}),s.jsxs("div",{className:"row wrap",style:{gap:16,marginTop:12,fontSize:13,color:"var(--text-2)"},children:[a.tokens>0&&s.jsxs("span",{children:[S(a.tokens)," tok"]}),a.cost>0&&s.jsxs("span",{children:["$",a.cost.toFixed(2)]}),a.turn_started_at?s.jsx("span",{children:s.jsx(A,{startedAt:a.turn_started_at})}):null,s.jsxs("span",{className:"dim",children:["updated ",_(a.updated_at)," ago"]})]}),(a.error||a.blocked_on)&&s.jsx("div",{style:{marginTop:10},children:s.jsx("span",{className:"badge bad",style:{maxWidth:"100%",...x},children:a.error||a.blocked_on})})]}),(j||g)&&s.jsxs("div",{className:"grid gap-12",style:{marginTop:12,gridTemplateColumns:j&&g?"minmax(0, 1fr) minmax(0, 1fr)":"1fr"},children:[j&&s.jsxs("div",{className:"card pad-md",children:[s.jsx("div",{className:"card-head",children:s.jsxs("h3",{children:["Files touched ",s.jsxs("span",{className:"dim",children:["(",c.count,")"]})]})}),s.jsx("div",{className:"stack",style:{gap:6,marginTop:8},children:c.items.map(t=>s.jsxs("div",{className:"row between gap-12",style:{fontSize:13},children:[s.jsx("span",{className:"mono",style:{...x,minWidth:0,flex:1},title:t.file,children:t.file}),s.jsxs("span",{style:{flexShrink:0},children:[s.jsxs("span",{style:{color:"var(--good)"},children:["+",t.additions]})," ",s.jsxs("span",{style:{color:"var(--bad)"},children:["−",t.deletions]})]})]},t.file))})]}),g&&s.jsxs("div",{className:"card pad-md",children:[s.jsx("div",{className:"card-head",children:s.jsxs("h3",{children:["Plan"," ",s.jsxs("span",{className:"dim",children:["(",r.done,"/",r.total,")"]})]})}),s.jsx("div",{className:"stack",style:{gap:6,marginTop:8},children:r.items.map((t,l)=>s.jsxs("div",{className:"row gap-8",style:{fontSize:13},children:[s.jsx("span",{className:`feed-dot ${t.status==="completed"?"ok":t.status==="in_progress"?"acc":""}`}),s.jsx("span",{style:{textDecoration:t.status==="completed"?"line-through":"none",color:t.status==="completed"?"var(--text-3)":"inherit"},children:t.content})]},l))})]})]}),s.jsxs("div",{className:"card pad-md",style:{marginTop:12},children:[s.jsxs("div",{className:"card-head",style:{justifyContent:"space-between",marginBottom:12},children:[s.jsx("h3",{children:"Timeline"}),u.length>0&&s.jsx("button",{className:"btn ghost sm",onClick:()=>$(t=>!t),children:v?"Show conversation":`Show all ${u.length} steps`})]}),v?s.jsx("div",{className:"stack gap-12",children:E.map((t,l)=>s.jsx(F,{rec:t},l))}):s.jsx(B,{turns:N})]})]})}export{G as default};
@@ -1 +1 @@
1
- import{u,a as h,j as a}from"./index-DNQE5ydy.js";import"./react-DOpiTn5v.js";function w({kind:o,addr:n,isOpen:s,onToggle:e,className:i,style:l,head:r,toggleCol:c=null,expandClassName:x="law-expand",renderBody:m,srcLine:j}){const{data:d}=u(()=>s?h.item(o,n):Promise.resolve(null),[s,n]),t=s&&a.jsxs("div",{className:x,children:[d?m(d):a.jsx("p",{className:"dim",children:"Loading…"}),a.jsx("div",{className:"law-srcline",children:j})]});return c?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:i,style:l,children:[a.jsx("button",{className:"law-disclosure",onClick:e,"aria-expanded":s,children:r}),a.jsx("span",{className:"toggle-col",children:c})]}),t]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{className:i,style:l,onClick:e,"aria-expanded":s,children:r}),t]})}export{w as C};
1
+ import{u,a as h,j as a}from"./index-Py_IQjgK.js";import"./react-DOpiTn5v.js";function w({kind:o,addr:n,isOpen:s,onToggle:e,className:i,style:l,head:r,toggleCol:c=null,expandClassName:x="law-expand",renderBody:m,srcLine:j}){const{data:d}=u(()=>s?h.item(o,n):Promise.resolve(null),[s,n]),t=s&&a.jsxs("div",{className:x,children:[d?m(d):a.jsx("p",{className:"dim",children:"Loading…"}),a.jsx("div",{className:"law-srcline",children:j})]});return c?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:i,style:l,children:[a.jsx("button",{className:"law-disclosure",onClick:e,"aria-expanded":s,children:r}),a.jsx("span",{className:"toggle-col",children:c})]}),t]}):a.jsxs(a.Fragment,{children:[a.jsx("button",{className:i,style:l,onClick:e,"aria-expanded":s,children:r}),t]})}export{w as C};
@@ -1,4 +1,4 @@
1
- import{u as R,j as e,E as O,L as T,I as N,a as p}from"./index-DNQE5ydy.js";import{r as c}from"./react-DOpiTn5v.js";const W=700;function D(r){return r.startsWith("@@")||r.startsWith("+++")||r.startsWith("---")?"hunk":r.startsWith("+")?"add":r.startsWith("-")?"del":"ctx"}function A({onMutated:r,dataRev:w}){const{data:i,error:u,reload:y}=R(()=>p.diff(),[w]),[x,h]=c.useState(!1),[f,m]=c.useState(""),[l,g]=c.useState(()=>new Set),[v,j]=c.useState(()=>new Set);c.useEffect(()=>{i&&(g(new Set),j(new Set(i.files.map(s=>s.rel))))},[i]);const S=s=>g(t=>{const a=new Set(t);return a.has(s)?a.delete(s):a.add(s),a}),$=()=>g(s=>s.size===i.files.length?new Set:new Set(i.files.map(t=>t.rel))),k=async()=>{h(!0);try{const{job_id:s}=await p.action("export");let t;do await new Promise(a=>setTimeout(a,W)),t=await p.job(s);while(t.status==="running");m(t.status==="done"?"Improvements file written.":"Export failed. See logs.")}catch(s){m(s.message)}finally{h(!1)}},E=async()=>{const s=[...l],t=s.filter(n=>{var o;return((o=i.files.find(I=>I.rel===n))==null?void 0:o.status)==="added"}),a=t.length?`Restoring will DELETE ${t.length} deployed-only file(s):
1
+ import{u as R,j as e,E as O,L as T,I as N,a as p}from"./index-Py_IQjgK.js";import{r as c}from"./react-DOpiTn5v.js";const W=700;function D(r){return r.startsWith("@@")||r.startsWith("+++")||r.startsWith("---")?"hunk":r.startsWith("+")?"add":r.startsWith("-")?"del":"ctx"}function A({onMutated:r,dataRev:w}){const{data:i,error:u,reload:y}=R(()=>p.diff(),[w]),[x,h]=c.useState(!1),[f,m]=c.useState(""),[l,g]=c.useState(()=>new Set),[v,j]=c.useState(()=>new Set);c.useEffect(()=>{i&&(g(new Set),j(new Set(i.files.map(s=>s.rel))))},[i]);const S=s=>g(t=>{const a=new Set(t);return a.has(s)?a.delete(s):a.add(s),a}),$=()=>g(s=>s.size===i.files.length?new Set:new Set(i.files.map(t=>t.rel))),k=async()=>{h(!0);try{const{job_id:s}=await p.action("export");let t;do await new Promise(a=>setTimeout(a,W)),t=await p.job(s);while(t.status==="running");m(t.status==="done"?"Improvements file written.":"Export failed. See logs.")}catch(s){m(s.message)}finally{h(!1)}},E=async()=>{const s=[...l],t=s.filter(n=>{var o;return((o=i.files.find(I=>I.rel===n))==null?void 0:o.status)==="added"}),a=t.length?`Restoring will DELETE ${t.length} deployed-only file(s):
2
2
  ${t.join(`
3
3
  `)}
4
4
 
@@ -1 +1 @@
1
- import{u as t,j as s,E as i,I as d,L as o,a as h}from"./index-DNQE5ydy.js";import{r as m}from"./react-DOpiTn5v.js";function p({group:e}){const a=e.problems.length===0,[n,r]=m.useState(!a);return s.jsxs("div",{className:`card check ${a?"":"bad"} ${n?"open":""}`,children:[s.jsxs("button",{className:"check-head",onClick:()=>r(l=>!l),disabled:a,style:{cursor:a?"default":"pointer"},"aria-expanded":a?void 0:n,children:[s.jsx("span",{className:`feed-dot ${a?"ok":"bad"}`,style:{width:9,height:9}}),s.jsx("h3",{children:e.label}),s.jsxs("span",{className:`badge ${a?"ok":"bad"}`,children:[s.jsx("span",{className:"dot"}),a?"clean":`${e.problems.length} problem${e.problems.length===1?"":"s"}`]}),!a&&s.jsx(d,{name:"chevron",className:"chev glyph"})]}),!a&&n&&s.jsx("div",{className:"check-body",children:e.problems.map(l=>s.jsxs("div",{className:"problem",children:[s.jsx("span",{className:"x",children:"✕"}),s.jsx("span",{children:l})]},l))})]})}function j(){const{data:e,error:a,reload:n,setData:r}=t(()=>h.doctor(),[]),l=()=>{r(null),n()};return a?s.jsx(i,{error:a}):s.jsxs("div",{className:"narrow",children:[s.jsxs("div",{className:"head-row mb-16",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"h",children:"Doctor"}),s.jsx("p",{className:"sub",children:"Every check builds each theme in a sandbox and validates the result: token resolution, link integrity, parity, and drift."})]}),s.jsxs("button",{className:"btn ghost",onClick:l,disabled:!e,children:[s.jsx(d,{name:"refresh"}),e?"Re-run checks":"Running…"]})]}),e?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"card pad-md mb-16",children:s.jsxs("div",{className:"row wrap between gap-12",children:[s.jsxs("div",{className:"row",style:{gap:10,flexWrap:"wrap"},children:[s.jsxs("span",{className:"dim mono",style:{fontSize:12},children:["validated ",e.themes.length," theme",e.themes.length===1?"":"s"]}),e.themes.map(c=>s.jsx("span",{className:"badge",style:{textTransform:"capitalize"},children:c},c))]}),e.ok?s.jsxs("span",{className:"badge ok",children:[s.jsx("span",{className:"dot"}),"all clean"]}):s.jsxs("span",{className:"badge bad",children:[s.jsx("span",{className:"dot"}),e.problems.length," problem",e.problems.length===1?"":"s"]})]})}),s.jsx("div",{className:"stack gap-12",children:e.groups.map(c=>s.jsx(p,{group:c},c.label))})]}):s.jsx(o,{label:"Running every check (builds each theme in a sandbox)…"})]})}export{j as default};
1
+ import{u as t,j as s,E as i,I as d,L as o,a as h}from"./index-Py_IQjgK.js";import{r as m}from"./react-DOpiTn5v.js";function p({group:e}){const a=e.problems.length===0,[n,r]=m.useState(!a);return s.jsxs("div",{className:`card check ${a?"":"bad"} ${n?"open":""}`,children:[s.jsxs("button",{className:"check-head",onClick:()=>r(l=>!l),disabled:a,style:{cursor:a?"default":"pointer"},"aria-expanded":a?void 0:n,children:[s.jsx("span",{className:`feed-dot ${a?"ok":"bad"}`,style:{width:9,height:9}}),s.jsx("h3",{children:e.label}),s.jsxs("span",{className:`badge ${a?"ok":"bad"}`,children:[s.jsx("span",{className:"dot"}),a?"clean":`${e.problems.length} problem${e.problems.length===1?"":"s"}`]}),!a&&s.jsx(d,{name:"chevron",className:"chev glyph"})]}),!a&&n&&s.jsx("div",{className:"check-body",children:e.problems.map(l=>s.jsxs("div",{className:"problem",children:[s.jsx("span",{className:"x",children:"✕"}),s.jsx("span",{children:l})]},l))})]})}function j(){const{data:e,error:a,reload:n,setData:r}=t(()=>h.doctor(),[]),l=()=>{r(null),n()};return a?s.jsx(i,{error:a}):s.jsxs("div",{className:"narrow",children:[s.jsxs("div",{className:"head-row mb-16",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"h",children:"Doctor"}),s.jsx("p",{className:"sub",children:"Every check builds each theme in a sandbox and validates the result: token resolution, link integrity, parity, and drift."})]}),s.jsxs("button",{className:"btn ghost",onClick:l,disabled:!e,children:[s.jsx(d,{name:"refresh"}),e?"Re-run checks":"Running…"]})]}),e?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"card pad-md mb-16",children:s.jsxs("div",{className:"row wrap between gap-12",children:[s.jsxs("div",{className:"row",style:{gap:10,flexWrap:"wrap"},children:[s.jsxs("span",{className:"dim mono",style:{fontSize:12},children:["validated ",e.themes.length," theme",e.themes.length===1?"":"s"]}),e.themes.map(c=>s.jsx("span",{className:"badge",style:{textTransform:"capitalize"},children:c},c))]}),e.ok?s.jsxs("span",{className:"badge ok",children:[s.jsx("span",{className:"dot"}),"all clean"]}):s.jsxs("span",{className:"badge bad",children:[s.jsx("span",{className:"dot"}),e.problems.length," problem",e.problems.length===1?"":"s"]})]})}),s.jsx("div",{className:"stack gap-12",children:e.groups.map(c=>s.jsx(p,{group:c},c.label))})]}):s.jsx(o,{label:"Running every check (builds each theme in a sandbox)…"})]})}export{j as default};
@@ -1 +1 @@
1
- import{j as s}from"./index-DNQE5ydy.js";import"./react-DOpiTn5v.js";function u({value:e,onChange:r,label:a,placeholder:t,className:i}){return s.jsx("input",{className:i||"lib-filter",type:"text",value:e,onChange:n=>r(n.target.value),placeholder:t,"aria-label":a||t})}export{u as F};
1
+ import{j as s}from"./index-Py_IQjgK.js";import"./react-DOpiTn5v.js";function u({value:e,onChange:r,label:a,placeholder:t,className:i}){return s.jsx("input",{className:i||"lib-filter",type:"text",value:e,onChange:n=>r(n.target.value),placeholder:t,"aria-label":a||t})}export{u as F};