@eldrex/openclaw
Advanced tools
+3
-1
@@ -69,3 +69,5 @@ "use strict"; | ||
| const errText = await response.text(); | ||
| throw new Error(`OpenClaw adapter run failed: ${response.status} - ${errText}`); | ||
| throw new Error( | ||
| `OpenClaw adapter run failed: ${response.status} - ${errText}` | ||
| ); | ||
| } | ||
@@ -72,0 +74,0 @@ return response.json(); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/trigger.ts","../src/action.ts"],"sourcesContent":["export { OpenClawAdapter, OpenClawSkillContext } from './adapter'\nexport { OpenClawTriggerEngine, OpenClawTriggerEvent } from './trigger'\nexport { OpenClawActionHandler } from './action'\n","export interface OpenClawSkillContext {\n inputs: {\n repository: string\n branch?: string\n since?: string\n persona?: string\n format?: string[]\n depth?: string\n language?: string\n }\n secrets?: Record<string, string>\n}\n\nexport class OpenClawAdapter {\n private gatewayUrl: string\n\n constructor(gatewayUrl = 'http://localhost:3737') {\n this.gatewayUrl = gatewayUrl\n }\n\n /**\n * Translates the OpenClaw skill input and calls the DevDiff Gateway endpoint.\n */\n async runSkill(ctx: OpenClawSkillContext): Promise<any> {\n const payload = {\n source: 'manual',\n repository: {\n path: ctx.inputs.repository,\n branch: ctx.inputs.branch || 'main',\n },\n change_range: ctx.inputs.since\n ? {\n from: ctx.inputs.since.split('..')[0] || '',\n to: ctx.inputs.since.split('..')[1] || '',\n }\n : undefined,\n config: {\n persona: ctx.inputs.persona || 'developer',\n formats: ctx.inputs.format || ['markdown'],\n depth: ctx.inputs.depth || 'standard',\n language: ctx.inputs.language || 'en',\n },\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (ctx.secrets?.['DEVDIFF_API_KEY']) {\n headers['X-API-Key'] = ctx.secrets['DEVDIFF_API_KEY']\n }\n\n const response = await fetch(`${this.gatewayUrl}/api/v1/analyze`, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n })\n\n if (!response.ok) {\n const errText = await response.text()\n throw new Error(`OpenClaw adapter run failed: ${response.status} - ${errText}`)\n }\n\n return response.json()\n }\n}\n","export interface OpenClawTriggerEvent {\n type: 'git_push' | 'pull_request' | 'scheduled' | 'manual'\n timestamp: string\n details: any\n}\n\nexport class OpenClawTriggerEngine {\n /**\n * Transforms raw git events or schedules into standardized OpenClaw trigger runs.\n */\n static processTrigger(event: OpenClawTriggerEvent): { shouldRun: boolean; skillInputs: any } {\n if (event.type === 'git_push') {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n branch: event.details.branch || 'main',\n since: `${event.details.before || 'HEAD~1'}..${event.details.after || 'HEAD'}`,\n },\n }\n }\n \n if (event.type === 'pull_request') {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n since: `${event.details.baseSha}..${event.details.headSha}`,\n persona: 'compliance',\n },\n }\n }\n\n // Default manuals/schedules\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n since: 'HEAD~1..HEAD',\n },\n }\n }\n}\n","import { OpenClawAdapter, OpenClawSkillContext } from './adapter'\n\nexport class OpenClawActionHandler {\n private adapter: OpenClawAdapter\n\n constructor(gatewayUrl?: string) {\n this.adapter = new OpenClawAdapter(gatewayUrl)\n }\n\n /**\n * Executes the pipeline skill action and returns the output variables for OpenClaw.\n */\n async handle(context: OpenClawSkillContext): Promise<{\n changelog: string\n mermaid?: string\n summary: string\n stats: any\n }> {\n const gatewayResult = await this.adapter.runSkill(context)\n \n return {\n changelog: gatewayResult.results?.changelog || '',\n mermaid: gatewayResult.results?.mermaid || '',\n summary: gatewayResult.results?.markdown || '',\n stats: gatewayResult.results?.stats || {},\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,aAAa,yBAAyB;AAChD,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,KAAyC;AACtD,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,IAAI,OAAO;AAAA,QACjB,QAAQ,IAAI,OAAO,UAAU;AAAA,MAC/B;AAAA,MACA,cAAc,IAAI,OAAO,QACrB;AAAA,QACE,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,QACzC,IAAI,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,MACzC,IACA;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS,IAAI,OAAO,WAAW;AAAA,QAC/B,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU;AAAA,QACzC,OAAO,IAAI,OAAO,SAAS;AAAA,QAC3B,UAAU,IAAI,OAAO,YAAY;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AAEA,QAAI,IAAI,UAAU,iBAAiB,GAAG;AACpC,cAAQ,WAAW,IAAI,IAAI,QAAQ,iBAAiB;AAAA,IACtD;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,mBAAmB;AAAA,MAChE,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,IAC9B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,UAAU,MAAM,SAAS,KAAK;AACpC,YAAM,IAAI,MAAM,gCAAgC,SAAS,MAAM,MAAM,OAAO,EAAE;AAAA,IAChF;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;AC3DO,IAAM,wBAAN,MAA4B;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,eAAe,OAAuE;AAC3F,QAAI,MAAM,SAAS,YAAY;AAC7B,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,QAAQ,MAAM,QAAQ,UAAU;AAAA,UAChC,OAAO,GAAG,MAAM,QAAQ,UAAU,QAAQ,KAAK,MAAM,QAAQ,SAAS,MAAM;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,gBAAgB;AACjC,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,OAAO,GAAG,MAAM,QAAQ,OAAO,KAAK,MAAM,QAAQ,OAAO;AAAA,UACzD,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,aAAa;AAAA,QACX,YAAY,MAAM,QAAQ,YAAY;AAAA,QACtC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;;;ACxCO,IAAM,wBAAN,MAA4B;AAAA,EACzB;AAAA,EAER,YAAY,YAAqB;AAC/B,SAAK,UAAU,IAAI,gBAAgB,UAAU;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,SAKV;AACD,UAAM,gBAAgB,MAAM,KAAK,QAAQ,SAAS,OAAO;AAEzD,WAAO;AAAA,MACL,WAAW,cAAc,SAAS,aAAa;AAAA,MAC/C,SAAS,cAAc,SAAS,WAAW;AAAA,MAC3C,SAAS,cAAc,SAAS,YAAY;AAAA,MAC5C,OAAO,cAAc,SAAS,SAAS,CAAC;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]} | ||
| {"version":3,"sources":["../src/index.ts","../src/adapter.ts","../src/trigger.ts","../src/action.ts"],"sourcesContent":["export { OpenClawAdapter, OpenClawSkillContext } from \"./adapter\";\nexport { OpenClawTriggerEngine, OpenClawTriggerEvent } from \"./trigger\";\nexport { OpenClawActionHandler } from \"./action\";\n","export interface OpenClawSkillContext {\n inputs: {\n repository: string;\n branch?: string;\n since?: string;\n persona?: string;\n format?: string[];\n depth?: string;\n language?: string;\n };\n secrets?: Record<string, string>;\n}\n\nexport class OpenClawAdapter {\n private gatewayUrl: string;\n\n constructor(gatewayUrl = \"http://localhost:3737\") {\n this.gatewayUrl = gatewayUrl;\n }\n\n /**\n * Translates the OpenClaw skill input and calls the DevDiff Gateway endpoint.\n */\n async runSkill(ctx: OpenClawSkillContext): Promise<any> {\n const payload = {\n source: \"manual\",\n repository: {\n path: ctx.inputs.repository,\n branch: ctx.inputs.branch || \"main\",\n },\n change_range: ctx.inputs.since\n ? {\n from: ctx.inputs.since.split(\"..\")[0] || \"\",\n to: ctx.inputs.since.split(\"..\")[1] || \"\",\n }\n : undefined,\n config: {\n persona: ctx.inputs.persona || \"developer\",\n formats: ctx.inputs.format || [\"markdown\"],\n depth: ctx.inputs.depth || \"standard\",\n language: ctx.inputs.language || \"en\",\n },\n };\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (ctx.secrets?.[\"DEVDIFF_API_KEY\"]) {\n headers[\"X-API-Key\"] = ctx.secrets[\"DEVDIFF_API_KEY\"];\n }\n\n const response = await fetch(`${this.gatewayUrl}/api/v1/analyze`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n const errText = await response.text();\n throw new Error(\n `OpenClaw adapter run failed: ${response.status} - ${errText}`,\n );\n }\n\n return response.json();\n }\n}\n","export interface OpenClawTriggerEvent {\n type: \"git_push\" | \"pull_request\" | \"scheduled\" | \"manual\";\n timestamp: string;\n details: any;\n}\n\nexport class OpenClawTriggerEngine {\n /**\n * Transforms raw git events or schedules into standardized OpenClaw trigger runs.\n */\n static processTrigger(event: OpenClawTriggerEvent): {\n shouldRun: boolean;\n skillInputs: any;\n } {\n if (event.type === \"git_push\") {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n branch: event.details.branch || \"main\",\n since: `${event.details.before || \"HEAD~1\"}..${event.details.after || \"HEAD\"}`,\n },\n };\n }\n\n if (event.type === \"pull_request\") {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n since: `${event.details.baseSha}..${event.details.headSha}`,\n persona: \"compliance\",\n },\n };\n }\n\n // Default manuals/schedules\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n since: \"HEAD~1..HEAD\",\n },\n };\n }\n}\n","import { OpenClawAdapter, OpenClawSkillContext } from \"./adapter\";\n\nexport class OpenClawActionHandler {\n private adapter: OpenClawAdapter;\n\n constructor(gatewayUrl?: string) {\n this.adapter = new OpenClawAdapter(gatewayUrl);\n }\n\n /**\n * Executes the pipeline skill action and returns the output variables for OpenClaw.\n */\n async handle(context: OpenClawSkillContext): Promise<{\n changelog: string;\n mermaid?: string;\n summary: string;\n stats: any;\n }> {\n const gatewayResult = await this.adapter.runSkill(context);\n\n return {\n changelog: gatewayResult.results?.changelog || \"\",\n mermaid: gatewayResult.results?.mermaid || \"\",\n summary: gatewayResult.results?.markdown || \"\",\n stats: gatewayResult.results?.stats || {},\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACaO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,aAAa,yBAAyB;AAChD,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,KAAyC;AACtD,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,IAAI,OAAO;AAAA,QACjB,QAAQ,IAAI,OAAO,UAAU;AAAA,MAC/B;AAAA,MACA,cAAc,IAAI,OAAO,QACrB;AAAA,QACE,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,QACzC,IAAI,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,MACzC,IACA;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS,IAAI,OAAO,WAAW;AAAA,QAC/B,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU;AAAA,QACzC,OAAO,IAAI,OAAO,SAAS;AAAA,QAC3B,UAAU,IAAI,OAAO,YAAY;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AAEA,QAAI,IAAI,UAAU,iBAAiB,GAAG;AACpC,cAAQ,WAAW,IAAI,IAAI,QAAQ,iBAAiB;AAAA,IACtD;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,mBAAmB;AAAA,MAChE,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,IAC9B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,UAAU,MAAM,SAAS,KAAK;AACpC,YAAM,IAAI;AAAA,QACR,gCAAgC,SAAS,MAAM,MAAM,OAAO;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;AC7DO,IAAM,wBAAN,MAA4B;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,eAAe,OAGpB;AACA,QAAI,MAAM,SAAS,YAAY;AAC7B,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,QAAQ,MAAM,QAAQ,UAAU;AAAA,UAChC,OAAO,GAAG,MAAM,QAAQ,UAAU,QAAQ,KAAK,MAAM,QAAQ,SAAS,MAAM;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,gBAAgB;AACjC,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,OAAO,GAAG,MAAM,QAAQ,OAAO,KAAK,MAAM,QAAQ,OAAO;AAAA,UACzD,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,aAAa;AAAA,QACX,YAAY,MAAM,QAAQ,YAAY;AAAA,QACtC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;;;AC3CO,IAAM,wBAAN,MAA4B;AAAA,EACzB;AAAA,EAER,YAAY,YAAqB;AAC/B,SAAK,UAAU,IAAI,gBAAgB,UAAU;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,SAKV;AACD,UAAM,gBAAgB,MAAM,KAAK,QAAQ,SAAS,OAAO;AAEzD,WAAO;AAAA,MACL,WAAW,cAAc,SAAS,aAAa;AAAA,MAC/C,SAAS,cAAc,SAAS,WAAW;AAAA,MAC3C,SAAS,cAAc,SAAS,YAAY;AAAA,MAC5C,OAAO,cAAc,SAAS,SAAS,CAAC;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]} |
+1
-1
@@ -23,3 +23,3 @@ interface OpenClawSkillContext { | ||
| interface OpenClawTriggerEvent { | ||
| type: 'git_push' | 'pull_request' | 'scheduled' | 'manual'; | ||
| type: "git_push" | "pull_request" | "scheduled" | "manual"; | ||
| timestamp: string; | ||
@@ -26,0 +26,0 @@ details: any; |
+1
-1
@@ -23,3 +23,3 @@ interface OpenClawSkillContext { | ||
| interface OpenClawTriggerEvent { | ||
| type: 'git_push' | 'pull_request' | 'scheduled' | 'manual'; | ||
| type: "git_push" | "pull_request" | "scheduled" | "manual"; | ||
| timestamp: string; | ||
@@ -26,0 +26,0 @@ details: any; |
+3
-1
@@ -41,3 +41,5 @@ // src/adapter.ts | ||
| const errText = await response.text(); | ||
| throw new Error(`OpenClaw adapter run failed: ${response.status} - ${errText}`); | ||
| throw new Error( | ||
| `OpenClaw adapter run failed: ${response.status} - ${errText}` | ||
| ); | ||
| } | ||
@@ -44,0 +46,0 @@ return response.json(); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/adapter.ts","../src/trigger.ts","../src/action.ts"],"sourcesContent":["export interface OpenClawSkillContext {\n inputs: {\n repository: string\n branch?: string\n since?: string\n persona?: string\n format?: string[]\n depth?: string\n language?: string\n }\n secrets?: Record<string, string>\n}\n\nexport class OpenClawAdapter {\n private gatewayUrl: string\n\n constructor(gatewayUrl = 'http://localhost:3737') {\n this.gatewayUrl = gatewayUrl\n }\n\n /**\n * Translates the OpenClaw skill input and calls the DevDiff Gateway endpoint.\n */\n async runSkill(ctx: OpenClawSkillContext): Promise<any> {\n const payload = {\n source: 'manual',\n repository: {\n path: ctx.inputs.repository,\n branch: ctx.inputs.branch || 'main',\n },\n change_range: ctx.inputs.since\n ? {\n from: ctx.inputs.since.split('..')[0] || '',\n to: ctx.inputs.since.split('..')[1] || '',\n }\n : undefined,\n config: {\n persona: ctx.inputs.persona || 'developer',\n formats: ctx.inputs.format || ['markdown'],\n depth: ctx.inputs.depth || 'standard',\n language: ctx.inputs.language || 'en',\n },\n }\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (ctx.secrets?.['DEVDIFF_API_KEY']) {\n headers['X-API-Key'] = ctx.secrets['DEVDIFF_API_KEY']\n }\n\n const response = await fetch(`${this.gatewayUrl}/api/v1/analyze`, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n })\n\n if (!response.ok) {\n const errText = await response.text()\n throw new Error(`OpenClaw adapter run failed: ${response.status} - ${errText}`)\n }\n\n return response.json()\n }\n}\n","export interface OpenClawTriggerEvent {\n type: 'git_push' | 'pull_request' | 'scheduled' | 'manual'\n timestamp: string\n details: any\n}\n\nexport class OpenClawTriggerEngine {\n /**\n * Transforms raw git events or schedules into standardized OpenClaw trigger runs.\n */\n static processTrigger(event: OpenClawTriggerEvent): { shouldRun: boolean; skillInputs: any } {\n if (event.type === 'git_push') {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n branch: event.details.branch || 'main',\n since: `${event.details.before || 'HEAD~1'}..${event.details.after || 'HEAD'}`,\n },\n }\n }\n \n if (event.type === 'pull_request') {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n since: `${event.details.baseSha}..${event.details.headSha}`,\n persona: 'compliance',\n },\n }\n }\n\n // Default manuals/schedules\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || '.',\n since: 'HEAD~1..HEAD',\n },\n }\n }\n}\n","import { OpenClawAdapter, OpenClawSkillContext } from './adapter'\n\nexport class OpenClawActionHandler {\n private adapter: OpenClawAdapter\n\n constructor(gatewayUrl?: string) {\n this.adapter = new OpenClawAdapter(gatewayUrl)\n }\n\n /**\n * Executes the pipeline skill action and returns the output variables for OpenClaw.\n */\n async handle(context: OpenClawSkillContext): Promise<{\n changelog: string\n mermaid?: string\n summary: string\n stats: any\n }> {\n const gatewayResult = await this.adapter.runSkill(context)\n \n return {\n changelog: gatewayResult.results?.changelog || '',\n mermaid: gatewayResult.results?.mermaid || '',\n summary: gatewayResult.results?.markdown || '',\n stats: gatewayResult.results?.stats || {},\n }\n }\n}\n"],"mappings":";AAaO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,aAAa,yBAAyB;AAChD,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,KAAyC;AACtD,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,IAAI,OAAO;AAAA,QACjB,QAAQ,IAAI,OAAO,UAAU;AAAA,MAC/B;AAAA,MACA,cAAc,IAAI,OAAO,QACrB;AAAA,QACE,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,QACzC,IAAI,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,MACzC,IACA;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS,IAAI,OAAO,WAAW;AAAA,QAC/B,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU;AAAA,QACzC,OAAO,IAAI,OAAO,SAAS;AAAA,QAC3B,UAAU,IAAI,OAAO,YAAY;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AAEA,QAAI,IAAI,UAAU,iBAAiB,GAAG;AACpC,cAAQ,WAAW,IAAI,IAAI,QAAQ,iBAAiB;AAAA,IACtD;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,mBAAmB;AAAA,MAChE,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,IAC9B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,UAAU,MAAM,SAAS,KAAK;AACpC,YAAM,IAAI,MAAM,gCAAgC,SAAS,MAAM,MAAM,OAAO,EAAE;AAAA,IAChF;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;AC3DO,IAAM,wBAAN,MAA4B;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,eAAe,OAAuE;AAC3F,QAAI,MAAM,SAAS,YAAY;AAC7B,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,QAAQ,MAAM,QAAQ,UAAU;AAAA,UAChC,OAAO,GAAG,MAAM,QAAQ,UAAU,QAAQ,KAAK,MAAM,QAAQ,SAAS,MAAM;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,gBAAgB;AACjC,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,OAAO,GAAG,MAAM,QAAQ,OAAO,KAAK,MAAM,QAAQ,OAAO;AAAA,UACzD,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,aAAa;AAAA,QACX,YAAY,MAAM,QAAQ,YAAY;AAAA,QACtC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;;;ACxCO,IAAM,wBAAN,MAA4B;AAAA,EACzB;AAAA,EAER,YAAY,YAAqB;AAC/B,SAAK,UAAU,IAAI,gBAAgB,UAAU;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,SAKV;AACD,UAAM,gBAAgB,MAAM,KAAK,QAAQ,SAAS,OAAO;AAEzD,WAAO;AAAA,MACL,WAAW,cAAc,SAAS,aAAa;AAAA,MAC/C,SAAS,cAAc,SAAS,WAAW;AAAA,MAC3C,SAAS,cAAc,SAAS,YAAY;AAAA,MAC5C,OAAO,cAAc,SAAS,SAAS,CAAC;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]} | ||
| {"version":3,"sources":["../src/adapter.ts","../src/trigger.ts","../src/action.ts"],"sourcesContent":["export interface OpenClawSkillContext {\n inputs: {\n repository: string;\n branch?: string;\n since?: string;\n persona?: string;\n format?: string[];\n depth?: string;\n language?: string;\n };\n secrets?: Record<string, string>;\n}\n\nexport class OpenClawAdapter {\n private gatewayUrl: string;\n\n constructor(gatewayUrl = \"http://localhost:3737\") {\n this.gatewayUrl = gatewayUrl;\n }\n\n /**\n * Translates the OpenClaw skill input and calls the DevDiff Gateway endpoint.\n */\n async runSkill(ctx: OpenClawSkillContext): Promise<any> {\n const payload = {\n source: \"manual\",\n repository: {\n path: ctx.inputs.repository,\n branch: ctx.inputs.branch || \"main\",\n },\n change_range: ctx.inputs.since\n ? {\n from: ctx.inputs.since.split(\"..\")[0] || \"\",\n to: ctx.inputs.since.split(\"..\")[1] || \"\",\n }\n : undefined,\n config: {\n persona: ctx.inputs.persona || \"developer\",\n formats: ctx.inputs.format || [\"markdown\"],\n depth: ctx.inputs.depth || \"standard\",\n language: ctx.inputs.language || \"en\",\n },\n };\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (ctx.secrets?.[\"DEVDIFF_API_KEY\"]) {\n headers[\"X-API-Key\"] = ctx.secrets[\"DEVDIFF_API_KEY\"];\n }\n\n const response = await fetch(`${this.gatewayUrl}/api/v1/analyze`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(payload),\n });\n\n if (!response.ok) {\n const errText = await response.text();\n throw new Error(\n `OpenClaw adapter run failed: ${response.status} - ${errText}`,\n );\n }\n\n return response.json();\n }\n}\n","export interface OpenClawTriggerEvent {\n type: \"git_push\" | \"pull_request\" | \"scheduled\" | \"manual\";\n timestamp: string;\n details: any;\n}\n\nexport class OpenClawTriggerEngine {\n /**\n * Transforms raw git events or schedules into standardized OpenClaw trigger runs.\n */\n static processTrigger(event: OpenClawTriggerEvent): {\n shouldRun: boolean;\n skillInputs: any;\n } {\n if (event.type === \"git_push\") {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n branch: event.details.branch || \"main\",\n since: `${event.details.before || \"HEAD~1\"}..${event.details.after || \"HEAD\"}`,\n },\n };\n }\n\n if (event.type === \"pull_request\") {\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n since: `${event.details.baseSha}..${event.details.headSha}`,\n persona: \"compliance\",\n },\n };\n }\n\n // Default manuals/schedules\n return {\n shouldRun: true,\n skillInputs: {\n repository: event.details.repoPath || \".\",\n since: \"HEAD~1..HEAD\",\n },\n };\n }\n}\n","import { OpenClawAdapter, OpenClawSkillContext } from \"./adapter\";\n\nexport class OpenClawActionHandler {\n private adapter: OpenClawAdapter;\n\n constructor(gatewayUrl?: string) {\n this.adapter = new OpenClawAdapter(gatewayUrl);\n }\n\n /**\n * Executes the pipeline skill action and returns the output variables for OpenClaw.\n */\n async handle(context: OpenClawSkillContext): Promise<{\n changelog: string;\n mermaid?: string;\n summary: string;\n stats: any;\n }> {\n const gatewayResult = await this.adapter.runSkill(context);\n\n return {\n changelog: gatewayResult.results?.changelog || \"\",\n mermaid: gatewayResult.results?.mermaid || \"\",\n summary: gatewayResult.results?.markdown || \"\",\n stats: gatewayResult.results?.stats || {},\n };\n }\n}\n"],"mappings":";AAaO,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,aAAa,yBAAyB;AAChD,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAS,KAAyC;AACtD,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,MACR,YAAY;AAAA,QACV,MAAM,IAAI,OAAO;AAAA,QACjB,QAAQ,IAAI,OAAO,UAAU;AAAA,MAC/B;AAAA,MACA,cAAc,IAAI,OAAO,QACrB;AAAA,QACE,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,QACzC,IAAI,IAAI,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC,KAAK;AAAA,MACzC,IACA;AAAA,MACJ,QAAQ;AAAA,QACN,SAAS,IAAI,OAAO,WAAW;AAAA,QAC/B,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU;AAAA,QACzC,OAAO,IAAI,OAAO,SAAS;AAAA,QAC3B,UAAU,IAAI,OAAO,YAAY;AAAA,MACnC;AAAA,IACF;AAEA,UAAM,UAAkC;AAAA,MACtC,gBAAgB;AAAA,IAClB;AAEA,QAAI,IAAI,UAAU,iBAAiB,GAAG;AACpC,cAAQ,WAAW,IAAI,IAAI,QAAQ,iBAAiB;AAAA,IACtD;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,UAAU,mBAAmB;AAAA,MAChE,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU,OAAO;AAAA,IAC9B,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,UAAU,MAAM,SAAS,KAAK;AACpC,YAAM,IAAI;AAAA,QACR,gCAAgC,SAAS,MAAM,MAAM,OAAO;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;AC7DO,IAAM,wBAAN,MAA4B;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,eAAe,OAGpB;AACA,QAAI,MAAM,SAAS,YAAY;AAC7B,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,QAAQ,MAAM,QAAQ,UAAU;AAAA,UAChC,OAAO,GAAG,MAAM,QAAQ,UAAU,QAAQ,KAAK,MAAM,QAAQ,SAAS,MAAM;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAM,SAAS,gBAAgB;AACjC,aAAO;AAAA,QACL,WAAW;AAAA,QACX,aAAa;AAAA,UACX,YAAY,MAAM,QAAQ,YAAY;AAAA,UACtC,OAAO,GAAG,MAAM,QAAQ,OAAO,KAAK,MAAM,QAAQ,OAAO;AAAA,UACzD,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAGA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,aAAa;AAAA,QACX,YAAY,MAAM,QAAQ,YAAY;AAAA,QACtC,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;;;AC3CO,IAAM,wBAAN,MAA4B;AAAA,EACzB;AAAA,EAER,YAAY,YAAqB;AAC/B,SAAK,UAAU,IAAI,gBAAgB,UAAU;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,SAKV;AACD,UAAM,gBAAgB,MAAM,KAAK,QAAQ,SAAS,OAAO;AAEzD,WAAO;AAAA,MACL,WAAW,cAAc,SAAS,aAAa;AAAA,MAC/C,SAAS,cAAc,SAAS,WAAW;AAAA,MAC3C,SAAS,cAAc,SAAS,YAAY;AAAA,MAC5C,OAAO,cAAc,SAAS,SAAS,CAAC;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]} |
+3
-3
| { | ||
| "name": "@eldrex/openclaw", | ||
| "version": "1.0.0", | ||
| "version": "1.0.2", | ||
| "description": "OpenClaw integration and skill adapter for DevDiff", | ||
@@ -21,4 +21,4 @@ "type": "module", | ||
| "dependencies": { | ||
| "@eldrex/core": "1.0.0", | ||
| "@eldrex/gateway": "1.0.0" | ||
| "@eldrex/gateway": "1.0.2", | ||
| "@eldrex/core": "1.0.2" | ||
| }, | ||
@@ -25,0 +25,0 @@ "devDependencies": { |
+18
-3
@@ -24,3 +24,14 @@ --- | ||
| default: developer | ||
| enum: [developer, ceo, educator, data-analyst, robot, journalist, pm, compliance, custom] | ||
| enum: | ||
| [ | ||
| developer, | ||
| ceo, | ||
| educator, | ||
| data-analyst, | ||
| robot, | ||
| journalist, | ||
| pm, | ||
| compliance, | ||
| custom, | ||
| ] | ||
| format: | ||
@@ -56,2 +67,3 @@ type: string[] | ||
| ## Description | ||
| Analyzes git repositories and generates intelligent, persona-aware changelogs, | ||
@@ -79,5 +91,6 @@ diagrams, and reports. Supports 8+ output formats and 10+ AI personalities. | ||
| ### 1. Daily Standup Digest | ||
| ```yaml | ||
| name: Morning Standup Report | ||
| schedule: "0 8 * * 1-5" # 8 AM weekdays | ||
| schedule: "0 8 * * 1-5" # 8 AM weekdays | ||
| skill: devdiff | ||
@@ -94,5 +107,6 @@ inputs: | ||
| ### 2. Weekly Architecture Review | ||
| ```yaml | ||
| name: Weekly Architecture Deep-Dive | ||
| schedule: "0 14 * * 5" # Friday 2 PM | ||
| schedule: "0 14 * * 5" # Friday 2 PM | ||
| skill: devdiff | ||
@@ -110,2 +124,3 @@ inputs: | ||
| ### 3. Security Audit on Every PR | ||
| ```yaml | ||
@@ -112,0 +127,0 @@ name: Security-Aware PR Review |
27147
1.51%287
1.41%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
Updated
Updated