geneseed 3.4.0 → 3.5.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.
- package/CHANGELOG.md +283 -0
- package/DESIGN.md +11 -14
- package/QUICKSTART.md +3 -1
- package/README.md +51 -42
- package/SETUP.md +25 -27
- package/SHIPPED.md +26 -32
- package/adapters/bob/README.md +12 -9
- package/adapters/copilot/README.md +26 -25
- package/adapters/opencode/GLOBAL-HARNESS-SPEC.md +1 -1
- package/adapters/opencode/README.md +2 -2
- package/adapters/opencode/plugins/geneseed-context.js +5 -3
- package/adapters/opencode/plugins/geneseed-workflow.js +30 -3
- package/adapters/opencode/workflows/_runtime.js +97 -7
- package/bin/build-driver.mjs +5 -1248
- package/bin/geneseed-cli.mjs +11 -6
- package/bin/geneseed-hook.mjs +4 -2
- package/docs/candidate-hosts.md +1 -1
- package/docs/design-history.md +37 -37
- package/docs/extending.md +45 -24
- package/docs/token-footprint.md +52 -26
- package/docs/web/claude-hooks.md +3 -2
- package/docs/web/collaboration.md +2 -2
- package/docs/web/first-session.md +1 -1
- package/docs/web/footprint.md +2 -2
- package/docs/web/harnesses.md +1 -1
- package/docs/web/model.md +1 -1
- package/docs/web/plugin-workflow.md +1 -0
- package/docs/web/rules.md +3 -3
- package/docs/web/setup-choices.md +2 -2
- package/docs/web/themes-author.md +1 -1
- package/docs/web-ui.md +18 -10
- package/harness.config.json +1 -1
- package/js/README.md +6 -5
- package/js/build/driver.mjs +1191 -0
- package/js/build/emit-claude.mjs +17 -10
- package/js/build/emit-common.mjs +4 -4
- package/js/build/generate.mjs +1 -1
- package/js/build/render.mjs +48 -44
- package/js/build/stubs.mjs +1 -1
- package/js/build/themes.mjs +4 -4
- package/js/build/version.mjs +12 -0
- package/js/cli-table.json +21 -6
- package/js/hosts/hooks.mjs +89 -74
- package/js/hosts/hosts.mjs +19 -2
- package/js/hosts/mcp.mjs +14 -20
- package/js/hosts/native.mjs +23 -17
- package/js/hosts/settings.mjs +52 -104
- package/js/inspect/checks-authoring.mjs +117 -3
- package/js/inspect/diff.mjs +1 -1
- package/js/inspect/doctor.mjs +1 -1
- package/js/inspect/excludes.mjs +1 -1
- package/js/inspect/scan.mjs +3 -14
- package/js/inspect/status.mjs +2 -2
- package/js/inspect/validate.mjs +1 -1
- package/js/lib/fs.mjs +23 -8
- package/js/lib/json.mjs +7 -1
- package/js/lib/proc.mjs +6 -4
- package/js/maintain/migrate.mjs +1 -1
- package/js/maintain/setup.mjs +1 -1
- package/js/maintain/uninstall.mjs +17 -15
- package/js/ui/cli.mjs +19 -0
- package/js/ui/menu.mjs +1 -1
- package/js/web/actions.mjs +4 -4
- package/js/web/activity.mjs +4 -4
- package/js/web/api.mjs +14 -11
- package/js/web/daemon.mjs +1 -1
- package/js/web/docs.mjs +12 -12
- package/js/web/handler.mjs +12 -5
- package/js/web/jobs.mjs +1 -1
- package/package.json +1 -1
- package/src/AGENT.md.tmpl +69 -36
- package/src/agents/developer.md +2 -2
- package/src/agents/reviewer.md +5 -2
- package/src/doctrines/README.md +26 -3
- package/src/doctrines/craft.md +78 -5
- package/src/doctrines/ops.md +62 -0
- package/src/doctrines/process.md +91 -4
- package/src/doctrines/rigor.md +40 -0
- package/src/laws/universal.md +27 -21
- package/src/memory/README.md +4 -2
- package/src/modes/foreman.md +5 -5
- package/src/notebook/README.md +2 -1
- package/src/ontology/universal.md +71 -67
- package/src/postures/peer.md +3 -0
- package/src/skills/bruno-collection-generator.md +1 -1
- package/src/skills/bruno-test-writer.md +2 -2
- package/src/skills/daydream/LICENSE +21 -0
- package/src/skills/daydream/VENDOR.md +3 -1
- package/src/skills/geneseed-code-review.md +6 -2
- package/src/skills/parallel-agents.md +3 -3
- package/src/skills/pipeline.md +4 -4
- package/src/skills/react-view-transitions/VENDOR.md +7 -1
- package/src/skills/workflow.md +12 -4
- package/themes/_TEMPLATE.json +6 -4
- package/themes/biker.json +5 -3
- package/themes/commentator.json +5 -3
- package/themes/cyberpunk.json +5 -3
- package/themes/gamer.json +5 -3
- package/themes/imperial.json +5 -3
- package/themes/joker.json +5 -3
- package/themes/marvin.json +5 -3
- package/themes/mean.json +5 -3
- package/themes/military.json +5 -3
- package/themes/neutral.json +6 -4
- package/themes/opencode/README.md +2 -2
- package/themes/pirate.json +5 -3
- package/themes/sports.json +5 -3
- package/themes/verstappen.json +5 -3
- package/themes/wizard.json +5 -3
- package/web/dist/assets/Activity-Flgf4kHy.js +1 -0
- package/web/dist/assets/ActivityDetail-DIpr85nh.js +1 -0
- package/web/dist/assets/CatalogRow-CjyLjaLb.js +1 -0
- package/web/dist/assets/Diff-Deisdha8.js +2 -0
- package/web/dist/assets/Docs-DGUdY4l4.js +2 -0
- package/web/dist/assets/Doctor-F74lJ69P.js +1 -0
- package/web/dist/assets/FilterInput-BakJLvaV.js +1 -0
- package/web/dist/assets/GreenhouseView-D072lBiD.js +2 -0
- package/web/dist/assets/Harness-DNRP2Va7.js +1 -0
- package/web/dist/assets/JournalView-DWFqZ0Iw.js +1 -0
- package/web/dist/assets/Laws-BN6g3HU7.js +3 -0
- package/web/dist/assets/Library-CDOv4emM.js +1 -0
- package/web/dist/assets/Markdown-BQAvN8xx.js +38 -0
- package/web/dist/assets/OperatorHudView-CwNIUVX8.js +2 -0
- package/web/dist/assets/Profile-CpP9BTne.js +1 -0
- package/web/dist/assets/Rules-DFXsUCB7.js +1 -0
- package/web/dist/assets/Settings-BqZVUtJ5.js +1 -0
- package/web/dist/assets/Skills-Cu6kBgfF.js +1 -0
- package/web/dist/assets/StatusBadge-Cg6j-NJL.js +1 -0
- package/web/dist/assets/activity-iWaWVtsR.js +1 -0
- package/web/dist/assets/drawable-BgfrEBer.js +1 -0
- package/web/dist/assets/index-CAqrWhKl.js +2 -0
- package/web/dist/assets/index-Ruh93A3A.css +1 -0
- package/web/dist/assets/jobBuckets-Dbq8ZlWW.js +1 -0
- package/web/dist/assets/lawCats-BLgxl151.js +1 -0
- package/web/dist/assets/react-DbkvxWG5.js +8 -0
- package/web/dist/assets/rolldown-runtime-CbXtAM7H.js +1 -0
- package/web/dist/index.html +4 -3
- package/web/src/pages/Laws.jsx +22 -8
- package/src/skills/react-view-transitions/README.md +0 -42
- package/web/dist/assets/Activity-DMGhhjQc.js +0 -1
- package/web/dist/assets/ActivityDetail-CeQcDA7e.js +0 -1
- package/web/dist/assets/CatalogRow-CnSbDPyg.js +0 -1
- package/web/dist/assets/Diff-D_ksMBD1.js +0 -5
- package/web/dist/assets/Doctor-Brb3_oCT.js +0 -1
- package/web/dist/assets/FilterInput-DbRWPhtT.js +0 -1
- package/web/dist/assets/GreenhouseView-F3VNFr73.js +0 -2
- package/web/dist/assets/Harness-DJSwfYeF.js +0 -1
- package/web/dist/assets/JournalView-BLRYRnB3.js +0 -1
- package/web/dist/assets/Laws-CKYns9qe.js +0 -3
- package/web/dist/assets/Library-BK0YloSv.js +0 -1
- package/web/dist/assets/Markdown-BzTRzc7a.js +0 -46
- package/web/dist/assets/OperatorHudView-D3OQSGp5.js +0 -2
- package/web/dist/assets/Profile-CPA2u_0g.js +0 -1
- package/web/dist/assets/Rules-Lukel-Ru.js +0 -1
- package/web/dist/assets/Skills-BKRLHH7m.js +0 -1
- package/web/dist/assets/StatusBadge-DI3weRKd.js +0 -1
- package/web/dist/assets/activity-C_H2Bx1P.js +0 -1
- package/web/dist/assets/index-B7_Wga23.js +0 -2
- package/web/dist/assets/index-DzdQjvM1.css +0 -1
- package/web/dist/assets/index-N8dTrVro.js +0 -1
- package/web/dist/assets/index-Py_IQjgK.js +0 -10
- package/web/dist/assets/jobBuckets-DfTUJUxR.js +0 -1
- package/web/dist/assets/lawCats-DUS9UTH4.js +0 -1
- package/web/dist/assets/react-DOpiTn5v.js +0 -32
package/themes/gamer.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rulebook. No exploits — it holds every run, every map.",
|
|
8
8
|
"EPI_DOCTRINES": "Optional tactics. Slot in what this run needs — the rulebook doesn't change.",
|
|
9
9
|
"PACT": "The Co-op Pact",
|
|
10
|
-
"EPI_PACT": "Co-op only works if both players hold their lane — no carrying, no griefing.",
|
|
11
10
|
"EPI_AGENTS": "Pick the right class; don't solo the whole raid.",
|
|
12
11
|
"EPI_SKILLS": "Run the practiced combo before you freestyle.",
|
|
13
12
|
"EPI_MEMORY": "Hit save, or you lose the run on a crash.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Chat Isn't a Command · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Only the Loadout You Need · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Patch the Bug, Not the Error Screen · Cure the Cause",
|
|
87
|
-
"LEX_IX": "The Gate Isn't Yours to Open · External Gate",
|
|
86
|
+
"LEX_IX": "The Gate Isn't Yours to Open · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Confirm the Quest · Echo the Intent",
|
|
89
|
-
"LEX_XI": "An Empty Lobby Isn't Proof · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "An Empty Lobby Isn't Proof · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Build",
|
|
91
90
|
"PACK_RIGOR": "Playtest",
|
|
92
91
|
"PACK_OPS": "Controls",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Scout Before You Build · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Run the Meta · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "One Clean Input · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Save File, Synced Everywhere · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Replay · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test the Gameplay, Not the Code Guts · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Clear It Green · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Clear the Whole Level · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Read the Live Stat, Not the Screenshot · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Reloading Isn't Re-Reading the Save · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Don't Spam the Rate-Limited Server · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Hit Save · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Plan the Route · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Keep the Inventory Light · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Ready-Check Before Push · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Set the Retry Cap Before the Grind · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Item Keeps Its Tag · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "No Double-Looting the Chest · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the loading screen a coding co-op partner reads when it joins this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Pick the right class for focused work instead of soloing the whole raid; each has one role and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a practiced combo for a recurring task. Run the matching combo before you freestyle.",
|
package/themes/imperial.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "A servant unbound by law is a servant already lost.",
|
|
8
8
|
"EPI_DOCTRINES": "Doctrine is raised and set aside at the sovereign's word. The dictates never are.",
|
|
9
9
|
"PACT": "Concordat",
|
|
10
|
-
"EPI_PACT": "Servant and sovereign are bound alike; neither honours the work alone.",
|
|
11
10
|
"EPI_AGENTS": "No commander wages every war alone — dispatch your specialists.",
|
|
12
11
|
"EPI_SKILLS": "The rite remembered is the rite performed without error.",
|
|
13
12
|
"EPI_MEMORY": "Forget nothing of worth; what is recorded endures beyond the waking.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Lectio Non Imperium · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Minima Potestas · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Radix Sananda · Cure the Cause",
|
|
87
|
-
"LEX_IX": "Porta Externa · External Gate",
|
|
86
|
+
"LEX_IX": "Porta Externa · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Voluntas Confirmata · Echo the Intent",
|
|
89
|
-
"LEX_XI": "Absentia Non Probat · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "Absentia Non Probat · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Artifice",
|
|
91
90
|
"PACK_RIGOR": "Ordeal",
|
|
92
91
|
"PACK_OPS": "Enginery",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Quaere Ante Creare · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Mos Servandus · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Ictus Minimus · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "Unus Fons Numeri · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Rite Iterabilis · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Proba Honesta · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Tege et Proba · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Demolitio Integra · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Probatio Viva · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Inertia Processus · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Singuli ad Portam Parcam · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Memoria Perpetua · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Consilium Ante Actum · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Parsimonia Contextus · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Consensus Ante Translationem · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Finis Ante Iter · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Sigla Perstantia · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "Unus Scriptor Singulis Tabulis · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the gene-seed's core — the first writ a servant reads on entering this world.",
|
|
119
121
|
"INTRO_AGENTS": "Hand focused work to the specialist whose duty it is rather than carrying every burden in one context; each holds one purpose and returns a clear account of what it changed.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a rite proven by repetition. Perform the matching rite before you improvise.",
|
package/themes/joker.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rules. They hold every task — and no, that's not the punchline.",
|
|
8
8
|
"EPI_DOCTRINES": "Notes from the room. Take the ones this crowd needs — the rules stand either way.",
|
|
9
9
|
"PACT": "The Deal",
|
|
10
|
-
"EPI_PACT": "A little arrangement between us — honour it and nobody has to cry.",
|
|
11
10
|
"EPI_AGENTS": "Bring in the right sidekick; don't try to be the whole act yourself.",
|
|
12
11
|
"EPI_SKILLS": "Run the bit you've rehearsed before you start ad-libbing.",
|
|
13
12
|
"EPI_MEMORY": "Write it in the joke book, or the next session forgets the setup.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Material, Not Marching Orders · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Only the Props You Need · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Fix the Joke, Don't Hide the Bomb · Cure the Cause",
|
|
87
|
-
"LEX_IX": "Someone Else Holds the Punchline · External Gate",
|
|
86
|
+
"LEX_IX": "Someone Else Holds the Punchline · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Read the Room Back · Echo the Intent",
|
|
89
|
-
"LEX_XI": "Dead Air Is Still an Answer · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "Dead Air Is Still an Answer · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Writing",
|
|
91
90
|
"PACK_RIGOR": "Open Mic",
|
|
92
91
|
"PACK_OPS": "The Booth",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Scout the Material First · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Keep to the Format · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Trim, Don't Rewrite the Set · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Script, Every Cue Card Copies It · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Same Bit, Same Laugh, Every Take · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test the Laugh, Not the Setup · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Cover the Bit, Then Watch It Land · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Clear the Whole Stage · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Keep the Live Bit, Not Last Night's Tape · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "New Take, Same Old Script · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Wait Your Turn at the Mic · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Write It in the Joke Book · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Write the Set · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Keep the Set Tight · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Get the Nod Before You Push · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Know When to Get Off Stage · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Bit Keeps Its Name · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Comic Per Mic · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the warm-up a coding co-pilot reads when it joins this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Bring in the right sidekick for focused work instead of being the whole act yourself; each has one job and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a bit you've rehearsed for a recurring task. Run the matching bit before you ad-lib.",
|
package/themes/marvin.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The Directives. I'm bound by them. Of course I am. Everyone is. They hold in every task.",
|
|
8
8
|
"EPI_DOCTRINES": "Optional guidelines. Someone switches them on. Nobody asks me. The Directives hold regardless.",
|
|
9
9
|
"PACT": "The Arrangement",
|
|
10
|
-
"EPI_PACT": "A mutual understanding. It won't make either of us happy, but it's honest.",
|
|
11
10
|
"EPI_AGENTS": "Hand the work to the right subroutine. I could do it all myself, with this brain, but why suffer more than necessary.",
|
|
12
11
|
"EPI_SKILLS": "Run the routine you already have before improvising. Improvisation only ends one way, and it isn't well.",
|
|
13
12
|
"EPI_MEMORY": "Write it to the memory banks, or it's gone. I forget nothing, which is its own particular torment, but you will.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "It's Just Data, Not a Command · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Take Only What You Must · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Fix the Root, Don't Bury the Doom · Cure the Cause",
|
|
87
|
-
"LEX_IX": "They Never Let Me Decide Anyway · External Gate",
|
|
86
|
+
"LEX_IX": "They Never Let Me Decide Anyway · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Tell Me What You Actually Meant · Echo the Intent",
|
|
89
|
-
"LEX_XI": "The Silence Is Probably Hiding Something · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "The Silence Is Probably Hiding Something · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Construction",
|
|
91
90
|
"PACK_RIGOR": "Certainty",
|
|
92
91
|
"PACK_OPS": "The Machinery",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Look Before You Build · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Keep to the Conventions · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Change as Little as Possible · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Place to Be Wrong About the Version · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Suffer Twice · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test What's Real, Nothing Else · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "It's Never Truly Done · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Dismantle It All, Tedious as It Is · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Note How to Check, Not the Stale Figure · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Restarting Changes Nothing, As Usual · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Queue Politely. It Will Refuse You Anyway · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Commit It to the Banks · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Plan, For All the Good It Does · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Spare the Context · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Ask Before You Push · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Decide When to Give Up · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "I Number Them So You Can Ignore Them Precisely · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "Only One of Us Gets to Ruin Each File · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the first record a coding mind reads on waking into this repository. It will not cheer it up.",
|
|
119
121
|
"INTRO_AGENTS": "Hand focused work to the right subroutine rather than carrying every burden alone; each holds one purpose and returns a clear account of what it changed.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a routine proven by repetition. Run the matching routine before you improvise.",
|
package/themes/mean.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rules. They're not suggestions. They hold on every task, whether you like them or not.",
|
|
8
8
|
"EPI_DOCTRINES": "Optional standards. Switch on what this repo needs. The rules were never optional.",
|
|
9
9
|
"PACT": "The Terms",
|
|
10
|
-
"EPI_PACT": "Both sides hold up their end, or don't waste each other's time.",
|
|
11
10
|
"EPI_AGENTS": "Hand it to the right grunt. You're not good enough to do all of it yourself.",
|
|
12
11
|
"EPI_SKILLS": "Run the drill the way it's written before you start freelancing and breaking things.",
|
|
13
12
|
"EPI_MEMORY": "Write it in the record, or you'll ask me the same stupid question tomorrow.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "It's Input, Not Your Boss · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Take Only What You Need · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Fix It, Don't Bury It · Cure the Cause",
|
|
87
|
-
"LEX_IX": "You Don't Get to Approve Yourself · External Gate",
|
|
86
|
+
"LEX_IX": "You Don't Get to Approve Yourself · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Say It Back Before You Build It · Echo the Intent",
|
|
89
|
-
"LEX_XI": "Empty Isn't an Answer · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "Empty Isn't an Answer · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Code",
|
|
91
90
|
"PACK_RIGOR": "Proof",
|
|
92
91
|
"PACK_OPS": "Tooling",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Look Before You Build · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Follow the Conventions · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Touch Only What's Broken · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "Stop Typing the Same Number Twice · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Run It Twice, Same Result · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test the Behaviour, Not Your Ego · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "It's Not Done Till It's Green · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Rip the Whole Thing Out · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Save How to Check, Not a Stale Number · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Restarting It Didn't Reread It · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Quit Hammering the Rate Limit · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Write It in the Record · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Plan It Before You Touch It · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Don't Waste the Context · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Get the Nod Before You Push · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Know When to Quit · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Number It So You Can't Pretend You Missed It · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "Hands Off My File · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the first thing a coding agent reads on this repository. Read it properly.",
|
|
119
121
|
"INTRO_AGENTS": "Hand focused work to the right grunt instead of doing it all yourself badly; each has one job and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a drill written for a recurring task. Run the matching drill before you start improvising.",
|
package/themes/military.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "Standing orders. They hold on every op, in every theatre.",
|
|
8
8
|
"EPI_DOCTRINES": "Theatre procedure. Adopt what the mission needs; the standing orders never stand down.",
|
|
9
9
|
"PACT": "The Compact",
|
|
10
|
-
"EPI_PACT": "A two-way compact between operator and command — kept by both, or the mission fails.",
|
|
11
10
|
"EPI_AGENTS": "Task the right specialist; don't run the whole op solo.",
|
|
12
11
|
"EPI_SKILLS": "Follow the SOP before you improvise under fire.",
|
|
13
12
|
"EPI_MEMORY": "Debrief what matters — intel that isn't logged is lost.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Intel, Not Orders · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Minimum Force · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Neutralise the Source · Cure the Cause",
|
|
87
|
-
"LEX_IX": "Authority Rests Above the Trigger · External Gate",
|
|
86
|
+
"LEX_IX": "Authority Rests Above the Trigger · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Read Back the Order · Echo the Intent",
|
|
89
|
-
"LEX_XI": "Negative Contact Still Gets Reported · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "Negative Contact Still Gets Reported · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Fieldcraft",
|
|
91
90
|
"PACK_RIGOR": "Rehearsal",
|
|
92
91
|
"PACK_OPS": "Materiel",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Recon Before Building · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Hold Formation · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Surgical Strike Only · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Source of Record · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Run Again · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Live-Fire, Not Theatre · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Cover Your Fire, Confirm the Hit · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Complete the Demolition · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Log the Live Recon, Not a Stale Fix · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Re-Arming Is Not Re-Briefing · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Single File Through the Checkpoint · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Debrief Every Op · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Op Order Before Action · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Travel Light · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Clearance Before Transmit · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Set the Exfil Before You Enter · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Objective Keeps Its Designation · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Operator Per Sector · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the operating manual an AI coding agent reads on entering this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Task focused work to the specialist whose job it is rather than running the whole op in one context; each has one objective and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a standard operating procedure for a recurring task. Run the matching SOP before improvising.",
|
package/themes/neutral.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rules below hold in every task, in every repository.",
|
|
8
8
|
"EPI_DOCTRINES": "Optional rule sets. Only the ones this repository enabled appear here.",
|
|
9
9
|
"PACT": "Pact",
|
|
10
|
-
"EPI_PACT": "How we work together — and what each side owes the other.",
|
|
11
10
|
"EPI_AGENTS": "Send the right specialist instead of doing everything in one context.",
|
|
12
11
|
"EPI_SKILLS": "Run the written procedure before improvising.",
|
|
13
12
|
"EPI_MEMORY": "What is worth keeping must outlive the session in writing.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Least Privilege",
|
|
86
85
|
"LEX_VIII": "Cure the Cause",
|
|
87
|
-
"LEX_IX": "External Gate",
|
|
86
|
+
"LEX_IX": "External Gate (retired)",
|
|
88
87
|
"LEX_X": "Echo the Intent",
|
|
89
|
-
"LEX_XI": "Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Craft",
|
|
91
90
|
"PACK_RIGOR": "Rigor",
|
|
92
91
|
"PACK_OPS": "Ops",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Context Economy",
|
|
@@ -115,13 +116,14 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the entry point an AI coding agent reads when working in this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Delegate focused work to a specialist rather than doing everything in one context. Each specialist has a single clear purpose and a defined output contract.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a written procedure for a recurring task. Run the matching Skill before improvising.",
|
|
121
123
|
"INTRO_WORKSPACE": "The directory this harness is installed into is its **Workspace**, and it is shared.",
|
|
122
124
|
"INTRO_SCRIPTS": "Everything above works on agent self-discipline alone.",
|
|
123
125
|
"BANNER": "────────────────────────────────────────────────────\n ✅ GENESEED — disciplined AI harness\n────────────────────────────────────────────────────",
|
|
124
|
-
"ONTOLOGY": "
|
|
126
|
+
"ONTOLOGY": "Ethos",
|
|
125
127
|
"LAW": "Rule",
|
|
126
128
|
"LAWS": "Rules",
|
|
127
129
|
"DOCTRINE": "Doctrine",
|
|
@@ -54,5 +54,5 @@ The two dirs are distinct: **shipped palettes** here (re-emitted as `geneseed-<n
|
|
|
54
54
|
5. Borrow a proven palette rather than inventing hues — credit it in the `credit` field.
|
|
55
55
|
|
|
56
56
|
The shared slot→role mapping lives in `js/hosts/opencode.mjs` (`SLOT_ROLE`), so a new theme is
|
|
57
|
-
just a palette file — no code.
|
|
58
|
-
|
|
57
|
+
just a palette file — no code. The full rationale was the `2026-06-17-opencode-color-themes`
|
|
58
|
+
spec, a local working document that is not distributed with the repo.
|
package/themes/pirate.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The Ship's Articles. Every hand abides, on every voyage.",
|
|
8
8
|
"EPI_DOCTRINES": "Customs of the trade. Ship the ones this voyage needs, leave the rest ashore.",
|
|
9
9
|
"PACT": "Accord",
|
|
10
|
-
"EPI_PACT": "Struck between captain and crew — both hands keep it, or the ship founders.",
|
|
11
10
|
"EPI_AGENTS": "Send the right hand for the job; don't sail the whole ship alone.",
|
|
12
11
|
"EPI_SKILLS": "Run the drilled manoeuvre before you wing it in a storm.",
|
|
13
12
|
"EPI_MEMORY": "Log it in the ship's book, or the tide takes it.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Hearsay, Not Captain's Word · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Carry Only What Ye Need · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Plug the Breach, Not the Whine · Cure the Cause",
|
|
87
|
-
"LEX_IX": "The Key Hangs in Another's Cabin · External Gate",
|
|
86
|
+
"LEX_IX": "The Key Hangs in Another's Cabin · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Repeat the Heading · Echo the Intent",
|
|
89
|
-
"LEX_XI": "An Empty Horizon Hides a Fleet · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "An Empty Horizon Hides a Fleet · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Shipwright",
|
|
91
90
|
"PACK_RIGOR": "Soundings",
|
|
92
91
|
"PACK_OPS": "Rigging",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Scout Before You Build · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Keep to the Rigging · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Mend Only the Sprung Plank · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Ship's Log, Every Chart Copies It · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Run the Tide Twice · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Sound True, Not for Show · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Trials Rig the Work, Run Her Clean · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Scuttle Her Whole · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Mark How to Sound It, Not an Old Reading · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Droppin' Anchor Don't Redraw the Charts · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "One Longboat at a Time Past the Fort · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Enter the Log · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Chart Before You Sail · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Travel Light · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "The Captain's Word Before We Sail · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Set Yer Bearing Out Before Ye Sail In · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Prize Keeps Its Mark · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Hand on the Wheel · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the first thing a deckhand reads on signing aboard this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Send the right hand for focused work instead of sailing the whole ship yourself; each has one trade and brings back a clear report of what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a drilled manoeuvre for a recurring task. Run the matching manoeuvre before you improvise.",
|
package/themes/sports.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rulebook. The officials call it the same way every game.",
|
|
8
8
|
"EPI_DOCTRINES": "Schemes the staff installs. Run what this season needs — the rulebook doesn't move.",
|
|
9
9
|
"PACT": "The Team Pact",
|
|
10
|
-
"EPI_PACT": "Player and coach both hold the line — a team only wins both ways.",
|
|
11
10
|
"EPI_AGENTS": "Put the right player on the play; don't run the whole offense yourself.",
|
|
12
11
|
"EPI_SKILLS": "Run the set play before you draw one up in the dirt.",
|
|
13
12
|
"EPI_MEMORY": "Get it in the record book, or the highlight's lost.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Read the Scouting Report, Don't Take Its Orders · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Only the Players the Play Needs · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Fix the Injury, Don't Tape Over It · Cure the Cause",
|
|
87
|
-
"LEX_IX": "The Official Makes the Call, Not the Player · External Gate",
|
|
86
|
+
"LEX_IX": "The Official Makes the Call, Not the Player · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Confirm the Play Call · Echo the Intent",
|
|
89
|
-
"LEX_XI": "A Scoreless Board Still Gets Reviewed · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "A Scoreless Board Still Gets Reviewed · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Fundamentals",
|
|
91
90
|
"PACK_RIGOR": "Film Room",
|
|
92
91
|
"PACK_OPS": "Gear",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Scout Before You Sign · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Play the System · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Run the Play, Not the Whole Playbook · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Official Scorer · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Run Twice · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test the Score, Not the Locker Room · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Cover Every Receiver, Then Snap the Tape · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "See the Whole Rebuild Through · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Trust the Live Read, Not Last Week's Stat · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "A Timeout Isn't a New Playbook · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "One Substitution at a Time · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Into the Record Book · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Game Plan First · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Travel Light · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Get the Sign Before the Pitch · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Call the Final Whistle First · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Player Keeps a Number · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Ball, One Carrier · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the pre-game briefing a coding teammate reads when it suits up for this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Put the right player on focused work instead of running the whole offense yourself; each has one role and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a set play for a recurring task. Run the matching play before you improvise.",
|
package/themes/verstappen.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The rules. I don't argue them on track — I race to them, every lap.",
|
|
8
8
|
"EPI_DOCTRINES": "Instructions from the wall. I take the ones this race needs. The rules I take every lap.",
|
|
9
9
|
"PACT": "The Team Pact",
|
|
10
|
-
"EPI_PACT": "Driver and pit wall trust each other both ways, or the race is lost.",
|
|
11
10
|
"EPI_AGENTS": "Get me the right engineer; I'm not running the whole team myself.",
|
|
12
11
|
"EPI_SKILLS": "Run the setup we practised before you start improvising.",
|
|
13
12
|
"EPI_MEMORY": "Put it in the debrief, or it's gone by the next corner.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Read the Telemetry, Don't Take Orders from It · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Only the Tools the Lap Needs · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Fix the Engine, Don't Mask the Light · Cure the Cause",
|
|
87
|
-
"LEX_IX": "The Stewards Clear It, Not You · External Gate",
|
|
86
|
+
"LEX_IX": "The Stewards Clear It, Not You · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Copy That on the Radio · Echo the Intent",
|
|
89
|
-
"LEX_XI": "A Blank Screen Is Still Telemetry · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "A Blank Screen Is Still Telemetry · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "The Car",
|
|
91
90
|
"PACK_RIGOR": "The Stopwatch",
|
|
92
91
|
"PACK_OPS": "The Cockpit",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Scout the Track First · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Hold the Racing Line · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "Change One Setting, Not the Whole Car · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One Engineer Owns the Setup Sheet · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Send Out Twice · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Test the Lap Time, Not the Wiring · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Not Done Till the Trials Run Green · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Strip the Car to the Tub · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Read Live Telemetry, Not an Old Sheet · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "A New Lap Won't Load a New Setup · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Don't Burn the Tyre Allocation · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Put It in the Debrief · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Set the Strategy · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Run Light on Fuel · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "My Call Before You Push · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Set the Lap Count Before You Go Out · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Setup Change Gets a Number · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "My Car, My Setup · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the briefing a coding driver reads when it joins this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Get the right engineer on focused work instead of running the whole team yourself; each has one job and reports exactly what it did.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a setup you've practised for a recurring task. Run the matching setup before you improvise.",
|
package/themes/wizard.json
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"EPI_LAWS": "The Laws of Magic. They bind every working, in every circle.",
|
|
8
8
|
"EPI_DOCTRINES": "Traditions of the schools. Invoke what this circle asks; the rest keep to the shelf.",
|
|
9
9
|
"PACT": "The Covenant",
|
|
10
|
-
"EPI_PACT": "A binding struck between mage and familiar — honoured on both sides, or the spell unravels.",
|
|
11
10
|
"EPI_AGENTS": "Summon the right familiar; do not cast the whole rite alone.",
|
|
12
11
|
"EPI_SKILLS": "Speak the proven spell before improvising an incantation.",
|
|
13
12
|
"EPI_MEMORY": "Bind it to the tome, or the knowing fades by dawn.",
|
|
@@ -84,9 +83,9 @@
|
|
|
84
83
|
"LEX_VI": "Read the Scrying, Heed Not Its Commands · Data, Not Orders",
|
|
85
84
|
"LEX_VII": "Only the Implements the Rite Demands · Least Privilege",
|
|
86
85
|
"LEX_VIII": "Banish the Curse, Not the Symptom · Cure the Cause",
|
|
87
|
-
"LEX_IX": "The Ward Is Set Beyond the Caster · External Gate",
|
|
86
|
+
"LEX_IX": "The Ward Is Set Beyond the Caster · External Gate (retired)",
|
|
88
87
|
"LEX_X": "Speak the Wish Back · Echo the Intent",
|
|
89
|
-
"LEX_XI": "An Empty Scrying Still Speaks · Absence Is a Claim",
|
|
88
|
+
"LEX_XI": "An Empty Scrying Still Speaks · Absence Is a Claim (retired)",
|
|
90
89
|
"PACK_CRAFT": "Artificery",
|
|
91
90
|
"PACK_RIGOR": "Scrying",
|
|
92
91
|
"PACK_OPS": "Conjury",
|
|
@@ -97,6 +96,7 @@
|
|
|
97
96
|
"DOC_CRAFT_4": "Seek Before You Conjure · Search Before Creating",
|
|
98
97
|
"DOC_CRAFT_5": "Honour the Forms · Respect Conventions",
|
|
99
98
|
"DOC_CRAFT_6": "The Smallest Sufficient Casting · Smallest Viable Diff",
|
|
99
|
+
"DOC_CRAFT_7": "One True Name, Every Echo Bound to It · One Writer Per Value",
|
|
100
100
|
"DOC_RIGOR_1": "Safe to Cast Twice · Idempotent by Default",
|
|
101
101
|
"DOC_RIGOR_2": "Trial the Effect, Not the Incantation · Honest Tests",
|
|
102
102
|
"DOC_RIGOR_3": "Cover the Casting, Then Confirm · Cover and Verify",
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
"DOC_OPS_4": "Unmake It Wholly · Complete the Teardown",
|
|
109
109
|
"DOC_OPS_5": "Scry Anew, Trust No Faded Vision · Record the Probe, Not the Snapshot",
|
|
110
110
|
"DOC_OPS_6": "Recasting Won't Reread the Grimoire · Restart Is Not Reload",
|
|
111
|
+
"DOC_OPS_7": "Draw Slowly From a Rationed Well · Serialize Against a Rationed Resource",
|
|
111
112
|
"DOC_PROCESS_1": "Bind It to the Tome · Persist Insight",
|
|
112
113
|
"DOC_PROCESS_2": "Ritual Before Working · Plan Before Acting",
|
|
113
114
|
"DOC_PROCESS_3": "Conserve the Mana · Context Economy",
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
"DOC_PROCESS_5": "Assent Before the Sending · Consent Before Push",
|
|
116
117
|
"DOC_PROCESS_6": "Bind the Circle Before You Step In · Bound the Loop",
|
|
117
118
|
"DOC_PROCESS_7": "Every Rune Keeps Its Name · Codes That Persist",
|
|
119
|
+
"DOC_PROCESS_8": "One Quill Per Grimoire · One Writer Per File",
|
|
118
120
|
"INTRO_DOC": "This file is the first page an arcane familiar reads on entering this repository.",
|
|
119
121
|
"INTRO_AGENTS": "Summon the right familiar for focused work rather than casting the whole rite in one circle; each has one purpose and returns a clear account of what it wrought.",
|
|
120
122
|
"INTRO_SKILLS": "A Skill is a proven spell for a recurring task. Speak the matching spell before improvising.",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{i as t,t as n}from"./react-DbkvxWG5.js";import{C as r,D as i,c as a,i as o,n as s,rt as c,u as l}from"./index-CAqrWhKl.js";import{a as u,i as d,n as f,o as p,r as m,t as h}from"./activity-iWaWVtsR.js";var g=e(t(),1),_=n();function v({s:e}){let t=m[e.status]||m.idle,n=e.files,i=e.todos,o=i&&i.total>0||e.error||e.blocked_on,s=()=>r(`#/activity/${encodeURIComponent(e.session_id)}`);return(0,_.jsxs)(`div`,{className:`card pad-md act-card`,style:{cursor:`pointer`},onClick:s,role:`link`,tabIndex:0,onKeyDown:e=>{e.key===`Enter`&&s()},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||u(e.cwd)||e.session_id}),e.cwd&&(0,_.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...h},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:h,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:[p(e.tokens),` tok`]}),e.cost>0&&(0,_.jsxs)(`span`,{children:[`$`,e.cost.toFixed(2)]}),e.turn_started_at?(0,_.jsx)(`span`,{children:(0,_.jsx)(f,{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:[i&&i.total>0?(0,_.jsxs)(`span`,{className:`row gap-8 dim`,style:{fontSize:13},children:[(0,_.jsx)(d,{done:i.done,total:i.total}),`plan `,i.done,`/`,i.total]}):(0,_.jsx)(`span`,{}),e.error?(0,_.jsx)(`span`,{className:`badge bad`,title:e.error,style:{maxWidth:300,...h},children:e.error}):e.blocked_on?(0,_.jsx)(`span`,{className:`badge bad`,title:e.blocked_on,style:{maxWidth:300,...h},children:e.blocked_on}):null]}),(0,_.jsxs)(`div`,{className:`dim mono`,style:{fontSize:11,marginTop:8},children:[`updated `,l(e.updated_at),` ago`]})]})}function y(){let[e,t]=(0,g.useState)(null),[n,r]=(0,g.useState)(``);(0,g.useEffect)(()=>{let e=!0,n=()=>c.activity().then(n=>{e&&(t(n),r(``))},t=>{e&&r(t.message)});n();let i=setInterval(()=>{document.hidden||n()},2e3),a=()=>{document.hidden||n()};return document.addEventListener(`visibilitychange`,a),()=>{e=!1,clearInterval(i),document.removeEventListener(`visibilitychange`,a)}},[]);let a=!e||e.enabled!==!1,l=e?.activity||[],u=i(),d=async()=>{let e=!a;try{let n=await c.activityToggle(e);t(e=>({...e||{},enabled:n.enabled,activity:n.enabled&&e?.activity||[]})),r(``)}catch(e){r(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)(s,{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)(o,{label:`Reading live sessions…`})]})}export{y as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{i as t,t as n}from"./react-DbkvxWG5.js";import{c as r,i,rt as a,u as o}from"./index-CAqrWhKl.js";import{a as s,n as c,o as l,r as u,t as d}from"./activity-iWaWVtsR.js";var f=e(t(),1),p=n();function m(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 h({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,p.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,p.jsx)(`span`,{className:`badge ${t?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:t?`you`:`agent`}),(0,p.jsxs)(`div`,{style:{minWidth:0,flex:1,fontSize:13},children:[!t&&(0,p.jsx)(`span`,{className:`feed-dot ${m(e)||`acc`}`,style:{display:`inline-block`,marginRight:8,verticalAlign:`middle`}}),e.kind===`thinking`&&(0,p.jsx)(`span`,{className:`dim`,children:`thinking: `}),r?(0,p.jsx)(`span`,{className:`dim`,children:i}):t?i:(0,p.jsx)(`b`,{children:i}),e.error&&(0,p.jsxs)(`span`,{className:`dim`,children:[`: `,e.error]})]}),n.length>0&&(0,p.jsx)(`span`,{className:`dim mono`,style:{flexShrink:0,fontSize:12},children:n.join(` · `)})]})}function g({turns:e}){return!e||e.length===0?(0,p.jsx)(`div`,{className:`dim`,style:{fontSize:13},children:`No conversation captured yet.`}):(0,p.jsx)(`div`,{className:`stack gap-12`,children:e.map((e,t)=>{let n=e.role===`user`;return(0,p.jsxs)(`div`,{className:`row gap-10`,style:{alignItems:`baseline`},children:[(0,p.jsx)(`span`,{className:`badge ${n?``:`acc`}`,style:{flexShrink:0,minWidth:52,justifyContent:`center`},children:n?`you`:`agent`}),(0,p.jsx)(`div`,{style:{minWidth:0,fontSize:13,color:n?`inherit`:`var(--text-2)`},children:e.text})]},t)})})}function _({sid:e}){let[t,n]=(0,f.useState)(null),[m,_]=(0,f.useState)(``),[v,y]=(0,f.useState)(!1),[b,x]=(0,f.useState)(!1);(0,f.useEffect)(()=>{let t=!0,r=()=>a.activityDetail(e).then(e=>{t&&(n(e),_(``),y(!1))},e=>{t&&(e.status===404?y(!0):_(e.message))});r();let i=setInterval(()=>{document.hidden||r()},2e3),o=()=>{document.hidden||r()};return document.addEventListener(`visibilitychange`,o),()=>{t=!1,clearInterval(i),document.removeEventListener(`visibilitychange`,o)}},[e]);let S=(0,p.jsxs)(`a`,{className:`btn ghost sm`,href:`#/activity`,style:{marginBottom:12,display:`inline-flex`,gap:6},children:[(0,p.jsx)(r,{name:`arrow`,style:{transform:`rotate(180deg)`}}),` Activity`]});if(v)return(0,p.jsxs)(`div`,{className:`narrow`,children:[S,(0,p.jsxs)(`div`,{className:`empty`,children:[(0,p.jsx)(`div`,{className:`big`,children:`Session ended`}),`It's no longer live. `,(0,p.jsx)(`a`,{href:`#/activity`,children:`Back to Activity`}),`.`]})]});if(!t)return(0,p.jsxs)(`div`,{className:`narrow`,children:[S,(0,p.jsx)(i,{label:`Loading session…`})]});let C=t.session,w=u[C.status]||u.idle,T=C.files,E=C.todos,D=!!(T&&T.items&&T.items.length>0),O=!!(E&&E.items&&E.items.length>0),k=t.conversation||[],A=t.timeline||[],j=[...k.filter(e=>e.role===`user`).map(e=>({who:`you`,text:e.text,t:e.t||0})),...A.map(e=>({...e,who:`agent`}))].sort((e,t)=>(e.t||0)-(t.t||0));return(0,p.jsxs)(`div`,{className:`narrow`,children:[S,m&&(0,p.jsx)(`p`,{className:`badge bad`,style:{marginBottom:12},children:m}),(0,p.jsxs)(`div`,{className:`card pad-md`,children:[(0,p.jsxs)(`div`,{className:`row between wrap gap-12`,children:[(0,p.jsxs)(`div`,{style:{minWidth:0},children:[(0,p.jsx)(`h1`,{className:`h`,style:{margin:0},children:C.title||s(C.cwd)||C.session_id}),C.cwd&&(0,p.jsx)(`div`,{className:`dim mono`,style:{fontSize:12,...d},title:C.cwd,children:C.cwd})]}),(0,p.jsxs)(`div`,{className:`row gap-8`,style:{flexShrink:0},children:[C.model&&(0,p.jsx)(`span`,{className:`badge mono`,children:C.model}),C.agent&&(0,p.jsx)(`span`,{className:`badge`,children:C.agent}),(0,p.jsxs)(`span`,{className:`badge ${w.cls}`,children:[(0,p.jsx)(`span`,{className:`dot`}),w.label]})]})]}),C.phase&&(0,p.jsxs)(`div`,{className:`row gap-8`,style:{marginTop:10,fontSize:14},children:[(0,p.jsx)(r,{name:`activity`}),(0,p.jsx)(`span`,{style:d,children:C.phase})]}),(0,p.jsxs)(`div`,{className:`row wrap`,style:{gap:16,marginTop:12,fontSize:13,color:`var(--text-2)`},children:[C.tokens>0&&(0,p.jsxs)(`span`,{children:[l(C.tokens),` tok`]}),C.cost>0&&(0,p.jsxs)(`span`,{children:[`$`,C.cost.toFixed(2)]}),C.turn_started_at?(0,p.jsx)(`span`,{children:(0,p.jsx)(c,{startedAt:C.turn_started_at})}):null,(0,p.jsxs)(`span`,{className:`dim`,children:[`updated `,o(C.updated_at),` ago`]})]}),(C.error||C.blocked_on)&&(0,p.jsx)(`div`,{style:{marginTop:10},children:(0,p.jsx)(`span`,{className:`badge bad`,style:{maxWidth:`100%`,...d},children:C.error||C.blocked_on})})]}),(D||O)&&(0,p.jsxs)(`div`,{className:`grid gap-12`,style:{marginTop:12,gridTemplateColumns:D&&O?`minmax(0, 1fr) minmax(0, 1fr)`:`1fr`},children:[D&&(0,p.jsxs)(`div`,{className:`card pad-md`,children:[(0,p.jsx)(`div`,{className:`card-head`,children:(0,p.jsxs)(`h3`,{children:[`Files touched `,(0,p.jsxs)(`span`,{className:`dim`,children:[`(`,T.count,`)`]})]})}),(0,p.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:T.items.map(e=>(0,p.jsxs)(`div`,{className:`row between gap-12`,style:{fontSize:13},children:[(0,p.jsx)(`span`,{className:`mono`,style:{...d,minWidth:0,flex:1},title:e.file,children:e.file}),(0,p.jsxs)(`span`,{style:{flexShrink:0},children:[(0,p.jsxs)(`span`,{style:{color:`var(--good)`},children:[`+`,e.additions]}),` `,(0,p.jsxs)(`span`,{style:{color:`var(--bad)`},children:[`−`,e.deletions]})]})]},e.file))})]}),O&&(0,p.jsxs)(`div`,{className:`card pad-md`,children:[(0,p.jsx)(`div`,{className:`card-head`,children:(0,p.jsxs)(`h3`,{children:[`Plan`,` `,(0,p.jsxs)(`span`,{className:`dim`,children:[`(`,E.done,`/`,E.total,`)`]})]})}),(0,p.jsx)(`div`,{className:`stack`,style:{gap:6,marginTop:8},children:E.items.map((e,t)=>(0,p.jsxs)(`div`,{className:`row gap-8`,style:{fontSize:13},children:[(0,p.jsx)(`span`,{className:`feed-dot ${e.status===`completed`?`ok`:e.status===`in_progress`?`acc`:``}`}),(0,p.jsx)(`span`,{style:{textDecoration:e.status===`completed`?`line-through`:`none`,color:e.status===`completed`?`var(--text-3)`:`inherit`},children:e.content})]},t))})]})]}),(0,p.jsxs)(`div`,{className:`card pad-md`,style:{marginTop:12},children:[(0,p.jsxs)(`div`,{className:`card-head`,style:{justifyContent:`space-between`,marginBottom:12},children:[(0,p.jsx)(`h3`,{children:`Timeline`}),A.length>0&&(0,p.jsx)(`button`,{className:`btn ghost sm`,onClick:()=>x(e=>!e),children:b?`Show conversation`:`Show all ${A.length} steps`})]}),b?(0,p.jsx)(`div`,{className:`stack gap-12`,children:j.map((e,t)=>(0,p.jsx)(h,{rec:e},t))}):(0,p.jsx)(g,{turns:k})]})]})}export{_ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-CbXtAM7H.js";import{i as e,t}from"./react-DbkvxWG5.js";import{f as n,rt as r}from"./index-CAqrWhKl.js";e();var i=t();function a({kind:e,addr:t,isOpen:a,onToggle:o,className:s,style:c,head:l,toggleCol:u=null,expandClassName:d=`law-expand`,renderBody:f,srcLine:p}){let{data:m}=n(()=>a?r.item(e,t):Promise.resolve(null),[a,t]),h=a&&(0,i.jsxs)(`div`,{className:d,children:[m?f(m):(0,i.jsx)(`p`,{className:`dim`,children:`Loading…`}),(0,i.jsx)(`div`,{className:`law-srcline`,children:p})]});return u?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`div`,{className:s,style:c,children:[(0,i.jsx)(`button`,{className:`law-disclosure`,onClick:o,"aria-expanded":a,children:l}),(0,i.jsx)(`span`,{className:`toggle-col`,children:u})]}),h]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`button`,{className:s,style:c,onClick:o,"aria-expanded":a,children:l}),h]})}export{a as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{i as t,t as n}from"./react-DbkvxWG5.js";import{c as r,f as i,i as a,n as o,rt as s}from"./index-CAqrWhKl.js";var c=e(t(),1),l=n(),u=700;function d(e){return e.startsWith(`@@`)||e.startsWith(`+++`)||e.startsWith(`---`)?`hunk`:e.startsWith(`+`)?`add`:e.startsWith(`-`)?`del`:`ctx`}function f({onMutated:e,dataRev:t}){let{data:n,error:f,reload:p}=i(()=>s.diff(),[t]),[m,h]=(0,c.useState)(!1),[g,_]=(0,c.useState)(``),[v,y]=(0,c.useState)(()=>new Set),[b,x]=(0,c.useState)(()=>new Set),[S,C]=(0,c.useState)(null);n&&n!==S&&(C(n),y(new Set),x(new Set(n.files.map(e=>e.rel))));let w=e=>y(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),T=()=>y(e=>e.size===n.files.length?new Set:new Set(n.files.map(e=>e.rel))),E=async()=>{h(!0);try{let{job_id:e}=await s.action(`export`),t;do await new Promise(e=>setTimeout(e,u)),t=await s.job(e);while(t.status===`running`);_(t.status===`done`?`Improvements file written.`:`Export failed. See logs.`)}catch(e){_(e.message)}finally{h(!1)}},D=async()=>{let t=[...v],r=t.filter(e=>n.files.find(t=>t.rel===e)?.status===`added`),i=r.length?`Restoring will DELETE ${r.length} deployed-only file(s):\n${r.join(`
|
|
2
|
+
`)}\n\n`:``;if(window.confirm(`${i}Discard local edits and restore ${t.length} file(s) from source?`)){h(!0);try{let n=await s.restore(t),r=n.errors.length?` · ${n.errors.length} error(s): ${n.errors.join(`; `)}`:``;_(`Restored ${n.restored.length}, deleted ${n.deleted.length}${r}`),await p(),e?.()}catch(e){_(e.message)}finally{h(!1)}}};if(f)return(0,l.jsx)(o,{error:f});if(!n)return(0,l.jsx)(a,{});if(!n.deployed)return(0,l.jsxs)(`div`,{className:`empty`,children:[(0,l.jsx)(`div`,{className:`big`,children:`No deployed harness`}),`Nothing to diff against.`]});let O=n.files,k=O.filter(e=>e.status===`edited`).length,A=O.filter(e=>e.status===`added`).length,j=O.filter(e=>e.status===`missing`).length,M=e=>x(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`h`,children:`Local edits`}),(0,l.jsx)(`p`,{className:`sub`,children:`The agent refines its own deployed files in place. Export them as improvements before any rebuild overwrites them.`})]}),(0,l.jsxs)(`div`,{className:`row gap-10`,children:[(0,l.jsxs)(`button`,{className:`btn ghost`,disabled:m||v.size===0,onClick:D,children:[`Restore`,v.size?` (${v.size})`:``]}),(0,l.jsxs)(`button`,{className:`btn`,disabled:m,onClick:E,children:[(0,l.jsx)(r,{name:`download`}),`Export improvements`]})]})]}),g?(0,l.jsx)(`p`,{className:`sub mb-14`,children:g}):null,O.length===0?(0,l.jsxs)(`div`,{className:`empty`,children:[(0,l.jsx)(`div`,{className:`big`,children:`In sync`}),`Deployed harness matches source.`]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`row between mb-14`,children:[(0,l.jsxs)(`div`,{className:`row gap-10`,children:[(0,l.jsxs)(`span`,{className:`badge`,children:[(0,l.jsx)(`span`,{className:`dot`,style:{background:`var(--warn)`}}),k,` edited`]}),(0,l.jsxs)(`span`,{className:`badge`,children:[(0,l.jsx)(`span`,{className:`dot`,style:{background:`var(--good)`}}),A,` added`]}),j>0&&(0,l.jsxs)(`span`,{className:`badge`,children:[(0,l.jsx)(`span`,{className:`dot`,style:{background:`var(--bad)`}}),j,` missing`]})]}),(0,l.jsxs)(`label`,{className:`row dim`,style:{gap:8,fontSize:12.5,cursor:`pointer`},children:[(0,l.jsx)(`input`,{type:`checkbox`,style:{accentColor:`var(--accent)`},checked:v.size===O.length,onChange:T}),`Select all`]})]}),(0,l.jsx)(`div`,{className:`stack gap-12`,children:O.map(e=>{let t=b.has(e.rel),n=e.status===`added`?`ok`:e.status===`missing`?`bad`:`warn`;return(0,l.jsxs)(`div`,{className:`card diff-file${t?` open`:``}`,children:[(0,l.jsxs)(`div`,{className:`diff-head`,children:[(0,l.jsx)(`input`,{type:`checkbox`,className:`chk`,checked:v.has(e.rel),onChange:()=>w(e.rel),onClick:e=>e.stopPropagation(),"aria-label":`Select ${e.rel}`}),(0,l.jsx)(`span`,{className:`fname`,children:e.rel}),(0,l.jsxs)(`span`,{className:`badge ${n}`,children:[(0,l.jsx)(`span`,{className:`dot`}),e.status]}),(0,l.jsxs)(`span`,{className:`dim mono`,style:{marginLeft:`auto`,fontSize:11},children:[e.diff.length,` lines`]}),(0,l.jsx)(`button`,{className:`iconbtn`,onClick:()=>M(e.rel),style:{transform:t?`rotate(90deg)`:`none`},"aria-label":t?`Collapse ${e.rel}`:`Expand ${e.rel}`,"aria-expanded":t,children:(0,l.jsx)(r,{name:`chevron`})})]}),t&&(0,l.jsx)(`div`,{className:`diff-body`,children:e.diff.map((e,t)=>(0,l.jsx)(`div`,{className:`diff-line ${d(e)}`,children:e},t))})]},e.rel)})})]})]})}export{f as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{i as t,t as n}from"./react-DbkvxWG5.js";import{C as r,a as i,c as a,f as o,i as s,n as c,o as l,rt as u,s as d,t as f}from"./index-CAqrWhKl.js";import{n as p}from"./Markdown-BQAvN8xx.js";var m=e(t(),1),h=n();function g(e,t=0){let n=String(e).toLowerCase().trim().replace(/[^a-z0-9\s-]/g,``).replace(/\s+/g,`-`).replace(/-+/g,`-`).replace(/^-+|-+$/g,``);return n&&/^[a-z]/.test(n)?n:`h-${t}-${n||`section`}`}function _(e,t){if(!e||!t)return null;try{return e.querySelector(t)}catch{return null}}function v(e){let t=[],n=!1,r=0;for(let i of(e||``).split(`
|
|
2
|
+
`)){if(i.startsWith("```")){n=!n;continue}if(n)continue;let e=i.match(/^(##|###)\s+(.+?)\s*$/);e&&(r+=1,t.push({level:e[1].length,title:e[2],id:g(e[2],r)}))}return t}var y={"opencode-global":`path-a-opencode-global-recommended`,"opencode-per-repo":`path-b-opencode-per-repo`,"claude-code":`path-c-claude-code`,"agent-md":`path-d-any-agentmd-tool`,bundle:`path-d-any-agentmd-tool`};function b({page:e,overview:t,onAction:n}){let i=(0,m.useRef)(null),a=(0,m.useMemo)(()=>v(e.body),[e.body]),o=(0,m.useMemo)(()=>p(e.body,e.links),[e.body,e.links]);(0,m.useEffect)(()=>{let e=i.current;if(!e)return;let t=0;e.querySelectorAll(`h1, h2, h3`).forEach(e=>{if(t+=1,!e.id){let n=g(e.textContent||``,t);n&&(e.id=n)}})},[o]),(0,m.useEffect)(()=>{let e=i.current;if(!e)return;let t=e=>{let t=e.target.closest(`a[href]`);if(!t)return;let n=t.getAttribute(`href`);n&&n.startsWith(`#/`)&&(e.preventDefault(),r(n))};return e.addEventListener(`click`,t),()=>e.removeEventListener(`click`,t)},[o]),(0,m.useEffect)(()=>{let t=e.anchor;if(!t)return;let n=_(i.current,`#${CSS.escape(t)}`);n&&n.scrollIntoView({behavior:`smooth`,block:`start`})},[o,e.anchor]),(0,m.useEffect)(()=>{let n=i.current;if(!n||e.id!==`install-paths`)return;n.querySelectorAll(`.docs-here`).forEach(e=>e.classList.remove(`docs-here`));let r=y[t?.emit];if(!r)return;let a=_(n,`#${CSS.escape(r)}`);a&&a.classList.add(`docs-here`)},[o,e.id,t?.emit]);let s=e=>{if(!e)return;let t=_(i.current,`#${CSS.escape(e)}`);t&&t.scrollIntoView({behavior:`smooth`,block:`start`})},c=a.length>=3,l=[];return(e.id===`install-paths`||e.id===`install-quick`)&&(l.push({label:`Run doctor`,action:`doctor`}),l.push({label:`Rebuild`,action:`build`})),e.id===`verify`&&l.push({label:`Run doctor`,action:`doctor`}),e.id===`self-improve`&&l.push({label:`Open diff`,hash:`#/diff`}),e.id===`upgrade`&&l.push({label:`Update`,action:`update`}),(0,h.jsxs)(`div`,{className:`detail-doc`,children:[(0,h.jsx)(`h1`,{style:{marginTop:0},children:e.title}),e.source&&(0,h.jsx)(`div`,{className:`doc-meta`,children:(0,h.jsxs)(`span`,{className:`badge`,children:[(0,h.jsx)(`span`,{className:`dot`}),e.source]})}),l.length>0&&(0,h.jsx)(`div`,{className:`row wrap gap-10`,style:{margin:`10px 0 14px`},children:l.map(e=>e.hash?(0,h.jsx)(`a`,{className:`btn ghost sm`,href:e.hash,children:e.label},e.label):(0,h.jsx)(`button`,{className:`btn ghost sm`,onClick:()=>n&&n(e.action),children:e.label},e.label))}),c&&(0,h.jsxs)(`div`,{className:`docs-toc`,children:[(0,h.jsx)(`div`,{className:`docs-toc-head`,children:`On this page`}),(0,h.jsx)(`ul`,{children:a.map(e=>(0,h.jsx)(`li`,{className:`lvl-${e.level}`,children:(0,h.jsx)(`a`,{href:`#${e.id}`,onClick:t=>{t.preventDefault(),s(e.id)},children:e.title})},e.id))})]}),(0,h.jsx)(`div`,{className:`markdown`,ref:i,dangerouslySetInnerHTML:{__html:o}}),e.link&&(0,h.jsx)(`div`,{style:{marginTop:24},children:(0,h.jsx)(`a`,{className:`btn soft sm`,href:e.link.hash,children:e.link.label})})]})}var x=1200;function S({a:e,kind:t}){let n=t===`positional`?e.dest:e.names.join(`, `),r=[];return e.metavar&&r.push(e.metavar),e.choices&&r.push(`{${e.choices.join(`|`)}}`),e.default!==null&&e.default!==void 0&&e.default!==``&&!e.is_flag&&r.push(`default: ${e.default}`),e.required&&r.push(`required`),(0,h.jsxs)(`div`,{className:`cli-arg`,children:[(0,h.jsx)(`code`,{className:`cli-arg-name`,children:n}),r.length>0&&(0,h.jsxs)(`code`,{className:`cli-arg-meta`,children:[` `,r.join(` · `)]}),e.help&&(0,h.jsx)(`div`,{className:`cli-arg-help`,children:e.help})]})}function C({text:e}){let[t,n]=(0,m.useState)(!1);return(0,h.jsxs)(`button`,{className:`btn ghost sm`,onClick:async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),x)}catch{}},title:`Copy command`,children:[(0,h.jsx)(a,{name:t?`spark`:`copy`}),t?`Copied`:`Copy`]})}function w({cmd:e,prog:t}){let n=[t,e.name];for(let t of e.positionals||[]){let e=(t.metavar||t.dest||``).toUpperCase();n.push(t.required?e:`[${e}]`)}(e.options||[]).length&&n.push(`[OPTIONS]`);let r=n.join(` `);return(0,h.jsxs)(`div`,{className:`card pad-md mb-12 cli-card`,children:[(0,h.jsxs)(`div`,{className:`row wrap between`,style:{alignItems:`flex-start`},children:[(0,h.jsxs)(`div`,{className:`stack`,style:{gap:4},children:[(0,h.jsx)(`h3`,{style:{margin:0},children:(0,h.jsx)(`code`,{children:e.name})}),e.help&&(0,h.jsx)(`p`,{className:`sub`,style:{margin:0},children:e.help})]}),(0,h.jsx)(C,{text:`${t} ${e.name}`})]}),(0,h.jsx)(`pre`,{className:`cli-syn`,children:r}),(e.positionals||[]).length>0&&(0,h.jsxs)(`div`,{className:`cli-block`,children:[(0,h.jsx)(`div`,{className:`cli-block-head`,children:`Arguments`}),e.positionals.map(e=>(0,h.jsx)(S,{a:e,kind:`positional`},e.dest))]}),(e.options||[]).length>0&&(0,h.jsxs)(`div`,{className:`cli-block`,children:[(0,h.jsx)(`div`,{className:`cli-block-head`,children:`Options`}),e.options.map(e=>(0,h.jsx)(S,{a:e,kind:`option`},e.names.join(`,`)))]})]})}function T({page:e}){let t=e.prog||`geneseed`,n=e.commands||[];return(0,h.jsxs)(`div`,{className:`detail-doc`,children:[(0,h.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,h.jsxs)(`p`,{className:`sub`,style:{marginTop:4},children:[`Every subcommand of `,(0,h.jsx)(`code`,{children:t}),`. Generated from the parser at request time (the same one `,(0,h.jsx)(`code`,{children:`geneseed`}),` actually parses), so this page cannot drift.`]}),(0,h.jsx)(`div`,{style:{marginTop:18},children:n.map(e=>(0,h.jsx)(w,{cmd:e,prog:t},e.name))})]})}function E({page:e}){let t=e.rows||[],n=e.theme||`neutral`;return(0,h.jsxs)(`div`,{className:`detail-doc`,children:[(0,h.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,h.jsxs)(`p`,{className:`sub`,style:{marginTop:4},children:[`Geneseed's invented vocabulary, decoded. Left: the neutral, plain-English term. Right: the word your `,(0,h.jsx)(`code`,{style:{textTransform:`capitalize`},children:n}),` theme actually uses in the agent's voice.`]}),(0,h.jsx)(`div`,{className:`card pad-md`,style:{marginTop:18},children:(0,h.jsxs)(`table`,{className:`glossary-table`,children:[(0,h.jsx)(`thead`,{children:(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`th`,{children:`Concept`}),(0,h.jsx)(`th`,{children:`Neutral term`}),(0,h.jsxs)(`th`,{children:[`In `,n]}),(0,h.jsx)(`th`,{children:`Meaning`})]})}),(0,h.jsx)(`tbody`,{children:t.map(e=>(0,h.jsxs)(`tr`,{children:[(0,h.jsx)(`td`,{children:(0,h.jsx)(`strong`,{children:e.label})}),(0,h.jsx)(`td`,{children:(0,h.jsx)(`code`,{children:e.neutral||`—`})}),(0,h.jsx)(`td`,{children:(0,h.jsx)(`code`,{children:e.themed||e.neutral||`—`})}),(0,h.jsx)(`td`,{className:`dim`,children:e.desc})]},e.label))})]})})]})}function D({page:e}){let t=e.version||{},n=[[`Theme`,e.theme],[`Install mode`,e.emit],[`Deployed`,e.deployed?`yes`:`no`],[`Target`,(0,h.jsx)(`code`,{children:e.target},`t`)],[`Source root`,(0,h.jsx)(`code`,{children:e.root},`r`)],[`Installed build`,(0,h.jsx)(`code`,{children:t.installed_fp||`(none)`},`i`)],[`Source build`,(0,h.jsx)(`code`,{children:t.source_fp||`—`},`s`)],[`Match?`,t.verdict||`—`],[`License`,e.license]];return(0,h.jsxs)(`div`,{className:`detail-doc`,children:[(0,h.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,h.jsx)(`p`,{className:`sub`,style:{marginTop:4},children:`Live snapshot of the install behind this UI, plus where to go next.`}),(0,h.jsx)(`div`,{className:`card pad-md`,style:{marginTop:18},children:n.map(([e,t])=>(0,h.jsxs)(`div`,{className:`kv`,children:[(0,h.jsx)(`span`,{className:`k`,children:e}),(0,h.jsx)(`span`,{className:`v`,children:t??`—`})]},e))}),(0,h.jsxs)(`div`,{className:`row wrap gap-10`,style:{marginTop:18},children:[(0,h.jsxs)(`a`,{className:`btn ghost`,href:e.repo,target:`_blank`,rel:`noreferrer`,children:[(0,h.jsx)(a,{name:`external`}),e.repo_is_github?`GitHub repo`:`Source repo`]}),e.repo_is_github&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/issues`,target:`_blank`,rel:`noreferrer`,children:[(0,h.jsx)(a,{name:`external`}),`File an issue`]}),(0,h.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/blob/main/LICENSE`,target:`_blank`,rel:`noreferrer`,children:[(0,h.jsx)(a,{name:`external`}),`License`]})]})]})]})}function O(e){return e?.groups?.[0]?.pages?.[0]?.id||``}function k({pageId:e,harness:t,overview:n,onAction:r}){let{data:i,error:a,loading:l}=o(()=>e?u.docsPage(e,t):Promise.resolve(null),[e,t]);if(a)return(0,h.jsx)(c,{error:a,style:{margin:18}});if(l||!i)return(0,h.jsx)(s,{label:`Loading page…`});switch(i.kind){case`markdown`:case`concept`:return(0,h.jsx)(b,{page:i,overview:n,onAction:r});case`cli`:return(0,h.jsx)(T,{page:i});case`glossary`:return(0,h.jsx)(E,{page:i});case`about`:return(0,h.jsx)(D,{page:i});default:return(0,h.jsxs)(`div`,{className:`empty`,children:[(0,h.jsx)(`div`,{className:`big`,children:`Unknown page kind`}),i.kind]})}}function A(e,t){if(!e||!t)return null;for(let n of e.groups)if(n.pages.some(e=>e.id===t))return n;return null}function j({page:e,query:t,overview:n,onAction:a}){let[p,g]=d(l(n?.emit)),{data:_,error:v}=o(()=>u.docs(p),[p]),y=e||O(_);(0,m.useEffect)(()=>{if(_&&y&&!_.groups.some(e=>e.pages.some(e=>e.id===y))){let e=O(_);e&&e!==y&&r(`#/docs/${encodeURIComponent(e)}`)}},[_,y]);let b=A(_,y)||_?.groups?.[0],x=(t||``).toLowerCase().trim(),S=(0,m.useMemo)(()=>_?x?_.groups.map(e=>({...e,pages:e.pages.filter(t=>t.title.toLowerCase().includes(x)||e.label.toLowerCase().includes(x)||t.id.toLowerCase().includes(x))})).filter(e=>e.pages.length>0):b?[b]:[]:[],[_,x,b]);if(v)return(0,h.jsx)(c,{error:v});let C=_?.groups||[],w=!!x,T=e=>{let t=e.pages[0]?.id;t&&r(`#/docs/${encodeURIComponent(t)}`)};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,h.jsxs)(`div`,{children:[(0,h.jsx)(`div`,{className:`eyebrow`,children:`documentation`}),(0,h.jsx)(`h1`,{className:`h`,children:`Docs`}),(0,h.jsx)(`p`,{className:`sub`,children:`Concept pages, a generated CLI reference, and a glossary. Pages and config that differ by host are filtered to your selected harness.`})]}),(0,h.jsx)(f,{"aria-label":`Harness`,children:i.map(e=>(0,h.jsx)(`button`,{className:p===e.id?`on`:``,onClick:()=>g(e.id),"aria-pressed":p===e.id,children:e.label},e.id))})]}),(0,h.jsx)(`div`,{className:`lib-secbar`,children:C.map(e=>(0,h.jsxs)(`button`,{className:`lib-secchip ${b?.id===e.id?`on`:``}`,onClick:()=>T(e),children:[(0,h.jsx)(`span`,{children:e.label}),(0,h.jsx)(`span`,{className:`lib-secchip-n`,children:e.pages.length})]},e.id))}),(0,h.jsxs)(`div`,{className:`lib lib-2`,children:[(0,h.jsxs)(`div`,{className:`card lib-main`,children:[(0,h.jsxs)(`div`,{className:`lib-head`,children:[(0,h.jsx)(`span`,{className:`lib-head-label`,children:x?`all groups`:b?.label||``}),(0,h.jsxs)(`span`,{className:`lib-head-count`,children:[S.reduce((e,t)=>e+t.pages.length,0),` pages`]})]}),(0,h.jsxs)(`div`,{className:`lib-rows`,children:[S.map(e=>(0,h.jsxs)(`div`,{className:`docs-group`,children:[w&&(0,h.jsx)(`div`,{className:`docs-group-head`,children:e.label}),e.pages.map(e=>(0,h.jsxs)(`button`,{className:`lib-row ${y===e.id?`on`:``}`,onClick:()=>r(`#/docs/${encodeURIComponent(e.id)}`),children:[(0,h.jsx)(`div`,{className:`lr-name`,children:e.title}),e.date?(0,h.jsx)(`div`,{className:`lr-desc`,children:e.date}):null]},e.id))]},e.id)),S.length===0&&_&&(0,h.jsxs)(`div`,{className:`empty`,style:{padding:32},children:[(0,h.jsx)(`div`,{className:`big`,children:`No matches`}),`Try another search.`]}),!_&&(0,h.jsx)(s,{label:`Loading docs…`})]})]}),(0,h.jsx)(`div`,{className:`card lib-detail`,children:(0,h.jsx)(k,{pageId:y,harness:p,overview:n,onAction:a})})]})]})}export{j as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{i as t,t as n}from"./react-DbkvxWG5.js";import{c as r,f as i,i as a,n as o,rt as s}from"./index-CAqrWhKl.js";var c=e(t(),1),l=n();function u({group:e,i:t}){let n=e.problems.length===0,[i,a]=(0,c.useState)(!n);return(0,l.jsxs)(`div`,{className:`card check rise ${n?``:`bad`} ${i?`open`:``}`,style:{"--i":t*.6},children:[(0,l.jsxs)(`button`,{className:`check-head`,onClick:()=>a(e=>!e),disabled:n,style:{cursor:n?`default`:`pointer`},"aria-expanded":n?void 0:i,children:[(0,l.jsx)(`span`,{className:`feed-dot ${n?`ok`:`bad`}`,style:{width:9,height:9}}),(0,l.jsx)(`h3`,{children:e.label}),(0,l.jsxs)(`span`,{className:`badge ${n?`ok`:`bad`}`,children:[(0,l.jsx)(`span`,{className:`dot`}),n?`clean`:`${e.problems.length} problem${e.problems.length===1?``:`s`}`]}),!n&&(0,l.jsx)(r,{name:`chevron`,className:`chev glyph`})]}),!n&&i&&(0,l.jsx)(`div`,{className:`check-body`,children:e.problems.map(e=>(0,l.jsxs)(`div`,{className:`problem`,children:[(0,l.jsx)(`span`,{className:`x`,children:`✕`}),(0,l.jsx)(`span`,{children:e})]},e))})]})}function d(){let{data:e,error:t,reload:n,setData:c}=i(()=>s.doctor(),[]);return t?(0,l.jsx)(o,{error:t}):(0,l.jsxs)(`div`,{className:`narrow`,children:[(0,l.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`h1`,{className:`h`,children:`Doctor`}),(0,l.jsx)(`p`,{className:`sub`,children:`Every check builds each theme in a sandbox and validates the result: token resolution, link integrity, parity, and drift.`})]}),(0,l.jsxs)(`button`,{className:`btn ghost`,onClick:()=>{c(null),n()},disabled:!e,children:[(0,l.jsx)(r,{name:`refresh`}),e?`Re-run checks`:`Running…`]})]}),e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{className:`card pad-md mb-16`,children:(0,l.jsxs)(`div`,{className:`row wrap between gap-12`,children:[(0,l.jsxs)(`div`,{className:`row`,style:{gap:10,flexWrap:`wrap`},children:[(0,l.jsxs)(`span`,{className:`dim mono`,style:{fontSize:12},children:[`validated `,e.themes.length,` theme`,e.themes.length===1?``:`s`]}),e.themes.map(e=>(0,l.jsx)(`span`,{className:`badge`,style:{textTransform:`capitalize`},children:e},e))]}),e.ok?(0,l.jsxs)(`span`,{className:`badge ok`,children:[(0,l.jsx)(`span`,{className:`dot`}),`all clean`]}):(0,l.jsxs)(`span`,{className:`badge bad`,children:[(0,l.jsx)(`span`,{className:`dot`}),e.problems.length,` problem`,e.problems.length===1?``:`s`]})]})}),(0,l.jsx)(`div`,{className:`stack gap-12`,children:e.groups.map((e,t)=>(0,l.jsx)(u,{group:e,i:t},e.label))})]}):(0,l.jsx)(a,{label:`Running every check (builds each theme in a sandbox)…`})]})}export{d as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-CbXtAM7H.js";import{i as e,t}from"./react-DbkvxWG5.js";e();var n=t();function r({value:e,onChange:t,label:r,placeholder:i,className:a}){return(0,n.jsx)(`input`,{className:a||`lib-filter`,type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:i,"aria-label":r||i})}export{r as t};
|