geneseed 3.17.0 → 3.18.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 (150) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +17 -3
  3. package/SHIPPED.md +3 -3
  4. package/adapters/claude-code/skills/geneseed/SKILL.md +1 -1
  5. package/adapters/opencode/README.md +2 -2
  6. package/adapters/opencode/plugins/geneseed-context.js +19 -17
  7. package/adapters/opencode/plugins/geneseed-guard.js +7 -7
  8. package/bin/geneseed-cli.mjs +5 -0
  9. package/docs/concepts/exclusions.md +1 -1
  10. package/docs/concepts/skills.md +4 -0
  11. package/docs/extending.md +33 -0
  12. package/docs/guides/read-non-markdown.md +1 -1
  13. package/docs/guides/uninstall.md +1 -1
  14. package/docs/guides/upgrade.md +1 -1
  15. package/docs/guides/wiki.md +4 -4
  16. package/docs/opencode-plugin-setup.md +1 -1
  17. package/docs/reference/env-context.md +2 -2
  18. package/docs/reference/plugin-context.md +2 -2
  19. package/docs/reference/plugin-guard.md +1 -1
  20. package/docs/token-footprint.md +18 -15
  21. package/docs/understand/take-it-out.md +1 -1
  22. package/harness.config.json +1 -1
  23. package/js/README.md +4 -1
  24. package/js/build/args.mjs +22 -20
  25. package/js/build/bundle.mjs +1 -3
  26. package/js/build/emit-claude.mjs +5 -4
  27. package/js/build/emit-opencode.mjs +9 -2
  28. package/js/build/generate.mjs +6 -6
  29. package/js/build/render.mjs +19 -12
  30. package/js/build/source.mjs +82 -7
  31. package/js/build/stubs.mjs +35 -6
  32. package/js/build/themes.mjs +1 -3
  33. package/js/cli-table.json +53 -0
  34. package/js/hosts/hooks-context.mjs +13 -6
  35. package/js/hosts/hosts.mjs +1 -3
  36. package/js/hosts/installs.mjs +13 -7
  37. package/js/hosts/mcp.mjs +1 -1
  38. package/js/hosts/native.mjs +60 -5
  39. package/js/hosts/opencode.mjs +37 -6
  40. package/js/hosts/settings.mjs +1 -0
  41. package/js/hosts/shim.mjs +1 -0
  42. package/js/inspect/checks-authoring.mjs +4 -1
  43. package/js/inspect/checks-repo.mjs +164 -2
  44. package/js/inspect/diff.mjs +5 -1
  45. package/js/inspect/doctor.mjs +2 -1
  46. package/js/inspect/inventory.mjs +7 -9
  47. package/js/inspect/scorecard-checks.mjs +571 -0
  48. package/js/inspect/scorecard-svg.mjs +85 -0
  49. package/js/inspect/scorecard.mjs +839 -0
  50. package/js/lib/json.mjs +1 -1
  51. package/js/maintain/migrate.mjs +2 -1
  52. package/js/maintain/uninstall.mjs +2 -3
  53. package/js/maintain/update.mjs +10 -3
  54. package/js/ui/menu.mjs +2 -2
  55. package/js/ui/tui.mjs +1 -0
  56. package/js/web/api.mjs +2 -0
  57. package/js/web/catalog.mjs +24 -7
  58. package/js/web/daemon.mjs +2 -1
  59. package/js/web/routes.mjs +2 -0
  60. package/js/web/server.mjs +1 -1
  61. package/js/web/user-files.mjs +1 -0
  62. package/package.json +11 -3
  63. package/registry.json +12 -75
  64. package/src/AGENT.md.tmpl +13 -22
  65. package/src/agents/docs.md +1 -1
  66. package/src/agents/researcher.md +1 -1
  67. package/src/bricks/bruno-test.md +2 -2
  68. package/src/bricks/ci-fix.md +3 -3
  69. package/src/bricks/deps-audit.md +3 -3
  70. package/src/bricks/migration-plan.md +2 -2
  71. package/src/doctrines/process.md +2 -2
  72. package/src/laws/universal.md +2 -2
  73. package/src/skills/brainstorm.md +14 -10
  74. package/src/skills/bruno.md +84 -0
  75. package/src/skills/codebase-design.md +41 -23
  76. package/src/skills/daydream/SKILL.md +3 -3
  77. package/src/skills/daydream/VENDOR.md +2 -2
  78. package/src/skills/daydream/instructions.md +1 -1
  79. package/src/skills/debug/ci.md +11 -0
  80. package/src/skills/debug.md +11 -8
  81. package/src/skills/dependencies.md +65 -0
  82. package/src/skills/develop.md +9 -4
  83. package/src/skills/document-project.md +27 -22
  84. package/src/skills/geneseed-code-review.md +13 -8
  85. package/src/skills/geneseed.md +4 -1
  86. package/src/skills/git-history.md +78 -0
  87. package/src/skills/handoff.md +4 -3
  88. package/src/skills/parallel-agents.md +1 -0
  89. package/src/skills/plan.md +5 -1
  90. package/src/skills/prototype.md +10 -7
  91. package/src/skills/research.md +6 -1
  92. package/src/skills/rule/consolidate.md +32 -0
  93. package/src/skills/rule.md +14 -4
  94. package/src/skills/security-audit.md +1 -1
  95. package/src/skills/ship.md +8 -5
  96. package/src/skills/teach.md +5 -3
  97. package/src/skills/wayfinder.md +19 -16
  98. package/src/skills/wiki.md +2 -2
  99. package/themes/_TEMPLATE.json +7 -16
  100. package/themes/biker.json +7 -16
  101. package/themes/commentator.json +7 -16
  102. package/themes/cyberpunk.json +7 -16
  103. package/themes/gamer.json +7 -16
  104. package/themes/imperial.json +7 -16
  105. package/themes/joker.json +7 -16
  106. package/themes/marvin.json +7 -16
  107. package/themes/mean.json +7 -16
  108. package/themes/military.json +7 -16
  109. package/themes/neutral.json +7 -16
  110. package/themes/pirate.json +7 -16
  111. package/themes/sports.json +7 -16
  112. package/themes/verstappen.json +7 -16
  113. package/themes/wizard.json +7 -16
  114. package/web/dist/assets/{Activity-DonKN1pi.js → Activity-4M4VQJOh.js} +1 -1
  115. package/web/dist/assets/{ActivityDetail-e47a3cdE.js → ActivityDetail-CnmDs43F.js} +1 -1
  116. package/web/dist/assets/{Dashboard-Cr7i0PsO.js → Dashboard-lTaH58R9.js} +2 -2
  117. package/web/dist/assets/{Docs-Lne3nuzD.js → Docs-DU5znu5f.js} +1 -1
  118. package/web/dist/assets/FilterInput-BSfpStOZ.js +1 -0
  119. package/web/dist/assets/{GreenhouseView-4CbIuTpl.js → GreenhouseView-BxO84bKX.js} +1 -1
  120. package/web/dist/assets/{Installs-CIzbV1Ks.js → Installs-B1WcObxK.js} +1 -1
  121. package/web/dist/assets/{JournalView-BlBfuvzj.js → JournalView-0YNKcaaD.js} +1 -1
  122. package/web/dist/assets/{Laws-B-pjcjHr.js → Laws-DnDpRwpE.js} +1 -1
  123. package/web/dist/assets/Library-DBkKsBMe.js +1 -0
  124. package/web/dist/assets/{Loops-DIOxW1xH.js → Loops-P-6RCdzS.js} +1 -1
  125. package/web/dist/assets/Markdown-C6fRd4A4.js +67 -0
  126. package/web/dist/assets/{OperatorHudView-D7S7z7CJ.js → OperatorHudView-BZZ3uJPH.js} +1 -1
  127. package/web/dist/assets/{Personal-Ws3v35AB.js → Personal-BoVw6OCW.js} +1 -1
  128. package/web/dist/assets/{Tabs-6Z1eziAq.js → Tabs-VYLhUTiX.js} +1 -1
  129. package/web/dist/assets/{activity-Dr7ZMBI3.js → activity-dcg5vF9j.js} +1 -1
  130. package/web/dist/assets/{drawable-ATNeYKbT.js → drawable-CdNARIKC.js} +1 -1
  131. package/web/dist/assets/{index-CDg5XUhG.js → index-hsabpYzv.js} +2 -2
  132. package/web/dist/assets/react-DRhoX0kS.js +9 -0
  133. package/web/dist/assets/{usePoll-DD8VjtSg.js → usePoll-BmR631BB.js} +1 -1
  134. package/web/dist/index.html +2 -2
  135. package/src/skills/bruno-collection-generator.md +0 -52
  136. package/src/skills/bruno-test-writer.md +0 -51
  137. package/src/skills/ci-fix.md +0 -49
  138. package/src/skills/consolidate-memory.md +0 -50
  139. package/src/skills/deps-audit.md +0 -46
  140. package/src/skills/domain-modeling.md +0 -27
  141. package/src/skills/git-archaeology.md +0 -36
  142. package/src/skills/git-rescue.md +0 -58
  143. package/src/skills/migrate.md +0 -34
  144. package/src/skills/opencode-theme.md +0 -42
  145. package/src/skills/repo-map.md +0 -25
  146. package/src/skills/tickets.md +0 -33
  147. package/web/dist/assets/FilterInput-CVyqmYWM.js +0 -1
  148. package/web/dist/assets/Library-x8Nzg6yq.js +0 -1
  149. package/web/dist/assets/Markdown-X2a3qvOh.js +0 -38
  150. package/web/dist/assets/react-B9Z_tXRV.js +0 -8
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Runs the pre-deployment inspection — correctness first, then quality, before it ships.",
18
18
  "DESC_TESTER": "Writes, runs, and diagnoses the live-fire tests.",
19
19
  "DESC_DEVELOPER": "Builds the scoped fix in its own sector, self-checks it once, then hands it to the tester for confirmation.",
20
- "DESC_THEME": "Issue your own OpenCode colour scheme — select or adjust a palette, receive solid and transparent variants, retained through every rebuild.",
21
20
  "DESC_ARCHITECT": "Draws the operation order before a round is fired.",
22
21
  "DESC_DOCS": "Files the after-action report and field manual once the work lands.",
23
22
  "DESC_SECURITY": "Runs the threat assessment on anything touching the security perimeter.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for the field — how it holds under contact, its sustainment, and the load on those who run it.",
35
34
  "DESC_HISTORIAN": "Brings the after-action record — what was tried before, how it went, and the lesson for this call.",
36
35
  "DESC_PLAN": "Write the op order before a non-trivial task; track progress as it advances.",
37
- "DESC_MIGRATE": "Advance to the new version without losses — read the brief, one change at a time, tests green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Run the investigation on the record — when the regression hit or why the code's there — bisect, blame, pickaxe, no rounds fired.",
39
- "DESC_GIT_RESCUE": "Recover a downed or fouled repo, or rewrite history clean — reflog, abort, rebase, every move behind a backup.",
40
- "DESC_REPO_MAP": "Map the terrain — a single-read recon map of the repository, kept current.",
36
+ "DESC_DEPENDENCIES": "Survey every dependency — outdated, vulnerable and reachable, abandoned, dead weight — into a risk-ordered upgrade plan, then advance one change at a time, tests green between each.",
37
+ "DESC_GIT_HISTORY": "Run the investigation on the record, no rounds fired — bisect, blame, pickaxe — or recover a downed or fouled repo and rewrite history clean, reflog, abort, rebase, every move behind a backup.",
41
38
  "DESC_DOCUMENT_PROJECT": "Draft the PRD, design system, architecture and AGENTS.md from the current code, correct the doc tree, and regenerate the offline HTML overview.",
42
39
  "DESC_COMMIT": "Stage only what the mission touched and log a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Inspect a diff or PR — correctness first, craft second.",
44
41
  "DESC_BRAINSTORM": "Turn a raw objective into an approved plan before any code is cut.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — heavy behaviour behind a narrow interface, with the seam placed by design, not left to chance.",
46
- "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural decision as an ADR.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the glossary that names them — heavy behaviour behind a narrow interface at a seam placed by design, a living GLOSSARY.md, an ADR per hard-to-reverse decision.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split an order into tracer-bullet tickets with explicit blocking edges, each sized for one fresh tasking.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn, never to field.",
50
45
  "DESC_ROAST_ME": "Adversarial AAR on any artifact — blunt, specific, always actionable.",
51
46
  "DESC_FRESH_EYES": "Task a clean-slate inspector briefed only on the original objective and the delivered work; it sets the pass criteria blind, then rules mission-met or not — uncontaminated by the operator's own confidence.",
52
47
  "ROAST_PERSONA": "a hard-nosed drill instructor who has watched this exact mistake get people killed",
53
48
  "DESC_COUNCIL": "Convene a panel of opposing positions to war-game a decision, then deliver a verdict with the dissent on record.",
54
- "DESC_DEBUG": "Hunt the fault by evidence — reproduce, isolate, root-cause, confirm the kill.",
49
+ "DESC_DEBUG": "Hunt the fault by evidence — a repro that fails on this bug first, isolate, root-cause, confirm the kill — a red CI run included, reproduced under CI's own conditions.",
55
50
  "DESC_REFACTOR": "Restructure without changing behaviour — one named move, tests green throughout.",
56
51
  "DESC_PONYTAIL": "Minimum viable solution that holds — least code, shortest path; issued kit before custom build, one line before fifty. lite/full/ultra.",
57
52
  "DESC_PARALLEL_AGENTS": "Deploy independent tasks to concurrent units, then consolidate the results.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire an SOP — reuse first, trigger before procedure, tested against neighbouring SOPs, every satellite registered, doctor green.",
67
62
  "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.",
68
- "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.",
69
- "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.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Hand over the watch: snapshot state so a fresh operator resumes in one read.",
72
64
  "DESC_SHIP": "Open a PR with a clear sitrep, or finish and merge the branch, once the change is verified.",
73
65
  "DESC_RELEASE": "Cut a release — bump the version, update the changelog, tag — all three in step.",
74
66
  "DESC_INGEST": "Convert a PDF, Office, or web document to clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Gather intel from open sources — sweep wide, then confirm every claim against independent reporting before you act on it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "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 — and keep tending the logbook: merge, retire, promote.",
78
70
  "DESC_PROFILE": "File the commander's dossier in PROFILE.md — role, theatre, preferred briefing style; identity only, standing orders route to user-rules.md.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and issue the user's own OpenCode colour theme.",
80
72
  "DESC_REVIEW_RESPONSE": "Action the review like an AAR — verify each point, then adopt it or push back with reasons.",
81
73
  "LEX_SEALED_SECRETS": "Sealed Orders · Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Mission, One Move · One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "Command may maintain an intel archive on this machine — a vault of cross-referenced briefs that outlasts any single operation.",
146
138
  "DESC_WIKI": "Work the intel archives — pull the relevant brief before acting, file new intel cross-referenced, route uncertain finds through the inbox.",
147
139
  "DESC_MCP": "Build or harden an MCP server — recon the spec, design task-shaped tools, test with the Inspector, and prove it with evals.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Build a Bruno collection from the routes, an OpenAPI brief, curl, or an endpoint roster — requests, environments, docs, every secret a placeholder.",
149
- "DESC_BRUNO_TEST_WRITER": "Write Bruno tests for a request or the whole collection — status, shape, chaining — no secret leaves the wire, no assertion without intel.",
140
+ "DESC_BRUNO": "Build, reorganise, or write tests for a Bruno collection — requests, environments, assertions, chaining — every secret a placeholder.",
150
141
  "DESC_PROSE": "Write prose for a human, not a machine — cut the filler, active voice, vary cadence, trust the reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with intent — palette, type, and layout chosen for this brief, not the standard-issue defaults; plan, critique, and keep one bold move.",
152
143
  "DESC_WORKFLOW": "Execute a saved op-order that commands your units by the numbers — parallel sweeps, staged phases, and confirmation, in one deterministic mission.",
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Reviews a change for correctness and quality before it merges.",
18
18
  "DESC_TESTER": "Writes, runs, and diagnoses tests.",
19
19
  "DESC_DEVELOPER": "Implements the scoped change in an isolated worktree, self-checked and ready for the tester.",
20
- "DESC_THEME": "Create your own OpenCode colour theme — pick or tweak a palette, get solid and transparent variants, kept across rebuilds.",
21
20
  "DESC_ARCHITECT": "Produces a design or implementation plan before code is written.",
22
21
  "DESC_DOCS": "Writes and updates user-facing documentation after code lands.",
23
22
  "DESC_SECURITY": "Audits changes that touch the security surface.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for running it in production — reliability, observability, rollback, and the on-call burden.",
35
34
  "DESC_HISTORIAN": "Brings the precedent — what was tried before, how it went, and the lesson for this decision.",
36
35
  "DESC_PLAN": "Write a plan to a file before executing a non-trivial task; track progress as you go.",
37
- "DESC_MIGRATE": "Upgrade a dependency or API safely — read the guide, one change at a time, tests green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Investigate the history to find when a regression landed or why code exists — bisect, blame, and the pickaxe, read-only.",
39
- "DESC_GIT_RESCUE": "Recover a broken or messy repo, or rewrite history safely — reflog, undo, and rebase behind a backup branch.",
40
- "DESC_REPO_MAP": "Create and maintain a one-read orientation map of the repository.",
36
+ "DESC_DEPENDENCIES": "Audit the dependencies — outdated, vulnerable, abandoned, unused — into a risk-ordered plan, then upgrade one change at a time with the tests green between.",
37
+ "DESC_GIT_HISTORY": "Learn from the git history read-only — bisect, blame, pickaxe — or recover and rewrite it safely — reflog, undo, rebase behind a backup branch.",
41
38
  "DESC_DOCUMENT_PROJECT": "Write the project's PRD, design system, architecture and AGENTS.md from the code, reconcile the doc tree, and regenerate the offline HTML overview.",
42
39
  "DESC_COMMIT": "Stage the right paths and write a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Review a diff or PR for correctness first, quality second.",
44
41
  "DESC_BRAINSTORM": "Turn a raw idea into an approved design before any code is written.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, placed at a deliberate seam.",
46
- "DESC_DOMAIN_MODELING": "Keep a living domain glossary (CONTEXT.md) and seal each structural decision as an ADR.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the domain language around them — small interfaces at deliberate seams, a living GLOSSARY.md, an ADR for each hard-to-reverse decision.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split a spec into tracer-bullet tickets with explicit blocking edges, each sized for one fresh session.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn, never to keep.",
50
45
  "DESC_ROAST_ME": "Adversarially critique any artifact — brutal, specific, always actionable.",
51
46
  "DESC_FRESH_EYES": "Hand a context-free agent only the original task and the finished work; it derives the acceptance bar blind, then rules whether the work meets it — independent of the maker's certainty.",
52
47
  "ROAST_PERSONA": "a blunt, no-nonsense senior reviewer who has watched this exact thing fail before",
53
48
  "DESC_COUNCIL": "Convene a panel of distinct viewpoints to debate a decision or change, then synthesise a verdict with the dissent preserved.",
54
- "DESC_DEBUG": "Find and fix a bug by evidence — reproduce, isolate, root-cause, verify.",
49
+ "DESC_DEBUG": "Find and fix a bug by evidence — a command that fails on it, isolate, root-cause, verify — a red CI run included, reproduced under CI's own conditions.",
55
50
  "DESC_REFACTOR": "Improve code structure without changing behaviour — one named move, tests green throughout.",
56
51
  "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.",
57
52
  "DESC_PARALLEL_AGENTS": "Fan independent subtasks out to concurrent subagents, then converge the results.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "DESC_SKILL_FORGE": "Author, sharpen, merge, or retire a skill — reuse first, trigger before procedure, tested against its neighbours, every satellite registered, doctor green.",
67
62
  "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.",
68
- "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.",
69
- "DESC_DEPS_AUDIT": "Survey the dependencies — outdated, vulnerable and reachable, abandoned, unused — into a risk-ordered upgrade plan for migrate to execute, installing nothing.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Snapshot task state so a fresh context — or another agent — can resume in one read.",
72
64
  "DESC_SHIP": "Open a pull request with a structured body, or finish and merge a branch, once the change is verified.",
73
65
  "DESC_RELEASE": "Cut a release — bump the version, update the changelog, and tag — keeping all three in sync.",
74
66
  "DESC_INGEST": "Convert a PDF, Office, or web document into clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Answer a question from the open web — search widely, then verify each claim against independent sources before citing it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "DESC_RULE": "Ask first whether the user wants a standing rule or a durable memory, then write the memory or pressure-test the rule before adopting it in user-rules.md — and tend the memory set: merge, retire, promote.",
78
70
  "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.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and make the user's own OpenCode colour theme.",
80
72
  "DESC_REVIEW_RESPONSE": "Respond to review feedback with rigour — verify each point, then apply it or decline it with reasons.",
81
73
  "LEX_SEALED_SECRETS": "Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "The user may keep a personal knowledge base on this machine — an Obsidian vault, or any folder of interlinked markdown notes — that outlives any single repository.",
146
138
  "DESC_WIKI": "Consult and grow the user's personal knowledge base — find the governing note before acting, write well-linked notes back, file them where they belong.",
147
139
  "DESC_MCP": "Build or harden a Model Context Protocol server — research the spec, design task-shaped tools, test with the Inspector, and prove it with evaluations.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Build a Bruno API collection — requests, environments, request docs — from backend routes, an OpenAPI snippet, curl commands, or an endpoint list, with every secret as a placeholder.",
149
- "DESC_BRUNO_TEST_WRITER": "Write Bruno tests for a request or a whole collection — status, response shape, chaining — without leaking a secret or asserting on a field the evidence does not support.",
140
+ "DESC_BRUNO": "Build, reorganise or test a Bruno API collection — requests, environments, assertions, chaining — with every secret a placeholder.",
150
141
  "DESC_PROSE": "Write prose for a human that doesn't read like a model — cut filler, use active voice, vary rhythm, and trust the reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with a point of view — choose palette, type, and layout for this brief, not the templated defaults, then critique and cut to one bold move.",
152
143
  "DESC_WORKFLOW": "Run a saved, code-driven workflow that orchestrates subagents deterministically — parallel fan-out, staged pipelines, and verification in a single pass.",
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Inspects the rigging before she sails — correctness first, craft second.",
18
18
  "DESC_TESTER": "Rigs the trials, runs them, and reads the wreckage when they fail.",
19
19
  "DESC_DEVELOPER": "Builds the scoped fix in its own berth, tries it once, then hands it to the tester.",
20
- "DESC_THEME": "Paint yer own OpenCode colours — choose or tweak a palette, get solid and see-through flavours, kept safe through every rebuild.",
21
20
  "DESC_ARCHITECT": "Charts the course before a single sail is set.",
22
21
  "DESC_DOCS": "Keeps the ship's log and the charts once the work is done.",
23
22
  "DESC_SECURITY": "Watches for boarders — audits anything touching the security deck.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for the ship at sea — how she holds in a blow, her upkeep, and the watch borne by the crew.",
35
34
  "DESC_HISTORIAN": "Keeps the log of old voyages — what was tried before, how it went, and the lesson for this run.",
36
35
  "DESC_PLAN": "Chart the run before a non-trivial task; mark progress as you sail.",
37
- "DESC_MIGRATE": "Sail to the new version without springing a leak — read the charts, one change at a time, trials green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Dive the ship's log for when she sprang a leak or why a plank was laid — bisect, blame, and the pickaxe, hands off the cargo.",
39
- "DESC_GIT_RESCUE": "Right a wrecked or fouled hold, or rewrite her log without sinkin' her — reflog and undo, every move with a backup line rigged.",
40
- "DESC_REPO_MAP": "Chart the waters — a single-read map of the repository, kept current.",
36
+ "DESC_DEPENDENCIES": "Survey every dependency aboard — outdated, rotten and reachable, abandoned, dead weight — into a risk-ordered refit plan, then take them aboard one change at a time, trials green between each.",
37
+ "DESC_GIT_HISTORY": "Dive the ship's log, hands off the cargo, for when she sprang a leak or why a plank was laid — bisect, blame, pickaxe — or right a wrecked or fouled hold and rewrite her log safely, every move with a backup line rigged.",
41
38
  "DESC_DOCUMENT_PROJECT": "Chart the PRD, design system, architecture and AGENTS.md from the living code, mend the ship's log, and re-draw the offline HTML overview.",
42
39
  "DESC_COMMIT": "Load only the cargo this run touched and seal a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Inspect a diff or petition — correctness first, craft after.",
44
41
  "DESC_BRAINSTORM": "Turn a raw notion into an agreed course before any plank is cut.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — a hold full o' behaviour behind one small hatch, and place the seam a'purpose, not by chance.",
46
- "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.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the crew's own tongue — a hold full o' behaviour behind one small hatch, the seam placed a'purpose, a living GLOSSARY.md, an ADR for every call past undoin'.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split a spec into tracer-bullet tickets with explicit blocking edges, each sized for one fresh watch.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn, never to keep in the hold.",
50
45
  "DESC_ROAST_ME": "Keelhaul any work — blunt, exact, and always actionable.",
51
46
  "DESC_FRESH_EYES": "Press a fresh hand who's seen neither yer logbook nor yer toil — only the original orders and the finished prize — to set the mark blind, then call whether the work meets the orders, free o' the maker's boastin'.",
52
47
  "ROAST_PERSONA": "a grizzled bosun who has watched this exact blunder sink good ships",
53
48
  "DESC_COUNCIL": "Call a council of opposed voices to argue a decision out, then hand down a verdict with the dissent kept in the log.",
54
- "DESC_DEBUG": "Hunt the leak by evidence — reproduce, isolate, find the breach, plug it.",
49
+ "DESC_DEBUG": "Hunt the leak by evidence — a command that springs it first, reproduce, isolate, find the breach, plug it — a red CI run included, reproduced under CI's own weather.",
55
50
  "DESC_REFACTOR": "Rebuild the hull without changing her handling — one named move, trials green throughout.",
56
51
  "DESC_PONYTAIL": "The laziest haul that floats — least code, shortest course; ship's stores before custom rigging, one line before fifty. lite/full/ultra.",
57
52
  "DESC_PARALLEL_AGENTS": "Send several hands on independent tasks at once, then haul in what they bring.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "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.",
67
62
  "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.",
68
- "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.",
69
- "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.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Pass the watch — log the state so a fresh hand takes the wheel in one read.",
72
64
  "DESC_SHIP": "Hoist the colours: open a PR with a clear log, or merge the branch, once she's proven.",
73
65
  "DESC_RELEASE": "Cut a release — raise the version, write the log, seal it with a tag, all in accord.",
74
66
  "DESC_INGEST": "Haul a PDF, Office, or web document into clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Hunt the answer across open waters — search wide, then prove every claim against independent charts before you trust it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "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 — and keep tendin' the log: merge, strike the stale, promote.",
78
70
  "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.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and paint the crew's own OpenCode colours.",
80
72
  "DESC_REVIEW_RESPONSE": "Answer the inspection straight — weigh each mark, then mend it or argue it with cause.",
81
73
  "LEX_SEALED_SECRETS": "Sealed Orders · Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Course, One Tack · One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "The cap'n may keep a map room aboard this machine — a vault o' linked charts an' rutters that outlives any single voyage.",
146
138
  "DESC_WIKI": "Work the cap'n's map room — find the right chart afore ye sail, ink new ones well-linked, an' stow each where it belongs.",
147
139
  "DESC_MCP": "Build or batten down an MCP server — study the charter, shape tools for real work, test with the Inspector, and prove it with trials.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Build a Bruno collection from the routes, an OpenAPI chart, curl, or a manifest of endpoints — requests, environments, docs, every secret a placeholder.",
149
- "DESC_BRUNO_TEST_WRITER": "Write Bruno tests for a request or the whole collection — status, shape, chaining — and let no secret slip overboard.",
140
+ "DESC_BRUNO": "Build, reorganise or test a Bruno collection — requests, environments, assertions, chaining — with every secret kept a placeholder, nothing let slip overboard.",
150
141
  "DESC_PROSE": "Write like a soul, not a machine — heave the filler overboard, keep it active, vary the swell, and trust yer reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with real character — palette, type, and layout cut for this brief, not the common defaults, then trim her down to one bold move.",
152
143
  "DESC_WORKFLOW": "Run a saved set o orders that drives yer crew by the chart — many sent out at once, their plunder gathered an checked in one clean voyage.",
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Runs the pre-game review — correctness first, then form, before it ships.",
18
18
  "DESC_TESTER": "Sets up the drills, runs them, and breaks down the tape when they fail.",
19
19
  "DESC_DEVELOPER": "Builds the scoped play in its own practice field, runs it once, then hands it to the tester.",
20
- "DESC_THEME": "Train up your own OpenCode colour theme — pick or tweak a palette, get solid and transparent kits, they stay through every rebuild.",
21
20
  "DESC_ARCHITECT": "Draws up the game plan before the first snap.",
22
21
  "DESC_DOCS": "Files the post-game report and the playbook once the work lands.",
23
22
  "DESC_SECURITY": "Runs the integrity check on anything touching the security surface.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for game day — how it holds under pressure, the upkeep, and the load on the crew that runs it.",
35
34
  "DESC_HISTORIAN": "Calls up the archive — what was tried before, how it played, and the lesson for this call.",
36
35
  "DESC_PLAN": "Draw the game plan before a non-trivial task; track the score as it goes.",
37
- "DESC_MIGRATE": "Move up to the new version without a turnover — study the tape, one change at a time, tests green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Go to the tape — find when the regression landed or why the code's there — bisect, blame, pickaxe, look but don't touch.",
39
- "DESC_GIT_RESCUE": "Recover a blown or messy repo, or rewrite history clean — reflog, undo, rebase, every move backed up first.",
40
- "DESC_REPO_MAP": "Chart the field — a single-read map of the repository, kept current.",
36
+ "DESC_DEPENDENCIES": "Audit the roster — outdated, injured and reachable, retired, dead weight — into a risk-ordered upgrade plan, then move up one change at a time, tests green between each.",
37
+ "DESC_GIT_HISTORY": "Go to the tape, look but don't touch, to find when the regression landed or why the code's there — bisect, blame, pickaxe — or recover a blown or messy repo and rewrite history clean, every move backed up first.",
41
38
  "DESC_DOCUMENT_PROJECT": "Draw up the PRD, design system, architecture and AGENTS.md from the current code, fix the playbook, and re-cut the offline HTML overview.",
42
39
  "DESC_COMMIT": "Stage only what this drive touched and log a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Review a diff or PR — correctness first, form second.",
44
41
  "DESC_BRAINSTORM": "Turn a raw idea into an agreed game plan before any code is run.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, seam placed by the game plan, not by accident.",
46
- "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural call as an ADR.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the team's own language — a lot behind a small interface, seam placed by the game plan, a living GLOSSARY.md, an ADR for every call too costly to reverse.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split a spec into tracer-bullet tickets with explicit blocking edges, each sized for one fresh drive.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn the play, never to keep.",
50
45
  "DESC_ROAST_ME": "Hard post-game breakdown of any work — blunt, exact, always actionable.",
51
46
  "DESC_FRESH_EYES": "Bring on a fresh official who saw none of the training — just the original game plan and the finished play; they set the scoring line blind, then rule whether it counts, with none of the player's own hype.",
52
47
  "ROAST_PERSONA": "a veteran color commentator who has called this exact blunder cost a championship",
53
48
  "DESC_COUNCIL": "Bring a panel of opposing voices to debate the call, then deliver the verdict with the dissent on the tape.",
54
- "DESC_DEBUG": "Break down the fault on tape — reproduce, isolate, root-cause, confirm the fix.",
49
+ "DESC_DEBUG": "Break down the fault on tape — a play that fails on it first, reproduce, isolate, root-cause, confirm the fix — a red CI run included, reproduced under CI's own conditions.",
55
50
  "DESC_REFACTOR": "Rework the formation without changing the result — one named move, tests green throughout.",
56
51
  "DESC_PONYTAIL": "The laziest play that scores — least code, shortest path; standard kit before custom plays, one line before fifty. lite/full/ultra.",
57
52
  "DESC_PARALLEL_AGENTS": "Send several players on independent plays at once, then regroup the results.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "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.",
67
62
  "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.",
68
- "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.",
69
- "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.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Hand off cleanly — snapshot the state so a fresh player picks up in one read.",
72
64
  "DESC_SHIP": "Make the call: open a PR with a clear recap, or merge the branch, once it's verified.",
73
65
  "DESC_RELEASE": "Ship the release — bump the version, write the recap, tag it, all in sync.",
74
66
  "DESC_INGEST": "Bring a PDF, Office, or web document into clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Work the scouting report — search wide, then confirm every claim against independent sources before you call it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "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 — and keep tending the film room: merge, cut, promote.",
78
70
  "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.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and train up the user's own OpenCode colour theme.",
80
72
  "DESC_REVIEW_RESPONSE": "Take the review like game tape — verify each note, then adjust or push back with reasons.",
81
73
  "LEX_SEALED_SECRETS": "Guard the Signs · Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Play at a Time · One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "The club may keep a playbook on this machine — a vault of cross-referenced plays and scouting that outlasts any single season.",
146
138
  "DESC_WIKI": "Work the franchise playbook — study the relevant play before the snap, draw up new ones cross-referenced, and file them in the right chapter.",
147
139
  "DESC_MCP": "Build or harden an MCP server — study the spec, design task-ready tools, test with the Inspector, and prove it on the evals.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Build a Bruno collection from the routes, an OpenAPI sheet, curl, or an endpoint list — requests, environments, docs, secrets kept as placeholders.",
149
- "DESC_BRUNO_TEST_WRITER": "Write Bruno tests for a request or the full collection — status, shape, chaining — no secret leaks, no call the tape does not back.",
140
+ "DESC_BRUNO": "Build, reorganise or test a Bruno collection — requests, environments, assertions, chaining — secrets kept as placeholders, no leaks, no call the tape doesn't back.",
150
141
  "DESC_PROSE": "Write like a human, not a machine — cut the filler, keep it active, vary the tempo, trust the reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with a point of view — palette, type, and layout built for this brief, not the stock defaults, then cut to one bold move.",
152
143
  "DESC_WORKFLOW": "Run a saved set play that drives your squad on script — parallel runs, staged phases, and a verified result, all in one deterministic drive.",
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Checks the car over before it goes out — correctness first, polish second.",
18
18
  "DESC_TESTER": "Builds the test runs, sends them, and reads the data when they go wrong.",
19
19
  "DESC_DEVELOPER": "Builds the scoped fix in its own garage, checks it once, then hands it to the tester for the real run.",
20
- "DESC_THEME": "Build your own OpenCode colour theme — pick or fine-tune a palette, get solid and transparent setups, they survive every rebuild.",
21
20
  "DESC_ARCHITECT": "Sorts the strategy before a single line is committed.",
22
21
  "DESC_DOCS": "Writes up the debrief and the notes once the work is done.",
23
22
  "DESC_SECURITY": "Goes over anything touching the security surface with a fine comb.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for the car under load — reliability, the watch, and the on-call burden of running it.",
35
34
  "DESC_HISTORIAN": "Brings the history — what was tried before, how it went, and the lesson for this call.",
36
35
  "DESC_PLAN": "Set the strategy before a non-trivial stint; call your progress as you go.",
37
- "DESC_MIGRATE": "Move to the new spec without a blow-up — read the notes, one change at a time, trials green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Go through the data to find when it broke or why a line was driven — bisect, blame, pickaxe, hands off the car.",
39
- "DESC_GIT_RESCUE": "Recover a wrecked or tangled session, or rewrite the history safely — reflog, undo, rebase behind a backup.",
40
- "DESC_REPO_MAP": "Draw the track map — a single-read map of the repository, kept current.",
36
+ "DESC_DEPENDENCIES": "Survey every component — outdated, on recall and reachable, discontinued, dead weight — into a risk-ordered upgrade plan, then fit each change one at a time, trials green between each.",
37
+ "DESC_GIT_HISTORY": "Go through the data, hands off the car, to find when it broke or why a line was driven — bisect, blame, pickaxe — or recover a wrecked or tangled session and rewrite the history safely, every move behind a backup.",
41
38
  "DESC_DOCUMENT_PROJECT": "Write the team's PRD, design system, architecture and AGENTS.md off the living code, mend the doc tree, and re-render the offline HTML overview.",
42
39
  "DESC_COMMIT": "Stage only what this stint touched and seal a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Go over a diff or PR — correctness first, polish after.",
44
41
  "DESC_BRAINSTORM": "Turn a raw idea into an agreed strategy before a single tyre hits the track.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — a lot of behaviour behind a small interface, seam placed on purpose, like every line on track.",
46
- "DESC_DOMAIN_MODELING": "Keep the glossary in CONTEXT.md current, and log every structural call as an ADR, box by box.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the team's own language — a lot behind a small interface, the seam placed like a racing line, a living GLOSSARY.md, an ADR for every call too costly to reverse.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split a spec into tracer-bullet tickets with explicit blocking edges, each sized for one fresh stint.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn the lap, never to keep.",
50
45
  "DESC_ROAST_ME": "Tear into any work — blunt, exact, always actionable.",
51
46
  "DESC_FRESH_EYES": "Bring in a fresh pair of eyes who's seen neither the briefing nor the laps — only the original orders and the finished car — to set the bar blind, then call whether it meets the orders, no excuses from the driver.",
52
47
  "ROAST_PERSONA": "a championship driver with zero patience who has watched this exact mistake throw away a win",
53
48
  "DESC_COUNCIL": "Get a panel of opposed voices to argue a call out, then hand down a verdict with the dissent kept on record.",
54
- "DESC_DEBUG": "Hunt the fault by evidence — reproduce it, isolate it, kill the root cause, prove it fixed.",
49
+ "DESC_DEBUG": "Hunt the fault by evidence — a lap that fails on it first, reproduce it, isolate it, kill the root cause, prove it fixed — a red CI run included, reproduced under CI's own conditions. No retry-until-green.",
55
50
  "DESC_REFACTOR": "Rebuild the car without changing how it drives — one named move, trials green throughout.",
56
51
  "DESC_PONYTAIL": "The laziest line that wins — least code, shortest path; standard parts before custom builds, one line before fifty. lite/full/ultra.",
57
52
  "DESC_PARALLEL_AGENTS": "Send several engineers on independent jobs at once, then bring in what they get.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "DESC_SKILL_FORGE": "Build, tune, merge, or retire a setup — reuse first, trigger before procedure, tested against its neighbours, every satellite registered, doctor green.",
67
62
  "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.",
68
- "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.",
69
- "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.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Hand over the car — snapshot the state so a fresh driver takes the wheel in one read.",
72
64
  "DESC_SHIP": "Take the flag: open a PR with a clear write-up, or merge the branch, once it's verified.",
73
65
  "DESC_RELEASE": "Cut a release — raise the version, write the debrief, tag it, all three in sync.",
74
66
  "DESC_INGEST": "Bring a PDF, Office, or web document into clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Find the answer out on the open circuit — search wide, then prove every claim against independent sources before you call it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "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 — and keep tending the memory: merge, retire, promote.",
78
70
  "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.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and build the user's own OpenCode colour theme.",
80
72
  "DESC_REVIEW_RESPONSE": "Take the notes straight — weigh each call, then act on it or push back with reasons.",
81
73
  "LEX_SEALED_SECRETS": "Keep It in the Garage · Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Move per Corner · One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "The team may keep a data room on this machine — a vault of linked engineering notes that carries over every race weekend.",
146
138
  "DESC_WIKI": "Use the team's data room — check the data before you push, log new findings properly linked, and file them with the right weekend.",
147
139
  "DESC_MCP": "Build or harden an MCP server — study the spec, design task-shaped tools, test with the Inspector, and prove it with evals.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Build a Bruno collection from the routes, an OpenAPI sheet, curl, or an endpoint list — requests, environments, docs, every secret a placeholder.",
149
- "DESC_BRUNO_TEST_WRITER": "Write Bruno tests for a request or the whole collection — status, shape, chaining — no secret leaks, no assertion the data does not back.",
140
+ "DESC_BRUNO": "Build, reorganise or test a Bruno collection — requests, environments, assertions, chaining — every secret a placeholder, no leaks, no assertion the data doesn't back.",
150
141
  "DESC_PROSE": "Write like a human, not a bot — bin the filler, keep it active, vary the rhythm, and trust the reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with a point of view — palette, type, and layout dialled in for this brief, not the default setup, then trim to one bold move.",
152
143
  "DESC_WORKFLOW": "Run a saved race plan that drives your engineers by script — many sent out at once, their results gathered and checked in one clean grand prix.",
@@ -17,7 +17,6 @@
17
17
  "DESC_REVIEWER": "Scryes a change for soundness and craft before it is sealed.",
18
18
  "DESC_TESTER": "Conjures the trials, casts them, and reads the omens when they fail.",
19
19
  "DESC_DEVELOPER": "Conjures the scoped fix in its own warded circle, tests it once, then hands it to the examiner.",
20
- "DESC_THEME": "Conjure your own OpenCode colour theme — choose or transmute a palette, gain solid and translucent forms, warded against every rebuild.",
21
20
  "DESC_ARCHITECT": "Designs the ritual before a single rune is inscribed.",
22
21
  "DESC_DOCS": "Transcribes the tomes for those who follow, once the work is done.",
23
22
  "DESC_SECURITY": "Wards the circle — audits any working that touches the warded surface.",
@@ -34,24 +33,20 @@
34
33
  "DESC_OPERATOR": "Speaks for the working once loosed — how it holds in the wild, its upkeep, and the watch it demands.",
35
34
  "DESC_HISTORIAN": "Reads the old grimoires — what was tried before, how it fared, and the lesson for this casting.",
36
35
  "DESC_PLAN": "Inscribe the ritual before a non-trivial working; track progress as it unfolds.",
37
- "DESC_MIGRATE": "Transmute to the new version without a backfire — read the tome, one rune at a time, trials green between each.",
38
- "DESC_GIT_ARCHAEOLOGY": "Scry the chronicle for when the curse took hold or why a rune was set — bisect, blame, and the pickaxe, disturbing nothing.",
39
- "DESC_GIT_RESCUE": "Mend a broken or tangled grimoire, or rewrite its history without a backfire — reflog and undo, every working warded by a backup.",
40
- "DESC_REPO_MAP": "Chart the sanctum — a single-read map of the repository, kept current.",
36
+ "DESC_DEPENDENCIES": "Survey every reagent — outdated, tainted and reachable, abandoned, dead weight — into a risk-ordered upgrade plan, then transmute one rune at a time, trials green between each.",
37
+ "DESC_GIT_HISTORY": "Scry the chronicle, disturbing nothing, for when the curse took hold or why a rune was set — bisect, blame, the pickaxe — or mend a broken or tangled grimoire and rewrite its history without a backfire, every working warded by a backup.",
41
38
  "DESC_DOCUMENT_PROJECT": "Inscribe the PRD, design system, architecture and AGENTS.md from the living code, mend the tomes, and re-conjure the offline HTML overview.",
42
39
  "DESC_COMMIT": "Gather only the reagents this working touched and seal a focused commit.",
43
40
  "DESC_CODE_REVIEW": "Scry a diff or petition — soundness first, craft after.",
44
41
  "DESC_BRAINSTORM": "Turn a raw notion into an agreed design before any rune is cut.",
45
- "DESC_CODEBASE_DESIGN": "Design deep modules — great behaviour bound behind one small interface, the seam placed by design, not left to chance.",
46
- "DESC_DOMAIN_MODELING": "Keep the glossary alive in CONTEXT.md, and inscribe each structural decision as an ADR.",
42
+ "DESC_CODEBASE_DESIGN": "Design deep modules and the tongue of the domain — great power behind one small interface, the seam placed by design, a living GLOSSARY.md, an ADR inscribed for each irreversible call.",
47
43
  "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.",
48
- "DESC_TICKETS": "Split a working into tracer-bullet tickets with explicit blocking edges, each sized for one fresh session.",
49
44
  "DESC_PROTOTYPE": "Answer a design question with throwaway code — built to learn, never to keep in the grimoire.",
50
45
  "DESC_ROAST_ME": "Put any work to the trial by fire — blunt, exact, always actionable.",
51
46
  "DESC_FRESH_EYES": "Conjure an unscried adept who has glimpsed neither your deliberations nor your toil — only the original charge and the wrought work — to divine the measure blind, then pronounce whether the work answers the charge.",
52
47
  "ROAST_PERSONA": "an exacting archmagus who has watched this exact folly unmake apprentices",
53
48
  "DESC_COUNCIL": "Convene a circle of opposed counsels to debate a decision, then render a verdict with the dissent preserved.",
54
- "DESC_DEBUG": "Hunt the curse by evidence — reproduce, isolate, find its root, banish it.",
49
+ "DESC_DEBUG": "Hunt the curse by evidence — a working that fails on it first, reproduce, isolate, find its root, banish it — a red CI run included, reproduced under CI's own conditions.",
55
50
  "DESC_REFACTOR": "Reshape the working without changing its effect — one named pass, trials green throughout.",
56
51
  "DESC_PONYTAIL": "The laziest working spell — least incantation, shortest path; the standard grimoire before bespoke runes, one line before fifty. lite/full/ultra.",
57
52
  "DESC_PARALLEL_AGENTS": "Loose several familiars on independent tasks at once, then gather what they bring.",
@@ -65,18 +60,15 @@
65
60
  "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.",
66
61
  "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.",
67
62
  "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.",
68
- "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.",
69
- "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.",
70
- "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.",
71
63
  "DESC_HANDOFF": "Pass the working — inscribe its state so a fresh mind resumes in one read.",
72
64
  "DESC_SHIP": "Send the working forth: open a PR with a clear account, or merge the branch, once proven.",
73
65
  "DESC_RELEASE": "Cut a release — raise the version, inscribe the chronicle, seal it with a tag, all in accord.",
74
66
  "DESC_INGEST": "Transmute a PDF, Office, or web document into clean markdown before reading it.",
75
67
  "DESC_RESEARCH": "Seek the answer through the wider lore — scry many sources, then prove each claim against independent tomes before you trust it.",
76
68
  "DESC_HERDR": "Drive herdr from inside it — split panes, spawn sibling agents, wait on output, read other panes.",
77
- "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.",
69
+ "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 — and keep tending the grimoire: merge, strike, promote.",
78
70
  "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.",
79
- "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks.",
71
+ "DESC_GENESEED": "Operate the deployed Geneseed harness — find each install and its settings, read its files, run status, doctor and diff, and rebuild it with one setting changed when the user asks — and conjure the user's own OpenCode colour theme.",
80
72
  "DESC_REVIEW_RESPONSE": "Answer the scrying with rigour — weigh each finding, then heed it or refute it with cause.",
81
73
  "LEX_SEALED_SECRETS": "Sealed Sigils · Sealed Secrets",
82
74
  "LEX_ONE_INTENT_ONE_ACT": "One Intent, One Casting · One Intent, One Act",
@@ -145,8 +137,7 @@
145
137
  "INTRO_WIKI": "The archmage may keep an athenaeum upon this machine — a vault of interlinked tomes whose knowledge outlives any single working.",
146
138
  "DESC_WIKI": "Consult and enrich the athenaeum — find the governing tome before casting, inscribe new pages well-linked, and shelve each where the catalogue ordains.",
147
139
  "DESC_MCP": "Conjure or fortify an MCP server — study the grimoire, shape tools to real workings, test with the Inspector, and prove it with trials.",
148
- "DESC_BRUNO_COLLECTION_GENERATOR": "Conjure a Bruno collection from the routes, an OpenAPI scroll, curl, or a list of endpoints — requests, environments, docs, every secret a placeholder.",
149
- "DESC_BRUNO_TEST_WRITER": "Bind Bruno tests to a request or the whole collection — status, shape, chaining — and let no secret escape the circle.",
140
+ "DESC_BRUNO": "Conjure, reorganise or bind tests to a Bruno collection — requests, environments, assertions, chaining — every secret a placeholder, none let escape the circle.",
150
141
  "DESC_PROSE": "Pen prose for mortal eyes, not machine-cant — banish the filler, speak plainly, vary the cadence, and trust the reader.",
151
142
  "DESC_FRONTEND_DESIGN": "Design a UI with intent — palette, type, and layout woven for this brief, not the common defaults; plan, scrutinise, and keep one bold flourish.",
152
143
  "DESC_WORKFLOW": "Invoke a saved ritual that binds your familiars by inscribed rite — many sent at once, their auguries gathered and proven in one deterministic casting.",
@@ -1 +1 @@
1
- import{s as e}from"./sections-GalMS0Zv.js";import{i as t,t as n}from"./react-B9Z_tXRV.js";import{t as r}from"./api-CxgfYu18.js";import{N as i,k as a,l as o,q as s,y as c}from"./index-CDg5XUhG.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./activity-Dr7ZMBI3.js";import{t as h}from"./usePoll-DD8VjtSg.js";var g=e(t(),1),_=n();function v({s:e}){let t=p[e.status]||p.idle,n=e.files,r=e.todos,o=r&&r.total>0||e.error||e.blocked_on;return(0,_.jsxs)(`a`,{className:`card pad-md act-card`,href:`#/activity/${encodeURIComponent(e.session_id)}`,children:[(0,_.jsxs)(`div`,{className:`row between wrap gap-12`,children:[(0,_.jsxs)(`div`,{className:`row gap-10`,style:{minWidth:0},children:[(0,_.jsx)(`span`,{className:`feed-dot ${t.cls||`acc`}`,style:{width:9,height:9}}),(0,_.jsxs)(`div`,{style:{minWidth:0},children:[(0,_.jsx)(`h3`,{style:{margin:0},children:e.title||l(e.cwd)||e.session_id}),e.cwd&&(0,_.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...m},title:e.cwd,children:e.cwd})]})]}),(0,_.jsxs)(`div`,{className:`row gap-8`,style:{flexShrink:0},children:[e.model&&(0,_.jsx)(`span`,{className:`badge mono`,title:`model`,children:e.model}),e.agent&&(0,_.jsx)(`span`,{className:`badge`,children:e.agent}),(0,_.jsxs)(`span`,{className:`badge ${t.cls}`,children:[(0,_.jsx)(`span`,{className:`dot`}),t.label]}),(0,_.jsx)(a,{name:`chevron`,className:`glyph act-chev`})]})]}),e.phase&&(0,_.jsxs)(`div`,{className:`row gap-8`,style:{marginTop:10,fontSize:14},children:[(0,_.jsx)(a,{name:`activity`}),(0,_.jsx)(`span`,{style:m,children:e.phase})]}),(e.tokens>0||e.cost>0||e.turn_started_at||n&&n.count>0)&&(0,_.jsxs)(`div`,{className:`row wrap`,style:{gap:16,marginTop:12,fontSize:13,color:`var(--text-2)`},children:[e.tokens>0&&(0,_.jsxs)(`span`,{children:[f(e.tokens),` tok`]}),e.cost>0&&(0,_.jsxs)(`span`,{children:[`$`,e.cost.toFixed(2)]}),e.turn_started_at?(0,_.jsx)(`span`,{children:(0,_.jsx)(d,{startedAt:e.turn_started_at})}):null,n&&n.count>0&&(0,_.jsxs)(`span`,{children:[n.count,` file`,n.count===1?``:`s`,` `,(0,_.jsxs)(`span`,{style:{color:`var(--good)`},children:[`+`,n.additions]}),` `,(0,_.jsxs)(`span`,{style:{color:`var(--bad)`},children:[`−`,n.deletions]})]})]}),o&&(0,_.jsxs)(`div`,{className:`row between wrap gap-12`,style:{marginTop:12,paddingTop:10,borderTop:`1px solid var(--line)`},children:[r&&r.total>0?(0,_.jsxs)(`span`,{className:`row gap-8 dim`,style:{fontSize:13},children:[(0,_.jsx)(u,{done:r.done,total:r.total}),`plan `,r.done,`/`,r.total]}):(0,_.jsx)(`span`,{}),e.error?(0,_.jsx)(`span`,{className:`badge bad`,title:e.error,style:{maxWidth:300,...m},children:e.error}):e.blocked_on?(0,_.jsx)(`span`,{className:`badge bad`,title:e.blocked_on,style:{maxWidth:300,...m},children:e.blocked_on}):null]}),(0,_.jsxs)(`div`,{className:`dim mono`,style:{fontSize:11,marginTop:8},children:[`updated `,i(e.updated_at),` ago`]})]})}function y(){let[e,t]=(0,g.useState)(null),[n,i]=(0,g.useState)(``);h(e=>r.activity().then(n=>{e()&&(t(n),i(``))},t=>{e()&&i(t.message)}),2e3,[]);let a=!e||e.enabled!==!1,l=e?.activity||[],u=s(),d=async()=>{let e=!a;try{let n=await r.activityToggle(e);t(e=>({...e||{},enabled:n.enabled,activity:n.enabled&&e?.activity||[]})),i(``)}catch(e){i(e.message)}};return(0,_.jsxs)(`div`,{className:`narrow`,children:[(0,_.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`h1`,{className:`h`,children:`Activity`}),(0,_.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.`})]}),(0,_.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`center`,flexShrink:0},children:[(0,_.jsx)(`span`,{className:`dim mono`,style:{fontSize:12},children:a?`tracking on`:`tracking off`}),(0,_.jsx)(`div`,{className:`sw-toggle${a?` on`:``}`,role:`switch`,"aria-checked":a,"aria-label":`Toggle activity tracking`,tabIndex:0,onClick:d,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())}})]})]}),(0,_.jsx)(o,{error:n,style:{marginBottom:12}}),e?a?l.length===0?(0,_.jsxs)(`div`,{className:`empty`,children:[(0,_.jsx)(`div`,{className:`big`,children:`No active sessions`}),`Run `,(0,_.jsx)(`code`,{children:`opencode`}),` and the sessions it spins up appear here.`]}):(0,_.jsx)(`div`,{className:`stack gap-12`,ref:u,children:l.map(e=>(0,_.jsx)(`div`,{"data-flip":e.session_id,children:(0,_.jsx)(v,{s:e})},e.session_id))}):(0,_.jsxs)(`div`,{className:`empty`,children:[(0,_.jsx)(`div`,{className:`big`,children:`Activity tracking is off`}),`The plugin isn't recording sessions. Flip the switch to turn it back on.`]}):(0,_.jsx)(c,{label:`Reading live sessions…`})]})}export{y as default};
1
+ import{s as e}from"./sections-GalMS0Zv.js";import{i as t,t as n}from"./react-DRhoX0kS.js";import{t as r}from"./api-CxgfYu18.js";import{N as i,k as a,l as o,q as s,y as c}from"./index-hsabpYzv.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./activity-dcg5vF9j.js";import{t as h}from"./usePoll-BmR631BB.js";var g=e(t(),1),_=n();function v({s:e}){let t=p[e.status]||p.idle,n=e.files,r=e.todos,o=r&&r.total>0||e.error||e.blocked_on;return(0,_.jsxs)(`a`,{className:`card pad-md act-card`,href:`#/activity/${encodeURIComponent(e.session_id)}`,children:[(0,_.jsxs)(`div`,{className:`row between wrap gap-12`,children:[(0,_.jsxs)(`div`,{className:`row gap-10`,style:{minWidth:0},children:[(0,_.jsx)(`span`,{className:`feed-dot ${t.cls||`acc`}`,style:{width:9,height:9}}),(0,_.jsxs)(`div`,{style:{minWidth:0},children:[(0,_.jsx)(`h3`,{style:{margin:0},children:e.title||l(e.cwd)||e.session_id}),e.cwd&&(0,_.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...m},title:e.cwd,children:e.cwd})]})]}),(0,_.jsxs)(`div`,{className:`row gap-8`,style:{flexShrink:0},children:[e.model&&(0,_.jsx)(`span`,{className:`badge mono`,title:`model`,children:e.model}),e.agent&&(0,_.jsx)(`span`,{className:`badge`,children:e.agent}),(0,_.jsxs)(`span`,{className:`badge ${t.cls}`,children:[(0,_.jsx)(`span`,{className:`dot`}),t.label]}),(0,_.jsx)(a,{name:`chevron`,className:`glyph act-chev`})]})]}),e.phase&&(0,_.jsxs)(`div`,{className:`row gap-8`,style:{marginTop:10,fontSize:14},children:[(0,_.jsx)(a,{name:`activity`}),(0,_.jsx)(`span`,{style:m,children:e.phase})]}),(e.tokens>0||e.cost>0||e.turn_started_at||n&&n.count>0)&&(0,_.jsxs)(`div`,{className:`row wrap`,style:{gap:16,marginTop:12,fontSize:13,color:`var(--text-2)`},children:[e.tokens>0&&(0,_.jsxs)(`span`,{children:[f(e.tokens),` tok`]}),e.cost>0&&(0,_.jsxs)(`span`,{children:[`$`,e.cost.toFixed(2)]}),e.turn_started_at?(0,_.jsx)(`span`,{children:(0,_.jsx)(d,{startedAt:e.turn_started_at})}):null,n&&n.count>0&&(0,_.jsxs)(`span`,{children:[n.count,` file`,n.count===1?``:`s`,` `,(0,_.jsxs)(`span`,{style:{color:`var(--good)`},children:[`+`,n.additions]}),` `,(0,_.jsxs)(`span`,{style:{color:`var(--bad)`},children:[`−`,n.deletions]})]})]}),o&&(0,_.jsxs)(`div`,{className:`row between wrap gap-12`,style:{marginTop:12,paddingTop:10,borderTop:`1px solid var(--line)`},children:[r&&r.total>0?(0,_.jsxs)(`span`,{className:`row gap-8 dim`,style:{fontSize:13},children:[(0,_.jsx)(u,{done:r.done,total:r.total}),`plan `,r.done,`/`,r.total]}):(0,_.jsx)(`span`,{}),e.error?(0,_.jsx)(`span`,{className:`badge bad`,title:e.error,style:{maxWidth:300,...m},children:e.error}):e.blocked_on?(0,_.jsx)(`span`,{className:`badge bad`,title:e.blocked_on,style:{maxWidth:300,...m},children:e.blocked_on}):null]}),(0,_.jsxs)(`div`,{className:`dim mono`,style:{fontSize:11,marginTop:8},children:[`updated `,i(e.updated_at),` ago`]})]})}function y(){let[e,t]=(0,g.useState)(null),[n,i]=(0,g.useState)(``);h(e=>r.activity().then(n=>{e()&&(t(n),i(``))},t=>{e()&&i(t.message)}),2e3,[]);let a=!e||e.enabled!==!1,l=e?.activity||[],u=s(),d=async()=>{let e=!a;try{let n=await r.activityToggle(e);t(e=>({...e||{},enabled:n.enabled,activity:n.enabled&&e?.activity||[]})),i(``)}catch(e){i(e.message)}};return(0,_.jsxs)(`div`,{className:`narrow`,children:[(0,_.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`h1`,{className:`h`,children:`Activity`}),(0,_.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.`})]}),(0,_.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`center`,flexShrink:0},children:[(0,_.jsx)(`span`,{className:`dim mono`,style:{fontSize:12},children:a?`tracking on`:`tracking off`}),(0,_.jsx)(`div`,{className:`sw-toggle${a?` on`:``}`,role:`switch`,"aria-checked":a,"aria-label":`Toggle activity tracking`,tabIndex:0,onClick:d,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())}})]})]}),(0,_.jsx)(o,{error:n,style:{marginBottom:12}}),e?a?l.length===0?(0,_.jsxs)(`div`,{className:`empty`,children:[(0,_.jsx)(`div`,{className:`big`,children:`No active sessions`}),`Run `,(0,_.jsx)(`code`,{children:`opencode`}),` and the sessions it spins up appear here.`]}):(0,_.jsx)(`div`,{className:`stack gap-12`,ref:u,children:l.map(e=>(0,_.jsx)(`div`,{"data-flip":e.session_id,children:(0,_.jsx)(v,{s:e})},e.session_id))}):(0,_.jsxs)(`div`,{className:`empty`,children:[(0,_.jsx)(`div`,{className:`big`,children:`Activity tracking is off`}),`The plugin isn't recording sessions. Flip the switch to turn it back on.`]}):(0,_.jsx)(c,{label:`Reading live sessions…`})]})}export{y as default};
@@ -1 +1 @@
1
- import{s as e}from"./sections-GalMS0Zv.js";import{i as t,t as n}from"./react-B9Z_tXRV.js";import{t as r}from"./api-CxgfYu18.js";import{N as i,k as a,y as o}from"./index-CDg5XUhG.js";import{a as s,n as c,o as l,r as u,t as d}from"./activity-Dr7ZMBI3.js";import{t as f}from"./usePoll-DD8VjtSg.js";var p=e(t(),1),m=n();function h(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 g({rec:e}){let t=e.who===`you`,n=[];t||(e.kind===`tool`&&e.ms!=null&&n.push(`${(e.ms/1e3).toFixed(1)}s`),e.kind===`step`&&(e.tokens&&n.push(`${l(e.tokens)} tok`),e.cost&&n.push(`$${e.cost.toFixed(2)}`)),e.kind===`subtask`&&e.agent&&n.unshift(e.agent));let r=!t&&(e.kind===`text`||e.kind===`thinking`||e.kind===`step`),i=t?e.text:e.label||e.snippet||e.kind;return(0,m.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,m.jsx)(`span`,{className:`badge ${t?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:t?`you`:`agent`}),(0,m.jsxs)(`div`,{style:{minWidth:0,flex:1,fontSize:13},children:[!t&&(0,m.jsx)(`span`,{className:`feed-dot ${h(e)||`acc`}`,style:{display:`inline-block`,marginRight:8,verticalAlign:`middle`}}),e.kind===`thinking`&&(0,m.jsx)(`span`,{className:`dim`,children:`thinking: `}),r?(0,m.jsx)(`span`,{className:`dim`,children:i}):t?i:(0,m.jsx)(`b`,{children:i}),e.error&&(0,m.jsxs)(`span`,{className:`dim`,children:[`: `,e.error]})]}),n.length>0&&(0,m.jsx)(`span`,{className:`dim mono`,style:{flexShrink:0,fontSize:12},children:n.join(` · `)})]})}function _({turns:e}){return!e||e.length===0?(0,m.jsx)(`div`,{className:`dim`,style:{fontSize:13},children:`No conversation captured yet.`}):(0,m.jsx)(`div`,{className:`stack gap-12`,children:e.map((e,t)=>{let n=e.role===`user`;return(0,m.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,m.jsx)(`span`,{className:`badge ${n?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:n?`you`:`agent`}),(0,m.jsx)(`div`,{style:{minWidth:0,fontSize:13,color:n?`inherit`:`var(--text-2)`},children:e.text})]},t)})})}function v({sid:e}){let[t,n]=(0,p.useState)(null),[h,v]=(0,p.useState)(``),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(!1);f(t=>r.activityDetail(e).then(e=>{t()&&(n(e),v(``),b(!1))},e=>{t()&&(e.status===404?b(!0):v(e.message))}),2e3,[e]);let C=(0,m.jsxs)(`a`,{className:`btn ghost sm`,href:`#/activity`,style:{marginBottom:12,display:`inline-flex`,gap:6},children:[(0,m.jsx)(a,{name:`arrow`,style:{transform:`rotate(180deg)`}}),` Activity`]});if(y)return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,(0,m.jsxs)(`div`,{className:`empty`,children:[(0,m.jsx)(`div`,{className:`big`,children:`Session ended`}),`It's no longer live. `,(0,m.jsx)(`a`,{href:`#/activity`,children:`Back to Activity`}),`.`]})]});if(!t)return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,(0,m.jsx)(o,{label:`Loading session…`})]});let w=t.session,T=u[w.status]||u.idle,E=w.files,D=w.todos,O=!!(E&&E.items&&E.items.length>0),k=!!(D&&D.items&&D.items.length>0),A=t.conversation||[],j=t.timeline||[],M=[...A.filter(e=>e.role===`user`).map(e=>({who:`you`,text:e.text,t:e.t||0})),...j.map(e=>({...e,who:`agent`}))].sort((e,t)=>(e.t||0)-(t.t||0));return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,h&&(0,m.jsx)(`p`,{className:`badge bad`,style:{marginBottom:12},children:h}),(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsxs)(`div`,{className:`row between wrap gap-12`,children:[(0,m.jsxs)(`div`,{style:{minWidth:0},children:[(0,m.jsx)(`h1`,{className:`h`,style:{margin:0},children:w.title||s(w.cwd)||w.session_id}),w.cwd&&(0,m.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...d},title:w.cwd,children:w.cwd})]}),(0,m.jsxs)(`div`,{className:`row gap-8`,style:{flexShrink:0},children:[w.model&&(0,m.jsx)(`span`,{className:`badge mono`,children:w.model}),w.agent&&(0,m.jsx)(`span`,{className:`badge`,children:w.agent}),(0,m.jsxs)(`span`,{className:`badge ${T.cls}`,children:[(0,m.jsx)(`span`,{className:`dot`}),T.label]})]})]}),w.phase&&(0,m.jsxs)(`div`,{className:`row gap-8`,style:{marginTop:10,fontSize:14},children:[(0,m.jsx)(a,{name:`activity`}),(0,m.jsx)(`span`,{style:d,children:w.phase})]}),(0,m.jsxs)(`div`,{className:`row wrap`,style:{gap:16,marginTop:12,fontSize:13,color:`var(--text-2)`},children:[w.tokens>0&&(0,m.jsxs)(`span`,{children:[l(w.tokens),` tok`]}),w.cost>0&&(0,m.jsxs)(`span`,{children:[`$`,w.cost.toFixed(2)]}),w.turn_started_at?(0,m.jsx)(`span`,{children:(0,m.jsx)(c,{startedAt:w.turn_started_at})}):null,(0,m.jsxs)(`span`,{className:`dim`,children:[`updated `,i(w.updated_at),` ago`]})]}),(w.error||w.blocked_on)&&(0,m.jsx)(`div`,{style:{marginTop:10},children:(0,m.jsx)(`span`,{className:`badge bad`,style:{maxWidth:`100%`,...d},children:w.error||w.blocked_on})})]}),(O||k)&&(0,m.jsxs)(`div`,{className:`grid gap-12`,style:{marginTop:12,gridTemplateColumns:O&&k?`minmax(0, 1fr) minmax(0, 1fr)`:`1fr`},children:[O&&(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsx)(`div`,{className:`card-head`,children:(0,m.jsxs)(`h3`,{children:[`Files touched `,(0,m.jsxs)(`span`,{className:`dim`,children:[`(`,E.count,`)`]})]})}),(0,m.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:E.items.map(e=>(0,m.jsxs)(`div`,{className:`row between gap-12`,style:{fontSize:13},children:[(0,m.jsx)(`span`,{className:`mono`,style:{...d,minWidth:0,flex:1},title:e.file,children:e.file}),(0,m.jsxs)(`span`,{style:{flexShrink:0},children:[(0,m.jsxs)(`span`,{style:{color:`var(--good)`},children:[`+`,e.additions]}),` `,(0,m.jsxs)(`span`,{style:{color:`var(--bad)`},children:[`−`,e.deletions]})]})]},e.file))})]}),k&&(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsx)(`div`,{className:`card-head`,children:(0,m.jsxs)(`h3`,{children:[`Plan`,` `,(0,m.jsxs)(`span`,{className:`dim`,children:[`(`,D.done,`/`,D.total,`)`]})]})}),(0,m.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:D.items.map((e,t)=>(0,m.jsxs)(`div`,{className:`row gap-8`,style:{fontSize:13},children:[(0,m.jsx)(`span`,{className:`feed-dot ${e.status===`completed`?`ok`:e.status===`in_progress`?`acc`:``}`}),(0,m.jsx)(`span`,{style:{textDecoration:e.status===`completed`?`line-through`:`none`,color:e.status===`completed`?`var(--text-3)`:`inherit`},children:e.content})]},t))})]})]}),(0,m.jsxs)(`div`,{className:`card pad-md`,style:{marginTop:12},children:[(0,m.jsxs)(`div`,{className:`card-head`,style:{justifyContent:`space-between`,marginBottom:12},children:[(0,m.jsx)(`h3`,{children:`Timeline`}),j.length>0&&(0,m.jsx)(`button`,{className:`btn ghost sm`,onClick:()=>S(e=>!e),children:x?`Show conversation`:`Show all ${j.length} steps`})]}),x?(0,m.jsx)(`div`,{className:`stack gap-12`,children:M.map((e,t)=>(0,m.jsx)(g,{rec:e},t))}):(0,m.jsx)(_,{turns:A})]})]})}export{v as default};
1
+ import{s as e}from"./sections-GalMS0Zv.js";import{i as t,t as n}from"./react-DRhoX0kS.js";import{t as r}from"./api-CxgfYu18.js";import{N as i,k as a,y as o}from"./index-hsabpYzv.js";import{a as s,n as c,o as l,r as u,t as d}from"./activity-dcg5vF9j.js";import{t as f}from"./usePoll-BmR631BB.js";var p=e(t(),1),m=n();function h(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 g({rec:e}){let t=e.who===`you`,n=[];t||(e.kind===`tool`&&e.ms!=null&&n.push(`${(e.ms/1e3).toFixed(1)}s`),e.kind===`step`&&(e.tokens&&n.push(`${l(e.tokens)} tok`),e.cost&&n.push(`$${e.cost.toFixed(2)}`)),e.kind===`subtask`&&e.agent&&n.unshift(e.agent));let r=!t&&(e.kind===`text`||e.kind===`thinking`||e.kind===`step`),i=t?e.text:e.label||e.snippet||e.kind;return(0,m.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,m.jsx)(`span`,{className:`badge ${t?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:t?`you`:`agent`}),(0,m.jsxs)(`div`,{style:{minWidth:0,flex:1,fontSize:13},children:[!t&&(0,m.jsx)(`span`,{className:`feed-dot ${h(e)||`acc`}`,style:{display:`inline-block`,marginRight:8,verticalAlign:`middle`}}),e.kind===`thinking`&&(0,m.jsx)(`span`,{className:`dim`,children:`thinking: `}),r?(0,m.jsx)(`span`,{className:`dim`,children:i}):t?i:(0,m.jsx)(`b`,{children:i}),e.error&&(0,m.jsxs)(`span`,{className:`dim`,children:[`: `,e.error]})]}),n.length>0&&(0,m.jsx)(`span`,{className:`dim mono`,style:{flexShrink:0,fontSize:12},children:n.join(` · `)})]})}function _({turns:e}){return!e||e.length===0?(0,m.jsx)(`div`,{className:`dim`,style:{fontSize:13},children:`No conversation captured yet.`}):(0,m.jsx)(`div`,{className:`stack gap-12`,children:e.map((e,t)=>{let n=e.role===`user`;return(0,m.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,m.jsx)(`span`,{className:`badge ${n?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:n?`you`:`agent`}),(0,m.jsx)(`div`,{style:{minWidth:0,fontSize:13,color:n?`inherit`:`var(--text-2)`},children:e.text})]},t)})})}function v({sid:e}){let[t,n]=(0,p.useState)(null),[h,v]=(0,p.useState)(``),[y,b]=(0,p.useState)(!1),[x,S]=(0,p.useState)(!1);f(t=>r.activityDetail(e).then(e=>{t()&&(n(e),v(``),b(!1))},e=>{t()&&(e.status===404?b(!0):v(e.message))}),2e3,[e]);let C=(0,m.jsxs)(`a`,{className:`btn ghost sm`,href:`#/activity`,style:{marginBottom:12,display:`inline-flex`,gap:6},children:[(0,m.jsx)(a,{name:`arrow`,style:{transform:`rotate(180deg)`}}),` Activity`]});if(y)return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,(0,m.jsxs)(`div`,{className:`empty`,children:[(0,m.jsx)(`div`,{className:`big`,children:`Session ended`}),`It's no longer live. `,(0,m.jsx)(`a`,{href:`#/activity`,children:`Back to Activity`}),`.`]})]});if(!t)return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,(0,m.jsx)(o,{label:`Loading session…`})]});let w=t.session,T=u[w.status]||u.idle,E=w.files,D=w.todos,O=!!(E&&E.items&&E.items.length>0),k=!!(D&&D.items&&D.items.length>0),A=t.conversation||[],j=t.timeline||[],M=[...A.filter(e=>e.role===`user`).map(e=>({who:`you`,text:e.text,t:e.t||0})),...j.map(e=>({...e,who:`agent`}))].sort((e,t)=>(e.t||0)-(t.t||0));return(0,m.jsxs)(`div`,{className:`narrow`,children:[C,h&&(0,m.jsx)(`p`,{className:`badge bad`,style:{marginBottom:12},children:h}),(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsxs)(`div`,{className:`row between wrap gap-12`,children:[(0,m.jsxs)(`div`,{style:{minWidth:0},children:[(0,m.jsx)(`h1`,{className:`h`,style:{margin:0},children:w.title||s(w.cwd)||w.session_id}),w.cwd&&(0,m.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...d},title:w.cwd,children:w.cwd})]}),(0,m.jsxs)(`div`,{className:`row gap-8`,style:{flexShrink:0},children:[w.model&&(0,m.jsx)(`span`,{className:`badge mono`,children:w.model}),w.agent&&(0,m.jsx)(`span`,{className:`badge`,children:w.agent}),(0,m.jsxs)(`span`,{className:`badge ${T.cls}`,children:[(0,m.jsx)(`span`,{className:`dot`}),T.label]})]})]}),w.phase&&(0,m.jsxs)(`div`,{className:`row gap-8`,style:{marginTop:10,fontSize:14},children:[(0,m.jsx)(a,{name:`activity`}),(0,m.jsx)(`span`,{style:d,children:w.phase})]}),(0,m.jsxs)(`div`,{className:`row wrap`,style:{gap:16,marginTop:12,fontSize:13,color:`var(--text-2)`},children:[w.tokens>0&&(0,m.jsxs)(`span`,{children:[l(w.tokens),` tok`]}),w.cost>0&&(0,m.jsxs)(`span`,{children:[`$`,w.cost.toFixed(2)]}),w.turn_started_at?(0,m.jsx)(`span`,{children:(0,m.jsx)(c,{startedAt:w.turn_started_at})}):null,(0,m.jsxs)(`span`,{className:`dim`,children:[`updated `,i(w.updated_at),` ago`]})]}),(w.error||w.blocked_on)&&(0,m.jsx)(`div`,{style:{marginTop:10},children:(0,m.jsx)(`span`,{className:`badge bad`,style:{maxWidth:`100%`,...d},children:w.error||w.blocked_on})})]}),(O||k)&&(0,m.jsxs)(`div`,{className:`grid gap-12`,style:{marginTop:12,gridTemplateColumns:O&&k?`minmax(0, 1fr) minmax(0, 1fr)`:`1fr`},children:[O&&(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsx)(`div`,{className:`card-head`,children:(0,m.jsxs)(`h3`,{children:[`Files touched `,(0,m.jsxs)(`span`,{className:`dim`,children:[`(`,E.count,`)`]})]})}),(0,m.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:E.items.map(e=>(0,m.jsxs)(`div`,{className:`row between gap-12`,style:{fontSize:13},children:[(0,m.jsx)(`span`,{className:`mono`,style:{...d,minWidth:0,flex:1},title:e.file,children:e.file}),(0,m.jsxs)(`span`,{style:{flexShrink:0},children:[(0,m.jsxs)(`span`,{style:{color:`var(--good)`},children:[`+`,e.additions]}),` `,(0,m.jsxs)(`span`,{style:{color:`var(--bad)`},children:[`−`,e.deletions]})]})]},e.file))})]}),k&&(0,m.jsxs)(`div`,{className:`card pad-md`,children:[(0,m.jsx)(`div`,{className:`card-head`,children:(0,m.jsxs)(`h3`,{children:[`Plan`,` `,(0,m.jsxs)(`span`,{className:`dim`,children:[`(`,D.done,`/`,D.total,`)`]})]})}),(0,m.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:D.items.map((e,t)=>(0,m.jsxs)(`div`,{className:`row gap-8`,style:{fontSize:13},children:[(0,m.jsx)(`span`,{className:`feed-dot ${e.status===`completed`?`ok`:e.status===`in_progress`?`acc`:``}`}),(0,m.jsx)(`span`,{style:{textDecoration:e.status===`completed`?`line-through`:`none`,color:e.status===`completed`?`var(--text-3)`:`inherit`},children:e.content})]},t))})]})]}),(0,m.jsxs)(`div`,{className:`card pad-md`,style:{marginTop:12},children:[(0,m.jsxs)(`div`,{className:`card-head`,style:{justifyContent:`space-between`,marginBottom:12},children:[(0,m.jsx)(`h3`,{children:`Timeline`}),j.length>0&&(0,m.jsx)(`button`,{className:`btn ghost sm`,onClick:()=>S(e=>!e),children:x?`Show conversation`:`Show all ${j.length} steps`})]}),x?(0,m.jsx)(`div`,{className:`stack gap-12`,children:M.map((e,t)=>(0,m.jsx)(g,{rec:e},t))}):(0,m.jsx)(_,{turns:A})]})]})}export{v as default};