@devflow-tools/claude-code-plugin 0.16.10 → 0.16.12
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/.claude-plugin/plugin.json +1 -1
- package/dist/command-registry.json +39 -13
- package/dist/hooks/hook-client.js +5 -5
- package/dist/hooks/hook-daemon.js +32 -14
- package/dist/hooks/memory-snapshot-cache.js +11 -0
- package/dist/hooks/post-tool-use-failure.js +2 -2
- package/dist/hooks/post-tool-use.js +6 -3
- package/dist/hooks/pre-compact.js +2 -2
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/session-end.js +2 -2
- package/dist/hooks/stop.js +15 -2
- package/dist/hooks/user-prompt-submit.js +14 -5
- package/hooks/hooks.json +3 -2
- package/hooks/session-start +66 -82
- package/package.json +8 -8
- package/skills/devflow:animation/SKILL.md +3 -1
- package/skills/devflow:css/SKILL.md +3 -1
- package/skills/devflow:docker/SKILL.md +3 -1
- package/skills/devflow:doctor/SKILL.md +1 -1
- package/skills/devflow:electron/SKILL.md +3 -1
- package/skills/devflow:git/SKILL.md +3 -1
- package/skills/devflow:graphql/SKILL.md +3 -1
- package/skills/devflow:nest/SKILL.md +3 -1
- package/skills/devflow:nextjs/SKILL.md +3 -1
- package/skills/devflow:performance/SKILL.md +3 -1
- package/skills/devflow:react/SKILL.md +14 -4
- package/skills/devflow:tailwind/SKILL.md +3 -1
- package/skills/devflow:taro/SKILL.md +3 -1
- package/skills/devflow:ui-layout/SKILL.md +3 -1
- package/skills/devflow:vue/SKILL.md +3 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devflow",
|
|
3
3
|
"description": "DevFlow — Developer Intelligence Platform: project context, code graph, knowledge base, memory engine, and workflow automation with 14 domain plugins",
|
|
4
|
-
"version": "0.16.
|
|
4
|
+
"version": "0.16.11",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "DevFlow"
|
|
7
7
|
},
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"WebFetch"
|
|
20
20
|
],
|
|
21
21
|
"source": "core",
|
|
22
|
-
"sourceVersion": "0.16.
|
|
22
|
+
"sourceVersion": "0.16.11",
|
|
23
23
|
"requiresContext": true,
|
|
24
24
|
"evidenceMode": "mixed",
|
|
25
25
|
"skillPath": "skills/devflow:context/SKILL.md"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"Explore"
|
|
39
39
|
],
|
|
40
40
|
"source": "core",
|
|
41
|
-
"sourceVersion": "0.16.
|
|
41
|
+
"sourceVersion": "0.16.11",
|
|
42
42
|
"requiresContext": true,
|
|
43
43
|
"evidenceMode": "mixed",
|
|
44
44
|
"skillPath": "skills/devflow:graph/SKILL.md"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"WebFetch"
|
|
53
53
|
],
|
|
54
54
|
"source": "core",
|
|
55
|
-
"sourceVersion": "0.16.
|
|
55
|
+
"sourceVersion": "0.16.11",
|
|
56
56
|
"requiresContext": true,
|
|
57
57
|
"evidenceMode": "mixed",
|
|
58
58
|
"skillPath": "skills/devflow:knowledge/SKILL.md"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"Explore"
|
|
72
72
|
],
|
|
73
73
|
"source": "core",
|
|
74
|
-
"sourceVersion": "0.16.
|
|
74
|
+
"sourceVersion": "0.16.11",
|
|
75
75
|
"requiresContext": true,
|
|
76
76
|
"evidenceMode": "mixed",
|
|
77
77
|
"skillPath": "skills/devflow:memory/SKILL.md"
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
],
|
|
83
83
|
"blockedNative": [],
|
|
84
84
|
"source": "core",
|
|
85
|
-
"sourceVersion": "0.16.
|
|
85
|
+
"sourceVersion": "0.16.11",
|
|
86
86
|
"requiresContext": true,
|
|
87
87
|
"evidenceMode": "mixed",
|
|
88
88
|
"skillPath": "skills/devflow:workflow/SKILL.md"
|
|
@@ -169,7 +169,10 @@
|
|
|
169
169
|
"sourceVersion": "0.1.0",
|
|
170
170
|
"requiresContext": true,
|
|
171
171
|
"evidenceMode": "mixed",
|
|
172
|
-
"skillPath": "skills/devflow:electron/SKILL.md"
|
|
172
|
+
"skillPath": "skills/devflow:electron/SKILL.md",
|
|
173
|
+
"runtimePackages": [
|
|
174
|
+
"electron"
|
|
175
|
+
]
|
|
173
176
|
},
|
|
174
177
|
"devflow:git": {
|
|
175
178
|
"mcpTools": [
|
|
@@ -211,7 +214,10 @@
|
|
|
211
214
|
"sourceVersion": "0.1.0",
|
|
212
215
|
"requiresContext": true,
|
|
213
216
|
"evidenceMode": "mixed",
|
|
214
|
-
"skillPath": "skills/devflow:graphql/SKILL.md"
|
|
217
|
+
"skillPath": "skills/devflow:graphql/SKILL.md",
|
|
218
|
+
"runtimePackages": [
|
|
219
|
+
"graphql"
|
|
220
|
+
]
|
|
215
221
|
},
|
|
216
222
|
"devflow:nest": {
|
|
217
223
|
"mcpTools": [
|
|
@@ -233,7 +239,10 @@
|
|
|
233
239
|
"sourceVersion": "0.1.0",
|
|
234
240
|
"requiresContext": true,
|
|
235
241
|
"evidenceMode": "mixed",
|
|
236
|
-
"skillPath": "skills/devflow:nest/SKILL.md"
|
|
242
|
+
"skillPath": "skills/devflow:nest/SKILL.md",
|
|
243
|
+
"runtimePackages": [
|
|
244
|
+
"@nestjs/core"
|
|
245
|
+
]
|
|
237
246
|
},
|
|
238
247
|
"devflow:nextjs": {
|
|
239
248
|
"mcpTools": [
|
|
@@ -255,7 +264,11 @@
|
|
|
255
264
|
"sourceVersion": "0.1.0",
|
|
256
265
|
"requiresContext": true,
|
|
257
266
|
"evidenceMode": "mixed",
|
|
258
|
-
"skillPath": "skills/devflow:nextjs/SKILL.md"
|
|
267
|
+
"skillPath": "skills/devflow:nextjs/SKILL.md",
|
|
268
|
+
"runtimePackages": [
|
|
269
|
+
"next",
|
|
270
|
+
"react"
|
|
271
|
+
]
|
|
259
272
|
},
|
|
260
273
|
"devflow:performance": {
|
|
261
274
|
"mcpTools": [
|
|
@@ -301,7 +314,11 @@
|
|
|
301
314
|
"sourceVersion": "0.1.0",
|
|
302
315
|
"requiresContext": true,
|
|
303
316
|
"evidenceMode": "mixed",
|
|
304
|
-
"skillPath": "skills/devflow:react/SKILL.md"
|
|
317
|
+
"skillPath": "skills/devflow:react/SKILL.md",
|
|
318
|
+
"runtimePackages": [
|
|
319
|
+
"react",
|
|
320
|
+
"react-dom"
|
|
321
|
+
]
|
|
305
322
|
},
|
|
306
323
|
"devflow:tailwind": {
|
|
307
324
|
"mcpTools": [
|
|
@@ -323,7 +340,10 @@
|
|
|
323
340
|
"sourceVersion": "0.1.0",
|
|
324
341
|
"requiresContext": true,
|
|
325
342
|
"evidenceMode": "mixed",
|
|
326
|
-
"skillPath": "skills/devflow:tailwind/SKILL.md"
|
|
343
|
+
"skillPath": "skills/devflow:tailwind/SKILL.md",
|
|
344
|
+
"runtimePackages": [
|
|
345
|
+
"tailwindcss"
|
|
346
|
+
]
|
|
327
347
|
},
|
|
328
348
|
"devflow:taro": {
|
|
329
349
|
"mcpTools": [
|
|
@@ -344,7 +364,10 @@
|
|
|
344
364
|
"sourceVersion": "0.1.0",
|
|
345
365
|
"requiresContext": true,
|
|
346
366
|
"evidenceMode": "mixed",
|
|
347
|
-
"skillPath": "skills/devflow:taro/SKILL.md"
|
|
367
|
+
"skillPath": "skills/devflow:taro/SKILL.md",
|
|
368
|
+
"runtimePackages": [
|
|
369
|
+
"@tarojs/taro"
|
|
370
|
+
]
|
|
348
371
|
},
|
|
349
372
|
"devflow:ui-layout": {
|
|
350
373
|
"mcpTools": [
|
|
@@ -387,7 +410,10 @@
|
|
|
387
410
|
"sourceVersion": "0.1.0",
|
|
388
411
|
"requiresContext": true,
|
|
389
412
|
"evidenceMode": "mixed",
|
|
390
|
-
"skillPath": "skills/devflow:vue/SKILL.md"
|
|
413
|
+
"skillPath": "skills/devflow:vue/SKILL.md",
|
|
414
|
+
"runtimePackages": [
|
|
415
|
+
"vue"
|
|
416
|
+
]
|
|
391
417
|
}
|
|
392
418
|
}
|
|
393
419
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {createConnection}from'node:net';import {getDaemonSocketPath}from'@devflow-tools/sdk';import {mkdirSync,appendFileSync}from'node:fs';import {homedir}from'node:os';import {join,dirname}from'node:path';import {openGlobalDevFlowDatabase}from'@devflow-tools/database';import {createHash}from'node:crypto';function b(e,t,n){try{let o=openGlobalDevFlowDatabase();try{o.insertEvent({kind:e,timestamp:Date.now(),duration:n,success:t.success!==!1,metadata:t});}finally{o.close();}}catch{}}var S=["4-Gate enforcement","memory prefetch cache","daemon-shared hook state"];function m(e){let t=
|
|
2
|
-
`,{mode:384});}catch{}}function v(e){try{let t=JSON.parse(e);return {sessionId:typeof t.session_id=="string"?t.session_id:void 0,toolUseId:typeof t.tool_use_id=="string"?t.tool_use_id:void 0}}catch{return {}}}function
|
|
3
|
-
`),0
|
|
1
|
+
import {createConnection}from'node:net';import {getDaemonSocketPath}from'@devflow-tools/sdk';import {mkdirSync,appendFileSync}from'node:fs';import {homedir}from'node:os';import {join,dirname}from'node:path';import {openGlobalDevFlowDatabase}from'@devflow-tools/database';import {createHash}from'node:crypto';function b(e,t,n){try{let o=openGlobalDevFlowDatabase();try{o.insertEvent({kind:e,timestamp:Date.now(),duration:n,success:t.success!==!1,metadata:t});}finally{o.close();}}catch{}}var S=["4-Gate enforcement","memory prefetch cache","daemon-shared hook state"];function m(e){let t=N(e.input)??e.requestType;if(b("hook_daemon_request",{success:e.success,projectRoot:e.projectRoot,requestType:e.requestType,tool:t,attempts:e.attempts},e.durationMs),e.success)return;let n=Date.now(),o=v(e.input);try{let r=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:250});try{r.insertHookFallback({id:`hook-fallback:${createHash("sha256").update(`${e.projectRoot}\0${o.sessionId??""}\0${o.toolUseId??""}\0${e.requestType}\0${n}`).digest("hex").slice(0,24)}`,projectRoot:e.projectRoot,sessionId:o.sessionId,toolUseId:o.toolUseId,requestType:e.requestType,tool:t,reason:e.reason??"unknown",durationMs:e.durationMs,attempts:e.attempts,createdAt:n});}finally{r.close();}}catch{}try{let r=join(homedir(),".devflow","logs","hook-fallback",`${new Date(n).toISOString().slice(0,10)}.log`);mkdirSync(dirname(r),{recursive:!0,mode:448}),appendFileSync(r,`${JSON.stringify({ts:n,tool:t,requestType:e.requestType,projectRoot:e.projectRoot,reason:`daemon-${e.reason??"unknown"}`,durationMs:e.durationMs,attempts:e.attempts,bypassCountLost:!0,disabledFeatures:S})}
|
|
2
|
+
`,{mode:384});}catch{}}function v(e){try{let t=JSON.parse(e);return {sessionId:typeof t.session_id=="string"?t.session_id:void 0,toolUseId:typeof t.tool_use_id=="string"?t.tool_use_id:void 0}}catch{return {}}}function N(e){try{let t=JSON.parse(e);return typeof t.tool_name=="string"&&t.tool_name?t.tool_name:null}catch{return null}}var d=process.env.CLAUDE_PROJECT_DIR||process.cwd(),q=getDaemonSocketPath(d),u=process.argv[2],h=process.argv[3],p=Number(process.env.DEVFLOW_HOOK_CLIENT_TIMEOUT_MS),F=Number.isFinite(p)&&p>0?p:1e3,f=Number(process.env.DEVFLOW_HOOK_CLIENT_RETRY_DELAY_MS),P=Number.isFinite(f)&&f>=0?f:100,g=2*1024*1024,y=u==="memory-snapshot"?2:1;async function L(){let e=h!==void 0?H(h):u==="memory-snapshot"?{input:"",truncated:false}:await j(),{input:t,truncated:n}=e,o=Date.now(),r="unknown";for(let a=0;a<y;a+=1){let s=await B(t,n);if(s.response!==null){if(x(s.response)){r="protocol";break}return m({projectRoot:d,requestType:u,input:t,durationMs:Date.now()-o,success:true,attempts:a+1}),process.stdout.write(`${s.response}
|
|
3
|
+
`),0}r=s.reason??"unknown",a<y-1&&await G(P);}return process.env.DEVFLOW_HOOK_CLIENT_SUPPRESS_FALLBACK_LOG!=="1"&&m({projectRoot:d,requestType:u,input:t,durationMs:Date.now()-o,success:false,attempts:y,reason:r}),1}function x(e){try{let t=JSON.parse(e);return !!(t&&typeof t=="object"&&!Array.isArray(t)&&typeof t.error=="string")}catch{return true}}function B(e,t){return new Promise(n=>{let o=createConnection(q),r=false,a="",s=(c,l)=>{r||(r=true,clearTimeout(i),o.destroy(),n({response:c,reason:l}));},i=setTimeout(()=>s(null,"timeout"),F);o.setEncoding("utf8"),o.on("connect",()=>{o.write(`${JSON.stringify({type:"hello",rootPath:d})}
|
|
4
4
|
`);let c=$(e,t);if(!c){s(null,"protocol");return}o.write(`${JSON.stringify(c)}
|
|
5
|
-
`);}),o.on("data",c=>{
|
|
6
|
-
`);if(l<0)return;let _=
|
|
5
|
+
`);}),o.on("data",c=>{a+=c;let l=a.indexOf(`
|
|
6
|
+
`);if(l<0)return;let _=a.slice(0,l).trim();s(_||null);}),o.on("error",()=>s(null,"unreachable")),o.on("close",()=>s(null,"unreachable"));})}function $(e,t){let n=t?{truncated:true}:{};return u==="stop"?{type:"stop",input:e,...n}:u==="memory-snapshot"?{type:"memory-snapshot"}:["session-start","session-end","post-tool-use","post-tool-use-failure","pre-tool-use","user-prompt-submit","pre-compact"].includes(u)?{type:u,input:e,...n}:null}function j(){return new Promise(e=>{let t=[],n=0,o=false;process.stdin.on("data",r=>{let a=Buffer.isBuffer(r)?r:Buffer.from(r),s=g-n;if(s>0){let i=a.subarray(0,s);t.push(i),n+=i.length;}a.length>s&&(o=true);}),process.stdin.on("end",()=>e({input:Buffer.concat(t).toString("utf8"),truncated:o})),process.stdin.on("error",()=>e({input:"",truncated:false}));})}function H(e){let t=Buffer.from(e);return t.length<=g?{input:e,truncated:false}:{input:t.subarray(0,g).toString("utf8"),truncated:true}}function G(e){return new Promise(t=>setTimeout(t,e))}L().then(e=>process.exit(e)).catch(()=>process.exit(1));
|