geneseed 3.9.0 → 3.11.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 +89 -1
- package/DESIGN.md +1 -1
- package/README.md +52 -71
- package/SHIPPED.md +3 -3
- package/adapters/bob/README.md +18 -2
- package/adapters/claude-code/README.md +17 -12
- package/adapters/openclaude/README.md +2 -2
- package/adapters/opencode/README.md +4 -4
- package/adapters/opencode/plugins/geneseed-context.js +78 -8
- package/bin/build-driver.mjs +2 -0
- package/bin/geneseed-cli.mjs +17 -0
- package/bin/geneseed-hook.mjs +3 -1
- package/docs/README.md +42 -0
- package/docs/_groups.json +18 -0
- package/docs/candidate-hosts.md +12 -5
- package/docs/concepts/agents.md +44 -0
- package/docs/concepts/collaboration.md +62 -0
- package/docs/concepts/exclusions.md +55 -0
- package/docs/concepts/footprint.md +52 -0
- package/docs/concepts/foreman-mode.md +69 -0
- package/docs/concepts/hooks.md +101 -0
- package/docs/concepts/hosts.md +55 -0
- package/docs/concepts/lsp.md +50 -0
- package/docs/{web → concepts}/memory.md +2 -2
- package/docs/{web → concepts}/notebook.md +2 -2
- package/docs/concepts/rules.md +52 -0
- package/docs/concepts/skills.md +49 -0
- package/docs/concepts/themes.md +50 -0
- package/docs/extending.md +27 -21
- package/docs/guides/autostart.md +70 -0
- package/docs/guides/choose-your-setup.md +120 -0
- package/docs/guides/headless.md +22 -0
- package/docs/guides/install.md +161 -0
- package/docs/guides/mcp.md +195 -0
- package/docs/guides/migrate.md +41 -0
- package/docs/guides/project-context.md +87 -0
- package/docs/guides/run-anywhere.md +45 -0
- package/docs/guides/uninstall.md +51 -0
- package/docs/guides/upgrade.md +65 -0
- package/docs/guides/verify.md +65 -0
- package/docs/guides/wiki.md +69 -0
- package/docs/guides/worktree.md +47 -0
- package/docs/reference/about.md +7 -0
- package/docs/reference/cli.md +7 -0
- package/docs/reference/environment.md +99 -0
- package/docs/reference/glossary.md +33 -0
- package/docs/reference/opencode-plugins.md +131 -0
- package/docs/reference/troubleshooting.md +350 -0
- package/docs/token-footprint.md +26 -21
- package/docs/understand/a-day.md +77 -0
- package/docs/understand/enforced-vs-asked.md +64 -0
- package/docs/understand/harness.md +36 -0
- package/docs/understand/on-your-machine.md +76 -0
- package/docs/web-ui.md +2 -2
- package/harness.config.json +1 -1
- package/js/README.md +7 -6
- package/js/build/driver.mjs +26 -95
- package/js/build/emit-claude.mjs +76 -81
- package/js/build/generate.mjs +12 -2
- package/js/build/render.mjs +4 -0
- package/js/build/source.mjs +6 -0
- package/js/build/stubs.mjs +18 -2
- package/js/cli-table.json +6 -6
- package/js/hosts/hooks.mjs +86 -54
- package/js/hosts/hosts.mjs +5 -21
- package/js/hosts/installs.mjs +4 -6
- package/js/hosts/mcp.mjs +4 -14
- package/js/hosts/native.mjs +27 -50
- package/js/hosts/opencode.mjs +1 -1
- package/js/hosts/settings.mjs +17 -79
- package/js/inspect/checks-authoring.mjs +9 -4
- package/js/inspect/checks-repo.mjs +45 -1
- package/js/inspect/diff.mjs +11 -3
- package/js/inspect/doctor.mjs +4 -4
- package/js/inspect/excludes.mjs +0 -4
- package/js/inspect/inventory.mjs +1 -1
- package/js/inspect/registry.mjs +20 -3
- package/js/inspect/status.mjs +11 -6
- package/js/lib/node-floor.mjs +30 -0
- package/js/maintain/migrate.mjs +5 -5
- package/js/maintain/setup.mjs +112 -26
- package/js/maintain/uninstall.mjs +8 -42
- package/js/maintain/update.mjs +4 -15
- package/js/ui/cli.mjs +2 -2
- package/js/web/actions.mjs +4 -5
- package/js/web/api.mjs +7 -4
- package/js/web/daemon.mjs +52 -0
- package/js/web/docs.mjs +149 -65
- package/js/web/server.mjs +5 -2
- package/package.json +6 -5
- package/registry.json +7 -0
- package/src/AGENT.md.tmpl +73 -52
- package/src/laws/universal.md +3 -0
- package/src/ontology/universal.md +1 -1
- package/src/postures/mentor.md +1 -0
- package/src/skills/daydream/SKILL.md +10 -3
- package/src/skills/daydream/VENDOR.md +10 -2
- package/src/skills/daydream/instructions.md +2 -2
- package/src/skills/explain-changes/SKILL.md +1 -1
- package/src/skills/explain-changes/VENDOR.md +1 -1
- package/src/skills/geneseed.md +1 -1
- package/src/skills/learn-mode.md +89 -0
- package/src/skills/pipeline.md +2 -2
- package/src/skills/quiz.md +2 -1
- package/src/skills/react-view-transitions/SKILL.md +1 -1
- package/src/skills/react-view-transitions/VENDOR.md +7 -2
- package/src/skills/teach.md +2 -1
- package/src/skills/token-report/SKILL.md +2 -3
- package/src/skills/token-report/VENDOR.md +2 -3
- package/src/skills/token-report/scripts/token_report.mjs +7 -121
- package/src/skills/workflow.md +1 -1
- package/themes/_TEMPLATE.json +1 -0
- package/themes/biker.json +1 -0
- package/themes/commentator.json +1 -0
- package/themes/cyberpunk.json +1 -0
- package/themes/gamer.json +1 -0
- package/themes/imperial.json +1 -0
- package/themes/joker.json +1 -0
- package/themes/marvin.json +1 -0
- package/themes/mean.json +1 -0
- package/themes/military.json +1 -0
- package/themes/neutral.json +1 -0
- package/themes/pirate.json +1 -0
- package/themes/sports.json +1 -0
- package/themes/verstappen.json +1 -0
- package/themes/wizard.json +1 -0
- package/web/dist/assets/Activity-C52LEb-2.js +1 -0
- package/web/dist/assets/ActivityDetail-CjNLRvXg.js +1 -0
- package/web/dist/assets/Dashboard-B6_sSCHi.js +2 -0
- package/web/dist/assets/Docs-Dj7BmCSA.js +5 -0
- package/web/dist/assets/{GreenhouseView-Bq1QmaGO.js → GreenhouseView-BALwjQsA.js} +1 -1
- package/web/dist/assets/Installs-BbffDQm3.js +2 -0
- package/web/dist/assets/JournalView-JpAQ8Hqe.js +1 -0
- package/web/dist/assets/Laws-DK7eCWSm.js +3 -0
- package/web/dist/assets/Library-CoamHelE.js +1 -0
- package/web/dist/assets/{Markdown-CkFyfgNf.js → Markdown-qjM2_ofS.js} +5 -5
- package/web/dist/assets/{OperatorHudView-B-HVBqfY.js → OperatorHudView-DVx1HlBx.js} +1 -1
- package/web/dist/assets/Personal-eaXb1zcj.js +1 -0
- package/web/dist/assets/{Tabs-_pjUFIEI.js → Tabs-BmGtt8E2.js} +1 -1
- package/web/dist/assets/api-Dc8f3ca-.js +1 -0
- package/web/dist/assets/drawable-Du_PZrQj.js +1 -0
- package/web/dist/assets/index-Bz_KMRDH.css +1 -0
- package/web/dist/assets/index-CNFH7o55.js +2 -0
- package/web/dist/index.html +3 -2
- package/QUICKSTART.md +0 -50
- package/SETUP.md +0 -1183
- package/adapters/copilot/README.md +0 -105
- package/docs/web/_groups.json +0 -45
- package/docs/web/about.md +0 -6
- package/docs/web/adapters-claude-code.md +0 -8
- package/docs/web/adapters-opencode-loads.md +0 -8
- package/docs/web/adapters-opencode-spec.md +0 -8
- package/docs/web/adapters-opencode.md +0 -8
- package/docs/web/agents.md +0 -8
- package/docs/web/authoring.md +0 -11
- package/docs/web/autostart.md +0 -9
- package/docs/web/claude-hooks.md +0 -37
- package/docs/web/cli.md +0 -6
- package/docs/web/collaboration.md +0 -27
- package/docs/web/configure-wiki.md +0 -9
- package/docs/web/design.md +0 -7
- package/docs/web/env-knobs.md +0 -9
- package/docs/web/exclusions.md +0 -27
- package/docs/web/first-session.md +0 -28
- package/docs/web/footprint.md +0 -38
- package/docs/web/foreman-mode.md +0 -33
- package/docs/web/glossary.md +0 -6
- package/docs/web/harnesses.md +0 -30
- package/docs/web/headless.md +0 -9
- package/docs/web/ingest-docs.md +0 -9
- package/docs/web/install-paths.md +0 -9
- package/docs/web/install-quick.md +0 -35
- package/docs/web/lsp-overview.md +0 -37
- package/docs/web/mcp-claude-code.md +0 -10
- package/docs/web/mcp-filesystem.md +0 -9
- package/docs/web/mcp-gitlab.md +0 -9
- package/docs/web/mcp-markitdown.md +0 -9
- package/docs/web/mcp-overview.md +0 -34
- package/docs/web/mcp-trouble.md +0 -9
- package/docs/web/mcp-verify.md +0 -9
- package/docs/web/migrate.md +0 -39
- package/docs/web/model.md +0 -20
- package/docs/web/pipelines.md +0 -24
- package/docs/web/plugin-activity.md +0 -23
- package/docs/web/plugin-context.md +0 -26
- package/docs/web/plugin-guard.md +0 -24
- package/docs/web/plugin-learn.md +0 -27
- package/docs/web/plugin-notify.md +0 -24
- package/docs/web/plugin-ponytail.md +0 -23
- package/docs/web/plugin-setup.md +0 -7
- package/docs/web/plugin-workflow.md +0 -25
- package/docs/web/plugins.md +0 -17
- package/docs/web/project-context.md +0 -9
- package/docs/web/rules.md +0 -30
- package/docs/web/run-anywhere.md +0 -9
- package/docs/web/self-improve.md +0 -8
- package/docs/web/setup-choices.md +0 -64
- package/docs/web/skills.md +0 -8
- package/docs/web/themes-author.md +0 -20
- package/docs/web/themes.md +0 -9
- package/docs/web/token-footprint.md +0 -7
- package/docs/web/trouble.md +0 -38
- package/docs/web/upgrade.md +0 -9
- package/docs/web/verify.md +0 -30
- package/docs/web/wiki.md +0 -7
- package/docs/web/worktree.md +0 -10
- package/docs/wiki.md +0 -43
- package/web/dist/assets/Activity-DAzV-qQj.js +0 -1
- package/web/dist/assets/ActivityDetail-CwEwMtKl.js +0 -1
- package/web/dist/assets/Dashboard-C2ELBW-X.js +0 -2
- package/web/dist/assets/Docs-iZrvQP8J.js +0 -2
- package/web/dist/assets/Installs-BiqR8xdO.js +0 -2
- package/web/dist/assets/JournalView-6wilG5Zd.js +0 -1
- package/web/dist/assets/Laws-D8YXD_XE.js +0 -3
- package/web/dist/assets/Library-DwuTZ2-L.js +0 -1
- package/web/dist/assets/Personal-BbUTmZQR.js +0 -1
- package/web/dist/assets/drawable-CoIulEH2.js +0 -1
- package/web/dist/assets/index-BMwSp8BP.js +0 -2
- package/web/dist/assets/index-CDPDk2vj.css +0 -1
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# 🐙 GitHub Copilot adapter
|
|
2
|
-
|
|
3
|
-
> [← Back to README](../../README.md) · [Setup guide](../../SETUP.md) · [Claude Code adapter](../claude-code/README.md) · [OpenCode adapter](../opencode/README.md)
|
|
4
|
-
|
|
5
|
-
[GitHub Copilot](https://docs.github.com/copilot) is the **second Claude-shaped
|
|
6
|
-
host**, and a closer fit than Bob: skills are the same `SKILL.md` dirs (Copilot
|
|
7
|
-
Agent Skills), custom agents are markdown-with-frontmatter, and the repo-root
|
|
8
|
-
`AGENTS.md` is auto-loaded. So the Copilot emit **reuses the Claude engine** with
|
|
9
|
-
a `host="copilot"` flag. Nothing to install by hand: `geneseed setup` (or
|
|
10
|
-
`geneseed build --emit copilot` / `--emit copilot-global`) writes everything.
|
|
11
|
-
|
|
12
|
-
Copilot is a **reduced host** at project scope (no hooks there) and close to Claude
|
|
13
|
-
Code at global scope: its lifecycle hooks have an "ask the user" tier, so the gates
|
|
14
|
-
prompt as they do on Claude. This page is mostly about what those hooks *can* and
|
|
15
|
-
*cannot* automate and why the harness still holds where they cannot.
|
|
16
|
-
|
|
17
|
-
## What the emit writes
|
|
18
|
-
|
|
19
|
-
### Per-repo (`--emit copilot`)
|
|
20
|
-
|
|
21
|
-
- **`AGENTS.md`** at the repo root — auto-loaded by the Copilot CLI, the coding
|
|
22
|
-
agent, and VS Code agent mode. Carries the preamble as a managed block.
|
|
23
|
-
- **`.github/`** layer (Copilot's *shared* repo config surface):
|
|
24
|
-
- `agents/<name>.agent.md` — Copilot's **custom-agent dialect** (`.agent.md`
|
|
25
|
-
extension; a `tools:` **allowlist**, not Claude's denylist — a read-only
|
|
26
|
-
agent lists the tool ids it keeps: `read, search, todo, agent`, plus
|
|
27
|
-
`execute` only when the spec opts in with `<!-- bash: allow -->`, `fetch` only
|
|
28
|
-
with `<!-- webfetch: allow -->`). Sibling
|
|
29
|
-
agent links are rewritten to the `.agent.md` filename.
|
|
30
|
-
- `skills/<name>/SKILL.md` — **byte-identical** to every other host.
|
|
31
|
-
|
|
32
|
-
Writing into the shared `.github/` dir is safe because the engine's manifest +
|
|
33
|
-
claim-on-create machinery never touches a file it doesn't own — your own
|
|
34
|
-
workflows, agents, and skills there are never clobbered, and uninstall removes
|
|
35
|
-
only manifest-owned files.
|
|
36
|
-
|
|
37
|
-
### Personal / global (`--emit copilot-global` → `~/.copilot`, or `$COPILOT_CONFIG_DIR`)
|
|
38
|
-
|
|
39
|
-
- **`copilot-instructions.md`** — the Copilot CLI auto-loads this in every repo;
|
|
40
|
-
the preamble rides it as a managed block. (Unlike Bob, Copilot *has* a real
|
|
41
|
-
personal instructions carrier, so no rules-folder workaround is needed.)
|
|
42
|
-
- `agents/<name>.agent.md` + `skills/` under `~/.copilot`.
|
|
43
|
-
- **`settings.json` hooks** — four entries under `hooks`, see below.
|
|
44
|
-
|
|
45
|
-
## Hooks — ask, as on Claude Code
|
|
46
|
-
|
|
47
|
-
The Copilot CLI reads lifecycle hooks from **`~/.copilot/settings.json`** as a map of
|
|
48
|
-
event → **array** of `{type: "command", command}` entries
|
|
49
|
-
([reference](https://docs.github.com/en/copilot/reference/hooks-configuration)). The
|
|
50
|
-
global emit adds one entry to each of four events, each calling the machine-wide
|
|
51
|
-
`geneseed-hook` shim:
|
|
52
|
-
|
|
53
|
-
| event | verb | what it does |
|
|
54
|
-
| --- | --- | --- |
|
|
55
|
-
| `sessionStart` | `context` | eager project-context injection, as on Claude Code, returned as `{"additionalContext": …}` |
|
|
56
|
-
| `preToolUse` | `tool-gate --host copilot` | the git gate and the rule gate **fused** — entries carry no matcher — dispatched on the payload: a `command` gets the git checks, a path gets the rule checks |
|
|
57
|
-
| `agentStop` | `learn` | distils the session transcript (`transcriptPath`) into memory, as Claude's `Stop` |
|
|
58
|
-
| `preCompact` | `learn` | the same, once more before compaction summarises the window away |
|
|
59
|
-
|
|
60
|
-
`preToolUse` has an ask tier, so every rule **asks** exactly where it asks on Claude
|
|
61
|
-
Code — Laws I and IV, process 1 and process 5 — answered top-level as
|
|
62
|
-
`{"permissionDecision": "ask", "permissionDecisionReason": …}`. A gate error asks
|
|
63
|
-
too (fail closed). `toolArgs` is read whether Copilot sends it as an object or as a
|
|
64
|
-
JSON string.
|
|
65
|
-
|
|
66
|
-
**Your own hooks on those events stay**: Geneseed's entry goes beside them in the
|
|
67
|
-
array, and uninstall removes exactly the entries it claimed. Comments in the file
|
|
68
|
-
mean it is never rewritten.
|
|
69
|
-
|
|
70
|
-
**Migration.** Before this, the emit wired a single-object `toolCall` hook — an event
|
|
71
|
-
Copilot no longer fires, so the gates never ran. A re-emit removes those recorded
|
|
72
|
-
entries (your own keys stay) and writes the array shape.
|
|
73
|
-
|
|
74
|
-
**Unverified live.** No Copilot CLI on the authoring machine; this is the documented
|
|
75
|
-
contract.
|
|
76
|
-
|
|
77
|
-
**What is not wired, and why:**
|
|
78
|
-
|
|
79
|
-
- **no hooks at project scope** — the CLI documents hooks in the personal settings
|
|
80
|
-
file only, and a machine-absolute command committed into a shared `.github/`
|
|
81
|
-
would fail on every teammate's machine;
|
|
82
|
-
- **sovereign-repo excludes** — Copilot documents no exclude/shadow mechanism
|
|
83
|
-
(nothing like Claude's `claudeMdExcludes` or Bob's same-named workspace rule),
|
|
84
|
-
so a global install's `copilot-instructions.md` and a repo's own `AGENTS.md`
|
|
85
|
-
simply **stack**. A global emit warns, non-blocking, when project Copilot
|
|
86
|
-
installs already exist.
|
|
87
|
-
|
|
88
|
-
None of this is a build gap — it is Copilot's ceiling. The harness still applies
|
|
89
|
-
in full: the Ontology, every Rule, every doctrine rule the install built in, and
|
|
90
|
-
every agent and skill are present; where the host offers no prompt, a Rule's
|
|
91
|
-
*automation* degrades to a block, a warning, or instruction-only. This is
|
|
92
|
-
behaviour-contract parity, the same principle every non-OpenCode host follows.
|
|
93
|
-
|
|
94
|
-
## MCP
|
|
95
|
-
|
|
96
|
-
MCP servers are wired at runtime by `geneseed mcp` into `~/.copilot/mcp-config.json`
|
|
97
|
-
(with a `tools` allowlist) — see `js/hosts/mcp.mjs`.
|
|
98
|
-
|
|
99
|
-
## What Copilot does not get
|
|
100
|
-
|
|
101
|
-
As a Claude-shaped host Copilot has none of the OpenCode-only extras (colour
|
|
102
|
-
themes, JS plugins, workflow runner, primary-agent, LSP, `/`-commands), and of the
|
|
103
|
-
hook-driven automation it gets context injection and the boundary gates but not
|
|
104
|
-
the learn distiller or a consent *prompt*. See the
|
|
105
|
-
[host matrix](../../README.md#-supported-harnesses) for the full comparison.
|
package/docs/web/_groups.json
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"id": "start",
|
|
4
|
-
"label": "Get started"
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
"id": "concepts",
|
|
8
|
-
"label": "Core concepts"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"id": "howto",
|
|
12
|
-
"label": "How-to"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"id": "mcp",
|
|
16
|
-
"label": "MCP servers"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"id": "lsp",
|
|
20
|
-
"label": "Language servers",
|
|
21
|
-
"harness": "opencode"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"id": "plugins",
|
|
25
|
-
"label": "Plugins",
|
|
26
|
-
"harness": "opencode"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"id": "hooks",
|
|
30
|
-
"label": "Hooks",
|
|
31
|
-
"harness": "claude"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "reference",
|
|
35
|
-
"label": "Reference"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "extend",
|
|
39
|
-
"label": "Extend"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"id": "deeper",
|
|
43
|
-
"label": "Deeper"
|
|
44
|
-
}
|
|
45
|
-
]
|
package/docs/web/about.md
DELETED
package/docs/web/agents.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: concepts
|
|
3
|
-
order: 2
|
|
4
|
-
title: "Agents"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
link: {"hash": "#/section/agents", "label": "Browse the catalog →"}
|
|
7
|
-
---
|
|
8
|
-
{N_AGENTS} capability specialists — `reviewer`, `tester`, `architect`, `developer`, `docs`, `security`, `explorer`, `researcher`, plus a debate **council** the [[council]] skill convenes (`advocate`, `skeptic`, `pragmatist`, `steward`, `visionary`, `user-advocate`, `framer`, `empiricist`, `operator`, `historian`). You delegate by capability, not by folder: the harness picks the right specialist from the request.
|
package/docs/web/authoring.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: extend
|
|
3
|
-
order: 0
|
|
4
|
-
title: "Edit the source"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
Everything theme-independent lives under `src/` — the constitution (`ontology/`, `laws/`, `doctrines/`), the `postures/` and `modes/` registers, agents, skills, memory and notebook conventions, and the `AGENT.md.tmpl` entrypoint. Voice tokens live under `themes/` as one JSON file per theme. After editing, `geneseed build --emit opencode-global` (or `geneseed update`) re-renders the deployed bundle. The `doctor` action verifies the result: unresolved theme tokens, dead links, hermetic escapes, theme-key parity, and that the committed bundle matches a fresh render.
|
|
8
|
-
|
|
9
|
-
Each agent and skill also carries a lifecycle status — `experimental`, `approved` or `deprecated` — recorded in `registry.json` at the repo root alongside its version, owner and add-date. The file is maintainer-side: it is never rendered into a bundle, so a status costs no session context. Adding a spec means adding its row; `doctor` fails on a spec with no row and on a row with no spec, and the catalog badges anything that is not `approved`. The same pass refuses to let a credential ship, and holds every vendored skill folder to an immutable upstream commit rather than a moving branch.
|
|
10
|
-
|
|
11
|
-
A skill you wrote yourself and dropped into the install has no row and never will — the registry describes what Geneseed ships. Those read **personal** and gather under their own class in the Skills ledger, apart from the six-class taxonomy they were never given a place in. A badge reading **no status** means something else entirely: `registry.json` could not be read at all, so nothing is known about anything — run `doctor`.
|
package/docs/web/autostart.md
DELETED
package/docs/web/claude-hooks.md
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: hooks
|
|
3
|
-
order: 0
|
|
4
|
-
title: "How Geneseed binds to Claude Code"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
Claude Code has no `instructions` array and no JS plugin dir — the harness reaches it through **`settings.json` hooks** instead: the same capabilities the OpenCode plugins provide, each driven by a `geneseed-hook` subcommand. `CLAUDE.md` itself auto-loads by location, so it needs no hook at all.
|
|
8
|
-
|
|
9
|
-
### The hooks
|
|
10
|
-
|
|
11
|
-
- **Context injection** — `SessionStart` (startup, clear, resume) runs `geneseed-hook context`: auto-discovers the repo's docs by convention and injects them before your first turn, plus your machine wiki. It honours the same `GENESEED_CONTEXT` manifest as the OpenCode context plugin.
|
|
12
|
-
- **Git gate** — `PreToolUse` on Bash runs `geneseed-hook git-gate`: a `git commit` or `git push` anywhere in the command line — a compound one-liner and a `-C <path>` form included — asks first, at the tool boundary and before the shell runs it (**Doctrine process 5**). It is the one hook that rides a doctrine pack: an install built without **process** never gets this group, because a boundary that keeps asking for a rule the install did not adopt is a gate arguing with its own harness.
|
|
13
|
-
- **Rule gate** — `PreToolUse` on the write tools runs `geneseed-hook rule-gate`: a write to `user-rules.md` or to a memory file asks first, because whether something you want kept is a standing rule or a durable fact is *your* call, settled through the [rule skill](#/docs/skills) (**Doctrine process 1**). Ordinary edits are untouched.
|
|
14
|
-
- **Tool gate** — `geneseed-hook tool-gate` is the git gate and the rule gate fused behind one command, for hosts whose hook config has no per-tool matcher (Copilot, Bob). Claude Code matches per tool, so its `settings.json` wires the two gates above instead.
|
|
15
|
-
- **Learn** — `Stop` and `SubagentStop` run `geneseed-hook learn`: distils durable memories into the install's `memory/` store at session end; a subagent's stop routes to the per-agent lesson path (`memory/agents/<name>.md`).
|
|
16
|
-
|
|
17
|
-
### Where they live
|
|
18
|
-
|
|
19
|
-
The emit merges the hook groups surgically into your `settings.json` (global `~/.claude/settings.json`, or the project's), preserving every other key and any hooks of your own. The install manifest records exactly which groups Geneseed owns, so an upgrade replaces and an uninstall removes precisely those — never yours.
|
|
20
|
-
|
|
21
|
-
### The hook shim
|
|
22
|
-
|
|
23
|
-
Hooks run with the project as their working directory, so every command has to be an absolute path. Rather than write the interpreter and this checkout into your `settings.json`, the emit points every hook at one stable file — the **hook shim**, at `~/.geneseed/bin/geneseed-hook` (`geneseed-hook.cmd` on Windows). The shim holds the two volatile paths; the config holds none.
|
|
24
|
-
|
|
25
|
-
That indirection is what lets the checkout move. Before it, relocating or replacing the clone silently broke the gates in every install at once, and the only repair was re-emitting every config. Now a single build rewrites the shim and every install is live again. The shim is refreshed on **every** emit, so an ordinary `geneseed build` is the repair; `geneseed doctor` reports it if it was ever stale.
|
|
26
|
-
|
|
27
|
-
Set `GENESEED_HOME` to keep the shim somewhere other than `~/.geneseed`.
|
|
28
|
-
|
|
29
|
-
The shim prints nothing of its own, deliberately: the gates return success on every path and signal their verdict as JSON on **stdout**, so a single stray byte from the shim would corrupt that verdict and turn a blocking gate into a silently permissive one.
|
|
30
|
-
|
|
31
|
-
### Verify
|
|
32
|
-
|
|
33
|
-
Open Claude Code in any repo: the first reply opens with the readiness sigil and your project's docs are already in context. End a session and check the install's `memory/` dir for distilled files.
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
**Deeper:** [Claude Code adapter](#/docs/adapters-claude-code)
|
package/docs/web/cli.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: concepts
|
|
3
|
-
order: 11
|
|
4
|
-
title: "The collaboration layer"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
Beside the [constitution](#/docs/rules), a handful of mechanisms shape *how* the agent works with you — the two registers, the mutual contract, how memory binds, and who you are. All of them are plain content in `AGENT.md` and its neighbours, so they ride to every host (OpenCode, Claude, Bob, Copilot) unchanged.
|
|
8
|
-
|
|
9
|
-
### Postures — the register
|
|
10
|
-
|
|
11
|
-
A **posture** is the relationship register the agent works in, chosen by *you* at setup and fixed at build time so it holds steady instead of drifting back toward plain execution mid-session. Five ship: **peer** (default — a candid equal), **mentor** (explains the why), **expert** (maximum density), **assistant** (precise, low-initiative), **artisan** (peer with toolsmith reflexes). Posture is orthogonal to theme: theme is the *voice*, posture is the *relationship*. Change it in the setup wizard, from the **Harnesses** page here (the per-install posture dropdown, next to voice and footprint), or with `geneseed-build --posture <name>`. A rebuild or re-theme preserves it.
|
|
12
|
-
|
|
13
|
-
### Modes — how work executes
|
|
14
|
-
|
|
15
|
-
A **mode** is the session's operating register — *how* work gets executed, as opposed to posture's *relationship* register. Two ship: **direct** (default — the agent works every task itself, turn by turn) and **foreman** (the session triages incoming tasks: trivial ones get a direct answer, substantial ones spawn an isolated pipeline — a crew of an analyst, a developer, and a tester, plus whatever specialists the task needs — that reports back and merges only once its own tests and lint pass, while the session keeps answering you). Expect foreman mode to cost more per substantial task, in exchange for a session that never blocks on one. Change it in the setup wizard, from the **Harnesses** page here (the per-install mode dropdown, next to posture), or with `geneseed-build --mode <name>`; switch back any time with `--mode direct`. A rebuild or re-theme preserves it. See [Foreman mode](#/docs/foreman-mode) and [agent pipelines](#/docs/pipelines) for the dedicated pages.
|
|
16
|
-
|
|
17
|
-
### The Pact — a two-way contract
|
|
18
|
-
|
|
19
|
-
Where the Rules bind the agent, the **Pact** binds the collaboration — and it is not a layer beside them: it is stated inside **Telos**, the first Ethos section, the tier that is always in force, so it holds in every task and every repository. It carries three ranked laws — protect the user, the code's future maintainer included; serve their intent; keep the agent's own honesty — each yielding only to the one above, and — unusually — names what *you* owe back: don't punish candour that honours the pact, give context up front, decide when shown a fork. Your half is not enforceable against you; the agent's half is binding on it.
|
|
20
|
-
|
|
21
|
-
### Typed memory — binding force
|
|
22
|
-
|
|
23
|
-
A memory may carry an optional `force` — **constraint** (imposed, not the agent's to relax), **choice** (revisable with consent), **conviction** (revisable on evidence), or **tempered** (a relaxed constraint). When new evidence contradicts a forced memory, the Bridge rule requires revising it in the open rather than dropping it silently.
|
|
24
|
-
|
|
25
|
-
### Your profile — identity
|
|
26
|
-
|
|
27
|
-
`PROFILE.md`, seeded once beside `AGENT.md` and never overwritten, holds *who you are*: role, habits, register preferences. It is identity, not rules — it colours how the agent works but never binds (precedence is the Ethos and the Rules, then `user-rules.md`, then the active Doctrines, then the profile). Edit it here under the **Profile** tab, or in the file directly — or let the agent draft it: the [[profile]] skill interviews you (who you are, how you work, how you like answers pitched) and writes the file only with your consent, routing anything that is really a standing rule to `user-rules.md` instead.
|
package/docs/web/design.md
DELETED
package/docs/web/env-knobs.md
DELETED
package/docs/web/exclusions.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: concepts
|
|
3
|
-
order: 9
|
|
4
|
-
title: "Sovereign repos (exclusions)"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
link: {"hash": "#/harness", "label": "Manage in Harness →"}
|
|
7
|
-
---
|
|
8
|
-
A **sovereign repo** is a folder where every GLOBAL harness install goes fully dormant: hooks stay silent and the global preamble (`AGENT.md`/`CLAUDE.md`) is never loaded there. A repo that ships its own agent config you don't want a global harness layered onto is the usual case.
|
|
9
|
-
|
|
10
|
-
### Total dormancy, not a filter
|
|
11
|
-
|
|
12
|
-
Exclusion is all-or-nothing per folder — it doesn't trim which Rules apply or which Skills load, the global harness simply never engages inside that tree. A per-repo Geneseed install in the same folder is unaffected; exclusions only ever suppress GLOBAL installs.
|
|
13
|
-
|
|
14
|
-
### How it's wired, per host
|
|
15
|
-
|
|
16
|
-
- **Claude Code** — native suppression via `claudeMdExcludes` in the repo's `.claude/settings.local.json`.
|
|
17
|
-
- **OpenClaude** — the same `claudeMdExcludes`, in the repo's `.openclaude/settings.local.json`.
|
|
18
|
-
- **Bob** — a shadow `rules/geneseed.md` stub that shadows the global one (never overwrites a hand-written stub already there).
|
|
19
|
-
- **OpenCode** — the hook entry's sovereign-bypass guard and its twin in the plugins short-circuit at session start.
|
|
20
|
-
- **Copilot — documented limitation.** GitHub Copilot has no native per-repo suppression hook: the global `copilot-instructions.md` still loads even inside an excluded folder.
|
|
21
|
-
|
|
22
|
-
### Manage it
|
|
23
|
-
|
|
24
|
-
- **CLI** — `harness exclude add <path>` / `remove <path>` / `list`.
|
|
25
|
-
- **This console** — the **Excluded folders** card on the **Harnesses** page (shown once a global install exists).
|
|
26
|
-
|
|
27
|
-
Exclusions live in each global install's own `excludes.json`, so add/remove re-wires every global install in one call — nothing to repeat per host.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: start
|
|
3
|
-
order: 3
|
|
4
|
-
title: "Your first session"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
Once installed, the agent doesn't change *how* you talk to your tool — it changes what the tool already knows when you do.
|
|
8
|
-
|
|
9
|
-
### What loaded automatically
|
|
10
|
-
|
|
11
|
-
- **`AGENT.md`** — the [constitution](#/docs/rules): the {N_ONTOLOGY} Ethos sections, {N_LAWS} always-on Rules, and the {N_DOCTRINE_RULES} doctrine rules from the packs this install built in.
|
|
12
|
-
- **Your repo's docs** — `README.md`, `CONTRIBUTING.md`, anything under `docs/` the harness discovers.
|
|
13
|
-
- **Your machine's wiki** (if you [set one up](#/docs/configure-wiki)) — eager entries and a lazy listing of the rest.
|
|
14
|
-
- **The skill and agent catalogue** — invokable by name.
|
|
15
|
-
|
|
16
|
-
### Try these prompts
|
|
17
|
-
|
|
18
|
-
- *"Use the **profile** skill"* — a short interview that drafts `PROFILE.md` (seeded empty at install), so the agent knows who you are and how you like answers pitched.
|
|
19
|
-
- *"Use the **brainstorm** skill on this feature request."*
|
|
20
|
-
- *"Delegate to the **reviewer** agent on the staged diff."*
|
|
21
|
-
- *"Use **brainstorm** then **plan** for how to add X."*
|
|
22
|
-
- *"Use **council** to debate whether we should ship Y now."*
|
|
23
|
-
|
|
24
|
-
Skills are repeatable workflows; agents are capability specialists. You invoke them by name in plain English.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
**Catalog:** [Skills](#/section/skills) · [Agents](#/section/agents) · [Constitution](#/laws)
|
package/docs/web/footprint.md
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: concepts
|
|
3
|
-
order: 8
|
|
4
|
-
title: "Footprint (lean vs full)"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
link: {"hash": "#/settings", "label": "Toggle it in Settings →"}
|
|
7
|
-
---
|
|
8
|
-
**Footprint** controls how much of the [constitution](#/docs/rules) your agent carries *inline* in `AGENT.md` every turn. Two states — **lean** (the default) and **full** — set per install. It's a token-cost dial, not a change to which rules apply: whatever this install adopted is in force at either setting, and across lean and full the emitted files are otherwise identical — same Agents, Skills, plugins, commands, Memory, and Notebook. (The dial that *does* change which rules apply is the [doctrine packs](#/docs/setup-choices), a separate choice.)
|
|
9
|
-
|
|
10
|
-
### The difference
|
|
11
|
-
|
|
12
|
-
- **Full** — `AGENT.md` inlines the Ethos, every Rule and every rule of the **active** doctrine packs, complete text and reasoning included, on every single turn.
|
|
13
|
-
- **Lean** — each Rule and each doctrine rule is carried as its **heading + an authored short form** — the rule and its mechanism, written by hand rather than cut at the first full stop — each tier closing with a pointer to its complete text shipped beside `AGENT.md` — the agent reads the reasoning on demand when a rule's application is unclear. The Ethos is condensed the same way, as **one authored short form for the whole tier**: it is flowing prose rather than numbered blocks, so cutting it section by section would have left orphan fragments instead of a shorter argument.
|
|
14
|
-
|
|
15
|
-
### What ships on disk either way
|
|
16
|
-
|
|
17
|
-
Neither setting hides text from the agent; they hide it from *every turn*.
|
|
18
|
-
|
|
19
|
-
- **Lean** writes `laws/`, `ontology/` and `doctrines/` in full text into the install, beside `AGENT.md`, because the inline copy has lost text the agent may still need.
|
|
20
|
-
- **Full** writes `doctrines/` for the mirror-image reason: full inlines only the packs this install built in, so the ones it left out have to be on disk for a citation into them to resolve, and for you to read before turning one on.
|
|
21
|
-
|
|
22
|
-
### Which to choose
|
|
23
|
-
|
|
24
|
-
- Keep **lean** — the default — on long sessions, large repos, or cost-sensitive runs, trusting the agent to pull the complete text when it needs the *why*. Lean is **safe**: that text still ships, and the harness explicitly points the agent there before acting on secrets, deletion, git history, scope, or untrusted content. It's an optimization, not a rules cut.
|
|
25
|
-
- Switch to **full** if token cost is a non-issue, you want the reasoning always present, or you run a smaller/cheaper model — with the *why* eagerly in context, a model applies a rule's nuance more reliably.
|
|
26
|
-
|
|
27
|
-
### How to set it
|
|
28
|
-
|
|
29
|
-
It's set-and-forget — stored in the `.geneseed-footprint` marker, preserved across every rebuild, identical on every host (OpenCode, Claude Code, Bob, Copilot, OpenClaude). Changing it re-emits the install.
|
|
30
|
-
|
|
31
|
-
- **Settings** — the **Footprint** toggle flips the current install (full ⇄ lean) and rebuilds it in place.
|
|
32
|
-
- **Harness tab** — on an active install, a per-harness dropdown sets it for that install independently, then **Apply**. On a host that is not installed yet, it is step 2 of **Install…**.
|
|
33
|
-
- **Setup / re-theme wizard** — asks for footprint alongside voice, posture, mode, and doctrine packs.
|
|
34
|
-
- **CLI** — `geneseed-build --footprint lean` (with any `--emit`).
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
**Related:** [The constitution](#/docs/rules) · [Voice vs structure](#/docs/themes) · [Token footprint — the numbers](#/docs/token-footprint)
|
package/docs/web/foreman-mode.md
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: concepts
|
|
3
|
-
order: 12
|
|
4
|
-
title: "Foreman mode"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
link: {"hash": "#/harness", "label": "Set the mode in Harness →"}
|
|
7
|
-
---
|
|
8
|
-
**Mode** is the session's *operating* register — how work gets executed — one of four build-time dials, beside posture (the *relationship* register), [doctrine packs](#/docs/setup-choices) (which practice rules bind) and footprint (how much of the constitution loads inline). Two modes ship, set at build time so the choice holds steady instead of drifting mid-session, and preserved across every rebuild and re-theme.
|
|
9
|
-
|
|
10
|
-
### direct — the default
|
|
11
|
-
|
|
12
|
-
The agent works every task itself, turn by turn — exactly as it does without the dial. Nothing spawns; you talk to one agent from start to finish. Keep it unless you specifically want the session managing work for you.
|
|
13
|
-
|
|
14
|
-
### foreman — a session that triages
|
|
15
|
-
|
|
16
|
-
The session becomes a triage layer instead of a single worker. It sorts each incoming request:
|
|
17
|
-
|
|
18
|
-
- **Trivial** — answered directly, in-line, just like direct mode.
|
|
19
|
-
- **Substantial** — handed to an isolated [agent pipeline](#/docs/pipelines): a crew that runs on its own, reports back, and merges only once its own tests and lint pass.
|
|
20
|
-
|
|
21
|
-
Because the crew runs apart from the conversation, the session stays responsive — you keep talking to the foreman while the work proceeds. Expect foreman to cost more per substantial task (a crew runs instead of one agent), in exchange for a session that never blocks on a long job.
|
|
22
|
-
|
|
23
|
-
### How to set it
|
|
24
|
-
|
|
25
|
-
Set-and-forget, stored beside the install and preserved across rebuilds and re-themes:
|
|
26
|
-
|
|
27
|
-
- **Harness tab** — on an active install, the per-install **Mode** dropdown (beside Voice, Footprint, and Posture), then **Apply**. On a host that is not installed yet, the same four choices are steps inside **Install…**.
|
|
28
|
-
- **Setup / re-theme wizard** — asks for mode alongside voice, posture, doctrine packs, and footprint.
|
|
29
|
-
- **CLI** — `geneseed-build --mode foreman`; switch back with `--mode direct`.
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
**Related:** [Agent pipelines](#/docs/pipelines) · [The collaboration layer](#/docs/collaboration)
|
package/docs/web/glossary.md
DELETED
package/docs/web/harnesses.md
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: start
|
|
3
|
-
order: 4
|
|
4
|
-
title: "Supported harnesses"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
One source, **six emit targets** — each with a per-repo and a global (`-global`) variant, plus a portable `files` bundle any `AGENT.md`-aware tool can read. **OpenCode** runs its own engine (JS plugins, colour themes, LSP); **Claude Code**, **Bob**, **Copilot**, and **OpenClaude** share one Claude-shaped engine that diverges only by host dialect.
|
|
8
|
-
|
|
9
|
-
The harness *content* — the constitution (Ethos, Rules, Doctrines), Agents, Skills, Memory, and the preamble voice — is **identical on every host**: one build renders the same text for all six targets. What differs is how much of it the host can *automate* (via plugins or hooks) versus carry as preamble discipline.
|
|
10
|
-
|
|
11
|
-
| Capability | OpenCode | Claude | Bob | Copilot | OpenClaude |
|
|
12
|
-
| --- | :---: | :---: | :---: | :---: | :---: |
|
|
13
|
-
| Agents · Skills · Memory | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
14
|
-
| Context injection | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble | 🪝 hook² |
|
|
15
|
-
| Memory write-back (learn) | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble | 🪝 hook² |
|
|
16
|
-
| Git-gate consent (Consent Before Push) | ⚙️ plugin | 🪝 hook | 🪝 hook¹ | 📄 preamble | 🪝 hook² |
|
|
17
|
-
| Sovereign-repo excludes | ⚙️ plugin | ✅ | ✅ | ➖ | ✅ |
|
|
18
|
-
| MCP server wiring | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
19
|
-
| Colour themes | ✅ | ➖ | ➖ | ➖ | ➖ |
|
|
20
|
-
| LSP · workflows · primary-agent · `/`-commands | ✅ | ➖ | ➖ | ➖ | ➖ |
|
|
21
|
-
|
|
22
|
-
✅ native · ⚙️ OpenCode plugin · 🪝 `settings.json` hook · 📄 preamble prose only · ➖ no host mechanism (harness discipline still applies). ¹ Bob honours Claude-dialect hooks best-effort — inert if unsupported, harness still holds via the preamble. ² OpenClaude is a Claude Code fork: Claude's hooks verbatim, under `~/.openclaude` or a repo's `.openclaude/`.
|
|
23
|
-
|
|
24
|
-
**The git-gate row is the one capability that is not always present**, on any host. It implements **Consent Before Push** (`process 5`), so it is wired only on an install that built the **process** [doctrine pack](#/docs/setup-choices) in — drop that pack and the boundary drops with it, because a gate that keeps asking for a rule the install never adopted is a gate arguing with its own harness. One asymmetry: on OpenCode that holds for a *fresh* install, but a pack-off rebuild of an install whose `opencode.json` already carries a `git commit*` entry leaves it in place and reports it — Geneseed cannot tell its own entry from one you typed, so it removes neither ([doctrine packs](#/docs/setup-choices)). The invariant-territory refusals in the same neighbourhood (`rm -rf`, a force-push) are the Rules' territory, not the pack's, and stay in every build.
|
|
25
|
-
|
|
26
|
-
**No host drops an Agent, Skill, or the memory convention.** The asymmetry is otherwise entirely in *automation mechanism*: OpenCode's plugins and Claude/Bob/OpenClaude's hooks enforce a few of these rules for you at the tool boundary, where **Copilot** (no hook mechanism) enforces them through preamble discipline. The OpenCode-only extras (themes, LSP, workflow runner, primary-agent) have no analogue on a Claude-shaped host.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
**Deeper:** [The harness model](#/docs/model) · [Footprint per host](#/docs/footprint)
|
package/docs/web/headless.md
DELETED
package/docs/web/ingest-docs.md
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: start
|
|
3
|
-
order: 0
|
|
4
|
-
title: "Install in 5 minutes"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
---
|
|
7
|
-
Two steps. The only prerequisite is **Node ≥ 22.3** — Geneseed ships as an npm package with zero dependencies.
|
|
8
|
-
|
|
9
|
-
### 1. Run the setup wizard
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
npx geneseed setup
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
The same command on macOS, Linux and Windows (cmd, PowerShell, or any POSIX shell). The wizard asks for a theme and an install mode (OpenCode global is recommended — one install, every repo inherits it), then builds and offers a health check.
|
|
16
|
-
|
|
17
|
-
To keep the command around: `npm install -g geneseed`, then plain `geneseed …` from any directory.
|
|
18
|
-
|
|
19
|
-
### 2. Open your agent
|
|
20
|
-
|
|
21
|
-
Open OpenCode (or Claude Code, Bob, Copilot, OpenClaude, or any `AGENT.md`-aware tool) in any repo. The first reply opens with the readiness sigil (`✅` neutral / `🧬` imperial / your theme's equivalent) and your project's docs are already in context.
|
|
22
|
-
|
|
23
|
-
### Prefer a clone?
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
git clone https://github.com/Arylmera/Geneseed.git
|
|
27
|
-
cd Geneseed
|
|
28
|
-
./geneseed setup # Windows: .\geneseed.cmd setup
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
A checkout needs **git** and the same **Node ≥ 22.3** as everything else — there is nothing extra to install — and is what you want if you intend to change the harness rather than use it. Already installed this way? [Migrate to npx](#/docs/migrate) moves every install across in one pass.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
**Next:** [Posture, doctrines & footprint](#/docs/setup-choices) · [Verify it works](#/docs/verify) · [What you just installed](#/docs/model) · [Install by hand instead](#/docs/install-paths)
|
package/docs/web/lsp-overview.md
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
group: lsp
|
|
3
|
-
order: 0
|
|
4
|
-
title: "Code intelligence (LSP)"
|
|
5
|
-
kind: "concept"
|
|
6
|
-
link: {"hash": "#/docs/adapters-opencode", "label": "OpenCode adapter →"}
|
|
7
|
-
---
|
|
8
|
-
OpenCode can drive Language Server Protocol servers so the agent sees real diagnostics, type errors, and go-to-definition — not just text. Geneseed turns this on for every language OpenCode ships a server for.
|
|
9
|
-
|
|
10
|
-
### What's covered out of the box
|
|
11
|
-
|
|
12
|
-
| Language | Server | You install? |
|
|
13
|
-
|---|---|---|
|
|
14
|
-
| JavaScript / TypeScript / React / React Native | typescript-language-server | No — OpenCode self-downloads |
|
|
15
|
-
| Python | pyright | No — OpenCode self-downloads |
|
|
16
|
-
| Java | jdtls | **JDK 21+** (OpenCode downloads jdtls itself) |
|
|
17
|
-
| SQL / PostgreSQL / Oracle | *none — by design* | — |
|
|
18
|
-
|
|
19
|
-
One server covers JavaScript, TypeScript, React, and React Native — they are all TS/JS, so no extra server is needed.
|
|
20
|
-
|
|
21
|
-
### The one prerequisite the harness can't self-install
|
|
22
|
-
|
|
23
|
-
OpenCode downloads the JS-runtime servers automatically on first use. It cannot install a JVM, and jdtls needs one — so the setup wizard checks for it and prints an install hint if missing:
|
|
24
|
-
|
|
25
|
-
- **Java 21+** — `brew install openjdk@21`, SDKMAN `sdk install java 21-tem`, or your distro's JDK.
|
|
26
|
-
|
|
27
|
-
### Why no SQL server
|
|
28
|
-
|
|
29
|
-
A SQL language server is dialect-locked — a Postgres server flags Oracle SQL as errors and vice versa — and a `.sql` file can map to only one server, with no signal for which dialect a repo uses. Rather than guess wrong for half of all SQL codebases, we ship none. A project that knows its dialect can add the matching server in its own `opencode.json` under the `lsp` key.
|
|
30
|
-
|
|
31
|
-
### How it's wired
|
|
32
|
-
|
|
33
|
-
`"lsp": true` in your emitted `opencode.json` enables every built-in server (LSP is off by default). To turn auto-download off (air-gapped machines), set `OPENCODE_DISABLE_LSP_DOWNLOAD=true` and pre-install each server.
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
**Verify:** open a `.ts` and a `.py` file in a session and ask the agent for diagnostics — the first open triggers the download.
|