@devflow-tools/devflow 0.18.44 → 0.18.46
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/dashboard/404.html +1 -1
- package/dist/dashboard/__next.__PAGE__.txt +1 -1
- package/dist/dashboard/__next._full.txt +1 -1
- package/dist/dashboard/__next._tree.txt +1 -1
- package/dist/dashboard/_not-found/__next._full.txt +1 -1
- package/dist/dashboard/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/dashboard/_not-found/__next._tree.txt +1 -1
- package/dist/dashboard/_not-found.html +1 -1
- package/dist/dashboard/_not-found.txt +1 -1
- package/dist/dashboard/accuracy/__next._full.txt +1 -1
- package/dist/dashboard/accuracy/__next._tree.txt +1 -1
- package/dist/dashboard/accuracy/__next.accuracy.__PAGE__.txt +1 -1
- package/dist/dashboard/accuracy.html +1 -1
- package/dist/dashboard/accuracy.txt +1 -1
- package/dist/dashboard/benchmark/__next._full.txt +1 -1
- package/dist/dashboard/benchmark/__next._tree.txt +1 -1
- package/dist/dashboard/benchmark/__next.benchmark.__PAGE__.txt +1 -1
- package/dist/dashboard/benchmark.html +1 -1
- package/dist/dashboard/benchmark.txt +1 -1
- package/dist/dashboard/context/__next._full.txt +1 -1
- package/dist/dashboard/context/__next._tree.txt +1 -1
- package/dist/dashboard/context/__next.context.__PAGE__.txt +1 -1
- package/dist/dashboard/context.html +1 -1
- package/dist/dashboard/context.txt +1 -1
- package/dist/dashboard/doctor/__next._full.txt +1 -1
- package/dist/dashboard/doctor/__next._tree.txt +1 -1
- package/dist/dashboard/doctor/__next.doctor.__PAGE__.txt +1 -1
- package/dist/dashboard/doctor.html +1 -1
- package/dist/dashboard/doctor.txt +1 -1
- package/dist/dashboard/executions/__next._full.txt +1 -1
- package/dist/dashboard/executions/__next._tree.txt +1 -1
- package/dist/dashboard/executions/__next.executions.__PAGE__.txt +1 -1
- package/dist/dashboard/executions.html +1 -1
- package/dist/dashboard/executions.txt +1 -1
- package/dist/dashboard/graph/__next._full.txt +1 -1
- package/dist/dashboard/graph/__next._tree.txt +1 -1
- package/dist/dashboard/graph/__next.graph.__PAGE__.txt +1 -1
- package/dist/dashboard/graph.html +1 -1
- package/dist/dashboard/graph.txt +1 -1
- package/dist/dashboard/index.html +1 -1
- package/dist/dashboard/index.txt +1 -1
- package/dist/dashboard/intelligence/__next._full.txt +1 -1
- package/dist/dashboard/intelligence/__next._tree.txt +1 -1
- package/dist/dashboard/intelligence/__next.intelligence.__PAGE__.txt +1 -1
- package/dist/dashboard/intelligence/knowledge/__next._full.txt +1 -1
- package/dist/dashboard/intelligence/knowledge/__next._tree.txt +1 -1
- package/dist/dashboard/intelligence/knowledge/__next.intelligence.knowledge.__PAGE__.txt +1 -1
- package/dist/dashboard/intelligence/knowledge.html +1 -1
- package/dist/dashboard/intelligence/knowledge.txt +1 -1
- package/dist/dashboard/intelligence/memory/__next._full.txt +1 -1
- package/dist/dashboard/intelligence/memory/__next._tree.txt +1 -1
- package/dist/dashboard/intelligence/memory/__next.intelligence.memory.__PAGE__.txt +1 -1
- package/dist/dashboard/intelligence/memory.html +1 -1
- package/dist/dashboard/intelligence/memory.txt +1 -1
- package/dist/dashboard/intelligence.html +1 -1
- package/dist/dashboard/intelligence.txt +1 -1
- package/dist/dashboard/knowledge/__next._full.txt +1 -1
- package/dist/dashboard/knowledge/__next._tree.txt +1 -1
- package/dist/dashboard/knowledge/__next.knowledge.__PAGE__.txt +1 -1
- package/dist/dashboard/knowledge.html +1 -1
- package/dist/dashboard/knowledge.txt +1 -1
- package/dist/dashboard/memory/__next._full.txt +1 -1
- package/dist/dashboard/memory/__next._tree.txt +1 -1
- package/dist/dashboard/memory/__next.memory.__PAGE__.txt +1 -1
- package/dist/dashboard/memory.html +1 -1
- package/dist/dashboard/memory.txt +1 -1
- package/dist/dashboard/replay/__next._full.txt +1 -1
- package/dist/dashboard/replay/__next._tree.txt +1 -1
- package/dist/dashboard/replay/__next.replay.__PAGE__.txt +1 -1
- package/dist/dashboard/replay.html +1 -1
- package/dist/dashboard/replay.txt +1 -1
- package/dist/dashboard/runs/_/__next._full.txt +1 -1
- package/dist/dashboard/runs/_/__next._tree.txt +1 -1
- package/dist/dashboard/runs/_/__next.runs.$d$id.__PAGE__.txt +1 -1
- package/dist/dashboard/runs/_.html +1 -1
- package/dist/dashboard/runs/_.txt +1 -1
- package/dist/dashboard/runs/__next._full.txt +1 -1
- package/dist/dashboard/runs/__next._tree.txt +1 -1
- package/dist/dashboard/runs/__next.runs.__PAGE__.txt +1 -1
- package/dist/dashboard/runs.html +1 -1
- package/dist/dashboard/runs.txt +1 -1
- package/dist/dashboard/settings/__next._full.txt +1 -1
- package/dist/dashboard/settings/__next._tree.txt +1 -1
- package/dist/dashboard/settings/__next.settings.__PAGE__.txt +1 -1
- package/dist/dashboard/settings.html +1 -1
- package/dist/dashboard/settings.txt +1 -1
- package/dist/dashboard/timeline/__next._full.txt +1 -1
- package/dist/dashboard/timeline/__next._tree.txt +1 -1
- package/dist/dashboard/timeline/__next.timeline.__PAGE__.txt +1 -1
- package/dist/dashboard/timeline.html +1 -1
- package/dist/dashboard/timeline.txt +1 -1
- package/dist/dashboard/tool-metrics/__next._full.txt +1 -1
- package/dist/dashboard/tool-metrics/__next._tree.txt +1 -1
- package/dist/dashboard/tool-metrics/__next.tool-metrics.__PAGE__.txt +1 -1
- package/dist/dashboard/tool-metrics.html +1 -1
- package/dist/dashboard/tool-metrics.txt +1 -1
- package/dist/dashboard/workflows/__next._full.txt +1 -1
- package/dist/dashboard/workflows/__next._tree.txt +1 -1
- package/dist/dashboard/workflows/__next.workflows.__PAGE__.txt +1 -1
- package/dist/dashboard/workflows.html +1 -1
- package/dist/dashboard/workflows.txt +1 -1
- package/dist/hooks/user-prompt-submit.js +8 -8
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/dist/command-registry.json +7 -7
- package/dist/plugin/dist/hooks/user-prompt-submit.js +8 -8
- package/dist/plugin/dist/runtime-manifest.json +6 -6
- package/dist/plugin/package.json +14 -14
- package/dist/plugin/skills/delivery/SKILL.md +2 -2
- package/package.json +17 -17
- /package/dist/dashboard/_next/static/{SJqpXVW-9GZ0zQo9LbmI0 → aiTL5xfHxy2RjsDmZfHNA}/_buildManifest.js +0 -0
- /package/dist/dashboard/_next/static/{SJqpXVW-9GZ0zQo9LbmI0 → aiTL5xfHxy2RjsDmZfHNA}/_ssgManifest.js +0 -0
|
@@ -24,7 +24,7 @@ d:I[1380,[],""]
|
|
|
24
24
|
10:X
|
|
25
25
|
11:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$L13",null,{}],null,["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}]]}],"p":false,"v":null}}]]
|
|
26
26
|
f:[["children",{"s":"tool-metrics","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$10"},"c":"$Q11"}]]
|
|
27
|
-
0:{"P":null,"c":["","tool-metrics"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
27
|
+
0:{"P":null,"c":["","tool-metrics"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"aiTL5xfHxy2RjsDmZfHNA"}
|
|
28
28
|
10:C
|
|
29
29
|
e:"$0:t:t:d:r:props:children:1:props:serverProvidedParams:params"
|
|
30
30
|
19:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -24,7 +24,7 @@ d:I[1380,[],""]
|
|
|
24
24
|
10:X
|
|
25
25
|
11:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$L13",null,{}],null,["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}]]}],"p":false,"v":null}}]]
|
|
26
26
|
f:[["children",{"s":"workflows","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$10"},"c":"$Q11"}]]
|
|
27
|
-
0:{"P":null,"c":["","workflows"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
27
|
+
0:{"P":null,"c":["","workflows"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"aiTL5xfHxy2RjsDmZfHNA"}
|
|
28
28
|
10:C
|
|
29
29
|
e:"$0:t:t:d:r:props:children:1:props:serverProvidedParams:params"
|
|
30
30
|
19:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
:HL["/_next/static/css/ec6498e6b4f4227c.css","style"]
|
|
2
2
|
2:[["children",{"s":"__PAGE__","h":160}]]
|
|
3
3
|
1:[["children",{"s":"workflows","h":96,"c":"$Q2"}]]
|
|
4
|
-
0:{"b":"
|
|
4
|
+
0:{"b":"aiTL5xfHxy2RjsDmZfHNA","t":{"t":{"s":"","h":80,"c":"$Q1"}}}
|
|
@@ -25,7 +25,7 @@ d:I[1380,[],""]
|
|
|
25
25
|
13:C
|
|
26
26
|
14:[["children",{"s":"__PAGE__","h":160,"d":{"r":["$","$1","c",{"children":[["$","$L16",null,{}],null,["$","$L17",null,{"children":["$","$18",null,{"name":"Next.MetadataOutlet","children":"$@19"}]}]]}],"p":"$@1a","v":null,"s":"$10"}}]]
|
|
27
27
|
11:[["children",{"s":"workflows","h":96,"d":{"r":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}]}]]}],"p":"$@12","v":"$13","s":"$10"},"c":"$Q14"}]]
|
|
28
|
-
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":"$@f","v":null,"s":"$10"},"c":"$Q11"},"h":{"r":["$","$1","h",{"children":[null,["$","$L1c",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","$L1e",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$18",null,{"name":"Next.Metadata","children":[]}]}],null]}],null]}],"p":"$@1f","v":null,"s":"$10"}},"a":"$@20","u":"$@21","b":"
|
|
28
|
+
0:{"t":{"t":{"s":"","h":80,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","template":["$","$Ld",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":"$@f","v":null,"s":"$10"},"c":"$Q11"},"h":{"r":["$","$1","h",{"children":[null,["$","$L1c",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","$L1e",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$18",null,{"name":"Next.Metadata","children":[]}]}],null]}],null]}],"p":"$@1f","v":null,"s":"$10"}},"a":"$@20","u":"$@21","b":"aiTL5xfHxy2RjsDmZfHNA"}
|
|
29
29
|
e:"$0:t:t:d:r:props:children:1:props:serverProvidedParams:params"
|
|
30
30
|
19:null
|
|
31
31
|
10:300
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/ec6498e6b4f4227c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a90fe7e6c3b4bb45.js"/><script src="/_next/static/chunks/87c73c54-8350361388fba170.js" async=""></script><script src="/_next/static/chunks/968-e7efadf9f1a30259.js" async=""></script><script src="/_next/static/chunks/main-app-44f3d55a6e6befbb.js" async=""></script><script src="/_next/static/chunks/820-b9d442e4990c267b.js" async=""></script><script src="/_next/static/chunks/567-54b277a64dd332a4.js" async=""></script><script src="/_next/static/chunks/993-01834e67bc353d44.js" async=""></script><script src="/_next/static/chunks/825-c8f40c7b7d482f83.js" async=""></script><script src="/_next/static/chunks/237-34a3fbfba7ff0de5.js" async=""></script><script src="/_next/static/chunks/914-8a8dbb0d7c5f49dd.js" async=""></script><script src="/_next/static/chunks/app/layout-5c75ea62c5543a6e.js" async=""></script><script src="/_next/static/chunks/app/workflows/page-da494d4bd74cf25f.js" async=""></script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="h-dvh overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh items-center justify-center text-sm text-muted-foreground">Loading...</div><script src="/_next/static/chunks/webpack-a90fe7e6c3b4bb45.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"ClientSegmentRoot\"\n3:I[589,[],\"$2\"]\n4:\"static/chunks/820-b9d442e4990c267b.js\"\n5:\"static/chunks/567-54b277a64dd332a4.js\"\n6:\"static/chunks/993-01834e67bc353d44.js\"\n7:\"static/chunks/825-c8f40c7b7d482f83.js\"\n8:\"static/chunks/237-34a3fbfba7ff0de5.js\"\n9:\"static/chunks/914-8a8dbb0d7c5f49dd.js\"\na:\"static/chunks/app/layout-5c75ea62c5543a6e.js\"\nb:I[30841,[\"820\",\"$4\",\"567\",\"$5\",\"993\",\"$6\",\"825\",\"$7\",\"237\",\"$8\",\"914\",\"$9\",\"177\",\"$a\"],\"default\"]\nc:I[99630,[],\"\"]\nd:I[1380,[],\"\"]\n12:\"static/chunks/app/workflows/page-da494d4bd74cf25f.js\"\n13:I[39173,[\"820\",\"$4\",\"567\",\"$5\",\"993\",\"$6\",\"914\",\"$9\",\"143\",\"$12\"],\"WorkflowRuns\"]\n14:I[30887,[],\"OutletBoundary\"]\n15:\"$Sreact.suspense\"\n17:\"ViewportBoundary\"\n18:I[30887,[],\"$17\"]\n1a:\"MetadataBoundary\"\n1b:I[30887,[],\"$1a\"]\n1d:I[15718,[],\"default\",1]\n:HL[\"/_next/static/css/ec6498e6b4f4227c.css\",\"style\"]\n10:X\n11:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L13\",null,{}],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@16\"}]}]]}],\"p\":false,\"v\":null}}]]\nf:[[\"children\",{\"s\":\"workflows\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$10\"},\"c\":\"$Q11\"}]]\n0:{\"P\":null,\"c\":[\"\",\"workflows\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ec6498e6b4f4227c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L3\",null,{\"Component\":\"$b\",\"slots\":{\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":[\"$@e\"]}}]]}],\"p\":false,\"v\":null},\"c\":\"$Qf\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1c\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1d\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html lang="zh" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/ec6498e6b4f4227c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a90fe7e6c3b4bb45.js"/><script src="/_next/static/chunks/87c73c54-8350361388fba170.js" async=""></script><script src="/_next/static/chunks/968-e7efadf9f1a30259.js" async=""></script><script src="/_next/static/chunks/main-app-44f3d55a6e6befbb.js" async=""></script><script src="/_next/static/chunks/820-b9d442e4990c267b.js" async=""></script><script src="/_next/static/chunks/567-54b277a64dd332a4.js" async=""></script><script src="/_next/static/chunks/993-01834e67bc353d44.js" async=""></script><script src="/_next/static/chunks/825-c8f40c7b7d482f83.js" async=""></script><script src="/_next/static/chunks/237-34a3fbfba7ff0de5.js" async=""></script><script src="/_next/static/chunks/914-8a8dbb0d7c5f49dd.js" async=""></script><script src="/_next/static/chunks/app/layout-5c75ea62c5543a6e.js" async=""></script><script src="/_next/static/chunks/app/workflows/page-da494d4bd74cf25f.js" async=""></script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="h-dvh overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh items-center justify-center text-sm text-muted-foreground">Loading...</div><script src="/_next/static/chunks/webpack-a90fe7e6c3b4bb45.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"ClientSegmentRoot\"\n3:I[589,[],\"$2\"]\n4:\"static/chunks/820-b9d442e4990c267b.js\"\n5:\"static/chunks/567-54b277a64dd332a4.js\"\n6:\"static/chunks/993-01834e67bc353d44.js\"\n7:\"static/chunks/825-c8f40c7b7d482f83.js\"\n8:\"static/chunks/237-34a3fbfba7ff0de5.js\"\n9:\"static/chunks/914-8a8dbb0d7c5f49dd.js\"\na:\"static/chunks/app/layout-5c75ea62c5543a6e.js\"\nb:I[30841,[\"820\",\"$4\",\"567\",\"$5\",\"993\",\"$6\",\"825\",\"$7\",\"237\",\"$8\",\"914\",\"$9\",\"177\",\"$a\"],\"default\"]\nc:I[99630,[],\"\"]\nd:I[1380,[],\"\"]\n12:\"static/chunks/app/workflows/page-da494d4bd74cf25f.js\"\n13:I[39173,[\"820\",\"$4\",\"567\",\"$5\",\"993\",\"$6\",\"914\",\"$9\",\"143\",\"$12\"],\"WorkflowRuns\"]\n14:I[30887,[],\"OutletBoundary\"]\n15:\"$Sreact.suspense\"\n17:\"ViewportBoundary\"\n18:I[30887,[],\"$17\"]\n1a:\"MetadataBoundary\"\n1b:I[30887,[],\"$1a\"]\n1d:I[15718,[],\"default\",1]\n:HL[\"/_next/static/css/ec6498e6b4f4227c.css\",\"style\"]\n10:X\n11:[[\"children\",{\"s\":\"__PAGE__\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L13\",null,{}],null,[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@16\"}]}]]}],\"p\":false,\"v\":null}}]]\nf:[[\"children\",{\"s\":\"workflows\",\"h\":512,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],\"p\":false,\"v\":\"$10\"},\"c\":\"$Q11\"}]]\n0:{\"P\":null,\"c\":[\"\",\"workflows\"],\"q\":\"\",\"i\":false,\"t\":{\"t\":{\"s\":\"\",\"h\":528,\"d\":{\"r\":[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ec6498e6b4f4227c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L3\",null,{\"Component\":\"$b\",\"slots\":{\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":[\"$@e\"]}}]]}],\"p\":false,\"v\":null},\"c\":\"$Qf\"},\"h\":{\"r\":[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[\"$\",\"$L1b\",null,{\"children\":[[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1c\"}]}],null]}],null]}],\"p\":false,\"v\":null}},\"m\":\"$undefined\",\"G\":[\"$1d\",[]],\"S\":true,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"aiTL5xfHxy2RjsDmZfHNA\"}\n10:C\ne:\"$0:t:t:d:r:props:children:1:props:serverProvidedParams:params\"\n19:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n16:null\n1c:[]\n"])</script></body></html>
|
|
@@ -24,7 +24,7 @@ d:I[1380,[],""]
|
|
|
24
24
|
10:X
|
|
25
25
|
11:[["children",{"s":"__PAGE__","h":512,"d":{"r":["$","$1","c",{"children":[["$","$L13",null,{}],null,["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}]]}],"p":false,"v":null}}]]
|
|
26
26
|
f:[["children",{"s":"workflows","h":512,"d":{"r":["$","$1","c",{"children":[null,["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],"p":false,"v":"$10"},"c":"$Q11"}]]
|
|
27
|
-
0:{"P":null,"c":["","workflows"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
27
|
+
0:{"P":null,"c":["","workflows"],"q":"","i":false,"t":{"t":{"s":"","h":528,"d":{"r":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ec6498e6b4f4227c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L3",null,{"Component":"$b","slots":{"children":["$","$Lc",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$Ld",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@e"]}}]]}],"p":false,"v":null},"c":"$Qf"},"h":{"r":["$","$1","h",{"children":[null,["$","$L18",null,{"children":"$L19"}],["$","$L1b",null,{"children":[["$","div",null,{"hidden":true,"children":["$","$15",null,{"name":"Next.Metadata","children":"$L1c"}]}],null]}],null]}],"p":false,"v":null}},"m":"$undefined","G":["$1d",[]],"S":true,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"aiTL5xfHxy2RjsDmZfHNA"}
|
|
28
28
|
10:C
|
|
29
29
|
e:"$0:t:t:d:r:props:children:1:props:serverProvidedParams:params"
|
|
30
30
|
19:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {openGlobalDevFlowDatabase}from'@devflow-tools/database';import {getLocalApiKey,getDevFlowStateRoot,resolveProjectCapabilityProfile,resolveCapabilityRollout,claudeCodeRuntimeAdapter,semanticTextHash,stableRuntimeHash,resolveRuntimeActivationSnapshot,getProjectStateDir,projectClaudeToolName,acquireRuntimeHttpCircuit,registerRuntimeHttpSuccess,registerRuntimeHttpFailure,readRuntimeState}from'@devflow-tools/sdk';import {existsSync,readFileSync as readFileSync$1,rmSync,mkdirSync,writeFileSync,linkSync,readdirSync,renameSync,unlinkSync}from'fs';import {join as join$1,dirname}from'path';import {randomUUID,createHash}from'crypto';import {fileURLToPath}from'url';import {emitSemanticControlLog,SemanticRuntimeEventProjector,rotateDiagnosticLogFile}from'@devflow-tools/telemetry';import {readFileSync,openSync,constants,fstatSync,closeSync,mkdirSync as mkdirSync$1,writeFileSync as writeFileSync$1,renameSync as renameSync$1,realpathSync,existsSync as existsSync$1,appendFileSync}from'node:fs';import {join,resolve,relative}from'node:path';import {request}from'node:http';import {createHash as createHash$1,randomUUID as randomUUID$1}from'node:crypto';import {TaskKernel,TaskEventStore}from'@devflow-tools/task-runtime';function h(n,e,t){try{let r=openGlobalDevFlowDatabase();try{r.insertEvent({kind:n,timestamp:Date.now(),duration:t,success:e.success!==!1,metadata:e});}finally{r.close();}}catch{}}var B="WARNING: DevFlow is in degraded mode (daemon unreachable): 4-Gate enforcement and memory prefetch cache are unavailable. Run `devflow doctor` for details.";function G(){return process.env.DEVFLOW_HOOK_DEGRADED==="1"}function ze(n){return n??process.env.CLAUDE_PROJECT_DIR??process.cwd()}function k(n){return getProjectStateDir(ze(n))}function Z(n){return Buffer.from(n,"utf8").toString("base64url")}function Ge(n,e,t){let r=e?.trim();if(r){let o=/^[a-zA-Z0-9:._-]{1,192}$/.test(r)?r:`tool-${createHash("sha256").update(r.slice(0,1024)).digest("hex").slice(0,32)}`;return `${n}:${o}`}return `${n}:legacy-${t}-${randomUUID().slice(0,8)}`}function oe(n){return `${n}:legacy-journal`}var x=class{constructor(e){this.projectRoot=e;this.sessions=new Map;this.sessionsDir=join$1(k(e),"hook-sessions");}registerSession(e){let t=e.trim();if(!t)throw new Error("session_id_required");let r=this.get(t);if(r)return r.lastActivityAt=Date.now(),this.persist(r),r;let o=Date.now(),i={sessionId:t,projectRoot:this.projectRoot,requiredMcpTools:[],evidenceObligations:[],evidenceDegradations:[],evidenceOutcomes:[],startedAt:o,lastActivityAt:o};return this.sessions.set(t,i),this.persist(i),i}startExecution(e,t,r){let o=this.registerSession(e);return (!o.executionId||o.skillName!==t)&&(o.executionId=`exec_${Date.now()}_${randomUUID().slice(0,8)}`),o.skillName=t,o.requiredMcpTools=[...new Set(r)],delete o.contextInitialization,o.lastActivityAt=Date.now(),this.persist(o),o}beginContextInitialization(e,t){let r=this.registerSession(e);return r.contextInitialization={startedAt:Date.now(),...t?{toolUseId:t}:{}},r.lastActivityAt=Date.now(),this.persist(r),r}completeContextInitialization(e,t){let r=this.get(e);return r?(t&&r.contextInitialization?.toolUseId&&r.contextInitialization.toolUseId!==t||(delete r.contextInitialization,r.lastActivityAt=Date.now(),this.persist(r)),r):null}bindTaskIdentity(e,t){let r=this.registerSession(e);return r.activeTurnId=t.turnId,r.activeRequestId=t.requestId,r.intentArtifactHash=t.intentArtifactHash,r.lastActivityAt=Date.now(),this.persist(r),r}get(e){let t=e.trim();if(!t)return null;let r=this.sessions.get(t);if(r)return this.replayEvidenceJournal(r),r;let o=this.snapshotPath(t);if(!existsSync(o))return null;try{let i=JSON.parse(readFileSync$1(o,"utf8"));return i.sessionId!==t||i.projectRoot!==this.projectRoot?null:(i.requiredMcpTools=Array.isArray(i.requiredMcpTools)?i.requiredMcpTools:[],i.evidenceObligations=Q(i.evidenceObligations),i.evidenceDegradations=ee(i.evidenceDegradations),i.evidenceOutcomes=te(i.evidenceOutcomes),this.replayEvidenceJournal(i),this.sessions.set(t,i),i)}catch{return null}}completeExecution(e){let t=this.get(e);if(!t)return null;let r=structuredClone(t);return delete t.executionId,delete t.skillName,delete t.contextInitialization,t.requiredMcpTools=[],t.lastActivityAt=Date.now(),this.persist(t),r}addEvidenceObligation(e,t,r=Date.now(),o){let i=this.registerSession(e),a=(o?void 0:i.evidenceObligations.find(m=>m.contractId===t.id))?.obligationId??Ge(t.id,o,r);this.appendEvidenceEvent(e,{kind:"add",obligationId:a,contractId:t.id,at:r,contract:t},`add\0${a}`),this.replayEvidenceJournal(i);let d=i.evidenceObligations.find(m=>m.obligationId===a);return d?(i.lastActivityAt=Date.now(),this.persist(i),structuredClone(d)):null}listEvidenceObligations(e){return (this.get(e)?.evidenceObligations??[]).map(t=>structuredClone(t))}markEvidenceCorrection(e,t,r,o,i=Date.now()){let s=this.get(e),a=s?.evidenceObligations.find(l=>l.obligationId===t);if(!s||!a)return null;let d=/^[a-f0-9]{64}$/.test(o)?o:"";if(!d)return null;this.appendEvidenceEvent(e,{kind:"correction",obligationId:t,contractId:a.contractId,at:i,fingerprint:d,violations:r.slice(0,16).map(l=>l.slice(0,240))},`correction\0${t}\0${d}`),this.replayEvidenceJournal(s),s.lastActivityAt=i,this.persist(s);let m=s.evidenceObligations.find(l=>l.obligationId===t);return m?structuredClone(m):null}resolveEvidenceObligation(e,t){let r=this.get(e);if(!r)return false;let o=r.evidenceObligations.find(s=>s.obligationId===t);if(!o)return false;let i=Date.now();return this.appendEvidenceEvent(e,{kind:"resolve",obligationId:t,contractId:o.contractId,at:i},`resolve\0${t}`),this.replayEvidenceJournal(r),r.lastActivityAt=i,this.persist(r),true}resolveDegradedEvidence(e,t){let r=this.get(e),o=r?.evidenceDegradations.find(s=>s.obligationId===t);if(!r||!o)return false;let i=Date.now();return this.appendEvidenceEvent(e,{kind:"resolve",obligationId:t,contractId:o.contractId,at:i},`resolve-degraded\0${t}\0${i}`),this.replayEvidenceJournal(r),r.lastActivityAt=i,this.persist(r),true}degradeEvidenceObligation(e,t,r,o=Date.now()){let i=this.get(e),s=i?.evidenceObligations.find(d=>d.obligationId===t);if(!i||!s)return false;let a=r.slice(0,240);return this.appendEvidenceEvent(e,{kind:"degrade",obligationId:t,contractId:s.contractId,at:o,reason:a},`degrade\0${t}\0${a}`),this.replayEvidenceJournal(i),i.lastActivityAt=o,this.persist(i),true}removeSession(e){let t=e.trim();t&&(this.sessions.delete(t),rmSync(this.snapshotPath(t),{force:true}),rmSync(this.evidenceJournalDir(t),{recursive:true,force:true}));}list(){return [...this.sessions.values()]}snapshotPath(e){return join$1(this.sessionsDir,`${Z(e)}.json`)}evidenceJournalDir(e){return join$1(this.sessionsDir,"evidence-journal",Z(e))}appendEvidenceEvent(e,t,r){let o=this.evidenceJournalDir(e);mkdirSync(o,{recursive:true,mode:448});let i=createHash("sha256").update(r).digest("hex"),s=join$1(o,`${t.kind}-${i}.json`);if(existsSync(s))return;let a=join$1(o,`.${process.pid}.${randomUUID()}.tmp`);writeFileSync(a,JSON.stringify(t),{mode:384});try{linkSync(a,s);}catch(d){if(d.code!=="EEXIST")throw d}finally{rmSync(a,{force:true});}}replayEvidenceJournal(e){e.evidenceObligations=Q(e.evidenceObligations),e.evidenceDegradations=ee(e.evidenceDegradations),e.evidenceOutcomes=te(e.evidenceOutcomes);let t=this.evidenceJournalDir(e.sessionId);if(!existsSync(t))return;let r;try{r=readdirSync(t).filter(i=>/^(?:add|correction|resolve|degrade)-[a-f0-9]{64}\.json$/.test(i)).slice(0,4096);}catch{return}let o=r.flatMap(i=>{try{let s=readFileSync$1(join$1(t,i),"utf8");if(Buffer.byteLength(s,"utf8")>64*1024)return [];let a=We(JSON.parse(s));return a?[a]:[]}catch{return []}}).sort((i,s)=>i.at-s.at||ne(i.kind)-ne(s.kind));for(let i of o)this.applyEvidenceEvent(e,i);e.evidenceObligations=e.evidenceObligations.slice(-8),e.evidenceDegradations=e.evidenceDegradations.slice(-20),e.evidenceOutcomes=e.evidenceOutcomes.slice(-20);}applyEvidenceEvent(e,t){let r=e.evidenceOutcomes.find(s=>s.obligationId===t.obligationId);if(t.kind==="add"){if(r)return;let s=e.evidenceObligations.find(a=>a.obligationId===t.obligationId);s?(s.contract=t.contract,s.promptedAt=Math.min(s.promptedAt,t.at)):e.evidenceObligations.push({obligationId:t.obligationId,contractId:t.contractId,contract:t.contract,promptedAt:t.at,attempt:0,correctionRequested:false,violations:[]});return}let o=e.evidenceObligations.find(s=>s.obligationId===t.obligationId);if(t.kind==="correction"){if(!o||r||o.correctionFingerprint===t.fingerprint)return;o.attempt+=1,o.correctionRequested=true,o.correctionRequestedAt=t.at,o.correctionFingerprint=t.fingerprint,o.violations=t.violations;return}let i=o?.attempt??r?.attempt??0;if(t.kind==="resolve"&&r?.status==="degraded")e.evidenceOutcomes=e.evidenceOutcomes.filter(s=>s.obligationId!==t.obligationId),e.evidenceDegradations=e.evidenceDegradations.filter(s=>s.obligationId!==t.obligationId);else if(r)return;t.kind==="degrade"?(e.evidenceObligations=e.evidenceObligations.filter(s=>s.obligationId!==t.obligationId),e.evidenceDegradations.push({obligationId:t.obligationId,contractId:t.contractId,reason:t.reason,degradedAt:t.at,attempt:i,contract:o?.contract})):e.evidenceObligations=e.evidenceObligations.filter(s=>s.obligationId!==t.obligationId),e.evidenceOutcomes.push({obligationId:t.obligationId,contractId:t.contractId,status:t.kind==="resolve"?"resolved":"degraded",completedAt:t.at,attempt:i,...t.kind==="degrade"?{reason:t.reason}:{}});}persist(e){mkdirSync(this.sessionsDir,{recursive:true,mode:448});let t=this.snapshotPath(e.sessionId),r=`${t}.${process.pid}.${randomUUID()}.tmp`;writeFileSync(r,JSON.stringify(e),{mode:384}),renameSync(r,t);}};function Q(n){return Array.isArray(n)?n.flatMap(e=>{if(!e||typeof e!="object")return [];let t=e;if(typeof t.contractId!="string"||t.contractId.length===0||t.contractId.length>128||typeof t.promptedAt!="number"||typeof t.attempt!="number"||typeof t.correctionRequested!="boolean"||!Array.isArray(t.violations)||!ie(t.contract))return [];let r=typeof t.obligationId=="string"&&t.obligationId.length>0&&t.obligationId.length<=384?t.obligationId:oe(t.contractId),o=typeof t.correctionTranscriptHash=="string"?t.correctionTranscriptHash:void 0,i=t.correctionFingerprint??o;return i!==void 0&&!/^[a-f0-9]{64}$/.test(i)?[]:[{...t,obligationId:r,correctionFingerprint:i}]}).slice(-8):[]}function ee(n){return Array.isArray(n)?n.filter(e=>{if(!e||typeof e!="object")return false;let t=e;return typeof t.obligationId=="string"&&typeof t.contractId=="string"&&typeof t.reason=="string"&&typeof t.degradedAt=="number"&&typeof t.attempt=="number"}).slice(-20):[]}function te(n){return Array.isArray(n)?n.filter(e=>{if(!e||typeof e!="object")return false;let t=e;return typeof t.obligationId=="string"&&typeof t.contractId=="string"&&(t.status==="resolved"||t.status==="degraded")&&typeof t.completedAt=="number"&&typeof t.attempt=="number"&&(t.reason===void 0||typeof t.reason=="string")}).slice(-20):[]}function We(n){if(!n||typeof n!="object")return null;let e=n,t=e.kind;if(t!=="add"&&t!=="correction"&&t!=="resolve"&&t!=="degrade"||typeof e.contractId!="string"||e.contractId.length>128||typeof e.at!="number")return null;let o={obligationId:typeof e.obligationId=="string"&&e.obligationId.length>0&&e.obligationId.length<=384?e.obligationId:oe(e.contractId),contractId:e.contractId,at:e.at};if(t==="add")return ie(e.contract)?{kind:t,...o,contract:e.contract}:null;if(t==="correction"){let i=typeof e.fingerprint=="string"?e.fingerprint:e.transcriptHash;return typeof i=="string"&&/^[a-f0-9]{64}$/.test(i)&&Array.isArray(e.violations)&&e.violations.every(s=>typeof s=="string"&&s.length<=240)?{kind:t,...o,fingerprint:i,violations:e.violations}:null}return t==="resolve"?{kind:t,...o}:typeof e.reason=="string"&&e.reason.length<=240?{kind:t,...o,reason:e.reason}:null}function ne(n){return n==="add"?0:n==="correction"?1:2}function ie(n){if(!n||typeof n!="object")return false;let e=n,t=e.requiredSections,r=e.prohibitedClaims;return e.version==="1.0"&&typeof e.id=="string"&&/^[a-zA-Z0-9][a-zA-Z0-9:._-]{0,127}$/.test(e.id)&&typeof e.runtimeProfilingOccurred=="boolean"&&typeof e.samplingEvidenceOccurred=="boolean"&&Array.isArray(t)&&t.length===3&&t[0]==="\u5DE5\u5177\u53D1\u73B0"&&t[1]==="\u6A21\u578B\u5047\u8BBE"&&t[2]==="\u9700\u8981\u8FD0\u884C\u65F6\u9A8C\u8BC1"&&Array.isArray(r)&&r.length<=16&&r.every(o=>typeof o=="string"&&o.length<=128)&&typeof e.canonicalReport=="string"&&Buffer.byteLength(e.canonicalReport,"utf8")<=48*1024&&!!e.correctionPolicy&&e.correctionPolicy.maxAttempts===1&&e.correctionPolicy.repeatedViolation==="fail_open"}function Ye(n){let e=n.trim().replace(/^\//,"");if(!e.startsWith("devflow:"))return null;let t=e.slice(8).replace(/^devflow-/,"");return /^[a-z0-9][a-z0-9-]*$/i.test(t)?`devflow:${t.toLowerCase()}`:null}function se(n){let e=n.trimStart().match(/^\/(devflow:[a-z0-9][a-z0-9-]*)\b/i);if(!e)return null;let t=Ye(e[1]);return t?{rawName:e[1],skillName:t}:null}var p=emitSemanticControlLog;var nt=2,rt=1;function ot(){if(process.env.CLAUDE_PLUGIN_ROOT)return process.env.CLAUDE_PLUGIN_ROOT;try{return join$1(dirname(fileURLToPath(import.meta.url)),"..","..")}catch{return process.cwd()}}function ae(n=ot()){let e=[join$1(n,"dist","command-registry.json"),join$1(n,"command-registry.json")];for(let t of e)try{if(!existsSync(t))continue;let r=JSON.parse(readFileSync$1(t,"utf8"));if(r.version!==nt&&r.version!==rt||!it(r.commands)){p({event:"hook.runtime.degraded",identity:{projectRoot:process.env.CLAUDE_PROJECT_DIR||process.cwd()},level:"warn",timestamp:Date.now(),data:{stage:"command_registry",reason:"contract_mismatch",registryPath:t}});continue}return r.commands}catch(r){p({event:"hook.runtime.degraded",identity:{projectRoot:process.env.CLAUDE_PROJECT_DIR||process.cwd()},level:"warn",timestamp:Date.now(),data:{stage:"command_registry",reason:r.message,fallback:"next_registry_candidate"}});}return null}function it(n){return !n||typeof n!="object"||Array.isArray(n)?false:Object.values(n).every(e=>{if(!e||typeof e!="object"||Array.isArray(e))return false;let t=e;return E(t.mcpTools)&&E(t.blockedNative)&&(t.source===void 0||t.source==="core"||t.source==="plugin")&&(t.requiresContext===void 0||typeof t.requiresContext=="boolean")&&(t.runtimePackages===void 0||E(t.runtimePackages))&&(t.hostTools===void 0||st(t.hostTools))&&(t.evidenceMode===void 0||["static","runtime","mixed"].includes(t.evidenceMode))})}function st(n){return !!n&&typeof n=="object"&&!Array.isArray(n)&&Object.entries(n).every(([e,t])=>e.length>0&&E(t))}function E(n){return Array.isArray(n)&&n.every(e=>typeof e=="string"&&e.length>0)}var lt={react:["react","react-dom"],nextjs:["next","react"],vue:["vue"],nest:["@nestjs/core"],tailwind:["tailwindcss"],taro:["@tarojs/taro"],electron:["electron"],graphql:["graphql"]};function mt(n,e){let t=join(n,"package.json"),r=le(t),o=vt(r,e),i=join(n,"package-lock.json"),s=le(i),a=It(s,e);return a?{packageName:e,...o?{declaredRange:o}:{},resolvedVersion:a,evidencePath:relative(n,i)||"package-lock.json",confidence:"high"}:o?{packageName:e,declaredRange:o,evidencePath:relative(n,t)||"package.json",confidence:"medium"}:{packageName:e,confidence:"unknown"}}function me(n,e,t={}){let r=n.replace(/^devflow:/,"").split(":").pop()??n,o=(lt[r]??[]).map(a=>mt(e,a)),i=t.rolloutMode??resolveCapabilityRollout(e).config.learningOverlays;if(i==="off")return {skillName:n,projectRoot:e,packages:o,learned:[],shadowEligible:[],rolloutMode:i};let s=t.database??openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:50});try{let d=s.listLearningCandidates({projectRoot:e,states:["shadow","evaluated","active"],limit:100}).filter(c=>c.projectRoot===e||c.scope==="global").filter(c=>!c.expiresAt||c.expiresAt>(t.now??Date.now())).filter(c=>gt(c,n,t)).sort((c,f)=>f.confidence-c.confidence||f.updatedAt-c.updatedAt),m=ft(d.map(c=>pt(c,c.state==="active"?"active":"shadow")),t),l=i==="on"?m.filter(c=>c.state==="active"):[],u=m.filter(c=>c.state==="shadow"||i==="shadow");try{s.insertEvent({kind:"learning_overlay_match",timestamp:Date.now(),success:!0,metadata:{projectRoot:e,skillName:n,rolloutMode:i,eligible:m.map(c=>`${c.candidateId}@${c.version}`),injected:l.map(c=>`${c.candidateId}@${c.version}`)}});}catch{}return {skillName:n,projectRoot:e,packages:o,learned:l,shadowEligible:u,rolloutMode:i}}finally{t.database||s.close();}}function pe(n){let e=[],t=n.packages.map(r=>{let o=r.resolvedVersion??r.declaredRange??"unknown";return `${r.packageName}=${o} (confidence=${r.confidence}${r.evidencePath?`, source=${r.evidencePath}`:""})`}).join("; ");return t&&e.push(`DevFlow runtime project-version evidence for ${n.skillName}: ${t}. Treat target-project evidence as authoritative; do not apply a hardcoded framework version.`),n.learned.length>0&&e.push([`DevFlow governed project instructions for ${n.skillName}:`,...n.learned.map(r=>`- ${r.instruction}`),"Apply only to this request and keep canonical Skill/MCP requirements unchanged."].join(`
|
|
1
|
+
import {openGlobalDevFlowDatabase}from'@devflow-tools/database';import {getLocalApiKey,getDevFlowStateRoot,resolveProjectCapabilityProfile,resolveCapabilityRollout,parseTrustedDecisionCommand,claudeCodeRuntimeAdapter,semanticTextHash,stableRuntimeHash,resolveRuntimeActivationSnapshot,getProjectStateDir,domainHash,encodeDecisionValue,canonicalJsonBytes,projectClaudeToolName,acquireRuntimeHttpCircuit,registerRuntimeHttpSuccess,registerRuntimeHttpFailure,readRuntimeState}from'@devflow-tools/sdk';import {existsSync,readFileSync as readFileSync$1,rmSync,mkdirSync,writeFileSync,linkSync,readdirSync,renameSync,unlinkSync}from'fs';import {join as join$1,dirname}from'path';import {randomUUID as randomUUID$1,createHash}from'crypto';import {fileURLToPath}from'url';import {emitSemanticControlLog,SemanticRuntimeEventProjector,rotateDiagnosticLogFile}from'@devflow-tools/telemetry';import {readFileSync,openSync,constants,fstatSync,closeSync,mkdirSync as mkdirSync$1,writeFileSync as writeFileSync$1,renameSync as renameSync$1,realpathSync,existsSync as existsSync$1,appendFileSync}from'node:fs';import {join,resolve,relative}from'node:path';import {request}from'node:http';import {randomUUID,createHash as createHash$1,generateKeyPairSync,sign}from'node:crypto';import {TaskKernel,TaskEventStore}from'@devflow-tools/task-runtime';import {createTrustedDeliveryFacade}from'@devflow-tools/mcp-server/trusted-delivery-runtime';function h(n,e,t){try{let r=openGlobalDevFlowDatabase();try{r.insertEvent({kind:n,timestamp:Date.now(),duration:t,success:e.success!==!1,metadata:e});}finally{r.close();}}catch{}}var B="WARNING: DevFlow is in degraded mode (daemon unreachable): 4-Gate enforcement and memory prefetch cache are unavailable. Run `devflow doctor` for details.";function W(){return process.env.DEVFLOW_HOOK_DEGRADED==="1"}function Ge(n){return n??process.env.CLAUDE_PROJECT_DIR??process.cwd()}function w(n){return getProjectStateDir(Ge(n))}function Z(n){return Buffer.from(n,"utf8").toString("base64url")}function Qe(n,e,t){let r=e?.trim();if(r){let o=/^[a-zA-Z0-9:._-]{1,192}$/.test(r)?r:`tool-${createHash("sha256").update(r.slice(0,1024)).digest("hex").slice(0,32)}`;return `${n}:${o}`}return `${n}:legacy-${t}-${randomUUID$1().slice(0,8)}`}function oe(n){return `${n}:legacy-journal`}var x=class{constructor(e){this.projectRoot=e;this.sessions=new Map;this.sessionsDir=join$1(w(e),"hook-sessions");}registerSession(e){let t=e.trim();if(!t)throw new Error("session_id_required");let r=this.get(t);if(r)return r.lastActivityAt=Date.now(),this.persist(r),r;let o=Date.now(),i={sessionId:t,projectRoot:this.projectRoot,requiredMcpTools:[],evidenceObligations:[],evidenceDegradations:[],evidenceOutcomes:[],startedAt:o,lastActivityAt:o};return this.sessions.set(t,i),this.persist(i),i}startExecution(e,t,r){let o=this.registerSession(e);return (!o.executionId||o.skillName!==t)&&(o.executionId=`exec_${Date.now()}_${randomUUID$1().slice(0,8)}`),o.skillName=t,o.requiredMcpTools=[...new Set(r)],delete o.contextInitialization,o.lastActivityAt=Date.now(),this.persist(o),o}beginContextInitialization(e,t){let r=this.registerSession(e);return r.contextInitialization={startedAt:Date.now(),...t?{toolUseId:t}:{}},r.lastActivityAt=Date.now(),this.persist(r),r}completeContextInitialization(e,t){let r=this.get(e);return r?(t&&r.contextInitialization?.toolUseId&&r.contextInitialization.toolUseId!==t||(delete r.contextInitialization,r.lastActivityAt=Date.now(),this.persist(r)),r):null}bindTaskIdentity(e,t){let r=this.registerSession(e);return r.activeTurnId=t.turnId,r.activeRequestId=t.requestId,r.intentArtifactHash=t.intentArtifactHash,r.lastActivityAt=Date.now(),this.persist(r),r}get(e){let t=e.trim();if(!t)return null;let r=this.sessions.get(t);if(r)return this.replayEvidenceJournal(r),r;let o=this.snapshotPath(t);if(!existsSync(o))return null;try{let i=JSON.parse(readFileSync$1(o,"utf8"));return i.sessionId!==t||i.projectRoot!==this.projectRoot?null:(i.requiredMcpTools=Array.isArray(i.requiredMcpTools)?i.requiredMcpTools:[],i.evidenceObligations=Q(i.evidenceObligations),i.evidenceDegradations=ee(i.evidenceDegradations),i.evidenceOutcomes=te(i.evidenceOutcomes),this.replayEvidenceJournal(i),this.sessions.set(t,i),i)}catch{return null}}completeExecution(e){let t=this.get(e);if(!t)return null;let r=structuredClone(t);return delete t.executionId,delete t.skillName,delete t.contextInitialization,t.requiredMcpTools=[],t.lastActivityAt=Date.now(),this.persist(t),r}addEvidenceObligation(e,t,r=Date.now(),o){let i=this.registerSession(e),a=(o?void 0:i.evidenceObligations.find(u=>u.contractId===t.id))?.obligationId??Qe(t.id,o,r);this.appendEvidenceEvent(e,{kind:"add",obligationId:a,contractId:t.id,at:r,contract:t},`add\0${a}`),this.replayEvidenceJournal(i);let d=i.evidenceObligations.find(u=>u.obligationId===a);return d?(i.lastActivityAt=Date.now(),this.persist(i),structuredClone(d)):null}listEvidenceObligations(e){return (this.get(e)?.evidenceObligations??[]).map(t=>structuredClone(t))}markEvidenceCorrection(e,t,r,o,i=Date.now()){let s=this.get(e),a=s?.evidenceObligations.find(l=>l.obligationId===t);if(!s||!a)return null;let d=/^[a-f0-9]{64}$/.test(o)?o:"";if(!d)return null;this.appendEvidenceEvent(e,{kind:"correction",obligationId:t,contractId:a.contractId,at:i,fingerprint:d,violations:r.slice(0,16).map(l=>l.slice(0,240))},`correction\0${t}\0${d}`),this.replayEvidenceJournal(s),s.lastActivityAt=i,this.persist(s);let u=s.evidenceObligations.find(l=>l.obligationId===t);return u?structuredClone(u):null}resolveEvidenceObligation(e,t){let r=this.get(e);if(!r)return false;let o=r.evidenceObligations.find(s=>s.obligationId===t);if(!o)return false;let i=Date.now();return this.appendEvidenceEvent(e,{kind:"resolve",obligationId:t,contractId:o.contractId,at:i},`resolve\0${t}`),this.replayEvidenceJournal(r),r.lastActivityAt=i,this.persist(r),true}resolveDegradedEvidence(e,t){let r=this.get(e),o=r?.evidenceDegradations.find(s=>s.obligationId===t);if(!r||!o)return false;let i=Date.now();return this.appendEvidenceEvent(e,{kind:"resolve",obligationId:t,contractId:o.contractId,at:i},`resolve-degraded\0${t}\0${i}`),this.replayEvidenceJournal(r),r.lastActivityAt=i,this.persist(r),true}degradeEvidenceObligation(e,t,r,o=Date.now()){let i=this.get(e),s=i?.evidenceObligations.find(d=>d.obligationId===t);if(!i||!s)return false;let a=r.slice(0,240);return this.appendEvidenceEvent(e,{kind:"degrade",obligationId:t,contractId:s.contractId,at:o,reason:a},`degrade\0${t}\0${a}`),this.replayEvidenceJournal(i),i.lastActivityAt=o,this.persist(i),true}removeSession(e){let t=e.trim();t&&(this.sessions.delete(t),rmSync(this.snapshotPath(t),{force:true}),rmSync(this.evidenceJournalDir(t),{recursive:true,force:true}));}list(){return [...this.sessions.values()]}snapshotPath(e){return join$1(this.sessionsDir,`${Z(e)}.json`)}evidenceJournalDir(e){return join$1(this.sessionsDir,"evidence-journal",Z(e))}appendEvidenceEvent(e,t,r){let o=this.evidenceJournalDir(e);mkdirSync(o,{recursive:true,mode:448});let i=createHash("sha256").update(r).digest("hex"),s=join$1(o,`${t.kind}-${i}.json`);if(existsSync(s))return;let a=join$1(o,`.${process.pid}.${randomUUID$1()}.tmp`);writeFileSync(a,JSON.stringify(t),{mode:384});try{linkSync(a,s);}catch(d){if(d.code!=="EEXIST")throw d}finally{rmSync(a,{force:true});}}replayEvidenceJournal(e){e.evidenceObligations=Q(e.evidenceObligations),e.evidenceDegradations=ee(e.evidenceDegradations),e.evidenceOutcomes=te(e.evidenceOutcomes);let t=this.evidenceJournalDir(e.sessionId);if(!existsSync(t))return;let r;try{r=readdirSync(t).filter(i=>/^(?:add|correction|resolve|degrade)-[a-f0-9]{64}\.json$/.test(i)).slice(0,4096);}catch{return}let o=r.flatMap(i=>{try{let s=readFileSync$1(join$1(t,i),"utf8");if(Buffer.byteLength(s,"utf8")>64*1024)return [];let a=et(JSON.parse(s));return a?[a]:[]}catch{return []}}).sort((i,s)=>i.at-s.at||ne(i.kind)-ne(s.kind));for(let i of o)this.applyEvidenceEvent(e,i);e.evidenceObligations=e.evidenceObligations.slice(-8),e.evidenceDegradations=e.evidenceDegradations.slice(-20),e.evidenceOutcomes=e.evidenceOutcomes.slice(-20);}applyEvidenceEvent(e,t){let r=e.evidenceOutcomes.find(s=>s.obligationId===t.obligationId);if(t.kind==="add"){if(r)return;let s=e.evidenceObligations.find(a=>a.obligationId===t.obligationId);s?(s.contract=t.contract,s.promptedAt=Math.min(s.promptedAt,t.at)):e.evidenceObligations.push({obligationId:t.obligationId,contractId:t.contractId,contract:t.contract,promptedAt:t.at,attempt:0,correctionRequested:false,violations:[]});return}let o=e.evidenceObligations.find(s=>s.obligationId===t.obligationId);if(t.kind==="correction"){if(!o||r||o.correctionFingerprint===t.fingerprint)return;o.attempt+=1,o.correctionRequested=true,o.correctionRequestedAt=t.at,o.correctionFingerprint=t.fingerprint,o.violations=t.violations;return}let i=o?.attempt??r?.attempt??0;if(t.kind==="resolve"&&r?.status==="degraded")e.evidenceOutcomes=e.evidenceOutcomes.filter(s=>s.obligationId!==t.obligationId),e.evidenceDegradations=e.evidenceDegradations.filter(s=>s.obligationId!==t.obligationId);else if(r)return;t.kind==="degrade"?(e.evidenceObligations=e.evidenceObligations.filter(s=>s.obligationId!==t.obligationId),e.evidenceDegradations.push({obligationId:t.obligationId,contractId:t.contractId,reason:t.reason,degradedAt:t.at,attempt:i,contract:o?.contract})):e.evidenceObligations=e.evidenceObligations.filter(s=>s.obligationId!==t.obligationId),e.evidenceOutcomes.push({obligationId:t.obligationId,contractId:t.contractId,status:t.kind==="resolve"?"resolved":"degraded",completedAt:t.at,attempt:i,...t.kind==="degrade"?{reason:t.reason}:{}});}persist(e){mkdirSync(this.sessionsDir,{recursive:true,mode:448});let t=this.snapshotPath(e.sessionId),r=`${t}.${process.pid}.${randomUUID$1()}.tmp`;writeFileSync(r,JSON.stringify(e),{mode:384}),renameSync(r,t);}};function Q(n){return Array.isArray(n)?n.flatMap(e=>{if(!e||typeof e!="object")return [];let t=e;if(typeof t.contractId!="string"||t.contractId.length===0||t.contractId.length>128||typeof t.promptedAt!="number"||typeof t.attempt!="number"||typeof t.correctionRequested!="boolean"||!Array.isArray(t.violations)||!ie(t.contract))return [];let r=typeof t.obligationId=="string"&&t.obligationId.length>0&&t.obligationId.length<=384?t.obligationId:oe(t.contractId),o=typeof t.correctionTranscriptHash=="string"?t.correctionTranscriptHash:void 0,i=t.correctionFingerprint??o;return i!==void 0&&!/^[a-f0-9]{64}$/.test(i)?[]:[{...t,obligationId:r,correctionFingerprint:i}]}).slice(-8):[]}function ee(n){return Array.isArray(n)?n.filter(e=>{if(!e||typeof e!="object")return false;let t=e;return typeof t.obligationId=="string"&&typeof t.contractId=="string"&&typeof t.reason=="string"&&typeof t.degradedAt=="number"&&typeof t.attempt=="number"}).slice(-20):[]}function te(n){return Array.isArray(n)?n.filter(e=>{if(!e||typeof e!="object")return false;let t=e;return typeof t.obligationId=="string"&&typeof t.contractId=="string"&&(t.status==="resolved"||t.status==="degraded")&&typeof t.completedAt=="number"&&typeof t.attempt=="number"&&(t.reason===void 0||typeof t.reason=="string")}).slice(-20):[]}function et(n){if(!n||typeof n!="object")return null;let e=n,t=e.kind;if(t!=="add"&&t!=="correction"&&t!=="resolve"&&t!=="degrade"||typeof e.contractId!="string"||e.contractId.length>128||typeof e.at!="number")return null;let o={obligationId:typeof e.obligationId=="string"&&e.obligationId.length>0&&e.obligationId.length<=384?e.obligationId:oe(e.contractId),contractId:e.contractId,at:e.at};if(t==="add")return ie(e.contract)?{kind:t,...o,contract:e.contract}:null;if(t==="correction"){let i=typeof e.fingerprint=="string"?e.fingerprint:e.transcriptHash;return typeof i=="string"&&/^[a-f0-9]{64}$/.test(i)&&Array.isArray(e.violations)&&e.violations.every(s=>typeof s=="string"&&s.length<=240)?{kind:t,...o,fingerprint:i,violations:e.violations}:null}return t==="resolve"?{kind:t,...o}:typeof e.reason=="string"&&e.reason.length<=240?{kind:t,...o,reason:e.reason}:null}function ne(n){return n==="add"?0:n==="correction"?1:2}function ie(n){if(!n||typeof n!="object")return false;let e=n,t=e.requiredSections,r=e.prohibitedClaims;return e.version==="1.0"&&typeof e.id=="string"&&/^[a-zA-Z0-9][a-zA-Z0-9:._-]{0,127}$/.test(e.id)&&typeof e.runtimeProfilingOccurred=="boolean"&&typeof e.samplingEvidenceOccurred=="boolean"&&Array.isArray(t)&&t.length===3&&t[0]==="\u5DE5\u5177\u53D1\u73B0"&&t[1]==="\u6A21\u578B\u5047\u8BBE"&&t[2]==="\u9700\u8981\u8FD0\u884C\u65F6\u9A8C\u8BC1"&&Array.isArray(r)&&r.length<=16&&r.every(o=>typeof o=="string"&&o.length<=128)&&typeof e.canonicalReport=="string"&&Buffer.byteLength(e.canonicalReport,"utf8")<=48*1024&&!!e.correctionPolicy&&e.correctionPolicy.maxAttempts===1&&e.correctionPolicy.repeatedViolation==="fail_open"}function tt(n){let e=n.trim().replace(/^\//,"");if(!e.startsWith("devflow:"))return null;let t=e.slice(8).replace(/^devflow-/,"");return /^[a-z0-9][a-z0-9-]*$/i.test(t)?`devflow:${t.toLowerCase()}`:null}function se(n){let e=n.trimStart().match(/^\/(devflow:[a-z0-9][a-z0-9-]*)\b/i);if(!e)return null;let t=tt(e[1]);return t?{rawName:e[1],skillName:t}:null}var p=emitSemanticControlLog;var at=2,ct=1;function dt(){if(process.env.CLAUDE_PLUGIN_ROOT)return process.env.CLAUDE_PLUGIN_ROOT;try{return join$1(dirname(fileURLToPath(import.meta.url)),"..","..")}catch{return process.cwd()}}function ae(n=dt()){let e=[join$1(n,"dist","command-registry.json"),join$1(n,"command-registry.json")];for(let t of e)try{if(!existsSync(t))continue;let r=JSON.parse(readFileSync$1(t,"utf8"));if(r.version!==at&&r.version!==ct||!lt(r.commands)){p({event:"hook.runtime.degraded",identity:{projectRoot:process.env.CLAUDE_PROJECT_DIR||process.cwd()},level:"warn",timestamp:Date.now(),data:{stage:"command_registry",reason:"contract_mismatch",registryPath:t}});continue}return r.commands}catch(r){p({event:"hook.runtime.degraded",identity:{projectRoot:process.env.CLAUDE_PROJECT_DIR||process.cwd()},level:"warn",timestamp:Date.now(),data:{stage:"command_registry",reason:r.message,fallback:"next_registry_candidate"}});}return null}function lt(n){return !n||typeof n!="object"||Array.isArray(n)?false:Object.values(n).every(e=>{if(!e||typeof e!="object"||Array.isArray(e))return false;let t=e;return D(t.mcpTools)&&D(t.blockedNative)&&(t.source===void 0||t.source==="core"||t.source==="plugin")&&(t.requiresContext===void 0||typeof t.requiresContext=="boolean")&&(t.runtimePackages===void 0||D(t.runtimePackages))&&(t.hostTools===void 0||ut(t.hostTools))&&(t.evidenceMode===void 0||["static","runtime","mixed"].includes(t.evidenceMode))})}function ut(n){return !!n&&typeof n=="object"&&!Array.isArray(n)&&Object.entries(n).every(([e,t])=>e.length>0&&D(t))}function D(n){return Array.isArray(n)&&n.every(e=>typeof e=="string"&&e.length>0)}var yt={react:["react","react-dom"],nextjs:["next","react"],vue:["vue"],nest:["@nestjs/core"],tailwind:["tailwindcss"],taro:["@tarojs/taro"],electron:["electron"],graphql:["graphql"]};function ht(n,e){let t=join(n,"package.json"),r=ue(t),o=St(r,e),i=join(n,"package-lock.json"),s=ue(i),a=Rt(s,e);return a?{packageName:e,...o?{declaredRange:o}:{},resolvedVersion:a,evidencePath:relative(n,i)||"package-lock.json",confidence:"high"}:o?{packageName:e,declaredRange:o,evidencePath:relative(n,t)||"package.json",confidence:"medium"}:{packageName:e,confidence:"unknown"}}function me(n,e,t={}){let r=n.replace(/^devflow:/,"").split(":").pop()??n,o=(yt[r]??[]).map(a=>ht(e,a)),i=t.rolloutMode??resolveCapabilityRollout(e).config.learningOverlays;if(i==="off")return {skillName:n,projectRoot:e,packages:o,learned:[],shadowEligible:[],rolloutMode:i};let s=t.database??openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:50});try{let d=s.listLearningCandidates({projectRoot:e,states:["shadow","evaluated","active"],limit:100}).filter(c=>c.projectRoot===e||c.scope==="global").filter(c=>!c.expiresAt||c.expiresAt>(t.now??Date.now())).filter(c=>bt(c,n,t)).sort((c,f)=>f.confidence-c.confidence||f.updatedAt-c.updatedAt),u=It(d.map(c=>vt(c,c.state==="active"?"active":"shadow")),t),l=i==="on"?u.filter(c=>c.state==="active"):[],m=u.filter(c=>c.state==="shadow"||i==="shadow");try{s.insertEvent({kind:"learning_overlay_match",timestamp:Date.now(),success:!0,metadata:{projectRoot:e,skillName:n,rolloutMode:i,eligible:u.map(c=>`${c.candidateId}@${c.version}`),injected:l.map(c=>`${c.candidateId}@${c.version}`)}});}catch{}return {skillName:n,projectRoot:e,packages:o,learned:l,shadowEligible:m,rolloutMode:i}}finally{t.database||s.close();}}function pe(n){let e=[],t=n.packages.map(r=>{let o=r.resolvedVersion??r.declaredRange??"unknown";return `${r.packageName}=${o} (confidence=${r.confidence}${r.evidencePath?`, source=${r.evidencePath}`:""})`}).join("; ");return t&&e.push(`DevFlow runtime project-version evidence for ${n.skillName}: ${t}. Treat target-project evidence as authoritative; do not apply a hardcoded framework version.`),n.learned.length>0&&e.push([`DevFlow governed project instructions for ${n.skillName}:`,...n.learned.map(r=>`- ${r.instruction}`),"Apply only to this request and keep canonical Skill/MCP requirements unchanged."].join(`
|
|
2
2
|
`)),e.join(`
|
|
3
|
-
`)}function
|
|
4
|
-
`;rotateDiagnosticLogFile({path:t,maxBytes:50*1024*1024,maxFiles:5,incomingBytes:Buffer.byteLength(r)}),appendFileSync(t,r);}catch{}}function jt(n){return new Promise(e=>setTimeout(e,n))}var we=1e4,Ht=3e4,M=500,C=class{constructor(e){this.retryScheduled=false;this.metricAggregationScheduled=false;this.apiUrl=e?.apiUrl,this.cacheDir=e?.cacheDir??join$1(getDevFlowStateRoot(),"global","telemetry-cache"),this.database=e?.database??null,this.ownsDatabase=!e?.database;let t=e?.busyTimeoutMs??Number(process.env.DEVFLOW_TELEMETRY_DB_BUSY_TIMEOUT_MS);this.busyTimeoutMs=Number.isSafeInteger(t)&&t>=0?t:100;}async sendEvent(e){let t={...e,input:this.truncateInput(e.input)};return this.commitOrCache("tool_call",t)?(this.postHttp("/api/telemetry/tool-call",t),e.eventId):null}async sendExecutionStart(e,t,r,o,i=process.env.CLAUDE_PROJECT_DIR??process.cwd(),s=[]){let a={executionId:e,sessionId:t,skillName:r,startedAt:o,projectRoot:i,requiredMcpTools:s};this.commitOrCache("execution_start",a)&&this.postHttp("/api/telemetry/skill-execution/start",a);}async sendExecutionComplete(e,t="completed",r=Date.now(),o){let i={executionId:e,status:t,finishedAt:r,metadata:o},s=this.commitOrCache("execution_complete",i);return s&&this.postHttp("/api/telemetry/skill-execution/complete-reconciled",i),s}async sendSessionStart(e,t,r){let o={id:e,projectRoot:t,startedAt:r,label:t.split("/").pop()??"unknown"},i=this.commitOrCache("session_start",o);return i&&this.postHttp("/api/telemetry/sessions",o),i}async completeEvent(e){let t=this.commitOrCache("complete_event",e);return t&&(this.postHttp("/api/telemetry/tool-call/output",e),this.scheduleMetricAggregation()),t}async endSession(e,t=Date.now()){let r={sessionId:e,finishedAt:t},o=this.commitOrCache("session_end",r);return o&&(this.getDatabase().aggregatePendingToolMetrics(),this.postHttp(`/api/telemetry/sessions/${encodeURIComponent(e)}/close`,{finishedAt:t})),o}async flushCache(){try{let t=this.getDatabase(),r=t.listTelemetryFailures({unresolvedOnly:!0,limit:M}).reverse();for(let o of r)try{this.applyOperation(o.operation,o.payload),t.resolveTelemetryFailure(o.id);}catch{}t.trimTelemetryFailures(M);}catch{}let e=(existsSync(this.cacheDir)?readdirSync(this.cacheDir):[]).filter(t=>t.endsWith(".json")).map(t=>{let r=join$1(this.cacheDir,t);try{return {cacheFile:r,envelope:qt(JSON.parse(readFileSync$1(r,"utf8")))}}catch{return null}}).filter(t=>t!==null).sort((t,r)=>t.envelope.timestamp-r.envelope.timestamp||Se(t.envelope.operation)-Se(r.envelope.operation));for(let{cacheFile:t,envelope:r}of e)try{let o=this.getDatabase();o.insertTelemetryFailure({id:r.id,operation:r.operation,payload:r.payload,error:r.failure,createdAt:r.timestamp}),this.applyOperation(r.operation,r.payload),o.resolveTelemetryFailure(r.id),unlinkSync(t);}catch{}this.database?.aggregatePendingToolMetrics();}aggregateMetrics(){return this.getDatabase().aggregatePendingToolMetrics()}async flushAndAggregate(){await this.flushCache(),this.aggregateMetrics();}close(){this.ownsDatabase&&this.database?.close(),this.database=null;}getDatabase(){return this.database??=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:this.busyTimeoutMs}),this.database}commitOrCache(e,t){try{return this.applyOperation(e,t),!0}catch(r){return this.cacheOperation(e,t,r),false}}applyOperation(e,t){let r=this.getDatabase();switch(e){case "tool_call":this.ensureParentSession(r,t),r.insertToolCallEvent(t);return;case "execution_start":this.ensureParentSession(r,t),r.insertSkillExecution({executionId:t.executionId,sessionId:t.sessionId,skillName:t.skillName,startedAt:t.startedAt,status:"running",requiredMcpTools:t.requiredMcpTools});return;case "execution_complete":r.reconcileSkillExecution(t.executionId,t.status,t.finishedAt,t.metadata);return;case "session_start":r.ensureSession(t),r.insertRun({id:Re(t.id),source:"hook",tool:"session",input:{projectRoot:t.projectRoot},status:"active",startedAt:t.startedAt,tokenUsed:0,metadata:{sessionId:t.id,projectRoot:t.projectRoot}});return;case "complete_event":if(!r.updateToolCallEvent(t.eventId,{output:t.output===void 0?void 0:JSON.stringify(t.output),error:t.error,failureCategory:t.failureCategory,duration:t.duration}))throw new Error(`Tool call event ${t.eventId} is not available for completion`);return;case "session_end":r.closeSession(t.sessionId,t.finishedAt),r.updateRun(Re(t.sessionId),{status:"completed",finishedAt:t.finishedAt});return}}ensureParentSession(e,t){let r=typeof t.sessionId=="string"?t.sessionId.trim():"";if(!r)throw new Error("Canonical session ID is required for telemetry");let o=typeof t.projectRoot=="string"&&t.projectRoot.trim()?t.projectRoot:typeof t.input?.projectRoot=="string"&&t.input.projectRoot.trim()?t.input.projectRoot:process.env.CLAUDE_PROJECT_DIR??"unknown";e.ensureSession({id:r,projectRoot:o,label:o==="unknown"?void 0:o.split("/").pop(),startedAt:Number(t.startedAt??t.timestamp??Date.now())});}cacheOperation(e,t,r){let o=Date.now(),i={id:`failure:${o}:${Math.random().toString(36).slice(2,11)}`,operation:e,payload:t,failure:r instanceof Error?r.message:String(r),timestamp:o};try{let s=this.getDatabase();s.insertTelemetryFailure({id:i.id,operation:e,payload:t,error:i.failure,createdAt:o}),s.trimTelemetryFailures(M),this.scheduleRetry();return}catch{}try{existsSync(this.cacheDir)||mkdirSync(this.cacheDir,{recursive:!0});let s=join$1(this.cacheDir,`${o}_${Math.random().toString(36).slice(2,11)}.json`);writeFileSync(s,JSON.stringify(i,null,2),{mode:384}),this.trimRetryCache(),this.scheduleRetry();}catch{}}trimRetryCache(){try{let e=readdirSync(this.cacheDir).filter(t=>t.endsWith(".json")).sort();for(let t of e.slice(0,Math.max(0,e.length-M)))unlinkSync(join$1(this.cacheDir,t));}catch{}}scheduleRetry(){this.retryScheduled||(this.retryScheduled=true,setTimeout(()=>{this.retryScheduled=false,this.flushCache();},Ht).unref());}scheduleMetricAggregation(){if(this.metricAggregationScheduled||process.env.DEVFLOW_HOOK_DEGRADED==="1")return;this.metricAggregationScheduled=true,setTimeout(()=>{this.metricAggregationScheduled=false;try{this.getDatabase().aggregatePendingToolMetrics(50)===50&&this.scheduleMetricAggregation();}catch{}},25).unref();}postHttp(e,t){ve(e,t,{endpoint:this.apiUrl,fallbackReason:"telemetry_already_committed_locally"});}truncateInput(e){let t=JSON.stringify(e);return t===void 0||t.length<=we?e:{_truncated:true,_original_size:t.length,_preview:`${t.substring(0,we)}...`}}};function Se(n){return ["session_start","execution_start","tool_call","complete_event","execution_complete","session_end"].indexOf(n)}function Re(n){return `hook-run:${n}`}function qt(n){if(!n||typeof n!="object")throw new Error("Invalid telemetry cache envelope");let e=n;if(typeof e.id!="string"||typeof e.operation!="string"||e.payload===void 0||typeof e.failure!="string"||typeof e.timestamp!="number")throw new Error("Invalid telemetry cache envelope");return e}var Ut=/^\/(?:devflow:)?[\w-]+\b\s*/iu,Jt=/\b(?:(?:do\s+not|don't|dont|never|not)(?:\s+need\s+to)?|no\s+need\s+to)\s+(?:please\s+)?(?:remember|memorize)\b|(?:不要|别|不用|无需|不必|不需要)(?:再)?(?:记住|记|记忆)/iu,zt=/(?:^|[.!?]\s*)(?:(?:please|kindly)\s+)?(?:remember|memorize|save\s+this|store\s+this|note\s+that)(?:\s+(?:that|to))?[\s:,-]*(.+)$/iu,Vt=/(?:^|[。!?;,,]\s*)(?:(?:请|麻烦|务必|一定要|帮我|帮忙|需要)\s*)?(?:记住|记一下|记下来|记|记录一下|记录下来|保存一下|保存下来)(?:这(?:件事|一点|个信息|些内容))?[\s::,,]*(.+)$/iu;function w(n){let e=n.trim().replace(Ut,"").trim();return !e||Jt.test(e)?null:(Vt.exec(e)??zt.exec(e))?.[1]?.trim().replace(/^[::,,\s]+/u,"")||null}var T=1,Zt="memory-snapshot-v1.json",Qt=512*1024,Ae=256*1024,De=2e3,en=500,tn=10,nn=240,rn=300*1e3,on=720*60*60*1e3,sn=2147483647;function an(n){return n.currentUid===void 0?{ownerSafe:true,modeSafe:true}:{ownerSafe:n.ownerUid===n.currentUid,modeSafe:(n.mode&18)===0}}function I(n){return resolve(n)}function S(n){return createHash$1("sha256").update(I(n)).digest("hex").slice(0,16)}function cn(n,e={}){let t=S(n),r=e.stateRoot?join(e.stateRoot,t):getProjectStateDir(I(n));return join(r,Zt)}function dn(n,e){let r=(n instanceof Error?n.message:"").replace(/[\r\n\t]+/gu," ").trim().slice(0,160);return r?`${e}:${r}`:e}function H(n,e){return Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&t.length>0&&t.length<=512)}function un(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n;return typeof e.id=="string"&&e.id.length>0&&e.id.length<=512&&typeof e.kind=="string"&&e.kind.length>0&&e.kind.length<=128&&(e.family===void 0||typeof e.family=="string"&&e.family.length>0&&e.family.length<=256)&&(e.entity===void 0||typeof e.entity=="string"&&e.entity.length>0&&e.entity.length<=256)&&H(e.memoryIds,100)&&(e.status==="withheld"||e.status==="resolved")&&(e.summary===void 0||typeof e.summary=="string"&&e.summary.length<=2e3)}function ln(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n;return typeof e.reason=="string"&&e.reason.length>0&&e.reason.length<=512&&(e.stale===void 0||typeof e.stale=="boolean")}function Me(n,e,t){if(!n||typeof n!="object"||Array.isArray(n))return null;let r=n,o=I(e),i=S(o),s=r.generation===void 0?0:r.generation;return r.version!==T||r.projectRoot!==o||r.projectHash!==i||typeof r.markdown!="string"||Buffer.byteLength(r.markdown,"utf8")>Ae||!H(r.memoryIds,De)||!Array.isArray(r.conflicts)||r.conflicts.length>en||!r.conflicts.every(un)||typeof r.generatedAt!="number"||!Number.isFinite(r.generatedAt)||r.generatedAt<0||r.generatedAt>t+rn||!Number.isInteger(s)||s<0||s>sn||!["ready","pending","degraded","disabled"].includes(String(r.status))||r.degradation!==void 0&&!ln(r.degradation)?null:{...r,generation:s}}function mn(n,e,t,r,o=0){let i=I(n);return {version:T,projectRoot:i,projectHash:S(i),markdown:"",memoryIds:[],conflicts:[],generatedAt:r,generation:o,status:e,degradation:{reason:t}}}function pn(n,e={}){let t=e.now??Date.now(),r=cn(n,e),o;try{o=openSync(r,constants.O_RDONLY|constants.O_NOFOLLOW);let i=fstatSync(o);if(!i.isFile()||i.size<=0||i.size>Qt)throw new Error("cache_size_invalid");let s=an({...typeof process.getuid=="function"?{currentUid:process.getuid()}:{},ownerUid:i.uid,mode:i.mode});if(!s.ownerSafe)throw new Error("cache_owner_invalid");if(!s.modeSafe)throw new Error("cache_permissions_unsafe");let a=JSON.parse(readFileSync(o,"utf8")),d=Me(a,n,t);if(!d)throw new Error("cache_schema_invalid");return d.status==="ready"&&t-d.generatedAt>on?{snapshot:{...d,status:"degraded",degradation:{reason:"cache_stale",stale:!0}},source:"cache",valid:!0,stale:!0}:{snapshot:d,source:"cache",valid:!0,stale:!1}}catch(i){let a=i.code==="ENOENT";return {snapshot:mn(n,a?"pending":"degraded",a?"cache_missing":dn(i,"cache_invalid"),t),source:"none",valid:false,stale:false}}finally{if(o!==void 0)try{closeSync(o);}catch{}}}function fn(n){if(!n)return true;try{return JSON.parse(readFileSync(n,"utf8")).sessionStart?.injectMemories??!0}catch{return true}}function gn(n,e,t){if(!e.trim())return null;try{let r=JSON.parse(e);if(r.status!=="ok"&&r.status!=="degraded")return null;if(r.enabled===!1){let i=I(n);return {version:T,projectRoot:i,projectHash:S(i),markdown:"",memoryIds:[],conflicts:[],generatedAt:t,generation:0,status:"disabled"}}let o=Me(r.snapshot,n,t);if(o)return o;if(r.status==="ok"&&typeof r.markdown=="string"&&r.markdown.length>0&&Buffer.byteLength(r.markdown,"utf8")<=Ae){let i=I(n);return {version:T,projectRoot:i,projectHash:S(i),markdown:r.markdown,memoryIds:H(r.memoryIds,De)?r.memoryIds:[],conflicts:[],generatedAt:t,generation:0,status:"ready"}}}catch{}return null}function F(n,e){return [...(n??e).replace(/[\r\n\t|]+/gu," ").trim()||e].slice(0,nn).join("")}function yn(n){if(n.length===0)return "";let e=n.slice(0,tn),t=e.map(r=>{let o=F(r.family,"unknown"),i=F(r.entity,"unknown"),s=F(r.summary,"Explicit choice required.");return `- family=${o}; entity=${i}; status=${r.status}; summary=${s}`});return n.length>e.length&&t.push(`- ${n.length-e.length} additional conflict(s) omitted from SessionStart output.`),`## Withheld preference conflicts (${n.length})
|
|
3
|
+
`)}function vt(n,e){return {candidateId:n.id,version:n.overlayVersion,state:e,instruction:n.instruction,trigger:n.trigger,confidence:n.confidence,evidenceReceipt:n.graderReceipt??`candidate:${n.id}:v${n.overlayVersion}`,expiresAt:n.expiresAt}}function It(n,e){let t=Math.max(0,Math.min(e.maxLearnedEntries??3,3)),r=Math.max(0,Math.min(e.learnedCharacterBudget??1600,4e3)),o=[],i=0;for(let s of n){if(o.length>=t)break;let a=s.instruction.length+4;i+a>r||(o.push(s),i+=a);}return o}function bt(n,e,t){let r=n.trigger,o=e.replace(/^devflow:/,"").split(":").pop()??e,i=E(r.skills);if(i.length>0&&!i.some(c=>c===e||c===o||c.endsWith(`:${o}`)))return false;let s=(t.prompt??"").normalize("NFKC").toLocaleLowerCase("en-US"),a=(t.command??"").normalize("NFKC").toLocaleLowerCase("en-US"),d=[...t.files??[],...wt(t.prompt??"")].map(c=>c.replaceAll("\\","/").toLocaleLowerCase("en-US")),u=E(r.commands).map(le);if(u.length>0&&!u.some(c=>a.includes(c)||s.includes(c)))return false;let l=E(r.entities).map(le);if(l.length>0&&!l.some(c=>s.includes(c)||a.includes(c)))return false;let m=E(r.files).map(c=>c.replaceAll("\\","/").toLocaleLowerCase("en-US"));return !(m.length>0&&!m.some(c=>d.some(f=>kt(f,c))))}function wt(n){return n.match(/(?:^|\s)((?:src|app|apps|packages|plugins|lib|test|tests)\/[A-Za-z0-9_./@-]+)/gu)?.map(e=>e.trim())??[]}function kt(n,e){if(!e.includes("*"))return n===e||n.includes(e);let t=e.replace(/[.+?^${}()|[\]\\]/gu,"\\$&").replaceAll("*",".*");return new RegExp(`^${t}$`,"u").test(n)}function E(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.trim().length>0):[]}function le(n){return n.normalize("NFKC").trim().toLocaleLowerCase("en-US")}function ue(n){if(!existsSync$1(n))return null;try{let e=JSON.parse(readFileSync(n,"utf8"));return e&&typeof e=="object"&&!Array.isArray(e)?e:null}catch{return null}}function St(n,e){for(let t of ["dependencies","devDependencies","peerDependencies","optionalDependencies"]){let r=n?.[t];if(!r||typeof r!="object"||Array.isArray(r))continue;let o=r[e];if(typeof o=="string"&&o.trim())return o.trim()}}function Rt(n,e){let t=n?.packages;if(t&&typeof t=="object"&&!Array.isArray(t)){let o=t[`node_modules/${e}`];if(o&&typeof o=="object"&&!Array.isArray(o)){let i=o.version;if(typeof i=="string"&&i.trim())return i.trim()}}let r=n?.dependencies;if(r&&typeof r=="object"&&!Array.isArray(r)){let o=r[e];if(o&&typeof o=="object"&&!Array.isArray(o)){let i=o.version;if(typeof i=="string"&&i.trim())return i.trim()}}}function fe(n){let e=ae();return e?e[n]?.mcpTools??[]:[]}function ge(n,e,t){return pe(me(n,e,{prompt:t}))}var Pt=getLocalApiKey(),N=join(getDevFlowStateRoot(),"errors");async function ve(n,e,t={}){let r=t.endpoint??process.env.DEVFLOW_SERVER_URL?.trim()??Ft();if(!r)return {delivered:false,suppressed:false,fallbackReason:"runtime_not_ready"};let o=t.timeout??1500,i=t.durableMirror??true,s=t.maxRetries??(i?0:2),a=t.circuitBreaker??true,d=acquireRuntimeHttpCircuit(r,n);if(a&&!d.allowed)return {delivered:false,suppressed:true,fallbackReason:d.state.fallbackReason};let u;for(let m=0;m<=s;m+=1)try{return await Nt(r,n,e,o),a&®isterRuntimeHttpSuccess(r,n).transitioned&&h("http_circuit_transition",{endpoint:r,path:new URL(n,r).pathname,previous:d.state.status,status:"closed",failures:0}),{delivered:!0,suppressed:!1}}catch(c){u=c instanceof Error?c:new Error(String(c)),m<s&&await Ht(Math.min(100*2**m,1e3));}if(!u)return {delivered:false,suppressed:false,fallbackReason:"unknown_http_failure"};if(!a)return ye(n,u),{delivered:false,suppressed:false,fallbackReason:u.message};let l=registerRuntimeHttpFailure(r,n,t.fallbackReason??(i?"local_durable_mirror":"http_delivery_failed"));return l.transitioned&&(ye(n,u),h("http_circuit_transition",{endpoint:r,path:new URL(n,r).pathname,previous:d.state.status,status:"open",failures:l.state.failures,openUntil:l.state.openUntil,fallbackReason:l.state.fallbackReason})),{delivered:false,suppressed:false,fallbackReason:l.state.fallbackReason}}function Ft(){let n=readRuntimeState();return n?.status==="ready"&&n.dashboardAvailable?n.url:void 0}function Nt(n,e,t,r){return new Promise((o,i)=>{let s=JSON.stringify(t),a=new URL(e,n),d=false,u=m=>{d||(d=true,m?i(m):o());},l=request({hostname:a.hostname,port:a.port,path:a.pathname+a.search,method:"POST",headers:{"Content-Type":"application/json","X-API-Key":Pt,"Content-Length":Buffer.byteLength(s)},timeout:r},m=>{m.on("error",u),m.on("end",()=>{let c=m.statusCode??0;u(c>=200&&c<300?void 0:new Error(`HTTP ${c}`));}),m.resume();});l.on("error",u),l.on("timeout",()=>l.destroy(new Error(`HTTP mirror timed out after ${r}ms`))),l.write(s),l.end();})}function ye(n,e){try{existsSync$1(N)||mkdirSync$1(N,{recursive:!0});let t=join(N,"http-errors.log"),r=`${new Date().toISOString()} | ${n} | ${e.message}
|
|
4
|
+
`;rotateDiagnosticLogFile({path:t,maxBytes:50*1024*1024,maxFiles:5,incomingBytes:Buffer.byteLength(r)}),appendFileSync(t,r);}catch{}}function Ht(n){return new Promise(e=>setTimeout(e,n))}var ke=1e4,Jt=3e4,T=500,C=class{constructor(e){this.retryScheduled=false;this.metricAggregationScheduled=false;this.apiUrl=e?.apiUrl,this.cacheDir=e?.cacheDir??join$1(getDevFlowStateRoot(),"global","telemetry-cache"),this.database=e?.database??null,this.ownsDatabase=!e?.database;let t=e?.busyTimeoutMs??Number(process.env.DEVFLOW_TELEMETRY_DB_BUSY_TIMEOUT_MS);this.busyTimeoutMs=Number.isSafeInteger(t)&&t>=0?t:100;}async sendEvent(e){let t={...e,input:this.truncateInput(e.input)};return this.commitOrCache("tool_call",t)?(this.postHttp("/api/telemetry/tool-call",t),e.eventId):null}async sendExecutionStart(e,t,r,o,i=process.env.CLAUDE_PROJECT_DIR??process.cwd(),s=[]){let a={executionId:e,sessionId:t,skillName:r,startedAt:o,projectRoot:i,requiredMcpTools:s};this.commitOrCache("execution_start",a)&&this.postHttp("/api/telemetry/skill-execution/start",a);}async sendExecutionComplete(e,t="completed",r=Date.now(),o){let i={executionId:e,status:t,finishedAt:r,metadata:o},s=this.commitOrCache("execution_complete",i);return s&&this.postHttp("/api/telemetry/skill-execution/complete-reconciled",i),s}async sendSessionStart(e,t,r){let o={id:e,projectRoot:t,startedAt:r,label:t.split("/").pop()??"unknown"},i=this.commitOrCache("session_start",o);return i&&this.postHttp("/api/telemetry/sessions",o),i}async completeEvent(e){let t=this.commitOrCache("complete_event",e);return t&&(this.postHttp("/api/telemetry/tool-call/output",e),this.scheduleMetricAggregation()),t}async endSession(e,t=Date.now()){let r={sessionId:e,finishedAt:t},o=this.commitOrCache("session_end",r);return o&&(this.getDatabase().aggregatePendingToolMetrics(),this.postHttp(`/api/telemetry/sessions/${encodeURIComponent(e)}/close`,{finishedAt:t})),o}async flushCache(){try{let t=this.getDatabase(),r=t.listTelemetryFailures({unresolvedOnly:!0,limit:T}).reverse();for(let o of r)try{this.applyOperation(o.operation,o.payload),t.resolveTelemetryFailure(o.id);}catch{}t.trimTelemetryFailures(T);}catch{}let e=(existsSync(this.cacheDir)?readdirSync(this.cacheDir):[]).filter(t=>t.endsWith(".json")).map(t=>{let r=join$1(this.cacheDir,t);try{return {cacheFile:r,envelope:Vt(JSON.parse(readFileSync$1(r,"utf8")))}}catch{return null}}).filter(t=>t!==null).sort((t,r)=>t.envelope.timestamp-r.envelope.timestamp||Se(t.envelope.operation)-Se(r.envelope.operation));for(let{cacheFile:t,envelope:r}of e)try{let o=this.getDatabase();o.insertTelemetryFailure({id:r.id,operation:r.operation,payload:r.payload,error:r.failure,createdAt:r.timestamp}),this.applyOperation(r.operation,r.payload),o.resolveTelemetryFailure(r.id),unlinkSync(t);}catch{}this.database?.aggregatePendingToolMetrics();}aggregateMetrics(){return this.getDatabase().aggregatePendingToolMetrics()}async flushAndAggregate(){await this.flushCache(),this.aggregateMetrics();}close(){this.ownsDatabase&&this.database?.close(),this.database=null;}getDatabase(){return this.database??=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:this.busyTimeoutMs}),this.database}commitOrCache(e,t){try{return this.applyOperation(e,t),!0}catch(r){return this.cacheOperation(e,t,r),false}}applyOperation(e,t){let r=this.getDatabase();switch(e){case "tool_call":this.ensureParentSession(r,t),r.insertToolCallEvent(t);return;case "execution_start":this.ensureParentSession(r,t),r.insertSkillExecution({executionId:t.executionId,sessionId:t.sessionId,skillName:t.skillName,startedAt:t.startedAt,status:"running",requiredMcpTools:t.requiredMcpTools});return;case "execution_complete":r.reconcileSkillExecution(t.executionId,t.status,t.finishedAt,t.metadata);return;case "session_start":r.ensureSession(t),r.insertRun({id:Re(t.id),source:"hook",tool:"session",input:{projectRoot:t.projectRoot},status:"active",startedAt:t.startedAt,tokenUsed:0,metadata:{sessionId:t.id,projectRoot:t.projectRoot}});return;case "complete_event":if(!r.updateToolCallEvent(t.eventId,{output:t.output===void 0?void 0:JSON.stringify(t.output),error:t.error,failureCategory:t.failureCategory,duration:t.duration}))throw new Error(`Tool call event ${t.eventId} is not available for completion`);return;case "session_end":r.closeSession(t.sessionId,t.finishedAt),r.updateRun(Re(t.sessionId),{status:"completed",finishedAt:t.finishedAt});return}}ensureParentSession(e,t){let r=typeof t.sessionId=="string"?t.sessionId.trim():"";if(!r)throw new Error("Canonical session ID is required for telemetry");let o=typeof t.projectRoot=="string"&&t.projectRoot.trim()?t.projectRoot:typeof t.input?.projectRoot=="string"&&t.input.projectRoot.trim()?t.input.projectRoot:process.env.CLAUDE_PROJECT_DIR??"unknown";e.ensureSession({id:r,projectRoot:o,label:o==="unknown"?void 0:o.split("/").pop(),startedAt:Number(t.startedAt??t.timestamp??Date.now())});}cacheOperation(e,t,r){let o=Date.now(),i={id:`failure:${o}:${Math.random().toString(36).slice(2,11)}`,operation:e,payload:t,failure:r instanceof Error?r.message:String(r),timestamp:o};try{let s=this.getDatabase();s.insertTelemetryFailure({id:i.id,operation:e,payload:t,error:i.failure,createdAt:o}),s.trimTelemetryFailures(T),this.scheduleRetry();return}catch{}try{existsSync(this.cacheDir)||mkdirSync(this.cacheDir,{recursive:!0});let s=join$1(this.cacheDir,`${o}_${Math.random().toString(36).slice(2,11)}.json`);writeFileSync(s,JSON.stringify(i,null,2),{mode:384}),this.trimRetryCache(),this.scheduleRetry();}catch{}}trimRetryCache(){try{let e=readdirSync(this.cacheDir).filter(t=>t.endsWith(".json")).sort();for(let t of e.slice(0,Math.max(0,e.length-T)))unlinkSync(join$1(this.cacheDir,t));}catch{}}scheduleRetry(){this.retryScheduled||(this.retryScheduled=true,setTimeout(()=>{this.retryScheduled=false,this.flushCache();},Jt).unref());}scheduleMetricAggregation(){if(this.metricAggregationScheduled||process.env.DEVFLOW_HOOK_DEGRADED==="1")return;this.metricAggregationScheduled=true,setTimeout(()=>{this.metricAggregationScheduled=false;try{this.getDatabase().aggregatePendingToolMetrics(50)===50&&this.scheduleMetricAggregation();}catch{}},25).unref();}postHttp(e,t){ve(e,t,{endpoint:this.apiUrl,fallbackReason:"telemetry_already_committed_locally"});}truncateInput(e){let t=JSON.stringify(e);return t===void 0||t.length<=ke?e:{_truncated:true,_original_size:t.length,_preview:`${t.substring(0,ke)}...`}}};function Se(n){return ["session_start","execution_start","tool_call","complete_event","execution_complete","session_end"].indexOf(n)}function Re(n){return `hook-run:${n}`}function Vt(n){if(!n||typeof n!="object")throw new Error("Invalid telemetry cache envelope");let e=n;if(typeof e.id!="string"||typeof e.operation!="string"||e.payload===void 0||typeof e.failure!="string"||typeof e.timestamp!="number")throw new Error("Invalid telemetry cache envelope");return e}var Bt=/^\/(?:devflow:)?[\w-]+\b\s*/iu,Wt=/\b(?:(?:do\s+not|don't|dont|never|not)(?:\s+need\s+to)?|no\s+need\s+to)\s+(?:please\s+)?(?:remember|memorize)\b|(?:不要|别|不用|无需|不必|不需要)(?:再)?(?:记住|记|记忆)/iu,Gt=/(?:^|[.!?]\s*)(?:(?:please|kindly)\s+)?(?:remember|memorize|save\s+this|store\s+this|note\s+that)(?:\s+(?:that|to))?[\s:,-]*(.+)$/iu,Yt=/(?:^|[。!?;,,]\s*)(?:(?:请|麻烦|务必|一定要|帮我|帮忙|需要)\s*)?(?:记住|记一下|记下来|记|记录一下|记录下来|保存一下|保存下来)(?:这(?:件事|一点|个信息|些内容))?[\s::,,]*(.+)$/iu;function k(n){let e=n.trim().replace(Bt,"").trim();return !e||Wt.test(e)?null:(Yt.exec(e)??Gt.exec(e))?.[1]?.trim().replace(/^[::,,\s]+/u,"")||null}var M=1,rn="memory-snapshot-v1.json",on=512*1024,Ee=256*1024,Ae=2e3,sn=500,an=10,cn=240,dn=300*1e3,ln=720*60*60*1e3,un=2147483647;function mn(n){return n.currentUid===void 0?{ownerSafe:true,modeSafe:true}:{ownerSafe:n.ownerUid===n.currentUid,modeSafe:(n.mode&18)===0}}function I(n){return resolve(n)}function S(n){return createHash$1("sha256").update(I(n)).digest("hex").slice(0,16)}function pn(n,e={}){let t=S(n),r=e.stateRoot?join(e.stateRoot,t):getProjectStateDir(I(n));return join(r,rn)}function fn(n,e){let r=(n instanceof Error?n.message:"").replace(/[\r\n\t]+/gu," ").trim().slice(0,160);return r?`${e}:${r}`:e}function L(n,e){return Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&t.length>0&&t.length<=512)}function gn(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n;return typeof e.id=="string"&&e.id.length>0&&e.id.length<=512&&typeof e.kind=="string"&&e.kind.length>0&&e.kind.length<=128&&(e.family===void 0||typeof e.family=="string"&&e.family.length>0&&e.family.length<=256)&&(e.entity===void 0||typeof e.entity=="string"&&e.entity.length>0&&e.entity.length<=256)&&L(e.memoryIds,100)&&(e.status==="withheld"||e.status==="resolved")&&(e.summary===void 0||typeof e.summary=="string"&&e.summary.length<=2e3)}function yn(n){if(!n||typeof n!="object"||Array.isArray(n))return false;let e=n;return typeof e.reason=="string"&&e.reason.length>0&&e.reason.length<=512&&(e.stale===void 0||typeof e.stale=="boolean")}function Te(n,e,t){if(!n||typeof n!="object"||Array.isArray(n))return null;let r=n,o=I(e),i=S(o),s=r.generation===void 0?0:r.generation;return r.version!==M||r.projectRoot!==o||r.projectHash!==i||typeof r.markdown!="string"||Buffer.byteLength(r.markdown,"utf8")>Ee||!L(r.memoryIds,Ae)||!Array.isArray(r.conflicts)||r.conflicts.length>sn||!r.conflicts.every(gn)||typeof r.generatedAt!="number"||!Number.isFinite(r.generatedAt)||r.generatedAt<0||r.generatedAt>t+dn||!Number.isInteger(s)||s<0||s>un||!["ready","pending","degraded","disabled"].includes(String(r.status))||r.degradation!==void 0&&!yn(r.degradation)?null:{...r,generation:s}}function hn(n,e,t,r,o=0){let i=I(n);return {version:M,projectRoot:i,projectHash:S(i),markdown:"",memoryIds:[],conflicts:[],generatedAt:r,generation:o,status:e,degradation:{reason:t}}}function vn(n,e={}){let t=e.now??Date.now(),r=pn(n,e),o;try{o=openSync(r,constants.O_RDONLY|constants.O_NOFOLLOW);let i=fstatSync(o);if(!i.isFile()||i.size<=0||i.size>on)throw new Error("cache_size_invalid");let s=mn({...typeof process.getuid=="function"?{currentUid:process.getuid()}:{},ownerUid:i.uid,mode:i.mode});if(!s.ownerSafe)throw new Error("cache_owner_invalid");if(!s.modeSafe)throw new Error("cache_permissions_unsafe");let a=JSON.parse(readFileSync(o,"utf8")),d=Te(a,n,t);if(!d)throw new Error("cache_schema_invalid");return d.status==="ready"&&t-d.generatedAt>ln?{snapshot:{...d,status:"degraded",degradation:{reason:"cache_stale",stale:!0}},source:"cache",valid:!0,stale:!0}:{snapshot:d,source:"cache",valid:!0,stale:!1}}catch(i){let a=i.code==="ENOENT";return {snapshot:hn(n,a?"pending":"degraded",a?"cache_missing":fn(i,"cache_invalid"),t),source:"none",valid:false,stale:false}}finally{if(o!==void 0)try{closeSync(o);}catch{}}}function In(n){if(!n)return true;try{return JSON.parse(readFileSync(n,"utf8")).sessionStart?.injectMemories??!0}catch{return true}}function bn(n,e,t){if(!e.trim())return null;try{let r=JSON.parse(e);if(r.status!=="ok"&&r.status!=="degraded")return null;if(r.enabled===!1){let i=I(n);return {version:M,projectRoot:i,projectHash:S(i),markdown:"",memoryIds:[],conflicts:[],generatedAt:t,generation:0,status:"disabled"}}let o=Te(r.snapshot,n,t);if(o)return o;if(r.status==="ok"&&typeof r.markdown=="string"&&r.markdown.length>0&&Buffer.byteLength(r.markdown,"utf8")<=Ee){let i=I(n);return {version:M,projectRoot:i,projectHash:S(i),markdown:r.markdown,memoryIds:L(r.memoryIds,Ae)?r.memoryIds:[],conflicts:[],generatedAt:t,generation:0,status:"ready"}}}catch{}return null}function H(n,e){return [...(n??e).replace(/[\r\n\t|]+/gu," ").trim()||e].slice(0,cn).join("")}function wn(n){if(n.length===0)return "";let e=n.slice(0,an),t=e.map(r=>{let o=H(r.family,"unknown"),i=H(r.entity,"unknown"),s=H(r.summary,"Explicit choice required.");return `- family=${o}; entity=${i}; status=${r.status}; summary=${s}`});return n.length>e.length&&t.push(`- ${n.length-e.length} additional conflict(s) omitted from SessionStart output.`),`## Withheld preference conflicts (${n.length})
|
|
5
5
|
${t.join(`
|
|
6
|
-
`)}`}function
|
|
7
|
-
DevFlow memory snapshot=pending; source=${r.source}; reason=previous_snapshot_disabled. Memory availability is not yet known; do not conclude that the project has no memories.`;let i=new Date(o.generatedAt).toISOString(),s=o.degradation?.reason?`; reason=${o.degradation.reason}`:"",a=`DevFlow memory snapshot=${o.status}; source=${r.source}; generatedAt=${i}${s}.`,d=
|
|
6
|
+
`)}`}function kn(n){let e=n.now??Date.now();if(In(n.configPath)===false)return "";let t=bn(n.projectRoot,n.daemonResponse??"",e),r=t?{snapshot:t,source:"daemon"}:vn(n.projectRoot,{...n.cacheOptions,now:e}),{snapshot:o}=r;if(o.status==="disabled")return `## Project memory
|
|
7
|
+
DevFlow memory snapshot=pending; source=${r.source}; reason=previous_snapshot_disabled. Memory availability is not yet known; do not conclude that the project has no memories.`;let i=new Date(o.generatedAt).toISOString(),s=o.degradation?.reason?`; reason=${o.degradation.reason}`:"",a=`DevFlow memory snapshot=${o.status}; source=${r.source}; generatedAt=${i}${s}.`,d=wn(o.conflicts);return o.markdown?[o.markdown,d,a].filter(Boolean).join(`
|
|
8
8
|
`):["## Project memory",d,`${a} Memory availability is not yet known; do not conclude that the project has no memories.`].filter(Boolean).join(`
|
|
9
|
-
`)}if(process.env.DEVFLOW_MEMORY_SNAPSHOT_CLI==="1"){let[,,n,e,t]=process.argv;n!=="session-start"||!e?process.exitCode=2:process.stdout.write(hn({projectRoot:e,configPath:t,daemonResponse:process.env.DEVFLOW_MEMORY_RESPONSE}));}function b(n){let{projectRoot:e,...t}=n;try{return new q(e).dispatchBoundary(t).snapshot??null}catch(r){return p({event:"hook.runtime.degraded",identity:{projectRoot:e,sessionId:n.sessionId,...n.turnId?{turnId:n.turnId}:{},...n.requestId?{requestId:n.requestId}:{},...n.executionId?{executionId:n.executionId}:{}},level:"error",timestamp:Date.now(),data:{stage:n.kind,reason:r instanceof Error?r.message:String(r),tool:n.producer}}),null}}var q=class{constructor(e){this.projectRoot=e;}dispatchBoundary(e){let t=wn(e.kind,e.payload??{});if(!t)return {handled:false};let r=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:250});try{let o=kn(r,{projectRoot:this.projectRoot,sessionId:e.sessionId,...e.turnId?{turnId:e.turnId}:{},...e.requestId?{requestId:e.requestId}:{},...e.executionId?{executionId:e.executionId}:{}});return o?{handled:!0,snapshot:new TaskKernel(new TaskEventStore(r),new SemanticRuntimeEventProjector).dispatch({definition:o.definition,kind:t.kind,payload:t.payload,idempotencyKey:`host:${o.definition.definitionHash}:${e.dedupeKey}`,producer:e.producer}).snapshot}:{handled:!1}}finally{r.close();}}};function kn(n,e){let t=e.executionId?n.getActiveContextReceipt(e.projectRoot,e.sessionId,e.executionId):null,r=e.turnId??t?.canonicalAction?.binding.turnId,o=e.requestId??t?.requestId;if(!r&&!o)return null;let i=n.listLatestTaskIntentArtifacts(e.projectRoot,e.sessionId).find(d=>r?d.turnId===r:d.requestId===o);if(!i)return null;let s=n.getTaskAggregateSnapshot(e.projectRoot,e.sessionId,i.turnId,i.version);if(!s)return null;let a=n.getTaskDefinitionV2(s.taskDefinitionHash);return !a||a.revision!==i.version?null:{definition:a,snapshot:s}}function wn(n,e){switch(n){case "action.lease.issued":return {kind:"action_lease_issued",payload:e};case "action.succeeded":return {kind:"action_completed",payload:e};case "action.failed":return {kind:"action_failed",payload:e};case "verification.succeeded":return {kind:"verification_completed",payload:e};case "verification.failed":return {kind:"verification_failed",payload:e};case "memory.committed":return {kind:"memory_episode_persisted",payload:e};case "memory.skipped":return {kind:"memory_decision_completed",payload:e};case "memory.pending":return {kind:"memory_extraction_queued",payload:e};case "memory.failed":return {kind:"memory_extraction_failed",payload:e};case "durable_work.owned":return {kind:"durable_work_leased",payload:{...e,fencingToken:Number.isSafeInteger(e.fencingToken)?e.fencingToken:0}};case "durable_work.completed":return {kind:"durable_work_completed",payload:e};case "durable_work.dead_lettered":return {kind:"durable_work_dead_lettered",payload:e};default:return null}}var Rn=/^(?:ok(?:ay)?|yes|no|thanks?|thank you|continue|好的?|可以|行|是|否|谢谢|继续|收到|明白了?)[.!。!\s]*$/iu,_n=/(?:记住|记下|保存|持久化|跨会话|以后|始终|永远|统一使用|项目约定|团队约定|偏好|决定采用|保留可复用|提炼结论|沉淀|记录(?:下来|为|成)?(?:架构|规则|约定|知识|结论))|\b(?:remember|memorize|persist|across sessions|from now on|always|project convention|team convention|preference|we use|adopt|retain reusable|distill)\b/iu,xn=/(?:分析|审查|检查|评估|性能|生成|创建|新建|添加|编写|实现|开发|设计|撰写|总结|修改|重构|修复|调试|解释|查看)|\b(?:analy[sz]e|review|inspect|audit|performance|generate|create|add|build|implement|develop|design|write|summarize|modify|refactor|fix|debug|explain)\b/iu,En=/(?:召回|查询|检索|查找|定位|询问|什么|如何|是否|哪里|哪个)|\b(?:recall|query|search|find|locate|ask|what|how|whether|where|which)\b/iu;function An(n){let e=n.trim();return e.length>0&&!Rn.test(e)}function Dn(n){let e=n.normalize("NFKC").trim(),t=En.test(e);return e.length>=4&&(xn.test(e)||t)&&(!_n.test(e)||t)&&w(e)===null}function Mn(n,e,t=Date.now()){let r=createHash$1("sha256").update(e.trim()).digest("hex"),o=createHash$1("sha256").update(`${n}\0${t}\0${r}`).digest("hex").slice(0,24);return {turnId:`turn:${o}`,eventId:`memory-turn:${o}`,promptHash:r,createdAt:t}}function Te(n,e,t=[]){return `memory-receipt:${createHash$1("sha256").update(`${n}\0${e}\0${[...t].sort().join("\0")}`).digest("hex").slice(0,24)}`}function Cn(n){return `DevFlow memory decision required for ${n.turnId}. Before the final response, semantically decide whether this turn contains durable project knowledge. Call ${projectClaudeToolName("memory_commit_turn")} with evidence-bound candidates, or ${projectClaudeToolName("memory_skip_turn")} with a concrete reason. Do not claim memory success without a canonical receipt. For candidates, copy exact evidenceSpans from this user prompt, preserve package names, flags, versions, paths, and identifiers, and provide subject, predicate, value, polarity, and entities when known. To replace or retire an existing fact, provide operation=supersede or operation=retire plus referencedFactIds from the canonical memory receipt; aliases and entity names are not fact identity. Do not save assistant echoes, task narration, retries, or unverified guesses. Express a change from an old choice as the new durable value. If the decision tool remains unavailable, explicitly state that the memory was not saved.`}function U(n){let e=n.memoryIds.length>0?n.memoryIds.join(","):"none",t=n.status==="committed"?"accepted":n.status,r=n.status==="committed"?"; indexStatus=pending":"",o=n.memoryIds.some(a=>a.startsWith("raw-memory:")),i=n.status==="committed"&&n.source==="explicit_intent"&&!o?"; memoryOnlyCompleted=true; skipProjectContext=true; hostRefinementRequired=true":n.status==="committed"&&n.source==="explicit_intent"?"; asyncReadiness=queued; hostRefinementRequired=true":"",s=n.status==="committed"&&n.source==="explicit_intent"?` The deterministic explicit-memory save is complete and remains authoritative if refinement fails. Before the final response, call ${projectClaudeToolName("memory_commit_turn")} once with turnId=${n.turnId} and semantic candidates. Split every distinct reusable fact into a durable_memory candidate, classify instructions that apply only to this turn as turn_constraint, and include evidenceSpans copied verbatim from the user prompt for every candidate. Preserve exact flags, package names, versions, paths, and identifiers. Keep narrative and value in the user prompt language; do not translate evidence into a different surface form. The tool refines the existing receipt idempotently; it must not create native Claude memory. If refinement is unavailable, return the existing canonical receipt without claiming refinement.`:"";return `DevFlow canonical memory receipt: status=${t}; receiptId=${n.receiptId??"missing"}; turnId=${n.turnId}; memoryIds=${e}; source=${n.source??"unknown"}${r}${i}.`+s}function Oe(n){if(!An(n.prompt))return null;let e=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:50});try{let t=n.prompt.trim().slice(0,4e3),r=createHash$1("sha256").update(t).digest("hex"),o=e.listMemoryTurns(n.projectRoot,n.sessionId,5).find(u=>u.promptHash===r&&Date.now()-u.createdAt<1e4),i=o?{turnId:o.turnId,eventId:o.eventId,promptHash:o.promptHash,createdAt:o.createdAt}:n.identity??Mn(n.sessionId,t),s=o??e.beginMemoryTurn({...i,projectRoot:n.projectRoot,sessionId:n.sessionId});if(s.status!=="pending")return {turn:s,additionalContext:U(s),skipSkillRouting:s.source==="explicit_intent"};let d=(n.activation?.semantic??"degraded_structural")==="degraded_structural"?w(t)??void 0:void 0;if(!d&&Dn(t)){let u=Te(s.turnId,"skipped"),c=e.skipMemoryTurn({turnId:s.turnId,receiptId:u,source:"automatic_transient_skip",reason:"high_confidence_transient_task"});return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.skipped",payload:{receiptId:u,reasonCode:"high_confidence_transient_task"},dedupeKey:u,producer:"devflow-memory-turn"}),p({event:"memory.semantic.decided",identity:{projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId},level:"info",timestamp:Date.now(),data:{status:"semantic_empty",operation:"none",reason:"high_confidence_transient_task"}}),{turn:c,additionalContext:U(c),skipSkillRouting:!1}}let m=d?"commit_explicit":"capture_prompt",l=e.enqueueWork({idempotencyKey:`memory-turn:${m}:${s.turnId}`,kind:d?"memory.explicit_commit":"memory.turn_capture",projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,payload:{operation:m,turnId:s.turnId,eventId:s.eventId,sessionId:n.sessionId,prompt:t,explicitContent:d,createdAt:s.createdAt}});if(d){let u=`raw-memory:${createHash$1("sha256").update(`${n.projectRoot}\0${i.turnId}\0${d}`).digest("hex").slice(0,24)}`,c=Te(s.turnId,"committed",[u]),f=e.commitMemoryTurn({turnId:s.turnId,receiptId:c,memoryIds:[u],source:"explicit_intent",reason:"explicit_raw_queued",decidedAt:Date.now()});return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"durable_work.owned",payload:{workId:l.id,obligation:"memory"},dedupeKey:`${l.id}:owned`,producer:"devflow-memory-turn"}),b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.committed",payload:{receiptId:c,reasonCode:"explicit_raw_queued"},dedupeKey:c,producer:"devflow-memory-turn"}),p({event:"memory.write.completed",identity:{projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,actionReceipt:c},level:"info",timestamp:Date.now(),data:{stage:"explicit_fast_ack",durable:!0,rawMemoryId:u,receiptLatencyMs:Date.now()-i.createdAt,asyncReadiness:"queued"}}),{turn:f,explicitContent:d,additionalContext:U(f),skipSkillRouting:!0}}return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.pending",payload:{reasonCode:"semantic_decision_queued"},dedupeKey:`${s.turnId}:pending`,producer:"devflow-memory-turn"}),b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"durable_work.owned",payload:{workId:l.id,obligation:"memory"},dedupeKey:`${l.id}:owned`,producer:"devflow-memory-turn"}),{turn:s,explicitContent:d,additionalContext:Cn(s),skipSkillRouting:!1}}finally{e.close();}}function $e(n,e){let t=Pn(n);mkdirSync$1(t,{recursive:true,mode:448});let r=`memory-turn-spool-${Date.now()}-${process.pid}-${randomUUID$1()}`,o=join(t,`${r}.json`),i=`${o}.tmp`;return writeFileSync$1(i,JSON.stringify({...e,prompt:e.prompt.trim().slice(0,4e3)}),{mode:384}),renameSync$1(i,o),r}function Pn(n){return join(k(n),"memory-turn-pending")}function Pe(n){let e=Date.now();try{let t=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:100});try{let r=`context-prefetch:${createHash$1("sha256").update(`${n.projectRoot}\0${n.sessionId}\0${n.executionId}\0${Fn(n.prompt)}\0${n.profileFingerprint}`).digest("hex")}`,o=t.enqueueWork({idempotencyKey:r,kind:"context.prefetch",projectRoot:n.projectRoot,sessionId:n.sessionId,payload:n,maxAttempts:3});return h("prefetch_queue",{projectRoot:n.projectRoot,skillName:n.skillName,accepted:!0,workState:o.state,latencyMs:Date.now()-e}),{accepted:!0,workItemId:o.id}}finally{t.close();}}catch(t){let r=t instanceof Error?t.message:String(t);return h("prefetch_queue",{projectRoot:n.projectRoot,skillName:n.skillName,accepted:false,reason:r,latencyMs:Date.now()-e}),{accepted:false,reason:r}}}function Fn(n){return n.trim().toLowerCase().replace(/\s+/g," ").slice(0,4e3)}async function He(n){let e=Date.now(),t=Zn(n.projectRoot),r=claudeCodeRuntimeAdapter.normalizePrompt(n.hostEvent??{session_id:n.sessionId,prompt:n.prompt},{projectRoot:t}),o=semanticTextHash(Fe(r.rawPrompt)),i=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:100});try{let s=i.getTaskIntentArtifactBySource({projectRoot:t,sessionId:n.sessionId,sourceHash:o});if(s){let j=Ne(s).identity,K=i.getRuntimeActivation(j.projectRoot,j.sessionId,j.turnId,s.version);if(!K)throw new Error(`RUNTIME_ACTIVATION_MISSING:${s.artifactHash}`);return {artifact:Ne(s),memoryIdentity:Le(s),activation:K,reused:!0}}let a=`turn:${O(`${n.sessionId}\0${o}`)}`,d=`request:${O(`${t}\0${n.sessionId}\0${a}`)}`,m={projectRoot:t,projectId:`project:${stableRuntimeHash(t).slice(0,20)}`,hostId:r.hostId,sessionId:n.sessionId,executionId:n.sessionId,turnId:a,requestId:d},l=1,u=resolveRuntimeActivationSnapshot({projectRoot:t,createdAt:r.timestamp}),c=Yn(r.rawPrompt),f={identity:m,version:l,rawPrompt:r.rawPrompt,normalizedPrompt:Fe(r.rawPrompt),...r.command?{command:r.command}:{},slashArgs:r.slashArgs,...r.activeSkill?{activeSkill:r.activeSkill}:{},intent:"unknown",action:"unknown",entities:[],targetAnchors:c,policyConstraints:[],classificationEvidence:[],sourceEventIds:[r.sourceEventId??`host-event:${o.slice(0,24)}`],sourceHash:o,createdAt:r.timestamp},y={...f,artifactHash:Qn(f)};i.appendTaskIntentArtifact(Gn(y)),i.bindRuntimeActivation({identity:m,revision:l,snapshot:u});let qe=Bn(i,y);return p({event:"host.prompt.normalized",identity:m,level:"info",timestamp:Date.now(),data:{sourceHash:o,command:y.command,activeSkill:y.activeSkill,rawPromptBytes:Buffer.byteLength(y.rawPrompt)}}),p({event:"intent.artifact.created",identity:m,level:"info",timestamp:Date.now(),data:{artifactHash:y.artifactHash,targetCount:c.length}}),p({event:"intent.artifact.persisted",identity:m,level:"info",timestamp:Date.now(),data:{artifactHash:y.artifactHash,version:y.version,sourceHash:y.sourceHash,authority:"immutable-intent",captureLatencyMs:Date.now()-e}}),p({event:"terminal.transition.persisted",identity:m,level:"info",timestamp:Date.now(),data:{state:"intent_bound",receiptId:qe,sourceIntentHash:y.artifactHash}}),{artifact:y,memoryIdentity:Le(y),activation:u,reused:!1}}finally{i.close();}}function Bn(n,e){let t=n.getLatestTerminalTransition(e.identity.projectRoot,e.identity.sessionId,e.identity.turnId);if(t)return t.receiptId;let r=`terminal:${O(`${e.artifactHash}\0open`)}`;return n.appendTerminalTransition({...e.identity,sequence:1,toState:"open",receiptId:r,reason:"host_prompt_accepted",payload:{sourceHash:e.sourceHash},createdAt:e.createdAt}),n.appendTerminalTransition({...e.identity,sequence:2,fromState:"open",toState:"intent_bound",receiptId:`terminal:${O(`${e.artifactHash}\0intent_bound`)}`,sourceReceiptId:r,reason:"immutable_intent_persisted",payload:{intentArtifactHash:e.artifactHash},createdAt:Math.max(e.createdAt,Date.now())}).receiptId}function Gn(n){return {...n.identity,version:n.version,supersedesHash:n.supersedesHash,rawPrompt:n.rawPrompt,normalizedPrompt:n.normalizedPrompt,command:n.command,slashArgs:n.slashArgs,activeSkill:n.activeSkill,intent:n.intent,action:n.action,entities:n.entities,targetAnchors:n.targetAnchors,policyConstraints:n.policyConstraints,classificationEvidence:n.classificationEvidence.map(e=>({...e})),sourceEventIds:n.sourceEventIds,sourceHash:n.sourceHash,artifactHash:n.artifactHash,createdAt:n.createdAt}}function Ne(n){return {identity:Wn(n),version:n.version,...n.supersedesHash?{supersedesHash:n.supersedesHash}:{},rawPrompt:n.rawPrompt,normalizedPrompt:n.normalizedPrompt,...n.command?{command:n.command}:{},slashArgs:n.slashArgs,...n.activeSkill?{activeSkill:n.activeSkill}:{},intent:n.intent,action:n.action,entities:n.entities,targetAnchors:n.targetAnchors,policyConstraints:n.policyConstraints,classificationEvidence:n.classificationEvidence,sourceEventIds:n.sourceEventIds,sourceHash:n.sourceHash,artifactHash:n.artifactHash,createdAt:n.createdAt}}function Wn(n){return {projectRoot:n.projectRoot,projectId:n.projectId,hostId:n.hostId,sessionId:n.sessionId,turnId:n.turnId,requestId:n.requestId,...n.executionId?{executionId:n.executionId}:{}}}function Le(n){let e=n.rawPrompt.trim().slice(0,4e3),t="identity"in n?n.identity.turnId:n.turnId;return {turnId:t,eventId:`memory-turn:${t.replace(/^turn:/u,"")}`,promptHash:createHash$1("sha256").update(e).digest("hex"),createdAt:n.createdAt}}function Yn(n){let e=n.match(/(?:^|[\s`'"(])((?:\.{0,2}\/)?(?:[A-Za-z0-9_@.-]+\/)+[A-Za-z0-9_@.-]+(?:\.[A-Za-z0-9]+)?)/gu)??[];return Xn(e.map(t=>t.trim().replace(/^[`'"(]+|[`'"),.;:,。;:]+$/gu,"")).filter(t=>!t.startsWith("/")||/\.[A-Za-z0-9]+$/u.test(t))).slice(0,16)}function Fe(n){return n.normalize("NFKC").replace(/\s+/gu," ").trim().slice(0,4e3)}function Xn(n){return [...new Set(n.filter(Boolean))]}function Zn(n){let e=resolve(n);try{return realpathSync(e)}catch{return e}}function Qn(n){return createHash$1("sha256").update(z(n)).digest("hex")}function O(n){return createHash$1("sha256").update(n).digest("hex").slice(0,24)}function z(n){if(n===null||typeof n=="string"||typeof n=="boolean")return JSON.stringify(n);if(typeof n=="number")return Number.isFinite(n)?JSON.stringify(n):"null";if(Array.isArray(n))return `[${n.map(z).join(",")}]`;if(!n||typeof n!="object")return JSON.stringify(String(n));let e=n;return `{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${z(e[t])}`).join(",")}}`}var g=process.env.CLAUDE_PROJECT_DIR||process.cwd();async function nr(n){let e=G()?[B]:[],t;try{t=JSON.parse(n);}catch{return {hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow",...e.length?{additionalContext:e.join(`
|
|
9
|
+
`)}if(process.env.DEVFLOW_MEMORY_SNAPSHOT_CLI==="1"){let[,,n,e,t]=process.argv;n!=="session-start"||!e?process.exitCode=2:process.stdout.write(kn({projectRoot:e,configPath:t,daemonResponse:process.env.DEVFLOW_MEMORY_RESPONSE}));}function b(n){let{projectRoot:e,...t}=n;try{return new q(e).dispatchBoundary(t).snapshot??null}catch(r){return p({event:"hook.runtime.degraded",identity:{projectRoot:e,sessionId:n.sessionId,...n.turnId?{turnId:n.turnId}:{},...n.requestId?{requestId:n.requestId}:{},...n.executionId?{executionId:n.executionId}:{}},level:"error",timestamp:Date.now(),data:{stage:n.kind,reason:r instanceof Error?r.message:String(r),tool:n.producer}}),null}}var q=class{constructor(e){this.projectRoot=e;}dispatchBoundary(e){let t=Dn(e.kind,e.payload??{});if(!t)return {handled:false};let r=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:250});try{let o=xn(r,{projectRoot:this.projectRoot,sessionId:e.sessionId,...e.turnId?{turnId:e.turnId}:{},...e.requestId?{requestId:e.requestId}:{},...e.executionId?{executionId:e.executionId}:{}});return o?{handled:!0,snapshot:new TaskKernel(new TaskEventStore(r),new SemanticRuntimeEventProjector).dispatch({definition:o.definition,kind:t.kind,payload:t.payload,idempotencyKey:`host:${o.definition.definitionHash}:${e.dedupeKey}`,producer:e.producer}).snapshot}:{handled:!1}}finally{r.close();}}};function xn(n,e){let t=e.executionId?n.getActiveContextReceipt(e.projectRoot,e.sessionId,e.executionId):null,r=e.turnId??t?.canonicalAction?.binding.turnId,o=e.requestId??t?.requestId;if(!r&&!o)return null;let i=n.listLatestTaskIntentArtifacts(e.projectRoot,e.sessionId).find(d=>r?d.turnId===r:d.requestId===o);if(!i)return null;let s=n.getTaskAggregateSnapshot(e.projectRoot,e.sessionId,i.turnId,i.version);if(!s)return null;let a=n.getTaskDefinitionV2(s.taskDefinitionHash);return !a||a.revision!==i.version?null:{definition:a,snapshot:s}}function Dn(n,e){switch(n){case "action.lease.issued":return {kind:"action_lease_issued",payload:e};case "action.succeeded":return {kind:"action_completed",payload:e};case "action.failed":return {kind:"action_failed",payload:e};case "verification.succeeded":return {kind:"verification_completed",payload:e};case "verification.failed":return {kind:"verification_failed",payload:e};case "memory.committed":return {kind:"memory_episode_persisted",payload:e};case "memory.skipped":return {kind:"memory_decision_completed",payload:e};case "memory.pending":return {kind:"memory_extraction_queued",payload:e};case "memory.failed":return {kind:"memory_extraction_failed",payload:e};case "durable_work.owned":return {kind:"durable_work_leased",payload:{...e,fencingToken:Number.isSafeInteger(e.fencingToken)?e.fencingToken:0}};case "durable_work.completed":return {kind:"durable_work_completed",payload:e};case "durable_work.dead_lettered":return {kind:"durable_work_dead_lettered",payload:e};default:return null}}var An=/^(?:ok(?:ay)?|yes|no|thanks?|thank you|continue|好的?|可以|行|是|否|谢谢|继续|收到|明白了?)[.!。!\s]*$/iu,Tn=/(?:记住|记下|保存|持久化|跨会话|以后|始终|永远|统一使用|项目约定|团队约定|偏好|决定采用|保留可复用|提炼结论|沉淀|记录(?:下来|为|成)?(?:架构|规则|约定|知识|结论))|\b(?:remember|memorize|persist|across sessions|from now on|always|project convention|team convention|preference|we use|adopt|retain reusable|distill)\b/iu,Cn=/(?:分析|审查|检查|评估|性能|生成|创建|新建|添加|编写|实现|开发|设计|撰写|总结|修改|重构|修复|调试|解释|查看)|\b(?:analy[sz]e|review|inspect|audit|performance|generate|create|add|build|implement|develop|design|write|summarize|modify|refactor|fix|debug|explain)\b/iu,Mn=/(?:召回|查询|检索|查找|定位|询问|什么|如何|是否|哪里|哪个)|\b(?:recall|query|search|find|locate|ask|what|how|whether|where|which)\b/iu;function On(n){let e=n.trim();return e.length>0&&!An.test(e)}function jn(n){let e=n.normalize("NFKC").trim(),t=Mn.test(e);return e.length>=4&&(Cn.test(e)||t)&&(!Tn.test(e)||t)&&k(e)===null}function $n(n,e,t=Date.now()){let r=createHash$1("sha256").update(e.trim()).digest("hex"),o=createHash$1("sha256").update(`${n}\0${t}\0${r}`).digest("hex").slice(0,24);return {turnId:`turn:${o}`,eventId:`memory-turn:${o}`,promptHash:r,createdAt:t}}function Me(n,e,t=[]){return `memory-receipt:${createHash$1("sha256").update(`${n}\0${e}\0${[...t].sort().join("\0")}`).digest("hex").slice(0,24)}`}function Pn(n){return `DevFlow memory decision required for ${n.turnId}. Before the final response, semantically decide whether this turn contains durable project knowledge. Call ${projectClaudeToolName("memory_commit_turn")} with evidence-bound candidates, or ${projectClaudeToolName("memory_skip_turn")} with a concrete reason. Do not claim memory success without a canonical receipt. For candidates, copy exact evidenceSpans from this user prompt, preserve package names, flags, versions, paths, and identifiers, and provide subject, predicate, value, polarity, and entities when known. To replace or retire an existing fact, provide operation=supersede or operation=retire plus referencedFactIds from the canonical memory receipt; aliases and entity names are not fact identity. Do not save assistant echoes, task narration, retries, or unverified guesses. Express a change from an old choice as the new durable value. If the decision tool remains unavailable, explicitly state that the memory was not saved.`}function U(n){let e=n.memoryIds.length>0?n.memoryIds.join(","):"none",t=n.status==="committed"?"accepted":n.status,r=n.status==="committed"?"; indexStatus=pending":"",o=n.memoryIds.some(a=>a.startsWith("raw-memory:")),i=n.status==="committed"&&n.source==="explicit_intent"&&!o?"; memoryOnlyCompleted=true; skipProjectContext=true; hostRefinementRequired=true":n.status==="committed"&&n.source==="explicit_intent"?"; asyncReadiness=queued; hostRefinementRequired=true":"",s=n.status==="committed"&&n.source==="explicit_intent"?` The deterministic explicit-memory save is complete and remains authoritative if refinement fails. Before the final response, call ${projectClaudeToolName("memory_commit_turn")} once with turnId=${n.turnId} and semantic candidates. Split every distinct reusable fact into a durable_memory candidate, classify instructions that apply only to this turn as turn_constraint, and include evidenceSpans copied verbatim from the user prompt for every candidate. Preserve exact flags, package names, versions, paths, and identifiers. Keep narrative and value in the user prompt language; do not translate evidence into a different surface form. The tool refines the existing receipt idempotently; it must not create native Claude memory. If refinement is unavailable, return the existing canonical receipt without claiming refinement.`:"";return `DevFlow canonical memory receipt: status=${t}; receiptId=${n.receiptId??"missing"}; turnId=${n.turnId}; memoryIds=${e}; source=${n.source??"unknown"}${r}${i}.`+s}function Oe(n){if(!On(n.prompt))return null;let e=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:50});try{let t=n.prompt.trim().slice(0,4e3),r=createHash$1("sha256").update(t).digest("hex"),o=e.listMemoryTurns(n.projectRoot,n.sessionId,5).find(m=>m.promptHash===r&&Date.now()-m.createdAt<1e4),i=o?{turnId:o.turnId,eventId:o.eventId,promptHash:o.promptHash,createdAt:o.createdAt}:n.identity??$n(n.sessionId,t),s=o??e.beginMemoryTurn({...i,projectRoot:n.projectRoot,sessionId:n.sessionId});if(s.status!=="pending")return {turn:s,additionalContext:U(s),skipSkillRouting:s.source==="explicit_intent"};let d=(n.activation?.semantic??"degraded_structural")==="degraded_structural"?k(t)??void 0:void 0;if(!d&&jn(t)){let m=Me(s.turnId,"skipped"),c=e.skipMemoryTurn({turnId:s.turnId,receiptId:m,source:"automatic_transient_skip",reason:"high_confidence_transient_task"});return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.skipped",payload:{receiptId:m,reasonCode:"high_confidence_transient_task"},dedupeKey:m,producer:"devflow-memory-turn"}),p({event:"memory.semantic.decided",identity:{projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId},level:"info",timestamp:Date.now(),data:{status:"semantic_empty",operation:"none",reason:"high_confidence_transient_task"}}),{turn:c,additionalContext:U(c),skipSkillRouting:!1}}let u=d?"commit_explicit":"capture_prompt",l=e.enqueueWork({idempotencyKey:`memory-turn:${u}:${s.turnId}`,kind:d?"memory.explicit_commit":"memory.turn_capture",projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,payload:{operation:u,turnId:s.turnId,eventId:s.eventId,sessionId:n.sessionId,prompt:t,explicitContent:d,createdAt:s.createdAt}});if(d){let m=`raw-memory:${createHash$1("sha256").update(`${n.projectRoot}\0${i.turnId}\0${d}`).digest("hex").slice(0,24)}`,c=Me(s.turnId,"committed",[m]),f=e.commitMemoryTurn({turnId:s.turnId,receiptId:c,memoryIds:[m],source:"explicit_intent",reason:"explicit_raw_queued",decidedAt:Date.now()});return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"durable_work.owned",payload:{workId:l.id,obligation:"memory"},dedupeKey:`${l.id}:owned`,producer:"devflow-memory-turn"}),b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.committed",payload:{receiptId:c,reasonCode:"explicit_raw_queued"},dedupeKey:c,producer:"devflow-memory-turn"}),p({event:"memory.write.completed",identity:{projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,actionReceipt:c},level:"info",timestamp:Date.now(),data:{stage:"explicit_fast_ack",durable:!0,rawMemoryId:m,receiptLatencyMs:Date.now()-i.createdAt,asyncReadiness:"queued"}}),{turn:f,explicitContent:d,additionalContext:U(f),skipSkillRouting:!0}}return b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"memory.pending",payload:{reasonCode:"semantic_decision_queued"},dedupeKey:`${s.turnId}:pending`,producer:"devflow-memory-turn"}),b({projectRoot:n.projectRoot,sessionId:n.sessionId,turnId:s.turnId,kind:"durable_work.owned",payload:{workId:l.id,obligation:"memory"},dedupeKey:`${l.id}:owned`,producer:"devflow-memory-turn"}),{turn:s,explicitContent:d,additionalContext:Pn(s),skipSkillRouting:!1}}finally{e.close();}}function $e(n,e){let t=qn(n);mkdirSync$1(t,{recursive:true,mode:448});let r=`memory-turn-spool-${Date.now()}-${process.pid}-${randomUUID()}`,o=join(t,`${r}.json`),i=`${o}.tmp`;return writeFileSync$1(i,JSON.stringify({...e,prompt:e.prompt.trim().slice(0,4e3)}),{mode:384}),renameSync$1(i,o),r}function qn(n){return join(w(n),"memory-turn-pending")}function Pe(n){let e=Date.now();try{let t=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:100});try{let r=`context-prefetch:${createHash$1("sha256").update(`${n.projectRoot}\0${n.sessionId}\0${n.executionId}\0${zn(n.prompt)}\0${n.profileFingerprint}`).digest("hex")}`,o=t.enqueueWork({idempotencyKey:r,kind:"context.prefetch",projectRoot:n.projectRoot,sessionId:n.sessionId,payload:n,maxAttempts:3});return h("prefetch_queue",{projectRoot:n.projectRoot,skillName:n.skillName,accepted:!0,workState:o.state,latencyMs:Date.now()-e}),{accepted:!0,workItemId:o.id}}finally{t.close();}}catch(t){let r=t instanceof Error?t.message:String(t);return h("prefetch_queue",{projectRoot:n.projectRoot,skillName:n.skillName,accepted:false,reason:r,latencyMs:Date.now()-e}),{accepted:false,reason:r}}}function zn(n){return n.trim().toLowerCase().replace(/\s+/g," ").slice(0,4e3)}async function Le(n){let e=Date.now(),t=rr(n.projectRoot),r=claudeCodeRuntimeAdapter.normalizePrompt(n.hostEvent??{session_id:n.sessionId,prompt:n.prompt},{projectRoot:t}),o=semanticTextHash(He(r.rawPrompt)),i=openGlobalDevFlowDatabase(void 0,{busyTimeoutMs:100});try{let s=i.getTaskIntentArtifactBySource({projectRoot:t,sessionId:n.sessionId,sourceHash:o});if(s){let j=Fe(s).identity,V=i.getRuntimeActivation(j.projectRoot,j.sessionId,j.turnId,s.version);if(!V)throw new Error(`RUNTIME_ACTIVATION_MISSING:${s.artifactHash}`);return {artifact:Fe(s),memoryIdentity:Ne(s),activation:V,reused:!0}}let a=`turn:${O(`${n.sessionId}\0${o}`)}`,d=`request:${O(`${t}\0${n.sessionId}\0${a}`)}`,u={projectRoot:t,projectId:`project:${stableRuntimeHash(t).slice(0,20)}`,hostId:r.hostId,sessionId:n.sessionId,executionId:n.sessionId,turnId:a,requestId:d},l=1,m=resolveRuntimeActivationSnapshot({projectRoot:t,createdAt:r.timestamp}),c=tr(r.rawPrompt),f={identity:u,version:l,rawPrompt:r.rawPrompt,normalizedPrompt:He(r.rawPrompt),...r.command?{command:r.command}:{},slashArgs:r.slashArgs,...r.activeSkill?{activeSkill:r.activeSkill}:{},intent:"unknown",action:"unknown",entities:[],targetAnchors:c,policyConstraints:[],classificationEvidence:[],sourceEventIds:[r.sourceEventId??`host-event:${o.slice(0,24)}`],sourceHash:o,createdAt:r.timestamp},y={...f,artifactHash:or(f)};i.appendTaskIntentArtifact(Qn(y)),i.bindRuntimeActivation({identity:u,revision:l,snapshot:m});let Ve=Zn(i,y);return p({event:"host.prompt.normalized",identity:u,level:"info",timestamp:Date.now(),data:{sourceHash:o,command:y.command,activeSkill:y.activeSkill,rawPromptBytes:Buffer.byteLength(y.rawPrompt)}}),p({event:"intent.artifact.created",identity:u,level:"info",timestamp:Date.now(),data:{artifactHash:y.artifactHash,targetCount:c.length}}),p({event:"intent.artifact.persisted",identity:u,level:"info",timestamp:Date.now(),data:{artifactHash:y.artifactHash,version:y.version,sourceHash:y.sourceHash,authority:"immutable-intent",captureLatencyMs:Date.now()-e}}),p({event:"terminal.transition.persisted",identity:u,level:"info",timestamp:Date.now(),data:{state:"intent_bound",receiptId:Ve,sourceIntentHash:y.artifactHash}}),{artifact:y,memoryIdentity:Ne(y),activation:m,reused:!1}}finally{i.close();}}function Zn(n,e){let t=n.getLatestTerminalTransition(e.identity.projectRoot,e.identity.sessionId,e.identity.turnId);if(t)return t.receiptId;let r=`terminal:${O(`${e.artifactHash}\0open`)}`;return n.appendTerminalTransition({...e.identity,sequence:1,toState:"open",receiptId:r,reason:"host_prompt_accepted",payload:{sourceHash:e.sourceHash},createdAt:e.createdAt}),n.appendTerminalTransition({...e.identity,sequence:2,fromState:"open",toState:"intent_bound",receiptId:`terminal:${O(`${e.artifactHash}\0intent_bound`)}`,sourceReceiptId:r,reason:"immutable_intent_persisted",payload:{intentArtifactHash:e.artifactHash},createdAt:Math.max(e.createdAt,Date.now())}).receiptId}function Qn(n){return {...n.identity,version:n.version,supersedesHash:n.supersedesHash,rawPrompt:n.rawPrompt,normalizedPrompt:n.normalizedPrompt,command:n.command,slashArgs:n.slashArgs,activeSkill:n.activeSkill,intent:n.intent,action:n.action,entities:n.entities,targetAnchors:n.targetAnchors,policyConstraints:n.policyConstraints,classificationEvidence:n.classificationEvidence.map(e=>({...e})),sourceEventIds:n.sourceEventIds,sourceHash:n.sourceHash,artifactHash:n.artifactHash,createdAt:n.createdAt}}function Fe(n){return {identity:er(n),version:n.version,...n.supersedesHash?{supersedesHash:n.supersedesHash}:{},rawPrompt:n.rawPrompt,normalizedPrompt:n.normalizedPrompt,...n.command?{command:n.command}:{},slashArgs:n.slashArgs,...n.activeSkill?{activeSkill:n.activeSkill}:{},intent:n.intent,action:n.action,entities:n.entities,targetAnchors:n.targetAnchors,policyConstraints:n.policyConstraints,classificationEvidence:n.classificationEvidence,sourceEventIds:n.sourceEventIds,sourceHash:n.sourceHash,artifactHash:n.artifactHash,createdAt:n.createdAt}}function er(n){return {projectRoot:n.projectRoot,projectId:n.projectId,hostId:n.hostId,sessionId:n.sessionId,turnId:n.turnId,requestId:n.requestId,...n.executionId?{executionId:n.executionId}:{}}}function Ne(n){let e=n.rawPrompt.trim().slice(0,4e3),t="identity"in n?n.identity.turnId:n.turnId;return {turnId:t,eventId:`memory-turn:${t.replace(/^turn:/u,"")}`,promptHash:createHash$1("sha256").update(e).digest("hex"),createdAt:n.createdAt}}function tr(n){let e=n.match(/(?:^|[\s`'"(])((?:\.{0,2}\/)?(?:[A-Za-z0-9_@.-]+\/)+[A-Za-z0-9_@.-]+(?:\.[A-Za-z0-9]+)?)/gu)??[];return nr(e.map(t=>t.trim().replace(/^[`'"(]+|[`'"),.;:,。;:]+$/gu,"")).filter(t=>!t.startsWith("/")||/\.[A-Za-z0-9]+$/u.test(t))).slice(0,16)}function He(n){return n.normalize("NFKC").replace(/\s+/gu," ").trim().slice(0,4e3)}function nr(n){return [...new Set(n.filter(Boolean))]}function rr(n){let e=resolve(n);try{return realpathSync(e)}catch{return e}}function or(n){return createHash$1("sha256").update(z(n)).digest("hex")}function O(n){return createHash$1("sha256").update(n).digest("hex").slice(0,24)}function z(n){if(n===null||typeof n=="string"||typeof n=="boolean")return JSON.stringify(n);if(typeof n=="number")return Number.isFinite(n)?JSON.stringify(n):"null";if(Array.isArray(n))return `[${n.map(z).join(",")}]`;if(!n||typeof n!="object")return JSON.stringify(String(n));let e=n;return `{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${z(e[t])}`).join(",")}}`}function Ue(){return generateKeyPairSync("ed25519")}function Ke(n){let e=parseTrustedDecisionCommand(n.rawUserEvent,n.allowedOptionIds),t=n.now??Date.now(),r={schemaVersion:"delivery-user-attestation.v1",issuer:n.issuer,keyId:n.keyId,purpose:e.purpose,decisionId:e.decisionId,caseId:n.caseId,caseVersion:n.caseVersion,sessionId:n.sessionId,sourceTurnId:n.sourceTurnId,actorId:n.actorId,targetDecisionHash:n.targetDecisionHash,rawUserEvent:n.rawUserEvent,rawUserEventHash:domainHash("raw-user-event",n.rawUserEvent),selectedValueHash:domainHash("decision-value",{decisionId:e.decisionId,purpose:e.purpose,value:encodeDecisionValue(e.purpose,e.value)}),eventSequence:n.eventSequence,issuedAt:new Date(t).toISOString(),expiresAt:new Date(t+6e4).toISOString(),nonce:n.nonce};return {...r,attestation:sign(null,canonicalJsonBytes(r),n.privateKey).toString("base64url")}}var ze=new Map;async function Je(n){let e=n.prompt.trim();if(!/^\/devflow:(?:decide|approve|reject|revise|cancel|exit)\b/u.test(e))return {handled:false};let t;try{t=parseTrustedDecisionCommand(e);}catch(u){return {handled:true,resolved:false,message:`DevFlow trusted decision rejected: ${u instanceof Error?u.message:String(u)}`}}let r=t.decisionId.split(/:(?:decision|question|approval):/u)[0],o=pr(n.projectRoot),i=await o.pendingDecision(r);if(!i||i.id!==t.decisionId)return {handled:true,resolved:false,message:`DevFlow trusted decision rejected: no pending decision matches ${t.decisionId}. Refresh delivery_status.`};let s=process.env.DEVFLOW_HOST_ACTOR_ID?.trim()||`user:${process.env.USER?.trim()||"local"}`,a=Ue(),d=Ke({rawUserEvent:e,issuer:"claude-code",keyId:"session-ephemeral",caseId:r,caseVersion:i.caseVersion,sessionId:n.sessionId,sourceTurnId:n.sourceTurnId?.trim()||`host-turn:${n.sessionId}:${Date.now()}`,actorId:s,targetDecisionHash:i.targetDecisionHash,eventSequence:Date.now(),nonce:randomUUID(),privateKey:a.privateKey,allowedOptionIds:i.options.map(u=>u.id)});try{return await o.resolveTrustedDecision({evidence:d,publicKey:a.publicKey,expectedIssuer:"claude-code",expectedKeyId:"session-ephemeral"}),{handled:!0,resolved:!0,message:`DevFlow trusted decision resolved for ${r}. Refresh delivery_status and follow nextActions.`}}catch(u){return {handled:true,resolved:false,message:`DevFlow trusted decision rejected: ${u instanceof Error?u.message:String(u)}`}}}function pr(n){let e=ze.get(n);if(e)return e;let t=createTrustedDeliveryFacade(n);return ze.set(n,t),t}var g=process.env.CLAUDE_PROJECT_DIR||process.cwd();async function yr(n){let e=W()?[B]:[],t;try{t=JSON.parse(n);}catch{return {hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow",...e.length?{additionalContext:e.join(`
|
|
10
10
|
`)}:{}}}}let r=t.prompt||"";if(!r.trim())return {hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow",...e.length?{additionalContext:e.join(`
|
|
11
|
-
`)}:{}}};let o=t.session_id?.trim(),i=se(r),s=false,a,d,
|
|
12
|
-
`)}:{}}}}if(process.argv[1]?.endsWith("user-prompt-submit")||process.argv[1]?.endsWith("user-prompt-submit.js")){let n=console.log.bind(console);console.log=console.error.bind(console),console.info=console.error.bind(console);let e="";process.stdin.setEncoding("utf8"),process.stdin.on("data",t=>{e+=t;}),process.stdin.on("end",async()=>{let t=await
|
|
11
|
+
`)}:{}}};let o=t.session_id?.trim();if(o&&/^\/devflow:(?:decide|approve|reject)\b/u.test(r.trim()))try{let l=await Je({projectRoot:g,sessionId:o,prompt:r});if(l.handled)return {hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow",additionalContext:l.message}}}catch(l){e.push(`DevFlow trusted delivery fallback degraded: ${l instanceof Error?l.message:String(l)}`);}let i=se(r),s=false,a,d,u=o?new x(g):void 0;if(o){try{d=await Le({projectRoot:g,sessionId:o,prompt:r,hostEvent:t}),u.bindTaskIdentity(o,{turnId:d.artifact.identity.turnId,requestId:d.artifact.identity.requestId,intentArtifactHash:d.artifact.artifactHash}),e.push(`DevFlow immutable task identity: turnId=${d.artifact.identity.turnId}; requestId=${d.artifact.identity.requestId}; intentArtifactHash=${d.artifact.artifactHash}. Retrieval query expansion must not replace this original intent.`);}catch(l){e.push("DevFlow task intent persistence degraded; preserve the original user command and do not claim canonical context binding."),p({event:"intent.artifact.failed",identity:{projectRoot:g,sessionId:o},level:"error",timestamp:Date.now(),data:{stage:"user_prompt_submit",category:"intent_persistence_unavailable",error:l instanceof Error?l.message:String(l)}});}try{let l=Oe({projectRoot:g,sessionId:o,prompt:r,...d?{identity:d.memoryIdentity}:{},...d?{activation:d.activation}:{}});l&&(e.push(l.additionalContext),s=l.skipSkillRouting);}catch(l){s=!!k(r);try{let m=$e(g,{sessionId:o,prompt:r,createdAt:Date.now()});e.push(`DevFlow memory turn status=accepted; durable=true; receiptId=${m}; canonicalMemory=false; SQLite queue replay pending. Do not claim memory success without a canonical receipt.`),p({event:"memory.write.degraded",identity:{projectRoot:g,sessionId:o},level:"warn",timestamp:Date.now(),data:{stage:"turn_capture",reason:l.message,fallback:"durable_spool",receiptId:m}});}catch(m){e.push("DevFlow memory turn status=degraded; durable=false; no canonical receipt exists. Do not claim memory success."),p({event:"memory.write.degraded",identity:{projectRoot:g,sessionId:o},level:"error",timestamp:Date.now(),data:{stage:"turn_capture",reason:m.message,fallback:"none"}});}}}if(o&&i&&!s){let l=u.get(o)?.executionId,m=u.startExecution(o,i.skillName,fe(i.skillName));if(a=m.executionId,m.executionId&&m.executionId!==l){let f=new C;try{await f.sendSessionStart(o,g,m.startedAt),await f.sendExecutionStart(m.executionId,o,i.skillName,m.lastActivityAt,g,m.requiredMcpTools);}finally{f.close();}}let c=ge(i.skillName,g,r);c&&e.push(c);}if(o&&i&&a&&!s){let l=resolveProjectCapabilityProfile(g),m=resolveCapabilityRollout(g).config.retrievalSessions;Pe({prompt:r.trimStart().replace(/^\/devflow:[a-z0-9][a-z0-9-]*\b/i,"").trim()||r,projectRoot:g,sessionId:o,executionId:a,skillName:i.skillName,profileFingerprint:l.fingerprint,rolloutMode:m,retrievalVersion:"r2.v1",createdAt:Date.now()});}return {hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow",...e.length?{additionalContext:e.join(`
|
|
12
|
+
`)}:{}}}}if(process.argv[1]?.endsWith("user-prompt-submit")||process.argv[1]?.endsWith("user-prompt-submit.js")){let n=console.log.bind(console);console.log=console.error.bind(console),console.info=console.error.bind(console);let e="";process.stdin.setEncoding("utf8"),process.stdin.on("data",t=>{e+=t;}),process.stdin.on("end",async()=>{let t=await yr(e.trim()||process.argv[2]||"");n(JSON.stringify(t)),process.exit(0);}),process.stdin.on("error",()=>{n(JSON.stringify({hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow"}})),process.exit(0);}),setTimeout(()=>{n(JSON.stringify({hookSpecificOutput:{hookEventName:"UserPromptSubmit",permissionDecision:"allow"}})),process.exit(0);},3e4).unref();}export{yr as handleUserPromptSubmit};
|
|
@@ -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.18.
|
|
4
|
+
"version": "0.18.46",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "DevFlow"
|
|
7
7
|
},
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
],
|
|
9
9
|
"blockedNative": [],
|
|
10
10
|
"source": "core",
|
|
11
|
-
"sourceVersion": "0.18.
|
|
11
|
+
"sourceVersion": "0.18.46",
|
|
12
12
|
"requiresContext": false,
|
|
13
13
|
"evidenceMode": "runtime",
|
|
14
14
|
"skillPath": "skills/devflow:doctor/SKILL.md",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"WebFetch"
|
|
36
36
|
],
|
|
37
37
|
"source": "core",
|
|
38
|
-
"sourceVersion": "0.18.
|
|
38
|
+
"sourceVersion": "0.18.46",
|
|
39
39
|
"requiresContext": true,
|
|
40
40
|
"evidenceMode": "mixed",
|
|
41
41
|
"skillPath": "skills/devflow:context/SKILL.md",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"Explore"
|
|
61
61
|
],
|
|
62
62
|
"source": "core",
|
|
63
|
-
"sourceVersion": "0.18.
|
|
63
|
+
"sourceVersion": "0.18.46",
|
|
64
64
|
"requiresContext": true,
|
|
65
65
|
"evidenceMode": "mixed",
|
|
66
66
|
"skillPath": "skills/devflow:graph/SKILL.md",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"WebFetch"
|
|
80
80
|
],
|
|
81
81
|
"source": "core",
|
|
82
|
-
"sourceVersion": "0.18.
|
|
82
|
+
"sourceVersion": "0.18.46",
|
|
83
83
|
"requiresContext": true,
|
|
84
84
|
"evidenceMode": "mixed",
|
|
85
85
|
"skillPath": "skills/devflow:knowledge/SKILL.md",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"Explore"
|
|
104
104
|
],
|
|
105
105
|
"source": "core",
|
|
106
|
-
"sourceVersion": "0.18.
|
|
106
|
+
"sourceVersion": "0.18.46",
|
|
107
107
|
"requiresContext": true,
|
|
108
108
|
"evidenceMode": "mixed",
|
|
109
109
|
"skillPath": "skills/devflow:memory/SKILL.md",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
],
|
|
120
120
|
"blockedNative": [],
|
|
121
121
|
"source": "core",
|
|
122
|
-
"sourceVersion": "0.18.
|
|
122
|
+
"sourceVersion": "0.18.46",
|
|
123
123
|
"requiresContext": true,
|
|
124
124
|
"evidenceMode": "mixed",
|
|
125
125
|
"skillPath": "skills/devflow:workflow/SKILL.md",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
],
|
|
153
153
|
"blockedNative": [],
|
|
154
154
|
"source": "core",
|
|
155
|
-
"sourceVersion": "0.18.
|
|
155
|
+
"sourceVersion": "0.18.46",
|
|
156
156
|
"requiresContext": true,
|
|
157
157
|
"evidenceMode": "mixed",
|
|
158
158
|
"skillPath": "skills/devflow:delivery/SKILL.md",
|