allye-pi 2.8.1 → 2.9.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/README.md +25 -8
- package/bootstrap/allye.md +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -57,6 +57,26 @@ Every harness uses one server named `allye`. Tenant selection happens during OAu
|
|
|
57
57
|
|
|
58
58
|
Then open `/plugin`, find the Allye MCP server, click **Connect** and sign in. Update with `/plugin update allye` and `/reload-plugins`.
|
|
59
59
|
|
|
60
|
+
#### Pinned preferences at session start (Claude Code only, optional)
|
|
61
|
+
|
|
62
|
+
Pair this install with your Allye account and every new, cleared or compacted session starts with the preferences you pinned in Allye, shown to the agent as quoted data, not instructions. Pairing is a second `SessionStart` hook, separate from the offline bootstrap hook.
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/allye:hooks pair # connects this install to your account
|
|
66
|
+
/allye:hooks unpair # deletes the local credential, no network call
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- **What it does.** `pair` creates a random secret on your machine, asks the Allye MCP (through your existing OAuth connection) for a one-time pairing code, and exchanges the code for a hook credential. It prints `Paired <device> as <email> in <organization>`: check that the account and organization are yours. A rule that allows every Allye MCP tool also approves the pairing call without a prompt, so that check is your only gate. If they are not yours, run `unpair` and revoke the device.
|
|
70
|
+
- **What leaves the machine.** Only the device name, the client kind (`claude-code`), a challenge (a hash of the secret), the pairing code and, on each session start, the credential as an authorization header. Never repository, file, conversation or environment content.
|
|
71
|
+
- **Where the credential lives.** `${CLAUDE_PLUGIN_DATA}/hook-credential.json` (`~/.claude/plugins/data/<plugin id>/`), mode 0600 in a 0700 directory. Claude Code removes it when the plugin is uninstalled from its last place. To keep the agent from reading it, add `Read(~/.claude/plugins/data/allye*/hook-credential.json)` (adjust to your plugin data directory) to `permissions.deny` in your user-level `~/.claude/settings.json`.
|
|
72
|
+
- **Supported API origins.** `pair` uses `https://api.allye.app`. `ALLYE_API_URL` is accepted only as `https://api.allye.app`, `https://api.zeta.allye.app` (HML) or `http://localhost:<port>` / `http://127.0.0.1:<port>` (local development).
|
|
73
|
+
- **Session start.** The hook makes one short request and prints the preferences, or one hint line when the credential is rejected, unsafe or the account is inactive. It is silent when you are not paired, offline or the API is unavailable. It needs `curl` and `jq`.
|
|
74
|
+
- **Before uninstalling.** Run `/allye:hooks unpair`, then revoke the device in Allye → Settings → Devices; unpair only deletes local files, so the credential keeps working on the server until revoked. Pair again before the expiry date shown at pairing.
|
|
75
|
+
|
|
76
|
+
#### Live session reporting (Claude Code only, optional)
|
|
77
|
+
|
|
78
|
+
When paired, hooks send Allye the state of your sessions (started, working, waiting, idle, ended), the tool names in use, subagent ids and types with their outcome, and the spec and task keys the session is bound to. The subagent type, tool names and `allye:<action>` / spec / task keys DO leave your machine; prompts, commands, tool inputs and outputs, file paths, notification and assistant messages, transcripts, the working directory, branch names and credentials never do. Allye keeps ended runs 7 days. Control it with `/allye:hooks live off|on|status`; events, fields and local files are in [docs/live-reporting.md](docs/live-reporting.md).
|
|
79
|
+
|
|
60
80
|
### Codex, OpenCode
|
|
61
81
|
|
|
62
82
|
Paste into the agent. The install and update guides install one pinned release: the latest GitHub release unless you name a version. They check that it exists, never download from a branch, and keep a timestamped backup of any config they rewrite (`opencode.json`, `~/.codex/AGENTS.md`, `~/.codex/skills/bridge*`) under `~/.allye/backups/<harness>/`.
|
|
@@ -98,14 +118,11 @@ Who can install, where skills go, how edited, deleted and moved copies are handl
|
|
|
98
118
|
```
|
|
99
119
|
bootstrap/allye.md shared bootstrap text (single source)
|
|
100
120
|
skills/bridge/ the Bridge skill and its references
|
|
101
|
-
skills/bridge-*/ the crew skills (Armorer, Recon, Strategist, Architect, Dispatcher,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
load the matching crew skill under a per-role tool allowlist
|
|
105
|
-
hooks/ Claude Code SessionStart hook
|
|
121
|
+
skills/bridge-*/ the crew skills (Armorer, Recon, Strategist, Architect, Dispatcher, Pilot, Navigator, Copilot, Medic, Optimizer, Shield, Watcher)
|
|
122
|
+
agents/bridge-*.md native crew subagents (Claude Code; OpenCode registers them from here): load the crew skill under a per-role tool allowlist
|
|
123
|
+
hooks/ Claude Code hooks (bootstrap, pinned preferences, Live reporter) and the script behind /allye:hooks
|
|
106
124
|
.claude-plugin/, .mcp.json Claude Code plugin and marketplace manifests
|
|
107
|
-
manifests/
|
|
108
|
-
manifests/opencode/ sample OpenCode config
|
|
125
|
+
manifests/ Codex copy of the bootstrap (codex/AGENTS.md, synced) and a sample OpenCode config (opencode/)
|
|
109
126
|
packages/allye-opencode/ OpenCode plugin (npm: allye-opencode)
|
|
110
127
|
packages/allye-pi/ Pi/OMP extension (npm: allye-pi, root package.json)
|
|
111
128
|
install.sh, install/ organization skills installer and its tests
|
|
@@ -117,7 +134,7 @@ docs/ per-harness install and update guides, organization
|
|
|
117
134
|
|
|
118
135
|
```bash
|
|
119
136
|
npm install
|
|
120
|
-
npm test # bootstrap,
|
|
137
|
+
npm test # bootstrap, hooks (npm run test:hooks), crew agents, skills, installer and docs gate, Pi and OpenCode tests (offline)
|
|
121
138
|
npm run typecheck # Pi extension
|
|
122
139
|
cd packages/allye-opencode && bun install && bun run typecheck && bun run build
|
|
123
140
|
```
|
package/bootstrap/allye.md
CHANGED
|
@@ -8,7 +8,7 @@ Allye is available in this session: the Allye MCP server and the Bridge skill.
|
|
|
8
8
|
- Identify this repository's project with `projects` action `project_resolve` (`repository_url` = the git remote URL without credentials: drop any userinfo before `@`, the query and the fragment) before the first project-scoped call.
|
|
9
9
|
- On `ambiguous` or `not_found`, ask the user once; never pick a project or team, set a default team, or create a project without the user's answer.
|
|
10
10
|
- The team follows the project: project, epic, spec and task calls need no team step.
|
|
11
|
-
- A default team (`team` action `team_set_default`) is only needed to create projects and for memories
|
|
11
|
+
- A default team (`team` action `team_set_default`) is only needed to create projects and for memories and todos without `team_id`. If you belong to several teams, pass `team_id` on memory writes: the project's team, as returned by `project_resolve`.
|
|
12
12
|
|
|
13
13
|
## Bridge (`/bridge <mode>`)
|
|
14
14
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "allye-pi",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Allye extension for Pi and OMP: the Allye bootstrap, the Bridge skill and the repository-to-project link",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -47,12 +47,13 @@
|
|
|
47
47
|
"test:pi": "node --experimental-strip-types --test packages/allye-pi/src/index.test.ts",
|
|
48
48
|
"test:opencode": "node --experimental-strip-types --test packages/allye-opencode/src/skills-paths.test.ts",
|
|
49
49
|
"test:installer": "bash install/test-validation.sh && bash install/test-installer.sh && npm run test:docs-gate",
|
|
50
|
+
"test:hooks": "bash hooks/test-allye-hooks.sh && bash hooks/test-session-preferences.sh && bash hooks/test-live-report.sh",
|
|
50
51
|
"test:bootstrap": "bash test/test-bootstrap.sh && bash hooks/test-session-start.sh",
|
|
51
52
|
"test:agents": "node test/test-agents.mjs",
|
|
52
53
|
"test:guides": "node test/test-install-guides.mjs",
|
|
53
54
|
"test:docs-gate": "bash install/test-docs-gate.sh",
|
|
54
55
|
"test:skills": "node test/test-skills-text.mjs && node test/test-ci-proof.mjs && node test/test-ci-workflows.mjs",
|
|
55
|
-
"test": "npm run test:bootstrap && npm run test:agents && npm run test:guides && npm run test:skills && npm run test:installer && npm run test:pi && npm run test:opencode"
|
|
56
|
+
"test": "npm run test:bootstrap && npm run test:hooks && npm run test:agents && npm run test:guides && npm run test:skills && npm run test:installer && npm run test:pi && npm run test:opencode"
|
|
56
57
|
},
|
|
57
58
|
"repository": {
|
|
58
59
|
"type": "git",
|