@jaybeeuu/agent-cortex 1.20.0 → 1.38.1
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/.agents/skills/style-versioning/SKILL.md +102 -0
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.github/workflows/ci.yml +227 -6
- package/AGENTS.md +29 -24
- package/CHANGELOG.md +119 -5
- package/README.md +132 -33
- package/agents/README.md +47 -13
- package/agents/plan/agent.md +51 -0
- package/agents/plan/claude/frontmatter.json +6 -0
- package/agents/plan/copilot/frontmatter.json +6 -0
- package/agents/plan/pi/frontmatter.json +6 -0
- package/agents/plan.agent.md +3 -0
- package/agents/ralph/agent.md +262 -0
- package/agents/ralph/claude/frontmatter.json +6 -0
- package/agents/ralph/claude/polling.md +31 -0
- package/agents/ralph/copilot/frontmatter.json +6 -0
- package/agents/ralph/copilot/polling.md +62 -0
- package/agents/ralph/pi/frontmatter.json +6 -0
- package/agents/ralph/pi/polling.md +74 -0
- package/agents/ralph-plan/agent.md +114 -0
- package/agents/ralph-plan/claude/frontmatter.json +6 -0
- package/agents/ralph-plan/copilot/frontmatter.json +6 -0
- package/agents/ralph-plan/pi/frontmatter.json +6 -0
- package/agents/ralph-plan.agent.md +5 -2
- package/agents/ralph.agent.md +83 -57
- package/agents/strategy/agent.md +104 -0
- package/agents/strategy/claude/frontmatter.json +6 -0
- package/agents/strategy/copilot/frontmatter.json +6 -0
- package/agents/strategy/pi/frontmatter.json +6 -0
- package/agents/strategy.agent.md +3 -0
- package/bin/agent-cortex.mjs +68 -1
- package/bin/installers/claude.mjs +262 -0
- package/bin/installers/copilot.mjs +129 -0
- package/bin/installers/pi.mjs +197 -0
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/agents/plan.md +3 -1
- package/claude/agents/ralph-plan.md +5 -3
- package/claude/agents/strategy.md +3 -1
- package/claude/hooks/scripts/notify.mjs +54 -0
- package/claude/hooks.json +15 -0
- package/docs/claude-hooks.md +115 -0
- package/docs/ideas/unified-ci-pipeline.md +28 -0
- package/docs/skills/skill-anatomy.md +9 -0
- package/extensions/agent-modes/README.md +54 -0
- package/extensions/agent-modes/discover.test.ts +241 -0
- package/extensions/agent-modes/discover.ts +458 -0
- package/extensions/agent-modes/index.ts +13 -224
- package/extensions/agent-modes/node_modules/.bin/pi +21 -0
- package/extensions/agent-modes/node_modules/.bin/tsc +21 -0
- package/extensions/agent-modes/node_modules/.bin/tsserver +21 -0
- package/extensions/agent-modes/node_modules/.bin/tsx +21 -0
- package/extensions/agent-modes/package.json +20 -0
- package/extensions/agent-modes/tsconfig.json +12 -0
- package/extensions/session-start.ts +1 -1
- package/extensions/skill-stats/context-loader.test.ts +1 -1
- package/extensions/skill-stats/node_modules/.bin/pi +21 -0
- package/extensions/skill-stats/node_modules/.bin/tsc +21 -0
- package/extensions/skill-stats/node_modules/.bin/tsserver +21 -0
- package/extensions/skill-stats/node_modules/.bin/tsx +21 -0
- package/extensions/subagent/README.md +19 -0
- package/extensions/subagent/index.ts +131 -45
- package/extensions/subagent/node_modules/.bin/pi +21 -0
- package/extensions/subagent/node_modules/.bin/pi-ai +21 -0
- package/extensions/subagent/node_modules/.bin/tsc +21 -0
- package/extensions/subagent/node_modules/.bin/tsserver +21 -0
- package/extensions/subagent/node_modules/.bin/tsx +21 -0
- package/extensions/subagent/package.json +23 -0
- package/extensions/subagent/tsconfig.json +12 -0
- package/extensions/subagent/wait.test.ts +202 -0
- package/extensions/subagent/wait.ts +118 -0
- package/hooks/claude/hooks.json +38 -0
- package/hooks/claude/scripts/notify.mjs +54 -0
- package/lib/cli.mjs +62 -3
- package/package.json +10 -7
- package/plugin.json +1 -1
- package/pnpm-workspace.yaml +1 -0
- package/scripts/build-copilot-agents.mjs +30 -0
- package/scripts/lib/compose-agent.mjs +241 -0
- package/scripts/sync-plugin-version.sh +17 -0
- package/skills/engineering/design-an-interface/SKILL.md +1 -1
- package/skills/engineering/improve-codebase-architecture/SKILL.md +1 -1
- package/skills/workflow/ralph/REFERENCE.md +2 -2
- package/skills/workflow/ralph/SKILL.md +6 -6
- package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +4 -2
- package/skills/workflow/using-agent-skills/SKILL.md +15 -2
- package/test/cli.test.mjs +115 -2
- package/test/copilot-installer.test.mjs +298 -0
- package/test/installer.test.mjs +179 -0
- package/test/notify-hook.test.mjs +63 -0
- package/test/pi-installer.test.mjs +371 -0
- package/token-map.README.md +128 -0
- package/token-map.json +106 -0
- package/.beads/README.md +0 -81
- package/.beads/config.yaml +0 -1
- package/.beads/issues.jsonl +0 -236
- package/.beads/metadata.json +0 -7
- package/.github/workflows/ci.test.ts +0 -217
- package/.github/workflows/publish.yml +0 -36
- package/scripts/build-claude-agents.mjs +0 -179
- package/skills/workflow/using-agent-skills/scripts/validate-skill-structure.test.ts +0 -73
- /package/extensions/{context-loader.md → lib/context-loader.md} +0 -0
- /package/extensions/{context-loader.ts → lib/context-loader.ts} +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# token-map.json — multi-harness token substitution
|
|
2
|
+
|
|
3
|
+
`token-map.json` is the central, single-source mapping of **tool names**, **paths**, and
|
|
4
|
+
**agent naming conventions** across the three harnesses this repo ships to. It is the
|
|
5
|
+
foundation for the install-time generation system: each harness installer (`agent-cortex
|
|
6
|
+
install <harness>`) reads the map and substitutes `{{TOOL:...}}` / `{{PATH:...}}` tokens in
|
|
7
|
+
the files it generates.
|
|
8
|
+
|
|
9
|
+
**The substitution contract lives inside `token-map.json`** (the `contract` section) — that
|
|
10
|
+
file is the single reference installers must implement. This README explains the design
|
|
11
|
+
decisions behind the map.
|
|
12
|
+
|
|
13
|
+
## Harnesses
|
|
14
|
+
|
|
15
|
+
| id | Platform | Agent format | Plugin root |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `copilot` | GitHub Copilot CLI | `agents/<name>/` composable dirs → generated `agents/*.agent.md` | `~/.copilot/installed-plugins/_direct/agent-cortex` |
|
|
18
|
+
| `pi` | pi coding agent | `agents/<name>/` composable dirs (composed at runtime by agent-modes, or installed install-time by `agent-cortex install pi`) | `~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex` |
|
|
19
|
+
| `claude` | Claude Code | `claude/agents/*.md` (generated) | `${CLAUDE_PLUGIN_ROOT}` (env var) |
|
|
20
|
+
|
|
21
|
+
The harness ids match the values accepted by `agent-cortex install <harness>` in
|
|
22
|
+
`lib/cli.mjs` (`SUPPORTED_HARNESSES`). The pi `plugin_root` row is the npm-layout
|
|
23
|
+
literal that `agent-cortex install pi` uses by default; local checkout and symlinked
|
|
24
|
+
installs pass `--plugin-root <dir>` to override it (see README "Pi harness agents &
|
|
25
|
+
skills").
|
|
26
|
+
|
|
27
|
+
## Design decisions
|
|
28
|
+
|
|
29
|
+
### 1. Token naming convention: `{{TOOL:name}}`, not `{{tool.name}}`
|
|
30
|
+
|
|
31
|
+
`agents/README.md` (ADR #63) already standardised `{{TOOL:name}}`, `{{PATH:name}}`, and
|
|
32
|
+
`{{SECTION:name}}` for the composable agent directory format. The map adopts that grammar
|
|
33
|
+
rather than inventing a dotted form:
|
|
34
|
+
|
|
35
|
+
- **The convention is established** — skill authors and the ADR already write tokens this
|
|
36
|
+
way; the map should not fork the language.
|
|
37
|
+
- **Upper-case type prefix disambiguates** — `{{TOOL:read}}` (a tool) can never collide with
|
|
38
|
+
`{{PATH:read}}` (a path) in the same document.
|
|
39
|
+
- **One namespace per type** — tool keys, path keys, and section names never share a lookup
|
|
40
|
+
table, so a tool called `skills_dir` would not shadow the path key.
|
|
41
|
+
- **Greppable and schema-friendly** — simple `{{TYPE:NAME}}` is trivially matched by a
|
|
42
|
+
regex; delimiters make unbalanced/typo'd tokens visible.
|
|
43
|
+
|
|
44
|
+
### 2. What is mapped
|
|
45
|
+
|
|
46
|
+
- **`tools`** — the twelve canonical tool names as authored in `agents/<name>/agent.md`
|
|
47
|
+
(copilot names are the authoring names). Each row gives the equivalent tool name per
|
|
48
|
+
harness. Source of truth for the copilot → claude half is `token-map.json`'s own claude
|
|
49
|
+
column, consumed by `bin/installers/claude.mjs` (the install-time generator — PR #91, #92); the pi column is grounded
|
|
50
|
+
in pi's documented built-in tool surface (`read`, `bash`, `edit`, `write`, `grep`, `find`,
|
|
51
|
+
`ls`) plus `task` / `read_agent` / `wait_for_agents` subagent tools.
|
|
52
|
+
- **`paths`** — `plugin_root`, `agents_dir`, and `skills_dir`. These are the install-time
|
|
53
|
+
variables that differ per harness. `plugin_root` is the anchor; the other two resolve
|
|
54
|
+
relative to it (`{base, relative}` specs) so a harness only overrides the single root it
|
|
55
|
+
actually installs into.
|
|
56
|
+
- **`agents`** — the `agent-cortex:` name-prefix convention per harness (claude strips the
|
|
57
|
+
prefix during conversion) and the deferred-agent exception (claude's `ralph` is authored
|
|
58
|
+
natively, never generated). Agent names themselves do not get per-row mappings because
|
|
59
|
+
the prefix rule covers all of them; the deferred list captures the only structural
|
|
60
|
+
difference.
|
|
61
|
+
- **Deliberately not mapped:** hook patterns, MCP servers, and tool descriptions. Those
|
|
62
|
+
differ *structurally* per harness (different hook event names, different config files),
|
|
63
|
+
not by a single substitutable token; each installer already hardcodes its own shape. The
|
|
64
|
+
map records them in `notes` where a tool differs in behaviour (`read_agent`, `skill`,
|
|
65
|
+
`ask_user`).
|
|
66
|
+
|
|
67
|
+
### 3. Null mappings
|
|
68
|
+
|
|
69
|
+
A null value means **"this harness has no equivalent"** — not "empty string" and not "leave
|
|
70
|
+
the token as-is". The contract defines the two contexts:
|
|
71
|
+
|
|
72
|
+
- **Prose** (e.g. `Use {{TOOL:read_agent}} to poll`): the token is dropped and the
|
|
73
|
+
installer warns. Dangling sentences after a drop are the author's responsibility — the
|
|
74
|
+
warning exists so the installer surfaces them.
|
|
75
|
+
- **Tool-list frontmatter** (e.g. `tools: [..., "read_agent"]`): the entry is omitted from
|
|
76
|
+
the array.
|
|
77
|
+
|
|
78
|
+
Unknown (unmapped) tokens are a **hard error**, not a null — a silently-passed-through
|
|
79
|
+
token is exactly the bug the map exists to prevent, and mirrors the build script's
|
|
80
|
+
`unknown tool "x"` throw.
|
|
81
|
+
|
|
82
|
+
The pi install-time installer (`bin/installers/pi.mjs`) follows the strict contract above.
|
|
83
|
+
One consumer deviates deliberately: the pi `agent-modes` extension reads the map at
|
|
84
|
+
**runtime** (not install time) to compose agent prompts from the composable agents
|
|
85
|
+
format. For it, an unmapped tool name passes through unchanged — it may be a
|
|
86
|
+
native PI tool — while a mapped-null tool (`ask_user`, `skill`) is omitted with a
|
|
87
|
+
warning. See `extensions/agent-modes/README.md`.
|
|
88
|
+
|
|
89
|
+
### 4. Token substitution contract
|
|
90
|
+
|
|
91
|
+
The full contract is embedded in `token-map.json` under `contract`. In summary, installers:
|
|
92
|
+
|
|
93
|
+
1. Bind a harness id (`copilot` | `claude` | `pi`).
|
|
94
|
+
2. Substitute in order: `SECTION` (left for the composer), then `TOOL`, then `PATH`.
|
|
95
|
+
3. For `TOOL`: look up the canonical key, replace with the harness name; null → drop/omit;
|
|
96
|
+
unknown → throw.
|
|
97
|
+
4. For `PATH`: named key → resolve from `paths`; anything else → resolve relative to
|
|
98
|
+
`plugin_root`; `${ENV_VAR}` values pass through verbatim for runtime expansion.
|
|
99
|
+
5. Reject a map `version` they do not implement.
|
|
100
|
+
|
|
101
|
+
## Authoring guidance
|
|
102
|
+
|
|
103
|
+
- Write tokens with the **canonical (copilot) names**: `Use {{TOOL:task}} to spawn
|
|
104
|
+
subagents`, `Read {{PATH:skills/workflow/plan/SKILL.md}}`.
|
|
105
|
+
- Never embed a harness-specific name in the canonical sources (`agents/<name>/agent.md`,
|
|
106
|
+
`skills/**/SKILL.md`) — that defeats the map. The generated `claude/` subtree, the
|
|
107
|
+
generated `agents/*.agent.md` files, and any installed copies are the only places
|
|
108
|
+
substituted names appear.
|
|
109
|
+
- When you add a new tool to an agent's frontmatter, add a row to `tools` in
|
|
110
|
+
`token-map.json` in the same change — the contract treats unknown tools as errors, so a
|
|
111
|
+
missing row breaks the install pipeline loudly instead of silently.
|
|
112
|
+
|
|
113
|
+
## Related
|
|
114
|
+
|
|
115
|
+
- `agents/README.md` — composable agent directory format (ADR #63), defines the token
|
|
116
|
+
grammar the map implements.
|
|
117
|
+
- `scripts/build-copilot-agents.mjs` / `bin/installers/copilot.mjs` — the copilot
|
|
118
|
+
harness token composer (scripts/lib/compose-agent.mjs) resolves `{{TOOL:...}}` /
|
|
119
|
+
`{{PATH:...}}` against the map and `{{SECTION:...}}` from the per-harness section
|
|
120
|
+
files; `bin/installers/copilot.mjs` is the shared generator both `pnpm build:copilot`
|
|
121
|
+
and `agent-cortex install copilot` run.
|
|
122
|
+
- `bin/installers/claude.mjs` — the single Claude generator, behind both
|
|
123
|
+
`agent-cortex install claude` and the `pnpm build:claude` alias (no build-time
|
|
124
|
+
counterpart; the committed `claude/` subtree is regenerated by it and drift-checked).
|
|
125
|
+
- `bin/installers/pi.mjs` — the pi harness installer (`agent-cortex install pi`), an
|
|
126
|
+
install-time consumer of the map's contract.
|
|
127
|
+
- `lib/cli.mjs` — `SUPPORTED_HARNESSES`, the install command surface the harness ids come
|
|
128
|
+
from.
|
package/token-map.json
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-cortex token map",
|
|
3
|
+
"description": "Central mapping of tool names, paths, and agent naming conventions across the copilot, claude, and pi harnesses. Single source of truth for install-time token substitution. See token-map.README.md for the design rationale.",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"harnesses": ["copilot", "claude", "pi"],
|
|
6
|
+
"token_format": {
|
|
7
|
+
"convention": "{{TYPE:NAME}}",
|
|
8
|
+
"decision": "Adopt the {{TOOL:name}} / {{PATH:name}} / {{SECTION:name}} grammar already standardised by ADR #63 (agents/README.md) rather than a dotted {{tool.name}} form. The uppercase type prefix disambiguates token kinds at a glance, keeps tool/path/section names in one namespace collision-free, and matches the token grammar skills are already written against.",
|
|
9
|
+
"types": {
|
|
10
|
+
"TOOL": "{{TOOL:<canonical tool key>}} — replaced at install time with the bound harness's tool name (see tools).",
|
|
11
|
+
"PATH": "{{PATH:<path key or relative path>}} — replaced at install time with the harness-resolved path (see paths).",
|
|
12
|
+
"SECTION": "{{SECTION:<name>}} — replaced by the agent composer with <harness>/<name>.md section content. Not a global substitution; out of scope for token-map.json (see contract)."
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"tools": {
|
|
16
|
+
"bash": { "copilot": "bash", "claude": "Bash", "pi": "bash" },
|
|
17
|
+
"view": { "copilot": "view", "claude": "Read", "pi": "read" },
|
|
18
|
+
"edit": { "copilot": "edit", "claude": "Edit", "pi": "edit" },
|
|
19
|
+
"create": { "copilot": "create", "claude": "Write", "pi": "write" },
|
|
20
|
+
"grep": { "copilot": "grep", "claude": "Grep", "pi": "grep" },
|
|
21
|
+
"rg": { "copilot": "rg", "claude": "Grep", "pi": "grep" },
|
|
22
|
+
"glob": { "copilot": "glob", "claude": "Glob", "pi": "find" },
|
|
23
|
+
"ask_user": { "copilot": "ask_user", "claude": "AskUserQuestion", "pi": null },
|
|
24
|
+
"web_fetch": { "copilot": "web_fetch", "claude": "WebFetch", "pi": "fetch_content" },
|
|
25
|
+
"skill": { "copilot": "skill", "claude": "Skill", "pi": null },
|
|
26
|
+
"task": { "copilot": "task", "claude": "Task", "pi": "task" },
|
|
27
|
+
"read_agent": { "copilot": "read_agent", "claude": null, "pi": "read_agent" },
|
|
28
|
+
"wait_for_agents": { "copilot": null, "claude": null, "pi": "wait_for_agents" }
|
|
29
|
+
},
|
|
30
|
+
"paths": {
|
|
31
|
+
"plugin_root": {
|
|
32
|
+
"copilot": "~/.copilot/installed-plugins/_direct/agent-cortex",
|
|
33
|
+
"claude": "${CLAUDE_PLUGIN_ROOT}",
|
|
34
|
+
"pi": "~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex"
|
|
35
|
+
},
|
|
36
|
+
"agents_dir": {
|
|
37
|
+
"copilot": { "base": "plugin_root", "relative": "agents" },
|
|
38
|
+
"claude": { "base": "plugin_root", "relative": "agents" },
|
|
39
|
+
"pi": { "base": "plugin_root", "relative": "agents" }
|
|
40
|
+
},
|
|
41
|
+
"skills_dir": {
|
|
42
|
+
"copilot": { "base": "plugin_root", "relative": "skills" },
|
|
43
|
+
"claude": { "base": "plugin_root", "relative": "skills" },
|
|
44
|
+
"pi": { "base": "plugin_root", "relative": "skills" }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"agents": {
|
|
48
|
+
"prefix": {
|
|
49
|
+
"copilot": "agent-cortex:",
|
|
50
|
+
"claude": "",
|
|
51
|
+
"pi": "agent-cortex:"
|
|
52
|
+
},
|
|
53
|
+
"deferred": {
|
|
54
|
+
"ralph": ["claude"]
|
|
55
|
+
},
|
|
56
|
+
"sources": {
|
|
57
|
+
"copilot": "agents/<name>/ composable dirs (canonical) — composed to agents/*.agent.md by scripts/build-copilot-agents.mjs",
|
|
58
|
+
"pi": "agents/<name>/ composable dirs (canonical) — composed at runtime by the agent-modes extension",
|
|
59
|
+
"claude": "agents/<name>/ composable dirs (canonical) — composed by bin/installers/claude.mjs (install-time generator; pnpm build:claude aliases it), plus agents-native/*.md for deferred agents"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"notes": {
|
|
63
|
+
"tools": {
|
|
64
|
+
"rg": "Copilot alias for grep. Claude and pi collapse it onto their single search tool (Grep / grep) — same collapse rule as the build script.",
|
|
65
|
+
"glob": "Claude has a dedicated Glob tool. pi's built-in pattern-search tool is find (hypa_find when the pi-hypa extension is installed).",
|
|
66
|
+
"ask_user": "Copilot (ask_user) and Claude (AskUserQuestion) prompt the user mid-run. pi intentionally ships no permission-popup/ask tool (per pi docs 'it intentionally does not include permission popups'), so the mapping is null.",
|
|
67
|
+
"web_fetch": "pi's fetch_content comes from the pi-web-access package (declared in pi/settings.json).",
|
|
68
|
+
"skill": "Copilot (skill) and Claude (Skill) expose skills as a tool. pi discovers skills but the agent loads them via read and /skill:<name> commands — there is no dedicated tool, so the mapping is null.",
|
|
69
|
+
"read_agent": "Claude's Task returns results inline — there is no separate read step, so read_agent drops on claude (null). Copilot uses the task + read_agent poll loop; pi blocks on wait_for_agents and keeps read_agent as a fallback.",
|
|
70
|
+
"wait_for_agents": "PI-only blocking wait over background subagent runs (the task tool): returns the results of completed agents and STILL RUNNING for the rest. Copilot has no equivalent tool (its task + read_agent poll loop stays) and Claude's Task delivers results inline with no wait step — both null."
|
|
71
|
+
},
|
|
72
|
+
"paths": {
|
|
73
|
+
"pi": "plugin_root defaults to the npm-package install layout (~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex). Local-checkout installs (pi/settings.json packages entry referencing a local src path) or symlinked installs differ — installers must compute plugin_root from the actual resolution and can override it."
|
|
74
|
+
},
|
|
75
|
+
"agents": {
|
|
76
|
+
"prefix": "Claude strips the agent-cortex: name prefix during conversion (NAME_PREFIX in bin/installers/claude.mjs): copilot/pi agents are agent-cortex:<slug>, claude agents are <slug>.",
|
|
77
|
+
"deferred": "ralph has no generated claude counterpart — it is authored natively as agents-native/ralph.md (its event-driven orchestration cannot be produced by section composition from the polling copilot source)."
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"contract": {
|
|
81
|
+
"version": 1,
|
|
82
|
+
"summary": "Installers substitute {{TOOL:...}}, {{PATH:...}}, and {{SECTION:...}} tokens in generated harness files using this map. This contract is the single reference installers must implement; token-map.json is the data those rules operate on.",
|
|
83
|
+
"harness_ids": ["copilot", "claude", "pi"],
|
|
84
|
+
"binding": "The harness id is the same value the installer is invoked with (agent-cortex install <harness>). Each harness reads its own column from the tools, paths, and agents sections.",
|
|
85
|
+
"substitution_order": ["SECTION", "TOOL", "PATH"],
|
|
86
|
+
"rules": [
|
|
87
|
+
"TOOL: replace {{TOOL:<key>}} with tools.<key>.<harness>. Canonical keys are exact, case-sensitive strings (the copilot tool names, which are the authoring names in agents/<name>/agent.md).",
|
|
88
|
+
"TOOL null: a null value means the harness has no equivalent. In prose, remove the token (and emit a warning). In a tool-list context (frontmatter tools: [...]), omit the entry. Do not substitute an empty string.",
|
|
89
|
+
"TOOL unknown: a {{TOOL:<key>}} with no entry in tools is a hard error — the map must be extended. This mirrors the generators (scripts/build-copilot-agents.mjs, bin/installers/claude.mjs), which throw on unknown tools.",
|
|
90
|
+
"PATH named key: replace {{PATH:<key>}} with the resolved value of paths.<key>.<harness>.",
|
|
91
|
+
"PATH relative: replace {{PATH:<relative>}} with plugin_root + '/' + <relative> (e.g. {{PATH:skills/workflow/plan/SKILL.md}}).",
|
|
92
|
+
"PATH resolution: a value may be a literal string, an ${ENV_VAR} token, or a {base, relative} spec. Resolve {base, relative} by joining relative onto the resolved base. Leave ${ENV_VAR} values verbatim — the harness expands them at runtime (claude's ${CLAUDE_PLUGIN_ROOT}).",
|
|
93
|
+
"PATH unknown base: a {base, relative} spec whose base is not a key in paths is a hard error.",
|
|
94
|
+
"SECTION: {{SECTION:<name>}} is resolved by the agent composer from <agents_dir>/<harness>/<name>.md; token-map.json does not substitute it. Installers must leave SECTION tokens untouched for the composer.",
|
|
95
|
+
"Contract version: installers must reject token-map.json versions higher than the contract version they implement.",
|
|
96
|
+
"Case sensitivity: all token arguments and map keys are case-sensitive."
|
|
97
|
+
],
|
|
98
|
+
"error_handling": {
|
|
99
|
+
"unknown_tool": "throw — the map must stay complete",
|
|
100
|
+
"unknown_path_base": "throw — the map must stay complete",
|
|
101
|
+
"null_tool_in_prose": "warn and drop the token",
|
|
102
|
+
"null_tool_in_tool_list": "omit the entry from the array",
|
|
103
|
+
"unsupported_version": "throw with the supported version range"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
package/.beads/README.md
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Beads - AI-Native Issue Tracking
|
|
2
|
-
|
|
3
|
-
Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code.
|
|
4
|
-
|
|
5
|
-
## What is Beads?
|
|
6
|
-
|
|
7
|
-
Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git.
|
|
8
|
-
|
|
9
|
-
**Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
12
|
-
|
|
13
|
-
### Essential Commands
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
# Create new issues
|
|
17
|
-
bd create "Add user authentication"
|
|
18
|
-
|
|
19
|
-
# View all issues
|
|
20
|
-
bd list
|
|
21
|
-
|
|
22
|
-
# View issue details
|
|
23
|
-
bd show <issue-id>
|
|
24
|
-
|
|
25
|
-
# Update issue status
|
|
26
|
-
bd update <issue-id> --claim
|
|
27
|
-
bd update <issue-id> --status done
|
|
28
|
-
|
|
29
|
-
# Sync with Dolt remote
|
|
30
|
-
bd dolt push
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Working with Issues
|
|
34
|
-
|
|
35
|
-
Issues in Beads are:
|
|
36
|
-
- **Git-native**: Stored in Dolt database with version control and branching
|
|
37
|
-
- **AI-friendly**: CLI-first design works perfectly with AI coding agents
|
|
38
|
-
- **Branch-aware**: Issues can follow your branch workflow
|
|
39
|
-
- **Always in sync**: Auto-syncs with your commits
|
|
40
|
-
|
|
41
|
-
## Why Beads?
|
|
42
|
-
|
|
43
|
-
✨ **AI-Native Design**
|
|
44
|
-
- Built specifically for AI-assisted development workflows
|
|
45
|
-
- CLI-first interface works seamlessly with AI coding agents
|
|
46
|
-
- No context switching to web UIs
|
|
47
|
-
|
|
48
|
-
🚀 **Developer Focused**
|
|
49
|
-
- Issues live in your repo, right next to your code
|
|
50
|
-
- Works offline, syncs when you push
|
|
51
|
-
- Fast, lightweight, and stays out of your way
|
|
52
|
-
|
|
53
|
-
🔧 **Git Integration**
|
|
54
|
-
- Automatic sync with git commits
|
|
55
|
-
- Branch-aware issue tracking
|
|
56
|
-
- Dolt-native three-way merge resolution
|
|
57
|
-
|
|
58
|
-
## Get Started with Beads
|
|
59
|
-
|
|
60
|
-
Try Beads in your own projects:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Install Beads
|
|
64
|
-
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
|
|
65
|
-
|
|
66
|
-
# Initialize in your repo
|
|
67
|
-
bd init
|
|
68
|
-
|
|
69
|
-
# Create your first issue
|
|
70
|
-
bd create "Try out Beads"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Learn More
|
|
74
|
-
|
|
75
|
-
- **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
|
|
76
|
-
- **Quick Start Guide**: Run `bd quickstart`
|
|
77
|
-
- **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
*Beads: Issue tracking that moves at the speed of thought* ⚡
|
package/.beads/config.yaml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
no-git-ops: true
|