@maestria/opencode 0.7.7 → 0.7.8
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/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/package.json +7 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Plugin } from "@opencode-ai/plugin";
|
|
2
2
|
//#region src/index.d.ts
|
|
3
|
-
declare const MaestriaPlugin: Plugin;
|
|
3
|
+
export declare const MaestriaPlugin: Plugin;
|
|
4
4
|
//#endregion
|
|
5
|
-
export { MaestriaPlugin
|
|
5
|
+
export { MaestriaPlugin as default };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{merge as e}from"es-toolkit";import{readFileSync as t,readdirSync as n}from"node:fs";import r from"node:path";import{parse as i}from"yaml";import{z as a}from"zod";const o=[`fein`,`sonar`,`blitz`],s={blitz:`[MODE: blitz]`,fein:`[MODE: fein]`,sonar:`[MODE: sonar]`},c={blitz:1,fein:3,sonar:2},l=/```[\s\S]*?```|`[^`]*`/gu,u=e=>{let t=[],n;for(l.lastIndex=0;(n=l.exec(e))!==null;)t.push([n.index,n.index+n[0].length]);return t},d=(e,t)=>t.some(([t,n])=>e>=t&&e<n),f=e=>{let t=e.indexOf(`## MODE:`);return t===-1?`${e.replace(/\s+$/u,``)}\n`:`${e.slice(t).replace(/\s+$/u,``)}\n`},p=e=>e.replaceAll(/[.*+?^${}()|[\]\\]/gu,`\\$&`),m=e=>RegExp(`\\b${p(e)}\\b`,`giu`),h=e=>o.includes(e),g=e=>h(e)?s[e]:``,_=(e,t)=>{if(!e)return null;let n=u(e),r=t?new Set([...t].map(e=>e.toLowerCase())):void 0,i=null;for(let t of o){if(r!=null&&r.has(t))continue;let a=m(t),o;for(;(o=a.exec(e))!==null;)d(o.index,n)||(i===null||c[t]>c[i.mode])&&(i={index:o.index,keyword:o[0],mode:t})}return i},v=(e,t)=>(e.slice(0,t.index)+e.slice(t.index+t.keyword.length).replace(/^:\s*/u,``)).replaceAll(/ {2,}/gu,` `).trim(),y=import.meta.dirname,b=r.resolve(y,`..`),x=r.join(b,`agents`),S=r.join(b,`agents`,`commands`),C=r.join(b,`rules`,`AGENTS.md`),w=
|
|
2
|
-
`))},
|
|
1
|
+
import{merge as e}from"es-toolkit";import{readFileSync as t,readdirSync as n}from"node:fs";import r from"node:path";import{parse as i}from"yaml";import{z as a}from"zod";const o=[`fein`,`sonar`,`blitz`],s={blitz:`[MODE: blitz]`,fein:`[MODE: fein]`,sonar:`[MODE: sonar]`},c={blitz:1,fein:3,sonar:2},l=/```[\s\S]*?```|`[^`]*`/gu,u=e=>{let t=[],n;for(l.lastIndex=0;(n=l.exec(e))!==null;)t.push([n.index,n.index+n[0].length]);return t},d=(e,t)=>t.some(([t,n])=>e>=t&&e<n),f=e=>{let t=e.indexOf(`## MODE:`);return t===-1?`${e.replace(/\s+$/u,``)}\n`:`${e.slice(t).replace(/\s+$/u,``)}\n`},p=e=>e.replaceAll(/[.*+?^${}()|[\]\\]/gu,`\\$&`),m=e=>RegExp(`\\b${p(e)}\\b`,`giu`),h=e=>o.includes(e),g=e=>h(e)?s[e]:``,_=(e,t)=>{if(!e)return null;let n=u(e),r=t?new Set([...t].map(e=>e.toLowerCase())):void 0,i=null;for(let t of o){if(r!=null&&r.has(t))continue;let a=m(t),o;for(;(o=a.exec(e))!==null;)d(o.index,n)||(i===null||c[t]>c[i.mode])&&(i={index:o.index,keyword:o[0],mode:t})}return i},v=(e,t)=>(e.slice(0,t.index)+e.slice(t.index+t.keyword.length).replace(/^:\s*/u,``)).replaceAll(/ {2,}/gu,` `).trim(),y=import.meta.dirname,b=r.resolve(y,`..`),x=r.join(b,`agents`),S=r.join(b,`agents`,`commands`),C=r.join(b,`rules`,`AGENTS.md`),w=e=>{let n=t(r.resolve(S,`${e}.md`),`utf-8`);return f(n)},T=new Proxy({},{get(e,t,n){if(typeof t==`string`&&h(t)){if(!(t in e))try{e[t]=w(t)}catch(n){console.warn(`[maestria] Failed to load mode prompt "${t}":`,n),e[t]=``}return e[t]}return Reflect.get(e,t,n)}}),E=(e,t)=>{let n=_(e,t);return n===null?null:{index:n.index,keyword:n.keyword,marker:g(n.mode),mode:n.mode,prompt:T[n.mode]}},D=(e,t)=>v(e,t),O=e=>h(e)?T[e]:``,k=e=>g(e),A=a.enum(o),j=a.object({modes:a.object({disabledKeywords:a.array(A).optional()}).optional()}),M=e=>typeof e==`object`&&!!e&&!Array.isArray(e),N=e=>e===`all`||e===`primary`||e===`subagent`,P=e=>{if(!M(e))return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r;return t},F=e=>{let t=i(e),n=M(t)?t:{};return{color:typeof n.color==`string`?n.color:void 0,description:typeof n.description==`string`?n.description:``,maxSteps:n.maxSteps!==void 0&&n.maxSteps!==null&&n.maxSteps!==``?Number(n.maxSteps):void 0,mode:N(n.mode)?n.mode:`subagent`,permission:P(n.permission)}},I=e=>{let n=t(e,`utf-8`),i=r.basename(e,`.md`),a=n.split(`---`);if(a.length<3)throw Error(`Invalid agent file: ${e} - missing frontmatter`);let o=F(a[1].trim()),s=a.slice(2).join(`---`).trim(),c={description:o.description,mode:o.mode,permission:o.permission,prompt:s};return o.color!==void 0&&o.color!==null&&o.color!==``&&(c.color=o.color),o.maxSteps!==void 0&&o.maxSteps!==null&&o.maxSteps!==0&&(c.maxSteps=o.maxSteps),{config:c,name:i}},L=()=>{try{let e=n(x).filter(e=>e.endsWith(`.md`)),t={};for(let n of e)try{let{name:e,config:i}=I(r.join(x,n));t[e]=i}catch(e){console.warn(`[maestria] Failed to parse agent file "${n}":`,e)}return t}catch(e){throw console.error(`[maestria] Failed to read agents directory:`,e),Error(`[maestria] Failed to load agents from "${x}": ${e instanceof Error?e.message:String(e)}`,{cause:e})}},R=(e,t,n)=>{if(e.agent!==`orchestrator`)return;let r=t.parts.find(e=>e.type===`text`);if(r===void 0)return;let i=E(r.text,n);i!==null&&(r.text=[k(i.mode),``,O(i.mode),``,D(r.text,i)].join(`
|
|
2
|
+
`))},z=(t,n)=>{t.agent=e(t.agent??{},n),t.instructions=[...t.instructions??[],C]},B=e=>{e.context.push(`Session was compacted. Task tracking is maintained via todowrite. Active context (files, decisions, blockers) was captured before compaction. Continue where you left off.`)},V=async(e,t)=>{let n=j.parse(t??{}),r=new Set((n.modes?.disabledKeywords??[]).map(e=>e.toLowerCase())),i=L();return await Promise.resolve(),{"chat.message":async(e,t)=>{R(e,t,r),await Promise.resolve()},config:async e=>{z(e,i),await Promise.resolve()},"experimental.session.compacting":async(e,t)=>{B(t),await Promise.resolve()}}};export{V as MaestriaPlugin,V as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maestria/opencode",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.8",
|
|
4
4
|
"description": "OpenCode plugin encoding AI engineering praxis: rules, agents, and workflow discipline.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -39,16 +39,16 @@
|
|
|
39
39
|
"provenance": true
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"es-toolkit": "^1.
|
|
42
|
+
"es-toolkit": "^1.52.0",
|
|
43
43
|
"yaml": "^2.9.0",
|
|
44
|
-
"zod": "^4.
|
|
44
|
+
"zod": "^4.6.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
47
|
+
"@maestria/shared-mode": "0.1.0",
|
|
48
|
+
"@opencode-ai/plugin": "^1.18.30",
|
|
49
|
+
"@types/node": "^26.5.1",
|
|
49
50
|
"typescript": "^7.0.2",
|
|
50
|
-
"vitest": "4.1.11"
|
|
51
|
-
"@maestria/shared-mode": "0.1.0"
|
|
51
|
+
"vitest": "4.1.11"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"@opencode-ai/plugin": "^1.18.4"
|