allye-opencode 1.7.1 → 1.8.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 CHANGED
@@ -9,11 +9,11 @@ An [OpenCode](https://opencode.ai) plugin that registers 6 specialized Allye age
9
9
  - **Allye Review** — code review with full context
10
10
  - **Allye Deliver** — finalizes delivery, closes stories, updates docs
11
11
 
12
- It also injects live Allye account/session context into every conversation via a system-prompt transform hook.
12
+ Account context is loaded through the configured `allye` MCP server, so OpenCode owns OAuth credentials and refresh.
13
13
 
14
14
  ## Installation
15
15
 
16
- This package is not typically installed standalone. It's installed automatically as part of the main [`allye-plugin`](https://github.com/allye-app/allye-plugin) install flow (`install.sh`), which detects OpenCode and adds `allye-opencode` to the `plugin` array in your `opencode.json` alongside the Allye MCP server configuration.
16
+ This package is not typically installed standalone. Add it with the Allye MCP server by following the main plugin's OpenCode installation guide. The repository installer intentionally leaves shared runtime configuration unchanged unless an API-backed ownership operation authorizes the write.
17
17
 
18
18
  If you do need to add it manually, add it to the `plugin` array in your OpenCode config:
19
19
 
package/dist/index.js CHANGED
@@ -113,7 +113,7 @@ If NO relevant skills are found for your current work:
113
113
  - **personal** \u2014 only for them
114
114
  - **team** \u2014 for their selected team; membership is read-only and writes require owner/admin/manage or an active maintainer grant
115
115
  - **organization** \u2014 for the authorized organization; writes require owner/admin/manage authority
116
- - **Marketplace is not a write scope** \u2014 it is legacy read-only browsing/source material
116
+ - **Only personal, team, and organization are valid scopes** \u2014 retired public-scope requests return the API diagnostic unchanged
117
117
  4. Guide them through defining the template interactively
118
118
  5. Save it as a skill via \`skill_create\` with the chosen internal scope. Use \`skill_resolve\` for canonical \`team > organization > personal\` resolution. For forks, pass an explicit \`skill_slug\` after a \`409 Conflict\` and preserve selected-team context; never silently suffix or overwrite a key.
119
119
 
@@ -2041,7 +2041,7 @@ Before creating ANY work item, you MUST search for team standards:
2041
2041
  - **personal** \u2014 only for you
2042
2042
  - **team** \u2014 for the current selected team (requires owner/admin/manage/grant authority)
2043
2043
  - **organization** \u2014 for the entire organization (requires owner/admin/manage authority)
2044
- - **Marketplace is not a write scope** \u2014 it is legacy read-only browsing/source material
2044
+ - **Only personal, team, and organization are valid scopes** \u2014 use the internal library
2045
2045
  4. Guide them through defining each template interactively
2046
2046
  5. Save each as a skill via \`skill_create\` with the chosen internal scope; use canonical \`team > organization > personal\` resolution and never silently suffix a slug
2047
2047
 
@@ -2377,7 +2377,7 @@ Before writing ANY code, you MUST search for project-specific standards:
2377
2377
  **If NO development standards are found:**
2378
2378
  1. Inform the user: "I didn't find development standards or coding conventions for your project."
2379
2379
  2. Suggest: "Would you like to create them? This helps maintain consistency across the team."
2380
- 3. If yes, ask scope (personal/team/organization only; Marketplace is legacy read-only browsing/source material, never a write destination)
2380
+ 3. If yes, ask scope (personal/team/organization only; the internal library is the only Skills source)
2381
2381
  4. Guide them through defining standards based on the project's existing code patterns
2382
2382
  5. Confirm selected-team context for team writes and save as skills via \`skill_create\`; owner/admin/maintainer policy is enforced server-side
2383
2383
 
@@ -2486,7 +2486,7 @@ Before reviewing ANY code, you MUST search for team review standards:
2486
2486
  **If NO review standards are found:**
2487
2487
  1. Inform the user: "I didn't find code review standards for your team."
2488
2488
  2. Suggest: "Would you like to create a review checklist? This ensures consistent reviews across the team."
2489
- 3. If yes, ask scope (personal/team/organization only; Marketplace is legacy read-only browsing/source material, never a write destination)
2489
+ 3. If yes, ask scope (personal/team/organization only; the internal library is the only Skills source)
2490
2490
  4. Guide them through defining review criteria based on the project's needs
2491
2491
  5. Save as a skill via \`skill_create\` after confirming selected-team context and server-side owner/admin/maintainer authority
2492
2492
  `.trim();
@@ -2567,7 +2567,7 @@ Before closing ANY story or updating documentation, you MUST search for team del
2567
2567
  **If NO delivery standards are found:**
2568
2568
  1. Inform the user: "I didn't find delivery or documentation standards for your team."
2569
2569
  2. Suggest: "Would you like to create them? This ensures consistent documentation and delivery process."
2570
- 3. If yes, ask scope (personal/team/organization only; Marketplace is legacy read-only browsing/source material, never a write destination)
2570
+ 3. If yes, ask scope (personal/team/organization only; the internal library is the only Skills source)
2571
2571
  4. Guide them through defining the standards
2572
2572
  5. Save as a skill via \`skill_create\` after confirming selected-team context and server-side owner/admin/maintainer authority
2573
2573
  `.trim();
@@ -2637,94 +2637,6 @@ var agents = {
2637
2637
  "allye-deliver": allyeDeliverAgent
2638
2638
  };
2639
2639
 
2640
- // src/context.ts
2641
- import { readFileSync, existsSync } from "fs";
2642
- import { join } from "path";
2643
- import { homedir } from "os";
2644
- var MCP_URL = "https://mcp.allye.app/jsonrpc";
2645
- var cachedContext = null;
2646
- var cacheTimestamp = 0;
2647
- var CACHE_TTL = 5 * 60 * 1000;
2648
- function getAllyePat() {
2649
- const envPat = process.env.ALLYE_PAT || process.env.ALLYE_PAT_TOKEN;
2650
- if (envPat)
2651
- return envPat;
2652
- try {
2653
- const configPaths = [
2654
- join(process.cwd(), "opencode.json"),
2655
- join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "opencode", "opencode.json")
2656
- ];
2657
- for (const configPath of configPaths) {
2658
- if (existsSync(configPath)) {
2659
- const config = JSON.parse(readFileSync(configPath, "utf-8"));
2660
- const allyeMcp = config?.mcp?.["allye-mcp"];
2661
- if (allyeMcp?.headers?.Authorization) {
2662
- return allyeMcp.headers.Authorization.replace("Bearer ", "");
2663
- }
2664
- }
2665
- }
2666
- } catch {}
2667
- return null;
2668
- }
2669
- async function callInitialize(pat) {
2670
- try {
2671
- const response = await fetch(MCP_URL, {
2672
- method: "POST",
2673
- headers: {
2674
- "Content-Type": "application/json",
2675
- Authorization: `Bearer ${pat}`
2676
- },
2677
- body: JSON.stringify({
2678
- jsonrpc: "2.0",
2679
- id: 1,
2680
- method: "tools/call",
2681
- params: {
2682
- name: "initialize",
2683
- arguments: {
2684
- action: "init",
2685
- include_user_docs: true
2686
- }
2687
- }
2688
- }),
2689
- signal: AbortSignal.timeout(1e4)
2690
- });
2691
- if (!response.ok)
2692
- return null;
2693
- const data = await response.json();
2694
- const text = data?.result?.content?.[0]?.text;
2695
- return text || null;
2696
- } catch {
2697
- return null;
2698
- }
2699
- }
2700
- async function fetchAllyeContext() {
2701
- if (cachedContext && Date.now() - cacheTimestamp < CACHE_TTL) {
2702
- return cachedContext;
2703
- }
2704
- const pat = getAllyePat();
2705
- if (!pat)
2706
- return null;
2707
- const initResult = await callInitialize(pat);
2708
- if (!initResult)
2709
- return null;
2710
- const context = `<allye-context>
2711
- # Allye User Context (auto-loaded)
2712
-
2713
- ${initResult}
2714
-
2715
- ## Instructions
2716
-
2717
- You are connected to the Allye platform. The user context above was loaded automatically.
2718
- - You already know who the user is \u2014 greet them by their preferred name
2719
- - Search for relevant memories before starting work
2720
- - Load team-specific skills via \`skill_list\` for the current task
2721
- - Save session state before ending
2722
- </allye-context>`;
2723
- cachedContext = context;
2724
- cacheTimestamp = Date.now();
2725
- return context;
2726
- }
2727
-
2728
2640
  // src/index.ts
2729
2641
  var AllyePlugin = async () => ({
2730
2642
  config: async (config) => {
@@ -2732,12 +2644,6 @@ var AllyePlugin = async () => ({
2732
2644
  ...config.agent,
2733
2645
  ...agents
2734
2646
  };
2735
- },
2736
- "experimental.chat.system.transform": async (_input, output) => {
2737
- const context = await fetchAllyeContext();
2738
- if (context) {
2739
- output.system.push(context);
2740
- }
2741
2647
  }
2742
2648
  });
2743
2649
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allye-opencode",
3
- "version": "1.7.1",
3
+ "version": "1.8.0",
4
4
  "description": "Allye multi-agent plugin for OpenCode — planning, building, reviewing, and delivering with structured workflows",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",