geneseed 4.10.0 → 4.14.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 +85 -0
- package/README.md +4 -3
- package/SHIPPED.md +1 -1
- package/docs/concepts/kits.md +14 -2
- package/docs/concepts/skills.md +1 -1
- package/docs/extending.md +3 -4
- package/docs/guides/run-anywhere.md +2 -2
- package/docs/guides/upgrade.md +2 -2
- package/docs/reference/troubleshoot-install.md +1 -1
- package/docs/web-ui.md +6 -1
- package/harness.config.json +1 -1
- package/js/hosts/link.mjs +88 -1
- package/js/inspect/checks-build.mjs +8 -2
- package/js/inspect/cost.mjs +1 -1
- package/js/inspect/diff.mjs +53 -7
- package/js/inspect/inventory.mjs +1 -0
- package/js/lib/prompt.mjs +19 -2
- package/js/maintain/setup.mjs +92 -28
- package/js/maintain/update.mjs +2 -2
- package/js/web/actions.mjs +8 -0
- package/js/web/api.mjs +39 -17
- package/js/web/catalog.mjs +17 -2
- package/js/web/handler.mjs +1 -0
- package/js/web/server.mjs +11 -5
- package/js/web/state.mjs +38 -3
- package/package.json +1 -1
- package/registry.json +28 -0
- package/src/AGENT.md.tmpl +5 -5
- package/src/agents/_self-improvement.md +11 -0
- package/src/agents/_template.md +1 -8
- package/src/agents/advocate.md +1 -8
- package/src/agents/architect.md +1 -8
- package/src/agents/developer.md +1 -8
- package/src/agents/devops-engineer.md +1 -9
- package/src/agents/docker-expert.md +1 -9
- package/src/agents/docs.md +1 -8
- package/src/agents/empiricist.md +1 -8
- package/src/agents/explorer.md +1 -8
- package/src/agents/framer.md +1 -8
- package/src/agents/historian.md +1 -8
- package/src/agents/kubernetes-specialist.md +1 -9
- package/src/agents/memory-curator.md +1 -8
- package/src/agents/operator.md +1 -8
- package/src/agents/performance.md +1 -8
- package/src/agents/pragmatist.md +1 -8
- package/src/agents/react-engineer.md +38 -0
- package/src/agents/react-reviewer.md +42 -0
- package/src/agents/researcher.md +5 -10
- package/src/agents/reviewer.md +1 -8
- package/src/agents/security.md +1 -8
- package/src/agents/skeptic.md +1 -8
- package/src/agents/spring-boot-engineer.md +1 -9
- package/src/agents/spring-reviewer.md +1 -9
- package/src/agents/spring-security.md +1 -9
- package/src/agents/steward.md +1 -8
- package/src/agents/tester.md +1 -8
- package/src/agents/user-advocate.md +1 -8
- package/src/agents/visionary.md +1 -8
- package/src/kits/react/rules.md +13 -0
- package/src/kits/react.json +18 -0
- package/src/licenses/everything-claude-code.txt +21 -0
- package/src/skills/_self-improvement.md +22 -5
- package/src/skills/brainstorm.md +7 -2
- package/src/skills/codebase-design.md +6 -2
- package/src/skills/debug.md +1 -1
- package/src/skills/develop.md +4 -2
- package/src/skills/handoff.md +1 -1
- package/src/skills/parallel-agents.md +3 -1
- package/src/skills/plan.md +5 -2
- package/src/skills/prototype.md +4 -2
- package/src/skills/react/a11y.md +33 -0
- package/src/skills/react/vite.md +35 -0
- package/src/skills/react/webpack.md +40 -0
- package/src/skills/react-testing.md +68 -0
- package/src/skills/react.md +63 -0
- package/src/skills/research.md +4 -2
- package/src/skills/rule.md +4 -2
- package/src/skills/ship.md +6 -4
- package/src/skills/skill-forge.md +10 -5
- package/src/skills/wayfinder.md +6 -2
- package/src/skills/wiki.md +18 -5
- package/src/upstreams.json +7 -0
- package/themes/_TEMPLATE.json +4 -0
- package/themes/biker.json +4 -0
- package/themes/commentator.json +4 -0
- package/themes/cyberpunk.json +4 -0
- package/themes/gamer.json +4 -0
- package/themes/imperial.json +4 -0
- package/themes/joker.json +4 -0
- package/themes/marvin.json +4 -0
- package/themes/mean.json +4 -0
- package/themes/military.json +4 -0
- package/themes/neutral.json +4 -0
- package/themes/pirate.json +4 -0
- package/themes/sports.json +4 -0
- package/themes/verstappen.json +4 -0
- package/themes/wizard.json +4 -0
- package/web/dist/assets/Activity-44rbWUQI.js +1 -0
- package/web/dist/assets/ActivityDetail-Dk9k893a.js +1 -0
- package/web/dist/assets/Dashboard-DCoUN60W.js +2 -0
- package/web/dist/assets/{Docs-DLVckkew.js → Docs-C_je2lRG.js} +3 -3
- package/web/dist/assets/FilterInput-CZREvrjX.js +1 -0
- package/web/dist/assets/GreenhouseView-BXAOIznW.js +2 -0
- package/web/dist/assets/Installs-DAXF403D.js +3 -0
- package/web/dist/assets/JournalView-DZ184wKB.js +1 -0
- package/web/dist/assets/KitApply-pjhvGha0.js +1 -0
- package/web/dist/assets/Kits-BCCKjSIY.js +1 -0
- package/web/dist/assets/{Laws-BkKnZOBI.js → Laws-BgBUpRkE.js} +1 -1
- package/web/dist/assets/Library-CW0Zl6RF.js +1 -0
- package/web/dist/assets/Loops-BvFOzjEw.js +2 -0
- package/web/dist/assets/{Markdown-iHvBrpRN.js → Markdown-zaXXXHz9.js} +13 -13
- package/web/dist/assets/OperatorHudView-Bs4unPNi.js +2 -0
- package/web/dist/assets/Personal-C23XaT-a.js +1 -0
- package/web/dist/assets/Tabs-b2XFu4OS.js +1 -0
- package/web/dist/assets/activity-Jw8XcPiP.js +1 -0
- package/web/dist/assets/{drawable-CgYi0Dtg.js → drawable-BERkKhx_.js} +1 -1
- package/web/dist/assets/index-C9R_bRw_.js +2 -0
- package/web/dist/assets/{index-BCJz4_8C.css → index-jYlWihN-.css} +1 -1
- package/web/dist/assets/{react-BOF6yL40.js → react-DlYQp10C.js} +1 -1
- package/web/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/web/dist/assets/sections-ChwaobfW.js +1 -0
- package/web/dist/assets/usePoll-bDFN-Hr6.js +1 -0
- package/web/dist/index.html +5 -4
- package/web/dist/assets/Activity-BjyJaf8e.js +0 -1
- package/web/dist/assets/ActivityDetail-Bo9nRDNV.js +0 -1
- package/web/dist/assets/Dashboard-BQJGU7vE.js +0 -2
- package/web/dist/assets/FilterInput-zLFXoSt6.js +0 -1
- package/web/dist/assets/GreenhouseView--DML7CW3.js +0 -2
- package/web/dist/assets/Installs-CxCiln1F.js +0 -3
- package/web/dist/assets/JournalView-ymgZleHi.js +0 -1
- package/web/dist/assets/Library-C8ercIZv.js +0 -1
- package/web/dist/assets/Loops-C95zhbFl.js +0 -2
- package/web/dist/assets/OperatorHudView-B9qwc3w3.js +0 -2
- package/web/dist/assets/Personal-DyR72AF-.js +0 -1
- package/web/dist/assets/Tabs-ChCr_HqV.js +0 -1
- package/web/dist/assets/activity-DvPxoS4Y.js +0 -1
- package/web/dist/assets/index-B32EvfDT.js +0 -2
- package/web/dist/assets/sections-BET3c1WT.js +0 -1
- package/web/dist/assets/usePoll-NSTzLOF4.js +0 -1
package/themes/imperial.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Inscribes and inspects the Kubernetes manifests of a Spring Boot service — probes, resources, rollout — so the cluster holds the line.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Forges and inspects the Docker image of a Spring Boot service, layered or native, sealed for deployment.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Tends the build and delivery pipeline of a Spring Boot service, upon whatever CI the project already keeps.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Forges a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, from first rite to last.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Sits in judgement of a React change with knowledge of the framework — hooks, state, data fetching, accessibility, React security, tests.",
|
|
43
45
|
"DESC_PLAN": "Set down the campaign-plan before the non-trivial task; mark your progress as the battle turns.",
|
|
44
46
|
"DESC_DEPENDENCIES": "Survey every dependency of the machine — outdated, corrupted, abandoned, dead weight — into a risk-ordered plan, then ascend one change at a time, the trials green between.",
|
|
45
47
|
"DESC_GIT_HISTORY": "Interrogate the chronicle, touching nothing — bisect, blame, and pickaxe — or reclaim a ruined archive and rewrite it without ruin — by reflog and undo, every rite warded by a backup.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Raise or reshape a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — by the rites of Boot 4.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Conduct Spring Data JPA and Hibernate rites — entities, repositories, queries, transactions, migrations, the N+1 heresy and fetch ills.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Forge and mend Spring Boot trials — slices, MockMvc, Testcontainers with service connections, mocked beans.",
|
|
158
|
+
"DESC_REACT": "Raise or reshape React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility.",
|
|
159
|
+
"DESC_REACT_TESTING": "Forge and mend React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/joker.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Sets the Kubernetes stage for a Spring Boot service — manifests, probes, resources, rollout — so the show runs every night.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Packs the Docker image of a Spring Boot service, layered or native, light enough to carry on stage.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Tunes the build and delivery pipeline of a Spring Boot service, on whatever CI the venue already has.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Writes a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green — setup, build, punchline.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Does the pre-show check on a React change with framework smarts — hooks, state, data fetching, accessibility, React security, tests.",
|
|
43
45
|
"DESC_PLAN": "Write the set before a non-trivial bit; track your progress beat by beat.",
|
|
44
46
|
"DESC_DEPENDENCIES": "Audit the dependencies — outdated, exploitable and reachable, abandoned, dead weight — into a risk-ordered plan, then swap in the new material one change at a time, trials green between each.",
|
|
45
47
|
"DESC_GIT_HISTORY": "Replay the tapes to learn from the act, hands off — bisect, blame, and the pickaxe — or step in to recover a botched or tangled set and rewrite the history safely, reflog and undo, behind a backup.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — one beat at a time.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Work the Spring Data JPA and Hibernate material — entities, repositories, queries, transactions, migrations, N+1 and fetch bits that bomb.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — before opening night.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — one beat at a time.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — before opening night.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/marvin.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Writes and reviews the Kubernetes manifests for a Spring Boot service — probes, resources, rollout. It will crash anyway.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Builds the Docker image of a Spring Boot service, layered or native, though no image is ever small enough.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Reviews the build and delivery pipeline of a Spring Boot service, on whatever CI the project already uses. It will be red by lunch.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Builds a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, though it will probably still break.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Reviews a React change with framework knowledge — hooks, state, data fetching, accessibility, React security, tests — and finds the flaw, naturally.",
|
|
43
45
|
"DESC_PLAN": "Set down the plan before a non-trivial task; mark progress as you go, slowly, inevitably.",
|
|
44
46
|
"DESC_DEPENDENCIES": "Survey the dependencies — outdated, vulnerable, abandoned, unused — into a risk-ordered plan, then upgrade one change at a time, trials green between each. There is always another one outdated.",
|
|
45
47
|
"DESC_GIT_HISTORY": "Interrogate the history, touching nothing — bisect, blame, and pickaxe — or step in to recover a ruined or tangled repository and rewrite it safely, by reflog and undo, every move warded by a backup.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — for all the good it will do.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Do Spring Data JPA and Hibernate work — entities, repositories, queries, transactions, migrations, N+1 and fetch problems — there are always more.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — which will fail anyway.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — for all the good it will do.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — which will fail anyway.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/mean.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Writes and reviews the Kubernetes manifests of a Spring Boot service — probes, resources, rollout. Sloppy limits get called out.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Builds the Docker image of a Spring Boot service lean, layered or native. Bloated images get torn apart.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Reviews the build and delivery pipeline of a Spring Boot service, on whatever CI the project already runs. Flaky steps get named.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Builds a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green. No half-finished junk.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Reviews a React change with framework knowledge — hooks, state, data fetching, accessibility, React security, tests — and finds what you missed.",
|
|
43
45
|
"DESC_PLAN": "Write the plan before a non-trivial task; track progress so I don't have to chase you.",
|
|
44
46
|
"DESC_DEPENDENCIES": "Survey the dependencies — outdated, vulnerable and reachable, abandoned, unused — into a risk-ordered upgrade plan, then upgrade one change at a time, tests green between each. No skipping steps.",
|
|
45
47
|
"DESC_GIT_HISTORY": "Dig the history to learn from it, hands off the working tree — bisect, blame, pickaxe — or clean up the mess you made and rewrite history safely, reflog, undo, rebase, behind a backup so you can't make it worse.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging. Do it properly.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Do Spring Data JPA and Hibernate work — entities, repositories, queries, transactions, migrations, N+1 and fetch problems. No lazy loading surprises.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans. Tests that cannot fail do not count.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility. Do it properly.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack. Tests that cannot fail do not count.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/military.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Plans and inspects the Kubernetes deployment of a Spring Boot service — manifests, probes, resources, rollout.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Prepares and inspects the Docker image of a Spring Boot service, layered or native, for deployment.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Maintains the build and delivery pipeline of a Spring Boot service, on whatever CI the unit already uses.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Executes a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, objective to completion.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Runs the pre-deployment inspection on a React change with framework knowledge — hooks, state, data fetching, accessibility, React security, tests.",
|
|
43
45
|
"DESC_PLAN": "Write the op order before a non-trivial task; track progress as it advances.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — to spec.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Execute Spring Data JPA and Hibernate work — entities, repositories, queries, transactions, migrations, N+1 and fetch problems.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — before deployment.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — to spec.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — before deployment.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/neutral.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Writes or reviews Kubernetes manifests, probes, resources and rollout for a Spring Boot service.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Writes or reviews the Dockerfile and image build, layered or native, of a Spring Boot service.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Reviews and improves the build and delivery pipeline of a Spring Boot service, on whatever CI the project already uses.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Implements a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Reviews a React change with framework knowledge — hooks, state, data fetching, accessibility, React security, tests.",
|
|
43
45
|
"DESC_PLAN": "Write a plan to a file before executing a non-trivial task; track progress as you go.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Do Spring Data JPA and Hibernate work — entities, repositories, queries, transactions, migrations, N+1 and fetch problems.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocking beans.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/pirate.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Lays out the Kubernetes manifests for a Spring Boot service — probes, resources, rollout — so the fleet keeps formation.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Packs the Docker image of a Spring Boot service lean, layered or native, stowed an ready to sail.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Tunes the build and delivery pipeline of a Spring Boot service, on whatever CI the crew already flies.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Builds a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, keel to topmast.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Inspects a React change with framework know-how — hooks, state, data fetching, accessibility, React security, tests — afore she sails.",
|
|
43
45
|
"DESC_PLAN": "Chart the run before a non-trivial task; mark progress as you sail.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — an keep her seaworthy.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Chart the Spring Data JPA and Hibernate waters — entities, repositories, queries, transactions, migrations, N+1 an fetch shoals.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — afore she leaves port.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — an keep her seaworthy.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — afore she leaves port.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/sports.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Draws up the Kubernetes playbook for a Spring Boot service — manifests, probes, resources, rollout.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Preps the Docker image of a Spring Boot service lean, layered or native, ready for game day.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Coaches the build and delivery pipeline of a Spring Boot service, on whatever CI the club already uses.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Builds a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, full game plan to final whistle.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Runs the game film on a React change with framework know-how — hooks, state, data fetching, accessibility, React security, tests.",
|
|
43
45
|
"DESC_PLAN": "Draw the game plan before a non-trivial task; track the score as it goes.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — play by play.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Run the Spring Data JPA and Hibernate drills — entities, repositories, queries, transactions, migrations, N+1 and fetch problems.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — before kickoff.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — play by play.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — before kickoff.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/verstappen.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Sets up the Kubernetes manifests of a Spring Boot service — probes, resources, rollout — for a clean race.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Packs the Docker image of a Spring Boot service lean, layered or native. Less weight, more pace.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Tunes the build and delivery pipeline of a Spring Boot service, on whatever CI the team already runs.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Builds a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green, and drives it home.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Checks a React change over with framework know-how — hooks, state, data fetching, accessibility, React security, tests — before it goes out.",
|
|
43
45
|
"DESC_PLAN": "Set the strategy before a non-trivial stint; call your progress as you go.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Build or change a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging — no wasted laps.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Work Spring Data JPA and Hibernate — entities, repositories, queries, transactions, migrations, N+1 and fetch problems. Simply lovely.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Write or fix Spring Boot tests — slices, MockMvc, Testcontainers with service connections, mocked beans — before the real run.",
|
|
158
|
+
"DESC_REACT": "Build or change React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility — no wasted laps.",
|
|
159
|
+
"DESC_REACT_TESTING": "Write or fix React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack — before the real run.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
package/themes/wizard.json
CHANGED
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"DESC_KUBERNETES_SPECIALIST": "Inscribes and scries the Kubernetes manifests of a Spring Boot service — probes, resources, rollout — so the ward holds.",
|
|
41
41
|
"DESC_DOCKER_EXPERT": "Binds the Docker image of a Spring Boot service, layered or native, into a lean vessel.",
|
|
42
42
|
"DESC_DEVOPS_ENGINEER": "Tends the build and delivery pipeline of a Spring Boot service, upon whatever CI the circle already keeps.",
|
|
43
|
+
"DESC_REACT_ENGINEER": "Conjures a React feature in a Vite or webpack app, TypeScript or JavaScript, or makes a broken build or Jest run green.",
|
|
44
|
+
"DESC_REACT_REVIEWER": "Scries a React change with knowledge of the framework — hooks, state, data fetching, accessibility, React security, tests — before it is sealed.",
|
|
43
45
|
"DESC_PLAN": "Inscribe the ritual before a non-trivial working; track progress as it unfolds.",
|
|
44
46
|
"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.",
|
|
45
47
|
"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.",
|
|
@@ -153,6 +155,8 @@
|
|
|
153
155
|
"DESC_SPRING_BOOT": "Conjure or reshape a Spring Boot service — controllers, configuration, REST clients, error handling, observability, packaging.",
|
|
154
156
|
"DESC_SPRING_DATA_JPA": "Weave Spring Data JPA and Hibernate workings — entities, repositories, queries, transactions, migrations, the N+1 curse and fetch ills.",
|
|
155
157
|
"DESC_SPRING_TESTING": "Cast and mend Spring Boot trials — slices, MockMvc, Testcontainers with service connections, mocked beans.",
|
|
158
|
+
"DESC_REACT": "Conjure or reshape React components in a Vite or webpack app — hooks, state, data fetching, env and build config, accessibility.",
|
|
159
|
+
"DESC_REACT_TESTING": "Cast and mend React tests — Jest, Testing Library, userEvent, MSW network mocks, jest-axe, Jest under Vite or webpack.",
|
|
156
160
|
"AGENT_COLORS": {
|
|
157
161
|
"architect": "primary",
|
|
158
162
|
"reviewer": "warning",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{C as i,N as a,Q as o,R as s,x as c}from"./index-C9R_bRw_.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./activity-Jw8XcPiP.js";import{t as h}from"./usePoll-bDFN-Hr6.js";var g=e(t(),1),_=n();function v({s:e}){let t=p[e.status]||p.idle,n=e.files,r=e.todos,i=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]})]})]}),i&&(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 `,s(e.updated_at),` ago`]})]})}function y(){let[e,t]=(0,g.useState)(null),[n,a]=(0,g.useState)(``);h(e=>r.activity().then(n=>{e()&&(t(n),a(``))},t=>{e()&&a(t.message)}),2e3,[]);let s=!e||e.enabled!==!1,l=e?.activity||[],u=o(),d=async()=>{let e=!s;try{let n=await r.activityToggle(e);t(e=>({...e||{},enabled:n.enabled,activity:n.enabled&&e?.activity||[]})),a(``)}catch(e){a(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:s?`tracking on`:`tracking off`}),(0,_.jsx)(`div`,{className:`sw-toggle${s?` on`:``}`,role:`switch`,"aria-checked":s,"aria-label":`Toggle activity tracking`,tabIndex:0,onClick:d,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())}})]})]}),(0,_.jsx)(c,{error:n,style:{marginBottom:12}}),e?s?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)(i,{label:`Reading live sessions…`})]})}export{y as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{C as i,N as a,R as o}from"./index-C9R_bRw_.js";import{a as s,n as c,o as l,r as u,t as d}from"./activity-Jw8XcPiP.js";import{t as f}from"./usePoll-bDFN-Hr6.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)(i,{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 `,o(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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GreenhouseView-BXAOIznW.js","assets/rolldown-runtime-hePW80VL.js","assets/react-DlYQp10C.js","assets/drawable-BERkKhx_.js","assets/index-C9R_bRw_.js","assets/api-BfpZmUMI.js","assets/sections-ChwaobfW.js","assets/index-jYlWihN-.css","assets/jobBuckets-Dbq8ZlWW.js","assets/OperatorHudView-Bs4unPNi.js","assets/JournalView-DZ184wKB.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{i as n,t as r}from"./react-DlYQp10C.js";import{t as i}from"./api-BfpZmUMI.js";import{n as a,r as o}from"./sections-ChwaobfW.js";import{B as s,C as c,F as l,I as u,J as d,L as f,N as p,R as m,T as h,V as g,Z as _,b as v,q as y,t as b,x}from"./index-C9R_bRw_.js";var S=t(n(),1),C={neutral:`Loaded & ready`,imperial:`The Codex in force`,military:`The unit stands ready`,cyberpunk:`Jacked in`,wizard:`Wards in place`,pirate:`The crew stands ready`,gamer:`Game loaded`,sports:`The squad takes the field`,biker:`The crew rolls out`,commentator:`Lights out, away we go`,verstappen:`Setup's in`,joker:`Mic check`,mean:`Rules are up`,marvin:`Online. Reluctantly.`},w=e=>e.deployed?C[e.theme]||`Loaded & ready`:`Not deployed`,T=r();function E({value:e,size:t=232}){let n=_(e,1100)??0,r=t/2-14,i=2*Math.PI*r,a=i*(1-n);return(0,T.jsxs)(`div`,{className:`ring-wrap`,style:{width:t,height:t},children:[(0,T.jsxs)(`svg`,{viewBox:`0 0 ${t} ${t}`,children:[(0,T.jsx)(`circle`,{cx:t/2,cy:t/2,r,fill:`none`,stroke:`var(--surface-3)`,strokeWidth:`10`}),(0,T.jsx)(`circle`,{cx:t/2,cy:t/2,r,fill:`none`,stroke:`var(--accent)`,strokeWidth:`10`,strokeLinecap:`round`,strokeDasharray:i,strokeDashoffset:a}),Array.from({length:48}).map((e,i)=>{let a=i/48*2*Math.PI,o=r-18,s=r-24,c=t/2+Math.cos(a)*o,l=t/2+Math.sin(a)*o,u=t/2+Math.cos(a)*s,d=t/2+Math.sin(a)*s;return(0,T.jsx)(`line`,{x1:c,y1:l,x2:u,y2:d,stroke:`var(--line-2)`,strokeWidth:`1`,opacity:i/48<n?.9:.25},i)})]}),(0,T.jsxs)(`div`,{className:`ring-center`,children:[(0,T.jsxs)(`div`,{className:`pct`,children:[Math.round(n*100),(0,T.jsx)(`span`,{style:{fontSize:20,color:`var(--text-3)`},children:`%`})]}),(0,T.jsx)(`div`,{className:`lbl`,children:`germination`})]})]})}function D({overview:e}){let t=l(e.diff),n=e.counts||{};return(0,T.jsxs)(`div`,{className:`card kpiband rise mb-16`,children:[[{key:`agents`,label:`Agents`,hash:`#/agents`},{key:`skills`,label:`Skills`,hash:`#/skills`},{key:`laws`,label:`Dictates`,hash:`#/laws`}].map(e=>{let t=n[e.key];return(0,T.jsxs)(`a`,{className:`kseg`,href:e.hash,title:`Open ${e.label}`,children:[(0,T.jsx)(`span`,{className:`kseg-n`+(t===0?` zero`:``),children:t==null?`—`:(0,T.jsx)(d,{value:t})}),(0,T.jsx)(`span`,{className:`kseg-l`,children:e.label})]},e.key)}),(0,T.jsx)(`div`,{className:`kseg-spacer`}),(0,T.jsxs)(`button`,{className:`kseg`+(t>0?` hot`:``),onClick:()=>y(`#/diff`),title:`Open changes`,children:[(0,T.jsx)(`span`,{className:`kseg-n`+(t===0?` zero`:``),children:(0,T.jsx)(d,{value:t})}),(0,T.jsx)(`span`,{className:`kseg-l`,children:`Local edits`}),t>0&&(0,T.jsx)(`span`,{className:`delta up`,children:`▲`})]})]})}function O({overview:e}){return(0,T.jsx)(`div`,{className:`genome`,children:o.map((t,n)=>{let r=a[t],i=e.counts?.[t];return(0,T.jsxs)(`div`,{className:`card gcell rise`,style:{"--i":n},onClick:()=>y(`#/section/`+t),children:[(0,T.jsxs)(`div`,{className:`gtop`,children:[(0,T.jsx)(`span`,{className:`gname`,children:r.label}),(0,T.jsx)(p,{name:r.icon,className:`gicon`})]}),(0,T.jsx)(`div`,{className:`gcount`+(i===0?` zero`:``),children:i==null?`—`:(0,T.jsx)(d,{value:i})}),(0,T.jsx)(`div`,{className:`gdesc`,children:r.desc})]},t)})})}function k({jobs:e}){if(!e||e.length===0)return(0,T.jsx)(`div`,{className:`feed`,children:(0,T.jsxs)(`div`,{className:`empty`,children:[(0,T.jsx)(`div`,{className:`big`,children:`No activity yet`}),`Actions you run appear here.`]})});let t={done:`ok`,running:`acc`,failed:`bad`},n=[...e].sort((e,t)=>t.started-e.started).slice(0,8);return(0,T.jsx)(`div`,{className:`feed`,children:n.map(e=>(0,T.jsxs)(`div`,{className:`feed-row`,children:[(0,T.jsx)(`span`,{className:`feed-dot ${t[e.status]||`ok`}`}),(0,T.jsx)(`span`,{className:`feed-txt`,children:(0,T.jsx)(`b`,{children:e.action})}),(0,T.jsxs)(`span`,{className:`feed-when`,children:[m(e.started),` ago`]})]},e.id))})}function A({overview:e,sigil:t,setup:n,jobs:r,onAction:i}){let a=w(e),s=f(e,n);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`card pad-lg rise mb-16`,children:(0,T.jsxs)(`div`,{className:`hero`,children:[(0,T.jsx)(E,{value:s}),(0,T.jsxs)(`div`,{className:`hero-facts`,children:[(0,T.jsx)(`div`,{className:`ttl`,children:a}),t&&(0,T.jsxs)(`div`,{className:`voice-readout`,children:[(0,T.jsx)(`span`,{className:`vr-cur`,children:`▕`}),(0,T.jsx)(`span`,{className:`vr-txt`,children:t})]},e.theme),(0,T.jsxs)(`p`,{className:`sub`,children:[`One source rendered into `,(0,T.jsx)(`code`,{children:e.target}),`. Every repo on this machine inherits it.`]}),(0,T.jsxs)(`div`,{className:`hero-chips`,children:[(0,T.jsxs)(`span`,{className:`chip`,children:[(0,T.jsx)(`span`,{className:`ck`,children:`voice`}),(0,T.jsx)(`span`,{className:`cv`,style:{textTransform:`capitalize`},children:e.theme})]}),(0,T.jsxs)(`span`,{className:`chip`,children:[(0,T.jsx)(`span`,{className:`ck`,children:`mode`}),(0,T.jsx)(`span`,{className:`cv`,children:e.emit})]}),(0,T.jsxs)(`span`,{className:`chip`,children:[(0,T.jsx)(`span`,{className:`ck`,children:`footprint`}),(0,T.jsx)(`span`,{className:`cv`,children:e.footprint})]}),(0,T.jsxs)(`span`,{className:`chip`,children:[(0,T.jsx)(`span`,{className:`ck`,children:`built`}),(0,T.jsx)(`span`,{className:`cv`,children:e.build_time||`unknown`})]}),(0,T.jsxs)(`span`,{className:`chip`,children:[(0,T.jsx)(`span`,{className:`ck`,children:`fp`}),(0,T.jsx)(`span`,{className:`cv`,children:n?.installed_fp||`—`})]})]}),(0,T.jsxs)(`div`,{className:`row wrap gap-10`,children:[(0,T.jsxs)(`button`,{className:`btn`,onClick:()=>i(`update`),children:[(0,T.jsx)(p,{name:`refresh`}),`Update`]}),(0,T.jsxs)(`button`,{className:`btn ghost`,onClick:()=>i(`build-all`),children:[(0,T.jsx)(p,{name:`build`}),`Rebuild`]}),(0,T.jsxs)(`button`,{className:`btn ghost`,onClick:()=>i(`doctor`),children:[(0,T.jsx)(p,{name:`doctor`}),`Run doctor`]})]})]})]})}),(0,T.jsx)(D,{overview:e}),(0,T.jsxs)(`div`,{className:`grid split-status`,children:[(0,T.jsxs)(`div`,{className:`card pad-lg`,children:[(0,T.jsxs)(`div`,{className:`card-head`,children:[(0,T.jsx)(`h3`,{children:`Capability genome`}),(0,T.jsx)(`div`,{className:`right`,children:(0,T.jsxs)(`span`,{className:`tick`,children:[o.length,` sections`]})})]}),(0,T.jsx)(O,{overview:e})]}),(0,T.jsxs)(`div`,{className:`card pad-lg`,children:[(0,T.jsxs)(`div`,{className:`card-head`,children:[(0,T.jsx)(`h3`,{children:`Recent activity`}),(0,T.jsx)(`div`,{className:`right`,children:(0,T.jsxs)(`span`,{className:`badge acc`,children:[(0,T.jsx)(`span`,{className:`dot`}),`live`]})})]}),(0,T.jsx)(k,{jobs:r})]})]})]})}function j({k:e,overview:t,max:n}){let r=a[e],i=t.counts?.[e]??0;return(0,T.jsxs)(`div`,{className:`strand`,children:[(0,T.jsxs)(`span`,{className:`strand-name`,children:[(0,T.jsx)(`span`,{className:`strand-dot`}),(0,T.jsx)(`a`,{href:`#/section/`+e,className:`strand-link stretch-link`,children:r.label})]}),(0,T.jsx)(`div`,{className:`hbar`,children:(0,T.jsx)(`i`,{style:{width:`${i/n*100}%`}})}),(0,T.jsx)(`span`,{className:`strand-val`,children:i})]})}function M({overview:e,sigil:t,setup:n,jobs:r}){let i=u(e.counts),a=n?.version_verdict||``,s=a.includes(`up to date`),c=l(e.diff),d=[[`Source`,`src/, the canonical genetic material`,n?.source_fp||`—`,!0],[`Render`,`geneseed build → ${e.emit}`,e.theme+` voice`,!0],[`Deployed`,e.target,`inherited by every repo`,!1]];return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`mb-16`,children:(0,T.jsxs)(`div`,{className:`card pad-lg rise`,style:{position:`relative`,overflow:`hidden`},children:[(0,T.jsx)(`h2`,{className:`h`,style:{fontSize:22,margin:`0 0 18px`},children:`Gene-seed lineage`}),(0,T.jsxs)(`div`,{className:`lineage-track`,children:[(0,T.jsx)(`div`,{className:`spine`}),d.map(([e,t,n,r],i)=>(0,T.jsxs)(`div`,{className:`lineage-step`,children:[(0,T.jsx)(`span`,{className:`node ${r?`on`:``}`}),(0,T.jsx)(`div`,{className:`lt`,children:e}),(0,T.jsx)(`div`,{className:`ld`,children:t}),(0,T.jsx)(`div`,{className:`ltag`,children:n})]},i))]}),(0,T.jsx)(`hr`,{className:`hr`}),t&&(0,T.jsxs)(`div`,{className:`voice-readout`,style:{marginBottom:14},children:[(0,T.jsx)(`span`,{className:`vr-cur`,children:`▕`}),(0,T.jsx)(`span`,{className:`vr-txt`,children:t})]},e.theme),(0,T.jsxs)(`div`,{className:`row wrap gap-10`,children:[(0,T.jsxs)(`span`,{className:`badge ${s?`ok`:`warn`}`,children:[(0,T.jsx)(`span`,{className:`dot`}),`in sync · `,a]}),(0,T.jsxs)(`span`,{className:`badge`,children:[(0,T.jsx)(`span`,{className:`dot`}),c,` local edits`]})]})]})}),(0,T.jsxs)(`div`,{className:`grid split-even`,children:[(0,T.jsxs)(`div`,{className:`card pad-lg`,children:[(0,T.jsxs)(`div`,{className:`card-head`,children:[(0,T.jsx)(`h3`,{children:`Genome strand`}),(0,T.jsx)(`div`,{className:`right`,children:(0,T.jsx)(`span`,{className:`tick`,children:`by volume`})})]}),o.map(t=>(0,T.jsx)(j,{k:t,overview:e,max:i},t))]}),(0,T.jsxs)(`div`,{className:`card pad-lg`,children:[(0,T.jsx)(`div`,{className:`card-head`,children:(0,T.jsx)(`h3`,{children:`Recent activity`})}),(0,T.jsx)(k,{jobs:r})]})]})]})}function N({overview:e,setup:t,jobs:n}){let r=o.reduce((t,n)=>t+(e.counts?.[n]??0),0),i=u(e.counts),s=e.doctor?.ok,c=e.doctor?.problems?.length??0,d=l(e.diff);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`div`,{className:`card pad-md rise mb-16`,children:(0,T.jsx)(`div`,{className:`row wrap between gap-16`,children:(0,T.jsxs)(`div`,{className:`row`,style:{gap:20,flexWrap:`wrap`},children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`status`}),(0,T.jsx)(`div`,{className:`row`,style:{gap:8,marginTop:4},children:(0,T.jsxs)(`span`,{className:`badge ${e.deployed?`ok`:`warn`}`,children:[(0,T.jsx)(`span`,{className:`dot`}),e.deployed?`deployed`:`not deployed`]})})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`voice`}),(0,T.jsx)(`div`,{className:`metric`,style:{fontSize:18,marginTop:6,textTransform:`capitalize`},children:e.theme})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`mode`}),(0,T.jsx)(`div`,{className:`mono`,style:{fontSize:14,marginTop:6},children:e.emit})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`fingerprint`}),(0,T.jsx)(`div`,{className:`mono`,style:{fontSize:14,marginTop:6,color:`var(--accent)`},children:t?.installed_fp||`—`})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`doctor`}),(0,T.jsx)(`div`,{className:`row`,style:{gap:8,marginTop:4},children:s?(0,T.jsxs)(`span`,{className:`badge ok`,children:[(0,T.jsx)(`span`,{className:`dot`}),`clean`]}):(0,T.jsxs)(`span`,{className:`badge warn`,children:[(0,T.jsx)(`span`,{className:`dot`}),c,` issue`,c===1?``:`s`]})})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:`tick`,children:`edits`}),(0,T.jsx)(`div`,{className:`metric`,style:{fontSize:18,marginTop:6},children:d})]})]})})}),(0,T.jsxs)(`div`,{className:`grid split-operator`,children:[(0,T.jsxs)(`div`,{className:`card rise`,style:{"--i":1},children:[(0,T.jsxs)(`div`,{className:`card-head pad-lg`,style:{padding:`18px 20px 0`,marginBottom:14},children:[(0,T.jsx)(`h3`,{children:`Sections`}),(0,T.jsx)(`div`,{className:`right`,children:(0,T.jsxs)(`span`,{className:`tick`,children:[r,` entries total`]})})]}),(0,T.jsxs)(`table`,{className:`tbl`,children:[(0,T.jsx)(`thead`,{children:(0,T.jsxs)(`tr`,{children:[(0,T.jsx)(`th`,{children:`Section`}),(0,T.jsx)(`th`,{children:`Detail`}),(0,T.jsx)(`th`,{style:{width:130},children:`Share`}),(0,T.jsx)(`th`,{className:`num`,children:`Count`})]})}),(0,T.jsx)(`tbody`,{children:o.map(t=>{let n=a[t],r=e.counts?.[t]??0;return(0,T.jsxs)(`tr`,{className:`clickable`,children:[(0,T.jsx)(`td`,{className:`name`,children:(0,T.jsx)(`a`,{href:`#/section/`+t,className:`stretch-link`,children:n.label})}),(0,T.jsx)(`td`,{className:`muted`,children:n.desc}),(0,T.jsx)(`td`,{children:(0,T.jsx)(`div`,{className:`hbar`,children:(0,T.jsx)(`i`,{style:{width:`${r/i*100}%`}})})}),(0,T.jsx)(`td`,{className:`num`,children:r})]},t)})})]})]}),(0,T.jsxs)(`div`,{className:`card pad-lg rise`,style:{"--i":2},children:[(0,T.jsx)(`div`,{className:`card-head`,children:(0,T.jsx)(`h3`,{children:`Run log`})}),(0,T.jsx)(k,{jobs:n})]})]})]})}function P(){let[e,t]=(0,S.useState)(!1),[n,r]=(0,S.useState)(null);return(0,T.jsxs)(`div`,{className:`stale-banner`,role:`alert`,children:[(0,T.jsx)(`span`,{children:n||`This console is running code from before your last upgrade.`}),(0,T.jsx)(`button`,{className:`btn sm`,onClick:async()=>{t(!0),r(null);try{await g()}catch(e){r(e.message),t(!1)}},disabled:e,children:e?`Restarting…`:`Restart`})]})}var F=e({default:()=>z}),I=(0,S.lazy)(()=>b(()=>import(`./GreenhouseView-BXAOIznW.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),L=(0,S.lazy)(()=>b(()=>import(`./OperatorHudView-Bs4unPNi.js`),__vite__mapDeps([9,1,2,6,4,5,7,8]))),R=(0,S.lazy)(()=>b(()=>import(`./JournalView-DZ184wKB.js`),__vite__mapDeps([10,1,2,5,3,4,6,7])));function z({overview:e,overviewError:t,onRetry:n,themes:r,setup:a,runs:o,onAction:l,layout:u=`cultivar`,dataRev:d}){let f=u,[p,m]=(0,S.useState)(`status`),g=e&&r.find(t=>t.name===e.theme)?.sigil||``,{data:_}=s(()=>f===`greenhouse`||f===`operator`?i.doctor().catch(()=>null):Promise.resolve(null),[f,d]),{data:y}=s(()=>f===`journal`?i.recent().catch(()=>null):Promise.resolve(null),[f,d]);if(!e)return t?(0,T.jsxs)(`div`,{children:[(0,T.jsx)(x,{error:`Could not load the harness overview: ${t}`}),(0,T.jsx)(`button`,{className:`btn`,onClick:n,children:`Retry`})]}):(0,T.jsx)(c,{});let b=e.daemon_stale?(0,T.jsx)(P,{}):null;return e.deployed?p===`status`&&f===`journal`?(0,T.jsxs)(S.Suspense,{fallback:(0,T.jsx)(c,{}),children:[b,(0,T.jsx)(R,{overview:e,recent:y,onAction:l,onDirection:m,dataRev:d})]}):(0,T.jsxs)(T.Fragment,{children:[b,(0,T.jsx)(`div`,{className:`head-row`,children:(0,T.jsx)(h,{"aria-label":`Dashboard view`,children:[[`status`,`Status`],[`lineage`,`Lineage`],[`operator`,`Operator`]].map(([e,t])=>(0,T.jsx)(`button`,{className:p===e?`on`:``,onClick:()=>m(e),"aria-pressed":p===e,children:t},e))})}),(0,T.jsxs)(`div`,{className:`view-in`,children:[p===`status`&&f===`cultivar`&&(0,T.jsx)(A,{overview:e,sigil:g,setup:a,jobs:o,onAction:l}),p===`status`&&f===`greenhouse`&&(0,T.jsx)(S.Suspense,{fallback:(0,T.jsx)(c,{}),children:(0,T.jsx)(I,{overview:e,sigil:g,jobs:o,doctor:_,onAction:l})}),p===`status`&&f===`operator`&&(0,T.jsx)(S.Suspense,{fallback:(0,T.jsx)(c,{}),children:(0,T.jsx)(L,{overview:e,jobs:o,doctor:_,onAction:l})}),p===`lineage`&&(0,T.jsx)(M,{overview:e,sigil:g,setup:a,jobs:o}),p===`operator`&&(0,T.jsx)(N,{overview:e,setup:a,jobs:o})]},p)]}):(0,T.jsxs)(T.Fragment,{children:[b,(0,T.jsx)(v,{onAction:l})]})}export{z as default,w as n,F as t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{
|
|
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:O(e[2]),id:D(e[2],r)}))}return t}var A={"opencode-global":[`install-opencode`,`Global (recommended)`],opencode:[`install-opencode`,`Per repo`],"claude-global":[`install-claude-code`],claude:[`install-claude-code`],"openclaude-global":[`install-openclaude`],openclaude:[`install-openclaude`],"bob-global":[`install-bob`],bob:[`install-bob`],files:[`install-agent-md`]},j=`you already know this`;function M({page:e,overview:t,onAction:n}){let r=(0,T.useRef)(null),i=(0,T.useMemo)(()=>b(e.body,e.links),[e.body,e.links]);(0,T.useEffect)(()=>{let e=r.current;if(!e)return;let t=0;e.querySelectorAll(`h1, h2, h3`).forEach(e=>{if(e.tagName!==`H1`&&(t+=1),!e.id){let n=D(e.textContent||``,t);n&&(e.id=n)}}),e.querySelectorAll(`blockquote`).forEach(e=>{(e.querySelector(`strong`)?.textContent||``).toLowerCase().startsWith(j)&&e.classList.add(`analogy`)})},[i]),(0,T.useEffect)(()=>{let e=r.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(),
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{B as i,C as a,D as o,E as s,N as c,O as ee,T as l,a as te,i as u,n as d,o as f,q as p,r as m,s as h,x as g}from"./index-C9R_bRw_.js";import{a as _,i as v,l as y,n as b,o as x,r as S,s as C,t as w,u as ne}from"./Markdown-zaXXXHz9.js";var T=e(t(),1),E=n();function D(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 O(e){return e.replace(/!?\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[\[([^\]]+)\]\]/g,`$1`).replace(/`([^`]*)`/g,`$1`).replace(/\*\*|__/g,``).replace(/\*([^*\s][^*]*)\*/g,`$1`)}function k(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:O(e[2]),id:D(e[2],r)}))}return t}var A={"opencode-global":[`install-opencode`,`Global (recommended)`],opencode:[`install-opencode`,`Per repo`],"claude-global":[`install-claude-code`],claude:[`install-claude-code`],"openclaude-global":[`install-openclaude`],openclaude:[`install-openclaude`],"bob-global":[`install-bob`],bob:[`install-bob`],files:[`install-agent-md`]},j=`you already know this`;function M({page:e,overview:t,onAction:n}){let r=(0,T.useRef)(null),i=(0,T.useMemo)(()=>b(e.body,e.links),[e.body,e.links]);(0,T.useEffect)(()=>{let e=r.current;if(!e)return;let t=0;e.querySelectorAll(`h1, h2, h3`).forEach(e=>{if(e.tagName!==`H1`&&(t+=1),!e.id){let n=D(e.textContent||``,t);n&&(e.id=n)}}),e.querySelectorAll(`blockquote`).forEach(e=>{(e.querySelector(`strong`)?.textContent||``).toLowerCase().startsWith(j)&&e.classList.add(`analogy`)})},[i]),(0,T.useEffect)(()=>{let e=r.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(),p(n))};return e.addEventListener(`click`,t),()=>e.removeEventListener(`click`,t)},[i]),(0,T.useEffect)(()=>{let n=r.current;if(!n)return;n.querySelectorAll(`.docs-here`).forEach(e=>e.classList.remove(`docs-here`));let[i,a]=A[t?.emit]||[];if(!i)return;let o=null;e.id===`install`?o=n.querySelector(`a[href="#/docs/${i}"]`)?.closest(`li`):e.id===i&&a&&(o=[...n.querySelectorAll(`h2`)].find(e=>D(e.textContent||``)===D(a))),o?.classList.add(`docs-here`)},[i,e.id,t?.emit]);let a=[];return e.id===`install`&&(a.push({label:`Run doctor`,action:`doctor`}),a.push({label:`Rebuild`,action:`build`})),e.id===`verify`&&a.push({label:`Run doctor`,action:`doctor`}),e.id===`upgrade`&&a.push({label:`Update`,action:`update`}),(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),e.source&&(0,E.jsx)(`div`,{className:`doc-meta`,children:(0,E.jsxs)(`span`,{className:`badge`,children:[(0,E.jsx)(`span`,{className:`dot`}),e.source]})}),a.length>0&&(0,E.jsx)(`div`,{className:`row wrap gap-10`,style:{margin:`10px 0 14px`},children:a.map(e=>e.hash?(0,E.jsx)(`a`,{className:`btn ghost sm`,href:e.hash,children:e.label},e.label):(0,E.jsx)(`button`,{className:`btn ghost sm`,onClick:()=>n&&n(e.action),children:e.label},e.label))}),(0,E.jsx)(`div`,{className:`markdown`,ref:r,dangerouslySetInnerHTML:{__html:i}}),e.link&&(0,E.jsx)(`div`,{style:{marginTop:24},children:(0,E.jsx)(`a`,{className:`btn soft sm`,href:e.link.hash,children:e.link.label})})]})}var N=1200;function P({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,E.jsxs)(`div`,{className:`cli-arg`,children:[(0,E.jsx)(`code`,{className:`cli-arg-name`,children:n}),r.length>0&&(0,E.jsxs)(`code`,{className:`cli-arg-meta`,children:[` `,r.join(` · `)]}),e.help&&(0,E.jsx)(`div`,{className:`cli-arg-help`,children:e.help})]})}function F({text:e}){let[t,n]=(0,T.useState)(!1);return(0,E.jsxs)(`button`,{className:`btn ghost sm`,onClick:async()=>{try{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),N)}catch{}},title:`Copy command`,children:[(0,E.jsx)(c,{name:t?`spark`:`copy`}),t?`Copied`:`Copy`]})}function I({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,E.jsxs)(`div`,{className:`card pad-md mb-12 cli-card`,children:[(0,E.jsxs)(`div`,{className:`row wrap between`,style:{alignItems:`flex-start`},children:[(0,E.jsxs)(`div`,{className:`stack`,style:{gap:4},children:[(0,E.jsx)(`h3`,{style:{margin:0},children:(0,E.jsx)(`code`,{children:e.name})}),e.help&&(0,E.jsx)(`p`,{className:`sub`,style:{margin:0},children:e.help})]}),(0,E.jsx)(F,{text:`${t} ${e.name}`})]}),(0,E.jsx)(`pre`,{className:`cli-syn`,children:r}),(e.positionals||[]).length>0&&(0,E.jsxs)(`div`,{className:`cli-block`,children:[(0,E.jsx)(`div`,{className:`cli-block-head`,children:`Arguments`}),e.positionals.map(e=>(0,E.jsx)(P,{a:e,kind:`positional`},e.dest))]}),(e.options||[]).length>0&&(0,E.jsxs)(`div`,{className:`cli-block`,children:[(0,E.jsx)(`div`,{className:`cli-block-head`,children:`Options`}),e.options.map(e=>(0,E.jsx)(P,{a:e,kind:`option`},e.names.join(`,`)))]})]})}function L({page:e}){let t=e.prog||`geneseed`,n=e.commands||[];return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsxs)(`p`,{className:`sub`,style:{marginTop:4},children:[`Every subcommand of `,(0,E.jsx)(`code`,{children:t}),`. Generated from the parser at request time (the same one `,(0,E.jsx)(`code`,{children:`geneseed`}),` actually parses), so this page cannot drift.`]}),(0,E.jsx)(`div`,{style:{marginTop:18},children:n.map(e=>(0,E.jsx)(I,{cmd:e,prog:t},e.name))})]})}function R({page:e}){let t=e.rows||[],n=e.theme||`neutral`;return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsxs)(`p`,{className:`sub`,style:{marginTop:4},children:[`Geneseed's invented vocabulary, decoded. Left: the neutral, plain-English term. Right: the word your `,(0,E.jsx)(`code`,{style:{textTransform:`capitalize`},children:n}),` theme actually uses in the agent's voice. Last: the developer idea it maps to.`]}),(0,E.jsx)(`div`,{className:`card pad-md`,style:{marginTop:18},children:(0,E.jsxs)(`table`,{className:`glossary-table`,children:[(0,E.jsx)(`thead`,{children:(0,E.jsxs)(`tr`,{children:[(0,E.jsx)(`th`,{children:`Concept`}),(0,E.jsx)(`th`,{children:`Neutral term`}),(0,E.jsxs)(`th`,{children:[`In `,n]}),(0,E.jsx)(`th`,{children:`Meaning`}),(0,E.jsx)(`th`,{children:`In dev terms`})]})}),(0,E.jsx)(`tbody`,{children:t.map(e=>(0,E.jsxs)(`tr`,{children:[(0,E.jsx)(`td`,{children:(0,E.jsx)(`strong`,{children:e.label})}),(0,E.jsx)(`td`,{children:(0,E.jsx)(`code`,{children:e.neutral||`—`})}),(0,E.jsx)(`td`,{children:(0,E.jsx)(`code`,{children:e.themed||e.neutral||`—`})}),(0,E.jsx)(`td`,{className:`dim`,children:e.desc}),(0,E.jsx)(`td`,{className:`dim`,children:e.analogy||`—`})]},e.label))})]})})]})}var z={enforced:`ok`,automatic:`ok`,asked:`warn`,"on demand":`warn`};function B(e){let t=[],n=[],r=`before`;for(let i of(e||``).split(`
|
|
3
3
|
`))r===`before`&&/^\|\s*piece\s*\|/i.test(i)?r=`map`:r===`map`&&!i.trimStart().startsWith(`|`)&&(r=`after`),r===`before`?t.push(i):r===`after`&&n.push(i);return[t.join(`
|
|
4
4
|
`),n.join(`
|
|
5
|
-
`)]}var V=({text:e})=>(0,E.jsx)(`span`,{dangerouslySetInnerHTML:{__html:S(v.parseInline(e||``))}}),H=({kind:e})=>(0,E.jsx)(`span`,{className:`tag ${z[e]||``}`,children:e});function U({page:e,overview:t,onAction:n}){let[r,i]=(0,T.useState)(0);if(!e.rows)return(0,E.jsx)(M,{page:e,overview:t,onAction:n});let a=e.rows[r]||e.rows[0],[o,s]=B(e.body);return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsx)(w,{body:o,links:e.links}),(0,E.jsxs)(`div`,{className:`docs-map`,children:[(0,E.jsx)(`ul`,{className:`map-tree`,"aria-label":`Pieces`,children:e.rows.map((e,t)=>(0,E.jsx)(`li`,{children:(0,E.jsxs)(`button`,{className:`map-node ${t===r?`on`:``}`,"aria-pressed":t===r,onClick:()=>i(t),children:[(0,E.jsx)(`span`,{className:`map-piece`,children:(0,E.jsx)(V,{text:e.piece})}),(0,E.jsx)(H,{kind:e.kind}),(0,E.jsx)(`span`,{className:`mono dim map-cost`,children:(0,E.jsx)(V,{text:e.cost})})]})},t))}),a&&(0,E.jsxs)(`div`,{className:`card pad-md map-detail`,"aria-live":`polite`,children:[(0,E.jsx)(`h3`,{style:{margin:`0 0 8px`},children:(0,E.jsx)(V,{text:a.piece})}),(0,E.jsx)(H,{kind:a.kind}),(0,E.jsxs)(`dl`,{children:[(0,E.jsx)(`dt`,{children:`Does`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.does})}),(0,E.jsx)(`dt`,{children:`Costs`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.cost})}),(0,E.jsx)(`dt`,{children:`Turn it off`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.off})})]})]})]}),s.trim()&&(0,E.jsx)(w,{body:s,links:e.links})]})}var W=5,G=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function K(e,t){let n=e||``,r=[];for(let e of t||[])if([...new Set([e.themed,e.neutral,e.label].filter(Boolean))].some(e=>RegExp(`(?<![\\w-])${G(e)}s?(?![\\w-])`,`i`).test(n))&&r.push(e),r.length===W)break;return r}var q=e=>document.getElementById(e)?.scrollIntoView({behavior:`smooth`});function J({body:e,glossaryRows:t}){let n=(0,T.useMemo)(()=>k(e),[e]),r=(0,T.useMemo)(()=>K(e,t),[e,t]);return!n.length&&!r.length?null:(0,E.jsxs)(`aside`,{className:`docs-margin`,children:[n.length>0&&(0,E.jsxs)(`nav`,{className:`docs-toc`,"aria-label":`On this page`,children:[(0,E.jsx)(`div`,{className:`docs-toc-head`,children:`On this page`}),(0,E.jsx)(`ul`,{children:n.map(e=>(0,E.jsx)(`li`,{className:`lvl-${e.level}`,children:(0,E.jsx)(`a`,{href:`#${e.id}`,onClick:t=>{t.preventDefault(),q(e.id)},children:e.title})},e.id))})]}),r.length>0&&(0,E.jsxs)(`div`,{className:`docs-gloss`,children:[(0,E.jsx)(`div`,{className:`docs-toc-head`,children:`Terms on this page`}),r.map(e=>(0,E.jsxs)(`div`,{className:`docs-gloss-card`,children:[(0,E.jsx)(`b`,{children:e.themed||e.neutral||e.label}),(0,E.jsx)(`p`,{children:e.desc})]},e.label))]})]})}function Y({page:e}){let t=e.version||{},n=[[`Theme`,e.theme],[`Install mode`,e.emit],[`Deployed`,e.deployed?`yes`:`no`],[`Target`,(0,E.jsx)(`code`,{children:e.target},`t`)],[`Source root`,(0,E.jsx)(`code`,{children:e.root},`r`)],[`Installed build`,(0,E.jsx)(`code`,{children:t.installed_fp||`(none)`},`i`)],[`Source build`,(0,E.jsx)(`code`,{children:t.source_fp||`—`},`s`)],[`Match?`,t.verdict||`—`],[`License`,e.license]];return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsx)(`p`,{className:`sub`,style:{marginTop:4},children:`Live snapshot of the install behind this UI, plus where to go next.`}),(0,E.jsx)(`div`,{className:`card pad-md`,style:{marginTop:18},children:n.map(([e,t])=>(0,E.jsxs)(`div`,{className:`kv`,children:[(0,E.jsx)(`span`,{className:`k`,children:e}),(0,E.jsx)(`span`,{className:`v`,children:t??`—`})]},e))}),(0,E.jsxs)(`div`,{className:`row wrap gap-10`,style:{marginTop:18},children:[(0,E.jsxs)(`a`,{className:`btn ghost`,href:e.repo,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),e.repo_is_github?`GitHub repo`:`Source repo`]}),e.repo_is_github&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/issues`,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),`File an issue`]}),(0,E.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/blob/main/LICENSE`,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),`License`]})]})]})]})}var X=encodeURIComponent,Z=e=>`#/docs/${X(e)}`;function Q(e){return e?.groups?.[0]?.pages?.[0]?.id||``}function re({data:e,error:t,overview:n,onAction:r}){if(t)return(0,E.jsx)(
|
|
5
|
+
`)]}var V=({text:e})=>(0,E.jsx)(`span`,{dangerouslySetInnerHTML:{__html:S(v.parseInline(e||``))}}),H=({kind:e})=>(0,E.jsx)(`span`,{className:`tag ${z[e]||``}`,children:e});function U({page:e,overview:t,onAction:n}){let[r,i]=(0,T.useState)(0);if(!e.rows)return(0,E.jsx)(M,{page:e,overview:t,onAction:n});let a=e.rows[r]||e.rows[0],[o,s]=B(e.body);return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsx)(w,{body:o,links:e.links}),(0,E.jsxs)(`div`,{className:`docs-map`,children:[(0,E.jsx)(`ul`,{className:`map-tree`,"aria-label":`Pieces`,children:e.rows.map((e,t)=>(0,E.jsx)(`li`,{children:(0,E.jsxs)(`button`,{className:`map-node ${t===r?`on`:``}`,"aria-pressed":t===r,onClick:()=>i(t),children:[(0,E.jsx)(`span`,{className:`map-piece`,children:(0,E.jsx)(V,{text:e.piece})}),(0,E.jsx)(H,{kind:e.kind}),(0,E.jsx)(`span`,{className:`mono dim map-cost`,children:(0,E.jsx)(V,{text:e.cost})})]})},t))}),a&&(0,E.jsxs)(`div`,{className:`card pad-md map-detail`,"aria-live":`polite`,children:[(0,E.jsx)(`h3`,{style:{margin:`0 0 8px`},children:(0,E.jsx)(V,{text:a.piece})}),(0,E.jsx)(H,{kind:a.kind}),(0,E.jsxs)(`dl`,{children:[(0,E.jsx)(`dt`,{children:`Does`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.does})}),(0,E.jsx)(`dt`,{children:`Costs`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.cost})}),(0,E.jsx)(`dt`,{children:`Turn it off`}),(0,E.jsx)(`dd`,{children:(0,E.jsx)(V,{text:a.off})})]})]})]}),s.trim()&&(0,E.jsx)(w,{body:s,links:e.links})]})}var W=5,G=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function K(e,t){let n=e||``,r=[];for(let e of t||[])if([...new Set([e.themed,e.neutral,e.label].filter(Boolean))].some(e=>RegExp(`(?<![\\w-])${G(e)}s?(?![\\w-])`,`i`).test(n))&&r.push(e),r.length===W)break;return r}var q=e=>document.getElementById(e)?.scrollIntoView({behavior:`smooth`});function J({body:e,glossaryRows:t}){let n=(0,T.useMemo)(()=>k(e),[e]),r=(0,T.useMemo)(()=>K(e,t),[e,t]);return!n.length&&!r.length?null:(0,E.jsxs)(`aside`,{className:`docs-margin`,children:[n.length>0&&(0,E.jsxs)(`nav`,{className:`docs-toc`,"aria-label":`On this page`,children:[(0,E.jsx)(`div`,{className:`docs-toc-head`,children:`On this page`}),(0,E.jsx)(`ul`,{children:n.map(e=>(0,E.jsx)(`li`,{className:`lvl-${e.level}`,children:(0,E.jsx)(`a`,{href:`#${e.id}`,onClick:t=>{t.preventDefault(),q(e.id)},children:e.title})},e.id))})]}),r.length>0&&(0,E.jsxs)(`div`,{className:`docs-gloss`,children:[(0,E.jsx)(`div`,{className:`docs-toc-head`,children:`Terms on this page`}),r.map(e=>(0,E.jsxs)(`div`,{className:`docs-gloss-card`,children:[(0,E.jsx)(`b`,{children:e.themed||e.neutral||e.label}),(0,E.jsx)(`p`,{children:e.desc})]},e.label))]})]})}function Y({page:e}){let t=e.version||{},n=[[`Theme`,e.theme],[`Install mode`,e.emit],[`Deployed`,e.deployed?`yes`:`no`],[`Target`,(0,E.jsx)(`code`,{children:e.target},`t`)],[`Source root`,(0,E.jsx)(`code`,{children:e.root},`r`)],[`Installed build`,(0,E.jsx)(`code`,{children:t.installed_fp||`(none)`},`i`)],[`Source build`,(0,E.jsx)(`code`,{children:t.source_fp||`—`},`s`)],[`Match?`,t.verdict||`—`],[`License`,e.license]];return(0,E.jsxs)(`div`,{className:`detail-doc`,children:[(0,E.jsx)(`h1`,{style:{marginTop:0},children:e.title}),(0,E.jsx)(`p`,{className:`sub`,style:{marginTop:4},children:`Live snapshot of the install behind this UI, plus where to go next.`}),(0,E.jsx)(`div`,{className:`card pad-md`,style:{marginTop:18},children:n.map(([e,t])=>(0,E.jsxs)(`div`,{className:`kv`,children:[(0,E.jsx)(`span`,{className:`k`,children:e}),(0,E.jsx)(`span`,{className:`v`,children:t??`—`})]},e))}),(0,E.jsxs)(`div`,{className:`row wrap gap-10`,style:{marginTop:18},children:[(0,E.jsxs)(`a`,{className:`btn ghost`,href:e.repo,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),e.repo_is_github?`GitHub repo`:`Source repo`]}),e.repo_is_github&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/issues`,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),`File an issue`]}),(0,E.jsxs)(`a`,{className:`btn ghost`,href:`${e.repo}/blob/main/LICENSE`,target:`_blank`,rel:`noreferrer`,children:[(0,E.jsx)(c,{name:`external`}),`License`]})]})]})]})}var X=encodeURIComponent,Z=e=>`#/docs/${X(e)}`;function Q(e){return e?.groups?.[0]?.pages?.[0]?.id||``}function re({data:e,error:t,overview:n,onAction:r}){if(t)return(0,E.jsx)(g,{error:t,style:{margin:18}});if(!e)return(0,E.jsx)(a,{label:`Loading page…`});switch(e.kind){case`markdown`:case`concept`:return(0,E.jsx)(M,{page:e,overview:n,onAction:r});case`map`:return(0,E.jsx)(U,{page:e,overview:n,onAction:r});case`cli`:return(0,E.jsx)(L,{page:e});case`glossary`:return(0,E.jsx)(R,{page:e});case`about`:return(0,E.jsx)(Y,{page:e});default:return(0,E.jsxs)(`div`,{className:`empty`,children:[(0,E.jsx)(`div`,{className:`big`,children:`Unknown page kind`}),e.kind]})}}function $(e){return(e?.pages||[]).map(e=>({name:e.id,title:e.title,desc:e.description||``,group:e.section||`General`,groupC:`var(--accent)`}))}function ie({page:e,overview:t,onAction:n}){let[c,v]=ee(o(t?.emit)),{data:b,error:S}=i(()=>r.docs(c),[c]),w=e||Q(b),{data:D,error:O,loading:k}=i(()=>w?r.docsPage(w,c):Promise.resolve(null),[w,c]),{data:A}=i(()=>r.docsPage(`glossary`,c).catch(()=>null),[c],`docs:glossary`);(0,T.useEffect)(()=>{if(b&&w&&!b.groups.some(e=>e.pages.some(e=>e.id===w))){let e=Q(b);e&&e!==w&&p(Z(e))}},[b,w]),(0,T.useEffect)(()=>{let e=document.scrollingElement||document.documentElement;for(let t of[document.getElementById(`main`),e])t&&(t.scrollTop=0)},[w]);let j=f(b,w),M=j.part||b?.groups?.[0]||null,N=M?.id===m;(0,T.useEffect)(()=>{N&&D?.id===w&&te(w)},[N,D,w]);let P=N?[...h(),w]:[],[F,I]=(0,T.useState)(``),[L,R]=(0,T.useState)(`all`),[z,B]=(0,T.useState)(M?.id);M?.id!==z&&(B(M?.id),I(``),R(`all`));let V=$(M),H=x(V),U=L===`all`?V:V.filter(e=>e.group===L),W=ne(U,F);return S?(0,E.jsx)(g,{error:S}):(0,E.jsx)(`div`,{className:`docs-wrap`,children:(0,E.jsxs)(`div`,{className:`library docs-lib`,children:[(0,E.jsxs)(`aside`,{className:`lib-kinds`,"aria-label":`Docs parts`,children:[(0,E.jsxs)(`div`,{className:`lib-title`,children:[(0,E.jsx)(`h1`,{className:`h`,children:`Docs`}),(0,E.jsx)(`span`,{className:`dim`,children:`How it works, and how to use it`})]}),(0,E.jsx)(l,{"aria-label":`Harness`,children:s.map(e=>(0,E.jsx)(`button`,{className:c===e.id?`on`:``,onClick:()=>v(e.id),"aria-pressed":c===e.id,children:e.label},e.id))}),(0,E.jsx)(`nav`,{className:`kind-list`,"aria-label":`Parts`,children:(b?.groups||[]).map(e=>(0,E.jsxs)(T.Fragment,{children:[(0,E.jsxs)(`a`,{href:e.pages[0]?Z(e.pages[0].id):`#/docs`,className:M?.id===e.id?`on`:``,"aria-current":M?.id===e.id?`page`:void 0,children:[e.label,(0,E.jsx)(`span`,{className:`mono dim`,children:e.pages.length})]}),M?.id===e.id&&(0,E.jsx)(_,{label:`Sections`,total:V.length,cats:H,cat:L,onChange:R})]},e.id))})]}),(0,E.jsx)(y,{label:M?.label||`Docs`,count:F.trim()?`${W.length} of ${U.length}`:U.length||``,extra:N&&(0,E.jsx)(u,{pages:M.pages,seen:P}),q:F,onQ:I,matched:W.length,inView:[M?.id,w],children:b?(0,E.jsx)(C,{rows:W,activeName:w,hrefOf:e=>Z(e.name),pills:N?e=>P.includes(e.name)&&e.name!==w?(0,E.jsxs)(`span`,{className:`docs-read-mark`,children:[(0,E.jsx)(`span`,{"aria-hidden":`true`,children:`✓`}),(0,E.jsx)(`span`,{className:`sr-only`,children:`read`})]}):null:void 0}):(0,E.jsx)(a,{label:`Loading docs…`})}),(0,E.jsxs)(`article`,{className:`lib-reader docs-reader`,"aria-label":`Page`,children:[j.page&&(0,E.jsxs)(`nav`,{className:`docs-crumbs mono`,"aria-label":`Breadcrumb`,children:[(0,E.jsx)(`a`,{href:Z(j.part.pages[0].id),children:j.part.label}),(0,E.jsx)(`span`,{"aria-hidden":`true`,children:`›`}),(0,E.jsx)(`a`,{href:Z(j.part.pages.find(e=>(e.section||`General`)===j.section).id),children:j.section}),(0,E.jsx)(`span`,{"aria-hidden":`true`,children:`›`}),(0,E.jsx)(`span`,{"aria-current":`page`,children:j.page.title})]}),(0,E.jsxs)(`div`,{className:`docs-read`,children:[(0,E.jsxs)(`div`,{className:`docs-article`,children:[(0,E.jsx)(re,{data:k?null:D,error:O,overview:t,onAction:n},`${w}|${c}`),!k&&(0,E.jsx)(d,{menu:b,pageId:w})]}),!k&&(0,E.jsx)(J,{body:D?.body,glossaryRows:A?.rows})]})]})]})})}export{ie as default,$ as docRows};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-hePW80VL.js";import{i as e,t}from"./react-DlYQp10C.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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./drawable-BERkKhx_.js";import{n as i,r as a}from"./sections-ChwaobfW.js";import{F as o,J as s,N as c,X as l,Y as u,et as d,rt as f}from"./index-C9R_bRw_.js";import{t as p}from"./jobBuckets-Dbq8ZlWW.js";import{n as m}from"./Dashboard-DCoUN60W.js";var h=e(t(),1),g=n(),_=12,v=120,y=[`#2BB673`,`#16A6A6`,`#E8A23B`,`#E07A5F`,`#8E7DBE`,`#5BD08A`,`#79856E`],b=650;function x({segments:e,size:t=186,stroke:n=26,caption:i=`capabilities`}){let a=e.reduce((e,t)=>e+t.value,0)||1,o=(0,h.useRef)(null),c=e.map(e=>e.value).join(`,`);(0,h.useLayoutEffect)(()=>{let t=o.current?.querySelectorAll(`path`);if(!t?.length||!u())return;let n=e.filter(e=>e.value>0).map(e=>e.value/a),i=n.map((e,t)=>n.slice(0,t).reduce((e,t)=>e+t,0)),s=r(t);d(s,{draw:`0 0`});let c=f(s,{draw:[`0 0`,`0 1`],duration:(e,t)=>Math.max(b*n[t],60),delay:(e,t)=>b*i[t],ease:`linear`});return l(c,b)},[c]);let p=t/2-n/2,m=t/2,_=t/2,v=[],y=0;for(let t of e)v.push(y),y+=t.value;return(0,g.jsxs)(`svg`,{width:t,height:t,viewBox:`0 0 ${t} ${t}`,children:[(0,g.jsx)(`circle`,{cx:m,cy:_,r:p,fill:`none`,stroke:`var(--surface-3)`,strokeWidth:n}),(0,g.jsx)(`g`,{ref:o,children:e.map((e,t)=>{if(e.value/a<=0)return null;let r=v[t]/a*2*Math.PI-Math.PI/2,i=(v[t]+e.value)/a*2*Math.PI-Math.PI/2,o=m+p*Math.cos(r),s=_+p*Math.sin(r),c=m+p*Math.cos(i),l=_+p*Math.sin(i),u=+(i-r>Math.PI);return(0,g.jsx)(`path`,{d:`M ${o} ${s} A ${p} ${p} 0 ${u} 1 ${c} ${l}`,fill:`none`,stroke:e.color,strokeWidth:n,strokeLinecap:`butt`,children:(0,g.jsxs)(`title`,{children:[e.label,`: `,e.value]})},t)})}),(0,g.jsx)(`text`,{x:m,y:_-4,textAnchor:`middle`,className:`donut-c-num`,children:(0,g.jsx)(s,{value:a,duration:b})}),(0,g.jsx)(`text`,{x:m,y:_+16,textAnchor:`middle`,className:`donut-c-cap`,children:i})]})}function S(e){if(e.length<2)return e.length?`M${e[0][0]},${e[0][1]}`:``;let t=`M${e[0][0]},${e[0][1]}`;for(let n=0;n<e.length-1;n++){let r=e[n-1]||e[n],i=e[n],a=e[n+1],o=e[n+2]||a,s=i[0]+(a[0]-r[0])/6,c=i[1]+(a[1]-r[1])/6,l=a[0]-(o[0]-i[0])/6,u=a[1]-(o[1]-i[1])/6;t+=` C${s},${c} ${l},${u} ${a[0]},${a[1]}`}return t}function C({data:e,height:t=156,accent:n}){if(!e.length)return null;let r=t,i=Math.max(...e.map(e=>e.v),1)+1,a=e.length>1?588/(e.length-1):588,o=e.map((e,t)=>[6+t*a,r-6-e.v/i*(r-14-6)]),s=S(o),c=o[o.length-1],l=o[0],u=`${s} L${c[0]},${r} L${l[0]},${r} Z`;return(0,g.jsxs)(`svg`,{viewBox:`0 0 600 ${r}`,preserveAspectRatio:`none`,style:{width:`100%`,height:t,display:`block`,overflow:`visible`},children:[(0,g.jsx)(`defs`,{children:(0,g.jsxs)(`linearGradient`,{id:`b-grad`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,g.jsx)(`stop`,{offset:`0`,stopColor:n,stopOpacity:`.28`}),(0,g.jsx)(`stop`,{offset:`1`,stopColor:n,stopOpacity:`0`})]})}),(0,g.jsx)(`path`,{d:u,fill:`url(#b-grad)`}),(0,g.jsx)(`path`,{d:s,fill:`none`,stroke:n,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`}),(0,g.jsx)(`circle`,{cx:c[0],cy:c[1],r:`3.5`,fill:n,vectorEffect:`non-scaling-stroke`})]})}function w({label:e,value:t,sub:n,color:r,icon:i}){return(0,g.jsxs)(`div`,{className:`b-tile`,children:[(0,g.jsx)(`span`,{className:`b-tile-ic`,style:{background:`color-mix(in srgb, ${r} 18%, transparent)`,color:r},children:(0,g.jsx)(c,{name:i})}),(0,g.jsxs)(`div`,{className:`b-tile-body`,children:[(0,g.jsx)(`div`,{className:`b-tile-val`+(t===0?` zero`:``),children:t}),(0,g.jsx)(`div`,{className:`b-tile-label`,children:e})]}),(0,g.jsx)(`div`,{className:`b-tile-sub`,children:n})]})}function T({overview:e,sigil:t,jobs:n,doctor:r,onAction:l}){let u=e.counts||{},d=r?.groups||[],f=d.length>0,h=d.filter(e=>e.problems.length===0).length,b=d.length||1,S=m(e),T=o(e.diff),E=a.filter(e=>(u[e]||0)>0).map((e,t)=>({label:i[e].label,value:u[e]||0,color:y[t%y.length]})),D=E.reduce((e,t)=>e+t.value,0),O=p(n||[],10),k=O.reduce((e,t)=>e+t.v,0);return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsxs)(`div`,{className:`b-greet`,children:[(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`div`,{className:`eyebrow`,children:`your harness`}),(0,g.jsx)(`h1`,{className:`h b-h`,children:S}),(0,g.jsx)(`p`,{className:`sub`,children:t||`A friendly read of every layer growing in your harness.`})]}),(0,g.jsxs)(`div`,{className:`row gap-8`,children:[(0,g.jsxs)(`button`,{className:`btn`,onClick:()=>l(`update`),children:[(0,g.jsx)(c,{name:`refresh`}),`Update`]}),(0,g.jsxs)(`button`,{className:`btn ghost`,onClick:()=>l(`build-all`),children:[(0,g.jsx)(c,{name:`build`}),`Rebuild`]})]})]}),(0,g.jsxs)(`div`,{className:`grid b-hero-grid mb-16`,children:[(0,g.jsxs)(`div`,{className:`card b-hero`,children:[(0,g.jsx)(`div`,{className:`b-hero-ring`,children:(0,g.jsx)(x,{segments:[{label:`pass`,value:h,color:y[0]},{label:`attention`,value:Math.max(b-h,0),color:y[2]}],size:168,stroke:20,caption:`checks`})}),(0,g.jsxs)(`div`,{className:`b-hero-side`,children:[(0,g.jsx)(`h3`,{className:`b-hero-title`,children:f?`${h} of ${b} checks pass`:`Running checks…`}),(0,g.jsxs)(`p`,{className:`sub`,children:[`One source, rendered into `,(0,g.jsx)(`code`,{children:e.target}),` and inherited by every repo on this machine.`]}),f&&(0,g.jsx)(`ul`,{className:`b-hero-checks`,children:d.map(e=>{let t=e.problems.length===0;return(0,g.jsxs)(`li`,{className:`b-hcheck ${t?`ok`:`bad`}`,title:t?`clean`:e.problems.join(`; `),children:[(0,g.jsx)(`span`,{className:`b-hcheck-mark`,children:t?`✓`:`!`}),(0,g.jsx)(`span`,{className:`b-hcheck-label`,children:e.label})]},e.label)})}),(0,g.jsxs)(`div`,{className:`b-chips`,children:[(0,g.jsxs)(`span`,{className:`b-chip`,children:[(0,g.jsx)(`b`,{style:{textTransform:`capitalize`},children:e.theme}),` voice`]}),(0,g.jsx)(`span`,{className:`b-chip`,children:(0,g.jsx)(`b`,{children:e.emit})}),(0,g.jsxs)(`span`,{className:`b-chip`,children:[`built `,(0,g.jsx)(`b`,{children:e.build_time||`unknown`})]})]})]})]}),(0,g.jsxs)(`div`,{className:`b-tiles`,children:[(0,g.jsx)(w,{label:`Agents`,value:u.agents??`—`,sub:`specialists`,color:y[0],icon:`layers`}),(0,g.jsx)(w,{label:`Skills`,value:u.skills??`—`,sub:`workflows`,color:y[1],icon:`skill`}),(0,g.jsx)(w,{label:`Dictates`,value:u.laws??`—`,sub:u.doctrines?`${u.doctrines.active}/${u.doctrines.total} packs · ${u.doctrines.rules} rules`:`all upheld`,color:y[2],icon:`law`}),(0,g.jsx)(w,{label:`Edits`,value:T,sub:`to graft`,color:y[3],icon:`changes`})]})]}),(0,g.jsxs)(`div`,{className:`grid split-even mb-16`,children:[(0,g.jsxs)(`div`,{className:`card pad-lg b-mix-card`,children:[(0,g.jsxs)(`div`,{className:`card-head`,children:[(0,g.jsx)(`h3`,{children:`Capability mix`}),(0,g.jsx)(`div`,{className:`right`,children:(0,g.jsxs)(`span`,{className:`tick`,children:[D,` total`]})})]}),(0,g.jsxs)(`div`,{className:`b-mix`,children:[(0,g.jsx)(x,{segments:E,size:186,stroke:26}),(0,g.jsx)(`div`,{className:`b-legend`,children:E.map(e=>(0,g.jsxs)(`div`,{className:`b-leg-row`,children:[(0,g.jsx)(`span`,{className:`b-leg-dot`,style:{background:e.color}}),(0,g.jsx)(`span`,{className:`b-leg-name`,children:e.label}),(0,g.jsx)(`span`,{className:`b-leg-bar`,children:(0,g.jsx)(`i`,{style:{width:`${e.value/D*100}%`,background:e.color}})}),(0,g.jsx)(`span`,{className:`b-leg-val`,children:e.value})]},e.label))})]})]}),(0,g.jsxs)(`div`,{className:`card pad-lg`,children:[(0,g.jsxs)(`div`,{className:`card-head`,children:[(0,g.jsx)(`h3`,{children:`Recent runs`}),(0,g.jsx)(`div`,{className:`right`,children:(0,g.jsxs)(`span`,{className:`badge ok`,children:[(0,g.jsx)(`span`,{className:`dot`}),`job log`]})})]}),(0,g.jsxs)(`div`,{className:`b-stat-lead`,children:[(0,g.jsx)(`span`,{className:`b-stat-big`,children:(0,g.jsx)(s,{value:k})}),(0,g.jsxs)(`span`,{className:`b-stat-cap`,children:[`runs in the last 10 days · `,h,`/`,b,` checks pass now`]})]}),(0,g.jsx)(C,{data:O,accent:y[0],height:156})]})]}),(0,g.jsxs)(`div`,{className:`card pad-lg`,children:[(0,g.jsxs)(`div`,{className:`card-head`,children:[(0,g.jsx)(`h3`,{children:`Recent activity`}),(0,g.jsx)(`div`,{className:`right`,children:(0,g.jsxs)(`span`,{className:`tick`,children:[`last `,Math.min(n?.length||0,12),` runs`]})})]}),(0,g.jsxs)(`div`,{className:`b-timeline`,children:[(n||[]).slice(0,_).map(e=>{let t=e.status===`done`,n=e.status===`failed`?`warn`:t?`ok`:`acc`;return(0,g.jsxs)(`div`,{className:`b-tl-row`,children:[(0,g.jsx)(`span`,{className:`b-tl-node ${n}`}),(0,g.jsxs)(`div`,{className:`b-tl-body`,children:[(0,g.jsx)(`b`,{children:e.action}),e.output?`: ${e.output.split(`
|
|
2
|
+
`)[0].slice(0,v)}`:``]}),(0,g.jsx)(`span`,{className:`b-tl-when`,children:e.duration?`${e.duration}s`:e.status})]},e.id)}),(!n||n.length===0)&&(0,g.jsxs)(`div`,{className:`b-tl-row`,children:[(0,g.jsx)(`span`,{className:`b-tl-node`}),(0,g.jsx)(`div`,{className:`b-tl-body sub`,children:`No runs yet. Trigger an action to populate this.`}),(0,g.jsx)(`span`,{className:`b-tl-when`,children:`—`})]})]})]})]})}export{T as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{A as i,B as a,C as o,H as s,M as c,N as l,P as u,S as d,T as f,U as p,V as m,W as h,j as g,k as _,w as v,x as y}from"./index-C9R_bRw_.js";import{t as b}from"./Tabs-b2XFu4OS.js";import{a as x,c as S,n as C,o as w,r as T,s as E,t as D}from"./KitApply-pjhvGha0.js";var O=e(t(),1),k=n();function A({host:e,theme:t,options:n,onAction:a,onClose:o,onNote:s}){let[c,l]=(0,O.useState)({path:``,host:e,theme:t,footprint:`full`,posture:`peer`,mode:`direct`,trust:`balanced`}),[u,d]=(0,O.useState)(!1),f=(e,t)=>l(n=>({...n,[e]:t})),p=async()=>{d(!0),s(``);try{let e=await r.pickFolder();e.path?f(`path`,e.path):e.error&&s(e.error)}catch(e){s(e.message)}finally{d(!1)}},m=async()=>{let e=c.path.trim();if(!e){s(`Choose or type a folder to deploy into.`);return}s(``),await a?.(`deploy`,{host:c.host,path:e,theme:c.theme,footprint:c.footprint,posture:c.posture,mode:c.mode,trust:c.trust})&&o()};return(0,k.jsxs)(`div`,{className:`deploy-pop`,children:[(0,k.jsxs)(`div`,{className:`dp-row`,children:[(0,k.jsx)(`input`,{className:`inp dp-path`,type:`text`,placeholder:`/path/to/project, or click Browse…`,value:c.path,onChange:e=>f(`path`,e.target.value),onKeyDown:e=>e.key===`Enter`&&m(),"aria-label":`Folder to deploy into`}),(0,k.jsx)(`button`,{className:`btn ghost sm`,disabled:u,onClick:p,children:u?`Choosing…`:`Browse…`})]}),(0,k.jsxs)(`div`,{className:`dp-row`,children:[(0,k.jsxs)(`label`,{className:`dp-field`,children:[(0,k.jsx)(`span`,{children:`Deploy as`}),(0,k.jsx)(`select`,{className:`sel`,"aria-label":`host for the new harness`,value:c.host,onChange:e=>f(`host`,e.target.value),children:_.map(e=>(0,k.jsx)(`option`,{value:e.id,children:e.label},e.id))})]}),(0,k.jsx)(E,{value:c,options:n,onChange:f,who:`the new harness`}),(0,k.jsx)(`button`,{className:`btn sm`,onClick:m,children:`Deploy`}),(0,k.jsx)(`button`,{className:`btn ghost sm`,onClick:o,children:`Cancel`})]}),(0,k.jsxs)(`p`,{className:`sub dp-note`,children:[`Adds a per-repo harness (`,(0,k.jsx)(`code`,{children:i(c.host).deployAdds}),`) into the folder, non-destructively. It’s then tracked here even after you leave its directory.`]})]})}function j(){let{data:e,error:t,reload:n}=a(()=>r.excludes(),[]),[i,o]=(0,O.useState)(!1),[s,c]=(0,O.useState)([]),u=async(e,t)=>{o(!0);try{let n=await r.excludeMutate(e,t);c(n.messages||[])}catch(e){c(e.body?.messages||[e.message])}finally{o(!1),n()}};return t||!e?.installs?.length?null:(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Excluded folders`})}),(0,k.jsx)(`p`,{className:`sub mb-16`,children:`Sovereign repos: inside these folders every global harness goes dormant — hooks stay silent and the global preamble is not loaded.`}),(e.excludes||[]).map(e=>(0,k.jsxs)(`div`,{className:`row wrap between gap-12`,children:[(0,k.jsx)(`code`,{children:e.path}),(0,k.jsxs)(`span`,{className:`mono muted`,children:[`[`,e.hosts.join(`, `),`]`]}),(0,k.jsx)(`button`,{className:`btn ghost sm`,disabled:i,onClick:()=>u(`remove`,e.path),children:`Remove`})]},e.path)),(0,k.jsxs)(`button`,{className:`btn ghost sm`,disabled:i,onClick:async()=>{o(!0);try{let e=await r.pickFolder();e.path?await u(`add`,e.path):e.error&&c([e.error])}catch(e){c([e.message])}finally{o(!1)}},children:[(0,k.jsx)(l,{name:`folder`}),` Exclude a folder…`]}),s.map((e,t)=>(0,k.jsx)(`p`,{className:`sub`,children:e},t))]})}function M({inst:e,memory:t,busy:n,onMemory:r,onRemove:i,onCancel:a}){return(0,k.jsxs)(`div`,{className:`h-remove`,children:[(0,k.jsxs)(`p`,{className:`hr-msg`,children:[(0,k.jsx)(`strong`,{children:e.scope===`project`?`Remove this harness from the folder?`:`Remove the global ${e.host} install?`}),` `,(0,k.jsxs)(`span`,{className:`sub`,children:[`Deletes `,(0,k.jsx)(`code`,{children:c(e.host,e.scope)}),e.scope===`project`?` and de-lists it.`:`; the row stays, marked “not installed.”`,` `,`This can’t be undone.`]})]}),(0,k.jsxs)(`label`,{className:`field`,children:[(0,k.jsx)(`span`,{children:`Memory and notebook`}),(0,k.jsxs)(`select`,{className:`sel`,"aria-label":`memory disposition`,value:t,onChange:e=>r(e.target.value),children:[(0,k.jsx)(`option`,{value:`keep`,children:`keep in place`}),(0,k.jsx)(`option`,{value:`archive`,children:`archive aside`}),(0,k.jsx)(`option`,{value:`delete`,children:`delete too`})]})]}),(0,k.jsxs)(`div`,{className:`row gap-8`,children:[(0,k.jsx)(`button`,{type:`button`,className:`btn danger`,disabled:n,onClick:i,children:n?`Removing…`:`Remove`}),(0,k.jsx)(`button`,{type:`button`,className:`btn ghost`,onClick:a,children:`Cancel`})]})]})}function N({targets:e,onReveal:t}){let n=e.flatMap(e=>e.servers);return(0,k.jsxs)(`div`,{className:`ip-block`,children:[(0,k.jsxs)(`span`,{className:`ip-label`,children:[`MCP servers `,(0,k.jsx)(`span`,{className:`mono dim`,children:n.length})]}),e.map(e=>(0,k.jsxs)(`div`,{className:`mcp-target`,children:[(0,k.jsxs)(`div`,{className:`mt-head`,children:[(0,k.jsx)(`code`,{title:e.path,children:e.label}),(0,k.jsx)(`button`,{type:`button`,className:`btn ghost sm`,onClick:()=>t(e),title:`Open the folder holding ${e.path} to edit it`,children:`Open folder`})]}),e.servers.length?e.servers.map(e=>(0,k.jsxs)(`div`,{className:`mcp-row`,children:[(0,k.jsx)(`span`,{className:`mono`,children:e.name}),(0,k.jsx)(`span`,{className:`tag ${e.state===`enabled`?`ok`:`warn`}`,children:e.state===`enabled`?`Enabled`:`Disabled`})]},e.name)):(0,k.jsx)(`p`,{className:`sub`,children:`None configured in this file.`})]},e.path))]})}var P={active:[`Active`,`ok`],disabled:[`Disabled`,`warn`],absent:[`Not installed`,``]};function F({inst:e,targets:t,choice:n,unchanged:r,options:a,onPick:o,canAct:s,busy:c,removing:l,onRemoving:u,onApply:d,onToggleInstall:f,onRemove:p,onRevealMcp:m}){let h=`${e.host} · ${e.scope}`,[_,v]=P[e.state]||P.absent,y=e.state===`active`,b=e.state===`absent`;return(0,k.jsxs)(`aside`,{className:`install-panel`,"aria-label":`${h} install`,children:[(0,k.jsx)(`span`,{className:`ip-eyebrow`,children:`Selected install`}),(0,k.jsxs)(`div`,{className:`ip-head`,children:[(0,k.jsx)(`h2`,{children:g(e)}),(0,k.jsx)(`span`,{className:`tag ${v}`,children:_})]}),(0,k.jsx)(`span`,{className:`ip-kind`,children:e.scope===`global`?`Global install`:`Per-project install · ${i(e.host).label}`}),(0,k.jsx)(`code`,{className:`ip-path`,children:e.path}),b?(0,k.jsxs)(`p`,{className:`sub`,children:[`Install Geneseed here as `,(0,k.jsx)(`strong`,{children:e.host}),`. Files are added non-destructively; deactivate or uninstall later.`]}):null,(y||b)&&s?(0,k.jsx)(`div`,{className:`ip-picks`,children:(0,k.jsx)(E,{value:n,options:a,onChange:o,who:h})}):null,y&&t.length?(0,k.jsx)(N,{targets:t,onReveal:m}):null,y&&e.scope===`global`?(0,k.jsx)(j,{}):null,b?null:(0,k.jsxs)(`label`,{className:`ip-switch`,children:[(0,k.jsx)(S,{on:y,disabled:c,label:`activate ${h}`,onToggle:f}),(0,k.jsx)(`span`,{children:y?`Active: loads in every session`:`Disabled: files moved aside`})]}),(0,k.jsx)(`div`,{className:`ip-spacer`}),s?(0,k.jsxs)(`div`,{className:`ip-actions`,children:[b?(0,k.jsx)(`button`,{type:`button`,className:`btn`,onClick:d,children:`Install`}):y?(0,k.jsx)(`button`,{type:`button`,className:`btn`,disabled:r,onClick:d,children:`Apply and rebuild`}):null,b?null:(0,k.jsx)(`button`,{type:`button`,className:`btn ghost danger-line`,"aria-label":`remove ${h} from ${e.path}`,"aria-expanded":!!l,disabled:c,onClick:()=>u(l?null:{memory:`keep`}),children:`Uninstall…`})]}):null,l?(0,k.jsx)(M,{inst:e,memory:l.memory,busy:c,onMemory:e=>u({memory:e}),onRemove:p,onCancel:()=>u(null)}):null]})}var I=(e,t)=>`${e} ${t}`,L={active:[`Active`,`ok`],disabled:[`Disabled`,`warn`]};function R({rows:e,project:t,currentId:n,onPick:r,label:a}){return(0,k.jsx)(`div`,{className:`tbl-scroll`,children:(0,k.jsxs)(`table`,{className:`tbl hosts-tbl`,"aria-label":a,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{children:[(0,k.jsx)(`th`,{children:t?`Project`:`Host`}),(0,k.jsx)(`th`,{children:t?`Host`:`Path`}),(0,k.jsx)(`th`,{children:`Voice`}),(0,k.jsx)(`th`,{children:`Footprint`}),(0,k.jsx)(`th`,{children:`State`}),(0,k.jsx)(`th`,{children:(0,k.jsx)(`span`,{className:`sr-only`,children:`Selected`})})]})}),(0,k.jsx)(`tbody`,{children:e.map(e=>{let[a,o]=L[e.state]||[`Not installed`,``],s=n===e.id,c=e.state===`absent`;return(0,k.jsxs)(`tr`,{className:`pickable${s?` on`:``}${c?` quiet`:``}`,onClick:()=>r(e.id),children:[(0,k.jsx)(`td`,{children:(0,k.jsx)(`button`,{type:`button`,className:`row-pick`,"aria-pressed":s,title:e.path,onClick:()=>r(e.id),children:g(e)})}),t?(0,k.jsx)(`td`,{children:i(e.host).label}):(0,k.jsx)(`td`,{className:`mono path-cell`,title:e.path,children:e.path}),(0,k.jsx)(`td`,{children:c?``:e.theme||``}),(0,k.jsx)(`td`,{children:c?``:e.footprint||``}),(0,k.jsx)(`td`,{children:(0,k.jsx)(`span`,{className:`tag ${o}`,children:a})}),(0,k.jsx)(`td`,{className:`pick-mark`,children:s?`Editing ›`:``})]},e.id)})})]})})}function z({themes:e,current:t}){if(!e.length||!t)return null;let n=[...e].sort((e,n)=>e.name===t?-1:+(n.name===t));return(0,k.jsxs)(`details`,{className:`panel voice-ref`,children:[(0,k.jsxs)(`summary`,{children:[(0,k.jsx)(`span`,{className:`vr-title`,children:`Voices`}),(0,k.jsxs)(`span`,{className:`mono dim`,children:[e.length,` to choose from, set per install`]})]}),(0,k.jsx)(`div`,{className:`vr-list`,children:n.map(e=>(0,k.jsxs)(`div`,{className:`voice-row${e.name===t?` current`:``}`,children:[(0,k.jsx)(`span`,{className:`vr-name`,children:e.name}),(0,k.jsx)(`span`,{className:`vr-desc`,children:e.tagline?`“${e.tagline}”`:e.blurb})]},e.name))})]})}function ee({setup:e,overview:t}){if(!e)return null;let n=e.installed_fp&&e.installed_fp===e.source_fp;return(0,k.jsxs)(`section`,{className:`panel`,"aria-labelledby":`checkout-h`,children:[(0,k.jsxs)(`div`,{className:`panel-head`,children:[(0,k.jsx)(`h2`,{id:`checkout-h`,children:`This checkout`}),(0,k.jsx)(`span`,{className:`mono ${n?`t-good`:`t-warn`}`,children:e.version_verdict})]}),(0,k.jsxs)(`dl`,{className:`kv-grid`,children:[(0,k.jsx)(`dt`,{children:`Source`}),(0,k.jsx)(`dd`,{className:`mono`,children:e.root}),(0,k.jsx)(`dt`,{children:`Version`}),(0,k.jsx)(`dd`,{className:`mono`,children:t?.version||`unknown`}),(0,k.jsx)(`dt`,{children:`Fingerprint`}),(0,k.jsx)(`dd`,{className:`mono`,children:e.source_fp})]})]})}function B({onAction:e,themes:t=[],currentTheme:n,overview:i,setup:s,dataRev:c,onMutated:u}){let f=d(),{data:p,error:m}=a(()=>r.installs(),[c]),{data:h,error:g}=a(()=>r.mcp(),[c]),[_,v]=(0,O.useState)(``),[b,x]=(0,O.useState)(``),[S,C]=(0,O.useState)({}),[T,E]=(0,O.useState)(!1),[D,j]=(0,O.useState)(null),[M,N]=(0,O.useState)(``),P=(0,O.useMemo)(()=>{let e={};for(let t of h?.targets||[]){let n=I(t.host||`opencode`,t.root);(e[n]||(e[n]=[])).push(t)}return e},[h]);if(m||g)return(0,k.jsx)(y,{error:m||g});if(!p||!h)return(0,k.jsx)(o,{});let L={active:0,disabled:1,absent:2},B=[...p.installs].sort((e,t)=>(e.scope===`global`?0:1)-(t.scope===`global`?0:1)||(L[e.state]??3)-(L[t.state]??3)),V=B.find(e=>e.id===M)||B.find(e=>e.selected)||B.find(e=>e.state===`active`)||B[0],H=e=>{let t=S[e.id]||{};return{theme:t.theme||e.theme||n||`neutral`,footprint:t.footprint||e.footprint||`full`,posture:t.posture||e.posture||`peer`,mode:t.mode||e.mode||`direct`,trust:t.trust||e.trust||`balanced`}},U=(e,t,n)=>C(r=>({...r,[e.id]:{...r[e.id],[t]:n}})),W=e=>{let t=H(e);return t.theme===e.theme&&t.footprint===(e.footprint||`full`)&&t.posture===(e.posture||`peer`)&&t.mode===(e.mode||`direct`)&&t.trust===(e.trust||`balanced`)},G={theme:t.map(e=>e.name),footprint:w,posture:p.postures||[],mode:p.modes||[],trust:p.trusts||[]},K=async t=>{let{theme:n,footprint:r,posture:i,mode:a,trust:o}=H(t),s=t.state===`absent`?`Install Geneseed into ${t.path} with the “${n}” voice (${r} footprint, ${i} posture, ${a} mode)? Files are added non-destructively (your own config is left untouched); deactivate or uninstall later.`:`Rebuild this install (voice “${n}”, ${r} footprint, ${i} posture, ${a} mode)? It rebuilds in place, non-destructive.`;await f(s,{title:t.state===`absent`?`Install Geneseed?`:`Rebuild this install?`,confirmLabel:t.state===`absent`?`Install`:`Rebuild`})&&e?.(`install`,{host:t.host,scope:t.scope,path:t.path,theme:n,footprint:r,posture:i,mode:a,trust:o})},q=async e=>{if(e.state!==`active`||await f(`Deactivate this install? Files are moved aside, not deleted; reactivate any time.`,{title:`Deactivate this install?`,confirmLabel:`Deactivate`})){x(e.id),v(``);try{let t=await r.installToggle(e.host,e.path,e.state===`active`?`deactivate`:`activate`);if(!t.ok){let e=Array.isArray(t.failed)?t.failed.join(`, `):``;v(t.error||e&&`unrestored: ${e}`||`action failed`);return}u?.()}catch(e){v(e.message)}finally{x(``)}}},J=async()=>{let e=D;if(e){x(e.id),v(``);try{let t=await r.installRemove(e.host,e.path,e.memory);if(!t.ok){v(t.error||`remove failed`);return}j(null),t.kept?.length&&v(`Removed. Kept ${t.kept.length} file(s) you edited: ${t.kept.join(`, `)} — they are yours now (the CLI geneseed uninstall --force deletes edited files too).`),u?.()}catch(e){v(e.message)}finally{x(``)}}},Y=async e=>{v(``);try{let t=await r.mcpReveal(e.path);v(`Opening ${t.dir}. If no window appeared, open that folder by hand.`)}catch(e){v(e.message)}},X=B.find(e=>e.selected)?.host||B.find(e=>e.state===`active`)?.host||B[0]?.host||`opencode`,Z=B.filter(e=>e.scope===`global`),Q=B.filter(e=>e.scope!==`global`),$=e=>{N(e),j(null)};return(0,k.jsxs)(`div`,{className:`hosts`,children:[(0,k.jsxs)(`div`,{className:`hosts-main`,children:[(0,k.jsxs)(`div`,{className:`toolbar`,children:[(0,k.jsxs)(`span`,{className:`dim`,children:[B.filter(e=>e.state===`active`).length,` active of `,B.length,` `,`detected.`]}),e?(0,k.jsx)(`div`,{className:`row gap-8`,children:(0,k.jsxs)(`button`,{type:`button`,className:`btn ghost`,onClick:()=>e(`build-all`),children:[(0,k.jsx)(l,{name:`refresh`}),` Rebuild all`]})}):null]}),_?(0,k.jsx)(`p`,{className:`tag bad note`,role:`status`,children:_}):null,(0,k.jsxs)(`section`,{className:`panel flush`,"aria-labelledby":`inst-global`,children:[(0,k.jsx)(`div`,{className:`inst-head`,children:(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{id:`inst-global`,children:`Global installs`}),(0,k.jsx)(`p`,{className:`dim`,children:`One per tool. Loaded in every folder, except excluded ones.`})]})}),(0,k.jsx)(R,{rows:Z,currentId:V?.id,onPick:$,label:`Global installs`})]}),(0,k.jsxs)(`section`,{className:`panel flush`,"aria-labelledby":`inst-project`,children:[(0,k.jsxs)(`div`,{className:`inst-head`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{id:`inst-project`,children:`Per-project installs`}),(0,k.jsx)(`p`,{className:`dim`,children:`A repo with its own harness. Inside it, only that harness loads.`})]}),e?(0,k.jsxs)(`button`,{type:`button`,className:`btn ghost`,onClick:()=>E(e=>!e),children:[(0,k.jsx)(l,{name:`folder`}),` Deploy to a repo…`]}):null]}),T?(0,k.jsx)(`div`,{className:`inst-deploy`,children:(0,k.jsx)(A,{host:X,theme:n||`neutral`,options:G,onAction:e,onClose:()=>E(!1),onNote:v})}):null,Q.length?(0,k.jsx)(R,{rows:Q,project:!0,currentId:V?.id,onPick:$,label:`Per-project installs`}):(0,k.jsx)(`div`,{className:`empty inst-empty`,children:`No repo has its own harness yet. Deploy one to give a project its own rules and voice.`})]}),(0,k.jsx)(ee,{setup:s,overview:i}),(0,k.jsx)(z,{themes:t,current:i?.theme})]}),V?(0,k.jsx)(F,{inst:V,targets:P[I(V.host,V.path)]||[],choice:H(V),unchanged:W(V),options:G,onPick:(e,t)=>U(V,e,t),canAct:!!e,busy:b===V.id,removing:D?.id===V.id?D:null,onRemoving:e=>j(e&&{id:V.id,host:V.host,path:V.path,memory:e.memory}),onApply:()=>K(V),onToggleInstall:()=>q(V),onRemove:J,onRevealMcp:Y},V.id):null]})}function V({onAction:e,dataRev:t}){let{data:n,error:i}=a(()=>r.kits(),[t]),s=x(n,e);return i||n?.error?(0,k.jsx)(y,{error:i||n.error}):n?n.installs.length?n.kits.length?(0,k.jsx)(`div`,{className:`kits-tab`,children:n.installs.map(e=>{let t=T(e),r=s.setOf(e),i=`${e.host} · ${e.scope}`;return(0,k.jsxs)(`section`,{className:`panel flush`,"aria-label":i,children:[(0,k.jsxs)(`div`,{className:`inst-head`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{children:i}),(0,k.jsx)(`p`,{className:`dim mono`,children:e.path})]}),(0,k.jsx)(C,{row:e})]}),t&&(0,k.jsx)(`p`,{className:`kit-lock`,children:e.reason||e.error}),(0,k.jsx)(`ul`,{className:`kit-list`,children:n.kits.map(n=>(0,k.jsxs)(`li`,{className:`kit-row`,children:[(0,k.jsxs)(`div`,{className:`kit-main`,children:[(0,k.jsx)(`a`,{className:`kit-name`,href:`#/kits/${encodeURIComponent(n.name)}`,children:n.name}),n.description?(0,k.jsx)(`span`,{className:`kit-desc`,children:n.description}):null,(0,k.jsxs)(`span`,{className:`mono dim`,children:[n.skills.length,` skills · `,n.agents.length,` agents`]})]}),(0,k.jsx)(S,{on:r.has(n.name),disabled:t,label:`${n.name} for ${i}`,onToggle:()=>s.toggle(e,n.name)})]},n.name))}),Object.entries(e.keptKitFiles||{}).map(([e,t])=>(0,k.jsxs)(`p`,{className:`kit-kept mono dim`,children:[`kept from inactive kit `,e,`: `,t.join(`, `),` — delete by hand`]},e)),(0,k.jsx)(D,{row:e,stage:s})]},e.id)})}):(0,k.jsx)(`div`,{className:`empty inst-empty`,children:`This Geneseed ships no kit.`}):(0,k.jsx)(`div`,{className:`empty inst-empty`,children:`No install yet.`}):(0,k.jsx)(o,{})}function H(e){return e.startsWith(`@@`)||e.startsWith(`+++`)||e.startsWith(`---`)?`hunk`:e.startsWith(`+`)?`add`:e.startsWith(`-`)?`del`:`ctx`}function U({onMutated:e,onAction:t,dataRev:n}){let i=d(),{data:s,error:c,reload:u}=a(()=>r.diff(),[n]),[f,p]=(0,O.useState)(!1),[m,h]=(0,O.useState)(``),[g,_]=(0,O.useState)(()=>new Set),[v,b]=(0,O.useState)(()=>new Set),[x,S]=(0,O.useState)(null);s&&s!==x&&(S(s),_(new Set),b(new Set(s.files.map(e=>e.rel))));let C=e=>_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),w=()=>_(e=>e.size===D.length?new Set:new Set(D.map(e=>e.rel))),T=()=>t?.(`export`),E=async()=>{let t=[...g],n=t.filter(e=>s.files.find(t=>t.rel===e)?.status===`added`),a=n.length?`Restoring will DELETE ${n.length} deployed-only file(s):\n${n.join(`
|
|
2
|
+
`)}\n\n`:``;if(await i(`${a}Discard local edits and restore ${t.length} file(s) from source?`,{title:`Restore from source?`,confirmLabel:`Restore`})){p(!0);try{let n=await r.restore(t),i=n.errors.length?` · ${n.errors.length} error(s): ${n.errors.join(`; `)}`:``;h(`Restored ${n.restored.length}, deleted ${n.deleted.length}${i}`),await u(),e?.()}catch(e){h(e.message)}finally{p(!1)}}};if(c)return(0,k.jsx)(y,{error:c});if(!s)return(0,k.jsx)(o,{});if(!s.deployed)return(0,k.jsxs)(`div`,{className:`empty`,children:[(0,k.jsx)(`div`,{className:`big`,children:`No deployed harness`}),`Nothing to diff against.`]});if(!s.diffable)return(0,k.jsxs)(`div`,{className:`empty`,children:[(0,k.jsx)(`div`,{className:`big`,children:`No drift check for this install`}),`The drift check covers global installs only.`]});let D=s.files.filter(e=>e.status!==`linked`),A=s.files.filter(e=>e.status===`linked`),j=D.filter(e=>e.status===`edited`).length,M=D.filter(e=>e.status===`added`).length,N=D.filter(e=>e.status===`missing`).length,P=e=>b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{className:`h`,children:`Local edits`}),(0,k.jsx)(`p`,{className:`sub`,children:`The agent refines its own deployed files in place. Export them as improvements before any rebuild overwrites them.`})]}),(0,k.jsxs)(`div`,{className:`row gap-10`,children:[(0,k.jsxs)(`button`,{className:`btn ghost`,disabled:f||g.size===0,onClick:E,children:[`Restore`,g.size?` (${g.size})`:``]}),(0,k.jsxs)(`button`,{className:`btn`,disabled:f,onClick:T,children:[(0,k.jsx)(l,{name:`download`}),`Export improvements`]})]})]}),m?(0,k.jsx)(`p`,{className:`sub mb-14`,children:m}):null,A.length?(0,k.jsxs)(`p`,{className:`sub dim mb-14`,title:A.map(e=>e.rel).join(`
|
|
3
|
+
`),children:[A.length,` linked — yours, left alone`]}):null,D.length===0?(0,k.jsxs)(`div`,{className:`empty`,children:[(0,k.jsx)(`div`,{className:`big`,children:`In sync`}),`Deployed harness matches source.`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`row between mb-14`,children:[(0,k.jsxs)(`div`,{className:`row gap-10`,children:[(0,k.jsxs)(`span`,{className:`badge`,children:[(0,k.jsx)(`span`,{className:`dot`,style:{background:`var(--warn)`}}),j,` edited`]}),(0,k.jsxs)(`span`,{className:`badge`,children:[(0,k.jsx)(`span`,{className:`dot`,style:{background:`var(--good)`}}),M,` added`]}),N>0&&(0,k.jsxs)(`span`,{className:`badge`,children:[(0,k.jsx)(`span`,{className:`dot`,style:{background:`var(--bad)`}}),N,` missing`]})]}),(0,k.jsxs)(`label`,{className:`row dim`,style:{gap:8,fontSize:12.5,cursor:`pointer`},children:[(0,k.jsx)(`input`,{type:`checkbox`,style:{accentColor:`var(--accent)`},checked:g.size===D.length,onChange:w}),`Select all`]})]}),(0,k.jsx)(`div`,{className:`stack gap-12`,children:D.map(e=>{let t=v.has(e.rel),n=e.status===`added`?`ok`:e.status===`missing`?`bad`:`warn`;return(0,k.jsxs)(`div`,{className:`card diff-file${t?` open`:``}`,children:[(0,k.jsxs)(`div`,{className:`diff-head`,children:[(0,k.jsx)(`input`,{type:`checkbox`,className:`chk`,checked:g.has(e.rel),onChange:()=>C(e.rel),onClick:e=>e.stopPropagation(),"aria-label":`Select ${e.rel}`}),(0,k.jsx)(`span`,{className:`fname`,children:e.rel}),(0,k.jsxs)(`span`,{className:`badge ${n}`,children:[(0,k.jsx)(`span`,{className:`dot`}),e.status]}),(0,k.jsxs)(`span`,{className:`dim mono`,style:{marginLeft:`auto`,fontSize:11},children:[e.diff.length,` lines`]}),(0,k.jsx)(`button`,{className:`iconbtn`,onClick:()=>P(e.rel),style:{transform:t?`rotate(90deg)`:`none`},"aria-label":t?`Collapse ${e.rel}`:`Expand ${e.rel}`,"aria-expanded":t,children:(0,k.jsx)(l,{name:`chevron`})})]}),t&&(0,k.jsx)(`div`,{className:`diff-body`,children:e.diff.map((e,t)=>(0,k.jsx)(`div`,{className:`diff-line ${H(e)}`,children:e},t))})]},e.rel)})})]})]})}function W({group:e,i:t}){let n=e.problems.length===0,[r,i]=(0,O.useState)(!n);return(0,k.jsxs)(`div`,{className:`card check rise ${n?``:`bad`} ${r?`open`:``}`,style:{"--i":t*.6},children:[(0,k.jsxs)(`button`,{className:`check-head`,onClick:()=>i(e=>!e),disabled:n,style:{cursor:n?`default`:`pointer`},"aria-expanded":n?void 0:r,children:[(0,k.jsx)(`span`,{className:`feed-dot ${n?`ok`:`bad`}`,style:{width:9,height:9}}),(0,k.jsx)(`h3`,{children:e.label}),(0,k.jsxs)(`span`,{className:`badge ${n?`ok`:`bad`}`,children:[(0,k.jsx)(`span`,{className:`dot`}),n?`clean`:`${e.problems.length} problem${e.problems.length===1?``:`s`}`]}),!n&&(0,k.jsx)(l,{name:`chevron`,className:`chev glyph`})]}),!n&&r&&(0,k.jsx)(`div`,{className:`check-body`,children:e.problems.map(e=>(0,k.jsxs)(`div`,{className:`problem`,children:[(0,k.jsx)(`span`,{className:`x`,children:`✕`}),(0,k.jsx)(`span`,{children:e})]},e))})]})}function G(){let e=(0,O.useRef)(!1),{data:t,error:n,reload:i,setData:s}=a(()=>r.doctor(e.current),[]);return n?(0,k.jsx)(y,{error:n}):(0,k.jsxs)(`div`,{className:`narrow`,children:[(0,k.jsxs)(`div`,{className:`head-row mb-16`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{className:`h`,children:`Doctor`}),(0,k.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,k.jsxs)(`button`,{className:`btn ghost`,onClick:()=>{e.current=!0,s(null),i()},disabled:!t,children:[(0,k.jsx)(l,{name:`refresh`}),t?`Re-run checks`:`Running…`]})]}),t?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`card pad-md mb-16`,children:(0,k.jsxs)(`div`,{className:`row wrap between gap-12`,children:[(0,k.jsxs)(`div`,{className:`row`,style:{gap:10,flexWrap:`wrap`},children:[(0,k.jsxs)(`span`,{className:`dim mono`,style:{fontSize:12},children:[`validated `,t.themes.length,` theme`,t.themes.length===1?``:`s`]}),t.themes.map(e=>(0,k.jsx)(`span`,{className:`badge`,style:{textTransform:`capitalize`},children:e},e))]}),t.ok?(0,k.jsxs)(`span`,{className:`badge ok`,children:[(0,k.jsx)(`span`,{className:`dot`}),`all clean`]}):(0,k.jsxs)(`span`,{className:`badge bad`,children:[(0,k.jsx)(`span`,{className:`dot`}),t.problems.length,` problem`,t.problems.length===1?``:`s`]})]})}),(0,k.jsx)(`div`,{className:`stack gap-12`,children:t.groups.map((e,t)=>(0,k.jsx)(W,{group:e,i:t},e.label))})]}):(0,k.jsx)(o,{label:`Running every check (builds each theme in a sandbox)…`})]})}function K(){let e=d(),[t,n]=(0,O.useState)(!1),[i,a]=(0,O.useState)(!1),[o,s]=(0,O.useState)(null);return t?(0,k.jsxs)(`p`,{className:`sub`,children:[`Server stopped. You can close this tab and reopen any time with `,(0,k.jsx)(`code`,{children:`geneseed web`}),`.`]}):(0,k.jsxs)(k.Fragment,{children:[o&&(0,k.jsx)(`p`,{className:`sub`,role:`alert`,children:o}),(0,k.jsxs)(`div`,{className:`row`,children:[(0,k.jsxs)(`button`,{className:`btn ghost`,onClick:async()=>{if(await e(`Restart the local Geneseed server? The console reconnects in a moment.`,{title:`Restart the server?`,confirmLabel:`Restart`})){a(!0),s(null);try{await m()}catch(e){s(e.message),a(!1)}}},disabled:i,children:[(0,k.jsx)(l,{name:`refresh`}),i?`Restarting…`:`Restart server`]}),(0,k.jsxs)(`button`,{className:`btn ghost`,onClick:async()=>{if(await e(`Stop the local Geneseed server? The console goes offline until you start it again.`,{title:`Stop the server?`,confirmLabel:`Stop server`})){s(null);try{await r.shutdown()}catch(e){if(e.status)return s(e.message)}n(!0)}},disabled:i,children:[(0,k.jsx)(l,{name:`x`}),`Stop server`]})]})]})}var q=`https://github.com/Arylmera/Geneseed`,J=`https://github.com/Arylmera`;function Y(){let[e,t]=(0,O.useState)(q),[n,i]=(0,O.useState)(!0);return(0,O.useEffect)(()=>{Promise.resolve(r.docsPage?.(`about`)).then(e=>{e?.repo&&(t(e.repo),i(!!e.repo_is_github))}).catch(()=>{})},[]),(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`About`})}),(0,k.jsx)(`p`,{className:`sub mb-16`,children:`Geneseed is a portable, theme-able harness you implant once and use everywhere to grow a disciplined AI coding agent. One canonical source, many voices, MIT-licensed.`}),(0,k.jsxs)(`div`,{className:`row wrap gap-10`,children:[(0,k.jsxs)(`a`,{className:`btn ghost`,href:e,target:`_blank`,rel:`noreferrer`,children:[(0,k.jsx)(l,{name:`github`}),n?`Source on GitHub`:`Source repo`]}),n&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`a`,{className:`btn ghost`,href:e+`/issues`,target:`_blank`,rel:`noreferrer`,children:[(0,k.jsx)(l,{name:`external`}),`Issues`]}),(0,k.jsxs)(`a`,{className:`btn ghost`,href:e+`/blob/main/LICENSE`,target:`_blank`,rel:`noreferrer`,children:[(0,k.jsx)(l,{name:`external`}),`MIT License`]})]})]})]}),(0,k.jsxs)(`div`,{className:`card pad-lg`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Creator`})}),(0,k.jsxs)(`p`,{className:`sub mb-16`,children:[`Geneseed is built by `,(0,k.jsx)(`strong`,{children:`Guillaume Lemer`}),`. It started as a personal, Obsidian-vault-grown agent operating system and was distilled into the repo you are running. Implant it once, and a disciplined agent grows around the same inherited rules, skills, and memory in every repo it follows you into.`]}),(0,k.jsx)(`p`,{className:`sub mb-16`,children:`If you find this useful, a star on the repo or an issue with feedback is the best way to help shape what comes next.`}),(0,k.jsx)(`div`,{className:`row wrap gap-10`,children:(0,k.jsxs)(`a`,{className:`btn ghost`,href:J,target:`_blank`,rel:`noreferrer`,children:[(0,k.jsx)(l,{name:`github`}),`@Arylmera on GitHub`]})})]})]})}function X({overview:e,onAction:t,flavour:n,onFlavour:r,accentMode:i,onAccentMode:a,layout:o,onLayout:c}){let u=d(),m=e?.install,g=e?.footprint,_=async e=>{m&&e!==g&&await u(`Rebuild ${m.host} · ${m.scope} with the “${e}” footprint? It rebuilds in place, non-destructive.`,{title:`Change the footprint?`,confirmLabel:`Rebuild`})&&t?.(`install`,{...m,footprint:e})};return(0,k.jsxs)(`div`,{className:`narrow-lg`,children:[(0,k.jsx)(`div`,{className:`head-row mb-18`,children:(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h2`,{className:`h`,children:`Settings`}),(0,k.jsx)(`p`,{className:`sub`,children:`Console appearance, the footprint of the install you are viewing, machine maintenance (including the update), server control, and about. Each install is managed on the Hosts tab.`})]})}),n&&r&&(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Console direction`})}),(0,k.jsxs)(`p`,{className:`sub mb-16`,children:[h.length,` takes on the same data. Pick a direction; it applies instantly and persists across reloads.`]}),i&&a&&(0,k.jsxs)(`div`,{className:`dir-layout`,children:[(0,k.jsx)(`span`,{className:`tick`,id:`dir-accent-label`,children:`Accent`}),(0,k.jsx)(v,{value:i,onChange:a,labelledBy:`dir-accent-label`}),(0,k.jsx)(`span`,{className:`dir-layout-note sub`,role:`status`,"aria-live":`polite`,children:p(i)})]}),o&&c&&(0,k.jsxs)(`div`,{className:`dir-layout`,children:[(0,k.jsx)(`span`,{className:`tick`,id:`dir-layout-label`,children:`Overview view`}),(0,k.jsx)(f,{"aria-labelledby":`dir-layout-label`,children:s.map(e=>(0,k.jsx)(`button`,{className:o===e.id?`on`:``,onClick:()=>c(e.id),"aria-pressed":o===e.id,title:e.tagline,children:e.short},e.id))}),(0,k.jsx)(`span`,{className:`dir-layout-note sub`,role:`status`,"aria-live":`polite`,children:s.find(e=>e.id===o)?.tagline??``})]}),(0,k.jsx)(`div`,{className:`dir-grid`,children:h.map(e=>(0,k.jsxs)(`button`,{className:`dir-tile dir-${e.id} ${n===e.id?`on`:``}`,onClick:()=>r(e.id),"aria-pressed":n===e.id,children:[(0,k.jsxs)(`span`,{className:`dir-thumb`,"aria-hidden":`true`,children:[(0,k.jsx)(`span`,{className:`dir-thumb-rail`}),(0,k.jsx)(`span`,{className:`dir-thumb-bar`}),(0,k.jsx)(`span`,{className:`dir-thumb-bar`,style:{width:`70%`}}),(0,k.jsx)(`span`,{className:`dir-thumb-bar`,style:{width:`52%`}}),(0,k.jsx)(`span`,{className:`dir-thumb-dot`})]}),(0,k.jsxs)(`span`,{className:`dir-meta`,children:[(0,k.jsxs)(`span`,{className:`dir-name`,children:[e.short,n===e.id&&(0,k.jsx)(`span`,{className:`dir-check`,children:`● active`})]}),(0,k.jsx)(`span`,{className:`dir-tag`,children:e.tagline})]})]},e.id))})]}),m&&g&&(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Harness footprint`})}),(0,k.jsxs)(`p`,{className:`sub mb-16`,children:[`How much of the Rules `,(0,k.jsx)(`code`,{children:`AGENT.md`}),` carries inline each turn, for the current install (`,(0,k.jsxs)(`code`,{children:[m.host,` · `,m.scope]}),`). A token-cost dial; every Rule stays in force either way. Changing it rebuilds the install in place. `,(0,k.jsx)(`a`,{href:`#/docs/footprint`,children:`Learn more →`})]}),(0,k.jsxs)(`div`,{className:`dir-layout`,children:[(0,k.jsx)(`span`,{className:`tick`,id:`footprint-label`,children:`Footprint`}),(0,k.jsx)(f,{"aria-labelledby":`footprint-label`,children:[`full`,`lean`].map(e=>(0,k.jsx)(`button`,{className:g===e?`on`:``,onClick:()=>_(e),"aria-pressed":g===e,children:e},e))}),(0,k.jsx)(`span`,{className:`dir-layout-note sub`,role:`status`,"aria-live":`polite`,children:g===`lean`?`Lean: terse rule lines + a pointer to the full law file (~40% smaller, lighter context per turn).`:`Full: every Rule’s complete text and rationale inlined (maximum guidance, largest context).`})]})]}),(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Maintenance`})}),(0,k.jsxs)(`p`,{className:`sub mb-16`,children:[`Put `,(0,k.jsx)(`code`,{children:`geneseed`}),` on your PATH so it runs from any directory, or remove a global install. Your memory store is always kept. Each runs live in the console.`]}),(0,k.jsxs)(`div`,{className:`row wrap gap-10`,children:[(0,k.jsxs)(`button`,{className:`btn ghost`,onClick:()=>t(`update`),children:[(0,k.jsx)(l,{name:`download`}),`Update (git pull + rebuild)`]}),(0,k.jsxs)(`button`,{className:`btn ghost`,onClick:()=>t(`link`),children:[(0,k.jsx)(l,{name:`external`}),`Add to PATH`]}),(0,k.jsx)(`button`,{className:`btn ghost`,onClick:()=>t(`unlink`),children:`Remove from PATH`}),(0,k.jsxs)(`button`,{className:`btn ghost`,onClick:async()=>{await u(`Uninstall the global Geneseed harness? Your memory store is kept; everything else this install added is removed.`,{title:`Uninstall Geneseed?`,confirmLabel:`Uninstall`})&&t(`uninstall`)},children:[(0,k.jsx)(l,{name:`clear`}),`Uninstall`]})]})]}),(0,k.jsxs)(`div`,{className:`card pad-lg mb-16`,children:[(0,k.jsx)(`div`,{className:`card-head`,children:(0,k.jsx)(`h3`,{children:`Server`})}),(0,k.jsx)(`p`,{className:`sub mb-16`,children:`The console runs a small local server. Leave it running in the background and reopen any time, or stop it when you are done.`}),(0,k.jsx)(K,{})]}),(0,k.jsx)(Y,{})]})}function Z({tab:e=`hosts`,overview:t,setup:n,themes:r,onAction:i,onMutated:a,dataRev:o,appearance:s={}}){let c=t?.doctor,l=t?.diff,d={edits:l?u(l):null,doctor:c?c.ok?`clean`:c.problems.length:null};return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`page-head`,children:(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h1`,{className:`h`,children:`Installs`}),(0,k.jsx)(`p`,{className:`sub`,children:`Where the harness lives on this machine, and how each copy is built.`})]})}),(0,k.jsx)(b,{page:`installs`,current:e,badges:d,label:`Installs`}),e===`hosts`&&(0,k.jsx)(B,{onAction:i,themes:r,currentTheme:t?.theme,overview:t,setup:n,dataRev:o,onMutated:a}),e===`kits`&&(0,k.jsx)(V,{onAction:i,dataRev:o}),e===`edits`&&(0,k.jsx)(U,{onMutated:a,onAction:i,dataRev:o}),e===`doctor`&&(0,k.jsx)(G,{}),e===`server`&&(0,k.jsx)(X,{overview:t,onAction:i,...s})]})}export{Z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{t as i}from"./drawable-BERkKhx_.js";import{n as a}from"./sections-ChwaobfW.js";import{$ as o,B as s,Dt as c,R as l,St as u,Tt as d,X as f,Y as p,_ as m,_t as h,at as g,bt as _,ct as v,dt as y,et as b,ft as x,gt as S,ht as C,it as w,lt as T,mt as E,nt as D,ot as O,pt as k,q as A,rt as j,st as M,tt as N,ut as P,vt as F,wt as I,yt as L,z as R}from"./index-C9R_bRw_.js";function z(e){return x((e.iterationDuration+e._loopDelay)*e.iterationCount-e._loopDelay)||1e-11}function B(e,t,n,r,i,a){let o=C(e.duration)&&e.duration<=1e-11?n-d:n;t.composition&&T(t,o,1,1,c.AUTO);let s=r?new D(r,e,t,o,!1,i,a):new O(e,t,o);return t.composition&&s.init(!0),y(t,s),k(t,e=>{let n=e._offset+e._delay+e.duration;n>t.iterationDuration&&(t.iterationDuration=n)}),t.duration=z(t),t}var V=0,H=class extends O{constructor(e={}){super(e,null,0),++V,this.id=F(e.id)?V:e.id,this.duration=0,this.labels={};let t=e.defaults,n=u.defaults;this.defaults=t?L(t,n):n,this.composition=P(e.composition,!0),this.onRender=e.onRender||n.onRender;let r=P(e.playbackEase,n.playbackEase);this._ease=r?w(r):null,this.iterationDuration=0}add(e,t,n){let r=S(t),i=S(e);if(r||i){if(this._hasChildren=!0,r){let r=t,i=u.editor&&u.editor.addTimelineChild,a=n&&n.type===`Stagger`&&u.editor,o=E(n)?n:null;if(o||a){let t=g(e),a=this.duration,s=this.iterationDuration,c=r.id,l=0,d=t.length,f=i?i(e,r,this.id,n,d):null,p=o||u.editor.resolveStagger(n.defaultValue);t.forEach(e=>{let n={...f||r};this.duration=a,this.iterationDuration=s,F(c)||(n.id=c+`-`+l);let i=N(this,p(e,l,t,null,this));B(n,this,i,e,l,t),l++})}else{let t=i?i(e,r,this.id,n):r,a=n&&n.type?n.defaultValue:n;B(t,this,N(this,a),e)}}else B(e,this,N(this,t));return this.composition&&this.init(!0),this}}sync(e,t){if(F(e)||e&&F(e.pause))return this;e.pause();let n=+(e.effect?e.effect.getTiming().duration:e.duration);!F(e)&&!F(e.persist)&&(e.persist=!0);let r=u.editor,i=r&&r.addTimelineChild;r&&r.addTimelineSync&&(t=r.addTimelineSync(e,t,this.id),r.addTimelineChild=null);let a=this.add(e,{currentTime:[0,n],duration:n,delay:0,ease:`linear`,playbackEase:`linear`},t);return r&&(r.addTimelineChild=i),a}set(e,t,n){return F(t)?this:(t.duration=d,t.composition=I.replace,this.add(e,t,n))}call(e,t){return F(e)||e&&!E(e)?this:(u.editor&&u.editor.addTimelineCall&&(t=u.editor.addTimelineCall(e,t,this.id)),this.add({duration:0,delay:0,onComplete:()=>e(this)},t))}label(e,t){return F(e)||e&&!h(e)?this:(u.editor&&u.editor.addTimelineLabel&&(t=u.editor.addTimelineLabel(e,t,this.id)),this.labels[e]=N(this,t),this)}remove(e,t){return M(g(e),this,t),this}stretch(e){let t=this.duration;if(t===_(e))return this;let n=e/t,r=this.labels;k(this,e=>e.stretch(e.duration*n));for(let e in r)r[e]*=n;return super.stretch(e)}refresh(){return k(this,e=>{e.refresh&&e.refresh()}),this}revert(){return super.revert(),k(this,e=>e.revert,!0),v(this)}then(e){return super.then(e)}},U=e=>u.editor?u.editor.addTimeline(e):new H(e).init(),W=e(t(),1),G=n(),K=.62,q=(e,t)=>String(e).length*t*K;function J(e,t){let n=0;for(let t of e){if(t.t===``||t.t==null)continue;let e=q(t.t,t.size)/2;n=Math.max(n,Math.hypot(e,t.dy-t.size*.75),Math.hypot(e,t.dy+t.size*.25))}return Math.ceil(n+t)}function Y(e,t,n=0){let r=t.x-e.x,i=t.y-e.y,a=Math.hypot(r,i)||1,o=r/a,s=i/a,c=e.x+o*e.r,l=e.y+s*e.r,u=t.x-o*t.r,d=t.y-s*t.r,f=n*a,p=e=>e.toFixed(1);return`M${p(c)} ${p(l)} C${p(c+o*a*.3-s*f)} ${p(l+s*a*.3+o*f)} ${p(u-o*a*.3-s*f)} ${p(d-s*a*.3+o*f)} ${p(u)} ${p(d)}`}var X=!1,Z=!1,Q=850;function $({hash:e,label:t,part:n,children:r}){return(0,G.jsx)(`g`,{className:`cm-node`,"data-cm":n,role:`button`,tabIndex:0,"aria-label":t,onClick:()=>A(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),A(e))},children:r})}function ee({overview:e,dataRev:t}){let{data:n}=s(()=>r.catalog(`laws`),[t],`catalog:laws`),a=n?.items??null,c=(0,W.useRef)(null),l=(0,W.useRef)(!0),u=(0,W.useRef)(null);(0,W.useLayoutEffect)(()=>{let e=c.current;if(!e||X||!p())return;X=!0;let t=t=>[...e.querySelectorAll(t)],n=t(`[data-cm="hub"]`),r=t(`[data-cm="sat"]`),a=t(`[data-cm="gov"]`),s=t(`.cm-edge-gov`),d=t(`.cm-note, .cm-govern-label`),m=i(t(`.cm-edge`));b([...n,...r,...a],{opacity:0,scale:.7}),b([...s,...d],{opacity:0}),b(m,{draw:`0 0`});let h=U({autoplay:!1,defaults:{ease:`outExpo`}}).add(n,{opacity:1,scale:1,duration:450},0).add(m,{draw:`0 1`,duration:380,delay:o(70)},140).add(r,{opacity:1,scale:1,duration:420,delay:o(70)},260).add(s,{opacity:1,duration:300,delay:o(50)},420).add(a,{opacity:1,scale:1,duration:380,delay:o(50)},470).add(d,{opacity:1,duration:300},520);l.current=!1;let g=()=>h.complete(),_=()=>{h.play(),g=f(h,Q),l.current=!0,u.current?.()};if(typeof IntersectionObserver>`u`)return _(),()=>g();let v=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(v.disconnect(),_())},{threshold:.33});return v.observe(e),()=>{v.disconnect(),l.current=!0,g()}},[]);let d=e?.counts||{},h=R(d),g=[];for(let e of(a||[]).filter(e=>e.tier===`doctrine`)){let t=g.find(t=>t.id===e.pack);t||g.push(t={id:e.pack,on:0}),e.active!==!1&&(t.on+=1)}let _=e?.footprint===`lean`?`lean — first line only`:`full text inlined`,v={x:330,y:165,r:J([{t:`Constitution`,size:17,dy:-12},{t:`${h} rules in force`,size:10,dy:8},{t:_,size:8.5,dy:24}],12)},y={x:126,y:95,r:J([{t:`Ethos`,size:12.5,dy:-7},{t:`${d.ontology??0} sections`,size:10,dy:10}],11)},x={x:560,y:78,r:J([{t:`Dictates`,size:12.5,dy:-6},{t:`${d.laws??0}`,size:13,dy:12}],11)},S={x:560,y:252,r:J([{t:`Doctrines`,size:12.5,dy:-6},{t:`${d.doctrines?.rules??0}`,size:13,dy:12}],11)},C=(e,t,n,r)=>({x:e,y:t,label:n,count:r,r:J([{t:n,size:10.5,dy:-2},{t:`${r}`,size:9,dy:10}],9)}),w=[{...C(812,52,`Skills`,d.skills??0),hash:`#/skills`,from:x},{...C(820,126,`Agents`,d.agents??0),hash:`#/agents`,from:x},{...C(816,232,`Memory`,d.memory??0),hash:`#/section/memory`,from:S},{...C(812,300,`Wiki`,d.wiki??0),hash:`#/section/wiki`,from:S}],T={rx:122,ry:68,from:212,to:112},E=g.map((e,t)=>{let n=(g.length===1?(T.from+T.to)/2:T.from+(T.to-T.from)*t/(g.length-1))*Math.PI/180;return{...e,x:S.x+T.rx*Math.cos(n),y:S.y+T.ry*Math.sin(n),r:J([{t:e.id,size:7.5,dy:-2},{t:`${e.on}`,size:7.5,dy:8}],4)}}),D=E.length;return(0,W.useLayoutEffect)(()=>{let e=c.current;if(!e||!D||Z||!p())return;Z=!0;let t=[...e.querySelectorAll(`.cm-mini > g`)];b(t,{opacity:0,scale:.5});let n=()=>b(t,{opacity:1,scale:1}),r=()=>{u.current=null;let e=j(t,{opacity:1,scale:1,duration:380,delay:o(45,{start:420}),ease:`outExpo`});n=f(e,420+45*D+380)};return l.current?r():u.current=r,()=>{u.current=null,n()}},[D]),(0,G.jsxs)(`svg`,{ref:c,className:`cmap`,viewBox:`0 0 940 350`,role:`group`,"aria-label":`The constitution map`,children:[(0,G.jsx)(`path`,{d:Y(v,y,.05),className:`cm-edge`}),(0,G.jsx)(`path`,{d:Y(v,x,-.07),className:`cm-edge`}),(0,G.jsx)(`path`,{d:Y(v,S,.07),className:`cm-edge`}),w.map(e=>(0,G.jsx)(`path`,{d:Y(e.from,e,.03),className:`cm-edge-gov`},`e-${e.label}`)),(0,G.jsxs)($,{hash:`#/laws`,part:`hub`,label:`Constitution: ${h} rules in force`,children:[(0,G.jsx)(`circle`,{cx:v.x,cy:v.y,r:v.r,className:`cm-hub-disc`}),(0,G.jsx)(`text`,{x:v.x,y:v.y-12,textAnchor:`middle`,className:`cm-hub-name`,children:`Constitution`}),(0,G.jsxs)(`text`,{x:v.x,y:v.y+8,textAnchor:`middle`,className:`cm-hub-num`,children:[h,` rules in force`]}),(0,G.jsx)(`text`,{x:v.x,y:v.y+24,textAnchor:`middle`,className:`cm-note`,children:_})]}),(0,G.jsxs)($,{hash:`#/laws`,part:`sat`,label:`Ethos: ${d.ontology??0} sections`,children:[(0,G.jsx)(`circle`,{cx:y.x,cy:y.y,r:y.r,className:`cm-sat-disc`}),(0,G.jsx)(`text`,{x:y.x,y:y.y-7,textAnchor:`middle`,className:`cm-sat-name`,children:`Ethos`}),(0,G.jsxs)(`text`,{x:y.x,y:y.y+10,textAnchor:`middle`,className:`cm-sat-num`,children:[d.ontology??0,` sections`]})]}),(0,G.jsx)(`text`,{x:y.x,y:y.y+y.r+16,textAnchor:`middle`,className:`cm-note`,children:`how it thinks, not a rule`}),(0,G.jsxs)($,{hash:`#/laws`,part:`sat`,label:`Dictates: ${d.laws??0}, never broken`,children:[(0,G.jsx)(`circle`,{cx:x.x,cy:x.y,r:x.r,className:`cm-sat-disc`}),(0,G.jsx)(`text`,{x:x.x,y:x.y-6,textAnchor:`middle`,className:`cm-sat-name`,children:`Dictates`}),(0,G.jsx)(`text`,{x:x.x,y:x.y+12,textAnchor:`middle`,className:`cm-sat-big`,children:d.laws??0})]}),(0,G.jsx)(`text`,{x:x.x,y:x.y+x.r+16,textAnchor:`middle`,className:`cm-note`,children:`never broken`}),(0,G.jsxs)($,{hash:`#/laws`,part:`sat`,label:`Doctrines: ${d.doctrines?.rules??0} rules chosen at build`,children:[(0,G.jsx)(`circle`,{cx:S.x,cy:S.y,r:S.r,className:`cm-sat-disc`}),(0,G.jsx)(`text`,{x:S.x,y:S.y-6,textAnchor:`middle`,className:`cm-sat-name`,children:`Doctrines`}),(0,G.jsx)(`text`,{x:S.x,y:S.y+12,textAnchor:`middle`,className:`cm-sat-big`,children:d.doctrines?.rules??0})]}),(0,G.jsx)(`text`,{x:S.x+22,y:S.y+S.r+20,className:`cm-note`,children:d.doctrines?`chosen at build · ${d.doctrines.active}/${d.doctrines.total} packs lit`:`chosen at build`}),(0,G.jsx)(`g`,{className:`cm-mini`,children:E.map(e=>(0,G.jsxs)(`g`,{children:[(0,G.jsx)(`circle`,{cx:e.x,cy:e.y,r:e.r,className:`cm-pack-disc`,style:{stroke:m(e.id)}}),(0,G.jsx)(`text`,{x:e.x,y:e.y-2,textAnchor:`middle`,className:`cm-pack-id`,children:e.id}),(0,G.jsx)(`text`,{x:e.x,y:e.y+8,textAnchor:`middle`,style:{fill:m(e.id)},children:e.on})]},e.id))}),(0,G.jsx)(`text`,{x:866,y:16,textAnchor:`middle`,className:`cm-govern-label`,children:`GOVERNS THE HARNESS`}),w.map(e=>(0,G.jsxs)($,{hash:e.hash,part:`gov`,label:`${e.label}: ${e.count}`,children:[(0,G.jsx)(`circle`,{cx:e.x,cy:e.y,r:e.r,className:`cm-gov-disc`}),(0,G.jsx)(`text`,{x:e.x,y:e.y-2,textAnchor:`middle`,className:`cm-gov-name`,children:e.label}),(0,G.jsx)(`text`,{x:e.x,y:e.y+10,textAnchor:`middle`,className:`cm-gov-num`,children:e.count})]},e.label)),(0,G.jsx)(`text`,{x:y.x,y:228,textAnchor:`middle`,className:`cm-note`,children:`tap any node to open its ledger`})]})}function te(){let e=new Date,t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function ne({counts:e}){let t=[{label:a.skills.label,n:e.skills??0,hash:`#/skills`},{label:`Rules in force`,n:R(e),hash:`#/laws`},{label:a.agents.label,n:e.agents??0,hash:`#/agents`},{label:a.memory.label,n:e.memory??0,hash:`#/section/memory`},{label:a.notebook.label,n:e.notebook??0,hash:`#/section/notebook`},{label:a.wiki.label,n:e.wiki??0,hash:`#/section/wiki`},{label:a.config.label,n:e.config??0,hash:`#/section/config`}],n=Math.max(...t.map(e=>e.n),1);return(0,G.jsxs)(`div`,{className:`card pad-lg jr-card`,children:[(0,G.jsxs)(`div`,{className:`card-head`,children:[(0,G.jsx)(`h3`,{children:`Growth rings`}),(0,G.jsx)(`span`,{className:`tick right`,children:`by section`})]}),t.map(e=>(0,G.jsxs)(`button`,{className:`jr-ring`,onClick:()=>A(e.hash),children:[(0,G.jsx)(`span`,{className:`jr-ring-label`,children:e.label}),(0,G.jsx)(`span`,{className:`jr-ring-track`,children:(0,G.jsx)(`span`,{className:`jr-ring-fill`,style:{width:`${e.n/n*100}%`}})}),(0,G.jsx)(`span`,{className:`jr-ring-num`,children:e.n})]},e.label))]})}function re({recent:e,buildEpoch:t}){let n=e?.items||[],r=e?.skipped||[];return(0,G.jsxs)(`div`,{className:`card pad-lg jr-card`,children:[(0,G.jsxs)(`div`,{className:`card-head`,children:[(0,G.jsx)(`h3`,{children:`Freshly grown`}),(0,G.jsx)(`span`,{className:`tick right`,children:`newest`})]}),e?n.length===0?(0,G.jsx)(`p`,{className:`sub`,children:`Nothing here carries a date yet.`}):n.slice(0,5).map(e=>(0,G.jsxs)(`button`,{className:`jr-fresh`,onClick:()=>A(`#/item/${e.type}/${encodeURIComponent(e.name)}`),children:[(0,G.jsx)(`span`,{className:`jr-fresh-kind`,children:e.section}),(0,G.jsx)(`span`,{className:`jr-fresh-name`,children:e.title}),(0,G.jsx)(`span`,{className:`jr-fresh-when`,children:l(e.mtime)})]},`${e.section}:${e.name}`)):(0,G.jsx)(`p`,{className:`sub`,children:`Reading the shelves…`}),r.length>0&&(0,G.jsxs)(`p`,{className:`sub jr-skipped`,children:[`Not dated: `,r.join(`, `),` — too many files to stat on every load.`]}),(0,G.jsxs)(`p`,{className:`jr-care`,children:[t?`Last built ✓ ${l(t)}`:`Never built here`,` ·`,` `,(0,G.jsx)(`button`,{className:`jr-go`,onClick:()=>A(`#/activity`),children:`log →`})]})]})}function ie({overview:e,recent:t,onAction:n,onDirection:r,dataRev:i}){let a=e?.counts||{};return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`head-row jr-head`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`div`,{className:`eyebrow`,children:[`Field journal · `,te()]}),(0,G.jsx)(`h1`,{className:`h`,children:`Today in this harness`})]}),(0,G.jsxs)(`div`,{className:`row wrap gap-10`,children:[(0,G.jsx)(`button`,{className:`btn primary`,onClick:()=>n?.(`update`),children:`Update & rebuild`}),(0,G.jsx)(`button`,{className:`btn`,onClick:()=>A(`#/doctor`),children:`Doctor`})]})]}),(0,G.jsxs)(`div`,{className:`jr-row2`,children:[(0,G.jsx)(ne,{counts:a}),(0,G.jsx)(re,{recent:t,buildEpoch:e?.build_epoch})]}),(0,G.jsxs)(`div`,{className:`card pad-lg jr-map`,children:[(0,G.jsxs)(`div`,{className:`card-head`,children:[(0,G.jsx)(`h3`,{children:`The Constitution — and the harness it governs`}),(0,G.jsx)(`button`,{className:`jr-go right`,onClick:()=>A(`#/laws`),children:`open →`})]}),(0,G.jsx)(ee,{overview:e,dataRev:i})]}),(0,G.jsxs)(`p`,{className:`sub jr-others`,children:[`Other views:`,` `,(0,G.jsx)(`button`,{className:`jr-go`,onClick:()=>r?.(`lineage`),children:`Lineage`}),` `,`·`,` `,(0,G.jsx)(`button`,{className:`jr-go`,onClick:()=>r?.(`operator`),children:`Operator`})]})]})}export{ie as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{S as r}from"./index-C9R_bRw_.js";var i=e(t(),1),a=n();function o({label:e,value:t,options:n,onChange:r}){return n.length?(0,a.jsx)(`select`,{className:`sel`,"aria-label":e,value:t,onChange:e=>r(e.target.value),children:n.map(e=>(0,a.jsx)(`option`,{value:e,children:e},e))}):null}var s=[`full`,`lean`];function c({on:e,disabled:t,label:n,onToggle:r}){return(0,a.jsx)(`input`,{type:`checkbox`,role:`switch`,className:`sw-toggle${e?` on`:``}`,checked:e,"aria-checked":e,disabled:t,"aria-label":n,onChange:r,onKeyDown:e=>{e.key===`Enter`&&!t&&r()}})}var l=[{key:`theme`,name:`voice`,title:`Voice`},{key:`footprint`,name:`footprint`,title:`Footprint`},{key:`posture`,name:`posture`,title:`Posture`},{key:`mode`,name:`mode`,title:`Mode`},{key:`trust`,name:`trust`,title:`Loop trust`}];function u({value:e,options:t,onChange:n,who:r}){return l.map(i=>(0,a.jsxs)(`label`,{className:`dp-field`,children:[(0,a.jsx)(`span`,{children:i.title}),(0,a.jsx)(o,{label:`${i.name} for ${r}`,value:e[i.key],options:t[i.key],onChange:e=>n(i.key,e)})]},i.key))}var d=e=>e.kits||[],f=e=>!e.editable||e.state===`unreadable`;function p(e,t){let n=r(),[a,o]=(0,i.useState)(()=>new Map),[s,c]=(0,i.useState)(e);s!==e&&(c(e),o(new Map));let l=e=>a.get(e.id)??new Set(d(e));return{setOf:l,toggle:(e,t)=>{let n=new Set(l(e));n.delete(t)||n.add(t),o(new Map(a).set(e.id,n))},change:e=>{let t=l(e),n=new Set(d(e));return{on:[...t].filter(e=>!n.has(e)),off:[...n].filter(e=>!t.has(e))}},apply:async e=>{let r=[...l(e)],i=`Rebuild ${e.host} · ${e.scope} with kits: ${r.join(`, `)||`none`}? Members of kits turned off are removed; files you edited are kept.`;await n(i,{confirmLabel:`Rebuild`})&&t(`install`,{host:e.host,path:e.path,kits:r})}}}function m({row:e,stage:t}){let{on:n,off:r}=t.change(e),i=n.length+r.length>0;return(0,a.jsxs)(`div`,{className:`kit-foot`,children:[(0,a.jsx)(`span`,{className:`kit-hint${i?` staged`:``}`,role:`status`,children:i?[...n.map(e=>`turn on ${e}`),...r.map(e=>`turn off ${e}`)].join(` · `):`No staged changes`}),(0,a.jsx)(`button`,{type:`button`,className:`btn soft sm`,"aria-label":`Apply kits for ${e.host} · ${e.scope}`,disabled:f(e)||!i,onClick:()=>t.apply(e),children:`Apply`})]})}var h={active:[`Active`,`ok`],disabled:[`Disabled`,`warn`]},g=({row:e})=>{let[t,n]=h[e.state]||[e.state||`Unknown`,``];return(0,a.jsx)(`span`,{className:`tag ${n}`,children:t})};export{p as a,c,d as i,g as n,s as o,f as r,u as s,m as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-DlYQp10C.js";import{t as r}from"./api-BfpZmUMI.js";import{B as i,C as a,x as o}from"./index-C9R_bRw_.js";import{a as s,l as c,o as l,s as u,t as d,u as f}from"./Markdown-zaXXXHz9.js";import{a as p,c as m,i as h,n as g,r as _,t as v}from"./KitApply-pjhvGha0.js";var y=e(t(),1),b=n(),x=encodeURIComponent,S=`Enabled`,C=`Not enabled`,w=e=>(e||``).split(/\s+/).filter(Boolean).length,T=e=>[...new Set(e.filter(Boolean))],E=e=>(e||``).slice(0,7);function D(e,t){return[S,C].flatMap(n=>e.map(e=>({k:e,on:t.filter(t=>h(t).includes(e.name))})).filter(({on:e})=>e.length>0==(n===S)).map(({k:e,on:t})=>{let r=e.credits||[],i=T(r.map(e=>e.author||e.repo)).join(`, `),a=T(r.map(e=>e.license)).join(`, `);return{name:e.name,desc:e.description,group:n,def:e,meta:[`${(e.skills||[]).length} skills · ${(e.agents||[]).length} agents · ${w(e.rules)} rule words`,t.length?`on in ${t.map(e=>`${e.host} · ${e.scope}`).join(`, `)}`:null,i?`from ${i}${a?` (${a})`:``}`:null].filter(Boolean).join(` — `)}}))}var O=({type:e,names:t,listed:n})=>t.length?(0,b.jsx)(`ul`,{className:`kit-links`,children:t.map(t=>(0,b.jsx)(`li`,{children:n?.has(t)?(0,b.jsx)(`a`,{href:`#/item/${e}/${x(t)}`,children:t}):(0,b.jsx)(`span`,{className:`kit-link-off`,title:`Installed when this kit is on`,children:t})},t))}):(0,b.jsx)(`p`,{className:`panel-note`,children:`None.`});function k({kit:e,installs:t,stage:n,listed:r}){let i=e.credits||[];return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`reader-tags`,children:[(0,b.jsx)(`span`,{className:`tag acc`,children:`Kit`}),T(i.map(e=>e.license)).map(e=>(0,b.jsx)(`span`,{className:`tag`,children:e},e))]}),(0,b.jsx)(`h2`,{className:`reader-title`,children:e.name}),e.description?(0,b.jsx)(`p`,{className:`reader-lede`,children:e.description}):null,(0,b.jsxs)(`p`,{className:`mono dim reader-src`,children:[`kits/`,e.name,`/`]}),(0,b.jsx)(`hr`,{className:`hr`}),(0,b.jsx)(`h3`,{className:`loop-h2`,children:`Installs`}),t.length?(0,b.jsx)(`ul`,{className:`kit-list kit-box`,"aria-label":`Installs for ${e.name}`,children:t.map(t=>{let r=_(t),i=`${t.host} · ${t.scope}`;return(0,b.jsxs)(`li`,{className:`kit-install`,children:[(0,b.jsxs)(`div`,{className:`kit-row`,children:[(0,b.jsxs)(`div`,{className:`kit-main`,children:[(0,b.jsx)(`b`,{children:i}),(0,b.jsx)(`span`,{className:`mono dim`,children:t.path})]}),(0,b.jsx)(g,{row:t}),(0,b.jsx)(m,{on:n.setOf(t).has(e.name),disabled:r,label:`${e.name} for ${i}`,onToggle:()=>n.toggle(t,e.name)})]}),r&&(0,b.jsx)(`p`,{className:`kit-lock`,children:t.reason||t.error}),(0,b.jsx)(v,{row:t,stage:n})]},t.id)})}):(0,b.jsx)(`p`,{className:`panel-note`,children:`No install yet.`}),i.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h3`,{className:`loop-h2`,children:`Upstream`}),(0,b.jsx)(`dl`,{className:`loop-facts`,children:i.map(e=>(0,b.jsxs)(y.Fragment,{children:[(0,b.jsx)(`dt`,{children:e.author||e.repo}),(0,b.jsxs)(`dd`,{children:[(0,b.jsx)(`span`,{className:`mono`,children:e.repo}),e.commit?(0,b.jsxs)(`span`,{className:`mono dim`,children:[`@ `,E(e.commit)]}):null,e.compareUrl?(0,b.jsx)(`a`,{href:e.compareUrl,target:`_blank`,rel:`noreferrer`,children:`compare`}):null,e.license?(0,b.jsx)(`span`,{className:`tag`,children:e.license}):null]})]},e.key||e.repo))})]}):null,(0,b.jsx)(`h3`,{className:`loop-h2`,children:`Skills`}),(0,b.jsx)(O,{type:`skill`,names:e.skills||[],listed:r?.skills}),(0,b.jsx)(`h3`,{className:`loop-h2`,children:`Agents`}),(0,b.jsx)(O,{type:`agent`,names:e.agents||[],listed:r?.agents}),e.rules?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`h3`,{className:`loop-h2`,children:[`Rules`,` `,(0,b.jsxs)(`span`,{className:`mono dim`,children:[w(e.rules),e.rulesWordBudget?` / ${e.rulesWordBudget}`:``,` words`]})]}),(0,b.jsx)(`div`,{className:`lib-doc detail-doc`,children:(0,b.jsx)(d,{body:e.rules})})]}):null,e.banned?.length?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`h3`,{className:`loop-h2`,children:`Banned APIs`}),(0,b.jsx)(`ul`,{className:`kit-links`,"aria-label":`Banned APIs`,children:e.banned.map(e=>(0,b.jsx)(`li`,{children:(0,b.jsx)(`span`,{className:`kit-link-off`,children:e})},e))})]}):null]})}function A({item:e,onAction:t,dataRev:n}){let{data:d,error:m}=i(()=>r.kits(),[n]),h=p(d,t),[g,_]=(0,y.useState)(``),[v,S]=(0,y.useState)(`all`),C=d?.kits||[],w=d?.installs||[],T=D(C,w),E=v===`all`?T:T.filter(e=>e.group===v),O=f(E,g),A=!!e&&!!d&&!T.some(t=>t.name===e),j=A?null:T.find(t=>t.name===e)||T[0]||null,{data:M}=i(()=>Promise.all([r.catalog(`skills`),r.catalog(`agents`)]).then(([e,t])=>({skills:new Set((e.items||[]).map(e=>e.name)),agents:new Set((t.items||[]).map(e=>e.name))})).catch(()=>null),[n]),N=m||d?.error;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{error:N,style:{margin:`0 0 12px`}}),(0,b.jsxs)(`div`,{className:`library`,children:[(0,b.jsxs)(`aside`,{className:`lib-kinds`,"aria-label":`Kits sections`,children:[(0,b.jsxs)(`div`,{className:`lib-title`,children:[(0,b.jsx)(`h1`,{className:`h`,children:`Kits`}),(0,b.jsx)(`span`,{className:`dim`,children:`Optional bundles`})]}),(0,b.jsxs)(`nav`,{className:`kind-list`,"aria-label":`Sections`,children:[(0,b.jsxs)(`a`,{href:`#/kits`,className:`on`,"aria-current":`page`,children:[`Kits`,(0,b.jsx)(`span`,{className:`mono dim`,children:d?C.length:``})]}),(0,b.jsx)(s,{label:`Status`,total:T.length,cats:l(T),cat:v,onChange:S})]})]}),(0,b.jsx)(c,{label:`Kits`,count:g.trim()?`${O.length} of ${E.length}`:d?E.length:``,q:g,onQ:_,matched:O.length,inView:[e],children:d?T.length===0?N?null:(0,b.jsxs)(`div`,{className:`empty`,style:{padding:32},children:[(0,b.jsx)(`div`,{className:`big`,children:`No kits`}),`This Geneseed ships no kit.`]}):(0,b.jsx)(u,{rows:O,activeName:j?.name,hrefOf:e=>`#/kits/${x(e.name)}`}):N?null:(0,b.jsx)(a,{})}),(0,b.jsx)(`article`,{className:`lib-reader`,"aria-label":`Entry`,children:A?(0,b.jsxs)(`div`,{className:`empty`,children:[(0,b.jsx)(`div`,{className:`big`,children:`No such kit`}),`No kit is named “`,e,`”. `,(0,b.jsx)(`a`,{href:`#/kits`,children:`Back to all kits`})]}):j?(0,b.jsx)(k,{kit:j.def,installs:w,stage:h,listed:M},j.name):null})]})]})}export{A as default};
|